[debian-edu-commits] debian-edu/sankore.git (#2) - upstream (branch) updated: upstream/3.1_git20120517-1-g9f23d3b

Mike Gabriel mike-gabriel-guest at alioth.debian.org
Sat Mar 9 09:57:18 UTC 2013


The branch, upstream has been updated
       via  9f23d3b62f5eac05557c2d3e6109d7c1f7915f30 (commit)
      from  0392b40e1552edd383318ac1dafb1893944878be (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 9f23d3b62f5eac05557c2d3e6109d7c1f7915f30
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Sat Mar 9 10:46:06 2013 +0100

    Imported Upstream version 2.00~git20130309

-----------------------------------------------------------------------

Summary of changes:
 Sankore-3.1/.gitignore                             |    8 +
 Sankore-3.1/{gpl.txt => COPYING}                   |    0
 Sankore-3.1/ChangeLog.html                         |  804 ++++
 Sankore-3.1/JournalDesModifications.pdf            |  Bin 0 -> 675820 bytes
 Sankore-3.1/Open-Sankore.packproj                  |    2 +-
 Sankore-3.1/ReleaseNotes.pdf                       |  Bin 0 -> 893897 bytes
 Sankore-3.1/Sankore 3.1.iss                        |   86 +-
 Sankore-3.1/Sankore-Licence.txt                    |  171 -
 Sankore-3.1/Sankore_3.1.pro                        |  148 +-
 Sankore-3.1/buildDebianPackage.sh                  |  394 ++
 Sankore-3.1/lgpl.txt                               |  165 -
 Sankore-3.1/lgplC++StandardHeaderFile.txt          |   26 +-
 Sankore-3.1/plugins/cffadaptor/UBCFFAdaptor.pro    |   13 +-
 Sankore-3.1/plugins/cffadaptor/postScript_mac.sh   |    5 +
 .../plugins/cffadaptor/src/UBCFFAdaptor.cpp        |  169 +-
 Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h  |   32 +-
 .../plugins/cffadaptor/src/UBCFFAdaptor_global.h   |   23 +
 .../plugins/cffadaptor/src/UBCFFConstants.h        |   36 +-
 Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h     |   23 +
 Sankore-3.1/plugins/plugins.pri                    |    6 +
 Sankore-3.1/release.linux.sh                       |    3 +-
 Sankore-3.1/release.macx.sh                        |   24 +-
 Sankore-3.1/release.win7.vc9.bat                   |   47 +-
 .../customizations/fonts/AlphoneticGB.ttf          |  Bin 0 -> 17932 bytes
 .../resources/customizations/fonts/AndBasR.ttf     |  Bin 0 -> 250908 bytes
 .../resources/customizations/fonts/Andika-R.ttf    |  Bin 1466756 -> 0 bytes
 .../customizations/fonts/Cursive standard Bold.ttf |  Bin 0 -> 92640 bytes
 .../customizations/fonts/Cursive standard.ttf      |  Bin 0 -> 94312 bytes
 .../resources/customizations/fonts/GinSSB60.ttf    |  Bin 0 -> 52108 bytes
 .../resources/customizations/fonts/SCRIPTCO.TTF    |  Bin 0 -> 49592 bytes
 Sankore-3.1/resources/customizations/fonts/ec.TTF  |  Bin 46376 -> 0 bytes
 Sankore-3.1/resources/customizations/fonts/ec.ttf  |  Bin 0 -> 50224 bytes
 .../resources/customizations/fonts/ec_co_pt.TTF    |  Bin 72800 -> 0 bytes
 .../resources/customizations/fonts/ec_co_pt.ttf    |  Bin 0 -> 77352 bytes
 .../resources/customizations/fonts/ec_cour.TTF     |  Bin 46664 -> 0 bytes
 .../resources/customizations/fonts/ec_cour.ttf     |  Bin 0 -> 51076 bytes
 .../resources/customizations/fonts/ec_cp.TTF       |  Bin 55116 -> 0 bytes
 .../resources/customizations/fonts/ec_cp.ttf       |  Bin 0 -> 59044 bytes
 .../resources/customizations/fonts/ec_cp_pt.ttf    |  Bin 0 -> 83000 bytes
 Sankore-3.1/resources/customizations/fonts/ecl.ttf |  Bin 0 -> 70056 bytes
 .../resources/customizations/fonts/ecl_cour.ttf    |  Bin 0 -> 71020 bytes
 .../resources/customizations/fonts/eclcopt.ttf     |  Bin 0 -> 93388 bytes
 .../teacherGuide/indexingParameters.xml            |    7 +
 .../etc/SankoreEditor/editor_en/files/calepin.png  |  Bin 0 -> 11462 bytes
 .../editor_en/files/connect_screen.png             |  Bin 15824 -> 0 bytes
 .../editor_en/files/login_paraschool.png           |  Bin 50031 -> 0 bytes
 .../etc/SankoreEditor/editor_en/files/logo.png     |  Bin 0 -> 4349 bytes
 .../editor_en/files/logoplanetesankore.png         |  Bin 0 -> 14509 bytes
 .../etc/SankoreEditor/editor_en/files/mappe.png    |  Bin 0 -> 10972 bytes
 .../etc/SankoreEditor/editor_en/files/outils.png   |  Bin 0 -> 10347 bytes
 .../etc/SankoreEditor/editor_en/index.html         |  150 +-
 .../themes/caribou/colourtag-theme-default.css     |   99 -
 .../themes/caribou/css/banner/curve_solid.css      |    3 -
 .../themes/caribou/css/banner/stripes_glow.css     |    3 -
 .../themes/caribou/css/banner/stripes_solid.css    |    3 -
 .../rw_common/themes/caribou/css/banner/swirls.css |    3 -
 .../themes/caribou/css/icons/alternative.css       |   70 -
 .../rw_common/themes/caribou/css/icons/black.css   |   25 -
 .../rw_common/themes/caribou/css/icons/blue.css    |   25 -
 .../rw_common/themes/caribou/css/icons/brown.css   |   25 -
 .../rw_common/themes/caribou/css/icons/green.css   |   25 -
 .../rw_common/themes/caribou/css/icons/pink.css    |   26 -
 .../rw_common/themes/caribou/css/icons/red.css     |   32 -
 .../editor_en/rw_common/themes/caribou/css/ie6.css |    4 -
 .../themes/caribou/css/logo_position/center.css    |    3 -
 .../themes/caribou/css/logo_position/left.css      |    4 -
 .../themes/caribou/css/logo_position/right.css     |    4 -
 .../themes/caribou/css/sidebar/sidebar_left.css    |   15 -
 .../themes/caribou/css/sidebar/sidebar_none.css    |    8 -
 .../themes/caribou/css/sidebar/sidebar_right.css   |   15 -
 .../rw_common/themes/caribou/csshover.htc          |  116 -
 .../rw_common/themes/caribou/handheld.css          |  545 ---
 .../themes/caribou/images/blog_bottom_bar.png      |  Bin 330 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_clock.png |  Bin 546 -> 0 bytes
 .../themes/caribou/images/blog_comments.png        |  Bin 479 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_file.png  |  Bin 486 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_home.png  |  Bin 452 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_icon.png  |  Bin 444 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_rss.png   |  Bin 538 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_tag.png   |  Bin 509 -> 0 bytes
 .../themes/caribou/images/blog_trackback.png       |  Bin 464 -> 0 bytes
 .../themes/caribou/images/button_over.png          |  Bin 945 -> 0 bytes
 .../themes/caribou/images/container_top_grad.png   |  Bin 340 -> 0 bytes
 .../themes/caribou/images/content_sep.bak.png      |  Bin 437 -> 0 bytes
 .../themes/caribou/images/content_sep.png          |  Bin 813 -> 0 bytes
 .../themes/caribou/images/content_top.png          |  Bin 40820 -> 0 bytes
 .../themes/caribou/images/download_icon.png        |  Bin 451 -> 0 bytes
 .../rw_common/themes/caribou/images/feed.png       |  Bin 656 -> 0 bytes
 .../rw_common/themes/caribou/images/file_black.png |  Bin 448 -> 0 bytes
 .../rw_common/themes/caribou/images/file_blue.png  |  Bin 447 -> 0 bytes
 .../rw_common/themes/caribou/images/file_brown.png |  Bin 442 -> 0 bytes
 .../rw_common/themes/caribou/images/file_green.png |  Bin 453 -> 0 bytes
 .../rw_common/themes/caribou/images/file_pink.png  |  Bin 434 -> 0 bytes
 .../rw_common/themes/caribou/images/file_red.png   |  Bin 442 -> 0 bytes
 .../rw_common/themes/caribou/images/header_bg.png  |  Bin 10458 -> 0 bytes
 .../themes/caribou/images/header_curve_solid.png   |  Bin 1976 -> 0 bytes
 .../themes/caribou/images/header_stripes_glow.png  |  Bin 3296 -> 0 bytes
 .../themes/caribou/images/header_stripes_solid.png |  Bin 2786 -> 0 bytes
 .../themes/caribou/images/header_swirls.png        |  Bin 10220 -> 0 bytes
 .../themes/caribou/images/photo_shadow_bottom.png  |  Bin 137 -> 0 bytes
 .../themes/caribou/images/photo_shadow_top.png     |  Bin 138 -> 0 bytes
 .../themes/caribou/images/photo_thumbnail.png      |  Bin 656 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_black.png  |  Bin 513 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_blue.png   |  Bin 511 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_brown.png  |  Bin 524 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_green.png  |  Bin 506 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_pink.png   |  Bin 516 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_red.png    |  Bin 518 -> 0 bytes
 .../rw_common/themes/caribou/javascript.js         |  443 --
 .../rw_common/themes/caribou/png/blank.gif         |  Bin 49 -> 0 bytes
 .../rw_common/themes/caribou/png/pngbehavior.htc   |   86 -
 .../editor_en/rw_common/themes/caribou/print.css   |  631 ---
 .../editor_en/rw_common/themes/caribou/styles.css  | 1167 -----
 .../etc/SankoreEditor/editor_fr/files/calepin.png  |  Bin 0 -> 11462 bytes
 .../editor_fr/files/connect_screen.png             |  Bin 15824 -> 0 bytes
 .../editor_fr/files/login_paraschool.png           |  Bin 50031 -> 0 bytes
 .../etc/SankoreEditor/editor_fr/files/logo.png     |  Bin 0 -> 4349 bytes
 .../editor_fr/files/logoplanetesankore.png         |  Bin 0 -> 14509 bytes
 .../etc/SankoreEditor/editor_fr/files/mappe.png    |  Bin 0 -> 10972 bytes
 .../etc/SankoreEditor/editor_fr/files/outils.png   |  Bin 0 -> 10347 bytes
 .../etc/SankoreEditor/editor_fr/index.html         |  149 +-
 .../themes/caribou/colourtag-theme-default.css     |   99 -
 .../themes/caribou/css/banner/curve_solid.css      |    3 -
 .../themes/caribou/css/banner/stripes_glow.css     |    3 -
 .../themes/caribou/css/banner/stripes_solid.css    |    3 -
 .../rw_common/themes/caribou/css/banner/swirls.css |    3 -
 .../themes/caribou/css/icons/alternative.css       |   70 -
 .../rw_common/themes/caribou/css/icons/black.css   |   25 -
 .../rw_common/themes/caribou/css/icons/blue.css    |   25 -
 .../rw_common/themes/caribou/css/icons/brown.css   |   25 -
 .../rw_common/themes/caribou/css/icons/green.css   |   25 -
 .../rw_common/themes/caribou/css/icons/pink.css    |   26 -
 .../rw_common/themes/caribou/css/icons/red.css     |   32 -
 .../editor_fr/rw_common/themes/caribou/css/ie6.css |    4 -
 .../themes/caribou/css/logo_position/center.css    |    3 -
 .../themes/caribou/css/logo_position/left.css      |    4 -
 .../themes/caribou/css/logo_position/right.css     |    4 -
 .../themes/caribou/css/sidebar/sidebar_left.css    |   15 -
 .../themes/caribou/css/sidebar/sidebar_none.css    |    8 -
 .../themes/caribou/css/sidebar/sidebar_right.css   |   15 -
 .../rw_common/themes/caribou/csshover.htc          |  116 -
 .../rw_common/themes/caribou/handheld.css          |  545 ---
 .../themes/caribou/images/blog_bottom_bar.png      |  Bin 330 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_clock.png |  Bin 546 -> 0 bytes
 .../themes/caribou/images/blog_comments.png        |  Bin 479 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_file.png  |  Bin 486 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_home.png  |  Bin 452 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_icon.png  |  Bin 444 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_rss.png   |  Bin 538 -> 0 bytes
 .../rw_common/themes/caribou/images/blog_tag.png   |  Bin 509 -> 0 bytes
 .../themes/caribou/images/blog_trackback.png       |  Bin 464 -> 0 bytes
 .../themes/caribou/images/button_over.png          |  Bin 945 -> 0 bytes
 .../themes/caribou/images/container_top_grad.png   |  Bin 340 -> 0 bytes
 .../themes/caribou/images/content_sep.bak.png      |  Bin 437 -> 0 bytes
 .../themes/caribou/images/content_sep.png          |  Bin 813 -> 0 bytes
 .../themes/caribou/images/content_top.png          |  Bin 40820 -> 0 bytes
 .../themes/caribou/images/download_icon.png        |  Bin 451 -> 0 bytes
 .../rw_common/themes/caribou/images/feed.png       |  Bin 656 -> 0 bytes
 .../rw_common/themes/caribou/images/file_black.png |  Bin 448 -> 0 bytes
 .../rw_common/themes/caribou/images/file_blue.png  |  Bin 447 -> 0 bytes
 .../rw_common/themes/caribou/images/file_brown.png |  Bin 442 -> 0 bytes
 .../rw_common/themes/caribou/images/file_green.png |  Bin 453 -> 0 bytes
 .../rw_common/themes/caribou/images/file_pink.png  |  Bin 434 -> 0 bytes
 .../rw_common/themes/caribou/images/file_red.png   |  Bin 442 -> 0 bytes
 .../rw_common/themes/caribou/images/header_bg.png  |  Bin 10458 -> 0 bytes
 .../themes/caribou/images/header_curve_solid.png   |  Bin 1976 -> 0 bytes
 .../themes/caribou/images/header_stripes_glow.png  |  Bin 3296 -> 0 bytes
 .../themes/caribou/images/header_stripes_solid.png |  Bin 2786 -> 0 bytes
 .../themes/caribou/images/header_swirls.png        |  Bin 10220 -> 0 bytes
 .../themes/caribou/images/photo_shadow_bottom.png  |  Bin 137 -> 0 bytes
 .../themes/caribou/images/photo_shadow_top.png     |  Bin 138 -> 0 bytes
 .../themes/caribou/images/photo_thumbnail.png      |  Bin 656 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_black.png  |  Bin 513 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_blue.png   |  Bin 511 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_brown.png  |  Bin 524 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_green.png  |  Bin 506 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_pink.png   |  Bin 516 -> 0 bytes
 .../rw_common/themes/caribou/images/tag_red.png    |  Bin 518 -> 0 bytes
 .../rw_common/themes/caribou/javascript.js         |  443 --
 .../rw_common/themes/caribou/png/blank.gif         |  Bin 49 -> 0 bytes
 .../rw_common/themes/caribou/png/pngbehavior.htc   |   86 -
 .../editor_fr/rw_common/themes/caribou/print.css   |  631 ---
 .../editor_fr/rw_common/themes/caribou/styles.css  | 1167 -----
 .../resources/etc/Tutorial/tutorial_en/index.html  |  142 +-
 .../resources/etc/Tutorial/tutorial_fr/index.html  |  139 +-
 Sankore-3.1/resources/etc/Uniboard.css             |   28 +
 .../resources/etc/freezedWidgetWrapper.html        |   16 +-
 Sankore-3.1/resources/etc/img/loading.gif          |  Bin 0 -> 2164 bytes
 Sankore-3.1/resources/forms/mainWindow.ui          |   39 +-
 Sankore-3.1/resources/forms/preferences.ui         | 1849 +++++++--
 .../resources/forms/youTubePublishingDialog.ui     |   14 +-
 Sankore-3.1/resources/i18n/sankore_ar.ts           | 1398 ++++---
 Sankore-3.1/resources/i18n/sankore_bg.ts           | 3868 ++++++++++++++++
 Sankore-3.1/resources/i18n/sankore_ca.ts           | 3966 ++++++++++++++++
 Sankore-3.1/resources/i18n/sankore_cs.ts           | 3379 ++++++++++++++
 Sankore-3.1/resources/i18n/sankore_da.ts           | 1837 ++++++---
 Sankore-3.1/resources/i18n/sankore_de.ts           | 1327 ++++---
 Sankore-3.1/resources/i18n/sankore_el.ts           | 3671 +++++++++++++++
 Sankore-3.1/resources/i18n/sankore_en.ts           | 1103 +++--
 Sankore-3.1/resources/i18n/sankore_en_UK.ts        | 1103 +++--
 Sankore-3.1/resources/i18n/sankore_es.ts           | 1395 ++++---
 Sankore-3.1/resources/i18n/sankore_fr.ts           | 1766 +++++---
 Sankore-3.1/resources/i18n/sankore_fr_CH.ts        | 1766 +++++---
 Sankore-3.1/resources/i18n/sankore_it.ts           | 1490 ++++---
 Sankore-3.1/resources/i18n/sankore_iw.ts           | 1310 ++++---
 Sankore-3.1/resources/i18n/sankore_ja.ts           | 1224 ++++--
 Sankore-3.1/resources/i18n/sankore_ko.ts           | 1291 ++++--
 Sankore-3.1/resources/i18n/sankore_mg.ts           | 3964 ++++++++++++++++
 Sankore-3.1/resources/i18n/sankore_nb.ts           | 1337 ++++---
 Sankore-3.1/resources/i18n/sankore_nl.ts           | 1443 ++++---
 Sankore-3.1/resources/i18n/sankore_pl.ts           | 1338 ++++---
 Sankore-3.1/resources/i18n/sankore_pt.ts           | 2469 ++++++----
 Sankore-3.1/resources/i18n/sankore_rm.ts           | 3044 -------------
 Sankore-3.1/resources/i18n/sankore_ro.ts           | 1336 ++++---
 Sankore-3.1/resources/i18n/sankore_ru.ts           | 1315 ++++---
 Sankore-3.1/resources/i18n/sankore_sk.ts           | 1845 ++++++---
 Sankore-3.1/resources/i18n/sankore_sv.ts           | 1318 ++++---
 Sankore-3.1/resources/i18n/sankore_tr.ts           | 3966 ++++++++++++++++
 Sankore-3.1/resources/i18n/sankore_zh.ts           | 1363 ++++---
 Sankore-3.1/resources/i18n/sankore_zh_CN.ts        | 3378 ++++++++++++++
 Sankore-3.1/resources/i18n/sankore_zh_TW.ts        | 3712 +++++++++++++++
 Sankore-3.1/resources/images/cursors/play.png      |  Bin 0 -> 3202 bytes
 Sankore-3.1/resources/images/duplicateDisabled.svg |   91 +
 .../images/erasePalette/eraseBackground.svg        |   58 +
 .../{toolbar/reload.png => libpalette/loading.png} |  Bin 3093 -> 3093 bytes
 Sankore-3.1/resources/images/pencil.svg            |   53 -
 .../resources/images/stylusPalette/handPlay.png    |  Bin 0 -> 3006 bytes
 .../resources/images/stylusPalette/handPlayOn.png  |  Bin 0 -> 3356 bytes
 .../resources/images/teacherGuide/audio.png        |  Bin 3299 -> 0 bytes
 .../resources/images/teacherGuide/audio_24x24.svg  |   91 +
 .../resources/images/teacherGuide/flash_24x24.svg  |   33 +
 .../resources/images/teacherGuide/image.png        |  Bin 3349 -> 0 bytes
 .../resources/images/teacherGuide/image_24x24.svg  |   81 +
 Sankore-3.1/resources/images/teacherGuide/link.png |  Bin 3587 -> 0 bytes
 .../resources/images/teacherGuide/link_24x24.svg   |  168 +
 .../resources/images/teacherGuide/movie.png        |  Bin 3270 -> 0 bytes
 .../resources/images/teacherGuide/movie_24x24.svg  |   40 +
 .../resources/images/teacherGuide/pencil.svg       |   61 +
 Sankore-3.1/resources/images/teacherGuide/w3c.png  |  Bin 3325 -> 0 bytes
 .../resources/images/teacherGuide/w3c_24x24.svg    |  112 +
 .../{protractorTool.png => aristoTool.png}         |  Bin 10832 -> 10832 bytes
 Sankore-3.1/resources/images/toolbar/group.png     |  Bin 0 -> 1215 bytes
 Sankore-3.1/resources/images/toolbar/ungroup.png   |  Bin 0 -> 1496 bytes
 Sankore-3.1/resources/images/toque.svg             |  131 +
 .../images/virtual.keyboard/29/capslock.png        |  Bin 245 -> 227 bytes
 .../29/{capslock.png => shift.png}                 |  Bin 245 -> 245 bytes
 .../images/virtual.keyboard/41/capslock.png        |  Bin 261 -> 233 bytes
 .../41/{capslock.png => shift.png}                 |  Bin 261 -> 261 bytes
 Sankore-3.1/resources/images/z_layer_down.svg      |   17 +
 Sankore-3.1/resources/images/z_layer_up.svg        |   17 +
 .../library/animations/Biologie/coeur.swf          |  Bin 0 -> 72295 bytes
 .../library/animations/Biologie/os et muscles.swf  |  Bin 0 -> 144240 bytes
 .../animations/Biologie/systeme circulatoire.swf   |  Bin 0 -> 34305 bytes
 .../animations/Biologie/systeme nerveux.swf        |  Bin 0 -> 64763 bytes
 .../animations/Biologie/systeme sanguin.swf        |  Bin 0 -> 49760 bytes
 .../library/animations/Biologie/systemes.swf       |  Bin 0 -> 105600 bytes
 .../library/animations/Jeux/chat-noir.swf          |  Bin 0 -> 11274 bytes
 .../resources/library/animations/Jeux/echec IA.swf |  Bin 0 -> 80723 bytes
 .../library/animations/Jeux/echec simple.swf       |  Bin 0 -> 20912 bytes
 .../library/animations/Jeux/line-rider.swf         |  Bin 0 -> 84505 bytes
 .../resources/library/animations/Jeux/reversi.swf  |  Bin 0 -> 29694 bytes
 .../library/animations/Maths/boulier_sesamath.swf  |  Bin 0 -> 25744 bytes
 .../animations/Maths/rapporteur-interactif.swf     |  Bin 0 -> 33465 bytes
 .../animations/Sciences/horloge-interactive.swf    |  Bin 0 -> 10418 bytes
 .../animations/Sciences/thermometre-interactif.swf |  Bin 0 -> 6245 bytes
 .../applications/Calculatrice.wgt/config.xml       |    2 +-
 .../applications/Calculatrice.wgt/js/ubw-main.js   |   68 +-
 .../Cellule.wgt/js/textes_descriptifs.js           |   76 +-
 .../applications/Edit Html.wgt/languages.js        |   29 -
 .../{Edit Html.wgt => Editeur HTML.wgt}/config.xml |    0
 .../{Edit Html.wgt => Editeur HTML.wgt}/icon.png   |  Bin 6432 -> 6432 bytes
 .../images/bts.png                                 |  Bin 2928 -> 2928 bytes
 .../images/style.css                               |    0
 .../{Edit Html.wgt => Editeur HTML.wgt}/index.html |    0
 .../jquery.pack.js                                 |    0
 .../applications/Editeur HTML.wgt/languages.js     |   29 +
 .../markitup/jquery.markitup.js                    |    0
 .../markitup/jquery.markitup.pack.js               |    0
 .../markitup/readme.txt                            |    0
 .../markitup/sets/default/images/bold.png          |  Bin 304 -> 304 bytes
 .../markitup/sets/default/images/clean.png         |  Bin 667 -> 667 bytes
 .../markitup/sets/default/images/image.png         |  Bin 516 -> 516 bytes
 .../markitup/sets/default/images/italic.png        |  Bin 223 -> 223 bytes
 .../markitup/sets/default/images/link.png          |  Bin 343 -> 343 bytes
 .../markitup/sets/default/images/picture.png       |  Bin 606 -> 606 bytes
 .../markitup/sets/default/images/preview.png       |  Bin 537 -> 537 bytes
 .../markitup/sets/default/images/stroke.png        |  Bin 269 -> 269 bytes
 .../markitup/sets/default/set.js                   |    0
 .../markitup/sets/default/style.css                |    0
 .../markitup/sets/html/images/bold.png             |  Bin 304 -> 304 bytes
 .../markitup/sets/html/images/clean.png            |  Bin 3118 -> 3118 bytes
 .../markitup/sets/html/images/h1.png               |  Bin 276 -> 276 bytes
 .../markitup/sets/html/images/h2.png               |  Bin 304 -> 304 bytes
 .../markitup/sets/html/images/h3.png               |  Bin 306 -> 306 bytes
 .../markitup/sets/html/images/h4.png               |  Bin 293 -> 293 bytes
 .../markitup/sets/html/images/h5.png               |  Bin 304 -> 304 bytes
 .../markitup/sets/html/images/h6.png               |  Bin 310 -> 310 bytes
 .../markitup/sets/html/images/image.png            |  Bin 516 -> 516 bytes
 .../markitup/sets/html/images/italic.png           |  Bin 223 -> 223 bytes
 .../markitup/sets/html/images/link.png             |  Bin 343 -> 343 bytes
 .../markitup/sets/html/images/list-bullet.png      |  Bin 344 -> 344 bytes
 .../markitup/sets/html/images/list-item.png        |  Bin 248 -> 248 bytes
 .../markitup/sets/html/images/list-numeric.png     |  Bin 357 -> 357 bytes
 .../markitup/sets/html/images/paragraph.png        |  Bin 361 -> 361 bytes
 .../markitup/sets/html/images/picture.png          |  Bin 606 -> 606 bytes
 .../markitup/sets/html/images/preview.png          |  Bin 3936 -> 3936 bytes
 .../markitup/sets/html/images/stroke.png           |  Bin 269 -> 269 bytes
 .../markitup/sets/html/readme.txt                  |    0
 .../markitup/sets/html/set.js                      |    0
 .../markitup/sets/html/style.css                   |    0
 .../skins/macosx/images/bg-container-white.png     |  Bin 394 -> 394 bytes
 .../markitup/skins/macosx/images/bg-container.png  |  Bin 397 -> 397 bytes
 .../skins/macosx/images/bg-footer-white.png        |  Bin 1209 -> 1209 bytes
 .../markitup/skins/macosx/images/bg-footer.png     |  Bin 1476 -> 1476 bytes
 .../skins/macosx/images/bg-header-white.png        |  Bin 4120 -> 4120 bytes
 .../markitup/skins/macosx/images/bg-header.png     |  Bin 3572 -> 3572 bytes
 .../markitup/skins/macosx/images/handle.png        |  Bin 487 -> 487 bytes
 .../markitup/skins/macosx/images/menu.png          |  Bin 241 -> 241 bytes
 .../markitup/skins/macosx/images/spacer.gif        |  Bin 43 -> 43 bytes
 .../markitup/skins/macosx/images/submenu.png       |  Bin 240 -> 240 bytes
 .../markitup/skins/macosx/readme.txt               |    0
 .../markitup/skins/macosx/style.css                |    0
 .../skins/markitup/images/bg-container.png         |  Bin 28455 -> 28455 bytes
 .../skins/markitup/images/bg-editor-bbcode.png     |  Bin 1642 -> 1642 bytes
 .../skins/markitup/images/bg-editor-dotclear.png   |  Bin 1682 -> 1682 bytes
 .../skins/markitup/images/bg-editor-html.png       |  Bin 1534 -> 1534 bytes
 .../skins/markitup/images/bg-editor-json.png       |  Bin 1529 -> 1529 bytes
 .../skins/markitup/images/bg-editor-markdown.png   |  Bin 1783 -> 1783 bytes
 .../skins/markitup/images/bg-editor-textile.png    |  Bin 1659 -> 1659 bytes
 .../skins/markitup/images/bg-editor-wiki.png       |  Bin 1488 -> 1488 bytes
 .../skins/markitup/images/bg-editor-xml.png        |  Bin 1495 -> 1495 bytes
 .../markitup/skins/markitup/images/bg-editor.png   |  Bin 1745 -> 1745 bytes
 .../markitup/skins/markitup/images/handle.png      |  Bin 258 -> 258 bytes
 .../markitup/skins/markitup/images/menu.png        |  Bin 27151 -> 27151 bytes
 .../markitup/skins/markitup/images/submenu.png     |  Bin 240 -> 240 bytes
 .../markitup/skins/markitup/style.css              |    0
 .../markitup/skins/simple/images/handle.png        |  Bin 258 -> 258 bytes
 .../markitup/skins/simple/images/menu.png          |  Bin 27151 -> 27151 bytes
 .../markitup/skins/simple/images/submenu.png       |  Bin 240 -> 240 bytes
 .../markitup/templates/preview.css                 |    0
 .../markitup/templates/preview.html                |    0
 .../library/applications/GeoInfo.wgt/GeoInfo.html  |    4 +-
 .../library/applications/GeoInfo.wgt/js/GeoInfo.js |    6 +-
 .../applications/GeoInfo.wgt/js/languages.js       |  104 +-
 .../applications/GeoInfo.wgt/js/soapclient.js      |    2 +
 .../applications/Grapheur 3D.wgt/Grapheur.xhtml    | 1590 -------
 .../applications/Grapheur 3D.wgt/Images/.directory |    4 -
 .../Grapheur 3D.wgt/JavaScript/languages.js        |  506 ---
 .../applications/Grapheur.wgt/Grapheur.xhtml       | 1586 +++++++
 .../Guide_Utilisateur.html                         |    0
 .../Images/GraphMe.png                             |  Bin 78404 -> 78404 bytes
 .../Images/Guide_AjouterWidget.png                 |  Bin 90863 -> 90863 bytes
 .../Images/Guide_Deplacement.png                   |  Bin 84401 -> 84401 bytes
 .../Images/Guide_Navigateur.png                    |  Bin 74214 -> 74214 bytes
 .../Images/Guide_Options.png                       |  Bin 125731 -> 125731 bytes
 .../Images/Guide_Plus.png                          |  Bin 73469 -> 73469 bytes
 .../Images/Guide_Presentation.png                  |  Bin 73362 -> 73362 bytes
 .../Images/Guide_Uniboard.png                      |  Bin 28095 -> 28095 bytes
 .../Images/fond1.png                               |  Bin 24297 -> 24297 bytes
 .../Images/fond2.png                               |  Bin 34999 -> 34999 bytes
 .../Images/fond3.png                               |  Bin 29157 -> 29157 bytes
 .../Images/fond4.png                               |  Bin 141153 -> 141153 bytes
 .../Images/fond5.png                               |  Bin 42278 -> 42278 bytes
 .../Images/gauche1.png                             |  Bin 8196 -> 8196 bytes
 .../Images/gauche2.png                             |  Bin 8763 -> 8763 bytes
 .../Images/gauche3.png                             |  Bin 9983 -> 9983 bytes
 .../Images/onglet1.png                             |  Bin 1117 -> 1117 bytes
 .../Images/onglet2.png                             |  Bin 1308 -> 1308 bytes
 .../JavaScript/Affichage3D.js                      |    0
 .../JavaScript/AffichageStandard.js                |    0
 .../JavaScript/AffichageUniboard.js                |    0
 .../JavaScript/AffichageXPM.js                     |    0
 .../JavaScript/ColorPicker.js                      |    0
 .../JavaScript/Etude.js                            |    0
 .../JavaScript/Interface.js                        |    0
 .../JavaScript/Outils.js                           |    0
 .../JavaScript/Sauvegardes.js                      |    0
 .../JavaScript/jquery-1.3.2.min.js                 |    0
 .../JavaScript/jquery.disable.text.select.js       |    0
 .../Grapheur.wgt/JavaScript/languages.js           |  506 +++
 .../Style/Guide_Utilisateur.css                    |    0
 .../Style/default.css                              |    0
 .../{Grapheur 3D.wgt => Grapheur.wgt}/config.xml   |    0
 .../{Grapheur 3D.wgt => Grapheur.wgt}/icon.png     |  Bin 4933 -> 4933 bytes
 .../{Grapheur 3D.wgt => Grapheur.wgt}/version.html |    0
 .../applications/Navigateur Web.wgt/index.html     |   13 +-
 .../Navigateur Web.wgt/locales/fr/howto.html       |    2 +-
 .../Navigateur Web.wgt/scripts/languages.js        |    2 +-
 .../library/applications/Notes.wgt/config.xml      |    2 +-
 .../applications/Notes.wgt/css/ubwidget.css        |  328 +-
 .../applications/Notes.wgt/js/jquery.ubwidget.js   |    2 -
 .../library/applications/Notes.wgt/js/ubw-main.js  |   62 +-
 .../library/applications/Notes.wgt/ubw-main.js     |  211 -
 .../applications/Nuancier.wgt/css/layout.css       |    2 +
 .../library/applications/Nuancier.wgt/index.html   |    2 +-
 .../applications/Nuancier.wgt/js/colorpicker.js    |   84 +-
 .../Nuancier.wgt/js/jquery-1.8.1.min.js            |    2 +
 .../OpenStreetMap.wgt/api/OpenLayers.js            | 2885 ++++++++++++
 .../OpenStreetMap.wgt/api/img/blank.gif            |  Bin 0 -> 42 bytes
 .../OpenStreetMap.wgt/api/img/east-mini.png        |  Bin 0 -> 342 bytes
 .../OpenStreetMap.wgt/api/img/images.png           |  Bin 0 -> 360 bytes
 .../api/img/layer-switcher-maximize.png            |  Bin 0 -> 405 bytes
 .../api/img/layer-switcher-minimize.png            |  Bin 0 -> 220 bytes
 .../OpenStreetMap.wgt/api/img/north-mini.png       |  Bin 0 -> 378 bytes
 .../OpenStreetMap.wgt/api/img/south-mini.png       |  Bin 0 -> 373 bytes
 .../OpenStreetMap.wgt/api/img/west-mini.png        |  Bin 0 -> 360 bytes
 .../OpenStreetMap.wgt/api/img/zoom-minus-mini.png  |  Bin 0 -> 291 bytes
 .../OpenStreetMap.wgt/api/img/zoom-plus-mini.png   |  Bin 0 -> 386 bytes
 .../OpenStreetMap.wgt/api/img/zoom-world-mini.png  |  Bin 0 -> 882 bytes
 .../OpenStreetMap.wgt/api/theme/default/style.css  |  433 ++
 .../applications/OpenStreetMap.wgt/config.xml      |   14 +
 .../applications/OpenStreetMap.wgt/icon.svg        |  730 +++
 .../applications/OpenStreetMap.wgt/index.html      |  246 +
 .../OpenStreetMap.wgt/js/jquery-1.7.2.min.js       |    4 +
 .../library/applications/Sel video.wgt/config.xml  |    0
 .../applications/Sel video.wgt/css/howto.css       |    0
 .../applications/Sel video.wgt/css/main.css        |  174 +
 .../library/applications/Sel video.wgt/icon.png    |  Bin 4569 -> 4569 bytes
 .../applications/Sel video.wgt/imgs/arrow.png      |  Bin 727 -> 727 bytes
 .../applications/Sel video.wgt/imgs/bts.png        |  Bin 580 -> 580 bytes
 .../applications/Sel video.wgt/imgs/btson.png      |  Bin 442 -> 442 bytes
 .../applications/Sel video.wgt/imgs/button.png     |  Bin 3234 -> 3234 bytes
 .../Sel video.wgt/imgs/button_anim.gif             |  Bin 2813 -> 2813 bytes
 .../Sel video.wgt/imgs/button_over.png             |  Bin 1279 -> 1279 bytes
 .../Sel video.wgt/imgs/button_show.png             |  Bin 4097 -> 4097 bytes
 .../Sel video.wgt/imgs/capture_youtube.jpg         |  Bin 9042 -> 9042 bytes
 .../applications/Sel video.wgt/imgs/center.png     |  Bin 144 -> 144 bytes
 .../applications/Sel video.wgt/imgs/howto_back.png |  Bin 191 -> 191 bytes
 .../applications/Sel video.wgt/imgs/info_ico.png   |  Bin 2148 -> 2148 bytes
 .../Sel video.wgt/imgs/inputfield_back.png         |  Bin 793 -> 793 bytes
 .../applications/Sel video.wgt/imgs/keys_copy.jpg  |  Bin 1814 -> 1814 bytes
 .../applications/Sel video.wgt/imgs/keys_paste.jpg |  Bin 1851 -> 1851 bytes
 .../applications/Sel video.wgt/imgs/left.png       |  Bin 1049 -> 1049 bytes
 .../applications/Sel video.wgt/imgs/logos_web.jpg  |  Bin 1877 -> 1877 bytes
 .../applications/Sel video.wgt/imgs/right.png      |  Bin 1059 -> 1059 bytes
 .../library/applications/Sel video.wgt/index.html  |  228 +
 .../Sel video.wgt/locales/en/capture_widget.jpg    |  Bin 15452 -> 15452 bytes
 .../Sel video.wgt/locales/en/error.html            |    0
 .../Sel video.wgt/locales/en/howto.html            |    0
 .../Sel video.wgt/locales/fr/capture_widget.jpg    |  Bin 15452 -> 15452 bytes
 .../Sel video.wgt/locales/fr/error.html            |    0
 .../Sel video.wgt/locales/fr/howto.html            |    0
 .../Sel video.wgt/locales/ru/capture_widget.jpg    |  Bin 15452 -> 15452 bytes
 .../Sel video.wgt/locales/ru/error.html            |    0
 .../Sel video.wgt/locales/ru/howto.html            |    0
 .../Sel video.wgt/scripts/jquery-1.3.2.min.js      |    0
 .../Sel video.wgt/scripts/jquery.oembed.js         |    0
 .../Sel video.wgt/scripts/languages.js             |    0
 .../Se\314\201l vide\314\201o.wgt/css/main.css"    |  176 -
 .../Se\314\201l vide\314\201o.wgt/index.html"      |  228 -
 .../library/audios/Animaux/insectes/abeilles.mp3   |  Bin 0 -> 86098 bytes
 .../library/audios/Animaux/insectes/moustique.mp3  |  Bin 0 -> 40123 bytes
 .../audios/Animaux/mammiferes domestiques/chat.mp3 |  Bin 0 -> 19225 bytes
 .../Animaux/mammiferes domestiques/chien.mp3       |  Bin 0 -> 8358 bytes
 .../Animaux/mammiferes domestiques/cochon.mp3      |  Bin 0 -> 50572 bytes
 .../Animaux/mammiferes domestiques/mouton.mp3      |  Bin 0 -> 10030 bytes
 .../Animaux/mammiferes domestiques/vache.mp3       |  Bin 0 -> 37197 bytes
 .../Animaux/mammiferes sauvages/chimpanze.mp3      |  Bin 0 -> 45138 bytes
 .../Animaux/mammiferes sauvages/elephant.mp3       |  Bin 0 -> 26330 bytes
 .../audios/Animaux/mammiferes sauvages/leopard.mp3 |  Bin 0 -> 56005 bytes
 .../audios/Animaux/mammiferes sauvages/lion.mp3    |  Bin 0 -> 29674 bytes
 .../Animaux/mammiferes sauvages/rhinoceros.mp3     |  Bin 0 -> 45138 bytes
 .../audios/Animaux/mammiferes sauvages/singes.mp3  |  Bin 0 -> 63946 bytes
 .../library/audios/Animaux/oiseaux/cardinal.mp3    |  Bin 0 -> 30928 bytes
 .../library/audios/Animaux/oiseaux/chouette.mp3    |  Bin 0 -> 19643 bytes
 .../library/audios/Animaux/oiseaux/coq.mp3         |  Bin 0 -> 17135 bytes
 .../library/audios/Animaux/oiseaux/corneille.mp3   |  Bin 0 -> 17135 bytes
 .../library/audios/Animaux/oiseaux/poulets.mp3     |  Bin 0 -> 49736 bytes
 .../library/audios/Bruitages/eau dans verre.mp3    |  Bin 0 -> 99265 bytes
 .../resources/library/audios/Bruitages/klaxon.mp3  |  Bin 0 -> 12537 bytes
 .../library/image/Backgrounds/calendrier_2011.png  |  Bin 104735 -> 0 bytes
 Sankore-3.1/resources/library/image/Voltaire.jpg   |  Bin 3099586 -> 0 bytes
 .../resources/library/image/Voltaire.thumbnail.png |  Bin 390620 -> 0 bytes
 .../library/image/cartepolitiqueeurope.jpg         |  Bin 934364 -> 0 bytes
 .../image/cartepolitiqueeurope.thumbnail.png       |  Bin 77865 -> 0 bytes
 Sankore-3.1/resources/library/image/violon.jpg     |  Bin 1054824 -> 0 bytes
 .../resources/library/image/violon.thumbnail.png   |  Bin 152560 -> 0 bytes
 .../interactivities/Ass images.wgt/config.xml      |   16 +
 .../interactivities/Ass images.wgt/css/basic.css   |  431 ++
 .../interactivities/Ass images.wgt/icon.svg        |  226 +
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../img/add_img.png                                |  Bin 5352 -> 5352 bytes
 .../interactivities/Ass images.wgt/img/ar_down.png |  Bin 0 -> 529 bytes
 .../Ass images.wgt/img/ar_down_white.png           |  Bin 0 -> 142 bytes
 .../interactivities/Ass images.wgt/img/bg.png      |  Bin 0 -> 10043 bytes
 .../interactivities/Ass images.wgt/img/bottom.png  |  Bin 0 -> 39126 bytes
 .../Ass images.wgt/img/bottom_left.png             |  Bin 0 -> 5452 bytes
 .../Ass images.wgt/img/bottom_right.png            |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/clear_img.png                              |  Bin 2819 -> 2819 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../img/close_img.png                              |  Bin 1924 -> 1924 bytes
 .../img/drop_img.png                               |  Bin 1618 -> 1618 bytes
 .../img/false.png                                  |  Bin 2624 -> 2624 bytes
 .../img/green_point.png                            |  Bin 721 -> 721 bytes
 .../interactivities/Ass images.wgt/img/left.png    |  Bin 0 -> 26156 bytes
 .../img/numb_img.png                               |  Bin 2478 -> 2478 bytes
 .../Ass images.wgt/img/pad-bottom-left.png         |  Bin 0 -> 2622 bytes
 .../Ass images.wgt/img/pad-bottom-right.png        |  Bin 0 -> 2631 bytes
 .../Ass images.wgt/img/pad-bottom.png              |  Bin 0 -> 180 bytes
 .../Ass images.wgt/img/pad-left.png                |  Bin 0 -> 170 bytes
 .../Ass images.wgt/img/pad-right.png               |  Bin 0 -> 168 bytes
 .../Ass images.wgt/img/pad-top-left.png            |  Bin 0 -> 2635 bytes
 .../Ass images.wgt/img/pad-top-right.png           |  Bin 0 -> 2710 bytes
 .../interactivities/Ass images.wgt/img/pad-top.png |  Bin 0 -> 176 bytes
 .../Ass images.wgt/img/parameters-bg.png           |  Bin 0 -> 4256 bytes
 .../img/red_point.png                              |  Bin 740 -> 740 bytes
 .../interactivities/Ass images.wgt/img/right.png   |  Bin 0 -> 27887 bytes
 .../Ass images.wgt/img/slate-toolbar-edit.png      |  Bin 0 -> 1767 bytes
 .../Ass images.wgt/img/slate-toolbar-help.png      |  Bin 0 -> 1697 bytes
 .../Ass images.wgt/img/slate-toolbar-reload.png    |  Bin 0 -> 2289 bytes
 .../Ass images.wgt/img/toolbar-edit.png            |  Bin 0 -> 732 bytes
 .../Ass images.wgt/img/toolbar-help.png            |  Bin 0 -> 707 bytes
 .../Ass images.wgt/img/toolbar-reload.png          |  Bin 0 -> 999 bytes
 .../interactivities/Ass images.wgt/img/top.png     |  Bin 0 -> 37741 bytes
 .../Ass images.wgt/img/top_left.png                |  Bin 0 -> 5588 bytes
 .../Ass images.wgt/img/top_right.png               |  Bin 0 -> 5761 bytes
 .../img/true.png                                   |  Bin 2987 -> 2987 bytes
 .../interactivities/Ass images.wgt/index.html      |   91 +
 .../js}/jquery-1.6.2.min.js                        |    0
 .../js/jquery-ui-1.8.9.custom.min.js               |    0
 .../interactivities/Ass images.wgt/js/script.js    |  816 ++++
 .../locales/fr/img/drop_img.png                    |  Bin 1762 -> 1762 bytes
 .../Ass images.wgt/locales/fr/index.html           |   59 +
 .../Ass images.wgt/locales/fr/js/script.js         |  810 ++++
 .../locales/ru/img/drop_img.png                    |  Bin 2196 -> 2196 bytes
 .../Ass images.wgt/locales/ru/index.html           |   59 +
 .../Ass images.wgt/locales/ru/js/script.js         |  790 ++++
 .../objects/0.gif                                  |  Bin 2628 -> 2628 bytes
 .../objects/1.gif                                  |  Bin 1483 -> 1483 bytes
 .../objects/2.gif                                  |  Bin 2008 -> 2008 bytes
 .../objects/3.gif                                  |  Bin 2179 -> 2179 bytes
 .../objects/4.gif                                  |  Bin 1772 -> 1772 bytes
 .../interactivities/Ass sons.wgt/config.xml        |   16 +
 .../interactivities/Ass sons.wgt/css/basic.css     |  471 ++
 .../library/interactivities/Ass sons.wgt/icon.svg  |  226 +
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../img/add_img.png                                |  Bin 5352 -> 5352 bytes
 .../interactivities/Ass sons.wgt/img/ar_down.png   |  Bin 0 -> 529 bytes
 .../Ass sons.wgt/img/ar_down_white.png             |  Bin 0 -> 142 bytes
 .../interactivities/Ass sons.wgt/img/bg.png        |  Bin 0 -> 10043 bytes
 .../interactivities/Ass sons.wgt/img/bottom.png    |  Bin 0 -> 39126 bytes
 .../Ass sons.wgt/img/bottom_left.png               |  Bin 0 -> 5452 bytes
 .../Ass sons.wgt/img/bottom_right.png              |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../img/close_img.png                              |  Bin 1924 -> 1924 bytes
 .../img/drop_img.png                               |  Bin 1618 -> 1618 bytes
 .../img/false.png                                  |  Bin 2624 -> 2624 bytes
 .../img/green_point.png                            |  Bin 721 -> 721 bytes
 .../interactivities/Ass sons.wgt/img/left.png      |  Bin 0 -> 26156 bytes
 .../Ass sons.wgt/img/pad-bottom-left.png           |  Bin 0 -> 2622 bytes
 .../Ass sons.wgt/img/pad-bottom-right.png          |  Bin 0 -> 2631 bytes
 .../Ass sons.wgt/img/pad-bottom.png                |  Bin 0 -> 180 bytes
 .../interactivities/Ass sons.wgt/img/pad-left.png  |  Bin 0 -> 170 bytes
 .../interactivities/Ass sons.wgt/img/pad-right.png |  Bin 0 -> 168 bytes
 .../Ass sons.wgt/img/pad-top-left.png              |  Bin 0 -> 2635 bytes
 .../Ass sons.wgt/img/pad-top-right.png             |  Bin 0 -> 2710 bytes
 .../interactivities/Ass sons.wgt/img/pad-top.png   |  Bin 0 -> 176 bytes
 .../Ass sons.wgt/img/parameters-bg.png             |  Bin 0 -> 4256 bytes
 .../img/play.png                                   |  Bin 1960 -> 1960 bytes
 .../img/red_point.png                              |  Bin 740 -> 740 bytes
 .../img/replay.png                                 |  Bin 2143 -> 2143 bytes
 .../interactivities/Ass sons.wgt/img/right.png     |  Bin 0 -> 27887 bytes
 .../Ass sons.wgt/img/slate-toolbar-edit.png        |  Bin 0 -> 1767 bytes
 .../Ass sons.wgt/img/slate-toolbar-help.png        |  Bin 0 -> 1697 bytes
 .../Ass sons.wgt/img/slate-toolbar-reload.png      |  Bin 0 -> 2289 bytes
 .../img/stop.png                                   |  Bin 1856 -> 1856 bytes
 .../Ass sons.wgt/img/toolbar-edit.png              |  Bin 0 -> 732 bytes
 .../Ass sons.wgt/img/toolbar-help.png              |  Bin 0 -> 707 bytes
 .../Ass sons.wgt/img/toolbar-reload.png            |  Bin 0 -> 999 bytes
 .../interactivities/Ass sons.wgt/img/top.png       |  Bin 0 -> 37741 bytes
 .../interactivities/Ass sons.wgt/img/top_left.png  |  Bin 0 -> 5588 bytes
 .../interactivities/Ass sons.wgt/img/top_right.png |  Bin 0 -> 5761 bytes
 .../img/true.png                                   |  Bin 2987 -> 2987 bytes
 .../interactivities/Ass sons.wgt/index.html        |   88 +
 .../js/jquery-1.6.2.min.js                         |    0
 .../js/jquery-ui-1.8.9.custom.min.js               |    0
 .../interactivities/Ass sons.wgt/js/script.js      |  923 ++++
 .../locales/fr/img/drop_img.png                    |  Bin 1762 -> 1762 bytes
 .../Ass sons.wgt/locales/fr/index.html             |   59 +
 .../Ass sons.wgt/locales/fr/js/script.js           |  913 ++++
 .../locales/ru/img/drop_img.png                    |  Bin 2196 -> 2196 bytes
 .../Ass sons.wgt/locales/ru/index.html             |   59 +
 .../Ass sons.wgt/locales/ru/js/script.js           |  887 ++++
 .../objects/0.gif                                  |  Bin 2628 -> 2628 bytes
 .../objects/1.gif                                  |  Bin 1483 -> 1483 bytes
 .../objects/2.gif                                  |  Bin 2008 -> 2008 bytes
 .../objects/3.gif                                  |  Bin 2179 -> 2179 bytes
 .../objects/4.gif                                  |  Bin 1772 -> 1772 bytes
 .../objects/beep.wav                               |  Bin 28564 -> 28564 bytes
 .../library/interactivities/Balance.wgt/config.xml |   15 +
 .../Balance.wgt/css/images/balance.png             |  Bin 0 -> 770802 bytes
 .../interactivities/Balance.wgt/css/images/bg.png  |  Bin 0 -> 10043 bytes
 .../Balance.wgt/css/images/delete.png              |  Bin 0 -> 1588 bytes
 .../Balance.wgt/css/images/graduations.png         |  Bin 0 -> 2373 bytes
 .../Balance.wgt/css/images/pad-bd.png              |  Bin 0 -> 9308 bytes
 .../Balance.wgt/css/images/parameters-bg.png       |  Bin 0 -> 4256 bytes
 .../Balance.wgt/css/images/pivot.png               |  Bin 0 -> 2318 bytes
 .../Balance.wgt/css/images/scale.png               |  Bin 0 -> 17368 bytes
 .../Balance.wgt/css/images/scales.png              |  Bin 0 -> 9037 bytes
 .../Balance.wgt/css/images/slate-bd.png            |  Bin 0 -> 179255 bytes
 .../Balance.wgt/css/images/slate-toolbar-edit.png  |  Bin 0 -> 1767 bytes
 .../Balance.wgt/css/images/slate-toolbar-help.png  |  Bin 0 -> 1697 bytes
 .../css/images/slate-toolbar-reload.png            |  Bin 0 -> 2289 bytes
 .../Balance.wgt/css/images/toolbar-edit.png        |  Bin 0 -> 732 bytes
 .../Balance.wgt/css/images/toolbar-help.png        |  Bin 0 -> 707 bytes
 .../Balance.wgt/css/images/toolbar-reload.png      |  Bin 0 -> 999 bytes
 .../Balance.wgt/css/images/weight-add.png          |  Bin 0 -> 1776 bytes
 .../Balance.wgt/css/images/weight.png              |  Bin 0 -> 2615 bytes
 .../interactivities/Balance.wgt/css/main.css       |  278 ++
 .../interactivities/Balance.wgt/css/ubw-help.css   |   46 +
 .../interactivities/Balance.wgt/css/ubw-main.css   |  308 ++
 .../library/interactivities/Balance.wgt/help.html  |   58 +
 .../Balance.wgt/i18n/Messages.properties           |   13 +
 .../Balance.wgt/i18n/Messages_fr.properties        |   13 +
 .../library/interactivities/Balance.wgt/icon.png   |  Bin 0 -> 11736 bytes
 .../library/interactivities/Balance.wgt/index.html |   56 +
 .../Balance.wgt/js/help-template.js                |   18 +
 .../Balance.wgt/js/help_fr-template.js             |   24 +
 .../Balance.wgt/js/lib/jquery-1.7.1.min.js         |    4 +
 .../Balance.wgt/js/lib/jquery-css-transform.js     |  112 +
 .../js/lib/jquery-ui-1.8.17.custom.min.js          |  253 ++
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../Balance.wgt/js/lib/modernizr.js                |    4 +
 .../interactivities/Balance.wgt/js/lib/mustache.js |  536 +++
 .../interactivities/Balance.wgt/js/lib/ubw-main.js |  269 ++
 .../library/interactivities/Balance.wgt/js/main.js |  334 ++
 .../interactivities/Balance.wgt/js/templates.js    |   30 +
 .../interactivities/BlackYellow.wgt/config.xml     |   16 -
 .../interactivities/BlackYellow.wgt/css/basic.css  |  506 ---
 .../interactivities/BlackYellow.wgt/icon.png       |  Bin 1053 -> 0 bytes
 .../interactivities/BlackYellow.wgt/index.html     |   49 -
 .../BlackYellow.wgt/locales/fr/index.html          |   25 -
 .../locales/fr/scripts/blackYellow.js              |  408 --
 .../BlackYellow.wgt/locales/ru/index.html          |   25 -
 .../locales/ru/scripts/blackYellow.js              |  408 --
 .../BlackYellow.wgt/scripts/blackYellow.js         |  408 --
 .../library/interactivities/Cadran.wgt/config.xml  |   15 +
 .../interactivities/Cadran.wgt/css/images/bg.png   |  Bin 0 -> 10043 bytes
 .../Cadran.wgt/css/images/pad-bd.png               |  Bin 0 -> 9308 bytes
 .../Cadran.wgt/css/images/parameters-bg.png        |  Bin 0 -> 4256 bytes
 .../Cadran.wgt/css/images/slate-bd.png             |  Bin 0 -> 179255 bytes
 .../Cadran.wgt/css/images/slate-toolbar-edit.png   |  Bin 0 -> 1767 bytes
 .../Cadran.wgt/css/images/slate-toolbar-help.png   |  Bin 0 -> 1697 bytes
 .../Cadran.wgt/css/images/slate-toolbar-reload.png |  Bin 0 -> 2289 bytes
 .../Cadran.wgt/css/images/toolbar-edit.png         |  Bin 0 -> 732 bytes
 .../Cadran.wgt/css/images/toolbar-help.png         |  Bin 0 -> 707 bytes
 .../Cadran.wgt/css/images/toolbar-reload.png       |  Bin 0 -> 999 bytes
 .../interactivities/Cadran.wgt/css/main.css        |  206 +
 .../interactivities/Cadran.wgt/css/ubw-help.css    |   46 +
 .../interactivities/Cadran.wgt/css/ubw-main.css    |  308 ++
 .../library/interactivities/Cadran.wgt/help.html   |   58 +
 .../Cadran.wgt/i18n/Messages.properties            |   11 +
 .../Cadran.wgt/i18n/Messages_fr.properties         |   11 +
 .../library/interactivities/Cadran.wgt/icon.png    |  Bin 0 -> 11930 bytes
 .../library/interactivities/Cadran.wgt/index.html  |   75 +
 .../interactivities/Cadran.wgt/js/help-template.js |   13 +
 .../Cadran.wgt/js/help_fr-template.js              |   17 +
 .../Cadran.wgt/js/lib/jquery-1.7.1.min.js          |    4 +
 .../Cadran.wgt/js/lib/jquery-css-transform.js      |  112 +
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../interactivities/Cadran.wgt/js/lib/modernizr.js |    4 +
 .../interactivities/Cadran.wgt/js/lib/mustache.js  |  536 +++
 .../interactivities/Cadran.wgt/js/lib/ubw-main.js  |  269 ++
 .../library/interactivities/Cadran.wgt/js/main.js  |  131 +
 .../interactivities/Cadran.wgt/js/templates.js     |   27 +
 .../library/interactivities/Calcul.wgt/config.xml  |   15 +
 .../interactivities/Calcul.wgt/css/images/bg.png   |  Bin 0 -> 10043 bytes
 .../Calcul.wgt/css/images/pad-bd.png               |  Bin 0 -> 9308 bytes
 .../Calcul.wgt/css/images/parameters-bg.png        |  Bin 0 -> 4256 bytes
 .../Calcul.wgt/css/images/slate-bd.png             |  Bin 0 -> 179255 bytes
 .../Calcul.wgt/css/images/slate-toolbar-edit.png   |  Bin 0 -> 1767 bytes
 .../Calcul.wgt/css/images/slate-toolbar-help.png   |  Bin 0 -> 1697 bytes
 .../Calcul.wgt/css/images/slate-toolbar-reload.png |  Bin 0 -> 2289 bytes
 .../Calcul.wgt/css/images/submit.png               |  Bin 0 -> 541 bytes
 .../Calcul.wgt/css/images/toolbar-edit.png         |  Bin 0 -> 732 bytes
 .../Calcul.wgt/css/images/toolbar-help.png         |  Bin 0 -> 707 bytes
 .../Calcul.wgt/css/images/toolbar-reload.png       |  Bin 0 -> 999 bytes
 .../interactivities/Calcul.wgt/css/main.css        |  116 +
 .../interactivities/Calcul.wgt/css/ubw-help.css    |   46 +
 .../interactivities/Calcul.wgt/css/ubw-main.css    |  308 ++
 .../library/interactivities/Calcul.wgt/help.html   |   58 +
 .../Calcul.wgt/i18n/Messages.properties            |   16 +
 .../Calcul.wgt/i18n/Messages_fr.properties         |   16 +
 .../library/interactivities/Calcul.wgt/icon.png    |  Bin 0 -> 11611 bytes
 .../library/interactivities/Calcul.wgt/index.html  |   38 +
 .../interactivities/Calcul.wgt/js/help-template.js |   17 +
 .../Calcul.wgt/js/help_fr-template.js              |   16 +
 .../Calcul.wgt/js/lib/jquery-1.7.1.min.js          |    4 +
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../interactivities/Calcul.wgt/js/lib/modernizr.js |    4 +
 .../interactivities/Calcul.wgt/js/lib/mustache.js  |  536 +++
 .../interactivities/Calcul.wgt/js/lib/ubw-main.js  |  269 ++
 .../library/interactivities/Calcul.wgt/js/main.js  |  114 +
 .../interactivities/Calcul.wgt/js/templates.js     |   64 +
 .../interactivities/Cat images.wgt/config.xml      |   17 +
 .../interactivities/Cat images.wgt/css/basic.css   |  412 ++
 .../interactivities/Cat images.wgt/icon.svg        |  257 ++
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../interactivities/Cat images.wgt/img/bg.png      |  Bin 0 -> 10043 bytes
 .../interactivities/Cat images.wgt/img/bottom.png  |  Bin 0 -> 39126 bytes
 .../Cat images.wgt/img/bottom_left.png             |  Bin 0 -> 5452 bytes
 .../Cat images.wgt/img/bottom_right.png            |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../img/close_img.png                              |  Bin 1924 -> 1924 bytes
 .../img/green_point.png                            |  Bin 721 -> 721 bytes
 .../interactivities/Cat images.wgt/img/left.png    |  Bin 0 -> 26156 bytes
 .../img/minus.png                                  |  Bin 1536 -> 1536 bytes
 .../Cat images.wgt/img/pad-bottom-left.png         |  Bin 0 -> 2622 bytes
 .../Cat images.wgt/img/pad-bottom-right.png        |  Bin 0 -> 2631 bytes
 .../Cat images.wgt/img/pad-bottom.png              |  Bin 0 -> 180 bytes
 .../Cat images.wgt/img/pad-left.png                |  Bin 0 -> 170 bytes
 .../Cat images.wgt/img/pad-right.png               |  Bin 0 -> 168 bytes
 .../Cat images.wgt/img/pad-top-left.png            |  Bin 0 -> 2635 bytes
 .../Cat images.wgt/img/pad-top-right.png           |  Bin 0 -> 2710 bytes
 .../interactivities/Cat images.wgt/img/pad-top.png |  Bin 0 -> 176 bytes
 .../Cat images.wgt/img/parameters-bg.png           |  Bin 0 -> 4256 bytes
 .../img/plus.png                                   |  Bin 1563 -> 1563 bytes
 .../img/red_point.png                              |  Bin 740 -> 740 bytes
 .../interactivities/Cat images.wgt/img/right.png   |  Bin 0 -> 27887 bytes
 .../Cat images.wgt/img/slate-toolbar-edit.png      |  Bin 0 -> 1767 bytes
 .../Cat images.wgt/img/slate-toolbar-help.png      |  Bin 0 -> 1697 bytes
 .../Cat images.wgt/img/slate-toolbar-reload.png    |  Bin 0 -> 2289 bytes
 .../Cat images.wgt/img/toolbar-edit.png            |  Bin 0 -> 732 bytes
 .../Cat images.wgt/img/toolbar-help.png            |  Bin 0 -> 707 bytes
 .../Cat images.wgt/img/toolbar-reload.png          |  Bin 0 -> 999 bytes
 .../interactivities/Cat images.wgt/img/top.png     |  Bin 0 -> 37741 bytes
 .../Cat images.wgt/img/top_left.png                |  Bin 0 -> 5588 bytes
 .../Cat images.wgt/img/top_right.png               |  Bin 0 -> 5761 bytes
 .../interactivities/Cat images.wgt/index.html      |   88 +
 .../js/jquery-1.6.2.min.js                         |    0
 .../js/jquery-ui-1.8.9.custom.min.js               |    0
 .../interactivities/Cat images.wgt/js/script.js    |  815 ++++
 .../locales/fr/img/drop_img.png                    |  Bin 1762 -> 1762 bytes
 .../Cat images.wgt/locales/fr/index.html           |   59 +
 .../Cat images.wgt/locales/fr/js/script.js         |  814 ++++
 .../locales/ru/img/drop_img.png                    |  Bin 2196 -> 2196 bytes
 .../Cat images.wgt/locales/ru/index.html           |   59 +
 .../Cat images.wgt/locales/ru/js/script.js         |  795 ++++
 .../objects/0.gif                                  |  Bin 2628 -> 2628 bytes
 .../objects/1.gif                                  |  Bin 1483 -> 1483 bytes
 .../objects/2.gif                                  |  Bin 2008 -> 2008 bytes
 .../objects/3.gif                                  |  Bin 2179 -> 2179 bytes
 .../objects/4.gif                                  |  Bin 1772 -> 1772 bytes
 .../interactivities/Cat text.wgt/config.xml        |   17 +
 .../interactivities/Cat text.wgt/css/basic.css     |  434 ++
 .../library/interactivities/Cat text.wgt/icon.svg  |   63 +
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../interactivities/Cat text.wgt/img/bg.png        |  Bin 0 -> 10043 bytes
 .../interactivities/Cat text.wgt/img/bottom.png    |  Bin 0 -> 39126 bytes
 .../Cat text.wgt/img/bottom_left.png               |  Bin 0 -> 5452 bytes
 .../Cat text.wgt/img/bottom_right.png              |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../img/close_img.png                              |  Bin 1924 -> 1924 bytes
 .../img/img_plus.png                               |  Bin 2400 -> 2400 bytes
 .../interactivities/Cat text.wgt/img/left.png      |  Bin 0 -> 26156 bytes
 .../img/minus.png                                  |  Bin 1536 -> 1536 bytes
 .../Cat text.wgt/img/pad-bottom-left.png           |  Bin 0 -> 2622 bytes
 .../Cat text.wgt/img/pad-bottom-right.png          |  Bin 0 -> 2631 bytes
 .../Cat text.wgt/img/pad-bottom.png                |  Bin 0 -> 180 bytes
 .../interactivities/Cat text.wgt/img/pad-left.png  |  Bin 0 -> 170 bytes
 .../interactivities/Cat text.wgt/img/pad-right.png |  Bin 0 -> 168 bytes
 .../Cat text.wgt/img/pad-top-left.png              |  Bin 0 -> 2635 bytes
 .../Cat text.wgt/img/pad-top-right.png             |  Bin 0 -> 2710 bytes
 .../interactivities/Cat text.wgt/img/pad-top.png   |  Bin 0 -> 176 bytes
 .../Cat text.wgt/img/parameters-bg.png             |  Bin 0 -> 4256 bytes
 .../img/plus.png                                   |  Bin 1563 -> 1563 bytes
 .../interactivities/Cat text.wgt/img/right.png     |  Bin 0 -> 27887 bytes
 .../Cat text.wgt/img/slate-toolbar-edit.png        |  Bin 0 -> 1767 bytes
 .../Cat text.wgt/img/slate-toolbar-help.png        |  Bin 0 -> 1697 bytes
 .../Cat text.wgt/img/slate-toolbar-reload.png      |  Bin 0 -> 2289 bytes
 .../Cat text.wgt/img/toolbar-edit.png              |  Bin 0 -> 732 bytes
 .../Cat text.wgt/img/toolbar-help.png              |  Bin 0 -> 707 bytes
 .../Cat text.wgt/img/toolbar-reload.png            |  Bin 0 -> 999 bytes
 .../interactivities/Cat text.wgt/img/top.png       |  Bin 0 -> 37741 bytes
 .../interactivities/Cat text.wgt/img/top_left.png  |  Bin 0 -> 5588 bytes
 .../interactivities/Cat text.wgt/img/top_right.png |  Bin 0 -> 5761 bytes
 .../interactivities/Cat text.wgt/index.html        |   88 +
 .../js/jquery-1.6.2.min.js                         |    0
 .../js/jquery-ui-1.8.9.custom.min.js               |    0
 .../interactivities/Cat text.wgt/js/script.js      |  750 ++++
 .../Cat text.wgt/locales/fr/index.html             |   59 +
 .../Cat text.wgt/locales/fr/js/script.js           |  756 ++++
 .../Cat text.wgt/locales/ru/index.html             |   59 +
 .../Cat text.wgt/locales/ru/js/script.js           |  734 +++
 .../library/interactivities/Choisir.wgt/config.xml |    5 +-
 .../interactivities/Choisir.wgt/css/basic.css      |  364 ++-
 .../library/interactivities/Choisir.wgt/icon.png   |  Bin 2180 -> 0 bytes
 .../library/interactivities/Choisir.wgt/icon.svg   |   45 +
 .../interactivities/Choisir.wgt/images/bg.png      |  Bin 0 -> 10043 bytes
 .../interactivities/Choisir.wgt/images/bottom.png  |  Bin 0 -> 39126 bytes
 .../Choisir.wgt/images/bottom_left.png             |  Bin 0 -> 5452 bytes
 .../Choisir.wgt/images/bottom_right.png            |  Bin 0 -> 5626 bytes
 .../interactivities/Choisir.wgt/images/left.png    |  Bin 0 -> 26156 bytes
 .../Choisir.wgt/images/pad-bottom-left.png         |  Bin 0 -> 2622 bytes
 .../Choisir.wgt/images/pad-bottom-right.png        |  Bin 0 -> 2631 bytes
 .../Choisir.wgt/images/pad-bottom.png              |  Bin 0 -> 180 bytes
 .../Choisir.wgt/images/pad-left.png                |  Bin 0 -> 170 bytes
 .../Choisir.wgt/images/pad-right.png               |  Bin 0 -> 168 bytes
 .../Choisir.wgt/images/pad-top-left.png            |  Bin 0 -> 2635 bytes
 .../Choisir.wgt/images/pad-top-right.png           |  Bin 0 -> 2710 bytes
 .../interactivities/Choisir.wgt/images/pad-top.png |  Bin 0 -> 176 bytes
 .../Choisir.wgt/images/parameters-bg.png           |  Bin 0 -> 4256 bytes
 .../interactivities/Choisir.wgt/images/right.png   |  Bin 0 -> 27887 bytes
 .../Choisir.wgt/images/slate-toolbar-edit.png      |  Bin 0 -> 1767 bytes
 .../Choisir.wgt/images/slate-toolbar-help.png      |  Bin 0 -> 1697 bytes
 .../Choisir.wgt/images/slate-toolbar-reload.png    |  Bin 0 -> 2289 bytes
 .../Choisir.wgt/images/toolbar-edit.png            |  Bin 0 -> 732 bytes
 .../Choisir.wgt/images/toolbar-help.png            |  Bin 0 -> 707 bytes
 .../Choisir.wgt/images/toolbar-reload.png          |  Bin 0 -> 999 bytes
 .../interactivities/Choisir.wgt/images/top.png     |  Bin 0 -> 37741 bytes
 .../Choisir.wgt/images/top_left.png                |  Bin 0 -> 5588 bytes
 .../Choisir.wgt/images/top_right.png               |  Bin 0 -> 5761 bytes
 .../library/interactivities/Choisir.wgt/index.html |   77 +-
 .../Choisir.wgt/locales/fr/index.html              |   63 +
 .../locales/fr/scripts/selQuestionApp.js           |  793 ++++
 .../Choisir.wgt/locales/ru/index.html              |   63 +
 .../locales/ru/scripts/selQuestionApp.js           |  773 ++++
 .../Choisir.wgt/scripts/languages.js               |   72 -
 .../Choisir.wgt/scripts/selQuestionApp.js          |  473 ++-
 .../interactivities/Contraste.wgt/config.xml       |   16 +
 .../interactivities/Contraste.wgt/css/basic.css    |  435 ++
 .../library/interactivities/Contraste.wgt/icon.svg |   62 +
 .../interactivities/Contraste.wgt/images/bg.png    |  Bin 0 -> 10043 bytes
 .../Contraste.wgt/images/bottom.png                |  Bin 0 -> 39126 bytes
 .../Contraste.wgt/images/bottom_left.png           |  Bin 0 -> 5452 bytes
 .../Contraste.wgt/images/bottom_right.png          |  Bin 0 -> 5626 bytes
 .../images/greySquare.png                          |  Bin 451 -> 451 bytes
 .../images/greySquare2.png                         |  Bin 214 -> 214 bytes
 .../images/icon-close.png                          |  Bin 1507 -> 1507 bytes
 .../interactivities/Contraste.wgt/images/left.png  |  Bin 0 -> 26156 bytes
 .../Contraste.wgt/images/pad-bottom-left.png       |  Bin 0 -> 2622 bytes
 .../Contraste.wgt/images/pad-bottom-right.png      |  Bin 0 -> 2631 bytes
 .../Contraste.wgt/images/pad-bottom.png            |  Bin 0 -> 180 bytes
 .../Contraste.wgt/images/pad-left.png              |  Bin 0 -> 170 bytes
 .../Contraste.wgt/images/pad-right.png             |  Bin 0 -> 168 bytes
 .../Contraste.wgt/images/pad-top-left.png          |  Bin 0 -> 2635 bytes
 .../Contraste.wgt/images/pad-top-right.png         |  Bin 0 -> 2710 bytes
 .../Contraste.wgt/images/pad-top.png               |  Bin 0 -> 176 bytes
 .../Contraste.wgt/images/parameters-bg.png         |  Bin 0 -> 4256 bytes
 .../interactivities/Contraste.wgt/images/plus.png  |  Bin 0 -> 744 bytes
 .../images/popupBack.png                           |  Bin 861 -> 861 bytes
 .../interactivities/Contraste.wgt/images/right.png |  Bin 0 -> 27887 bytes
 .../Contraste.wgt/images/slate-toolbar-edit.png    |  Bin 0 -> 1767 bytes
 .../Contraste.wgt/images/slate-toolbar-help.png    |  Bin 0 -> 1697 bytes
 .../Contraste.wgt/images/slate-toolbar-reload.png  |  Bin 0 -> 2289 bytes
 .../Contraste.wgt/images/toolbar-edit.png          |  Bin 0 -> 732 bytes
 .../Contraste.wgt/images/toolbar-help.png          |  Bin 0 -> 707 bytes
 .../Contraste.wgt/images/toolbar-reload.png        |  Bin 0 -> 999 bytes
 .../interactivities/Contraste.wgt/images/top.png   |  Bin 0 -> 37741 bytes
 .../Contraste.wgt/images/top_left.png              |  Bin 0 -> 5588 bytes
 .../Contraste.wgt/images/top_right.png             |  Bin 0 -> 5761 bytes
 .../Contraste.wgt}/images/trgDown.png              |  Bin 475 -> 475 bytes
 .../Contraste.wgt/images/trgRight.png              |  Bin 0 -> 447 bytes
 .../interactivities/Contraste.wgt/index.html       |   88 +
 .../Contraste.wgt/locales/fr/index.html            |   66 +
 .../locales/fr/scripts/blackYellow.js              |  627 +++
 .../Contraste.wgt/locales/ru/index.html            |   66 +
 .../locales/ru/scripts/blackYellow.js              |  609 +++
 .../Contraste.wgt/scripts/blackYellow.js           |  625 +++
 .../scripts}/jquery-1.6.2.min.js                   |    0
 .../scripts/jquery.disable.text.select.js          |    0
 .../library/interactivities/Des.wgt/config.xml     |   15 +
 .../Des.wgt/css/images/arrow-up.png                |  Bin 0 -> 3510 bytes
 .../interactivities/Des.wgt/css/images/bg.png      |  Bin 0 -> 10043 bytes
 .../interactivities/Des.wgt/css/images/pad-bd.png  |  Bin 0 -> 9308 bytes
 .../Des.wgt/css/images/parameters-bg.png           |  Bin 0 -> 4256 bytes
 .../Des.wgt/css/images/slate-bd.png                |  Bin 0 -> 179255 bytes
 .../Des.wgt/css/images/slate-toolbar-edit.png      |  Bin 0 -> 1767 bytes
 .../Des.wgt/css/images/slate-toolbar-help.png      |  Bin 0 -> 1697 bytes
 .../Des.wgt/css/images/slate-toolbar-reload.png    |  Bin 0 -> 2289 bytes
 .../Des.wgt/css/images/toolbar-edit.png            |  Bin 0 -> 732 bytes
 .../Des.wgt/css/images/toolbar-help.png            |  Bin 0 -> 707 bytes
 .../Des.wgt/css/images/toolbar-reload.png          |  Bin 0 -> 999 bytes
 .../library/interactivities/Des.wgt/css/main.css   |   24 +
 .../interactivities/Des.wgt/css/ubw-help.css       |   46 +
 .../interactivities/Des.wgt/css/ubw-main.css       |  308 ++
 .../library/interactivities/Des.wgt/help.html      |   58 +
 .../Des.wgt/i18n/Messages.properties               |   14 +
 .../Des.wgt/i18n/Messages_fr.properties            |   14 +
 .../library/interactivities/Des.wgt/icon.png       |  Bin 0 -> 11863 bytes
 .../library/interactivities/Des.wgt/index.html     |   48 +
 .../interactivities/Des.wgt/js/help-template.js    |   13 +
 .../interactivities/Des.wgt/js/help_fr-template.js |   16 +
 .../Des.wgt/js/lib/jquery-1.7.1.min.js             |    4 +
 .../Des.wgt/js/lib/jquery-css-transform.js         |  112 +
 .../Des.wgt/js/lib/jquery-ui-1.8.17.custom.min.js  |  253 ++
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../interactivities/Des.wgt/js/lib/modernizr.js    |    4 +
 .../interactivities/Des.wgt/js/lib/mustache.js     |  536 +++
 .../interactivities/Des.wgt/js/lib/ubw-main.js     |  269 ++
 .../library/interactivities/Des.wgt/js/main.js     |  196 +
 .../interactivities/Des.wgt/js/templates.js        |   29 +
 .../interactivities/Enveloppe.wgt/config.xml       |   15 +
 .../Enveloppe.wgt/css/images/arrow-down.png        |  Bin 0 -> 3673 bytes
 .../Enveloppe.wgt/css/images/bg.png                |  Bin 0 -> 10043 bytes
 .../Enveloppe.wgt/css/images/box-bg.png            |  Bin 0 -> 142193 bytes
 .../Enveloppe.wgt/css/images/pad-bd.png            |  Bin 0 -> 9308 bytes
 .../Enveloppe.wgt/css/images/parameters-bg.png     |  Bin 0 -> 4256 bytes
 .../Enveloppe.wgt/css/images/slate-bd.png          |  Bin 0 -> 179255 bytes
 .../css/images/slate-toolbar-edit.png              |  Bin 0 -> 1767 bytes
 .../css/images/slate-toolbar-help.png              |  Bin 0 -> 1697 bytes
 .../css/images/slate-toolbar-reload.png            |  Bin 0 -> 2289 bytes
 .../Enveloppe.wgt/css/images/toolbar-edit.png      |  Bin 0 -> 732 bytes
 .../Enveloppe.wgt/css/images/toolbar-help.png      |  Bin 0 -> 707 bytes
 .../Enveloppe.wgt/css/images/toolbar-reload.png    |  Bin 0 -> 999 bytes
 .../Enveloppe.wgt/css/images/trombonne.png         |  Bin 0 -> 9659 bytes
 .../interactivities/Enveloppe.wgt/css/main.css     |   53 +
 .../interactivities/Enveloppe.wgt/css/ubw-help.css |   46 +
 .../interactivities/Enveloppe.wgt/css/ubw-main.css |  308 ++
 .../interactivities/Enveloppe.wgt/help.html        |   58 +
 .../Enveloppe.wgt/i18n/Messages.properties         |   15 +
 .../Enveloppe.wgt/i18n/Messages_fr.properties      |   15 +
 .../library/interactivities/Enveloppe.wgt/icon.png |  Bin 0 -> 12500 bytes
 .../interactivities/Enveloppe.wgt/index.html       |   51 +
 .../Enveloppe.wgt/js/help-template.js              |   13 +
 .../Enveloppe.wgt/js/help_fr-template.js           |   14 +
 .../Enveloppe.wgt/js/lib/jquery-1.7.1.min.js       |    4 +
 .../js/lib/jquery-ui-1.8.17.custom.min.js          |  253 ++
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../Enveloppe.wgt/js/lib/modernizr.js              |    4 +
 .../Enveloppe.wgt/js/lib/mustache.js               |  536 +++
 .../Enveloppe.wgt/js/lib/ubw-main.js               |  269 ++
 .../interactivities/Enveloppe.wgt/js/main.js       |  202 +
 .../interactivities/Enveloppe.wgt/js/templates.js  |   33 +
 .../config.xml                                     |    0
 .../interactivities/Etudier.wgt/css/basic.css      |  508 +++
 .../library/interactivities/Etudier.wgt/icon.svg   |   74 +
 .../{etudier.wgt => Etudier.wgt}/img/add_left.png  |  Bin 1361 -> 1361 bytes
 .../{etudier.wgt => Etudier.wgt}/img/add_right.png |  Bin 1339 -> 1339 bytes
 .../{etudier.wgt => Etudier.wgt}/img/add_text.png  |  Bin 1102 -> 1102 bytes
 .../library/interactivities/Etudier.wgt/img/bg.png |  Bin 0 -> 10043 bytes
 .../interactivities/Etudier.wgt/img/bottom.png     |  Bin 0 -> 39126 bytes
 .../Etudier.wgt/img/bottom_left.png                |  Bin 0 -> 5452 bytes
 .../Etudier.wgt/img/bottom_right.png               |  Bin 0 -> 5626 bytes
 .../{etudier.wgt => Etudier.wgt}/img/close_img.png |  Bin 1924 -> 1924 bytes
 .../img/close_slide.png                            |  Bin 2125 -> 2125 bytes
 .../interactivities/Etudier.wgt/img/left.png       |  Bin 0 -> 26156 bytes
 .../{etudier.wgt => Etudier.wgt}/img/moving.png    |  Bin 1345 -> 1345 bytes
 .../Etudier.wgt/img/pad-bottom-left.png            |  Bin 0 -> 2622 bytes
 .../Etudier.wgt/img/pad-bottom-right.png           |  Bin 0 -> 2631 bytes
 .../interactivities/Etudier.wgt/img/pad-bottom.png |  Bin 0 -> 180 bytes
 .../interactivities/Etudier.wgt/img/pad-left.png   |  Bin 0 -> 170 bytes
 .../interactivities/Etudier.wgt/img/pad-right.png  |  Bin 0 -> 168 bytes
 .../Etudier.wgt/img/pad-top-left.png               |  Bin 0 -> 2635 bytes
 .../Etudier.wgt/img/pad-top-right.png              |  Bin 0 -> 2710 bytes
 .../interactivities/Etudier.wgt/img/pad-top.png    |  Bin 0 -> 176 bytes
 .../Etudier.wgt/img/parameters-bg.png              |  Bin 0 -> 4256 bytes
 .../{etudier.wgt => Etudier.wgt}/img/play.png      |  Bin 1960 -> 1960 bytes
 .../{etudier.wgt => Etudier.wgt}/img/replay.png    |  Bin 2143 -> 2143 bytes
 .../{etudier.wgt => Etudier.wgt}/img/resize.png    |  Bin 1166 -> 1166 bytes
 .../interactivities/Etudier.wgt/img/right.png      |  Bin 0 -> 27887 bytes
 .../interactivities/Etudier.wgt/img/size_down.png  |  Bin 0 -> 1671 bytes
 .../interactivities/Etudier.wgt/img/size_up.png    |  Bin 0 -> 1706 bytes
 .../Etudier.wgt/img/slate-toolbar-edit.png         |  Bin 0 -> 1767 bytes
 .../Etudier.wgt/img/slate-toolbar-help.png         |  Bin 0 -> 1697 bytes
 .../Etudier.wgt/img/slate-toolbar-reload.png       |  Bin 0 -> 2289 bytes
 .../{etudier.wgt => Etudier.wgt}/img/stop.png      |  Bin 1856 -> 1856 bytes
 .../Etudier.wgt/img/toolbar-edit.png               |  Bin 0 -> 732 bytes
 .../Etudier.wgt/img/toolbar-help.png               |  Bin 0 -> 707 bytes
 .../Etudier.wgt/img/toolbar-reload.png             |  Bin 0 -> 999 bytes
 .../interactivities/Etudier.wgt/img/top.png        |  Bin 0 -> 37741 bytes
 .../interactivities/Etudier.wgt/img/top_left.png   |  Bin 0 -> 5588 bytes
 .../interactivities/Etudier.wgt/img/top_right.png  |  Bin 0 -> 5761 bytes
 .../interactivities/Etudier.wgt/img/turn_left.png  |  Bin 0 -> 3215 bytes
 .../left.png => Etudier.wgt/img/turn_left2.png}    |  Bin 954 -> 954 bytes
 .../interactivities/Etudier.wgt/img/turn_right.png |  Bin 0 -> 3273 bytes
 .../right.png => Etudier.wgt/img/turn_right11.png} |  Bin 982 -> 982 bytes
 .../library/interactivities/Etudier.wgt/index.html |   92 +
 .../Etudier.wgt/js/easySlider1.5.js                |  197 +
 .../js/jquery-1.6.2.min.js                         |    0
 .../js/jquery-ui-1.8.9.custom.min.js               |    0
 .../interactivities/Etudier.wgt/js/script.js       |  686 +++
 .../Etudier.wgt/locales/fr/index.html              |   63 +
 .../Etudier.wgt/locales/fr/js/script.js            |  697 +++
 .../Etudier.wgt/locales/ru/index.html              |   63 +
 .../Etudier.wgt/locales/ru/js/script.js            |  675 +++
 .../{etudier.wgt => Etudier.wgt}/objects/1.gif     |  Bin 1483 -> 1483 bytes
 .../objects/bateaux.mp3                            |  Bin 2508 -> 2508 bytes
 .../library/interactivities/Memory.wgt/config.xml  |   15 +
 .../interactivities/Memory.wgt/css/images/bg.png   |  Bin 0 -> 10043 bytes
 .../Memory.wgt/css/images/drop-label-bg.png        |  Bin 0 -> 527 bytes
 .../Memory.wgt/css/images/drop-label-ondrop-bg.png |  Bin 0 -> 485 bytes
 .../interactivities/Memory.wgt/css/images/flip.png |  Bin 0 -> 2186 bytes
 .../interactivities/Memory.wgt/css/images/mark.png |  Bin 0 -> 3690 bytes
 .../Memory.wgt/css/images/pad-bd.png               |  Bin 0 -> 9308 bytes
 .../Memory.wgt/css/images/parameters-bg.png        |  Bin 0 -> 4256 bytes
 .../Memory.wgt/css/images/pile-bg.png              |  Bin 0 -> 4676 bytes
 .../Memory.wgt/css/images/result-bg.png            |  Bin 0 -> 240 bytes
 .../Memory.wgt/css/images/slate-bd.png             |  Bin 0 -> 179255 bytes
 .../Memory.wgt/css/images/slate-toolbar-edit.png   |  Bin 0 -> 1767 bytes
 .../Memory.wgt/css/images/slate-toolbar-help.png   |  Bin 0 -> 1697 bytes
 .../Memory.wgt/css/images/slate-toolbar-reload.png |  Bin 0 -> 2289 bytes
 .../Memory.wgt/css/images/toolbar-edit.png         |  Bin 0 -> 732 bytes
 .../Memory.wgt/css/images/toolbar-help.png         |  Bin 0 -> 707 bytes
 .../Memory.wgt/css/images/toolbar-reload.png       |  Bin 0 -> 999 bytes
 .../interactivities/Memory.wgt/css/main.css        |  246 +
 .../interactivities/Memory.wgt/css/ubw-help.css    |   46 +
 .../interactivities/Memory.wgt/css/ubw-main.css    |  308 ++
 .../library/interactivities/Memory.wgt/help.html   |   58 +
 .../Memory.wgt/i18n/Messages.properties            |   19 +
 .../Memory.wgt/i18n/Messages_fr.properties         |   19 +
 .../library/interactivities/Memory.wgt/icon.png    |  Bin 0 -> 10396 bytes
 .../library/interactivities/Memory.wgt/index.html  |   38 +
 .../interactivities/Memory.wgt/js/help-template.js |   24 +
 .../Memory.wgt/js/help_fr-template.js              |   16 +
 .../Memory.wgt/js/lib/jquery-1.7.1.min.js          |    4 +
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../interactivities/Memory.wgt/js/lib/modernizr.js |    4 +
 .../interactivities/Memory.wgt/js/lib/mustache.js  |  536 +++
 .../interactivities/Memory.wgt/js/lib/ubw-main.js  |  272 ++
 .../library/interactivities/Memory.wgt/js/main.js  |  244 +
 .../interactivities/Memory.wgt/js/templates.js     |   75 +
 .../library/interactivities/Morpion.wgt/config.xml |   15 +
 .../interactivities/Morpion.wgt/css/images/bg.png  |  Bin 0 -> 10043 bytes
 .../Morpion.wgt/css/images/pad-bd.png              |  Bin 0 -> 9308 bytes
 .../Morpion.wgt/css/images/parameters-bg.png       |  Bin 0 -> 4256 bytes
 .../Morpion.wgt/css/images/player1.png             |  Bin 0 -> 1798 bytes
 .../Morpion.wgt/css/images/player2.png             |  Bin 0 -> 1881 bytes
 .../Morpion.wgt/css/images/result-bg.png           |  Bin 0 -> 240 bytes
 .../Morpion.wgt/css/images/slate-bd.png            |  Bin 0 -> 179255 bytes
 .../Morpion.wgt/css/images/slate-toolbar-edit.png  |  Bin 0 -> 1767 bytes
 .../Morpion.wgt/css/images/slate-toolbar-help.png  |  Bin 0 -> 1697 bytes
 .../css/images/slate-toolbar-reload.png            |  Bin 0 -> 2289 bytes
 .../Morpion.wgt/css/images/submit.png              |  Bin 0 -> 541 bytes
 .../Morpion.wgt/css/images/toolbar-edit.png        |  Bin 0 -> 732 bytes
 .../Morpion.wgt/css/images/toolbar-help.png        |  Bin 0 -> 707 bytes
 .../Morpion.wgt/css/images/toolbar-reload.png      |  Bin 0 -> 999 bytes
 .../interactivities/Morpion.wgt/css/main.css       |  248 +
 .../interactivities/Morpion.wgt/css/ubw-help.css   |   46 +
 .../interactivities/Morpion.wgt/css/ubw-main.css   |  308 ++
 .../library/interactivities/Morpion.wgt/help.html  |   58 +
 .../Morpion.wgt/i18n/Messages.properties           |   14 +
 .../Morpion.wgt/i18n/Messages_fr.properties        |   14 +
 .../library/interactivities/Morpion.wgt/icon.png   |  Bin 0 -> 11916 bytes
 .../interactivities/Morpion.wgt/images/failed.png  |  Bin 0 -> 29465 bytes
 .../interactivities/Morpion.wgt/images/succeed.png |  Bin 0 -> 27276 bytes
 .../library/interactivities/Morpion.wgt/index.html |   48 +
 .../Morpion.wgt/js/help-template.js                |   17 +
 .../Morpion.wgt/js/help_fr-template.js             |   21 +
 .../Morpion.wgt/js/lib/jquery-1.7.1.min.js         |    4 +
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../Morpion.wgt/js/lib/modernizr.js                |    4 +
 .../interactivities/Morpion.wgt/js/lib/mustache.js |  536 +++
 .../interactivities/Morpion.wgt/js/lib/ubw-main.js |  269 ++
 .../library/interactivities/Morpion.wgt/js/main.js |  163 +
 .../interactivities/Morpion.wgt/js/templates.js    |   35 +
 .../interactivities/Ordre images.wgt/config.xml    |   16 +
 .../interactivities/Ordre images.wgt/css/basic.css |  393 ++
 .../interactivities/Ordre images.wgt/icon.svg      |  191 +
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../img/add_img.png                                |  Bin 5352 -> 5352 bytes
 .../interactivities/Ordre images.wgt/img/bg.png    |  Bin 0 -> 10043 bytes
 .../Ordre images.wgt/img/bottom.png                |  Bin 0 -> 39126 bytes
 .../Ordre images.wgt/img/bottom_left.png           |  Bin 0 -> 5452 bytes
 .../Ordre images.wgt/img/bottom_right.png          |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/clear_img.png                              |  Bin 2819 -> 2819 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../img/close_img.png                              |  Bin 1924 -> 1924 bytes
 .../img/drop_img.png                               |  Bin 1618 -> 1618 bytes
 .../img/fill_hor.png                               |  Bin 1384 -> 1384 bytes
 .../img/fill_vert.png                              |  Bin 1901 -> 1901 bytes
 .../interactivities/Ordre images.wgt/img/left.png  |  Bin 0 -> 26156 bytes
 .../img/numb_img.png                               |  Bin 2478 -> 2478 bytes
 .../Ordre images.wgt/img/pad-bottom-left.png       |  Bin 0 -> 2622 bytes
 .../Ordre images.wgt/img/pad-bottom-right.png      |  Bin 0 -> 2631 bytes
 .../Ordre images.wgt/img/pad-bottom.png            |  Bin 0 -> 180 bytes
 .../Ordre images.wgt/img/pad-left.png              |  Bin 0 -> 170 bytes
 .../Ordre images.wgt/img/pad-right.png             |  Bin 0 -> 168 bytes
 .../Ordre images.wgt/img/pad-top-left.png          |  Bin 0 -> 2635 bytes
 .../Ordre images.wgt/img/pad-top-right.png         |  Bin 0 -> 2710 bytes
 .../Ordre images.wgt/img/pad-top.png               |  Bin 0 -> 176 bytes
 .../Ordre images.wgt/img/parameters-bg.png         |  Bin 0 -> 4256 bytes
 .../interactivities/Ordre images.wgt/img/right.png |  Bin 0 -> 27887 bytes
 .../Ordre images.wgt/img/slate-toolbar-edit.png    |  Bin 0 -> 1767 bytes
 .../Ordre images.wgt/img/slate-toolbar-help.png    |  Bin 0 -> 1697 bytes
 .../Ordre images.wgt/img/slate-toolbar-reload.png  |  Bin 0 -> 2289 bytes
 .../Ordre images.wgt/img/toolbar-edit.png          |  Bin 0 -> 732 bytes
 .../Ordre images.wgt/img/toolbar-help.png          |  Bin 0 -> 707 bytes
 .../Ordre images.wgt/img/toolbar-reload.png        |  Bin 0 -> 999 bytes
 .../interactivities/Ordre images.wgt/img/top.png   |  Bin 0 -> 37741 bytes
 .../Ordre images.wgt/img/top_left.png              |  Bin 0 -> 5588 bytes
 .../Ordre images.wgt/img/top_right.png             |  Bin 0 -> 5761 bytes
 .../interactivities/Ordre images.wgt/index.html    |   88 +
 .../js}/jquery-1.6.2.min.js                        |    0
 .../js}/jquery-ui-1.8.9.custom.min.js              |    0
 .../interactivities/Ordre images.wgt/js/script.js  |  571 +++
 .../locales/fr/img/drop_img.png                    |  Bin 1762 -> 1762 bytes
 .../Ordre images.wgt/locales/fr/index.html         |   60 +
 .../Ordre images.wgt/locales/fr/js/script.js       |  562 +++
 .../locales/ru/img/drop_img.png                    |  Bin 2196 -> 2196 bytes
 .../Ordre images.wgt/locales/ru/index.html         |   60 +
 .../Ordre images.wgt/locales/ru/js/script.js       |  539 +++
 .../objects/0.gif                                  |  Bin 2628 -> 2628 bytes
 .../objects/1.gif                                  |  Bin 1483 -> 1483 bytes
 .../objects/2.gif                                  |  Bin 2008 -> 2008 bytes
 .../objects/3.gif                                  |  Bin 2179 -> 2179 bytes
 .../objects/4.gif                                  |  Bin 1772 -> 1772 bytes
 .../config.xml                                     |    0
 .../Ordre lettres.wgt/css/basic.css                |  454 ++
 .../interactivities/Ordre lettres.wgt/icon.svg     |   60 +
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../Ordre lettres.wgt/img/ar_down.png              |  Bin 0 -> 529 bytes
 .../Ordre lettres.wgt/img/ar_down_white.png        |  Bin 0 -> 142 bytes
 .../interactivities/Ordre lettres.wgt/img/bg.png   |  Bin 0 -> 10043 bytes
 .../Ordre lettres.wgt/img/bottom.png               |  Bin 0 -> 39126 bytes
 .../Ordre lettres.wgt/img/bottom_left.png          |  Bin 0 -> 5452 bytes
 .../Ordre lettres.wgt/img/bottom_right.png         |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../interactivities/Ordre lettres.wgt/img/left.png |  Bin 0 -> 26156 bytes
 .../Ordre lettres.wgt/img/pad-bottom-left.png      |  Bin 0 -> 2622 bytes
 .../Ordre lettres.wgt/img/pad-bottom-right.png     |  Bin 0 -> 2631 bytes
 .../Ordre lettres.wgt/img/pad-bottom.png           |  Bin 0 -> 180 bytes
 .../Ordre lettres.wgt/img/pad-left.png             |  Bin 0 -> 170 bytes
 .../Ordre lettres.wgt/img/pad-right.png            |  Bin 0 -> 168 bytes
 .../Ordre lettres.wgt/img/pad-top-left.png         |  Bin 0 -> 2635 bytes
 .../Ordre lettres.wgt/img/pad-top-right.png        |  Bin 0 -> 2710 bytes
 .../Ordre lettres.wgt/img/pad-top.png              |  Bin 0 -> 176 bytes
 .../Ordre lettres.wgt/img/parameters-bg.png        |  Bin 0 -> 4256 bytes
 .../img/play.png                                   |  Bin 1960 -> 1960 bytes
 .../img/replay.png                                 |  Bin 2143 -> 2143 bytes
 .../Ordre lettres.wgt/img/right.png                |  Bin 0 -> 27887 bytes
 .../Ordre lettres.wgt/img/slate-toolbar-edit.png   |  Bin 0 -> 1767 bytes
 .../Ordre lettres.wgt/img/slate-toolbar-help.png   |  Bin 0 -> 1697 bytes
 .../Ordre lettres.wgt/img/slate-toolbar-reload.png |  Bin 0 -> 2289 bytes
 .../img/stop.png                                   |  Bin 1856 -> 1856 bytes
 .../Ordre lettres.wgt/img/toolbar-edit.png         |  Bin 0 -> 732 bytes
 .../Ordre lettres.wgt/img/toolbar-help.png         |  Bin 0 -> 707 bytes
 .../Ordre lettres.wgt/img/toolbar-reload.png       |  Bin 0 -> 999 bytes
 .../interactivities/Ordre lettres.wgt/img/top.png  |  Bin 0 -> 37741 bytes
 .../Ordre lettres.wgt/img/top_left.png             |  Bin 0 -> 5588 bytes
 .../Ordre lettres.wgt/img/top_right.png            |  Bin 0 -> 5761 bytes
 .../interactivities/Ordre lettres.wgt/index.html   |   88 +
 .../Ordre lettres.wgt/js/jquery-1.8.0.min.js       |    2 +
 .../js/jquery-ui-1.8.23.custom.min.js              |  125 +
 .../interactivities/Ordre lettres.wgt/js/script.js |  566 +++
 .../Ordre lettres.wgt/locales/fr/index.html        |   59 +
 .../Ordre lettres.wgt/locales/fr/js/script.js      |  568 +++
 .../locales/fr/objects/exemple.mp3                 |  Bin 0 -> 6302 bytes
 .../Ordre lettres.wgt/locales/ru/index.html        |   59 +
 .../Ordre lettres.wgt/locales/ru/js/script.js      |  548 +++
 .../locales/ru/objects/example.mp3                 |  Bin 0 -> 4630 bytes
 .../Ordre lettres.wgt/objects/beep.mp3             |  Bin 0 -> 5570 bytes
 .../objects/beep.wav                               |  Bin 28564 -> 28564 bytes
 .../interactivities/Ordre mots.wgt/config.xml      |   16 +
 .../interactivities/Ordre mots.wgt/icon.svg        |   35 +
 .../interactivities/Ordre mots.wgt/img/bg.png      |  Bin 0 -> 10043 bytes
 .../interactivities/Ordre mots.wgt/img/bottom.png  |  Bin 0 -> 39126 bytes
 .../Ordre mots.wgt/img/bottom_left.png             |  Bin 0 -> 5452 bytes
 .../Ordre mots.wgt/img/bottom_right.png            |  Bin 0 -> 5626 bytes
 .../interactivities/Ordre mots.wgt/img/left.png    |  Bin 0 -> 26156 bytes
 .../Ordre mots.wgt/img/pad-bottom-left.png         |  Bin 0 -> 2622 bytes
 .../Ordre mots.wgt/img/pad-bottom-right.png        |  Bin 0 -> 2631 bytes
 .../Ordre mots.wgt/img/pad-bottom.png              |  Bin 0 -> 180 bytes
 .../Ordre mots.wgt/img/pad-left.png                |  Bin 0 -> 170 bytes
 .../Ordre mots.wgt/img/pad-right.png               |  Bin 0 -> 168 bytes
 .../Ordre mots.wgt/img/pad-top-left.png            |  Bin 0 -> 2635 bytes
 .../Ordre mots.wgt/img/pad-top-right.png           |  Bin 0 -> 2710 bytes
 .../interactivities/Ordre mots.wgt/img/pad-top.png |  Bin 0 -> 176 bytes
 .../Ordre mots.wgt/img/parameters-bg.png           |  Bin 0 -> 4256 bytes
 .../interactivities/Ordre mots.wgt/img/right.png   |  Bin 0 -> 27887 bytes
 .../Ordre mots.wgt/img/slate-toolbar-edit.png      |  Bin 0 -> 1767 bytes
 .../Ordre mots.wgt/img/slate-toolbar-help.png      |  Bin 0 -> 1697 bytes
 .../Ordre mots.wgt/img/slate-toolbar-reload.png    |  Bin 0 -> 2289 bytes
 .../Ordre mots.wgt/img/toolbar-edit.png            |  Bin 0 -> 732 bytes
 .../Ordre mots.wgt/img/toolbar-help.png            |  Bin 0 -> 707 bytes
 .../Ordre mots.wgt/img/toolbar-reload.png          |  Bin 0 -> 999 bytes
 .../interactivities/Ordre mots.wgt/img/top.png     |  Bin 0 -> 37741 bytes
 .../Ordre mots.wgt/img/top_left.png                |  Bin 0 -> 5588 bytes
 .../Ordre mots.wgt/img/top_right.png               |  Bin 0 -> 5761 bytes
 .../interactivities/Ordre mots.wgt/index.html      |   99 +
 .../Ordre mots.wgt/locales/fr/index.html           |   68 +
 .../Ordre mots.wgt/locales/fr/scripts/template2.js |  435 ++
 .../Ordre mots.wgt/locales/ru/index.html           |   68 +
 .../Ordre mots.wgt/locales/ru/scripts/template2.js |  421 ++
 .../scripts/jquery-1.6.2.min.js                    |    0
 .../scripts/jquery-ui-1.8.9.custom.min.js          |    0
 .../Ordre mots.wgt/scripts/template2.js            |  435 ++
 .../Ordre mots.wgt/styles/master.css               |   15 +
 .../Ordre mots.wgt/styles/of_puppets.css           |  296 ++
 .../interactivities/Ordre phrase.wgt/config.xml    |   16 +
 .../interactivities/Ordre phrase.wgt/icon.svg      |   52 +
 .../interactivities/Ordre phrase.wgt/img/bg.png    |  Bin 0 -> 10043 bytes
 .../Ordre phrase.wgt/img/bottom.png                |  Bin 0 -> 39126 bytes
 .../Ordre phrase.wgt/img/bottom_left.png           |  Bin 0 -> 5452 bytes
 .../Ordre phrase.wgt/img/bottom_right.png          |  Bin 0 -> 5626 bytes
 .../interactivities/Ordre phrase.wgt/img/left.png  |  Bin 0 -> 26156 bytes
 .../Ordre phrase.wgt/img/pad-bottom-left.png       |  Bin 0 -> 2622 bytes
 .../Ordre phrase.wgt/img/pad-bottom-right.png      |  Bin 0 -> 2631 bytes
 .../Ordre phrase.wgt/img/pad-bottom.png            |  Bin 0 -> 180 bytes
 .../Ordre phrase.wgt/img/pad-left.png              |  Bin 0 -> 170 bytes
 .../Ordre phrase.wgt/img/pad-right.png             |  Bin 0 -> 168 bytes
 .../Ordre phrase.wgt/img/pad-top-left.png          |  Bin 0 -> 2635 bytes
 .../Ordre phrase.wgt/img/pad-top-right.png         |  Bin 0 -> 2710 bytes
 .../Ordre phrase.wgt/img/pad-top.png               |  Bin 0 -> 176 bytes
 .../Ordre phrase.wgt/img/parameters-bg.png         |  Bin 0 -> 4256 bytes
 .../interactivities/Ordre phrase.wgt/img/right.png |  Bin 0 -> 27887 bytes
 .../Ordre phrase.wgt/img/slate-toolbar-edit.png    |  Bin 0 -> 1767 bytes
 .../Ordre phrase.wgt/img/slate-toolbar-help.png    |  Bin 0 -> 1697 bytes
 .../Ordre phrase.wgt/img/slate-toolbar-reload.png  |  Bin 0 -> 2289 bytes
 .../Ordre phrase.wgt/img/toolbar-edit.png          |  Bin 0 -> 732 bytes
 .../Ordre phrase.wgt/img/toolbar-help.png          |  Bin 0 -> 707 bytes
 .../Ordre phrase.wgt/img/toolbar-reload.png        |  Bin 0 -> 999 bytes
 .../interactivities/Ordre phrase.wgt/img/top.png   |  Bin 0 -> 37741 bytes
 .../Ordre phrase.wgt/img/top_left.png              |  Bin 0 -> 5588 bytes
 .../Ordre phrase.wgt/img/top_right.png             |  Bin 0 -> 5761 bytes
 .../interactivities/Ordre phrase.wgt/index.html    |   94 +
 .../Ordre phrase.wgt/locales/fr/index.html         |   70 +
 .../locales/fr/script/template2.js                 |  387 ++
 .../Ordre phrase.wgt/locales/ru/index.html         |   70 +
 .../locales/ru/script/template2.js                 |  373 ++
 .../scripts}/jquery-1.6.2.min.js                   |    0
 .../scripts}/jquery-ui-1.8.9.custom.min.js         |    0
 .../Ordre phrase.wgt/scripts/template2.js          |  389 ++
 .../Ordre phrase.wgt/styles/master.css             |   15 +
 .../Ordre phrase.wgt/styles/of_puppets.css         |  305 ++
 .../interactivities/Selectionner.wgt/config.xml    |   16 +
 .../interactivities/Selectionner.wgt/css/basic.css |  470 ++
 .../interactivities/Selectionner.wgt/icon.svg      |  214 +
 .../img/add_block.png                              |  Bin 1626 -> 1626 bytes
 .../img/add_text.png                               |  Bin 1235 -> 1235 bytes
 .../interactivities/Selectionner.wgt/img/bg.png    |  Bin 0 -> 10043 bytes
 .../Selectionner.wgt/img/bottom.png                |  Bin 0 -> 39126 bytes
 .../Selectionner.wgt/img/bottom_left.png           |  Bin 0 -> 5452 bytes
 .../Selectionner.wgt/img/bottom_right.png          |  Bin 0 -> 5626 bytes
 .../img/circle.png                                 |  Bin 1026 -> 1026 bytes
 .../img/close_cont.png                             |  Bin 772 -> 772 bytes
 .../img/close_img.png                              |  Bin 1924 -> 1924 bytes
 .../interactivities/Selectionner.wgt/img/left.png  |  Bin 0 -> 26156 bytes
 .../Selectionner.wgt/img/pad-bottom-left.png       |  Bin 0 -> 2622 bytes
 .../Selectionner.wgt/img/pad-bottom-right.png      |  Bin 0 -> 2631 bytes
 .../Selectionner.wgt/img/pad-bottom.png            |  Bin 0 -> 180 bytes
 .../Selectionner.wgt/img/pad-left.png              |  Bin 0 -> 170 bytes
 .../Selectionner.wgt/img/pad-right.png             |  Bin 0 -> 168 bytes
 .../Selectionner.wgt/img/pad-top-left.png          |  Bin 0 -> 2635 bytes
 .../Selectionner.wgt/img/pad-top-right.png         |  Bin 0 -> 2710 bytes
 .../Selectionner.wgt/img/pad-top.png               |  Bin 0 -> 176 bytes
 .../Selectionner.wgt/img/parameters-bg.png         |  Bin 0 -> 4256 bytes
 .../img/play.png                                   |  Bin 1960 -> 1960 bytes
 .../img/replay.png                                 |  Bin 2143 -> 2143 bytes
 .../interactivities/Selectionner.wgt/img/right.png |  Bin 0 -> 27887 bytes
 .../Selectionner.wgt/img/slate-toolbar-edit.png    |  Bin 0 -> 1767 bytes
 .../Selectionner.wgt/img/slate-toolbar-help.png    |  Bin 0 -> 1697 bytes
 .../Selectionner.wgt/img/slate-toolbar-reload.png  |  Bin 0 -> 2289 bytes
 .../img/stop.png                                   |  Bin 1856 -> 1856 bytes
 .../Selectionner.wgt/img/toolbar-edit.png          |  Bin 0 -> 732 bytes
 .../Selectionner.wgt/img/toolbar-help.png          |  Bin 0 -> 707 bytes
 .../Selectionner.wgt/img/toolbar-reload.png        |  Bin 0 -> 999 bytes
 .../interactivities/Selectionner.wgt/img/top.png   |  Bin 0 -> 37741 bytes
 .../Selectionner.wgt/img/top_left.png              |  Bin 0 -> 5588 bytes
 .../Selectionner.wgt/img/top_right.png             |  Bin 0 -> 5761 bytes
 .../interactivities/Selectionner.wgt/index.html    |   88 +
 .../js/jquery-1.6.2.min.js                         |    0
 .../js/jquery-ui-1.8.9.custom.min.js               |    0
 .../interactivities/Selectionner.wgt/js/script.js  |  563 +++
 .../Selectionner.wgt/locales/fr/index.html         |   59 +
 .../Selectionner.wgt/locales/fr/js/script.js       |  563 +++
 .../Selectionner.wgt/locales/ru/index.html         |   59 +
 .../Selectionner.wgt/locales/ru/js/script.js       |  545 +++
 .../interactivities/Separe phrase.wgt/config.xml   |   16 +
 .../interactivities/Separe phrase.wgt/icon.svg     |   35 +
 .../interactivities/Separe phrase.wgt/img/bg.png   |  Bin 0 -> 10043 bytes
 .../Separe phrase.wgt/img/bottom.png               |  Bin 0 -> 39126 bytes
 .../Separe phrase.wgt/img/bottom_left.png          |  Bin 0 -> 5452 bytes
 .../Separe phrase.wgt/img/bottom_right.png         |  Bin 0 -> 5626 bytes
 .../interactivities/Separe phrase.wgt/img/left.png |  Bin 0 -> 26156 bytes
 .../Separe phrase.wgt/img/pad-bottom-left.png      |  Bin 0 -> 2622 bytes
 .../Separe phrase.wgt/img/pad-bottom-right.png     |  Bin 0 -> 2631 bytes
 .../Separe phrase.wgt/img/pad-bottom.png           |  Bin 0 -> 180 bytes
 .../Separe phrase.wgt/img/pad-left.png             |  Bin 0 -> 170 bytes
 .../Separe phrase.wgt/img/pad-right.png            |  Bin 0 -> 168 bytes
 .../Separe phrase.wgt/img/pad-top-left.png         |  Bin 0 -> 2635 bytes
 .../Separe phrase.wgt/img/pad-top-right.png        |  Bin 0 -> 2710 bytes
 .../Separe phrase.wgt/img/pad-top.png              |  Bin 0 -> 176 bytes
 .../Separe phrase.wgt/img/parameters-bg.png        |  Bin 0 -> 4256 bytes
 .../Separe phrase.wgt/img/right.png                |  Bin 0 -> 27887 bytes
 .../Separe phrase.wgt/img/slate-toolbar-edit.png   |  Bin 0 -> 1767 bytes
 .../Separe phrase.wgt/img/slate-toolbar-help.png   |  Bin 0 -> 1697 bytes
 .../Separe phrase.wgt/img/slate-toolbar-reload.png |  Bin 0 -> 2289 bytes
 .../Separe phrase.wgt/img/toolbar-edit.png         |  Bin 0 -> 732 bytes
 .../Separe phrase.wgt/img/toolbar-help.png         |  Bin 0 -> 707 bytes
 .../Separe phrase.wgt/img/toolbar-reload.png       |  Bin 0 -> 999 bytes
 .../interactivities/Separe phrase.wgt/img/top.png  |  Bin 0 -> 37741 bytes
 .../Separe phrase.wgt/img/top_left.png             |  Bin 0 -> 5588 bytes
 .../Separe phrase.wgt/img/top_right.png            |  Bin 0 -> 5761 bytes
 .../interactivities/Separe phrase.wgt/index.html   |   95 +
 .../Separe phrase.wgt/locales/fr/index.html        |   70 +
 .../locales/fr/scripts/wcontainer.js               |  218 +
 .../Separe phrase.wgt/locales/ru/index.html        |   70 +
 .../locales/ru/scripts/wcontainer.js               |  198 +
 .../Separe phrase.wgt/scripts/app.js               |  331 ++
 .../Separe phrase.wgt/scripts/ext.js               |   41 +
 .../scripts}/jquery-1.6.2.min.js                   |    0
 .../Separe phrase.wgt/scripts/wcontainer.js        |  210 +
 .../Separe phrase.wgt/styles/app.css               |  264 ++
 .../Separe phrase.wgt/styles/master.css            |   52 +
 .../styles/separator-activated.png                 |  Bin 2966 -> 2966 bytes
 .../styles/separator-hover.png                     |  Bin 2964 -> 2964 bytes
 .../Separe phrase.wgt/styles/wcontainer.css        |   19 +
 .../interactivities/Separe texte.wgt/config.xml    |   16 +
 .../interactivities/Separe texte.wgt/icon.svg      |   39 +
 .../interactivities/Separe texte.wgt/img/bg.png    |  Bin 0 -> 10043 bytes
 .../Separe texte.wgt/img/bottom.png                |  Bin 0 -> 39126 bytes
 .../Separe texte.wgt/img/bottom_left.png           |  Bin 0 -> 5452 bytes
 .../Separe texte.wgt/img/bottom_right.png          |  Bin 0 -> 5626 bytes
 .../interactivities/Separe texte.wgt/img/left.png  |  Bin 0 -> 26156 bytes
 .../Separe texte.wgt/img/pad-bottom-left.png       |  Bin 0 -> 2622 bytes
 .../Separe texte.wgt/img/pad-bottom-right.png      |  Bin 0 -> 2631 bytes
 .../Separe texte.wgt/img/pad-bottom.png            |  Bin 0 -> 180 bytes
 .../Separe texte.wgt/img/pad-left.png              |  Bin 0 -> 170 bytes
 .../Separe texte.wgt/img/pad-right.png             |  Bin 0 -> 168 bytes
 .../Separe texte.wgt/img/pad-top-left.png          |  Bin 0 -> 2635 bytes
 .../Separe texte.wgt/img/pad-top-right.png         |  Bin 0 -> 2710 bytes
 .../Separe texte.wgt/img/pad-top.png               |  Bin 0 -> 176 bytes
 .../Separe texte.wgt/img/parameters-bg.png         |  Bin 0 -> 4256 bytes
 .../interactivities/Separe texte.wgt/img/right.png |  Bin 0 -> 27887 bytes
 .../Separe texte.wgt/img/slate-toolbar-edit.png    |  Bin 0 -> 1767 bytes
 .../Separe texte.wgt/img/slate-toolbar-help.png    |  Bin 0 -> 1697 bytes
 .../Separe texte.wgt/img/slate-toolbar-reload.png  |  Bin 0 -> 2289 bytes
 .../Separe texte.wgt/img/toolbar-edit.png          |  Bin 0 -> 732 bytes
 .../Separe texte.wgt/img/toolbar-help.png          |  Bin 0 -> 707 bytes
 .../Separe texte.wgt/img/toolbar-reload.png        |  Bin 0 -> 999 bytes
 .../interactivities/Separe texte.wgt/img/top.png   |  Bin 0 -> 37741 bytes
 .../Separe texte.wgt/img/top_left.png              |  Bin 0 -> 5588 bytes
 .../Separe texte.wgt/img/top_right.png             |  Bin 0 -> 5761 bytes
 .../interactivities/Separe texte.wgt/index.html    |   97 +
 .../Separe texte.wgt/locales/fr/index.html         |   70 +
 .../locales/fr/scripts/wcontainer.js               |  219 +
 .../Separe texte.wgt/locales/ru/index.html         |   70 +
 .../locales/ru/scripts/wcontainer.js               |  198 +
 .../Separe texte.wgt/scripts/app2.js               |  328 ++
 .../Separe texte.wgt/scripts/ext.js                |   41 +
 .../scripts/jquery-1.6.2.min.js                    |    0
 .../Separe texte.wgt/scripts/wcontainer.js         |  207 +
 .../Separe texte.wgt/styles/app.css                |  265 ++
 .../Separe texte.wgt/styles/master.css             |   50 +
 .../styles/separator-activated.png                 |  Bin 2966 -> 2966 bytes
 .../styles/separator-hover.png                     |  Bin 2964 -> 2964 bytes
 .../Separe texte.wgt/styles/wcontainer.css         |   19 +
 .../interactivities/Syllabes.wgt/config.xml        |   16 +
 .../{ord-phrases.wgt => Syllabes.wgt}/icon.png     |  Bin 5481 -> 5481 bytes
 .../library/interactivities/Syllabes.wgt/icon.svg  |   50 +
 .../interactivities/Syllabes.wgt/img/bg.png        |  Bin 0 -> 10043 bytes
 .../interactivities/Syllabes.wgt/img/bottom.png    |  Bin 0 -> 39126 bytes
 .../Syllabes.wgt/img/bottom_left.png               |  Bin 0 -> 5452 bytes
 .../Syllabes.wgt/img/bottom_right.png              |  Bin 0 -> 5626 bytes
 .../interactivities/Syllabes.wgt/img/left.png      |  Bin 0 -> 26156 bytes
 .../Syllabes.wgt/img/pad-bottom-left.png           |  Bin 0 -> 2622 bytes
 .../Syllabes.wgt/img/pad-bottom-right.png          |  Bin 0 -> 2631 bytes
 .../Syllabes.wgt/img/pad-bottom.png                |  Bin 0 -> 180 bytes
 .../interactivities/Syllabes.wgt/img/pad-left.png  |  Bin 0 -> 170 bytes
 .../interactivities/Syllabes.wgt/img/pad-right.png |  Bin 0 -> 168 bytes
 .../Syllabes.wgt/img/pad-top-left.png              |  Bin 0 -> 2635 bytes
 .../Syllabes.wgt/img/pad-top-right.png             |  Bin 0 -> 2710 bytes
 .../interactivities/Syllabes.wgt/img/pad-top.png   |  Bin 0 -> 176 bytes
 .../Syllabes.wgt/img/parameters-bg.png             |  Bin 0 -> 4256 bytes
 .../interactivities/Syllabes.wgt/img/right.png     |  Bin 0 -> 27887 bytes
 .../Syllabes.wgt/img/slate-toolbar-edit.png        |  Bin 0 -> 1767 bytes
 .../Syllabes.wgt/img/slate-toolbar-help.png        |  Bin 0 -> 1697 bytes
 .../Syllabes.wgt/img/slate-toolbar-reload.png      |  Bin 0 -> 2289 bytes
 .../Syllabes.wgt/img/toolbar-edit.png              |  Bin 0 -> 732 bytes
 .../Syllabes.wgt/img/toolbar-help.png              |  Bin 0 -> 707 bytes
 .../Syllabes.wgt/img/toolbar-reload.png            |  Bin 0 -> 999 bytes
 .../interactivities/Syllabes.wgt/img/top.png       |  Bin 0 -> 37741 bytes
 .../interactivities/Syllabes.wgt/img/top_left.png  |  Bin 0 -> 5588 bytes
 .../interactivities/Syllabes.wgt/img/top_right.png |  Bin 0 -> 5761 bytes
 .../interactivities/Syllabes.wgt/index.html        |   97 +
 .../Syllabes.wgt/locales/fr/index.html             |   71 +
 .../Syllabes.wgt/locales/fr/scripts/wcontainer.js  |  209 +
 .../Syllabes.wgt/locales/ru/index.html             |   71 +
 .../Syllabes.wgt/locales/ru/scripts/wcontainer.js  |  194 +
 .../{spl-word.wgt => Syllabes.wgt}/scripts/ext.js  |    0
 .../scripts/jquery-1.6.2.min.js                    |    0
 .../scripts}/jquery-ui-1.8.9.custom.min.js         |    0
 .../Syllabes.wgt/scripts/spl-word.js               |  263 ++
 .../Syllabes.wgt/scripts/wcontainer.js             |  205 +
 .../interactivities/Syllabes.wgt/styles/master.css |   52 +
 .../styles/separator-activated.png                 |  Bin 2966 -> 2966 bytes
 .../styles/separator-hover.png                     |  Bin 2964 -> 2964 bytes
 .../Syllabes.wgt/styles/spl-word.css               |  266 ++
 .../styles/wcontainer.css                          |    0
 .../library/interactivities/Tables.wgt/config.xml  |   15 +
 .../interactivities/Tables.wgt/css/images/bg.png   |  Bin 0 -> 10043 bytes
 .../Tables.wgt/css/images/pad-bd.png               |  Bin 0 -> 9308 bytes
 .../Tables.wgt/css/images/parameters-bg.png        |  Bin 0 -> 4256 bytes
 .../Tables.wgt/css/images/rature.png               |  Bin 0 -> 2793 bytes
 .../Tables.wgt/css/images/sens-lecture.png         |  Bin 0 -> 1444 bytes
 .../Tables.wgt/css/images/slate-bd.png             |  Bin 0 -> 179255 bytes
 .../Tables.wgt/css/images/slate-toolbar-edit.png   |  Bin 0 -> 1767 bytes
 .../Tables.wgt/css/images/slate-toolbar-help.png   |  Bin 0 -> 1697 bytes
 .../Tables.wgt/css/images/slate-toolbar-reload.png |  Bin 0 -> 2289 bytes
 .../Tables.wgt/css/images/table-bg.png             |  Bin 0 -> 69454 bytes
 .../Tables.wgt/css/images/toolbar-edit.png         |  Bin 0 -> 732 bytes
 .../Tables.wgt/css/images/toolbar-help.png         |  Bin 0 -> 707 bytes
 .../Tables.wgt/css/images/toolbar-reload.png       |  Bin 0 -> 999 bytes
 .../interactivities/Tables.wgt/css/main.css        |  102 +
 .../interactivities/Tables.wgt/css/ubw-help.css    |   46 +
 .../interactivities/Tables.wgt/css/ubw-main.css    |  308 ++
 .../library/interactivities/Tables.wgt/help.html   |   58 +
 .../Tables.wgt/i18n/Messages.properties            |   16 +
 .../Tables.wgt/i18n/Messages_fr.properties         |   16 +
 .../library/interactivities/Tables.wgt/icon.png    |  Bin 0 -> 12405 bytes
 .../library/interactivities/Tables.wgt/index.html  |   38 +
 .../interactivities/Tables.wgt/js/help-template.js |   17 +
 .../Tables.wgt/js/help_fr-template.js              |   15 +
 .../Tables.wgt/js/lib/jquery-1.7.1.min.js          |    4 +
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../interactivities/Tables.wgt/js/lib/modernizr.js |    4 +
 .../interactivities/Tables.wgt/js/lib/mustache.js  |  536 +++
 .../interactivities/Tables.wgt/js/lib/ubw-main.js  |  269 ++
 .../library/interactivities/Tables.wgt/js/main.js  |   95 +
 .../interactivities/Tables.wgt/js/templates.js     |   46 +
 .../library/interactivities/Train.wgt/config.xml   |   15 +
 .../interactivities/Train.wgt/css/images/bg.png    |  Bin 0 -> 10043 bytes
 .../Train.wgt/css/images/pad-bd.png                |  Bin 0 -> 9308 bytes
 .../Train.wgt/css/images/parameters-bg.png         |  Bin 0 -> 4256 bytes
 .../Train.wgt/css/images/slate-bd.png              |  Bin 0 -> 179255 bytes
 .../Train.wgt/css/images/slate-toolbar-edit.png    |  Bin 0 -> 1767 bytes
 .../Train.wgt/css/images/slate-toolbar-help.png    |  Bin 0 -> 1697 bytes
 .../Train.wgt/css/images/slate-toolbar-reload.png  |  Bin 0 -> 2289 bytes
 .../Train.wgt/css/images/toolbar-edit.png          |  Bin 0 -> 732 bytes
 .../Train.wgt/css/images/toolbar-help.png          |  Bin 0 -> 707 bytes
 .../Train.wgt/css/images/toolbar-reload.png        |  Bin 0 -> 999 bytes
 .../library/interactivities/Train.wgt/css/main.css |   59 +
 .../interactivities/Train.wgt/css/ubw-help.css     |   46 +
 .../interactivities/Train.wgt/css/ubw-main.css     |  308 ++
 .../library/interactivities/Train.wgt/help.html    |   58 +
 .../Train.wgt/i18n/Messages.properties             |   15 +
 .../Train.wgt/i18n/Messages_fr.properties          |   15 +
 .../library/interactivities/Train.wgt/icon.png     |  Bin 0 -> 11340 bytes
 .../library/interactivities/Train.wgt/index.html   |   39 +
 .../interactivities/Train.wgt/js/help-template.js  |   16 +
 .../Train.wgt/js/help_fr-template.js               |   16 +
 .../Train.wgt/js/lib/jquery-1.7.1.min.js           |    4 +
 .../js/lib/jquery-ui-1.8.17.custom.min.js          |  253 ++
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../interactivities/Train.wgt/js/lib/modernizr.js  |    4 +
 .../interactivities/Train.wgt/js/lib/mustache.js   |  536 +++
 .../interactivities/Train.wgt/js/lib/ubw-main.js   |  279 ++
 .../library/interactivities/Train.wgt/js/main.js   |  117 +
 .../interactivities/Train.wgt/js/templates.js      |   49 +
 .../interactivities/Transformation.wgt/config.xml  |   15 +
 .../Transformation.wgt/css/images/bg.png           |  Bin 0 -> 10043 bytes
 .../Transformation.wgt/css/images/box-bg.png       |  Bin 0 -> 96060 bytes
 .../css/images/card-closed-bg.png                  |  Bin 0 -> 3804 bytes
 .../css/images/drop-label-bg.png                   |  Bin 0 -> 527 bytes
 .../css/images/drop-label-ondrop-bg.png            |  Bin 0 -> 485 bytes
 .../Transformation.wgt/css/images/pad-bd.png       |  Bin 0 -> 9308 bytes
 .../css/images/parameters-bg.png                   |  Bin 0 -> 4256 bytes
 .../Transformation.wgt/css/images/pile-bg.png      |  Bin 0 -> 4676 bytes
 .../css/images/pile-with-card-bg.png               |  Bin 0 -> 2015 bytes
 .../Transformation.wgt/css/images/slate-bd.png     |  Bin 0 -> 179255 bytes
 .../css/images/slate-toolbar-edit.png              |  Bin 0 -> 1767 bytes
 .../css/images/slate-toolbar-help.png              |  Bin 0 -> 1697 bytes
 .../css/images/slate-toolbar-reload.png            |  Bin 0 -> 2289 bytes
 .../Transformation.wgt/css/images/toolbar-edit.png |  Bin 0 -> 732 bytes
 .../Transformation.wgt/css/images/toolbar-help.png |  Bin 0 -> 707 bytes
 .../css/images/toolbar-reload.png                  |  Bin 0 -> 999 bytes
 .../Transformation.wgt/css/main.css                |  237 +
 .../Transformation.wgt/css/ubw-help.css            |   46 +
 .../Transformation.wgt/css/ubw-main.css            |  308 ++
 .../interactivities/Transformation.wgt/help.html   |   58 +
 .../Transformation.wgt/i18n/Messages.properties    |   19 +
 .../Transformation.wgt/i18n/Messages_fr.properties |   19 +
 .../interactivities/Transformation.wgt/icon.png    |  Bin 0 -> 11348 bytes
 .../interactivities/Transformation.wgt/index.html  |   39 +
 .../Transformation.wgt/js/help-template.js         |   19 +
 .../Transformation.wgt/js/help_fr-template.js      |   20 +
 .../Transformation.wgt/js/lib/jquery-1.7.1.min.js  |    4 +
 .../js/lib/jquery.i18n.properties-min-1.0.9.js     |    9 +
 .../Transformation.wgt/js/lib/modernizr.js         |    4 +
 .../Transformation.wgt/js/lib/mustache.js          |  536 +++
 .../Transformation.wgt/js/lib/ubw-main.js          |  269 ++
 .../interactivities/Transformation.wgt/js/main.js  |  207 +
 .../Transformation.wgt/js/templates.js             |   26 +
 .../associer_images.wgt/css/basic.css              |  236 -
 .../interactivities/associer_images.wgt/index.html |   70 -
 .../associer_images.wgt/js/script.js               |  658 ---
 .../associer_images.wgt/locales/fr/index.html      |   34 -
 .../associer_images.wgt/locales/fr/js/script.js    |  659 ---
 .../associer_images.wgt/locales/ru/index.html      |   34 -
 .../associer_images.wgt/locales/ru/js/script.js    |  659 ---
 .../associer_sounds.wgt/css/basic.css              |  238 -
 .../interactivities/associer_sounds.wgt/index.html |   60 -
 .../associer_sounds.wgt/js/script.js               |  784 ----
 .../associer_sounds.wgt/locales/fr/index.html      |   34 -
 .../associer_sounds.wgt/locales/fr/js/script.js    |  771 ----
 .../associer_sounds.wgt/locales/ru/index.html      |   34 -
 .../associer_sounds.wgt/locales/ru/js/script.js    |  771 ----
 .../categoriser_images.wgt/config.xml              |   17 -
 .../categoriser_images.wgt/css/basic.css           |  199 -
 .../categoriser_images.wgt/index.html              |   59 -
 .../categoriser_images.wgt/js/script.js            |  670 ---
 .../categoriser_images.wgt/locales/fr/index.html   |   35 -
 .../categoriser_images.wgt/locales/fr/js/script.js |  674 ---
 .../categoriser_images.wgt/locales/ru/index.html   |   35 -
 .../categoriser_images.wgt/locales/ru/js/script.js |  671 ---
 .../categoriser_text.wgt/config.xml                |   17 -
 .../categoriser_text.wgt/css/basic.css             |  205 -
 .../categoriser_text.wgt/img/green_point.png       |  Bin 721 -> 0 bytes
 .../categoriser_text.wgt/img/red_point.png         |  Bin 740 -> 0 bytes
 .../categoriser_text.wgt/index.html                |   60 -
 .../categoriser_text.wgt/js/script.js              |  611 ---
 .../categoriser_text.wgt/locales/fr/index.html     |   35 -
 .../categoriser_text.wgt/locales/fr/js/script.js   |  611 ---
 .../categoriser_text.wgt/locales/ru/index.html     |   35 -
 .../categoriser_text.wgt/locales/ru/js/script.js   |  611 ---
 .../library/interactivities/etudier.wgt/config.xml |   16 -
 .../interactivities/etudier.wgt/css/basic.css      |  257 --
 .../etudier.wgt/img/green_point.png                |  Bin 721 -> 0 bytes
 .../interactivities/etudier.wgt/img/red_point.png  |  Bin 740 -> 0 bytes
 .../library/interactivities/etudier.wgt/index.html |   67 -
 .../etudier.wgt/js/easySlider1.5.js                |  183 -
 .../interactivities/etudier.wgt/js/script.js       |  532 ---
 .../etudier.wgt/locales/fr/index.html              |   41 -
 .../etudier.wgt/locales/fr/js/script.js            |  534 ---
 .../etudier.wgt/locales/ru/index.html              |   41 -
 .../etudier.wgt/locales/ru/js/script.js            |  534 ---
 .../interactivities/ord-phrases.wgt/config.xml     |   16 -
 .../interactivities/ord-phrases.wgt/index.html     |   57 -
 .../ord-phrases.wgt/locales/fr/index.html          |   33 -
 .../ord-phrases.wgt/locales/fr/script/template2.js |  248 -
 .../ord-phrases.wgt/locales/ru/index.html          |   33 -
 .../ord-phrases.wgt/locales/ru/script/template2.js |  248 -
 .../ord-phrases.wgt/scripts/template2.js           |  249 --
 .../ord-phrases.wgt/styles/master.css              |   14 -
 .../ord-phrases.wgt/styles/of_puppets.css          |   62 -
 .../interactivities/ord-words.wgt/config.xml       |   16 -
 .../library/interactivities/ord-words.wgt/icon.png |  Bin 5481 -> 0 bytes
 .../interactivities/ord-words.wgt/index.html       |   60 -
 .../ord-words.wgt/locales/fr/index.html            |   31 -
 .../ord-words.wgt/locales/fr/scripts/template2.js  |  274 --
 .../ord-words.wgt/locales/ru/index.html            |   31 -
 .../ord-words.wgt/locales/ru/scripts/template2.js  |  274 --
 .../ord-words.wgt/scripts/template2.js             |  274 --
 .../ord-words.wgt/styles/master.css                |   14 -
 .../ord-words.wgt/styles/of_puppets.css            |   56 -
 .../ordonner_des_images.wgt/config.xml             |   16 -
 .../ordonner_des_images.wgt/css/basic.css          |  217 -
 .../ordonner_des_images.wgt/img/green_point.png    |  Bin 721 -> 0 bytes
 .../ordonner_des_images.wgt/img/red_point.png      |  Bin 740 -> 0 bytes
 .../ordonner_des_images.wgt/index.html             |   61 -
 .../ordonner_des_images.wgt/js/script.js           |  439 --
 .../ordonner_des_images.wgt/locales/fr/index.html  |   35 -
 .../locales/fr/js/script.js                        |  400 --
 .../ordonner_des_images.wgt/locales/ru/index.html  |   35 -
 .../locales/ru/js/script.js                        |  400 --
 .../ordonner_des_letters.wgt/config.xml            |   16 -
 .../ordonner_des_letters.wgt/css/basic.css         |  206 -
 .../ordonner_des_letters.wgt/img/green_point.png   |  Bin 721 -> 0 bytes
 .../ordonner_des_letters.wgt/img/red_point.png     |  Bin 740 -> 0 bytes
 .../ordonner_des_letters.wgt/index.html            |   60 -
 .../ordonner_des_letters.wgt/js/script.js          |  411 --
 .../ordonner_des_letters.wgt/locales/fr/index.html |   34 -
 .../locales/fr/js/script.js                        |  412 --
 .../ordonner_des_letters.wgt/locales/ru/index.html |   34 -
 .../locales/ru/js/script.js                        |  412 --
 .../interactivities/selectionner.wgt/config.xml    |   16 -
 .../interactivities/selectionner.wgt/css/basic.css |  236 -
 .../selectionner.wgt/img/green_point.png           |  Bin 721 -> 0 bytes
 .../selectionner.wgt/img/red_point.png             |  Bin 740 -> 0 bytes
 .../interactivities/selectionner.wgt/index.html    |   61 -
 .../interactivities/selectionner.wgt/js/script.js  |  401 --
 .../selectionner.wgt/locales/fr/index.html         |   35 -
 .../selectionner.wgt/locales/fr/js/script.js       |  401 --
 .../selectionner.wgt/locales/ru/index.html         |   35 -
 .../selectionner.wgt/locales/ru/js/script.js       |  401 --
 .../interactivities/spl-phrase.wgt/config.xml      |   16 -
 .../interactivities/spl-phrase.wgt/icon.png        |  Bin 5481 -> 0 bytes
 .../interactivities/spl-phrase.wgt/index.html      |   55 -
 .../spl-phrase.wgt/locales/fr/index.html           |   33 -
 .../locales/fr/scripts/wcontainer.js               |  259 --
 .../spl-phrase.wgt/locales/ru/index.html           |   33 -
 .../locales/ru/scripts/wcontainer.js               |  259 --
 .../interactivities/spl-phrase.wgt/scripts/app.js  |  183 -
 .../interactivities/spl-phrase.wgt/scripts/ext.js  |   41 -
 .../spl-phrase.wgt/scripts/wcontainer.js           |  259 --
 .../interactivities/spl-phrase.wgt/styles/app.css  |   39 -
 .../spl-phrase.wgt/styles/master.css               |   44 -
 .../interactivities/spl-text.wgt/config.xml        |   16 -
 .../library/interactivities/spl-text.wgt/icon.png  |  Bin 5481 -> 0 bytes
 .../interactivities/spl-text.wgt/index.html        |   58 -
 .../spl-text.wgt/locales/fr/index.html             |   33 -
 .../spl-text.wgt/locales/fr/scripts/wcontainer.js  |  259 --
 .../spl-text.wgt/locales/ru/index.html             |   33 -
 .../spl-text.wgt/locales/ru/scripts/wcontainer.js  |  259 --
 .../interactivities/spl-text.wgt/scripts/app2.js   |  193 -
 .../interactivities/spl-text.wgt/scripts/ext.js    |   41 -
 .../spl-text.wgt/scripts/wcontainer.js             |  259 --
 .../interactivities/spl-text.wgt/styles/app.css    |   39 -
 .../interactivities/spl-text.wgt/styles/master.css |   44 -
 .../spl-text.wgt/styles/wcontainer.css             |   19 -
 .../interactivities/spl-word.wgt/config.xml        |   16 -
 .../library/interactivities/spl-word.wgt/icon.png  |  Bin 5481 -> 0 bytes
 .../interactivities/spl-word.wgt/index.html        |   58 -
 .../spl-word.wgt/locales/fr/index.html             |   34 -
 .../spl-word.wgt/locales/fr/scripts/wcontainer.js  |  259 --
 .../spl-word.wgt/locales/ru/index.html             |   34 -
 .../spl-word.wgt/locales/ru/scripts/wcontainer.js  |  244 -
 .../spl-word.wgt/scripts/jquery-1.6.2.min.js       |   18 -
 .../scripts/jquery-ui-1.8.9.custom.min.js          |  781 ----
 .../spl-word.wgt/scripts/spl-word.js               |  116 -
 .../spl-word.wgt/scripts/wcontainer.js             |  244 -
 .../interactivities/spl-word.wgt/styles/master.css |   43 -
 .../spl-word.wgt/styles/spl-word.css               |   35 -
 .../spl-word.wgt/styles/wcontainer.css             |   19 -
 .../pictures/Actions/Coiffure/coiffure 1.png       |  Bin 0 -> 26845 bytes
 .../pictures/Actions/Coiffure/coiffure 2.png       |  Bin 0 -> 28450 bytes
 .../pictures/Actions/Coiffure/coiffure 3.png       |  Bin 0 -> 26858 bytes
 .../pictures/Actions/Coiffure/coiffure 4.png       |  Bin 0 -> 28920 bytes
 .../Actions/Extraire l'huile/huile_palme_1.png     |  Bin 0 -> 23344 bytes
 .../Actions/Extraire l'huile/huile_palme_2.png     |  Bin 0 -> 36102 bytes
 .../Actions/Extraire l'huile/huile_palme_3.png     |  Bin 0 -> 29633 bytes
 .../Actions/Extraire l'huile/huile_palme_4.png     |  Bin 0 -> 28891 bytes
 .../Actions/Extraire l'huile/huile_palme_5.png     |  Bin 0 -> 48865 bytes
 .../pictures/Actions/Fatou dessine/dessin_1.png    |  Bin 0 -> 19496 bytes
 .../pictures/Actions/Fatou dessine/dessin_2.png    |  Bin 0 -> 20620 bytes
 .../pictures/Actions/Fatou dessine/dessin_3.png    |  Bin 0 -> 24176 bytes
 .../pictures/Actions/Fatou dessine/dessin_4.png    |  Bin 0 -> 25054 bytes
 .../pictures/Actions/Fatou dessine/dessin_5.png    |  Bin 0 -> 19511 bytes
 .../pictures/Actions/Fatou dessine/dessin_6.png    |  Bin 0 -> 21597 bytes
 .../pictures/Actions/Ines malade/Microbes_1.png    |  Bin 0 -> 201223 bytes
 .../pictures/Actions/Ines malade/Microbes_2.png    |  Bin 0 -> 182128 bytes
 .../pictures/Actions/Ines malade/Microbes_3.png    |  Bin 0 -> 188486 bytes
 .../pictures/Actions/Ines malade/Microbes_4.png    |  Bin 0 -> 163881 bytes
 .../pictures/Actions/Ines malade/bacterie.svg      |  701 +++
 .../Actions/Jan court/jan_chien_court1.png         |  Bin 0 -> 827708 bytes
 .../Actions/Jan court/jan_chien_court2.png         |  Bin 0 -> 1038836 bytes
 .../Actions/Jan court/jan_chien_court3.png         |  Bin 0 -> 782553 bytes
 .../Actions/Jan court/jan_chien_court4.png         |  Bin 0 -> 672819 bytes
 .../pictures/Actions/Jeu de mains/main_1_doigt.png |  Bin 0 -> 3245 bytes
 .../pictures/Actions/Jeu de mains/main_2_doigt.png |  Bin 0 -> 4187 bytes
 .../pictures/Actions/Jeu de mains/main_3_doigt.png |  Bin 0 -> 4853 bytes
 .../pictures/Actions/Jeu de mains/main_4_doigt.png |  Bin 0 -> 5656 bytes
 .../pictures/Actions/Jeu de mains/main_5_doigt.png |  Bin 0 -> 5876 bytes
 .../Actions/Jeu de mains/main_droite_dessus.png    |  Bin 0 -> 27318 bytes
 .../Actions/Jeu de mains/main_droite_paume.png     |  Bin 0 -> 28437 bytes
 .../Actions/Jeu de mains/main_gauche_dessus.png    |  Bin 0 -> 26083 bytes
 .../Actions/Jeu de mains/main_gauche_paume.png     |  Bin 0 -> 29420 bytes
 .../pictures/Actions/Lavage mains/lavage1.png      |  Bin 0 -> 17421 bytes
 .../pictures/Actions/Lavage mains/lavage2.png      |  Bin 0 -> 21235 bytes
 .../pictures/Actions/Lavage mains/lavage3.png      |  Bin 0 -> 21618 bytes
 .../pictures/Actions/Lavage mains/lavage4.png      |  Bin 0 -> 23067 bytes
 .../pictures/Actions/Lavage mains/lavage5.png      |  Bin 0 -> 19712 bytes
 .../resources/library/pictures/Animaux/ane.png     |  Bin 0 -> 14171 bytes
 .../library/pictures/Animaux/antilope.png          |  Bin 0 -> 31139 bytes
 .../library/pictures/Animaux/autruche.png          |  Bin 0 -> 22191 bytes
 .../resources/library/pictures/Animaux/becasse.png |  Bin 0 -> 11876 bytes
 .../resources/library/pictures/Animaux/boeuf.png   |  Bin 0 -> 25631 bytes
 .../resources/library/pictures/Animaux/buffle.png  |  Bin 0 -> 18302 bytes
 .../library/pictures/Animaux/cameleon.png          |  Bin 0 -> 23613 bytes
 .../resources/library/pictures/Animaux/canard.png  |  Bin 0 -> 32377 bytes
 .../resources/library/pictures/Animaux/chacal.png  |  Bin 0 -> 22645 bytes
 .../resources/library/pictures/Animaux/chat.png    |  Bin 0 -> 18064 bytes
 .../library/pictures/Animaux/chenille.png          |  Bin 0 -> 21843 bytes
 .../resources/library/pictures/Animaux/cheval.png  |  Bin 0 -> 16121 bytes
 .../resources/library/pictures/Animaux/chien.png   |  Bin 0 -> 25348 bytes
 .../resources/library/pictures/Animaux/cochon.png  |  Bin 0 -> 19514 bytes
 .../resources/library/pictures/Animaux/coq.png     |  Bin 0 -> 32494 bytes
 .../resources/library/pictures/Animaux/corbeau.png |  Bin 0 -> 10387 bytes
 .../resources/library/pictures/Animaux/crapaud.png |  Bin 0 -> 10920 bytes
 .../library/pictures/Animaux/crocodile.png         |  Bin 0 -> 25509 bytes
 .../library/pictures/Animaux/elephant.png          |  Bin 0 -> 26874 bytes
 .../library/pictures/Animaux/flamand_rose.png      |  Bin 0 -> 10580 bytes
 .../resources/library/pictures/Animaux/girafe.png  |  Bin 0 -> 35976 bytes
 .../resources/library/pictures/Animaux/gnou.png    |  Bin 0 -> 42085 bytes
 .../library/pictures/Animaux/grenouille.png        |  Bin 0 -> 22499 bytes
 .../resources/library/pictures/Animaux/guepard.png |  Bin 0 -> 26647 bytes
 .../library/pictures/Animaux/hippopotame.png       |  Bin 0 -> 20552 bytes
 .../resources/library/pictures/Animaux/hyene.png   |  Bin 0 -> 46193 bytes
 .../resources/library/pictures/Animaux/jument.png  |  Bin 0 -> 13249 bytes
 .../resources/library/pictures/Animaux/lapin.png   |  Bin 0 -> 12692 bytes
 .../resources/library/pictures/Animaux/leopard.png |  Bin 0 -> 36926 bytes
 .../resources/library/pictures/Animaux/lezard.png  |  Bin 0 -> 19933 bytes
 .../resources/library/pictures/Animaux/lion.png    |  Bin 0 -> 35094 bytes
 .../library/pictures/Animaux/mangouste.png         |  Bin 0 -> 20702 bytes
 .../resources/library/pictures/Animaux/moineau.png |  Bin 0 -> 12827 bytes
 .../resources/library/pictures/Animaux/mouche.png  |  Bin 0 -> 50525 bytes
 .../library/pictures/Animaux/moustique.png         |  Bin 0 -> 14488 bytes
 .../resources/library/pictures/Animaux/mouton.png  |  Bin 0 -> 15596 bytes
 .../library/pictures/Animaux/ouistiti.png          |  Bin 0 -> 25388 bytes
 .../library/pictures/Animaux/panthere.png          |  Bin 0 -> 36779 bytes
 .../resources/library/pictures/Animaux/pelican.png |  Bin 0 -> 29628 bytes
 .../library/pictures/Animaux/perroquet.png         |  Bin 0 -> 14570 bytes
 .../library/pictures/Animaux/phacochere.png        |  Bin 0 -> 12434 bytes
 .../resources/library/pictures/Animaux/pintade.png |  Bin 0 -> 11280 bytes
 .../resources/library/pictures/Animaux/poule.png   |  Bin 0 -> 12798 bytes
 .../resources/library/pictures/Animaux/poule2.png  |  Bin 0 -> 16620 bytes
 .../resources/library/pictures/Animaux/python.png  |  Bin 0 -> 28950 bytes
 .../resources/library/pictures/Animaux/ratel.png   |  Bin 0 -> 10736 bytes
 .../library/pictures/Animaux/sauterelle.png        |  Bin 0 -> 11981 bytes
 .../resources/library/pictures/Animaux/souris.png  |  Bin 0 -> 18694 bytes
 .../resources/library/pictures/Animaux/tigre.png   |  Bin 0 -> 66478 bytes
 .../resources/library/pictures/Animaux/tortue.png  |  Bin 0 -> 19374 bytes
 .../resources/library/pictures/Animaux/vache.png   |  Bin 0 -> 15973 bytes
 .../resources/library/pictures/Animaux/vache2.png  |  Bin 0 -> 12238 bytes
 .../resources/library/pictures/Animaux/varan.png   |  Bin 0 -> 6430 bytes
 .../resources/library/pictures/Animaux/vautour.png |  Bin 0 -> 12240 bytes
 .../resources/library/pictures/Animaux/zebre.png   |  Bin 0 -> 38947 bytes
 .../library/pictures/Animaux/zebre_bebe.png        |  Bin 0 -> 25185 bytes
 .../pictures/Cartes/Afrique/Afrique satellite.jpg  |  Bin 0 -> 63903 bytes
 .../pictures/Cartes/Afrique/afrique contours.gif   |  Bin 0 -> 22251 bytes
 .../Cartes/Afrique/afrique hydrographie.gif        |  Bin 0 -> 34217 bytes
 .../Cartes/Afrique/afrique limites villes.gif      |  Bin 0 -> 50252 bytes
 .../pictures/Cartes/Afrique/afrique lmites.gif     |  Bin 0 -> 48810 bytes
 .../pictures/Cartes/Afrique/carte_afrique.gif      |  Bin 0 -> 24222 bytes
 .../pictures/Cartes/Europe/Europe_pays_muette.png  |  Bin 0 -> 462311 bytes
 .../pictures/Cartes/Europe/Europe_satellite.jpg    |  Bin 0 -> 103232 bytes
 .../pictures/Cartes/France/France satellite.jpg    |  Bin 0 -> 52745 bytes
 .../pictures/Cartes/France/france departements.gif |  Bin 0 -> 72575 bytes
 .../pictures/Cartes/France/france hydrographie.gif |  Bin 0 -> 38737 bytes
 .../pictures/Cartes/France/france regions.gif      |  Bin 0 -> 52874 bytes
 .../pictures/Cartes/France/france vierge.gif       |  Bin 0 -> 22412 bytes
 .../pictures/Cartes/France/france villes.gif       |  Bin 0 -> 51739 bytes
 .../pictures/Cartes/Monde/pays couleurs.gif        |  Bin 0 -> 73654 bytes
 .../library/pictures/Cartes/Monde/pays.gif         |  Bin 0 -> 78251 bytes
 .../library/pictures/Cartes/Monde/vierge.gif       |  Bin 0 -> 56180 bytes
 .../Cartes/Monde}/worldmap.svg                     |    0
 .../library/pictures/Decors/bananiers.jpg          |  Bin 0 -> 91188 bytes
 .../resources/library/pictures/Decors/campagne.png |  Bin 0 -> 26866 bytes
 .../resources/library/pictures/Decors/case1.png    |  Bin 0 -> 35564 bytes
 .../resources/library/pictures/Decors/case2.png    |  Bin 0 -> 29165 bytes
 .../library/pictures/Decors/case_fenetre.png       |  Bin 0 -> 52206 bytes
 .../resources/library/pictures/Decors/champs.png   |  Bin 0 -> 69663 bytes
 .../library/pictures/Decors/champs_haiti.jpg       |  Bin 0 -> 104611 bytes
 .../resources/library/pictures/Decors/chemin.png   |  Bin 0 -> 37525 bytes
 .../resources/library/pictures/Decors/chemin2.png  |  Bin 0 -> 27952 bytes
 .../library/pictures/Decors/flamboyant.jpg         |  Bin 0 -> 89536 bytes
 .../resources/library/pictures/Decors/lac.jpg      |  Bin 0 -> 95815 bytes
 .../resources/library/pictures/Decors/lac.png      |  Bin 0 -> 60026 bytes
 .../library/pictures/Decors/maison_riviere.jpg     |  Bin 0 -> 72931 bytes
 .../resources/library/pictures/Decors/marigot.jpg  |  Bin 0 -> 26615 bytes
 .../resources/library/pictures/Decors/palmiers.jpg |  Bin 0 -> 102283 bytes
 .../resources/library/pictures/Decors/plage.png    |  Bin 0 -> 42885 bytes
 .../library/pictures/Decors/porte_ouverte.png      |  Bin 0 -> 52912 bytes
 .../resources/library/pictures/Decors/village.jpg  |  Bin 0 -> 52027 bytes
 .../library/pictures/Decors/village_haiti.jpg      |  Bin 0 -> 110204 bytes
 .../library/pictures/Drapeaux/Algerie.svg          |    6 +
 .../library/pictures/Drapeaux/Belgique.png         |  Bin 0 -> 589 bytes
 .../resources/library/pictures/Drapeaux/Benin.png  |  Bin 0 -> 2958 bytes
 .../library/pictures/Drapeaux/Burkina_Faso.png     |  Bin 0 -> 7080 bytes
 .../library/pictures/Drapeaux/Burundi.svg          |   26 +
 .../library/pictures/Drapeaux/Cameroun.svg         |   16 +
 .../resources/library/pictures/Drapeaux/Canada.svg |   82 +
 .../library/pictures/Drapeaux/Centre-Afrique.svg   |    8 +
 .../library/pictures/Drapeaux/Comores.svg          |   14 +
 .../resources/library/pictures/Drapeaux/Congo.svg  |   10 +
 .../library/pictures/Drapeaux/Cote_d'Ivoire.png    |  Bin 0 -> 1269 bytes
 .../library/pictures/Drapeaux/Djibouti.svg         |    6 +
 .../resources/library/pictures/Drapeaux/Europe.png |  Bin 0 -> 20546 bytes
 .../resources/library/pictures/Drapeaux/France.png |  Bin 0 -> 2960 bytes
 .../resources/library/pictures/Drapeaux/Gabon.svg  |    6 +
 .../pictures/Drapeaux/Guinee equatoriale.svg       |   58 +
 .../resources/library/pictures/Drapeaux/Guinee.svg |    6 +
 .../resources/library/pictures/Drapeaux/Haiti.svg  |  226 +
 .../resources/library/pictures/Drapeaux/Liban.svg  |    6 +
 .../library/pictures/Drapeaux/Luxembourg.svg       |    7 +
 .../library/pictures/Drapeaux/Madagascar.png       |  Bin 0 -> 2957 bytes
 .../resources/library/pictures/Drapeaux/Mali.png   |  Bin 0 -> 1275 bytes
 .../resources/library/pictures/Drapeaux/Maroc.svg  |    5 +
 .../library/pictures/Drapeaux/Maurice.png          |  Bin 0 -> 2987 bytes
 .../library/pictures/Drapeaux/Mauritanie.svg       |   14 +
 .../resources/library/pictures/Drapeaux/Monaco.svg |    5 +
 .../resources/library/pictures/Drapeaux/Niger.png  |  Bin 0 -> 7307 bytes
 .../pictures/Drapeaux/Nouveau_Brunswick.svg        |  242 +
 .../library/pictures/Drapeaux/Ontario.svg          |  254 ++
 .../resources/library/pictures/Drapeaux/Quebec.svg |   11 +
 .../Drapeaux/Republique democratique du Congo.svg  |    7 +
 .../resources/library/pictures/Drapeaux/Rwanda.svg |   16 +
 .../library/pictures/Drapeaux/Senegal.png          |  Bin 0 -> 6903 bytes
 .../resources/library/pictures/Drapeaux/Suisse.png |  Bin 0 -> 821 bytes
 .../resources/library/pictures/Drapeaux/Tchad.png  |  Bin 0 -> 2961 bytes
 .../resources/library/pictures/Drapeaux/Togo.png   |  Bin 0 -> 7632 bytes
 .../library/pictures/Drapeaux/Tunisie.svg          |   19 +
 .../pictures/Fonds/Calendriers/Calendrier 2013.png |  Bin 0 -> 70839 bytes
 .../pictures/Fonds/Calendriers/Calendrier 2014.png |  Bin 0 -> 66895 bytes
 .../pictures/Fonds/Calendriers/Calendrier 2015.png |  Bin 0 -> 67822 bytes
 .../Fonds/Calendriers}/blank_timeline.svg          |    0
 .../Fonds/Calendriers}/calendrier_2012.png         |  Bin 105115 -> 105115 bytes
 .../Fonds/Calendriers/semainier.svg}               |    0
 .../Carroyage et lignes/Grille points noirs.gif    |  Bin 0 -> 16906 bytes
 .../Fonds/Carroyage et lignes/lignes bleues.png    |  Bin 0 -> 20574 bytes
 .../Fonds/Carroyage et lignes/maternelle.png       |  Bin 0 -> 3738 bytes
 .../Carroyage et lignes/quadrille grand noir.png   |  Bin 0 -> 24408 bytes
 .../Carroyage et lignes/quadrille grand vert.png   |  Bin 0 -> 24567 bytes
 .../Carroyage et lignes/quadrille petit bleu.png   |  Bin 0 -> 42002 bytes
 .../Carroyage et lignes/seyes demi feuille.gif     |  Bin 0 -> 9218 bytes
 .../pictures/Fonds/Carroyage et lignes/seyes4.png  |  Bin 0 -> 34911 bytes
 .../library/pictures/Fonds/Fonds colores/jaune.png |  Bin 0 -> 4045 bytes
 .../pictures/Fonds/Fonds colores/jaune_pale.png    |  Bin 0 -> 4044 bytes
 .../library/pictures/Fonds/Fonds colores/rouge.png |  Bin 0 -> 4234 bytes
 .../pictures/Fonds/Fonds colores/rouge_pale.png    |  Bin 0 -> 4045 bytes
 .../library/pictures/Fonds/Fonds colores/vert.png  |  Bin 0 -> 4045 bytes
 .../pictures/Fonds/Fonds colores/vert_pale.png     |  Bin 0 -> 4044 bytes
 .../pictures/Fonds/Fonds colores/violet.png        |  Bin 0 -> 4044 bytes
 .../pictures/Fonds/Fonds colores/violet_pale.png   |  Bin 0 -> 4045 bytes
 .../library/pictures/Fonds/Horloges/4 horloges.png |  Bin 0 -> 124011 bytes
 .../library/pictures/Fonds/Horloges/horloge.png    |  Bin 0 -> 36943 bytes
 .../Fonds/Mathematiques/axes 3D.svg}               |    0
 .../Fonds/Mathematiques/grille 2D.svg}             |    0
 .../Fonds/Mathematiques/grille 3D.svg}             |    0
 .../library/pictures/Fonds/Musique/cle de fa.png   |  Bin 0 -> 18249 bytes
 .../library/pictures/Fonds/Musique/cle de sol.png  |  Bin 0 -> 26166 bytes
 .../Fonds/Musique/musique.svg}                     |    0
 .../library/pictures/Fonds/Musique/piano.png       |  Bin 0 -> 28428 bytes
 .../pictures/Fonds/Plateaux jeux/Alquerque.svg     |   31 +
 .../pictures/Fonds/Plateaux jeux/jeu d'echec.svg   |  600 +++
 .../pictures/Fonds/Plateaux jeux/jeu d'echelle.jpg |  Bin 0 -> 96378 bytes
 .../pictures/Fonds/Plateaux jeux/jeu de dames.gif  |  Bin 0 -> 11037 bytes
 .../Fonds/Plateaux jeux/jeu de petits chevaux.jpg  |  Bin 0 -> 55208 bytes
 .../Fonds/Plateaux jeux/labyrinthe-gout3a.jpg      |  Bin 0 -> 32054 bytes
 .../pictures/Fonds/Terrains Sports/Basketball.png  |  Bin 0 -> 71372 bytes
 .../pictures/Fonds/Terrains Sports/Handball.JPG    |  Bin 0 -> 24680 bytes
 .../pictures/Fonds/Terrains Sports/Rugby.png       |  Bin 0 -> 39933 bytes
 .../pictures/Fonds/Terrains Sports/football.png    |  Bin 0 -> 41498 bytes
 .../Fonds/Terrains Sports/hockey_sur_glace.svg     |  107 +
 .../resources/library/pictures/Meteo/couvert.png   |  Bin 0 -> 34391 bytes
 .../resources/library/pictures/Meteo/neige.png     |  Bin 0 -> 25502 bytes
 .../resources/library/pictures/Meteo/nuageux.png   |  Bin 0 -> 27867 bytes
 .../resources/library/pictures/Meteo/orage.png     |  Bin 0 -> 17307 bytes
 .../resources/library/pictures/Meteo/pluie.png     |  Bin 0 -> 21429 bytes
 .../resources/library/pictures/Meteo/soleil.png    |  Bin 0 -> 20984 bytes
 .../library/pictures/Objets/objet_ballon.png       |  Bin 0 -> 5591 bytes
 .../library/pictures/Objets/objet_reveil.png       |  Bin 0 -> 39261 bytes
 .../library/pictures/Personnages/Moussa_vieux.png  |  Bin 0 -> 23889 bytes
 .../library/pictures/Personnages/abdou.png         |  Bin 0 -> 11261 bytes
 .../pictures/Personnages/ali__en_tailleur.png      |  Bin 0 -> 12641 bytes
 .../library/pictures/Personnages/ali_attends.png   |  Bin 0 -> 10843 bytes
 .../library/pictures/Personnages/ali_ballon.png    |  Bin 0 -> 18735 bytes
 .../library/pictures/Personnages/ali_bananes.png   |  Bin 0 -> 11568 bytes
 .../library/pictures/Personnages/ali_barbu.png     |  Bin 0 -> 16011 bytes
 .../library/pictures/Personnages/ali_jupe.png      |  Bin 0 -> 13195 bytes
 .../pictures/Personnages/ali_parle_orange.png      |  Bin 0 -> 11585 bytes
 .../pictures/Personnages/ali_parle_violet.png      |  Bin 0 -> 11829 bytes
 .../library/pictures/Personnages/ali_porte.png     |  Bin 0 -> 28574 bytes
 .../library/pictures/Personnages/ali_sac_ecole.png |  Bin 0 -> 22341 bytes
 .../pictures/Personnages/ana_bras_ecarte.png       |  Bin 0 -> 97278 bytes
 .../pictures/Personnages/ana_main_croise_gd.png    |  Bin 0 -> 89779 bytes
 .../pictures/Personnages/ana_presentation.png      |  Bin 0 -> 93269 bytes
 .../library/pictures/Personnages/fatou_assise.png  |  Bin 0 -> 14273 bytes
 .../pictures/Personnages/fatou_bras_leve.png       |  Bin 0 -> 16245 bytes
 .../library/pictures/Personnages/fatou_debout.png  |  Bin 0 -> 11302 bytes
 .../library/pictures/Personnages/fratrie.png       |  Bin 0 -> 43082 bytes
 .../pictures/Personnages/jan_bras_ecarte.png       |  Bin 0 -> 106961 bytes
 .../pictures/Personnages/jan_presentation.png      |  Bin 0 -> 95055 bytes
 .../library/pictures/Personnages/medecin.png       |  Bin 0 -> 29347 bytes
 .../library/pictures/Pictogrammes/oeil.png         |  Bin 0 -> 989 bytes
 .../library/pictures/Pictogrammes/oeil_barre.png   |  Bin 0 -> 4131 bytes
 .../library/pictures/Pictogrammes/oreille.png      |  Bin 0 -> 2587 bytes
 .../pictures/Pictogrammes/oreille_barre.png        |  Bin 0 -> 3487 bytes
 .../pictures/Pictogrammes/picto_choisis.png        |  Bin 0 -> 4543 bytes
 .../pictures/Pictogrammes/picto_deplace.png        |  Bin 0 -> 4900 bytes
 .../library/pictures/Pictogrammes/picto_ecoute.png |  Bin 0 -> 4707 bytes
 .../library/pictures/Pictogrammes/picto_ecrit.png  |  Bin 0 -> 5841 bytes
 .../pictures/Pictogrammes/picto_explore.png        |  Bin 0 -> 4837 bytes
 .../library/pictures/Pictogrammes/picto_livre.png  |  Bin 0 -> 6823 bytes
 .../library/pictures/Pictogrammes/picto_livre2.png |  Bin 0 -> 5798 bytes
 .../library/pictures/Pictogrammes/picto_parle.png  |  Bin 0 -> 4315 bytes
 .../pictures/Pictogrammes/picto_regarde.png        |  Bin 0 -> 6081 bytes
 .../pictures/Pictogrammes/picto_regarde_ecoute.png |  Bin 0 -> 5796 bytes
 .../pictures/Pictogrammes/picto_reperer.png        |  Bin 0 -> 4894 bytes
 .../library/pictures/Vegetaux/Bananier.png         |  Bin 0 -> 121984 bytes
 .../resources/library/pictures/Vegetaux/avocat.png |  Bin 0 -> 101275 bytes
 .../library/pictures/Vegetaux/avocatier.png        |  Bin 0 -> 157886 bytes
 .../resources/library/pictures/Vegetaux/banane.png |  Bin 0 -> 34711 bytes
 .../pictures/Vegetaux/croissance_avocat.png        |  Bin 0 -> 112551 bytes
 .../pictures/Vegetaux/croissance_bananne.png       |  Bin 0 -> 71660 bytes
 .../pictures/Vegetaux/croissance_goyave.png        |  Bin 0 -> 84198 bytes
 .../pictures/Vegetaux/croissance_mangue.png        |  Bin 0 -> 128010 bytes
 .../resources/library/pictures/Vegetaux/goyave.png |  Bin 0 -> 89818 bytes
 .../library/pictures/Vegetaux/goyavier.png         |  Bin 0 -> 160828 bytes
 .../resources/library/pictures/Vegetaux/mangue.png |  Bin 0 -> 85930 bytes
 .../library/pictures/Vegetaux/manguier_mangue.png  |  Bin 0 -> 49727 bytes
 .../resources/library/pictures/Vegetaux/manioc.png |  Bin 0 -> 63832 bytes
 .../resources/library/pictures/Vegetaux/piment.png |  Bin 0 -> 54394 bytes
 .../library/{image => pictures}/open-sankore.svg   |    0
 .../config.xml                                     |    0
 .../library/search/Audio Planete.wgs/css/basic.css |  315 ++
 .../library/search/Audio Planete.wgs/icon.png      |  Bin 0 -> 8966 bytes
 .../search/Audio Planete.wgs/icon.thumbnail.png    |  Bin 0 -> 8966 bytes
 .../images/down.png                                |  Bin 1192 -> 1192 bytes
 .../images/greySquare.png                          |  Bin 214 -> 214 bytes
 .../Audio Planete.wgs}/images/icon-close.png       |  Bin 1507 -> 1507 bytes
 .../images/popupBack.png                           |  Bin 931 -> 931 bytes
 .../images/search.png                              |  Bin 1797 -> 1797 bytes
 .../search/Audio Planete.wgs/images/search_app.png |  Bin 0 -> 1104 bytes
 .../Audio Planete.wgs/images/thumbnail_icon.png    |  Bin 0 -> 10376 bytes
 .../images/trgDown.png                             |  Bin 475 -> 475 bytes
 .../images/trgUp.png                               |  Bin 448 -> 448 bytes
 .../images/up.png                                  |  Bin 1196 -> 1196 bytes
 .../library/search/Audio Planete.wgs/index.html    |  253 ++
 .../Audio Planete.wgs/scripts/jquery-1.6.2.min.js  |   18 +
 .../config.xml                                     |    0
 .../library/search/Flash Planete.wgs/css/basic.css |  315 ++
 .../library/search/Flash Planete.wgs/icon.png      |  Bin 0 -> 8869 bytes
 .../search/Flash Planete.wgs/icon.thumbnail.png    |  Bin 0 -> 8869 bytes
 .../images/down.png                                |  Bin 1192 -> 1192 bytes
 .../images/greySquare.png                          |  Bin 214 -> 214 bytes
 .../Flash Planete.wgs}/images/icon-close.png       |  Bin 1507 -> 1507 bytes
 .../images/popupBack.png                           |  Bin 931 -> 931 bytes
 .../images/search.png                              |  Bin 1797 -> 1797 bytes
 .../search/Flash Planete.wgs/images/search_app.png |  Bin 0 -> 1104 bytes
 .../Flash Planete.wgs/images/thumbnail_icon.png    |  Bin 0 -> 11435 bytes
 .../images/trgDown.png                             |  Bin 475 -> 475 bytes
 .../images/trgUp.png                               |  Bin 448 -> 448 bytes
 .../images/up.png                                  |  Bin 1196 -> 1196 bytes
 .../library/search/Flash Planete.wgs/index.html    |  253 ++
 .../Flash Planete.wgs/scripts/jquery-1.6.2.min.js  |   18 +
 .../library/search/Google images.wgs/config.xml    |    2 +-
 .../library/search/Google images.wgs/css/basic.css |  503 ++-
 .../search/Google images.wgs/images/search_app.png |  Bin 0 -> 1104 bytes
 .../library/search/Google images.wgs/index.html    |  921 ++--
 .../search/Google images.wgs/locales/locales.js    |   80 +
 .../Google images.wgs/scripts/jquery-1.6.2.min.js  |   34 +-
 .../select/jquery.selectBox-arrow.gif              |  Bin 0 -> 64 bytes
 .../Google images.wgs/select/jquery.selectBox.css  |  150 +
 .../Google images.wgs/select/jquery.selectBox.js   |  916 ++++
 .../select/jquery.selectBox.min.js                 |    2 +
 .../config.xml                                     |    0
 .../library/search/Image Planete.wgs/css/basic.css |  314 ++
 .../library/search/Image Planete.wgs/icon.png      |  Bin 0 -> 9854 bytes
 .../search/Image Planete.wgs/icon.thumbnail.png    |  Bin 0 -> 9854 bytes
 .../images/down.png                                |  Bin 1192 -> 1192 bytes
 .../images/greySquare.png                          |  Bin 214 -> 214 bytes
 .../Image Planete.wgs}/images/icon-close.png       |  Bin 1507 -> 1507 bytes
 .../images/popupBack.png                           |  Bin 931 -> 931 bytes
 .../images/search.png                              |  Bin 1797 -> 1797 bytes
 .../search/Image Planete.wgs/images/search_app.png |  Bin 0 -> 1104 bytes
 .../images/trgDown.png                             |  Bin 475 -> 475 bytes
 .../images/trgUp.png                               |  Bin 448 -> 448 bytes
 .../images/up.png                                  |  Bin 1196 -> 1196 bytes
 .../library/search/Image Planete.wgs/index.html    |  268 ++
 .../Image Planete.wgs/scripts/jquery-1.6.2.min.js  |   18 +
 .../config.xml                                     |    0
 .../library/search/Video Planete.wgs/css/basic.css |  315 ++
 .../library/search/Video Planete.wgs/icon.png      |  Bin 0 -> 9195 bytes
 .../search/Video Planete.wgs/icon.thumbnail.png    |  Bin 0 -> 9195 bytes
 .../images/down.png                                |  Bin 1192 -> 1192 bytes
 .../images/greySquare.png                          |  Bin 214 -> 214 bytes
 .../Video Planete.wgs}/images/icon-close.png       |  Bin 1507 -> 1507 bytes
 .../images/popupBack.png                           |  Bin 931 -> 931 bytes
 .../images/search.png                              |  Bin 1797 -> 1797 bytes
 .../search/Video Planete.wgs/images/search_app.png |  Bin 0 -> 1104 bytes
 .../Video Planete.wgs/images/thumbnail_icon.png    |  Bin 0 -> 10911 bytes
 .../images/trgDown.png                             |  Bin 475 -> 475 bytes
 .../images/trgUp.png                               |  Bin 448 -> 448 bytes
 .../images/up.png                                  |  Bin 1196 -> 1196 bytes
 .../library/search/Video Planete.wgs/index.html    |  254 ++
 .../Video Planete.wgs/scripts/jquery-1.6.2.min.js  |   18 +
 .../resources/library/shape/bulle blanche idee.svg |    0
 .../resources/library/shape/bulle bleue idee.svg   |    0
 .../resources/library/shape/bulle grise idee.svg   |    0
 .../resources/library/shape/bulle rouge idee.svg   |    0
 .../resources/library/shape/bulle vide idee.svg    |    0
 .../resources/library/shape/carre blanc arr.svg    |    0
 .../resources/library/shape/carre blanc.svg        |    0
 .../resources/library/shape/carre bleu arr.svg     |    0
 .../resources/library/shape/carre bleu.svg         |    0
 .../resources/library/shape/carre gris arr.svg     |    0
 .../resources/library/shape/carre gris.svg         |    0
 .../resources/library/shape/carre rouge arr.svg    |    0
 .../resources/library/shape/carre rouge.svg        |    0
 .../resources/library/shape/carre vide arr.svg     |    0
 .../resources/library/shape/carre vide.svg         |    0
 .../library/shape/carr\303\251 blanc arr.svg"      |  106 -
 .../library/shape/carr\303\251 blanc.svg"          |  113 -
 .../resources/library/shape/etoile blanche arr.svg |    0
 .../resources/library/shape/etoile blanche.svg     |    0
 .../resources/library/shape/etoile bleue arr.svg   |    0
 .../resources/library/shape/etoile bleue.svg       |    0
 .../resources/library/shape/etoile grise arr.svg   |    0
 .../resources/library/shape/etoile grise.svg       |    0
 .../resources/library/shape/etoile rouge arr.svg   |    0
 .../resources/library/shape/etoile rouge.svg       |    0
 .../resources/library/shape/etoile vide arr.svg    |    0
 .../resources/library/shape/etoile vide.svg        |    0
 .../resources/library/shape/fleche blanche bas.svg |    0
 .../library/shape/fleche blanche droite.svg        |    0
 .../library/shape/fleche blanche gauche.svg        |    0
 .../library/shape/fleche blanche haut.svg          |    0
 .../resources/library/shape/fleche bleue bas.svg   |    0
 .../library/shape/fleche bleue droite.svg          |    0
 .../library/shape/fleche bleue gauche.svg          |    0
 .../resources/library/shape/fleche bleue haut.svg  |    0
 .../resources/library/shape/fleche grise bas.svg   |    0
 .../library/shape/fleche grise droite.svg          |    0
 .../library/shape/fleche grise gauche.svg          |    0
 .../resources/library/shape/fleche grise haut.svg  |    0
 .../resources/library/shape/fleche rouge bas.svg   |    0
 .../library/shape/fleche rouge droite.svg          |    0
 .../library/shape/fleche rouge gauche.svg          |    0
 .../resources/library/shape/fleche rouge haut.svg  |    0
 .../resources/library/shape/fleche vide bas.svg    |    0
 .../resources/library/shape/fleche vide droite.svg |    0
 .../resources/library/shape/fleche vide gauche.svg |    0
 .../resources/library/shape/fleche vide haut.svg   |    0
 .../library/shape/fl\303\250che blanche bas.svg"   |  102 -
 .../shape/fl\303\250che blanche droite.svg"        |  103 -
 .../shape/fl\303\250che blanche gauche.svg"        |  102 -
 .../library/shape/fl\303\250che blanche haut.svg"  |  103 -
 .../library/shape/fl\303\250che bleue bas.svg"     |   33 -
 .../library/shape/fl\303\250che bleue droite.svg"  |   33 -
 .../library/shape/fl\303\250che bleue gauche.svg"  |   33 -
 .../library/shape/fl\303\250che bleue haut.svg"    |   34 -
 .../library/shape/fl\303\250che grise bas.svg"     |   34 -
 .../library/shape/fl\303\250che grise droite.svg"  |   34 -
 .../library/shape/fl\303\250che grise gauche.svg"  |   34 -
 .../library/shape/fl\303\250che grise haut.svg"    |   34 -
 .../library/shape/fl\303\250che rouge bas.svg"     |   34 -
 .../library/shape/fl\303\250che rouge droite.svg"  |   34 -
 .../library/shape/fl\303\250che rouge gauche.svg"  |   34 -
 .../library/shape/fl\303\250che rouge haut.svg"    |   34 -
 .../library/shape/fl\303\250che vide bas.svg"      |   16 -
 .../library/shape/fl\303\250che vide droite.svg"   |   16 -
 .../library/shape/fl\303\250che vide gauche.svg"   |   16 -
 .../library/shape/fl\303\250che vide haut.svg"     |   16 -
 .../library/shape/\303\251toile blanche arr.svg"   |  140 -
 .../library/shape/\303\251toile blanche.svg"       |  124 -
 .../library/shape/\303\251toile bleue arr.svg"     |   38 -
 .../library/shape/\303\251toile bleue.svg"         |   29 -
 .../library/shape/\303\251toile vide arr.svg"      |   18 -
 .../library/shape/\303\251toile vide.svg"          |   14 -
 .../library/videos/Sciences/video_bourgeon.mpg     |  Bin 0 -> 407552 bytes
 Sankore-3.1/resources/sankore.qrc                  |   27 +-
 Sankore-3.1/resources/style.qss                    |   31 +-
 Sankore-3.1/resources/win/sankore.rc               |    4 +-
 Sankore-3.1/resources/windows/xpdfrc               |   14 +
 Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp    |  469 ++-
 Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h      |   42 +-
 Sankore-3.1/src/adaptors/UBExportAdaptor.cpp       |   28 +-
 Sankore-3.1/src/adaptors/UBExportAdaptor.h         |   19 +-
 Sankore-3.1/src/adaptors/UBExportCFF.cpp           |   23 +
 Sankore-3.1/src/adaptors/UBExportCFF.h             |   18 +-
 Sankore-3.1/src/adaptors/UBExportDocument.cpp      |   17 +-
 Sankore-3.1/src/adaptors/UBExportDocument.h        |   17 +-
 Sankore-3.1/src/adaptors/UBExportFullPDF.cpp       |   52 +-
 Sankore-3.1/src/adaptors/UBExportFullPDF.h         |   17 +-
 Sankore-3.1/src/adaptors/UBExportPDF.cpp           |   17 +-
 Sankore-3.1/src/adaptors/UBExportPDF.h             |   17 +-
 Sankore-3.1/src/adaptors/UBExportWeb.cpp           |   17 +-
 Sankore-3.1/src/adaptors/UBExportWeb.h             |   17 +-
 Sankore-3.1/src/adaptors/UBImportAdaptor.cpp       |   37 +-
 Sankore-3.1/src/adaptors/UBImportAdaptor.h         |   49 +-
 Sankore-3.1/src/adaptors/UBImportCFF.cpp           |   41 +-
 Sankore-3.1/src/adaptors/UBImportCFF.h             |   42 +-
 Sankore-3.1/src/adaptors/UBImportDocument.cpp      |  112 +-
 Sankore-3.1/src/adaptors/UBImportDocument.h        |   21 +-
 Sankore-3.1/src/adaptors/UBImportImage.cpp         |   61 +-
 Sankore-3.1/src/adaptors/UBImportImage.h           |   23 +-
 Sankore-3.1/src/adaptors/UBImportPDF.cpp           |   77 +-
 Sankore-3.1/src/adaptors/UBImportPDF.h             |   23 +-
 .../src/adaptors/UBImportVirtualPrinter.cpp        |   17 +-
 Sankore-3.1/src/adaptors/UBIniFileParser.cpp       |   17 +-
 Sankore-3.1/src/adaptors/UBIniFileParser.h         |   17 +-
 .../src/adaptors/UBMetadataDcSubsetAdaptor.cpp     |   17 +-
 .../src/adaptors/UBMetadataDcSubsetAdaptor.h       |   17 +-
 Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp    |  728 +++-
 Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h      |   57 +-
 Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp    |  353 +-
 Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h      |   72 +-
 Sankore-3.1/src/adaptors/UBWebPublisher.cpp        |   17 +-
 Sankore-3.1/src/adaptors/UBWebPublisher.h          |   17 +-
 .../adaptors/publishing/UBDocumentPublisher.cpp    | 1637 ++++----
 .../src/adaptors/publishing/UBDocumentPublisher.h  |  251 +-
 .../adaptors/publishing/UBSvgSubsetRasterizer.cpp  |   17 +-
 .../adaptors/publishing/UBSvgSubsetRasterizer.h    |   17 +-
 Sankore-3.1/src/api/UBLibraryAPI.cpp               |   19 +-
 Sankore-3.1/src/api/UBLibraryAPI.h                 |   17 +-
 Sankore-3.1/src/api/UBW3CWidgetAPI.cpp             |  146 +-
 Sankore-3.1/src/api/UBW3CWidgetAPI.h               |   29 +-
 Sankore-3.1/src/api/UBWidgetMessageAPI.cpp         |   34 +-
 Sankore-3.1/src/api/UBWidgetMessageAPI.h           |   21 +-
 Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp        |   68 +-
 Sankore-3.1/src/api/UBWidgetUniboardAPI.h          |   22 +-
 Sankore-3.1/src/board/UBBoardController.cpp        | 1041 +++--
 Sankore-3.1/src/board/UBBoardController.h          |  100 +-
 Sankore-3.1/src/board/UBBoardPaletteManager.cpp    |  152 +-
 Sankore-3.1/src/board/UBBoardPaletteManager.h      |   62 +-
 Sankore-3.1/src/board/UBBoardView.cpp              | 2672 +++++++-----
 Sankore-3.1/src/board/UBBoardView.h                |   77 +-
 Sankore-3.1/src/board/UBDrawingController.cpp      |   51 +-
 Sankore-3.1/src/board/UBDrawingController.h        |   37 +-
 Sankore-3.1/src/board/UBFeaturesController.cpp     | 1149 ++++--
 Sankore-3.1/src/board/UBFeaturesController.h       |  257 +-
 Sankore-3.1/src/board/UBLibraryController.cpp      |  838 ----
 Sankore-3.1/src/board/UBLibraryController.h        |  185 -
 Sankore-3.1/src/board/board.pri                    |    2 -
 Sankore-3.1/src/core/UB.h                          |   56 +-
 Sankore-3.1/src/core/UBApplication.cpp             |  192 +-
 Sankore-3.1/src/core/UBApplication.h               |   42 +-
 Sankore-3.1/src/core/UBApplicationController.cpp   |  130 +-
 Sankore-3.1/src/core/UBApplicationController.h     |   24 +-
 Sankore-3.1/src/core/UBDisplayManager.cpp          |   37 +-
 Sankore-3.1/src/core/UBDisplayManager.h            |   17 +-
 Sankore-3.1/src/core/UBDocumentManager.cpp         |  261 +-
 Sankore-3.1/src/core/UBDocumentManager.h           |   21 +-
 Sankore-3.1/src/core/UBDownloadManager.cpp         |  164 +-
 Sankore-3.1/src/core/UBDownloadManager.h           |   53 +-
 Sankore-3.1/src/core/UBDownloadThread.cpp          |   18 +-
 Sankore-3.1/src/core/UBDownloadThread.h            |   18 +-
 Sankore-3.1/src/core/UBIdleTimer.cpp               |   17 +-
 Sankore-3.1/src/core/UBIdleTimer.h                 |   17 +-
 Sankore-3.1/src/core/UBMimeData.cpp                |   17 +-
 Sankore-3.1/src/core/UBMimeData.h                  |   17 +-
 Sankore-3.1/src/core/UBPersistenceManager.cpp      |  301 +-
 Sankore-3.1/src/core/UBPersistenceManager.h        |   40 +-
 Sankore-3.1/src/core/UBPreferencesController.cpp   |   68 +-
 Sankore-3.1/src/core/UBPreferencesController.h     |   24 +-
 Sankore-3.1/src/core/UBSceneCache.cpp              |   22 +-
 Sankore-3.1/src/core/UBSceneCache.h                |   20 +-
 Sankore-3.1/src/core/UBSetting.cpp                 |   21 +-
 Sankore-3.1/src/core/UBSetting.h                   |   18 +-
 Sankore-3.1/src/core/UBSettings.cpp                |  156 +-
 Sankore-3.1/src/core/UBSettings.h                  |   63 +-
 Sankore-3.1/src/core/main.cpp                      |   24 +-
 Sankore-3.1/src/core/memcheck.h                    |   17 +-
 .../src/customWidgets/UBActionableWidget.cpp       |   17 +-
 Sankore-3.1/src/customWidgets/UBActionableWidget.h |   17 +-
 Sankore-3.1/src/customWidgets/UBMediaWidget.cpp    |   48 +-
 Sankore-3.1/src/customWidgets/UBMediaWidget.h      |   18 +-
 Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp  |   17 +-
 Sankore-3.1/src/desktop/UBCustomCaptureWindow.h    |   17 +-
 .../src/desktop/UBDesktopAnnotationController.cpp  |  170 +-
 .../src/desktop/UBDesktopAnnotationController.h    |   22 +-
 Sankore-3.1/src/desktop/UBDesktopEraserPalette.cpp |   48 -
 Sankore-3.1/src/desktop/UBDesktopEraserPalette.h   |   29 -
 Sankore-3.1/src/desktop/UBDesktopMarkerPalette.cpp |   61 -
 Sankore-3.1/src/desktop/UBDesktopMarkerPalette.h   |   29 -
 Sankore-3.1/src/desktop/UBDesktopPalette.cpp       |   55 +-
 Sankore-3.1/src/desktop/UBDesktopPalette.h         |   33 +-
 Sankore-3.1/src/desktop/UBDesktopPenPalette.cpp    |  103 -
 Sankore-3.1/src/desktop/UBDesktopPenPalette.h      |   41 -
 .../src/desktop/UBDesktopPropertyPalette.cpp       |  169 +
 Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h |   75 +
 Sankore-3.1/src/desktop/UBWindowCapture.h          |   17 +-
 .../src/desktop/UBWindowCaptureDelegate_win.cpp    |   18 +-
 .../src/desktop/UBWindowCaptureDelegate_win.h      |   18 +-
 Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp  |   17 +-
 Sankore-3.1/src/desktop/UBWindowCapture_win.cpp    |   17 +-
 Sankore-3.1/src/desktop/desktop.pri                |   10 +-
 Sankore-3.1/src/document/UBDocumentContainer.cpp   |  145 +
 Sankore-3.1/src/document/UBDocumentContainer.h     |   71 +
 Sankore-3.1/src/document/UBDocumentController.cpp  | 3342 +++++++-------
 Sankore-3.1/src/document/UBDocumentController.h    |  275 +-
 Sankore-3.1/src/document/UBDocumentProxy.cpp       |  453 +-
 Sankore-3.1/src/document/UBDocumentProxy.h         |  183 +-
 Sankore-3.1/src/document/document.pri              |   12 +-
 Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp   |   17 +-
 Sankore-3.1/src/domain/UBAbstractUndoCommand.h     |   20 +-
 Sankore-3.1/src/domain/UBAbstractWidget.cpp        |  471 --
 Sankore-3.1/src/domain/UBAbstractWidget.h          |  155 -
 Sankore-3.1/src/domain/UBAngleWidget.cpp           |   48 -
 Sankore-3.1/src/domain/UBAngleWidget.h             |   25 -
 Sankore-3.1/src/domain/UBAppleWidget.cpp           |   77 -
 Sankore-3.1/src/domain/UBAppleWidget.h             |   36 -
 Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp   |   17 +-
 Sankore-3.1/src/domain/UBDocumentUndoCommand.h     |   17 +-
 Sankore-3.1/src/domain/UBGraphicsAudioItem.cpp     |  122 -
 Sankore-3.1/src/domain/UBGraphicsAudioItem.h       |   66 +-
 .../src/domain/UBGraphicsAudioItemDelegate.cpp     |  124 +-
 .../src/domain/UBGraphicsAudioItemDelegate.h       |   18 +-
 Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp |  644 ++-
 Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h   |   35 +-
 .../src/domain/UBGraphicsGroupContainerItem.cpp    |  384 ++
 .../src/domain/UBGraphicsGroupContainerItem.h      |   79 +
 .../UBGraphicsGroupContainerItemDelegate.cpp       |   94 +
 .../domain/UBGraphicsGroupContainerItemDelegate.h  |   50 +
 Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp  |  855 ++++-
 Sankore-3.1/src/domain/UBGraphicsItemDelegate.h    |  154 +-
 .../src/domain/UBGraphicsItemGroupUndoCommand.cpp  |   80 +
 .../src/domain/UBGraphicsItemGroupUndoCommand.h    |   52 +
 .../domain/UBGraphicsItemTransformUndoCommand.cpp  |   17 +-
 .../domain/UBGraphicsItemTransformUndoCommand.h    |   19 +-
 .../src/domain/UBGraphicsItemUndoCommand.cpp       |  149 +-
 Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h |   29 +-
 Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp     |  259 +-
 Sankore-3.1/src/domain/UBGraphicsMediaItem.h       |   83 +-
 .../src/domain/UBGraphicsMediaItemDelegate.cpp     |  283 ++
 .../src/domain/UBGraphicsMediaItemDelegate.h       |   83 +
 Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp       |   69 +-
 Sankore-3.1/src/domain/UBGraphicsPDFItem.h         |   24 +-
 Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp    |   85 +-
 Sankore-3.1/src/domain/UBGraphicsPixmapItem.h      |   24 +-
 Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp   |   90 +-
 Sankore-3.1/src/domain/UBGraphicsPolygonItem.h     |   26 +-
 Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp   |   92 +-
 Sankore-3.1/src/domain/UBGraphicsProxyWidget.h     |   26 +-
 Sankore-3.1/src/domain/UBGraphicsScene.cpp         | 4711 ++++++++++----------
 Sankore-3.1/src/domain/UBGraphicsScene.h           |  843 ++--
 Sankore-3.1/src/domain/UBGraphicsStroke.cpp        |   17 +-
 Sankore-3.1/src/domain/UBGraphicsStroke.h          |   17 +-
 Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp  |  166 +-
 Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h    |   37 +-
 Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp       |   74 +-
 Sankore-3.1/src/domain/UBGraphicsSvgItem.h         |   24 +-
 Sankore-3.1/src/domain/UBGraphicsTextItem.cpp      |  168 +-
 Sankore-3.1/src/domain/UBGraphicsTextItem.h        |   24 +-
 .../src/domain/UBGraphicsTextItemDelegate.cpp      |  106 +-
 .../src/domain/UBGraphicsTextItemDelegate.h        |   29 +-
 .../src/domain/UBGraphicsTextItemUndoCommand.cpp   |   17 +-
 .../src/domain/UBGraphicsTextItemUndoCommand.h     |   17 +-
 Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp     |  144 +-
 Sankore-3.1/src/domain/UBGraphicsVideoItem.h       |   76 +-
 .../src/domain/UBGraphicsVideoItemDelegate.cpp     |  372 +--
 .../src/domain/UBGraphicsVideoItemDelegate.h       |   35 +-
 Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp    | 1208 +++++-
 Sankore-3.1/src/domain/UBGraphicsWidgetItem.h      |  223 +-
 .../src/domain/UBGraphicsWidgetItemDelegate.cpp    |   27 +-
 .../src/domain/UBGraphicsWidgetItemDelegate.h      |   17 +-
 Sankore-3.1/src/domain/UBItem.cpp                  |   96 +-
 Sankore-3.1/src/domain/UBItem.h                    |   49 +-
 Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp   |   17 +-
 Sankore-3.1/src/domain/UBPageSizeUndoCommand.h     |   17 +-
 Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp |   17 +-
 Sankore-3.1/src/domain/UBResizableGraphicsItem.h   |   17 +-
 Sankore-3.1/src/domain/UBW3CWidget.cpp             |  524 ---
 Sankore-3.1/src/domain/UBW3CWidget.h               |  124 -
 Sankore-3.1/src/domain/domain.pri                  |  122 +-
 .../src/domain/ubgraphicsgroupcontaineritem.cpp    |  232 -
 .../src/domain/ubgraphicsgroupcontaineritem.h      |   46 -
 .../ubgraphicsgroupcontaineritemdelegate.cpp       |   69 -
 .../domain/ubgraphicsgroupcontaineritemdelegate.h  |   28 -
 Sankore-3.1/src/frameworks/MacUtils.h              |   18 +-
 Sankore-3.1/src/frameworks/UBBase32.cpp            |   17 +-
 Sankore-3.1/src/frameworks/UBBase32.h              |   17 +-
 Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp |   72 +-
 Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h   |   31 +-
 Sankore-3.1/src/frameworks/UBCryptoUtils.cpp       |   17 +-
 Sankore-3.1/src/frameworks/UBCryptoUtils.h         |   17 +-
 Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp   |  113 +-
 Sankore-3.1/src/frameworks/UBFileSystemUtils.h     |   38 +-
 Sankore-3.1/src/frameworks/UBGeometryUtils.cpp     |   41 +-
 Sankore-3.1/src/frameworks/UBGeometryUtils.h       |   42 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils.cpp     |  110 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils.h       |  155 +-
 .../src/frameworks/UBPlatformUtils_linux.cpp       |  536 ++-
 Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm  |  452 +-
 Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp |  571 ++--
 Sankore-3.1/src/frameworks/UBStringUtils.cpp       |   18 +-
 Sankore-3.1/src/frameworks/UBStringUtils.h         |   18 +-
 Sankore-3.1/src/frameworks/UBVersion.cpp           |   17 +-
 Sankore-3.1/src/frameworks/UBVersion.h             |   17 +-
 Sankore-3.1/src/frameworks/frameworks.pri          |    2 +-
 Sankore-3.1/src/globals/UBGlobals.h                |   17 +-
 Sankore-3.1/src/gui/UBActionPalette.cpp            |   18 +-
 Sankore-3.1/src/gui/UBActionPalette.h              |   22 +-
 Sankore-3.1/src/gui/UBBlackoutWidget.cpp           |   17 +-
 Sankore-3.1/src/gui/UBBlackoutWidget.h             |   16 +-
 Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp    |   22 +
 Sankore-3.1/src/gui/UBCachePropertiesWidget.h      |   22 +
 Sankore-3.1/src/gui/UBCircleFrame.cpp              |   17 +-
 Sankore-3.1/src/gui/UBCircleFrame.h                |   17 +-
 Sankore-3.1/src/gui/UBClockPalette.h               |   17 +-
 Sankore-3.1/src/gui/UBColorPicker.cpp              |   17 +-
 Sankore-3.1/src/gui/UBColorPicker.h                |   17 +-
 Sankore-3.1/src/gui/UBDockDownloadWidget.cpp       |   18 +-
 Sankore-3.1/src/gui/UBDockDownloadWidget.h         |   18 +-
 Sankore-3.1/src/gui/UBDockPalette.cpp              |  949 ++--
 Sankore-3.1/src/gui/UBDockPalette.h                |   28 +-
 Sankore-3.1/src/gui/UBDockPaletteWidget.cpp        |   22 +
 Sankore-3.1/src/gui/UBDockPaletteWidget.h          |   22 +
 Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp   |   22 +-
 Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h     |   19 +-
 Sankore-3.1/src/gui/UBDocumentNavigator.cpp        |  662 ++--
 Sankore-3.1/src/gui/UBDocumentNavigator.h          |  146 +-
 Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp  |  600 ++--
 Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h    |   17 +-
 Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp     |   17 +-
 Sankore-3.1/src/gui/UBDocumentToolsPalette.h       |   17 +-
 Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp       |  901 ++--
 Sankore-3.1/src/gui/UBDocumentTreeWidget.h         |   17 +-
 Sankore-3.1/src/gui/UBDownloadWidget.cpp           |   18 +-
 Sankore-3.1/src/gui/UBDownloadWidget.h             |   18 +-
 Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp      |   24 +-
 Sankore-3.1/src/gui/UBFavoriteToolPalette.h        |   17 +-
 Sankore-3.1/src/gui/UBFeaturesActionBar.cpp        |  139 +-
 Sankore-3.1/src/gui/UBFeaturesActionBar.h          |   67 +-
 Sankore-3.1/src/gui/UBFeaturesWidget.cpp           | 1640 +++++---
 Sankore-3.1/src/gui/UBFeaturesWidget.h             |  313 +-
 Sankore-3.1/src/gui/UBFloatingPalette.cpp          |   37 +-
 Sankore-3.1/src/gui/UBFloatingPalette.h            |   24 +
 Sankore-3.1/src/gui/UBIconButton.cpp               |   17 +-
 Sankore-3.1/src/gui/UBIconButton.h                 |   17 +-
 Sankore-3.1/src/gui/UBKeyboardPalette.cpp          |  155 +-
 Sankore-3.1/src/gui/UBKeyboardPalette.h            |   65 +-
 Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp    |  197 +-
 Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp      |  121 +-
 Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp      |   45 +-
 Sankore-3.1/src/gui/UBLeftPalette.cpp              |   77 +-
 Sankore-3.1/src/gui/UBLeftPalette.h                |   23 +-
 Sankore-3.1/src/gui/UBLibActionBar.cpp             |  534 ---
 Sankore-3.1/src/gui/UBLibActionBar.h               |  120 -
 Sankore-3.1/src/gui/UBLibItemProperties.cpp        |  321 --
 Sankore-3.1/src/gui/UBLibItemProperties.h          |   82 -
 Sankore-3.1/src/gui/UBLibNavigatorWidget.cpp       |  186 -
 Sankore-3.1/src/gui/UBLibNavigatorWidget.h         |   57 -
 Sankore-3.1/src/gui/UBLibPathViewer.cpp            |  582 ---
 Sankore-3.1/src/gui/UBLibPathViewer.h              |  148 -
 Sankore-3.1/src/gui/UBLibWebView.cpp               |  103 -
 Sankore-3.1/src/gui/UBLibWebView.h                 |   32 -
 Sankore-3.1/src/gui/UBLibWidget.cpp                |  230 -
 Sankore-3.1/src/gui/UBLibWidget.h                  |   97 -
 Sankore-3.1/src/gui/UBLibraryWidget.cpp            |  730 ---
 Sankore-3.1/src/gui/UBLibraryWidget.h              |  125 -
 Sankore-3.1/src/gui/UBMagnifer.cpp                 |   35 +-
 Sankore-3.1/src/gui/UBMagnifer.h                   |   35 +-
 Sankore-3.1/src/gui/UBMainWindow.cpp               |   37 +-
 Sankore-3.1/src/gui/UBMainWindow.h                 |   16 +-
 Sankore-3.1/src/gui/UBMessageWindow.cpp            |   17 +-
 Sankore-3.1/src/gui/UBMessageWindow.h              |   17 +-
 Sankore-3.1/src/gui/UBMessagesDialog.cpp           |   63 +
 Sankore-3.1/src/gui/UBMessagesDialog.h             |   44 +
 Sankore-3.1/src/gui/UBMousePressFilter.cpp         |   17 +-
 Sankore-3.1/src/gui/UBMousePressFilter.h           |   17 +-
 Sankore-3.1/src/gui/UBNavigatorPalette.cpp         |  308 +-
 Sankore-3.1/src/gui/UBNavigatorPalette.h           |  120 +-
 Sankore-3.1/src/gui/UBPageNavigationWidget.cpp     |  368 +-
 Sankore-3.1/src/gui/UBPageNavigationWidget.h       |  136 +-
 Sankore-3.1/src/gui/UBPropertyPalette.cpp          |   18 +-
 Sankore-3.1/src/gui/UBPropertyPalette.h            |   18 +-
 Sankore-3.1/src/gui/UBResources.cpp                |   18 +-
 Sankore-3.1/src/gui/UBResources.h                  |   18 +-
 Sankore-3.1/src/gui/UBRightPalette.cpp             |   70 +-
 Sankore-3.1/src/gui/UBRightPalette.h               |   20 +-
 Sankore-3.1/src/gui/UBRubberBand.cpp               |  218 +-
 Sankore-3.1/src/gui/UBRubberBand.h                 |   41 +-
 Sankore-3.1/src/gui/UBScreenMirror.cpp             |   41 +-
 Sankore-3.1/src/gui/UBScreenMirror.h               |   17 +-
 Sankore-3.1/src/gui/UBSpinningWheel.cpp            |   17 +-
 Sankore-3.1/src/gui/UBSpinningWheel.h              |   17 +-
 Sankore-3.1/src/gui/UBStylusPalette.cpp            |   18 +-
 Sankore-3.1/src/gui/UBStylusPalette.h              |   17 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp       |  684 ++--
 Sankore-3.1/src/gui/UBTeacherGuideWidget.h         |   51 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp |  231 +-
 Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h   |   37 +-
 Sankore-3.1/src/gui/UBThumbnailView.cpp            |   17 +-
 Sankore-3.1/src/gui/UBThumbnailView.h              |   17 +-
 Sankore-3.1/src/gui/UBThumbnailWidget.cpp          |  135 +-
 Sankore-3.1/src/gui/UBThumbnailWidget.h            |   45 +-
 Sankore-3.1/src/gui/UBToolWidget.cpp               |  245 +-
 Sankore-3.1/src/gui/UBToolWidget.h                 |   39 +-
 Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp       |   18 +-
 Sankore-3.1/src/gui/UBToolbarButtonGroup.h         |   17 +-
 Sankore-3.1/src/gui/UBUpdateDlg.cpp                |   18 +-
 Sankore-3.1/src/gui/UBUpdateDlg.h                  |   18 +-
 Sankore-3.1/src/gui/UBVideoPlayer.cpp              |   17 +-
 Sankore-3.1/src/gui/UBVideoPlayer.h                |   17 +-
 Sankore-3.1/src/gui/UBWebToolsPalette.cpp          |   17 +-
 Sankore-3.1/src/gui/UBWebToolsPalette.h            |   17 +-
 Sankore-3.1/src/gui/UBWidgetMirror.cpp             |   17 +-
 Sankore-3.1/src/gui/UBWidgetMirror.h               |   17 +-
 Sankore-3.1/src/gui/UBZoomPalette.cpp              |   18 +-
 Sankore-3.1/src/gui/UBZoomPalette.h                |   17 +-
 Sankore-3.1/src/gui/gui.pri                        |  222 +-
 Sankore-3.1/src/interfaces/IDataStorage.h          |   17 +-
 Sankore-3.1/src/network/UBAutoSaver.cpp            |   18 +-
 Sankore-3.1/src/network/UBAutoSaver.h              |   18 +-
 Sankore-3.1/src/network/UBCookieJar.cpp            |   18 +-
 Sankore-3.1/src/network/UBCookieJar.h              |   18 +-
 Sankore-3.1/src/network/UBHttpFileDownloader.cpp   |   17 +-
 Sankore-3.1/src/network/UBHttpFileDownloader.h     |   17 +-
 Sankore-3.1/src/network/UBHttpGet.cpp              |   37 +-
 Sankore-3.1/src/network/UBHttpGet.h                |   17 +-
 Sankore-3.1/src/network/UBNetworkAccessManager.cpp |   18 +-
 Sankore-3.1/src/network/UBNetworkAccessManager.h   |   17 +-
 Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp |   17 +-
 Sankore-3.1/src/network/UBServerXMLHttpRequest.h   |   17 +-
 Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp       |   18 +-
 Sankore-3.1/src/pdf-merger/ASCII85Decode.h         |   18 +-
 Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp      |   18 +-
 Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h        |   17 +-
 .../src/pdf-merger/AbstractBoxElementHandler.h     |   18 +-
 Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp       |   18 +-
 Sankore-3.1/src/pdf-merger/AnnotsHandler.h         |   18 +-
 Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp      |   17 +-
 Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h        |   18 +-
 Sankore-3.1/src/pdf-merger/Config.h                |   18 +-
 Sankore-3.1/src/pdf-merger/ContentHandler.cpp      |   17 +-
 Sankore-3.1/src/pdf-merger/ContentHandler.h        |   18 +-
 Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h |   18 +-
 Sankore-3.1/src/pdf-merger/DCTDecode.cpp           |   17 +-
 Sankore-3.1/src/pdf-merger/DCTDecode.h             |   18 +-
 Sankore-3.1/src/pdf-merger/Decoder.h               |   18 +-
 Sankore-3.1/src/pdf-merger/Document.cpp            |   17 +-
 Sankore-3.1/src/pdf-merger/Document.h              |   17 +-
 Sankore-3.1/src/pdf-merger/Exception.h             |   18 +-
 Sankore-3.1/src/pdf-merger/FileIsAbsentException.h |   18 +-
 Sankore-3.1/src/pdf-merger/Filter.cpp              |   18 +-
 Sankore-3.1/src/pdf-merger/Filter.h                |   18 +-
 Sankore-3.1/src/pdf-merger/FilterPredictor.cpp     |   18 +-
 Sankore-3.1/src/pdf-merger/FilterPredictor.h       |   18 +-
 Sankore-3.1/src/pdf-merger/FlateDecode.cpp         |   18 +-
 Sankore-3.1/src/pdf-merger/FlateDecode.h           |   18 +-
 Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp         |   17 +-
 Sankore-3.1/src/pdf-merger/JBIG2Decode.h           |   18 +-
 Sankore-3.1/src/pdf-merger/LZWDecode.cpp           |   18 +-
 Sankore-3.1/src/pdf-merger/LZWDecode.h             |   18 +-
 .../src/pdf-merger/MediaBoxElementHandler.h        |   18 +-
 Sankore-3.1/src/pdf-merger/MergePageDescription.h  |   18 +-
 Sankore-3.1/src/pdf-merger/Merger.cpp              |   17 +-
 Sankore-3.1/src/pdf-merger/Merger.h                |   17 +-
 Sankore-3.1/src/pdf-merger/Object.cpp              |   18 +-
 Sankore-3.1/src/pdf-merger/Object.h                |   18 +-
 .../src/pdf-merger/OverlayDocumentParser.cpp       |   18 +-
 Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h |   18 +-
 Sankore-3.1/src/pdf-merger/Page.cpp                |   17 +-
 Sankore-3.1/src/pdf-merger/Page.h                  |   17 +-
 Sankore-3.1/src/pdf-merger/PageElementHandler.cpp  |   17 +-
 Sankore-3.1/src/pdf-merger/PageElementHandler.h    |   18 +-
 Sankore-3.1/src/pdf-merger/PageParser.h            |   17 +-
 Sankore-3.1/src/pdf-merger/Parser.cpp              |   17 +-
 Sankore-3.1/src/pdf-merger/Parser.h                |   18 +-
 Sankore-3.1/src/pdf-merger/Rectangle.cpp           |   18 +-
 Sankore-3.1/src/pdf-merger/Rectangle.h             |   18 +-
 Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h  |   18 +-
 .../src/pdf-merger/RemoveHimselfHandler.cpp        |   18 +-
 Sankore-3.1/src/pdf-merger/RotationHandler.h       |   18 +-
 Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp     |   17 +-
 Sankore-3.1/src/pdf-merger/RunLengthDecode.h       |   18 +-
 Sankore-3.1/src/pdf-merger/Transformation.h        |   18 +-
 Sankore-3.1/src/pdf-merger/TypeElementHandler.h    |   18 +-
 Sankore-3.1/src/pdf-merger/Utils.cpp               |   28 +-
 Sankore-3.1/src/pdf-merger/Utils.h                 |   18 +-
 .../doc/PDF Merge Library Description.doc          |  Bin 226304 -> 0 bytes
 Sankore-3.1/src/pdf/GraphicsPDFItem.cpp            |   17 +-
 Sankore-3.1/src/pdf/GraphicsPDFItem.h              |   17 +-
 Sankore-3.1/src/pdf/PDFRenderer.cpp                |   23 +-
 Sankore-3.1/src/pdf/PDFRenderer.h                  |   17 +-
 Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp       |   17 +-
 Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h         |   17 +-
 Sankore-3.1/src/pdf/XPDFRenderer.cpp               |   17 +-
 Sankore-3.1/src/pdf/XPDFRenderer.h                 |   17 +-
 Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp |   17 +-
 Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h   |   17 +-
 Sankore-3.1/src/podcast/UBPodcastController.cpp    |   17 +-
 Sankore-3.1/src/podcast/UBPodcastController.h      |   17 +-
 .../src/podcast/UBPodcastRecordingPalette.cpp      |   17 +-
 .../src/podcast/UBPodcastRecordingPalette.h        |   17 +-
 .../intranet/UBIntranetPodcastPublisher.cpp        |   17 +-
 .../podcast/intranet/UBIntranetPodcastPublisher.h  |   17 +-
 .../src/podcast/quicktime/UBAudioQueueRecorder.cpp |   31 +-
 .../src/podcast/quicktime/UBAudioQueueRecorder.h   |   17 +-
 .../src/podcast/quicktime/UBQuickTimeFile.cpp      |   21 +-
 .../src/podcast/quicktime/UBQuickTimeFile.h        |   17 +-
 .../podcast/quicktime/UBQuickTimeVideoEncoder.cpp  |   17 +-
 .../podcast/quicktime/UBQuickTimeVideoEncoder.h    |   17 +-
 .../src/podcast/windowsmedia/UBWaveRecorder.cpp    |   17 +-
 .../src/podcast/windowsmedia/UBWaveRecorder.h      |   17 +-
 .../podcast/windowsmedia/UBWindowsMediaFile.cpp    |   17 +-
 .../src/podcast/windowsmedia/UBWindowsMediaFile.h  |   17 +-
 .../windowsmedia/UBWindowsMediaVideoEncoder.cpp    |   17 +-
 .../windowsmedia/UBWindowsMediaVideoEncoder.h      |   17 +-
 .../src/podcast/youtube/UBYouTubePublisher.cpp     |   75 +-
 .../src/podcast/youtube/UBYouTubePublisher.h       |   19 +-
 Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp      |   19 +-
 Sankore-3.1/src/tools/UBAbstractDrawRuler.h        |   23 +-
 Sankore-3.1/src/tools/UBGraphicsAristo.cpp         |  851 ++++
 Sankore-3.1/src/tools/UBGraphicsAristo.h           |  153 +
 Sankore-3.1/src/tools/UBGraphicsCache.cpp          |   48 +-
 Sankore-3.1/src/tools/UBGraphicsCache.h            |   32 +-
 Sankore-3.1/src/tools/UBGraphicsCompass.cpp        |   99 +-
 Sankore-3.1/src/tools/UBGraphicsCompass.h          |   21 +-
 Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp    |   71 +-
 Sankore-3.1/src/tools/UBGraphicsCurtainItem.h      |   25 +-
 .../src/tools/UBGraphicsCurtainItemDelegate.cpp    |   26 +-
 .../src/tools/UBGraphicsCurtainItemDelegate.h      |   23 +-
 Sankore-3.1/src/tools/UBGraphicsProtractor.cpp     |   56 +-
 Sankore-3.1/src/tools/UBGraphicsProtractor.h       |   20 +-
 Sankore-3.1/src/tools/UBGraphicsRuler.cpp          |  281 +-
 Sankore-3.1/src/tools/UBGraphicsRuler.h            |   20 +-
 Sankore-3.1/src/tools/UBGraphicsTriangle.cpp       |   71 +-
 Sankore-3.1/src/tools/UBGraphicsTriangle.h         |   24 +-
 Sankore-3.1/src/tools/UBToolsManager.cpp           |   23 +-
 Sankore-3.1/src/tools/UBToolsManager.h             |   18 +-
 Sankore-3.1/src/tools/tools.pri                    |   17 +-
 .../src/transition/UniboardSankoreTransition.cpp   |   17 +-
 .../src/transition/UniboardSankoreTransition.h     |   18 +-
 Sankore-3.1/src/web/UBOEmbedParser.cpp             |   17 +-
 Sankore-3.1/src/web/UBOEmbedParser.h               |   17 +-
 Sankore-3.1/src/web/UBRoutedMouseEventWebView.cpp  |  100 -
 Sankore-3.1/src/web/UBRoutedMouseEventWebView.h    |   45 -
 Sankore-3.1/src/web/UBTrapFlashController.cpp      |   32 +-
 Sankore-3.1/src/web/UBTrapFlashController.h        |   17 +-
 Sankore-3.1/src/web/UBWebController.cpp            |   71 +-
 Sankore-3.1/src/web/UBWebController.h              |   20 +-
 Sankore-3.1/src/web/UBWebKitUtils.cpp              |   17 +-
 Sankore-3.1/src/web/UBWebKitUtils.h                |   17 +-
 Sankore-3.1/src/web/UBWebPage.cpp                  |   17 +-
 Sankore-3.1/src/web/UBWebPage.h                    |   17 +-
 Sankore-3.1/src/web/UBWebPluginWidget.cpp          |   17 +-
 Sankore-3.1/src/web/UBWebPluginWidget.h            |   17 +-
 Sankore-3.1/src/web/browser/WBBrowserWindow.cpp    |   44 +-
 Sankore-3.1/src/web/browser/WBBrowserWindow.h      |   18 +-
 Sankore-3.1/src/web/browser/WBChaseWidget.cpp      |   18 +-
 Sankore-3.1/src/web/browser/WBChaseWidget.h        |   18 +-
 Sankore-3.1/src/web/browser/WBDownloadManager.cpp  |   18 +-
 Sankore-3.1/src/web/browser/WBDownloadManager.h    |   18 +-
 Sankore-3.1/src/web/browser/WBEditTableView.cpp    |   18 +-
 Sankore-3.1/src/web/browser/WBEditTableView.h      |   18 +-
 Sankore-3.1/src/web/browser/WBHistory.cpp          |   18 +-
 Sankore-3.1/src/web/browser/WBHistory.h            |   18 +-
 Sankore-3.1/src/web/browser/WBModelMenu.cpp        |   18 +-
 Sankore-3.1/src/web/browser/WBModelMenu.h          |   18 +-
 Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp   |   18 +-
 Sankore-3.1/src/web/browser/WBSearchLineEdit.h     |   18 +-
 Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp     |   18 +-
 Sankore-3.1/src/web/browser/WBSqueezeLabel.h       |   18 +-
 Sankore-3.1/src/web/browser/WBTabWidget.cpp        |   18 +-
 Sankore-3.1/src/web/browser/WBTabWidget.h          |   18 +-
 Sankore-3.1/src/web/browser/WBToolBarSearch.cpp    |   18 +-
 Sankore-3.1/src/web/browser/WBToolBarSearch.h      |   18 +-
 Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp      |   31 +-
 Sankore-3.1/src/web/browser/WBUrlLineEdit.h        |   18 +-
 Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp   |   19 +-
 Sankore-3.1/src/web/browser/WBWebTrapWebView.h     |   17 +-
 Sankore-3.1/src/web/browser/WBWebView.cpp          |   20 +-
 Sankore-3.1/src/web/browser/WBWebView.h            |   18 +-
 Sankore-3.1/src/web/web.pri                        |    2 -
 .../CrashReporterSymbolSupplier.cpp                |   26 +-
 .../CrashReporterSymbolSupplier.h                  |   26 +-
 .../tools/CrashReportViewer/CrashWindow.cpp        |   26 +-
 Sankore-3.1/tools/CrashReportViewer/CrashWindow.h  |   26 +-
 Sankore-3.1/tools/CrashReportViewer/main.cpp       |   26 +-
 .../tools/pdf2image/core/UBPlatformUtils.cpp       |   26 +-
 Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h |   26 +-
 Sankore-3.1/tools/pdf2image/pdf2image.cpp          |   26 +-
 Sankore-ThirdParty/quazip/quazip.pro               |    2 +
 .../trolltech/singleapplication/qtlocalpeer.h      |    1 +
 Sankore-ThirdParty/xpdf/xpdf.pro                   |    4 +-
 2535 files changed, 154260 insertions(+), 76972 deletions(-)
 rename Sankore-3.1/{gpl.txt => COPYING} (100%)
 create mode 100644 Sankore-3.1/ChangeLog.html
 create mode 100644 Sankore-3.1/JournalDesModifications.pdf
 create mode 100644 Sankore-3.1/ReleaseNotes.pdf
 delete mode 100644 Sankore-3.1/Sankore-Licence.txt
 create mode 100644 Sankore-3.1/buildDebianPackage.sh
 delete mode 100644 Sankore-3.1/lgpl.txt
 create mode 100644 Sankore-3.1/plugins/cffadaptor/postScript_mac.sh
 create mode 100644 Sankore-3.1/plugins/plugins.pri
 create mode 100644 Sankore-3.1/resources/customizations/fonts/AlphoneticGB.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/AndBasR.ttf
 delete mode 100644 Sankore-3.1/resources/customizations/fonts/Andika-R.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/Cursive standard Bold.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/Cursive standard.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/GinSSB60.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/SCRIPTCO.TTF
 delete mode 100644 Sankore-3.1/resources/customizations/fonts/ec.TTF
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ec.ttf
 delete mode 100644 Sankore-3.1/resources/customizations/fonts/ec_co_pt.TTF
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ec_co_pt.ttf
 delete mode 100644 Sankore-3.1/resources/customizations/fonts/ec_cour.TTF
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ec_cour.ttf
 delete mode 100644 Sankore-3.1/resources/customizations/fonts/ec_cp.TTF
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ec_cp.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ec_cp_pt.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ecl.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/ecl_cour.ttf
 create mode 100644 Sankore-3.1/resources/customizations/fonts/eclcopt.ttf
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/calepin.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/connect_screen.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/login_paraschool.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logo.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logoplanetesankore.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/mappe.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/outils.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/colourtag-theme-default.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/curve_solid.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_glow.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_solid.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/swirls.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/alternative.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/black.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/blue.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/brown.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/green.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/pink.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/red.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/ie6.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/center.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/left.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/right.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_left.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_none.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_right.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/csshover.htc
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/handheld.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_bottom_bar.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_clock.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_comments.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_file.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_home.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_icon.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_rss.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_tag.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_trackback.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/button_over.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/container_top_grad.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.bak.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_top.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/download_icon.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/feed.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_black.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_blue.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_brown.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_green.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_pink.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_red.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_bg.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_curve_solid.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_glow.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_solid.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_swirls.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_bottom.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_top.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_thumbnail.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_black.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_blue.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_brown.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_green.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_pink.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_red.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/javascript.js
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/blank.gif
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/pngbehavior.htc
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/print.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/styles.css
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/calepin.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/connect_screen.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/login_paraschool.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logo.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logoplanetesankore.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/mappe.png
 create mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/outils.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/colourtag-theme-default.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/curve_solid.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_glow.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_solid.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/swirls.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/alternative.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/black.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/blue.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/brown.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/green.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/pink.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/red.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/ie6.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/center.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/left.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/right.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_left.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_none.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_right.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/csshover.htc
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/handheld.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_bottom_bar.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_clock.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_comments.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_file.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_home.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_icon.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_rss.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_tag.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_trackback.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/button_over.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/container_top_grad.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.bak.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_top.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/download_icon.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/feed.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_black.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_blue.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_brown.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_green.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_pink.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_red.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_bg.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_curve_solid.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_glow.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_solid.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_swirls.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_bottom.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_top.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_thumbnail.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_black.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_blue.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_brown.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_green.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_pink.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_red.png
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/javascript.js
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/blank.gif
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/pngbehavior.htc
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/print.css
 delete mode 100644 Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/styles.css
 create mode 100644 Sankore-3.1/resources/etc/img/loading.gif
 create mode 100644 Sankore-3.1/resources/i18n/sankore_bg.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_ca.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_cs.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_el.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_mg.ts
 delete mode 100644 Sankore-3.1/resources/i18n/sankore_rm.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_tr.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_zh_CN.ts
 create mode 100644 Sankore-3.1/resources/i18n/sankore_zh_TW.ts
 create mode 100644 Sankore-3.1/resources/images/cursors/play.png
 create mode 100644 Sankore-3.1/resources/images/duplicateDisabled.svg
 create mode 100644 Sankore-3.1/resources/images/erasePalette/eraseBackground.svg
 copy Sankore-3.1/resources/images/{toolbar/reload.png => libpalette/loading.png} (100%)
 delete mode 100644 Sankore-3.1/resources/images/pencil.svg
 create mode 100644 Sankore-3.1/resources/images/stylusPalette/handPlay.png
 create mode 100644 Sankore-3.1/resources/images/stylusPalette/handPlayOn.png
 delete mode 100644 Sankore-3.1/resources/images/teacherGuide/audio.png
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/audio_24x24.svg
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/flash_24x24.svg
 delete mode 100644 Sankore-3.1/resources/images/teacherGuide/image.png
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/image_24x24.svg
 delete mode 100644 Sankore-3.1/resources/images/teacherGuide/link.png
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/link_24x24.svg
 delete mode 100644 Sankore-3.1/resources/images/teacherGuide/movie.png
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/movie_24x24.svg
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/pencil.svg
 delete mode 100644 Sankore-3.1/resources/images/teacherGuide/w3c.png
 create mode 100644 Sankore-3.1/resources/images/teacherGuide/w3c_24x24.svg
 copy Sankore-3.1/resources/images/toolPalette/{protractorTool.png => aristoTool.png} (100%)
 create mode 100644 Sankore-3.1/resources/images/toolbar/group.png
 create mode 100644 Sankore-3.1/resources/images/toolbar/ungroup.png
 create mode 100644 Sankore-3.1/resources/images/toque.svg
 copy Sankore-3.1/resources/images/virtual.keyboard/29/{capslock.png => shift.png} (100%)
 copy Sankore-3.1/resources/images/virtual.keyboard/41/{capslock.png => shift.png} (100%)
 create mode 100644 Sankore-3.1/resources/images/z_layer_down.svg
 create mode 100644 Sankore-3.1/resources/images/z_layer_up.svg
 create mode 100644 Sankore-3.1/resources/library/animations/Biologie/coeur.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Biologie/os et muscles.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Biologie/systeme circulatoire.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Biologie/systeme nerveux.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Biologie/systeme sanguin.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Biologie/systemes.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Jeux/chat-noir.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Jeux/echec IA.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Jeux/echec simple.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Jeux/line-rider.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Jeux/reversi.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Maths/boulier_sesamath.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Maths/rapporteur-interactif.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Sciences/horloge-interactive.swf
 create mode 100644 Sankore-3.1/resources/library/animations/Sciences/thermometre-interactif.swf
 delete mode 100644 Sankore-3.1/resources/library/applications/Edit Html.wgt/languages.js
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/config.xml (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/icon.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/images/bts.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/images/style.css (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/index.html (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/jquery.pack.js (100%)
 create mode 100644 Sankore-3.1/resources/library/applications/Editeur HTML.wgt/languages.js
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/jquery.markitup.js (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/jquery.markitup.pack.js (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/readme.txt (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/bold.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/clean.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/image.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/italic.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/link.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/picture.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/preview.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/images/stroke.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/set.js (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/default/style.css (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/bold.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/clean.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/h1.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/h2.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/h3.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/h4.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/h5.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/h6.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/image.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/italic.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/link.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/list-bullet.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/list-item.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/list-numeric.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/paragraph.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/picture.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/preview.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/images/stroke.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/readme.txt (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/set.js (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/sets/html/style.css (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/bg-container-white.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/bg-container.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/bg-footer-white.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/bg-footer.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/bg-header-white.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/bg-header.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/handle.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/menu.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/spacer.gif (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/images/submenu.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/readme.txt (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/macosx/style.css (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-container.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-bbcode.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-dotclear.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-html.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-json.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-markdown.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-textile.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-wiki.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor-xml.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/bg-editor.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/handle.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/menu.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/images/submenu.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/markitup/style.css (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/simple/images/handle.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/simple/images/menu.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/skins/simple/images/submenu.png (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/templates/preview.css (100%)
 rename Sankore-3.1/resources/library/applications/{Edit Html.wgt => Editeur HTML.wgt}/markitup/templates/preview.html (100%)
 delete mode 100644 Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Grapheur.xhtml
 delete mode 100644 Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/.directory
 delete mode 100644 Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/languages.js
 create mode 100644 Sankore-3.1/resources/library/applications/Grapheur.wgt/Grapheur.xhtml
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Guide_Utilisateur.html (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/GraphMe.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_AjouterWidget.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_Deplacement.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_Navigateur.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_Options.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_Plus.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_Presentation.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/Guide_Uniboard.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/fond1.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/fond2.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/fond3.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/fond4.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/fond5.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/gauche1.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/gauche2.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/gauche3.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/onglet1.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Images/onglet2.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/Affichage3D.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/AffichageStandard.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/AffichageUniboard.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/AffichageXPM.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/ColorPicker.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/Etude.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/Interface.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/Outils.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/Sauvegardes.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/jquery-1.3.2.min.js (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/JavaScript/jquery.disable.text.select.js (100%)
 create mode 100644 Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/languages.js
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Style/Guide_Utilisateur.css (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/Style/default.css (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/config.xml (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/icon.png (100%)
 rename Sankore-3.1/resources/library/applications/{Grapheur 3D.wgt => Grapheur.wgt}/version.html (100%)
 delete mode 100644 Sankore-3.1/resources/library/applications/Notes.wgt/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/OpenLayers.js
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/blank.gif
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/east-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/images.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-maximize.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-minimize.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/north-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/south-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/west-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-minus-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-plus-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-world-mini.png
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/theme/default/style.css
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/js/jquery-1.7.2.min.js
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/config.xml" => Sankore-3.1/resources/library/applications/Sel video.wgt/config.xml (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/howto.css" => Sankore-3.1/resources/library/applications/Sel video.wgt/css/howto.css (100%)
 create mode 100644 Sankore-3.1/resources/library/applications/Sel video.wgt/css/main.css
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/icon.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/icon.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/arrow.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/arrow.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/bts.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/bts.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/btson.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/btson.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_anim.gif" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_anim.gif (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_over.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_over.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_show.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_show.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/capture_youtube.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/capture_youtube.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/center.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/center.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/howto_back.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/howto_back.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/info_ico.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/info_ico.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/inputfield_back.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/inputfield_back.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/keys_copy.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/keys_copy.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/keys_paste.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/keys_paste.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/left.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/left.png (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/logos_web.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/logos_web.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/right.png" => Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/right.png (100%)
 create mode 100644 Sankore-3.1/resources/library/applications/Sel video.wgt/index.html
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/capture_widget.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/capture_widget.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/error.html" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/error.html (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/howto.html" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/howto.html (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/capture_widget.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/capture_widget.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/error.html" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/error.html (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/howto.html" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/howto.html (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/capture_widget.jpg" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/capture_widget.jpg (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/error.html" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/error.html (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/howto.html" => Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/howto.html (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/jquery-1.3.2.min.js" => Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/jquery-1.3.2.min.js (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/jquery.oembed.js" => Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/jquery.oembed.js (100%)
 rename "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/languages.js" => Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/languages.js (100%)
 delete mode 100644 "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/main.css"
 delete mode 100644 "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/index.html"
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/insectes/abeilles.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/insectes/moustique.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chat.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chien.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/cochon.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/mouton.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/vache.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/chimpanze.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/elephant.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/leopard.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/lion.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/rhinoceros.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/singes.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/oiseaux/cardinal.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/oiseaux/chouette.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/oiseaux/coq.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/oiseaux/corneille.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Animaux/oiseaux/poulets.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Bruitages/eau dans verre.mp3
 create mode 100644 Sankore-3.1/resources/library/audios/Bruitages/klaxon.mp3
 delete mode 100644 Sankore-3.1/resources/library/image/Backgrounds/calendrier_2011.png
 delete mode 100644 Sankore-3.1/resources/library/image/Voltaire.jpg
 delete mode 100644 Sankore-3.1/resources/library/image/Voltaire.thumbnail.png
 delete mode 100644 Sankore-3.1/resources/library/image/cartepolitiqueeurope.jpg
 delete mode 100644 Sankore-3.1/resources/library/image/cartepolitiqueeurope.thumbnail.png
 delete mode 100644 Sankore-3.1/resources/library/image/violon.jpg
 delete mode 100644 Sankore-3.1/resources/library/image/violon.thumbnail.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/add_block.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/add_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down_white.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/clear_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/close_cont.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/close_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/drop_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/false.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/green_point.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/left.png
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/numb_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/parameters-bg.png
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/red_point.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_right.png
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/img/true.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html
 rename Sankore-3.1/resources/library/interactivities/{BlackYellow.wgt/scripts => Ass images.wgt/js}/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/js/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/locales/fr/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/locales/ru/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/objects/0.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/objects/1.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/objects/2.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/objects/3.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass images.wgt}/objects/4.gif (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/add_block.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/add_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down_white.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/close_cont.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/close_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/drop_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/false.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/green_point.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/parameters-bg.png
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/play.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/red_point.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/replay.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-reload.png
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/stop.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_right.png
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/img/true.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Ass sons.wgt}/js/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/js/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/locales/fr/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/locales/ru/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/objects/0.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/objects/1.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/objects/2.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/objects/3.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/objects/4.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ass sons.wgt}/objects/beep.wav (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/balance.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/delete.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/graduations.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pivot.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scale.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scales.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight-add.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-css-transform.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Balance.wgt/js/templates.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/icon.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/scripts/blackYellow.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/scripts/blackYellow.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/blackYellow.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-css-transform.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/submit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/img/add_block.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/img/close_cont.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/img/close_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/img/green_point.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/left.png
 copy Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat images.wgt}/img/minus.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/parameters-bg.png
 copy Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat images.wgt}/img/plus.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/img/red_point.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Cat images.wgt}/js/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/js/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/locales/fr/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/locales/ru/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/objects/0.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/objects/1.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/objects/2.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/objects/3.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat images.wgt}/objects/4.gif (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/add_block.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/close_cont.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/close_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/img_plus.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/left.png
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/minus.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/parameters-bg.png
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/img/plus.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html
 rename Sankore-3.1/resources/library/interactivities/{categoriser_images.wgt => Cat text.wgt}/js/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt => Cat text.wgt}/js/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/languages.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{BlackYellow.wgt => Contraste.wgt}/images/greySquare.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{BlackYellow.wgt => Contraste.wgt}/images/greySquare2.png (100%)
 copy Sankore-3.1/resources/library/interactivities/{BlackYellow.wgt => Contraste.wgt}/images/icon-close.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/plus.png
 rename Sankore-3.1/resources/library/interactivities/{BlackYellow.wgt => Contraste.wgt}/images/popupBack.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_right.png
 copy Sankore-3.1/resources/library/{search/Google images.wgs => interactivities/Contraste.wgt}/images/trgDown.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgRight.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/scripts/blackYellow.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/scripts/blackYellow.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/blackYellow.js
 rename Sankore-3.1/resources/library/interactivities/{categoriser_text.wgt/js => Contraste.wgt/scripts}/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{BlackYellow.wgt => Contraste.wgt}/scripts/jquery.disable.text.select.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/arrow-up.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-css-transform.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/arrow-down.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/box-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/trombonne.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js
 rename Sankore-3.1/resources/library/interactivities/{associer_images.wgt => Etudier.wgt}/config.xml (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/add_left.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/add_right.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/add_text.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/close_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/close_slide.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/left.png
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/moving.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/parameters-bg.png
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/play.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/replay.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/resize.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_down.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_up.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-reload.png
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/img/stop.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_left.png
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt/img/left.png => Etudier.wgt/img/turn_left2.png} (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_right.png
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt/img/right.png => Etudier.wgt/img/turn_right11.png} (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/easySlider1.5.js
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/js/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/js/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/objects/1.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{etudier.wgt => Etudier.wgt}/objects/bateaux.mp3 (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-ondrop-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/flip.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/mark.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pile-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/result-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Memory.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player1.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player2.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/result-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/submit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/failed.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/succeed.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/add_block.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/add_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/clear_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/close_cont.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/close_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/drop_img.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/fill_hor.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/fill_vert.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/left.png
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/img/numb_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html
 rename Sankore-3.1/resources/library/interactivities/{ord-phrases.wgt/scripts => Ordre images.wgt/js}/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{ord-phrases.wgt/scripts => Ordre images.wgt/js}/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/locales/fr/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/locales/ru/img/drop_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/objects/0.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/objects/1.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/objects/2.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/objects/3.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt => Ordre images.wgt}/objects/4.gif (100%)
 rename Sankore-3.1/resources/library/interactivities/{associer_sounds.wgt => Ordre lettres.wgt}/config.xml (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/img/add_block.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down_white.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/img/close_cont.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/parameters-bg.png
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/img/play.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/img/replay.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-reload.png
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/img/stop.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-1.8.0.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-ui-1.8.23.custom.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/objects/exemple.mp3
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/objects/example.mp3
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.mp3
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Ordre lettres.wgt}/objects/beep.wav (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/scripts/template2.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/scripts/template2.js
 rename Sankore-3.1/resources/library/interactivities/{ord-words.wgt => Ordre mots.wgt}/scripts/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{ord-words.wgt => Ordre mots.wgt}/scripts/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/master.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/of_puppets.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/script/template2.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/script/template2.js
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt/js => Ordre phrase.wgt/scripts}/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_images.wgt/js => Ordre phrase.wgt/scripts}/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/template2.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/master.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/of_puppets.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/icon.svg
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/add_block.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/add_text.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_right.png
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/circle.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/close_cont.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/close_img.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/parameters-bg.png
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/play.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/replay.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-reload.png
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt => Selectionner.wgt}/img/stop.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Selectionner.wgt}/js/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{ordonner_des_letters.wgt => Selectionner.wgt}/js/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/app.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/ext.js
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt/js => Separe phrase.wgt/scripts}/jquery-1.6.2.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/app.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/master.css
 rename Sankore-3.1/resources/library/interactivities/{spl-phrase.wgt => Separe phrase.wgt}/styles/separator-activated.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{spl-phrase.wgt => Separe phrase.wgt}/styles/separator-hover.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/wcontainer.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/app2.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/ext.js
 rename Sankore-3.1/resources/library/interactivities/{spl-phrase.wgt => Separe texte.wgt}/scripts/jquery-1.6.2.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/app.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/master.css
 rename Sankore-3.1/resources/library/interactivities/{spl-text.wgt => Separe texte.wgt}/styles/separator-activated.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{spl-text.wgt => Separe texte.wgt}/styles/separator-hover.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/wcontainer.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml
 rename Sankore-3.1/resources/library/interactivities/{ord-phrases.wgt => Syllabes.wgt}/icon.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/icon.svg
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_left.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_right.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/scripts/wcontainer.js
 rename Sankore-3.1/resources/library/interactivities/{spl-word.wgt => Syllabes.wgt}/scripts/ext.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{spl-text.wgt => Syllabes.wgt}/scripts/jquery-1.6.2.min.js (100%)
 rename Sankore-3.1/resources/library/interactivities/{selectionner.wgt/js => Syllabes.wgt/scripts}/jquery-ui-1.8.9.custom.min.js (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/spl-word.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/master.css
 rename Sankore-3.1/resources/library/interactivities/{spl-word.wgt => Syllabes.wgt}/styles/separator-activated.png (100%)
 rename Sankore-3.1/resources/library/interactivities/{spl-word.wgt => Syllabes.wgt}/styles/separator-hover.png (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/spl-word.css
 rename Sankore-3.1/resources/library/interactivities/{spl-phrase.wgt => Syllabes.wgt}/styles/wcontainer.css (100%)
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/rature.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/sens-lecture.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/table-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Tables.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Train.wgt/js/templates.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/box-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/card-closed-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-ondrop-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pad-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/parameters-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-with-card-bg.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-bd.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-edit.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-help.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-reload.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-help.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/icon.png
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help_fr-template.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery-1.7.1.min.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/modernizr.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/mustache.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js
 create mode 100644 Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/green_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/red_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/img/green_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/img/red_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/js/easySlider1.5.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/script/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/script/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/master.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/of_puppets.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/icon.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/scripts/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/scripts/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/template2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/master.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/of_puppets.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/green_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/red_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/green_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/red_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/css/basic.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/green_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/red_point.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/js/script.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/icon.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/app.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/ext.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/app.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/master.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/icon.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/app2.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/ext.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/app.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/master.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/wcontainer.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/config.xml
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/icon.png
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/index.html
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-1.6.2.min.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-ui-1.8.9.custom.min.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/spl-word.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/wcontainer.js
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/master.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/spl-word.css
 delete mode 100644 Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/wcontainer.css
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 3.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_3.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_5.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_3.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_5.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_6.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_3.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Ines malade/bacterie.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court3.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_1_doigt.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_2_doigt.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_3_doigt.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_4_doigt.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_5_doigt.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_dessus.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_paume.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_dessus.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_paume.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage3.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage5.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/ane.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/antilope.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/autruche.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/becasse.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/boeuf.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/buffle.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/cameleon.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/canard.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/chacal.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/chat.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/chenille.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/cheval.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/chien.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/cochon.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/coq.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/corbeau.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/crapaud.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/crocodile.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/elephant.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/flamand_rose.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/girafe.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/gnou.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/grenouille.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/guepard.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/hippopotame.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/hyene.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/jument.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/lapin.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/leopard.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/lezard.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/lion.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/mangouste.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/moineau.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/mouche.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/moustique.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/mouton.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/ouistiti.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/panthere.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/pelican.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/perroquet.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/phacochere.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/pintade.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/poule.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/poule2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/python.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/ratel.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/sauterelle.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/souris.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/tigre.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/tortue.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/vache.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/vache2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/varan.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/vautour.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/zebre.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Animaux/zebre_bebe.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Afrique/Afrique satellite.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique contours.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique hydrographie.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique limites villes.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique lmites.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Afrique/carte_afrique.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_pays_muette.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_satellite.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/France/France satellite.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/France/france departements.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/France/france hydrographie.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/France/france regions.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/France/france vierge.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/France/france villes.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Monde/pays couleurs.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Monde/pays.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Cartes/Monde/vierge.gif
 rename Sankore-3.1/resources/library/{image/Backgrounds => pictures/Cartes/Monde}/worldmap.svg (100%)
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/bananiers.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/campagne.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/case1.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/case2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/case_fenetre.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/champs.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/champs_haiti.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/chemin.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/chemin2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/flamboyant.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/lac.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/lac.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/maison_riviere.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/marigot.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/palmiers.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/plage.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/porte_ouverte.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/village.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Decors/village_haiti.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Algerie.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Belgique.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Benin.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Burkina_Faso.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Burundi.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Cameroun.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Canada.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Centre-Afrique.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Comores.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Congo.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Cote_d'Ivoire.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Djibouti.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Europe.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/France.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Gabon.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Guinee equatoriale.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Guinee.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Haiti.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Liban.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Luxembourg.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Madagascar.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Mali.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Maroc.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Maurice.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Mauritanie.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Monaco.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Niger.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Nouveau_Brunswick.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Ontario.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Quebec.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Republique democratique du Congo.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Rwanda.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Senegal.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Suisse.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Tchad.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Togo.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Drapeaux/Tunisie.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2013.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2014.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2015.png
 rename Sankore-3.1/resources/library/{image/Backgrounds => pictures/Fonds/Calendriers}/blank_timeline.svg (100%)
 rename Sankore-3.1/resources/library/{image/Backgrounds => pictures/Fonds/Calendriers}/calendrier_2012.png (100%)
 rename Sankore-3.1/resources/library/{image/Backgrounds/week_timesheet.svg => pictures/Fonds/Calendriers/semainier.svg} (100%)
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/Grille points noirs.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/lignes bleues.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/maternelle.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand noir.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand vert.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille petit bleu.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes demi feuille.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes4.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune_pale.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge_pale.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert_pale.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet_pale.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Horloges/4 horloges.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Horloges/horloge.png
 rename Sankore-3.1/resources/library/{image/Backgrounds/3_D_cartesian_no_grid.svg => pictures/Fonds/Mathematiques/axes 3D.svg} (100%)
 rename Sankore-3.1/resources/library/{image/Backgrounds/Two_dim_cartesian_grid.svg => pictures/Fonds/Mathematiques/grille 2D.svg} (100%)
 rename Sankore-3.1/resources/library/{image/Backgrounds/3_D_cartesian_grid.svg => pictures/Fonds/Mathematiques/grille 3D.svg} (100%)
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de fa.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de sol.png
 rename Sankore-3.1/resources/library/{image/Backgrounds/music.svg => pictures/Fonds/Musique/musique.svg} (100%)
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Musique/piano.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/Alquerque.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echec.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echelle.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de dames.gif
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de petits chevaux.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/labyrinthe-gout3a.jpg
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Basketball.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Handball.JPG
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Rugby.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/football.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/hockey_sur_glace.svg
 create mode 100644 Sankore-3.1/resources/library/pictures/Meteo/couvert.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Meteo/neige.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Meteo/nuageux.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Meteo/orage.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Meteo/pluie.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Meteo/soleil.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Objets/objet_ballon.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Objets/objet_reveil.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/Moussa_vieux.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/abdou.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali__en_tailleur.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_attends.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_ballon.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_bananes.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_barbu.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_jupe.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_parle_orange.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_parle_violet.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_porte.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ali_sac_ecole.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ana_bras_ecarte.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ana_main_croise_gd.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/ana_presentation.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/fatou_assise.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/fatou_bras_leve.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/fatou_debout.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/fratrie.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/jan_bras_ecarte.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/jan_presentation.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Personnages/medecin.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/oeil.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/oeil_barre.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/oreille.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/oreille_barre.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_choisis.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_deplace.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecoute.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecrit.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_explore.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre2.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_parle.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde_ecoute.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Pictogrammes/picto_reperer.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/Bananier.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/avocat.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/avocatier.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/banane.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/croissance_avocat.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/croissance_bananne.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/croissance_goyave.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/croissance_mangue.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/goyave.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/goyavier.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/mangue.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/manguier_mangue.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/manioc.png
 create mode 100644 Sankore-3.1/resources/library/pictures/Vegetaux/piment.png
 rename Sankore-3.1/resources/library/{image => pictures}/open-sankore.svg (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/config.xml (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.png
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.thumbnail.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/down.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/greySquare.png (100%)
 copy Sankore-3.1/resources/library/{interactivities/BlackYellow.wgt => search/Audio Planete.wgs}/images/icon-close.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/popupBack.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/search.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/images/thumbnail_icon.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/trgDown.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/trgUp.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Audio Planete.wgs}/images/up.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/index.html
 create mode 100644 Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/config.xml (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.png
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.thumbnail.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/down.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/greySquare.png (100%)
 copy Sankore-3.1/resources/library/{interactivities/BlackYellow.wgt => search/Flash Planete.wgs}/images/icon-close.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/popupBack.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/search.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/images/search_app.png
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/images/thumbnail_icon.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/trgDown.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/trgUp.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Flash Planete.wgs}/images/up.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/index.html
 create mode 100644 Sankore-3.1/resources/library/search/Flash Planete.wgs/scripts/jquery-1.6.2.min.js
 create mode 100644 Sankore-3.1/resources/library/search/Google images.wgs/images/search_app.png
 create mode 100644 Sankore-3.1/resources/library/search/Google images.wgs/locales/locales.js
 create mode 100644 Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox-arrow.gif
 create mode 100644 Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.css
 create mode 100644 Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.js
 create mode 100644 Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.min.js
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/config.xml (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Image Planete.wgs/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/search/Image Planete.wgs/icon.png
 create mode 100644 Sankore-3.1/resources/library/search/Image Planete.wgs/icon.thumbnail.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/down.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/greySquare.png (100%)
 copy Sankore-3.1/resources/library/{interactivities/BlackYellow.wgt => search/Image Planete.wgs}/images/icon-close.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/popupBack.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/search.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Image Planete.wgs/images/search_app.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/trgDown.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/trgUp.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Image Planete.wgs}/images/up.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Image Planete.wgs/index.html
 create mode 100644 Sankore-3.1/resources/library/search/Image Planete.wgs/scripts/jquery-1.6.2.min.js
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/config.xml (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/css/basic.css
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/icon.png
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/icon.thumbnail.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/down.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/greySquare.png (100%)
 rename Sankore-3.1/resources/library/{interactivities/BlackYellow.wgt => search/Video Planete.wgs}/images/icon-close.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/popupBack.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/search.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/images/search_app.png
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/images/thumbnail_icon.png
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/trgDown.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/trgUp.png (100%)
 copy Sankore-3.1/resources/library/search/{Google images.wgs => Video Planete.wgs}/images/up.png (100%)
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/index.html
 create mode 100644 Sankore-3.1/resources/library/search/Video Planete.wgs/scripts/jquery-1.6.2.min.js
 rename "Sankore-3.1/resources/library/shape/bulle blanche ide\314\201e.svg" => Sankore-3.1/resources/library/shape/bulle blanche idee.svg (100%)
 rename "Sankore-3.1/resources/library/shape/bulle bleue ide\314\201e.svg" => Sankore-3.1/resources/library/shape/bulle bleue idee.svg (100%)
 rename "Sankore-3.1/resources/library/shape/bulle grise ide\314\201e.svg" => Sankore-3.1/resources/library/shape/bulle grise idee.svg (100%)
 rename "Sankore-3.1/resources/library/shape/bulle rouge ide\314\201e.svg" => Sankore-3.1/resources/library/shape/bulle rouge idee.svg (100%)
 rename "Sankore-3.1/resources/library/shape/bulle vide ide\314\201e.svg" => Sankore-3.1/resources/library/shape/bulle vide idee.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 blanc arr.svg" => Sankore-3.1/resources/library/shape/carre blanc arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 blanc.svg" => Sankore-3.1/resources/library/shape/carre blanc.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 bleu arr.svg" => Sankore-3.1/resources/library/shape/carre bleu arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 bleu.svg" => Sankore-3.1/resources/library/shape/carre bleu.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 gris arr.svg" => Sankore-3.1/resources/library/shape/carre gris arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 gris.svg" => Sankore-3.1/resources/library/shape/carre gris.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 rouge arr.svg" => Sankore-3.1/resources/library/shape/carre rouge arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 rouge.svg" => Sankore-3.1/resources/library/shape/carre rouge.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 vide arr.svg" => Sankore-3.1/resources/library/shape/carre vide arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/carre\314\201 vide.svg" => Sankore-3.1/resources/library/shape/carre vide.svg (100%)
 delete mode 100644 "Sankore-3.1/resources/library/shape/carr\303\251 blanc arr.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/carr\303\251 blanc.svg"
 rename "Sankore-3.1/resources/library/shape/e\314\201toile blanche arr.svg" => Sankore-3.1/resources/library/shape/etoile blanche arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile blanche.svg" => Sankore-3.1/resources/library/shape/etoile blanche.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile bleue arr.svg" => Sankore-3.1/resources/library/shape/etoile bleue arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile bleue.svg" => Sankore-3.1/resources/library/shape/etoile bleue.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile grise arr.svg" => Sankore-3.1/resources/library/shape/etoile grise arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile grise.svg" => Sankore-3.1/resources/library/shape/etoile grise.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile rouge arr.svg" => Sankore-3.1/resources/library/shape/etoile rouge arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile rouge.svg" => Sankore-3.1/resources/library/shape/etoile rouge.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile vide arr.svg" => Sankore-3.1/resources/library/shape/etoile vide arr.svg (100%)
 rename "Sankore-3.1/resources/library/shape/e\314\201toile vide.svg" => Sankore-3.1/resources/library/shape/etoile vide.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che blanche bas.svg" => Sankore-3.1/resources/library/shape/fleche blanche bas.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che blanche droite.svg" => Sankore-3.1/resources/library/shape/fleche blanche droite.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che blanche gauche.svg" => Sankore-3.1/resources/library/shape/fleche blanche gauche.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che blanche haut.svg" => Sankore-3.1/resources/library/shape/fleche blanche haut.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che bleue bas.svg" => Sankore-3.1/resources/library/shape/fleche bleue bas.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che bleue droite.svg" => Sankore-3.1/resources/library/shape/fleche bleue droite.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che bleue gauche.svg" => Sankore-3.1/resources/library/shape/fleche bleue gauche.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che bleue haut.svg" => Sankore-3.1/resources/library/shape/fleche bleue haut.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che grise bas.svg" => Sankore-3.1/resources/library/shape/fleche grise bas.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che grise droite.svg" => Sankore-3.1/resources/library/shape/fleche grise droite.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che grise gauche.svg" => Sankore-3.1/resources/library/shape/fleche grise gauche.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che grise haut.svg" => Sankore-3.1/resources/library/shape/fleche grise haut.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che rouge bas.svg" => Sankore-3.1/resources/library/shape/fleche rouge bas.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che rouge droite.svg" => Sankore-3.1/resources/library/shape/fleche rouge droite.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che rouge gauche.svg" => Sankore-3.1/resources/library/shape/fleche rouge gauche.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che rouge haut.svg" => Sankore-3.1/resources/library/shape/fleche rouge haut.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che vide bas.svg" => Sankore-3.1/resources/library/shape/fleche vide bas.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che vide droite.svg" => Sankore-3.1/resources/library/shape/fleche vide droite.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che vide gauche.svg" => Sankore-3.1/resources/library/shape/fleche vide gauche.svg (100%)
 rename "Sankore-3.1/resources/library/shape/fle\314\200che vide haut.svg" => Sankore-3.1/resources/library/shape/fleche vide haut.svg (100%)
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che blanche bas.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che blanche droite.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che blanche gauche.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che blanche haut.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che bleue bas.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che bleue droite.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che bleue gauche.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che bleue haut.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che grise bas.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che grise droite.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che grise gauche.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che grise haut.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che rouge bas.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che rouge droite.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che rouge gauche.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che rouge haut.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che vide bas.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che vide droite.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che vide gauche.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/fl\303\250che vide haut.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/\303\251toile blanche arr.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/\303\251toile blanche.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/\303\251toile bleue arr.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/\303\251toile bleue.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/\303\251toile vide arr.svg"
 delete mode 100644 "Sankore-3.1/resources/library/shape/\303\251toile vide.svg"
 create mode 100644 Sankore-3.1/resources/library/videos/Sciences/video_bourgeon.mpg
 create mode 100644 Sankore-3.1/resources/windows/xpdfrc
 delete mode 100644 Sankore-3.1/src/board/UBLibraryController.cpp
 delete mode 100644 Sankore-3.1/src/board/UBLibraryController.h
 delete mode 100644 Sankore-3.1/src/desktop/UBDesktopEraserPalette.cpp
 delete mode 100644 Sankore-3.1/src/desktop/UBDesktopEraserPalette.h
 delete mode 100644 Sankore-3.1/src/desktop/UBDesktopMarkerPalette.cpp
 delete mode 100644 Sankore-3.1/src/desktop/UBDesktopMarkerPalette.h
 delete mode 100644 Sankore-3.1/src/desktop/UBDesktopPenPalette.cpp
 delete mode 100644 Sankore-3.1/src/desktop/UBDesktopPenPalette.h
 create mode 100644 Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp
 create mode 100644 Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h
 create mode 100644 Sankore-3.1/src/document/UBDocumentContainer.cpp
 create mode 100644 Sankore-3.1/src/document/UBDocumentContainer.h
 delete mode 100644 Sankore-3.1/src/domain/UBAbstractWidget.cpp
 delete mode 100644 Sankore-3.1/src/domain/UBAbstractWidget.h
 delete mode 100644 Sankore-3.1/src/domain/UBAngleWidget.cpp
 delete mode 100644 Sankore-3.1/src/domain/UBAngleWidget.h
 delete mode 100644 Sankore-3.1/src/domain/UBAppleWidget.cpp
 delete mode 100644 Sankore-3.1/src/domain/UBAppleWidget.h
 delete mode 100644 Sankore-3.1/src/domain/UBGraphicsAudioItem.cpp
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp
 create mode 100644 Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h
 delete mode 100644 Sankore-3.1/src/domain/UBW3CWidget.cpp
 delete mode 100644 Sankore-3.1/src/domain/UBW3CWidget.h
 delete mode 100644 Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.cpp
 delete mode 100644 Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.h
 delete mode 100644 Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.cpp
 delete mode 100644 Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibActionBar.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibActionBar.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibItemProperties.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibItemProperties.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibNavigatorWidget.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibNavigatorWidget.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibPathViewer.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibPathViewer.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibWebView.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibWebView.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibWidget.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibWidget.h
 delete mode 100644 Sankore-3.1/src/gui/UBLibraryWidget.cpp
 delete mode 100644 Sankore-3.1/src/gui/UBLibraryWidget.h
 create mode 100644 Sankore-3.1/src/gui/UBMessagesDialog.cpp
 create mode 100644 Sankore-3.1/src/gui/UBMessagesDialog.h
 delete mode 100644 Sankore-3.1/src/pdf-merger/doc/PDF Merge Library Description.doc
 create mode 100644 Sankore-3.1/src/tools/UBGraphicsAristo.cpp
 create mode 100644 Sankore-3.1/src/tools/UBGraphicsAristo.h
 delete mode 100644 Sankore-3.1/src/web/UBRoutedMouseEventWebView.cpp
 delete mode 100644 Sankore-3.1/src/web/UBRoutedMouseEventWebView.h
 mode change 100644 => 100755 Sankore-ThirdParty/xpdf/xpdf-3.03/configure

The diff of changes is:
diff --git a/Sankore-3.1/.gitignore b/Sankore-3.1/.gitignore
index 80d1bc9..6cdf42e 100644
--- a/Sankore-3.1/.gitignore
+++ b/Sankore-3.1/.gitignore
@@ -46,6 +46,9 @@ Thumbs.db
 *.ncb
 *.pro.user
 *.idb
+.project
+.settings
+Makefile.Sankore*
 
 # Build files #
 ###############
@@ -67,3 +70,8 @@ plugins/cffadaptor/objects
 #####################
 *.qm
 
+
+# Others #
+##########
+.directory
+.DS_Store
diff --git a/Sankore-3.1/gpl.txt b/Sankore-3.1/COPYING
similarity index 100%
rename from Sankore-3.1/gpl.txt
rename to Sankore-3.1/COPYING
diff --git a/Sankore-3.1/ChangeLog.html b/Sankore-3.1/ChangeLog.html
new file mode 100644
index 0000000..90b9da5
--- /dev/null
+++ b/Sankore-3.1/ChangeLog.html
@@ -0,0 +1,804 @@
+
+        Release Notes - Sankoré - Version 1.40.b.07
+    	Release Date: 30/May/12
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-506'>SANKORE-506</a>] -         Menu on Open-Sankore button are not all in french (in french version !!!)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-527'>SANKORE-527</a>] -         PDF : Sankore overwrite Pdf layer to empty, after picture(shape) was "set as background"
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-538'>SANKORE-538</a>] -         Using mask and magnifier... the user may see what's behind the mask. Is it intentional ?
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-543'>SANKORE-543</a>] -         In text boxes, buttons - and + don't work sometimes
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-556'>SANKORE-556</a>] -         Drawers Navigation and Library are open each time at startup
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-566'>SANKORE-566</a>] -         Interactivities:New interactivities call crash if they will be converted as tool
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-572'>SANKORE-572</a>] -         With drawers closed at startup, impossible with one click to open them
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-576'>SANKORE-576</a>] -         First, lost of text formating. New format and then lost of text.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-598'>SANKORE-598</a>] -         Changing the size of the bracket using the angles opposite the right angle does not work all the time, we must rotate the bracket so you can change its size
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-599'>SANKORE-599</a>] -         When it rotates with the tool bracket gestures to change its size are not consistent. The parameters of size change does not take into account the position of the bracket.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-602'>SANKORE-602</a>] -         Picture don't locked
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-614'>SANKORE-614</a>] -         Text object :auto adjust of object works with fewest letters
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-615'>SANKORE-615</a>] -         Text object :commands "ctrl+V" aren't work properly, by the both cases,  if text was copied from external apps.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-617'>SANKORE-617</a>] -         Palettes aren't opened by click  after  sankore restart
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-622'>SANKORE-622</a>] -         When we go to Show Desktop and back, the drawers open each time (bug different from SANKORE-556)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-645'>SANKORE-645</a>] -         Thumbnail creation is requested every time
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-650'>SANKORE-650</a>] -         Dialog window when creating new folder in the library
+</li>
+</ul>
+
+        Release Notes - Sankoré - Version 1.40.b.06
+	Release Date: ??/??/12    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-413'>SANKORE-413</a>] -         Preferences: the default size of a page is bigger than screen
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-443'>SANKORE-443</a>] -         windows installer: Redist creates files in root directory after reinstall\install sankore  
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-519'>SANKORE-519</a>] -         Runtime error on D'n'D process
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-596'>SANKORE-596</a>] -         When choosing to put an image in the background, the image can be moved by simply clicking maintained as a normal image
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-625'>SANKORE-625</a>] -         PDF export: Sankore is  exporting whole visible page.
+</li>
+</ul>
+        
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-469'>SANKORE-469</a>] -         Top bar width fit to 1024 x 768
+</li>
+</ul>
+    
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-206'>SANKORE-206</a>] -         Linux Packages
+</li>
+</ul>
+
+
+
+        Release Notes - Sankoré - Version 1.40.b.05
+	Release Date: 27/Mar/12
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-574'>SANKORE-574</a>] -         Color icons of the pen are missing
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-590'>SANKORE-590</a>] -         Pictures to the library by default
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-595'>SANKORE-595</a>] -         The enter key on french virtual keyboard is in english 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-619'>SANKORE-619</a>] -         Audio in a .iwb file 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-620'>SANKORE-620</a>] -         Importing an .iwb created with ActivInspire move its contents
+</li>
+</ul>
+
+
+
+        Release Notes - Sankoré - Version 1.40.b.04
+	Release Date: ??/??/12
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-284'>SANKORE-284</a>] -         Sounds still playing when we close the Flash App
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-297'>SANKORE-297</a>] -         Linux Ubuntu : inversed Multi-monitor ( multi-ecran inversé)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-312'>SANKORE-312</a>] -         Virtual laser pointer doesn't work with PDF and ruler, compass... moved
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-313'>SANKORE-313</a>] -         Window "are you sure you want to delete one page of document..." is still in english in french version
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-324'>SANKORE-324</a>] -         Inversing screens or monitors
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-382'>SANKORE-382</a>] -         Problem with import of a big pdf
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-459'>SANKORE-459</a>] -         Bad pdf export
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-508'>SANKORE-508</a>] -         Text with different fonts, sizes, colors isn't copy correctly by cmd-C (bug different as 419)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-516'>SANKORE-516</a>] -         Sankore menu: Application   doesn't save preferences for  "Multiscreen" option
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-537'>SANKORE-537</a>] -         with mask, masking ruler or compass..., the pointer changes of icon when it comes on the tool, but we can't do nothing because it's behind the mask
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-554'>SANKORE-554</a>] -         PDF: Pictures in PDF change their size
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-559'>SANKORE-559</a>] -          Widgets on a board aren't refreshed after the "show desktop" was used.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-560'>SANKORE-560</a>] -         Compass isn't draws.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-564'>SANKORE-564</a>] -         QT: PDF layer can be moved by using "Arrow"
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-636'>SANKORE-636</a>] -         Video is still worked even page was deleted
+</li>
+</ul>
+        
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-499'>SANKORE-499</a>] -         Document explorer(navigator): pages of a document  can  not  be moved using  D'n'D
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-611'>SANKORE-611</a>] -         Document explorer(navigator): documents  can  not  be moved using  D'n'D
+</li>
+</ul>
+    
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-69'>SANKORE-69</a>] -         Launch Sankore on desktop mode
+</li>
+</ul>
+    
+<h2>        Story
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-78'>SANKORE-78</a>] -         Click Paradigm on object
+</li>
+</ul>
+
+
+        Release Notes - Sankoré - Version 1.40.b.02
+	Release Date: 11/Jan/12
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-296'>SANKORE-296</a>] -         Sankore have a lot of  GUI errors (traces, broken textures) after apps are resized and moved
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-310'>SANKORE-310</a>] -         No swiss-french in virtual keyboard in XP
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-337'>SANKORE-337</a>] -         New feature: "Cache app": doesn't work with two  displays.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-347'>SANKORE-347</a>] -         importing a file (pdf, jpg...) with a point in the name --> the name is truncated
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-379'>SANKORE-379</a>] -         Mirroring option has no effect
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-490'>SANKORE-490</a>] -         In mode Show Desktop, impossible to drag a picture directly to the Library
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-492'>SANKORE-492</a>] -         In mode Show Desktop, drag a PDF file on the icon of Open-Sankore, the import is done, but no more drawers (library and document)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-493'>SANKORE-493</a>] -         In mode Show Desktop, select a part of the screen (or the screen) with the tools, copy it on the same page or next page, drawers aren't visible (see Sankore 492)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-494'>SANKORE-494</a>] -         Page Navigator, onOver buttons
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-496'>SANKORE-496</a>] -         "Back" button from favorites worked incorrect  in library palette
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-498'>SANKORE-498</a>] -         App crash in desktop mode.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-500'>SANKORE-500</a>] -         Virtual keyboard doesn't work in the document explorer
+</li>
+</ul>
+        
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-124'>SANKORE-124</a>] -         Directory structure 
+</li>
+</ul>
+    
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-394'>SANKORE-394</a>] -         Directory documents settings
+</li>
+</ul>
+
+
+
+        Release Notes - Sankoré - Version 1.40.b.00
+	Release Date: 07/Dec/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-15'>SANKORE-15</a>] -         Video colors on Linux
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-22'>SANKORE-22</a>] -         Mode Documents, bouton Clavier ne fonctionne pas
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-23'>SANKORE-23</a>] -         In Desktop Mode, we can drag shapes, movies, images on desktop and so they are no more accessibles in Sankore
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-46'>SANKORE-46</a>] -         Capture video crashes on Linux
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-50'>SANKORE-50</a>] -         If we open Sankore with the document and ressources navigators open in links and right, 2 clicks are necessary to close them
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-126'>SANKORE-126</a>] -         Deleting pages or documents, the windows shows Yes or No, and not Oui ou Non in french
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-161'>SANKORE-161</a>] -         Virtual keyboad: GUI errors while mouse cursor placed on  active virtual keyboad
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-165'>SANKORE-165</a>] -         Interactivities can be deleted
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-199'>SANKORE-199</a>] -         Web: sankore quits with error
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-205'>SANKORE-205</a>] -         The virtual keyboard modifies the system language
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-223'>SANKORE-223</a>] -         Crossplatform:"Mask" have few GUI errors after import from another OS
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-225'>SANKORE-225</a>] -         animations: Swf files look very poorly
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-231'>SANKORE-231</a>] -         Web: Video content located on the page cannot be played after page scale increased
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-238'>SANKORE-238</a>] -         Last version can't be used in PPC Mac
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-243'>SANKORE-243</a>] -         "Document navigator palette" have some GUI errors.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-252'>SANKORE-252</a>] -         Qwerty mode for the french (France) virtual keyboard 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-261'>SANKORE-261</a>] -         annoting, zooming and navigating, problem appear sometimes
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-262'>SANKORE-262</a>] -         Forms can be deleted
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-277'>SANKORE-277</a>] -         PDF/A files doesn't import correctly
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-279'>SANKORE-279</a>] -         virtual keyboard in Documents mode appears 2 times
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-281'>SANKORE-281</a>] -         Applications can be deleted in Dektop Mode
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-282'>SANKORE-282</a>] -         Annoting and navigating in pdf pages --> pdf pages smaller (quite same Sankore 261)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-306'>SANKORE-306</a>] -         Virtual printer is no more present in Sankore
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-334'>SANKORE-334</a>] -         all widgets show Can`t Load Content message instead Loading.. when we add it to Board
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-336'>SANKORE-336</a>] -         New feature: "Cache app":  Crashe sankore after close command is used  on the board without cache
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-338'>SANKORE-338</a>] -         New feature: "Cache app": Bad performance of the tool
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-339'>SANKORE-339</a>] -         Suggestion:new feature: "Cache app": a few  suggestions for the app
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-341'>SANKORE-341</a>] -         "Document navigator palette":allocation of pages boundaries are lost
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-342'>SANKORE-342</a>] -         Desktop mode:Drag and Drop: files  "draged and droped" from library palette to computer desktop are "moved"
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-349'>SANKORE-349</a>] -         Duplicate a page with masks --> masks are not in the same place
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-359'>SANKORE-359</a>] -         Images : using drag an drop does not have the same behavior as using the buttons
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-360'>SANKORE-360</a>] -         Image placed behind the background
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-371'>SANKORE-371</a>] -         the message which appears on the button Favorites is Ajouter au favoris, it should be Ajouter aux favoris
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-372'>SANKORE-372</a>] -         In french, the window which appears in first to indicate that file have to migrate has a button in english
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-383'>SANKORE-383</a>] -         drag and drop from different browser doesn't work
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-384'>SANKORE-384</a>] -         Crash with WebBrowser.wgt
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-389'>SANKORE-389</a>] -         Localization issue: Menu names a bigger than could be in russian translation
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-391'>SANKORE-391</a>] -         Cannot drop a file from IE into Sankore
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-396'>SANKORE-396</a>] -         Impossible to write in two vertical edges (1cm)
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-398'>SANKORE-398</a>] -         Red pointer does not work on inside window
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-405'>SANKORE-405</a>] -         D'n'D : Library palette switches to "teachers tab" when picture successfully d'n'd to board
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-406'>SANKORE-406</a>] -         teachers tab : suggestion : Could you rebuild  method of switching between tabs
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-407'>SANKORE-407</a>] -         Text Objects: object window can not be moved or resized if  it is empty
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-408'>SANKORE-408</a>] -         Text Objects: Text size can not be changed by the buttons "+" and "-"
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-412'>SANKORE-412</a>] -         Document explorer(navigator): D'n'D any page to the last position  crashes the sankore
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-419'>SANKORE-419</a>] -         Text Objects: Text format and color are changed after object was copied
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-423'>SANKORE-423</a>] -         Importing PDF by drag and drop on Sankore icon : name of the document seems correct, but not when exported
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-427'>SANKORE-427</a>] -         Double bar navigation
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-428'>SANKORE-428</a>] -         Wrong location for BlackYello.wgt and Choisir.wgt
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-430'>SANKORE-430</a>] -         Document explorer(navigator):Sankore crashes after button "Add to working document"   was used
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-431'>SANKORE-431</a>] -         Document explorer(navigator): Copied  to another document, by D'n'D method, pages thumbnails are empty .
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-442'>SANKORE-442</a>] -         windows installer: rebuild installer script
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-444'>SANKORE-444</a>] -         Document explorer(navigator): Strange message appears after document was imported and opened in board
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-445'>SANKORE-445</a>] -         library palette:New opened tabs opened new palettes and decreased the transparency of first pallete
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-447'>SANKORE-447</a>] -         With external browser, problem with Tutoriel
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-449'>SANKORE-449</a>] -         Localization: Teachers tab isn't translated in Ru Locale
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-457'>SANKORE-457</a>] -         PDF cropped previews
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-458'>SANKORE-458</a>] -         PDF and magnifier
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-463'>SANKORE-463</a>] -         Sankore close after  impot to PDF is executed
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-466'>SANKORE-466</a>] -         Text object :Sankore have a poor performance after D'n'D unformatted text, from web browser
+</li>
+</ul>
+    
+<h2>        Epic
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-271'>SANKORE-271</a>] -         Web: Web browser doesn't display all *.gif format page content
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-418'>SANKORE-418</a>] -         Sankore application memory usage improvement (testing and deffect correction)
+</li>
+</ul>
+    
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-266'>SANKORE-266</a>] -         I'll check all widgets on linux and I'll looking for their bugs.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-316'>SANKORE-316</a>] -         "Etiquette" of the Library is too high and mask the close button in Desktop Mode with Windows XP
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-329'>SANKORE-329</a>] -         Palette and Keyboard rework
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-365'>SANKORE-365</a>] -          Virtual keyboard : Keep the choice of the language 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-374'>SANKORE-374</a>] -         Widgets. Global scene. Z-level.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-378'>SANKORE-378</a>] -         In the ruler or triangle, the unity is not centimeter
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-397'>SANKORE-397</a>] -         Mask it's too large when it appears
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-435'>SANKORE-435</a>] -         Add to the page : center the audio file on the board
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-440'>SANKORE-440</a>] -         Don't trig the import of document automatically
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-446'>SANKORE-446</a>] -         Library palette tabs: suggestion: inactive tab could be lighter than the active tab
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-448'>SANKORE-448</a>] -         Translation to provide on the interface in French
+</li>
+</ul>
+    
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-69'>SANKORE-69</a>] -         Launch Sankore on desktop mode
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-330'>SANKORE-330</a>] -         CFF standard evolution
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-450'>SANKORE-450</a>] -         Page size persistence
+</li>
+</ul>
+    
+<h2>        Story
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-65'>SANKORE-65</a>] -         Barre du prof
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-66'>SANKORE-66</a>] -         Improve text editor
+</li>
+</ul>
+    
+<h2>        Task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-294'>SANKORE-294</a>] -         PPC version
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-328'>SANKORE-328</a>] -         Change application name
+</li>
+</ul>
+    
+<h2>        Sub-task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-149'>SANKORE-149</a>] -         Web / Linux: No images but a "?" icon in Web mode !
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-204'>SANKORE-204</a>] -         Protractor, ruler, compass, triangle are displayed bigger than should be in Imported pdf document
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-301'>SANKORE-301</a>] -         "Undo" functionality works incorrect.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-319'>SANKORE-319</a>] -         In Uniboard there was a widget named Google Image (?) which allowed to make search directly in Google images. No more in Sankoré
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-332'>SANKORE-332</a>] -         Memory not cleared when we add new page
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-350'>SANKORE-350</a>] -         Add a folder for the search engines
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-353'>SANKORE-353</a>] -         Handle the modal files download
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-381'>SANKORE-381</a>] -         Handle the library files download
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-393'>SANKORE-393</a>] -         Display the metadata of a search result
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-399'>SANKORE-399</a>] -         Create the Audio & Video Google Search application
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-436'>SANKORE-436</a>] -         Each page switch add 500kb to Sankore process memory
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-437'>SANKORE-437</a>] -         After Document import operation any operation with call stack (Undo/Redo) crash application
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-453'>SANKORE-453</a>] -         Rework the media drop widget
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-454'>SANKORE-454</a>] -         Adapt the preview mode to the new video widget
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-455'>SANKORE-455</a>] -         Add the ability to remove a widget from the UBWidgetList
+</li>
+</ul>
+    
+<h2>        Technical task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-351'>SANKORE-351</a>] -         Rework the LibPalette architecture
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-392'>SANKORE-392</a>] -         Get drop information from *.wgs app
+</li>
+</ul>
+
+
+
+        Release Notes - Sankoré - Version 1.30.00
+	Release Date: 05/Dec/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-15'>SANKORE-15</a>] -         Video colors on Linux
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-200'>SANKORE-200</a>] -         Internal application Video picker, Anyembed, webbrowser: video added to the page playing anyway after object is close 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-246'>SANKORE-246</a>] -         Sankoré quitte au bout de 15s
+</li>
+</ul>
+        
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-358'>SANKORE-358</a>] -         Delete old calendars and place new one in "images", background"
+</li>
+</ul>
+                
+<h2>        Sub-task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-270'>SANKORE-270</a>] -         Stylus palette / Mac OS: images captured "part of the screen" tool change their background when main background changed
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-340'>SANKORE-340</a>] -         Web: Linux / trapped app name can have unusable character for file system
+</li>
+</ul>
+    
+
+        Release Notes - Sankoré - Version 1.30.b.00
+	Release Date: 06/Dec/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-2'>SANKORE-2</a>] -         The virtual keyboard doesn't work properly in the Desktop Mode
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-20'>SANKORE-20</a>] -         Mode Desktop, palette contient le bouton Clavier, mais quelle utilité ?
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-137'>SANKORE-137</a>] -         Suggestion: Folders don't create with all symbols
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-146'>SANKORE-146</a>] -         Deleted from the application documents are not removed from PC 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-147'>SANKORE-147</a>] -         No "m" key in the french virtual keyboard !
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-152'>SANKORE-152</a>] -         Web: After web browser is opens , "return to board" button is inactiv
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-156'>SANKORE-156</a>] -         The resources and document navigator in the right and left can be resized, but when we open again Sankore, it's the normal size again
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-157'>SANKORE-157</a>] -         Web applications: Added web applications couldn't be deleted
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-158'>SANKORE-158</a>] -         Podcast: When the podcast is launched uniboard crashes with error 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-163'>SANKORE-163</a>] -         Buttons tooltips in all menues are empty
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-165'>SANKORE-165</a>] -         Interactivities can be deleted
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-179'>SANKORE-179</a>] -         Crashes when Podcast is recorded with sound
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-188'>SANKORE-188</a>] -         Desktop mode under KDE: black screen
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-213'>SANKORE-213</a>] -         Leaks on getContent() methods
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-224'>SANKORE-224</a>] -         Crossplatform:"Web apps" do not load after import from another OS
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-235'>SANKORE-235</a>] -         When importing a PDF, last page doesn't appear
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-236'>SANKORE-236</a>] -         Screen selection doesn't work on desktop mode
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-240'>SANKORE-240</a>] -         Web:Back, Forward,Reload,Stop loading buttons arent work after all tabs was closed
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-241'>SANKORE-241</a>] -         Document explorer: Document not saved until new document not created
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-242'>SANKORE-242</a>] -         Sankore menu: "Cut" command crashes sankore if it used in text object 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-244'>SANKORE-244</a>] -         Internal application:Web browser:Sankore crashes after web browser widget added and page is changed 
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-247'>SANKORE-247</a>] -         Pas de copier-coller partiel sur le bureau
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-255'>SANKORE-255</a>] -         Desktop mode: Library palette is missed
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-256'>SANKORE-256</a>] -         Fixing some bugs in Choisir app.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-276'>SANKORE-276</a>] -         Suggestion: Limit  maximum long of ruler
+</li>
+</ul>
+    
+<h2>        Epic
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-176'>SANKORE-176</a>] -         Sankore menu: "Cut" command work with objects like "Copy" command
+</li>
+</ul>
+    
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-153'>SANKORE-153</a>] -         Desktop mode: Icons of eraser in desktop menu is not precise
+</li>
+</ul>
+        
+<h2>        Story
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-91'>SANKORE-91</a>] -         Improvement of the mask
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-92'>SANKORE-92</a>] -         Magnifier
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-107'>SANKORE-107</a>] -         Rotation a text
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-117'>SANKORE-117</a>] -         improve desktop mode
+</li>
+</ul>
+    
+<h2>        Task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-237'>SANKORE-237</a>] -         Development a new widget called Choisir.wgt
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-287'>SANKORE-287</a>] -         Text "add a new folder" in the library is still in english
+</li>
+</ul>
+    
+<h2>        Sub-task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-195'>SANKORE-195</a>] -         Internal application: Notes / Windows:application added to a page is not ready to work instantly
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-221'>SANKORE-221</a>] -         Crossplatform: calculator, graph me, anyembed, videopicker are lost their data after import from another OS
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-269'>SANKORE-269</a>] -         Stylus palette / Linux: images captured "part of the screen" tool change their background when main background changed
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-274'>SANKORE-274</a>] -         Sankore menu / Windows: "Cut" command work with objects like "Copy" command
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-275'>SANKORE-275</a>] -         Sankore menu / Linux: "Cut" command work with objects like "Copy" command
+</li>
+</ul>
+    
+
+
+        Release Notes - Sankoré - Version 1.21.00
+	Release Date: 30/Aug/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-122'>SANKORE-122</a>] -         Desktop mode on linux
+</li>
+</ul>
+            
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-207'>SANKORE-207</a>] -         Doc palette tab
+</li>
+</ul>
+    
+<h2>        Story
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-64'>SANKORE-64</a>] -         Java applications
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-73'>SANKORE-73</a>] -         Improve the ruler widget
+</li>
+</ul>
+
+
+        Release Notes - Sankoré - Version 1.10.00
+	Release Date: 16/Aug/12
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-135'>SANKORE-135</a>] -         Error on PDF upload.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-160'>SANKORE-160</a>] -         Trash folder is not empty after sankore was installed
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-174'>SANKORE-174</a>] -         Internal application: Barre_proff :  application view is changed.All functionality is missed
+</li>
+</ul>
+                
+<h2>        Story
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-58'>SANKORE-58</a>] -         Development tools for widget w3c
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-63'>SANKORE-63</a>] -         Sankore web player
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-70'>SANKORE-70</a>] -         equerre
+</li>
+</ul>
+    
+<h2>        Task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-123'>SANKORE-123</a>] -         Remove check for update preference
+</li>
+</ul>
+    
+<h2>        Sub-task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-119'>SANKORE-119</a>] -         Push a ubz document
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-120'>SANKORE-120</a>] -         Ubz file storage
+</li>
+</ul>
+
+
+
+        Release Notes - Sankoré - Version 1.00.00
+	Release Date: 17/Jul/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-5'>SANKORE-5</a>] -         Tutorial are not of the same version of Sankoré
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-32'>SANKORE-32</a>] -         When you change the size of text in a text box, you have to click again in the box to continue writing
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-37'>SANKORE-37</a>] -         Flash is not displayed correctly on Mac
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-38'>SANKORE-38</a>] -         Transparency issues on Mac
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-42'>SANKORE-42</a>] -         Clicking on Web button doesn't open the internal navigator, nor the external navigator
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-53'>SANKORE-53</a>] -         Remove sankore text
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-54'>SANKORE-54</a>] -         favorite
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-55'>SANKORE-55</a>] -         external navigator
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-56'>SANKORE-56</a>] -         remove edumedia
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-57'>SANKORE-57</a>] -         Rename the Interactive category
+</li>
+</ul>
+        
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-36'>SANKORE-36</a>] -         The last versions of Sankore has a process to determine if there is a folder Uniboard and then transfer file on a folder named Sankore. How can we blocked it ?
+</li>
+</ul>
+    
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-47'>SANKORE-47</a>] -         Disable the Uniboard to Sankoré transition on demand
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-48'>SANKORE-48</a>] -         Hide the 'Check for updates' action if the automatic updates are disabled
+</li>
+</ul>
+    
+<h2>        Story
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-39'>SANKORE-39</a>] -         third party licenses
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-40'>SANKORE-40</a>] -         Translation
+</li>
+</ul>
+
+        Release Notes - Sankoré - Version 1.06.b.00
+	Release Date: 10/Jun/12
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-386'>SANKORE-386</a>] -         Layer's problem
+</li>
+</ul>
+           
+            
+
+        Release Notes - Sankoré - Version 1.05.b.00
+	Release Date: 30/May/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-9'>SANKORE-9</a>] -         Minimize Sankore on Mac doesn't work
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-11'>SANKORE-11</a>] -         Export de fichiers en pdf annotés avec décalage
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-24'>SANKORE-24</a>] -         Export document button remains disabled after an exportation
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-25'>SANKORE-25</a>] -         Impossible to add an application
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-31'>SANKORE-31</a>] -         A persistent shadow remains on the desktop mode
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-33'>SANKORE-33</a>] -         creating a folder in Applications --> last place but creating a folder in forms --> first place
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-34'>SANKORE-34</a>] -         It's possible to create folder in trash, is it really useful ?
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-35'>SANKORE-35</a>] -         I create a folder in Forms, but its not possible to delete it
+</li>
+</ul>
+                    
+<h2>        Task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-26'>SANKORE-26</a>] -         Evaluate workload for bugfix on Mac
+</li>
+</ul>
+    
+<h2>        Sub-task
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-27'>SANKORE-27</a>] -         Evaluate workload to fix the Flash issue
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-28'>SANKORE-28</a>] -         Evaluate workload to fix the Transparency issue
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-29'>SANKORE-29</a>] -         Evaluate workload to remove the shadow
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-30'>SANKORE-30</a>] -         Evaluate workload to fix the focus issue
+</li>
+</ul>
+
+
+
+        Release Notes - Sankoré - Version 1.04.b.00
+	Release Date: 20/May/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-4'>SANKORE-4</a>] -         Share item on the web
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-6'>SANKORE-6</a>] -         The trash folder can be dropped outside of Sankoré
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-12'>SANKORE-12</a>] -         Importation de PDF : pages incomplètes, blanches ou plante l'application
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-14'>SANKORE-14</a>] -         Palettes icons are not displayed properly on Windows
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-16'>SANKORE-16</a>] -         Stylus palette orientation switching creates a crash on Linux
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-17'>SANKORE-17</a>] -         Modifying the size of a text via the font editor doesn't modify the font size.
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-18'>SANKORE-18</a>] -         Import ubz file on windows
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-456'>SANKORE-456</a>] -         GUI erorrs in library tabs
+</li>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-495'>SANKORE-495</a>] -         GUI erorrs in document navigation palette
+</li>
+</ul>
+
+                            
+        Release Notes - Sankoré - Version 1.01.b.00.184M
+	Release Date: 06/May/11
+    
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='http://bugs.open-sankore.org/jira/browse/SANKORE-7'>SANKORE-7</a>] -         The shapes can be deleted
+</li>
+</ul>
+
diff --git a/Sankore-3.1/JournalDesModifications.pdf b/Sankore-3.1/JournalDesModifications.pdf
new file mode 100644
index 0000000..a889a67
Binary files /dev/null and b/Sankore-3.1/JournalDesModifications.pdf differ
diff --git a/Sankore-3.1/Open-Sankore.packproj b/Sankore-3.1/Open-Sankore.packproj
index 8ddfa2b..a616aae 100644
--- a/Sankore-3.1/Open-Sankore.packproj
+++ b/Sankore-3.1/Open-Sankore.packproj
@@ -28,7 +28,7 @@
 						<key>Mode</key>
 						<integer>1</integer>
 						<key>Path</key>
-						<string>Sankore-Licence.txt</string>
+						<string>COPYING</string>
 						<key>Path Type</key>
 						<integer>2</integer>
 					</dict>
diff --git a/Sankore-3.1/ReleaseNotes.pdf b/Sankore-3.1/ReleaseNotes.pdf
new file mode 100644
index 0000000..68bb159
Binary files /dev/null and b/Sankore-3.1/ReleaseNotes.pdf differ
diff --git a/Sankore-3.1/Sankore 3.1.iss b/Sankore-3.1/Sankore 3.1.iss
index 4aba09e..759c3b5 100644
--- a/Sankore-3.1/Sankore 3.1.iss	
+++ b/Sankore-3.1/Sankore 3.1.iss	
@@ -6,8 +6,8 @@
 ; Do not use the same AppId value in installers for other applications.
 ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
 AppId={{E63D17F8-D9DA-479D-B9B5-0D101A03703B}
-AppName=Open-Sankore
-AppVerName=Open-Sankore
+AppName=Open-Sankoré
+AppVerName=Open-Sankoré
 AppPublisher=Open-Sankore
 
 AppPublisherURL=http://dev.open-sankore.org
@@ -15,7 +15,7 @@ AppSupportURL=http://dev.open-sankore.org
 AppUpdatesURL=http://dev.open-sankore.org
 
 DefaultDirName={pf}\Open-Sankore
-DefaultGroupName=Open-Sankore
+DefaultGroupName=Open-Sankoré
 
 OutputDir=.\install\win32\
 OutputBaseFilename=Open-Sankore
@@ -47,49 +47,59 @@ Type: files ; Name: "{app}\*.dll"
 Source: "..\Sankore-ThirdParty\microsoft\vcredist_x86.exe"; DestDir:"{tmp}"
 Source: "build\win32\release\product\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
 
-;Sankore plugins
-Source: "plugins\cffadaptor\build\win32\release\lib\CFF_Adaptor.dll"; DestDir: "{app}"; Flags: ignoreversion
-
 ;OpenSSL
 Source: "..\Sankore-ThirdParty\openssl\win32\libeay32.dll"; DestDir:"{app}"; Flags: ignoreversion
 Source: "..\Sankore-ThirdParty\openssl\win32\ssleay32.dll"; DestDir:"{app}"; Flags: ignoreversion
 
 ;Qt base dll
-Source: "..\Qt-sankore3.1\lib\QtScript4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\QtGui4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\QtXml4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\QtCore4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\QtWebKit4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\phonon4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\QtNetwork4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\lib\QtSvg4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtScript4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtGui4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtXml4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtCore4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtWebKit4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\phonon4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtNetwork4.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "..\Qt-4.8\lib\QtSvg4.dll"; DestDir: "{app}"; Flags: ignoreversion
 
 ;Qt plugins
-Source: "..\Qt-sankore3.1\plugins\accessible\qtaccessiblecompatwidgets4.dll"; DestDir: "{app}\accessible"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\accessible\qtaccessiblewidgets4.dll"; DestDir: "{app}\accessible"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\bearer\qgenericbearer4.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\bearer\qnativewifibearer4.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\codecs\qcncodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\codecs\qjpcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\codecs\qkrcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\codecs\qtwcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\graphicssystems\qglgraphicssystem4.dll"; DestDir: "{app}\graphicssystems"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\graphicssystems\qtracegraphicssystem4.dll"; DestDir: "{app}\graphicssystems"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\iconengines\qsvgicon4.dll"; DestDir: "{app}\iconengines"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\imageformats\qgif4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\imageformats\qico4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\imageformats\qjpeg4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\imageformats\qmng4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\imageformats\qsvg4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\imageformats\qtiff4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-sankore3.1\plugins\phonon_backend\phonon_ds94.dll"; DestDir: "{app}\phonon_backend"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\accessible\qtaccessiblecompatwidgets4.dll"; DestDir: "{app}\accessible"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\accessible\qtaccessiblewidgets4.dll"; DestDir: "{app}\accessible"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\bearer\qgenericbearer4.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\bearer\qnativewifibearer4.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\codecs\qcncodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\codecs\qjpcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\codecs\qkrcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\codecs\qtwcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\graphicssystems\qglgraphicssystem4.dll"; DestDir: "{app}\graphicssystems"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\graphicssystems\qtracegraphicssystem4.dll"; DestDir: "{app}\graphicssystems"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\iconengines\qsvgicon4.dll"; DestDir: "{app}\iconengines"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\imageformats\qgif4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\imageformats\qico4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\imageformats\qjpeg4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\imageformats\qmng4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\imageformats\qsvg4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\imageformats\qtiff4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "..\Qt-4.8\plugins\phonon_backend\phonon_ds94.dll"; DestDir: "{app}\phonon_backend"; Flags: ignoreversion
 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
 
+;qt multimedia plugins
+Source: "c:\OpenSankore\plugins\mediaservice\dsengine.dll"; DestDir: "c:\OpenSankore\plugins\mediaservice"; Flags: ignoreversion
+Source: "c:\OpenSankore\plugins\mediaservice\dsengined.dll"; DestDir: "c:\OpenSankore\plugins\mediaservice"; Flags: ignoreversion
+Source: "c:\OpenSankore\plugins\mediaservice\qtmedia_audioengine.dll"; DestDir: "c:\OpenSankore\plugins\mediaservice"; Flags: ignoreversion
+Source: "c:\OpenSankore\plugins\mediaservice\qtmedia_audioengined.dll"; DestDir: "c:\OpenSankore\plugins\mediaservice"; Flags: ignoreversion
+
+Source: "c:\OpenSankore\plugins\playlistformats\qtmultimediakit_m3u.dll"; DestDir: "c:\OpenSankore\plugins\playlistformats"; Flags: ignoreversion
+Source: "c:\OpenSankore\plugins\playlistformats\qtmultimediakit_m3ud.dll"; DestDir: "c:\OpenSankore\plugins\playlistformats"; Flags: ignoreversion
+
+;fonts for xpdf
+Source: "resources\windows\xpdfrc"; DestDir: "{app}"; Flags: ignoreversion
+Source: "resources\fonts\*"; DestDir: "{app}\fonts"; Flags: ignoreversion
+
 [Icons]
-Name: "{group}\Open-Sankore"; Filename: "{app}\Open-Sankore.exe"
-Name: "{group}\{cm:UninstallProgram,Open-Sankore}"; Filename: "{uninstallexe}"
-Name: "{commondesktop}\Open-Sankore"; Filename: "{app}\Open-Sankore.exe"; Tasks: desktopicon
-Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Open-Sankore"; Filename: "{app}\Open-Sankore.exe"; Tasks: quicklaunchicon
+Name: "{group}\Open-Sankoré"; Filename: "{app}\Open-Sankore.exe"
+Name: "{group}\{cm:UninstallProgram,Open-Sankoré}"; Filename: "{uninstallexe}"
+Name: "{commondesktop}\Open-Sankoré"; Filename: "{app}\Open-Sankore.exe"; Tasks: desktopicon
+Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Open-Sankoré"; Filename: "{app}\Open-Sankore.exe"; Tasks: quicklaunchicon
 
 [Registry]
 Root: HKCR; Subkey: ".ubz"; ValueType: string; ValueName: ""; ValueData: "SankoreFile"; Flags: uninsdeletevalue
@@ -112,12 +122,12 @@ Root: HKLM64; Subkey: "SOFTWARE\Open-Sankore"; ValueType: dword; ValueName: "EMF
 Root: HKLM64; Subkey: "SOFTWARE\Open-Sankore\Defaults"; ValueType: dword; ValueName: "PDF: Enabled"; ValueData: "1"; Flags: uninsdeletevalue; Check: isProcessorX64
 
 Root: HKLM64; Subkey: "SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Low Rights\DragDrop\{{E63D17F8-D9DA-479D-B9B5-0D101A03703B}"; ValueType: dword; ValueName: "Policy"; ValueData: "3"; Flags: uninsdeletevalue; Check: isProcessorX64
-Root: HKLM64; Subkey: "SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Low Rights\DragDrop\{{E63D17F8-D9DA-479D-B9B5-0D101A03703B}"; ValueType: string; ValueName: "AppName"; ValueData: "Sankore 3.1.exe"; Flags: uninsdeletevalue; Check: isProcessorX64
+Root: HKLM64; Subkey: "SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Low Rights\DragDrop\{{E63D17F8-D9DA-479D-B9B5-0D101A03703B}"; ValueType: string; ValueName: "AppName"; ValueData: "Open-Sankore.exe"; Flags: uninsdeletevalue; Check: isProcessorX64
 Root: HKLM64; Subkey: "SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Low Rights\DragDrop\{{E63D17F8-D9DA-479D-B9B5-0D101A03703B}"; ValueType: string; ValueName: "AppPath"; ValueData: "{app}"; Flags: uninsdeletevalue; Check: isProcessorX64
 
 [Run]
 Filename: "{tmp}\vcredist_x86.exe";WorkingDir:"{tmp}"; Parameters: "/q:a/c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""""""; StatusMsg: Installing CRT ...
-Filename: "{app}\Open-Sankore.exe"; Description: "{cm:LaunchProgram,Open-Sankore}"; Flags: nowait postinstall
+Filename: "{app}\Open-Sankore.exe"; Description: "{cm:LaunchProgram,Open-Sankoré}"; Flags: nowait postinstall skipifsilent 
 
 [UninstallDelete]
 ; cleanup and delete whole installation directory
diff --git a/Sankore-3.1/Sankore-Licence.txt b/Sankore-3.1/Sankore-Licence.txt
deleted file mode 100644
index fac0019..0000000
--- a/Sankore-3.1/Sankore-Licence.txt
+++ /dev/null
@@ -1,171 +0,0 @@
-Open-SankorŽ is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at <https://github.com/Sankore/Sankore-3.1.git>
-
-
-Open-SankorŽ is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.
-
-
-                   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  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 that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU 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 as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/Sankore-3.1/Sankore_3.1.pro b/Sankore-3.1/Sankore_3.1.pro
index 5620eb7..2a70422 100644
--- a/Sankore-3.1/Sankore_3.1.pro
+++ b/Sankore-3.1/Sankore_3.1.pro
@@ -3,17 +3,15 @@ TEMPLATE = app
 
 THIRD_PARTY_PATH=../Sankore-ThirdParty
 
+CONFIG -= flat
 CONFIG += debug_and_release \
           no_include_pwd
 
-linux-g++-64 {
-    CONFIG += link_prl
-}
 
-VERSION_MAJ = 1
-VERSION_MIN = 50 
-VERSION_TYPE = a # a = alpha, b = beta, r = release, other => error
-VERSION_PATCH = 20
+VERSION_MAJ = 2
+VERSION_MIN = 00 
+VERSION_TYPE = r # a = alpha, b = beta, r = release, other => error
+VERSION_PATCH = 00 
 
 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_TYPE}.$${VERSION_PATCH}"
 VERSION = $$replace(VERSION, "\\.r", "")
@@ -35,7 +33,6 @@ QT += script
 QT += xmlpatterns
 
 INCLUDEPATH += src
-INCLUDEPATH += plugins/cffadaptor/src
 
 include($$THIRD_PARTY_PATH/libs.pri)
 include(src/adaptors/adaptors.pri)
@@ -53,12 +50,19 @@ include(src/tools/tools.pri)
 include(src/desktop/desktop.pri)
 include(src/web/web.pri)
 include(src/transition/transition.pri)
-include(src/customWidgets/customWidgets.pri)
 include(src/interfaces/interfaces.pri)
+include(src/customWidgets/customWidgets.pri)
 
 DEPENDPATH += src/pdf-merger
 INCLUDEPATH += src/pdf-merger
 include(src/pdf-merger/pdfMerger.pri)
+
+#plugins
+include(plugins/plugins.pri)
+INCLUDEPATH += plugins/cffadaptor/src
+
+
+#ThirdParty
 DEPENDPATH += $$THIRD_PARTY_PATH/quazip/
 INCLUDEPATH += $$THIRD_PARTY_PATH/quazip/
 include($$THIRD_PARTY_PATH/quazip/quazip.pri)
@@ -92,9 +96,7 @@ BUILD_DIR = build
 
 macx:BUILD_DIR = $$BUILD_DIR/macx
 win32:BUILD_DIR = $$BUILD_DIR/win32
-linux-g++:BUILD_DIR = $$BUILD_DIR/linux
-linux-g++-32:BUILD_DIR = $$BUILD_DIR/linux
-linux-g++-64:BUILD_DIR = $$BUILD_DIR/linux
+linux-g++*:BUILD_DIR = $$BUILD_DIR/linux
 
 CONFIG(debug, debug|release):BUILD_DIR = $$BUILD_DIR/debug
 CONFIG(release, debug|release) {
@@ -108,16 +110,12 @@ MOC_DIR = $$BUILD_DIR/moc
 RCC_DIR = $$BUILD_DIR/rcc
 UI_DIR = $$BUILD_DIR/ui
 
-LIBS += "-Lplugins/cffadaptor/$$BUILD_DIR/lib" "-lCFF_Adaptor"
-
 win32 {
    RC_FILE = resources/win/sankore.rc
    CONFIG += qaxcontainer
    exists(console):CONFIG += console
-   QMAKE_CXXFLAGS += \
-       /MP
-   QMAKE_CXXFLAGS_RELEASE += /Od \
-       /Zi
+   QMAKE_CXXFLAGS += /MP
+   QMAKE_CXXFLAGS_RELEASE += /Od /Zi
    QMAKE_LFLAGS_RELEASE += /DEBUG
    UB_LIBRARY.path = $$DESTDIR
    UB_I18N.path = $$DESTDIR/i18n
@@ -133,8 +131,9 @@ win32 {
 macx {
    LIBS += -framework Foundation 
    LIBS += -lcrypto
-   LIBS += -framework AppKit 
-   LIBS += -framework WebKit
+   #commented because Sankore crashes on Java Script. It seems to backends dependencies.
+   #LIBS += -framework AppKit 
+   #LIBS += -framework WebKit
 
    CONFIG(release, debug|release):CONFIG += x86
 
@@ -143,8 +142,8 @@ macx {
    # are not yet available in 64bits.
    CONFIG(debug, debug|release):CONFIG += x86
 
-   QMAKE_MAC_SDK = "/Developer/SDKs/MacOSX10.5.sdk"
-   QMAKE_MACOSX_DEPLOYMENT_TARGET = "10.4"
+   QMAKE_MAC_SDK = "/Developer/SDKs/MacOSX10.6.sdk"
+   QMAKE_MACOSX_DEPLOYMENT_TARGET = "10.5"
 
    VERSION_RC_PATH = "$$BUILD_DIR/version_rc"
 
@@ -251,12 +250,6 @@ macx {
        TRANSLATION_nb.path = "$$RESOURCES_DIR/nb.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_nb
    }
-   exists(resources/i18n/sankore_rm.qm) {
-       TRANSLATION_rm.files = resources/i18n/sankore_rm.qm \
-           resources/i18n/Localizable.strings
-       TRANSLATION_rm.path = "$$RESOURCES_DIR/rm.lproj"
-       QMAKE_BUNDLE_DATA += TRANSLATION_rm
-   }
    exists(resources/i18n/sankore_sv.qm) {
        TRANSLATION_sv.files = resources/i18n/sankore_sv.qm \
            resources/i18n/Localizable.strings
@@ -281,6 +274,18 @@ macx {
        TRANSLATION_zh.path = "$$RESOURCES_DIR/zh.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_zh
    }
+   exists(resources/i18n/sankore_zh_CN.qm) {
+       TRANSLATION_zh_CN.files = resources/i18n/sankore_zh_CN.qm \
+           resources/i18n/Localizable.strings
+       TRANSLATION_zh_CN.path = "$$RESOURCES_DIR/zh_CN.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_zh_CN
+   }
+   exists(resources/i18n/sankore_zh_TW.qm) {
+       TRANSLATION_zh_TW.files = resources/i18n/sankore_zh_TW.qm \
+           resources/i18n/Localizable.strings
+       TRANSLATION_zh_TW.path = "$$RESOURCES_DIR/zh_TW.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_zh_TW
+   }
    exists(resources/i18n/sankore_ro.qm) {
        TRANSLATION_ro.files = resources/i18n/sankore_ro.qm \
            resources/i18n/Localizable.strings
@@ -293,27 +298,60 @@ macx {
        TRANSLATION_ar.path = "$$RESOURCES_DIR/ar.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_ar
    }
-
    exists(resources/i18n/sankore_iw.qm) {
        TRANSLATION_iw.files = resources/i18n/sankore_iw.qm \
            resources/i18n/Localizable.strings
        TRANSLATION_iw.path = "$$RESOURCES_DIR/iw.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_iw
    }
-
    exists(resources/i18n/sankore_pt.qm) {
        TRANSLATION_pt.files = resources/i18n/sankore_pt.qm \
            resources/i18n/Localizable.strings
        TRANSLATION_pt.path = "$$RESOURCES_DIR/pt.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_pt
    }
-
    exists(resources/i18n/sankore_sk.qm) {
-       TRANSLATION_pt.files = resources/i18n/sankore_sk.qm \
+       TRANSLATION_sk.files = resources/i18n/sankore_sk.qm \
            resources/i18n/Localizable.strings
-       TRANSLATION_pt.path = "$$RESOURCES_DIR/sk.lproj"
+       TRANSLATION_sk.path = "$$RESOURCES_DIR/sk.lproj"
        QMAKE_BUNDLE_DATA += TRANSLATION_sk
    }
+   exists(resources/i18n/sankore_bg.qm) {
+       TRANSLATION_bg.files = resources/i18n/sankore_bg.qm \
+           resources/i18n/Localizable.strings
+       TRANSLATION_bg.path = "$$RESOURCES_DIR/bg.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_bg
+   }
+   exists(resources/i18n/sankore_ca.qm) {
+       TRANSLATION_ca.files = resources/i18n/sankore_ca.qm \
+           resources/i18n/Localizable.strings
+       TRANSLATION_ca.path = "$$RESOURCES_DIR/ca.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_ca
+   }
+   exists(resources/i18n/sankore_el.qm) {
+       TRANSLATION_el.files = resources/i18n/sankore_el.qm \
+           resources/i18n/Localizable.strings
+       TRANSLATION_el.path = "$$RESOURCES_DIR/el.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_el
+   }
+   exists(resources/i18n/sankore_tr.qm) {
+       TRANSLATION_tr.files = resources/i18n/sankore_tr.qm \
+           resources/i18n/Localizable.strings
+       TRANSLATION_tr.path = "$$RESOURCES_DIR/tr.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_tr
+   }
+   exists(resources/i18n/sankore_cs.qm) {
+       TRANSLATION_cs.files = resources/i18n/sankore_cs.qm \
+           resources/i18n/localizable.strings
+       TRANSLATION_cs.path = "$$RESOURCES_DIR/cs.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_cs
+   }
+   exists(resources/i18n/sankore_mg.qm) {
+       TRANSLATION_mg.files = resources/i18n/sankore_mg.qm \
+           resources/i18n/localizable.strings
+       TRANSLATION_mg.path = "$$RESOURCES_DIR/mg.lproj"
+       QMAKE_BUNDLE_DATA += TRANSLATION_mg
+   }
    
    QMAKE_BUNDLE_DATA += UB_ETC \
        UB_LIBRARY \
@@ -334,37 +372,8 @@ macx {
    system(printf "%02x%02x%02x%02x" `printf $$VERSION_RC | cut -d ',' -f 1` `printf $$VERSION_RC | cut -d ',' -f 2` `printf $$VERSION_RC | cut -d ',' -f 3` `printf $$VERSION_RC | cut -d ',' -f 4` | xxd -r -p > "$$VERSION_RC_PATH")
 }
 
-linux-g++ {
-   LIBS += -lcrypto
-   QMAKE_CFLAGS += -fopenmp
-   QMAKE_CXXFLAGS += -fopenmp
-   QMAKE_LFLAGS += -fopenmp
-   UB_LIBRARY.path = $$DESTDIR
-   UB_I18N.path = $$DESTDIR/i18n
-   UB_ETC.path = $$DESTDIR
-   UB_THIRDPARTY_INTERACTIVE.path = $$DESTDIR/library
-   system(mkdir -p $$BUILD_DIR)
-   system(echo "$$VERSION" > $$BUILD_DIR/version)
-   system(echo "$$LONG_VERSION" > $$BUILD_DIR/longversion)
-   system(echo "$$SVN_VERSION" > $$BUILD_DIR/svnversion)
-}
-
-linux-g++-32 {
-   LIBS += -lcrypto
-   QMAKE_CFLAGS += -fopenmp
-   QMAKE_CXXFLAGS += -fopenmp
-   QMAKE_LFLAGS += -fopenmp
-   UB_LIBRARY.path = $$DESTDIR
-   UB_I18N.path = $$DESTDIR/i18n
-   UB_ETC.path = $$DESTDIR
-   UB_THIRDPARTY_INTERACTIVE.path = $$DESTDIR/library
-   system(mkdir -p $$BUILD_DIR)
-   system(echo "$$VERSION" > $$BUILD_DIR/version)
-   system(echo "$$LONG_VERSION" > $$BUILD_DIR/longversion)
-   system(echo "$$SVN_VERSION" > $$BUILD_DIR/svnversion)
-}
-
-linux-g++-64 { 
+linux-g++* {
+    CONFIG += link_prl
     LIBS += -lcrypto
     LIBS += -lX11
     QMAKE_CFLAGS += -fopenmp
@@ -396,16 +405,23 @@ TRANSLATIONS = resources/i18n/sankore_en.ts \
    resources/i18n/sankore_ru.ts \
    resources/i18n/sankore_da.ts \
    resources/i18n/sankore_nb.ts \
-   resources/i18n/sankore_rm.ts \
    resources/i18n/sankore_sv.ts \
    resources/i18n/sankore_ja.ts \
    resources/i18n/sankore_ko.ts \
    resources/i18n/sankore_zh.ts \
+   resources/i18n/sankore_zh_CN.ts \
+   resources/i18n/sankore_zh_TW.ts \
    resources/i18n/sankore_ro.ts \
    resources/i18n/sankore_ar.ts \
    resources/i18n/sankore_iw.ts \
    resources/i18n/sankore_pt.ts \
-   resources/i18n/sankore_sk.ts
+   resources/i18n/sankore_sk.ts \
+   resources/i18n/sankore_bg.ts \
+   resources/i18n/sankore_ca.ts \
+   resources/i18n/sankore_el.ts \
+   resources/i18n/sankore_tr.ts \
+   resources/i18n/sankore_cs.ts \
+   resources/i18n/sankore_mg.ts
 
 INSTALLS = UB_ETC \
    UB_I18N \
diff --git a/Sankore-3.1/buildDebianPackage.sh b/Sankore-3.1/buildDebianPackage.sh
new file mode 100644
index 0000000..d093931
--- /dev/null
+++ b/Sankore-3.1/buildDebianPackage.sh
@@ -0,0 +1,394 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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, see <http://www.gnu.org/licenses/>.
+# ---------------------------------------------------------------------
+
+
+#**********************
+#     functions
+#**********************
+
+initializeVariables()
+{
+  MAKE_TAG=true
+  CREATE_DIENA_DISTRIBUTION_ZIP=false
+  STANDARD_QT_USED=false
+
+  PRODUCT_PATH="build/linux/release/product"
+  QT_PATH="/usr/local/Trolltech/Qt-4.8.0"
+  PLUGINS_PATH="$QT_PATH/plugins"
+  GUI_TRANSLATIONS_DIRECTORY_PATH="../Qt-4.8/translations"
+  QT_LIBRARY_DEST_PATH="$PRODUCT_PATH/qtlib"
+  QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib"
+  ARCHITECTURE=`uname -m`
+  if [ "$ARCHITECTURE" == "x86_64" ]; then
+      ARCHITECTURE="amd64"
+  fi
+  if [ "$ARCHITECTURE" == "i686" ]; then
+      ARCHITECTURE="i386"
+  fi
+
+  NOTIFY_CMD=`which notify-send`
+  QMAKE_PATH="$QT_PATH/bin/qmake"
+  LRELEASES="$QT_PATH/bin/lrelease"
+  ZIP_PATH=`which zip`
+
+}
+
+
+notifyError(){
+    if [ -e "$NOTIFY_CMD" ]; then
+        $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
+    else
+        printf "\033[31merror:\033[0m $1\n"
+    fi
+    exit 1
+}
+
+notifyProgress(){
+    if [ -e "$NOTIFY_CMD" ]; then
+        $NOTIFY_CMD "$1" "$2"
+    else
+        printf "\033[32m--> Achieved task:\033[0m $1:\n\t$2\n"
+    fi
+}
+
+alertIfPreviousVersionInstalled(){
+    APT_CACHE=`which apt-cache`
+    if [ ! -e "$APT_CACHE" ]; then
+        notifyError "apt-cache command not found"
+    else
+        SEARCH_RESULT=`$APT_CACHE search open-sankore`
+        if [ `echo $SEARCH_RESULT | grep -c open-sankore` -ge 1 ]; then
+            notifyError "Found a previous version of Open-Sankore. Remove it to avoid to put it as dependency"
+        fi
+    fi
+}
+
+checkDir(){
+    if [ ! -d "$1" ]; then 
+        notifyError "Directory not found : $1"
+    fi
+}
+
+checkExecutable(){
+    if [ ! -e "$1" ]; then
+        notifyError "$1 command not found"
+    fi
+}
+
+copyQtLibrary(){
+    if ls "$QT_LIBRARY_SOURCE_PATH/$1.so" &> /dev/null; then
+        cp $QT_LIBRARY_SOURCE_PATH/$1.so.? "$QT_LIBRARY_DEST_PATH/"
+        cp $QT_LIBRARY_SOURCE_PATH/$1.so.?.?.? "$QT_LIBRARY_DEST_PATH/"
+    else
+        notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH"
+    fi
+}
+
+
+buildWithStandardQt(){
+  STANDARD_QT=`which qmake-qt4`
+  if [ $? == "0" ]; then
+    QT_VERSION=`$STANDARD_QT --version | grep -i "Using Qt version" | sed -e "s/Using Qt version \(.*\) in.*/\1/"`
+    if [ `echo $QT_VERSION | sed -e "s/\.//g"` -gt 480 ]; then
+        notifyProgress "Standard QT" "A recent enough qmake has been found. Using this one instead of custom one"
+        STANDARD_QT_USED=true
+        QMAKE_PATH=$STANDARD_QT
+        LRELEASES=`which lrelease`
+        if [ "`arch`" == "i686" ]; then
+            QT_PATH="/usr/lib/i386-linux-gnu"
+        else
+            QT_PATH="/usr/lib/`arch`-linux-gnu"
+        fi
+        PLUGINS_PATH="$QT_PATH/qt4/plugins"
+    fi
+  fi
+}
+
+#**********************
+#     script
+#**********************
+initializeVariables
+buildWithStandardQt
+
+for var in "$@"
+do
+   if [ $var == "notag" ]; then
+      MAKE_TAG=false;
+   fi
+   if [ $var == "diena" ]; then
+       CREATE_DIENA_DISTRIBUTION_ZIP=true;
+   fi
+done
+
+
+alertIfPreviousVersionInstalled
+
+#check of directories and executables
+checkDir $QT_PATH
+checkDir $PLUGINS_PATH
+checkDir $GUI_TRANSLATIONS_DIRECTORY_PATH
+
+checkExecutable $QMAKE_PATH
+checkExecutable $LRELEASES
+checkExecutable $ZIP_PATH
+
+# cleaning the build directory
+rm -rf "build/linux/release"
+rm -rf install
+
+notifyProgress "QT" "Internalization"
+$LRELEASES Sankore_3.1.pro
+cd $GUI_TRANSLATIONS_DIRECTORY_PATH
+$LRELEASES translations.pro
+cd -
+
+notifyProgress "Open-Sankore" "Building Open-Sankore"
+
+if [ "$ARCHITECTURE" == "amd64" ]; then
+    $QMAKE_PATH Sankore_3.1.pro -spec linux-g++-64
+else
+    $QMAKE_PATH Sankore_3.1.pro -spec linux-g++
+fi
+
+make -j 4 release-install
+
+if [ ! -e "$PRODUCT_PATH/Open-Sankore" ]; then
+    notifyError "Open-Sankore build failed"
+fi
+
+notifyProgress "Git Hub" "Make a tag of the delivered version"
+
+VERSION=`cat build/linux/release/version`
+
+if [ ! -f build/linux/release/version ]; then
+    notifyError "version not found"
+else
+    LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
+    if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
+        if [ $MAKE_TAG == true ]; then
+            git tag -a "v$VERSION" -m "Generating setup for v$VERSION"
+            git push origin --tags
+        fi 
+    fi
+fi
+
+cp resources/linux/run.sh $PRODUCT_PATH
+chmod a+x $PRODUCT_PATH/run.sh
+
+cp -R resources/linux/qtlinux/* $PRODUCT_PATH/
+
+notifyProgress "QT" "Coping plugins and library ..."
+cp -R $PLUGINS_PATH $PRODUCT_PATH/
+
+# copying customization
+cp -R resources/customizations $PRODUCT_PATH/
+
+if [ $STANDARD_QT_USED == false ]; then 
+#copying custom qt library
+  mkdir -p $QT_LIBRARY_DEST_PATH
+  copyQtLibrary libQtDBus
+  copyQtLibrary libQtScript
+  copyQtLibrary libQtSvg
+  copyQtLibrary libQtXmlPatterns
+  copyQtLibrary libQtNetwork
+  copyQtLibrary libQtXml
+  copyQtLibrary libQtGui
+  copyQtLibrary libQtCore
+  copyQtLibrary libphonon
+  copyQtLibrary libQtWebKit
+fi
+
+notifyProgress "QT" "Internalization"
+if [ ! -e $PRODUCT_PATH/i18n ]; then
+    mkdir $PRODUCT_PATH/i18n
+fi
+#copying qt gui translation    
+cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm $PRODUCT_PATH/i18n/
+
+rm -rf install/linux
+mkdir -p install/linux
+
+#Removing .svn directories ...
+cd $PRODUCT_PATH
+find . -name .svn -exec rm -rf {} \; 2> /dev/null
+cd -
+
+notifyProgress "Building Sankore" "Finished to build Sankore building the package"
+
+BASE_WORKING_DIR="packageBuildDir"
+
+#creating package directory
+mkdir $BASE_WORKING_DIR
+mkdir "$BASE_WORKING_DIR/DEBIAN"
+mkdir -p "$BASE_WORKING_DIR/usr/share/applications"
+mkdir -p "$BASE_WORKING_DIR/usr/local"
+
+
+cat > "$BASE_WORKING_DIR/DEBIAN/prerm" << EOF
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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/>.
+# ---------------------------------------------------------------------
+
+xdg-desktop-menu uninstall /usr/share/applications/Open-Sankore.desktop
+exit 0
+#DEBHELPER#
+EOF
+
+cat > "$BASE_WORKING_DIR/DEBIAN/postint" << EOF
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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/>.
+# ---------------------------------------------------------------------
+
+xdg-desktop-menu install --novendor /usr/share/applications/Open-Sankore.desktop
+exit 0
+#DEBHELPER#
+EOF
+
+
+SANKORE_DIRECTORY_NAME="Open-Sankore-$VERSION"
+SANKORE_PACKAGE_DIRECTORY="$BASE_WORKING_DIR/usr/local/$SANKORE_DIRECTORY_NAME"
+#move sankore build directory to packages directory
+cp -R $PRODUCT_PATH $SANKORE_PACKAGE_DIRECTORY 
+
+
+cat > $BASE_WORKING_DIR/usr/local/$SANKORE_DIRECTORY_NAME/run.sh << EOF
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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/>.
+# ---------------------------------------------------------------------
+
+env LD_LIBRARY_PATH=/usr/local/$SANKORE_DIRECTORY_NAME/qtlib:$LD_LIBRARY_PATH /usr/local/$SANKORE_DIRECTORY_NAME/Open-Sankore
+EOF
+
+
+CHANGE_LOG_FILE="$BASE_WORKING_DIR/DEBIAN/changelog-sankore-$VERSION.txt"
+CONTROL_FILE="$BASE_WORKING_DIR/DEBIAN/control"
+CHANGE_LOG_TEXT="changelog.txt"
+
+echo "Open-Sankore ($VERSION) $ARCHITECTURE; urgency=low" > "$CHANGE_LOG_FILE"
+echo >> "$CHANGE_LOG_FILE"
+cat $CHANGE_LOG_TEXT >> "$CHANGE_LOG_FILE"
+echo >> "$CHANGE_LOG_FILE"
+echo "-- Claudio Valerio <claudio at open-sankore.org>  `date`" >> "$CHANGE_LOG_FILE"
+
+echo "Package: open-sankore" > "$CONTROL_FILE"
+echo "Version: $VERSION" >> "$CONTROL_FILE"
+echo "Section: education" >> "$CONTROL_FILE"
+echo "Priority: optional" >> "$CONTROL_FILE"
+echo "Architecture: $ARCHITECTURE" >> "$CONTROL_FILE"
+echo "Essential: no" >> "$CONTROL_FILE"
+echo "Installed-Size: `du -s $SANKORE_PACKAGE_DIRECTORY | awk '{ print $1 }'`" >> "$CONTROL_FILE"
+echo "Maintainer: Open-Sankoré Developers team <dev at open-sankore.org>" >> "$CONTROL_FILE"
+echo "Homepage: http://dev.open-sankore.org" >> "$CONTROL_FILE"
+echo -n "Depends: " >> "$CONTROL_FILE"
+unset tab
+declare -a tab
+let count=0
+for l in `objdump -p $SANKORE_PACKAGE_DIRECTORY/Open-Sankore | grep NEEDED | awk '{ print $2 }'`; do 
+    for lib in `dpkg -S  $l | awk -F":" '{ print $1 }'`; do
+        #echo $lib
+        presence=`echo ${tab[*]} | grep -c "$lib"`; 
+        if [ "$presence" == "0" ]; then   
+            tab[$count]=$lib;
+            ((count++));
+        fi; 
+    done; 
+done; 
+
+for ((i=0;i<${#tab[@]};i++)); do
+    if [ $i -ne "0" ]; then
+        echo -n ",    " >> "$CONTROL_FILE"
+    fi
+    echo -n "${tab[$i]} (>= "`dpkg -p ${tab[$i]} | grep "Version: " | awk '{      print $2 }'`") " >> "$CONTROL_FILE"
+done
+echo "" >> "$CONTROL_FILE"
+echo "Description: This a interactive white board that uses a free standard format." >> "$CONTROL_FILE"
+
+find $BASE_WORKING_DIR/usr/ -exec md5sum {} > $BASE_WORKING_DIR/DEBIAN/md5sums 2>/dev/null \; 
+SANKORE_SHORTCUT="$BASE_WORKING_DIR/usr/share/applications/Open-Sankore.desktop"
+echo "[Desktop Entry]" > $SANKORE_SHORTCUT
+echo "Version=$VERSION" >> $SANKORE_SHORTCUT
+echo "Encoding=UTF-8" >> $SANKORE_SHORTCUT
+echo "Name=Open-Sankore ($VERSION)" >> $SANKORE_SHORTCUT
+echo "GenericName=Open-Sankore" >> $SANKORE_SHORTCUT
+echo "Comment=Logiciel de création de présentations pour tableau numérique interactif (TNI)" >> $SANKORE_SHORTCUT 
+echo "Exec=/usr/local/$SANKORE_DIRECTORY_NAME/run.sh" >> $SANKORE_SHORTCUT
+echo "Icon=/usr/local/$SANKORE_DIRECTORY_NAME/sankore.png" >> $SANKORE_SHORTCUT
+echo "StartupNotify=true" >> $SANKORE_SHORTCUT
+echo "Terminal=false" >> $SANKORE_SHORTCUT
+echo "Type=Application" >> $SANKORE_SHORTCUT
+echo "Categories=Education" >> $SANKORE_SHORTCUT
+echo "Name[fr_FR]=Open-Sankore ($VERSION)" >> $SANKORE_SHORTCUT
+cp "resources/images/uniboard.png" "$SANKORE_PACKAGE_DIRECTORY/sankore.png"
+chmod 755 "$BASE_WORKING_DIR/DEBIAN"
+chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
+chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint"
+
+mkdir -p "install/linux"
+DEBIAN_PACKAGE_NAME="Open-Sankore_${VERSION}_$ARCHITECTURE.deb"
+
+fakeroot  chown -R root:root $BASE_WORKING_DIR 
+dpkg -b "$BASE_WORKING_DIR" "install/linux/$DEBIAN_PACKAGE_NAME"
+notifyProgress "Open-Sankore" "Package built"
+
+#clean up mess
+fakeroot rm -rf $BASE_WORKING_DIR
+
+
+if [ $CREATE_DIENA_DISTRIBUTION_ZIP == true ]; then
+
+    ZIP_NAME="Open-Sankoré_`lsb_release -is`_`lsb_release -rs`_${VERSION}_${ARCHITECTURE}.zip"
+    cd install/linux
+    $ZIP_PATH -1 --junk-paths ${ZIP_NAME} ${DEBIAN_PACKAGE_NAME} ../../ReleaseNotes.pdf ../../JournalDesModifications.pdf
+    cd -
+    notifyProgress "Open-Sankore" "Build Diena zip file for distribution"
+fi
+
diff --git a/Sankore-3.1/lgpl.txt b/Sankore-3.1/lgpl.txt
deleted file mode 100644
index 65c5ca8..0000000
--- a/Sankore-3.1/lgpl.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-                   GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
-  This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
-  0. Additional Definitions.
-
-  As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
-  "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
-  An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
-  A "Combined Work" is a work produced by combining or linking an
-Application with the Library.  The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
-  The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
-  The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
-  1. Exception to Section 3 of the GNU GPL.
-
-  You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
-  2. Conveying Modified Versions.
-
-  If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
-   a) under this License, provided that you make a good faith effort to
-   ensure that, in the event an Application does not supply the
-   function or data, the facility still operates, and performs
-   whatever part of its purpose remains meaningful, or
-
-   b) under the GNU GPL, with none of the additional permissions of
-   this License applicable to that copy.
-
-  3. Object Code Incorporating Material from Library Header Files.
-
-  The object code form of an Application may incorporate material from
-a header file that is part of the Library.  You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
-   a) Give prominent notice with each copy of the object code that the
-   Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the object code with a copy of the GNU GPL and this license
-   document.
-
-  4. Combined Works.
-
-  You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
-   a) Give prominent notice with each copy of the Combined Work that
-   the Library is used in it and that the Library and its use are
-   covered by this License.
-
-   b) Accompany the Combined Work with a copy of the GNU GPL and this license
-   document.
-
-   c) For a Combined Work that displays copyright notices during
-   execution, include the copyright notice for the Library among
-   these notices, as well as a reference directing the user to the
-   copies of the GNU GPL and this license document.
-
-   d) Do one of the following:
-
-       0) Convey the Minimal Corresponding Source under the terms of this
-       License, and the Corresponding Application Code in a form
-       suitable for, and under terms that permit, the user to
-       recombine or relink the Application with a modified version of
-       the Linked Version to produce a modified Combined Work, in the
-       manner specified by section 6 of the GNU GPL for conveying
-       Corresponding Source.
-
-       1) Use a suitable shared library mechanism for linking with the
-       Library.  A suitable mechanism is one that (a) uses at run time
-       a copy of the Library already present on the user's computer
-       system, and (b) will operate properly with a modified version
-       of the Library that is interface-compatible with the Linked
-       Version.
-
-   e) Provide Installation Information, but only if you would otherwise
-   be required to provide such information under section 6 of the
-   GNU GPL, and only to the extent that such information is
-   necessary to install and execute a modified version of the
-   Combined Work produced by recombining or relinking the
-   Application with a modified version of the Linked Version. (If
-   you use option 4d0, the Installation Information must accompany
-   the Minimal Corresponding Source and Corresponding Application
-   Code. If you use option 4d1, you must provide the Installation
-   Information in the manner specified by section 6 of the GNU GPL
-   for conveying Corresponding Source.)
-
-  5. Combined Libraries.
-
-  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 that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
-   a) Accompany the combined library with a copy of the same work based
-   on the Library, uncombined with any other library facilities,
-   conveyed under the terms of this License.
-
-   b) Give prominent notice with the combined library that part of it
-   is a work based on the Library, and explaining where to find the
-   accompanying uncombined form of the same work.
-
-  6. Revised Versions of the GNU Lesser General Public License.
-
-  The Free Software Foundation may publish revised and/or new versions
-of the GNU 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 as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
-  If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/Sankore-3.1/lgplC++StandardHeaderFile.txt b/Sankore-3.1/lgplC++StandardHeaderFile.txt
index 3e5bd07..b738626 100644
--- a/Sankore-3.1/lgplC++StandardHeaderFile.txt
+++ b/Sankore-3.1/lgplC++StandardHeaderFile.txt
@@ -1,14 +1,22 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
+
diff --git a/Sankore-3.1/plugins/cffadaptor/UBCFFAdaptor.pro b/Sankore-3.1/plugins/cffadaptor/UBCFFAdaptor.pro
index 079de11..f8214d5 100644
--- a/Sankore-3.1/plugins/cffadaptor/UBCFFAdaptor.pro
+++ b/Sankore-3.1/plugins/cffadaptor/UBCFFAdaptor.pro
@@ -16,7 +16,7 @@ linux-g++-64: SUB_DIR = linux
 THIRD_PARTY_PATH = ../../../Sankore-ThirdParty
 QUAZIP_DIR   = "$$PWD/../../../Sankore-ThirdParty/quazip/quazip-0.3"
 
-BUILD_DIR = $$PWD/build/$$SUB_DIR
+BUILD_DIR = build/$$SUB_DIR
 CONFIG(debug, debug|release):BUILD_DIR = $$BUILD_DIR/debug
 CONFIG(release, debug|release) {
    BUILD_DIR = $$BUILD_DIR/release
@@ -31,12 +31,19 @@ OBJECTS_DIR = $$BUILD_DIR/objects
 MOC_DIR = $$BUILD_DIR/moc
 DESTDIR = $$BUILD_DIR/lib
 RCC_DIR = $$BUILD_DIR/rcc
+SANKORE_DIR = ../..
+win32:{
+    QMAKE_POST_LINK += copy $$replace(DESTDIR,/,\\)\\CFF_Adaptor.dll" $$replace(SANKORE_DIR,/,\\)\\CFF_Adaptor.dll /y"
+}
+macx:{
+    QMAKE_POST_LINK += bash postScript_mac.sh "$$DESTDIR" "$$SANKORE_DIR/$$BUILD_DIR/product/Open-Sankore.app/Contents/MacOS"
+}
 
 LIBS     += "-L$$THIRD_PARTY_PATH/quazip/lib/$$SUB_DIR" "-lquazip"
 
 QT       += xml xmlpatterns core
 QT       += gui
-QT       += svg 
+QT       += svg
 
 
 DEFINES += UBCFFADAPTOR_LIBRARY
@@ -59,4 +66,4 @@ HEADERS +=\
     src/UBCFFConstants.h
 
 RESOURCES += \
-    resources/resources.qrc
+    resources/resources.qrc
\ No newline at end of file
diff --git a/Sankore-3.1/plugins/cffadaptor/postScript_mac.sh b/Sankore-3.1/plugins/cffadaptor/postScript_mac.sh
new file mode 100644
index 0000000..dfe0fb6
--- /dev/null
+++ b/Sankore-3.1/plugins/cffadaptor/postScript_mac.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+SOURCE=$1
+DESTINATION=$2
+mkdir -p $DESTINATION
+cp -R $SOURCE/ $DESTINATION
\ No newline at end of file
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp
index ed59738..771be29 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.cpp
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBCFFAdaptor.h"
 
 #include <QtCore>
@@ -47,7 +69,12 @@ bool UBCFFAdaptor::convertUBZToIWB(const QString &from, const QString &to)
         qDebug() << "The convertrer class is invalid, stopping conversion. Error message" << tmpConvertrer.lastErrStr();
         return false;
     }
-    if (!tmpConvertrer.parse()) {
+
+    bool bParceRes = tmpConvertrer.parse();
+
+    mConversionMessages << tmpConvertrer.getMessages();
+
+    if (!bParceRes) {
         return false;
     }
 
@@ -299,6 +326,12 @@ bool UBCFFAdaptor::deleteDir(const QString& pDirPath) const
 
     return dir.rmdir(pDirPath);
 }
+
+QList<QString> UBCFFAdaptor::getConversionMessages() 
+{
+    return mConversionMessages;
+}
+
 bool UBCFFAdaptor::freeDir(const QString &dir)
 {
     bool result = true;
@@ -539,8 +572,8 @@ QDomElement UBCFFAdaptor::UBToCFFConverter::parsePage(const QString &pageFileNam
                 pageFile.close();
                 return QDomElement();
             }
-        } else if (tagname == tUBZGroup) {
-            group = parseGroupPageSection(nextTopElement);
+        } else if (tagname == tUBZGroups) {
+            group = parseGroupsPageSection(nextTopElement);
             if (group.isNull()) {
                 qDebug() << "Page doesn't contains any groups.";
                 pageFile.close();
@@ -623,6 +656,7 @@ QDomElement UBCFFAdaptor::UBToCFFConverter::parseSvgPageSection(const QDomElemen
         else if (tagName == tUBZLine)          parseUBZLine(nextElement, svgElements);
         else if (tagName == tUBZPolygon)       parseUBZPolygon(nextElement, svgElements);
         else if (tagName == tUBZPolyline)      parseUBZPolyline(nextElement, svgElements);
+        else if (tagName == tUBZGroups)        parseGroupsPageSection(nextElement);
 
         nextElement = nextElement.nextSiblingElement();
     }
@@ -643,29 +677,25 @@ QDomElement UBCFFAdaptor::UBToCFFConverter::parseSvgPageSection(const QDomElemen
 
 void UBCFFAdaptor::UBToCFFConverter::writeQDomElementToXML(const QDomNode &node)
 {
-    if (!node.isNull())
-    if (node.isText())
-    {     
-        mIWBContentWriter->writeCharacters(node.nodeValue());
-    }   
-    else
-    {
-        mIWBContentWriter->writeStartElement(node.namespaceURI(), node.toElement().tagName());
+    if (!node.isNull()) {
+        if (node.isText())
+            mIWBContentWriter->writeCharacters(node.nodeValue());
+        else {
+            mIWBContentWriter->writeStartElement(node.namespaceURI(), node.toElement().tagName());
 
-        for (int i = 0; i < node.toElement().attributes().count(); i++)
-        {
-            QDomAttr attr =  node.toElement().attributes().item(i).toAttr();
-            mIWBContentWriter->writeAttribute(attr.name(), attr.value());
-        }
-        QDomNode child = node.firstChild();
-        while(!child.isNull())
-        {
-            writeQDomElementToXML(child);
-            child = child.nextSibling();
-        }
+            for (int i = 0; i < node.toElement().attributes().count(); i++) {
+                QDomAttr attr =  node.toElement().attributes().item(i).toAttr();
+                mIWBContentWriter->writeAttribute(attr.name(), attr.value());
+            }
+            QDomNode child = node.firstChild();
+            while(!child.isNull()) {
+                writeQDomElementToXML(child);
+                child = child.nextSibling();
+            }
 
-        mIWBContentWriter->writeEndElement();
-    }       
+            mIWBContentWriter->writeEndElement();
+        }
+    }
 }
 
 bool UBCFFAdaptor::UBToCFFConverter::writeExtendedIwbSection()
@@ -687,12 +717,34 @@ bool UBCFFAdaptor::UBToCFFConverter::writeExtendedIwbSection()
 // extended element options
 // editable, background, locked are supported for now
 
-QDomElement UBCFFAdaptor::UBToCFFConverter::parseGroupPageSection(const QDomElement &element)
+QDomElement UBCFFAdaptor::UBToCFFConverter::parseGroupsPageSection(const QDomElement &groupRoot)
 {
 //    First sankore side implementation needed. TODO in Sankore 1.5
-    Q_UNUSED(element)
+    if (!groupRoot.hasChildNodes()) {
+        qDebug() << "Group root is empty";
+        return QDomElement();
+    }
+
+    QDomElement groupElement = groupRoot.firstChildElement();
+
+    while (!groupElement.isNull()) {
+        QDomElement extendedElement = mDataModel->createElementNS(iwbNS, groupElement.tagName());
+        QDomElement groupChildElement = groupElement.firstChildElement();
+        while (!groupChildElement.isNull()) {
+            QDomElement extSubElement = mDataModel->createElementNS(iwbNS, groupChildElement.tagName());
+            extSubElement.setAttribute(aRef, groupChildElement.attribute(aID, QUuid().toString()));
+            extendedElement.appendChild(extSubElement);
+
+            groupChildElement = groupChildElement.nextSiblingElement();
+        }
+
+        mExtendedElements.append(extendedElement);
+
+        groupElement = groupElement.nextSiblingElement();
+    }
+
     qDebug() << "parsing ubz group section";
-    return QDomElement();
+    return groupRoot;
 }
 
 QString UBCFFAdaptor::UBToCFFConverter::getDstContentFolderName(const QString &elementType)
@@ -851,7 +903,7 @@ bool UBCFFAdaptor::UBToCFFConverter::itIsSupportedFormat(const QString &format)
 
     QStringList tsl = format.split(".", QString::SkipEmptyParts);
     if (0 < tsl.count())
-        bRet = cffSupportedFileFormats.contains(tsl.at(tsl.count()-1));       
+        bRet = cffSupportedFileFormats.contains(tsl.at(tsl.count()-1).toLower());       
     else
         bRet = false;
 
@@ -912,7 +964,7 @@ bool UBCFFAdaptor::UBToCFFConverter::ibwAddLine(int x1, int y1, int x2, int y2,
     QDomElement svgBackgroundCrossPart = doc.createElementNS(svgIWBNS,svgIWBNSPrefix + ":line");
     QDomElement iwbBackgroundCrossPart = doc.createElementNS(iwbNS,iwbNsPrefix + ":" + tElement);
 
-    QString sUUID = QUuid::createUuid().toString().remove("{").remove("}");
+    QString sUUID = QUuid::createUuid().toString();
 
     svgBackgroundCrossPart.setTagName(tIWBLine);
 
@@ -1054,7 +1106,7 @@ bool UBCFFAdaptor::UBToCFFConverter::setContentFromUBZ(const QDomElement &ubzEle
     QString sSrcFileName = sourcePath + "/" + srcPath ;
     QString fileExtention = getExtentionFromFileName(sSrcFileName);
     QString sDstContentFolder = getDstContentFolderName(ubzElement.tagName());
-    QString sDstFileName(QString(QUuid::createUuid().toString()+"."+convertExtention(fileExtention)).remove("{").remove("}"));
+    QString sDstFileName(QString(QUuid::createUuid().toString()+"."+convertExtention(fileExtention)));
 
 
     if (itIsSupportedFormat(fileExtention)) // format is supported and we can copy src. files without changing.
@@ -1078,7 +1130,9 @@ bool UBCFFAdaptor::UBToCFFConverter::setContentFromUBZ(const QDomElement &ubzEle
         if (bRet)
         {
             svgElement.setAttribute(aSVGHref, sDstContentFolder+"/"+sDstFileName);
-            svgElement.setAttribute(aSVGRequiredExtension, svgRequiredExtensionPrefix+convertExtention(fileExtention));
+            // NOT by standard! Enable it later!
+            // validator http://validator.imsglobal.org/iwb/index.jsp?validate=package
+            //svgElement.setAttribute(aSVGRequiredExtension, svgRequiredExtensionPrefix+convertExtention(fileExtention));
         }
     }
     else
@@ -1105,11 +1159,16 @@ bool UBCFFAdaptor::UBToCFFConverter::setContentFromUBZ(const QDomElement &ubzEle
             if (bRet)
             {
                 svgElement.setAttribute(aSVGHref, sDstContentFolder+"/"+sDstFileName);
-                svgElement.setAttribute(aSVGRequiredExtension, svgRequiredExtensionPrefix+fePng);
+                // NOT by standard! Enable it later!
+                // validator http://validator.imsglobal.org/iwb/index.jsp?validate=package
+                //svgElement.setAttribute(aSVGRequiredExtension, svgRequiredExtensionPrefix+fePng);
             }
         }
     }else
     {
+        addLastExportError(QObject::tr("Element ID = ") + QString("%1 \r\n").arg(ubzElement.attribute(aUBZUuid)) 
+                         + QString("Source file  = ") + QString("%1 \r\n").arg(ubzElement.attribute(aUBZSource))
+                         + QObject::tr("Content is not supported in destination format."));
         bRet = false;
     }
    
@@ -1236,6 +1295,19 @@ bool UBCFFAdaptor::UBToCFFConverter::setCFFAttribute(const QString &attributeNam
         {
             setGeometryFromUBZ(ubzElement, svgElement);
         }
+        else
+            if (attributeName.contains(aUBZUuid))
+            {
+
+                QString parentId = ubzElement.attribute(aUBZParent);
+                QString id;
+                if (!parentId.isEmpty())
+                    id = "{" + parentId + "}" + "{" + ubzElement.attribute(aUBZUuid)+"}";
+                else
+                    id = "{" + ubzElement.attribute(aUBZUuid)+"}";
+
+                svgElement.setAttribute(aID, id);
+            }
         else 
             if (attributeName.contains(aUBZHref)||attributeName.contains(aSrc))
             {
@@ -1258,7 +1330,7 @@ bool UBCFFAdaptor::UBToCFFConverter::setCFFAttribute(const QString &attributeNam
             QString id = tl.at(tl.count()-1);
             // if element already have an ID, we use it. Else we create new id for element.
             if (QString() == id)
-                id = QUuid::createUuid().toString().remove("{").remove("}");
+                id = QUuid::createUuid().toString();
 
             svgElement.setAttribute(aID, id);  
             iwbElement.setAttribute(aRef, id);
@@ -1372,11 +1444,9 @@ bool UBCFFAdaptor::UBToCFFConverter::createBackground(const QDomElement &element
     if (0 <= mViewbox.topLeft().y())
         bckRect.topLeft().setY(0);
 
-//    QString backgroundImagePath = createBackgroundImage(element, QSize(bckRect.width(), bckRect.height()));
-//    if (QString() != backgroundImagePath)
     if (QRect() != bckRect)
     {     
-        QString sElementID = QUuid::createUuid().toString().remove("{").remove("}");
+        QString sElementID = QUuid::createUuid().toString();
 
         bool darkBackground = (avTrue == element.attribute(aDarkBackground));    
         svgBackgroundElementPart.setAttribute(aFill, darkBackground ? "black" : "white");
@@ -1625,7 +1695,7 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZAudio(const QDomElement &element, Q
         //we must create image-containers for audio files
         int audioImageDimention = qMin(svgElementPart.attribute(aWidth).toInt(), svgElementPart.attribute(aHeight).toInt());
         QString srcAudioImageFile(sAudioElementImage);
-        QString elementId = QString(QUuid::createUuid().toString()).remove("{").remove("}");
+        QString elementId = QString(QUuid::createUuid().toString());
         QString sDstAudioImageFileName = elementId+"."+fePng;
         QString dstAudioImageFilePath = destinationPath+"/"+cfImages+"/"+sDstAudioImageFileName;
         QString dstAudioImageRelativePath = cfImages+"/"+sDstAudioImageFileName;
@@ -1641,7 +1711,8 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZAudio(const QDomElement &element, Q
         // CFF cannot show SVG images, so we need to convert it to png.
         if (bRes && createPngFromSvg(srcAudioImageFile, dstAudioImageFilePath, getTransformFromUBZ(element), QSize(audioImageDimention, audioImageDimention)))
         {
-            QDomElement svgSwitchSection = doc.createElementNS(svgIWBNS,svgIWBNSPrefix + ":" + tIWBSwitch);
+            // switch section disabled because of imcompatibility with validator http://validator.imsglobal.org/iwb/index.jsp?validate=package
+            // QDomElement svgSwitchSection = doc.createElementNS(svgIWBNS,svgIWBNSPrefix + ":" + tIWBSwitch);
 
             // first we place content
             QDomElement svgASection = doc.createElementNS(svgIWBNS,svgIWBNSPrefix + ":" + tIWBA);
@@ -1653,8 +1724,8 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZAudio(const QDomElement &element, Q
             svgElementPart.setAttribute(aWidth, audioImageDimention);
 
             svgASection.appendChild(svgElementPart);
-
-            svgSwitchSection.appendChild(svgASection);
+            // switch section disabled because of imcompatibility with validator http://validator.imsglobal.org/iwb/index.jsp?validate=package
+            // svgSwitchSection.appendChild(svgASection);
 
             // if viewer cannot open that content - it must use that:
             QDomElement svgText = doc.createElementNS(svgIWBNS,svgIWBNSPrefix + ":" + tIWBTextArea);
@@ -1667,9 +1738,11 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZAudio(const QDomElement &element, Q
             QDomText text = doc.createTextNode("Cannot Open Content");  
             svgText.appendChild(text);
 
-            svgSwitchSection.appendChild(svgText);
+            // switch section disabled because of imcompatibility with validator http://validator.imsglobal.org/iwb/index.jsp?validate=package          
+            // svgSwitchSection.appendChild(svgText);
 
-            addSVGElementToResultModel(svgSwitchSection, dstSvgList, getElementLayer(element));
+            // switch section disabled because of imcompatibility with validator http://validator.imsglobal.org/iwb/index.jsp?validate=package
+            addSVGElementToResultModel(svgASection/*svgSwitchSection*/, dstSvgList, getElementLayer(element));
 
             if (0 < iwbElementPart.attributes().count())
                 addIWBElementToResultModel(iwbElementPart);
@@ -1779,11 +1852,15 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZPolygon(const QDomElement &element,
 
     if (setCommonAttributesFromUBZ(element, iwbElementPart, svgElementPart))
     {
+        svgElementPart.setAttribute(aStroke, svgElementPart.attribute(aFill));
         addSVGElementToResultModel(svgElementPart, dstSvgList, getElementLayer(element));
 
         if (0 < iwbElementPart.attributes().count())
         {   
-            QString id = QUuid::createUuid().toString().remove("{").remove("}");
+            QString id = svgElementPart.attribute(aUBZUuid);
+            if (id.isEmpty())
+                id = QUuid::createUuid().toString();
+
             svgElementPart.setAttribute(aID, id);
             iwbElementPart.setAttribute(aRef, id);     
 
@@ -1812,11 +1889,12 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZPolyline(const QDomElement &element
 
     if (setCommonAttributesFromUBZ(element, iwbElementPart, svgElementPart))
     {
+        svgElementPart.setAttribute(aStroke, svgElementPart.attribute(aFill));
         addSVGElementToResultModel(svgElementPart, dstSvgList, getElementLayer(element));
 
         if (0 < iwbElementPart.attributes().count())
         {
-            QString id = QUuid::createUuid().toString().remove("{").remove("}");
+            QString id = QUuid::createUuid().toString();
             svgElementPart.setAttribute(aID, id);
             iwbElementPart.setAttribute(aRef, id);
 
@@ -1844,11 +1922,12 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZLine(const QDomElement &element, QM
 
     if (setCommonAttributesFromUBZ(element, iwbElementPart, svgElementPart))
     {
+        svgElementPart.setAttribute(aStroke, svgElementPart.attribute(aFill));
         addSVGElementToResultModel(svgElementPart, dstSvgList, getElementLayer(element));
 
         if (0 < iwbElementPart.attributes().count())
         {
-            QString id = QUuid::createUuid().toString().remove("{").remove("}");
+            QString id = QUuid::createUuid().toString();
             svgElementPart.setAttribute(aID, id);
             iwbElementPart.setAttribute(aRef, id);
 
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h
index 385df3c..da14d40 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor.h
@@ -1,3 +1,26 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBCFFADAPTOR_H
 #define UBCFFADAPTOR_H
 
@@ -20,6 +43,7 @@ public:
 
     bool convertUBZToIWB(const QString &from, const QString &to);
     bool deleteDir(const QString& pDirPath) const;
+    QList<QString> getConversionMessages();
 
 private:
     QString uncompressZip(const QString &zipFile);
@@ -33,6 +57,7 @@ private:
 
 private:
     QStringList tmpDirs;
+    QList<QString> mConversionMessages;
 
 private:
 
@@ -46,8 +71,12 @@ private:
         bool isValid() const;
         QString lastErrStr() const {return errorStr;}
         bool parse();
+        QList<QString> getMessages() {return mExportErrorList;}
 
     private:
+
+        void addLastExportError(QString error) {mExportErrorList.append(error);}
+
         void fillNamespaces();
 
         bool parseMetadata();
@@ -57,7 +86,7 @@ private:
         QDomElement parseSvgPageSection(const QDomElement &element);
         void writeQDomElementToXML(const QDomNode &node);
         bool writeExtendedIwbSection();
-        QDomElement parseGroupPageSection(const QDomElement &element);
+        QDomElement parseGroupsPageSection(const QDomElement &groupRoot);
 
         bool createBackground(const QDomElement &element, QMultiMap<int, QDomElement> &dstSvgList);
         QString createBackgroundImage(const QDomElement &element, QSize size);
@@ -119,6 +148,7 @@ private:
         QString contentIWBFileName() const;
 
     private:
+        QList<QString> mExportErrorList;
         QMap<QString, QString> iwbSVGItemsAttributes;
         QDomDocument *mDataModel; //model for reading indata
         QXmlStreamWriter *mIWBContentWriter; //stream to write outdata
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h
index 2fbf871..cb21a4a 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFAdaptor_global.h
@@ -1,3 +1,26 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBCFFADAPTOR_GLOBAL_H
 #define UBCFFADAPTOR_GLOBAL_H
 
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h b/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h
index 9d7707e..8968fda 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBCFFConstants.h
@@ -1,3 +1,26 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBCFFCONSTANTS_H
 #define UBCFFCONSTANTS_H
 
@@ -28,6 +51,7 @@ const QString tIWBPageSet = "pageset";
 const QString tId = "id";
 const QString tElement = "element";
 const QString tUBZGroup = "group";
+const QString tUBZGroups = "groups";
 const QString tUBZG = "g";
 const QString tUBZPolygon = "polygon";
 const QString tUBZPolyline = "polyline";
@@ -67,6 +91,7 @@ const QString aBackground = "background";
 const QString aCrossedBackground = "crossed-background";
 const QString aUBZType = "type";
 const QString aUBZUuid = "uuid";
+const QString aUBZParent = "parent";
 const QString aFill = "fill"; // IWB attribute contans color to fill
 
 const QString aID = "id";   // ID of any svg element can be placed in to iwb section
@@ -74,6 +99,7 @@ const QString aRef = "ref"; // as reference for applying additional attributes
 const QString aSVGHref = "xlink:href"; // reference to file
 const QString aIWBHref = "ref"; // reference to element ID
 const QString aUBZHref = "href";
+const QString aUBZSource = "source";
 const QString aSrc = "src";
 const QString aSVGRequiredExtension = "requiredExtensions";
 
@@ -105,7 +131,7 @@ const QString ubNS = "http://uniboard.mnemis.com/document";
 const QString svgUBZNS = "http://www.imsglobal.org/xsd/iwb_v1p0";
 const QString svgIWBNS = "http://www.w3.org/2000/svg";
 const QString xlinkNS = "http://www.w3.org/1999/xlink";
-const QString iwbNS = "http://www.becta.org.uk/iwb";
+const QString iwbNS = "http://www.imsglobal.org/xsd/iwb_v1p0";
 const QString xsiNS = "http://www.w3.org/2001/XMLSchema-instance";
 const QString xsiShemaLocation = "\
 http://www.imsglobal.org/xsd/iwb_v1p0 \
@@ -333,8 +359,10 @@ stroke-lineshape-end \
 const QString ubzElementAttributesToConvert(" \
 xlink:href, \
 src, \
-transform \
-");
+transform, \
+uuid \
+"
+);
 
 // additional attributes. Have references in SVG section.
 const QString svgElementAttributes(" \
@@ -375,4 +403,4 @@ struct UBItemLayerType
     };
 };
 
-#endif // UBCFFCONSTANTS_H
\ No newline at end of file
+#endif // UBCFFCONSTANTS_H
diff --git a/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h b/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h
index adfc677..46c3940 100644
--- a/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h
+++ b/Sankore-3.1/plugins/cffadaptor/src/UBGlobals.h
@@ -1,3 +1,26 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBGLOBALS_H
 #define UBGLOBALS_H
 
diff --git a/Sankore-3.1/plugins/plugins.pri b/Sankore-3.1/plugins/plugins.pri
new file mode 100644
index 0000000..ddf3113
--- /dev/null
+++ b/Sankore-3.1/plugins/plugins.pri
@@ -0,0 +1,6 @@
+HEADERS +=  plugins/cffadaptor/src/UBCFFAdaptor_global.h \
+            plugins/cffadaptor/src/UBCFFAdaptor.h \
+            plugins/cffadaptor/src/UBCFFConstants.h \
+            plugins/cffadaptor/src/UBGlobals.h
+
+SOURCES +=  plugins/cffadaptor/src/UBCFFAdaptor.cpp
diff --git a/Sankore-3.1/release.linux.sh b/Sankore-3.1/release.linux.sh
index 313ac7d..c006015 100644
--- a/Sankore-3.1/release.linux.sh
+++ b/Sankore-3.1/release.linux.sh
@@ -113,6 +113,7 @@ notify-send "Git Hub" "Make a tag of the delivered version"
 VERSION=`cat $RELEASE_DIR/version`
 if [ ! -f $RELEASE_DIR/version ]; then
     notifyError "version not found"
+    exit 1
 else
     LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
     if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
@@ -358,4 +359,4 @@ cd $RELEASE_DIR
 rm ../../../install/linux/Open-Sankore.tar.gz
 
 tar cvzf ../../../install/linux/Open-Sankore.tar.gz Open-Sankore.$VERSION -C . 
-notify-send "Open-Sankore"  "tar.gz Build done"
\ No newline at end of file
+notify-send "Open-Sankore"  "tar.gz Build done"
diff --git a/Sankore-3.1/release.macx.sh b/Sankore-3.1/release.macx.sh
index a08dffc..44fc5ee 100644
--- a/Sankore-3.1/release.macx.sh
+++ b/Sankore-3.1/release.macx.sh
@@ -15,7 +15,7 @@
 # ---------------------------------------------------------------------
 
 
-BASE_TROLLTECH_DIRECTORY=/usr/local/Trolltech/Qt-4.7.3
+BASE_TROLLTECH_DIRECTORY=/usr/local/Trolltech/Qt-4.8.0
 # Executables
 QMAKE=$BASE_TROLLTECH_DIRECTORY/bin/qmake
 MACDEPLOYQT=$BASE_TROLLTECH_DIRECTORY/bin/macdeployqt
@@ -29,7 +29,7 @@ LRELEASE=$BASE_TROLLTECH_DIRECTORY/bin/lrelease
 # Directories
 BUILD_DIR="build/macx/release"
 PRODUCT_DIR="$BUILD_DIR/product"
-BASE_QT_TRANSLATIONS_DIRECTORY=../Qt-sankore3.1/translations
+BASE_QT_TRANSLATIONS_DIRECTORY=../Qt4.8/translations
 
 function notify {
     GROWLNOTIFY=`which growlnotify`
@@ -104,13 +104,14 @@ checkExecutable "$LRELEASE"
 notify "Cleaning ..."
 rm -rf "$BUILD_DIR"
 
-notify "Translations ..."
+# application translations
+notify "Generating applications translatons"
 $LRELEASE "Sankore_3.1.pro"
 
 # generate Makefiles
 notify "Generating Makefile ..."
 
-QMAKE_CMD="$QMAKE -spec macx-g++"
+QMAKE_CMD="$QMAKE Sankore_3.1.pro -spec macx-g++"
 
 $QMAKE_CMD
 
@@ -118,6 +119,8 @@ $QMAKE_CMD
 notify "Compiling ..."
 make -j4 release
 
+notify "Qt Translations ..."
+$LRELEASE $BASE_QT_TRANSLATIONS_DIRECTORY/translations.pro 
 addQtTranslations
 
 cp -R resources/customizations $PRODUCT_DIR/Open-Sankore.app/Contents/Resources
@@ -131,8 +134,8 @@ else
     LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
     if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
 	echo creating a tag with the version $VERSION
-#	git tag -a "v$VERSION" -m "Generated setup for v$VERSION"
-#	git push origin --tags
+	#git tag -a "v$VERSION" -m "Generated setup for v$VERSION"
+	#git push origin --tags
     fi
 fi
   
@@ -200,13 +203,16 @@ notify "Creating dmg ..."
 umount "$VOLUME" 2> /dev/null
 $DMGUTIL --open --volume="$NAME" "$DMG"
 
+cp *.pdf "$VOLUME"
 cp -R "$APP" "$VOLUME"
 ln -s /Applications "$VOLUME"
 
 $DMGUTIL --set --iconsize=96 --toolbar=false --icon=resources/macx/UniboardDmg.icns "$VOLUME"
-$DMGUTIL --set --x=20 --y=60 --width=580 --height=312 "$VOLUME"
-$DMGUTIL --set --x=180 --y=160 "$VOLUME/`basename \"$APP\"`"
-$DMGUTIL --set --x=400 --y=160 "$VOLUME/Applications"
+$DMGUTIL --set --x=20 --y=60 --width=580 --height=440 "$VOLUME"
+$DMGUTIL --set --x=180 --y=120 "$VOLUME/`basename \"$APP\"`"
+$DMGUTIL --set --x=400 --y=120 "$VOLUME/Applications"
+$DMGUTIL --set --x=180 --y=280 "$VOLUME/ReleaseNotes.pdf"
+$DMGUTIL --set --x=400 --y=280 "$VOLUME/JournalDesModifications.pdf"
 
 $DMGUTIL --close --volume="$NAME" "$DMG"
 
diff --git a/Sankore-3.1/release.win7.vc9.bat b/Sankore-3.1/release.win7.vc9.bat
index c11d938..fd45308 100644
--- a/Sankore-3.1/release.win7.vc9.bat
+++ b/Sankore-3.1/release.win7.vc9.bat
@@ -1,7 +1,8 @@
+echo off
 REM --------------------------------------------------------------------
 REM This program is free software: you can redistribute it and/or modify
 REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
+REM the Free Software Foundation, either version 2 of the License, or
 REM (at your option) any later version.
 REM 
 REM This program is distributed in the hope that it will be useful,
@@ -13,11 +14,12 @@ REM You should have received a copy of the GNU General Public License
 REM along with this program.  If not, see <http://www.gnu.org/licenses/>.
 REM ---------------------------------------------------------------------
 
-set QT_DIR=..\Qt-sankore3.1
+set QT_DIR=..\Qt-4.8
 set QT_BIN=%QT_DIR%\bin
 
 set PROGRAMS_FILE_PATH=C:\Program Files
 
+set SEVEN_ZIP_EXE="%PROGRAMS_FILE_PATH%\7-Zip\7z.exe"
 set GIT_BIN=%PROGRAMS_FILE_PATH%\Git\bin
 set VS_BIN=%PROGRAMS_FILE_PATH%\Microsoft Visual Studio 9.0\VC\bin
 set WIN_SDK_BIN=%PROGRAMS_FILE_PATH%\Microsoft SDKs\Windows\v6.0A\Bin
@@ -35,17 +37,19 @@ echo %PATH%
 REM this checks if the custom qt directory path
 REM is correct. This is important because installer
 REM pick up dll from this directory
-IF NOT EXIST "..\Qt-sankore3.1\lib\QtCore4.dll" GOTO EXIT_WITH_ERROR
+IF NOT EXIST "%QT_DIR%\lib\QtCore4.dll" GOTO EXIT_WITH_ERROR
 
 rmdir /S /Q %BUILD_DIR%
+rmdir /S /Q install
 
-set EDITION=MNEMIS_EDITION
-
-"%QT_BIN%\qmake.exe" "DEFINES+=%EDITION%"
+"%QT_BIN%\qmake.exe" Sankore_3.1.pro
 
 %LRELEASE% Sankore_3.1.pro
+%LRELEASE% %BASE_QT_TRANSLATIONS_DIRECTORY%\translations.pro
 
-REM set /p VERSION= < build\win32\release\version
+set /p VERSION= < build\win32\release\version
+REM remove the last character that is a space
+set VERSION=%VERSION: =%
 REM git rev-list --tags --max-count=1 > tmp
 REM set /p LAST_TAG= < tmp
 REM erase tmp
@@ -56,14 +60,18 @@ REM erase tmp
 REM echo %VERSION%
 REM echo %LAST_TAG_VERSION%
 
-REM if not v%VERSION%==%LAST_TAG_VERSION% GOTO EXIT_WITH_ERROR
-
 nmake release-install
+IF NOT EXIST build\win32\release\product\Open-Sankore.exe GOTO EXIT_WITH_ERROR
+
+xcopy C:\OpenSankore\lib\*.dll build\win32\release\product\
+xcopy %QT_DIR%\lib\QtOpenGL4.dll build\win32\release\product\
 
+set CUSTOMIZATIONS=build\win32\release\product\customizations
+mkdir %CUSTOMIZATIONS%
+xcopy /s resources\customizations %CUSTOMIZATIONS%
 
-copy %BASE_QT_TRANSLATIONS_DIRECTORY%\qt_*.qm build\win32\release\product\i18n\
-mkdir build\win32\release\product\customizations
-xcopy /s resources\customizations\* build\win32\release\product\customizations
+set I18n=build\win32\release\product\i18n
+xcopy /s %BASE_QT_TRANSLATIONS_DIRECTORY%\qt_*.qm %I18n%\
 
 del build\win32\release\product\i18n\qt_help*
 
@@ -75,5 +83,18 @@ set INSTALLER_PATH=.\install\win32\%INSTALLER_NAME%.exe
 
 call "%INNO_EXE%" "Sankore 3.1.iss" /F"%INSTALLER_NAME%"
 
+set INSTALL_DIRECTORY=install\win32\
+xcopy *.pdf %INSTALL_DIRECTORY%
+cd %INSTALL_DIRECTORY%
+call %SEVEN_ZIP_EXE% a Open-Sankor‚_Windows_%VERSION%.zip *.exe *.pdf
+cd ..\..\
+GOTO END
+
 :EXIT_WITH_ERROR
-	echo ERROR
+echo "Error found"
+GOTO :EOF
+
+:END
+echo "Open-Sankore's build finished"
+
+:EOF
diff --git a/Sankore-3.1/resources/customizations/fonts/AlphoneticGB.ttf b/Sankore-3.1/resources/customizations/fonts/AlphoneticGB.ttf
new file mode 100644
index 0000000..caa9a29
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/AlphoneticGB.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/AndBasR.ttf b/Sankore-3.1/resources/customizations/fonts/AndBasR.ttf
new file mode 100644
index 0000000..d785cc9
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/AndBasR.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/Andika-R.ttf b/Sankore-3.1/resources/customizations/fonts/Andika-R.ttf
deleted file mode 100644
index b4320f6..0000000
Binary files a/Sankore-3.1/resources/customizations/fonts/Andika-R.ttf and /dev/null differ
diff --git a/Sankore-3.1/resources/customizations/fonts/Cursive standard Bold.ttf b/Sankore-3.1/resources/customizations/fonts/Cursive standard Bold.ttf
new file mode 100644
index 0000000..10d2f03
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/Cursive standard Bold.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/Cursive standard.ttf b/Sankore-3.1/resources/customizations/fonts/Cursive standard.ttf
new file mode 100644
index 0000000..e133354
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/Cursive standard.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/GinSSB60.ttf b/Sankore-3.1/resources/customizations/fonts/GinSSB60.ttf
new file mode 100644
index 0000000..924f1fe
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/GinSSB60.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/SCRIPTCO.TTF b/Sankore-3.1/resources/customizations/fonts/SCRIPTCO.TTF
new file mode 100644
index 0000000..f5fad5c
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/SCRIPTCO.TTF differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec.TTF b/Sankore-3.1/resources/customizations/fonts/ec.TTF
deleted file mode 100644
index 51401f7..0000000
Binary files a/Sankore-3.1/resources/customizations/fonts/ec.TTF and /dev/null differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec.ttf b/Sankore-3.1/resources/customizations/fonts/ec.ttf
new file mode 100644
index 0000000..972828c
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ec.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_co_pt.TTF b/Sankore-3.1/resources/customizations/fonts/ec_co_pt.TTF
deleted file mode 100644
index 209ff31..0000000
Binary files a/Sankore-3.1/resources/customizations/fonts/ec_co_pt.TTF and /dev/null differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_co_pt.ttf b/Sankore-3.1/resources/customizations/fonts/ec_co_pt.ttf
new file mode 100644
index 0000000..8d7fbff
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ec_co_pt.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_cour.TTF b/Sankore-3.1/resources/customizations/fonts/ec_cour.TTF
deleted file mode 100644
index 6984432..0000000
Binary files a/Sankore-3.1/resources/customizations/fonts/ec_cour.TTF and /dev/null differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_cour.ttf b/Sankore-3.1/resources/customizations/fonts/ec_cour.ttf
new file mode 100644
index 0000000..571571e
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ec_cour.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_cp.TTF b/Sankore-3.1/resources/customizations/fonts/ec_cp.TTF
deleted file mode 100644
index 8bb6d26..0000000
Binary files a/Sankore-3.1/resources/customizations/fonts/ec_cp.TTF and /dev/null differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_cp.ttf b/Sankore-3.1/resources/customizations/fonts/ec_cp.ttf
new file mode 100644
index 0000000..6842107
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ec_cp.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ec_cp_pt.ttf b/Sankore-3.1/resources/customizations/fonts/ec_cp_pt.ttf
new file mode 100644
index 0000000..8528df7
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ec_cp_pt.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ecl.ttf b/Sankore-3.1/resources/customizations/fonts/ecl.ttf
new file mode 100644
index 0000000..6fbafb9
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ecl.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/ecl_cour.ttf b/Sankore-3.1/resources/customizations/fonts/ecl_cour.ttf
new file mode 100644
index 0000000..af61c8e
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/ecl_cour.ttf differ
diff --git a/Sankore-3.1/resources/customizations/fonts/eclcopt.ttf b/Sankore-3.1/resources/customizations/fonts/eclcopt.ttf
new file mode 100644
index 0000000..811df3c
Binary files /dev/null and b/Sankore-3.1/resources/customizations/fonts/eclcopt.ttf differ
diff --git a/Sankore-3.1/resources/customizations/teacherGuide/indexingParameters.xml b/Sankore-3.1/resources/customizations/teacherGuide/indexingParameters.xml
index 09c4917..2a19451 100644
--- a/Sankore-3.1/resources/customizations/teacherGuide/indexingParameters.xml
+++ b/Sankore-3.1/resources/customizations/teacherGuide/indexingParameters.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <teacherGuide>
     <gradeLevels>
+        <gradeLevel label="" baseLevel="Maternelle"/>
         <gradeLevel label="Petite Section (3-4 ans)" baseLevel="Maternelle"/>
         <gradeLevel label="Moyenne Section (4-5 ans)" baseLevel="Maternelle"/>
         <gradeLevel label="Grande Section (5-6 ans)" baseLevel="Maternelle"/>
@@ -22,6 +23,7 @@
         <gradeLevel label="Education Spécialisée" baseLevel="Enseignement Professionnel" />
     </gradeLevels>
     <subjects baseLevel="Maternelle">
+        <subject label="" />
         <subject label="Percevoir, sentir, imaginer, créer" />
         <subject label="Découvrir l'écrit" />
         <subject label="S'approprier le langage" />
@@ -29,6 +31,7 @@
         <subject label="Découvrir le monde" />
     </subjects>
     <subjects baseLevel="Elémentaire">
+        <subject label="" />
         <subject label="Pratiques artistiques" />
         <subject label="Pratiques artistiques - arts visuels" />
         <subject label="Pratiques artistiques - éducation musicale" />
@@ -50,6 +53,7 @@
         <subject label="TUIC" />
     </subjects>
     <subjects baseLevel="Collège">
+        <subject label="" />
         <subject label="Pratiques artistiques" />
         <subject label="Pratiques artistiques - arts visuels" />
         <subject label="Pratiques artistiques - éducation musicale" />
@@ -80,6 +84,7 @@
         <subject label="Education aux médias" />
     </subjects>
     <subjects baseLevel="Lycée">
+        <subject label="" />
         <subject label="Enseignements artistiques" />
         <subject label="Agriculture" />
         <subject label="Arts" />
@@ -125,6 +130,7 @@
         <subject label="Philosophie" />
     </subjects>
     <subjects baseLevel="Enseignement Professionnel">
+        <subject label="" />
         <subject label="Enseignements artistiques" />
         <subject label="Agriculture" />
         <subject label="Arts" />
@@ -169,6 +175,7 @@
         <subject label="Philosophie" />
     </subjects>
     <types>
+        <type label="" />
         <type label="Activité : Evaluation/Travail à la maison" />
         <type label="Activité : Exercice" />
         <type label="Activité : Travaux Pratiques" />
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/calepin.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/calepin.png
new file mode 100644
index 0000000..e710d8c
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/calepin.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/connect_screen.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/connect_screen.png
deleted file mode 100644
index 4bfde7f..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/connect_screen.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/login_paraschool.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/login_paraschool.png
deleted file mode 100644
index 7e511f5..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/login_paraschool.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logo.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logo.png
new file mode 100644
index 0000000..e1a85e3
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logo.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logoplanetesankore.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logoplanetesankore.png
new file mode 100644
index 0000000..c6f4ac3
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/logoplanetesankore.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/mappe.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/mappe.png
new file mode 100644
index 0000000..f9548be
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/mappe.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/outils.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/outils.png
new file mode 100644
index 0000000..0ef1c5b
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/files/outils.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/index.html b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/index.html
index e97d669..e9aaa66 100644
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/index.html
+++ b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/index.html
@@ -1,79 +1,81 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!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=utf-8" />
-		<meta name="generator" content="RapidWeaver" />
-		
-		<title>Editor</title>
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/styles.css" />
-		<!--[if IE 6]><link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/ie6.css" /><![endif]-->
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/colourtag-theme-default.css" />
-		<link rel="stylesheet" type="text/css" media="print" href="rw_common/themes/caribou/print.css" />
-		<link rel="stylesheet" type="text/css" media="handheld" href="rw_common/themes/caribou/handheld.css" />
-		<!--[if IE]><style type="text/css" media="screen">body {behavior: url(rw_common/themes/caribou/csshover.htc);}</style><![endif]-->
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/banner/swirls.css" />
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/logo_position/center.css" />
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/sidebar/sidebar_right.css" />
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/icons/black.css" />
-		
-		
-		<script type="text/javascript" src="rw_common/themes/caribou/javascript.js"></script>
-		
-		
-		
-		
-		<script type="text/javascript" charset="utf-8">	var blankSrc = "rw_common/themes/caribou/png/blank.gif";</script>	
-		<style type="text/css">	img { behavior:	url("rw_common/themes/caribou/png/pngbehavior.htc"); }</style>
-	</head>
-	
-	<!-- This page was created with RapidWeaver from Realmac Software. http://www.realmacsoftware.com -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Sankoré editor</title>
+<style type="text/css">
+<!--
+.white {	color: #FFF;
+}
+body {
+	background-color: #E5E3DB;
+}
+body,td,th {
+	font-family: Verdana, Geneva, sans-serif;
+	color: #666;
+	text-align: left;
+}
+.conteneur {
+	background-color: #5C5C5C;
+	text-align: center;
+}
+.c {
+	text-align: center;
+}
+.m {
+	font-size: medium;
+}
+a:link {
+	color: #666;
+}
+a:visited {
+	color: #666;
+}
+a:hover {
+	color: #000;
+}
+a:active {
+	color: #666;
+}
+-->
+</style>
+</head>
 
 <body>
-<div id="bar"></div>
-<div id="container"><!-- Start container -->
-	<div id="pageHeader"><!-- Start page header -->
-		<div id="navcontainer"><!-- Start Navigation -->
-			<ul><li><a href="index.html" rel="self" id="current">Editor</a></li></ul>
-		</div><!-- End navigation --> 
-		<div id="title">
-			<div id="logo"></div>
-			<h1>Sankoré Editor</h1>
-			<h2>Instructions on how to use the Sankoré Editor</h2>
-			<div id="overlay_swirls"><img src="rw_common/themes/caribou/images/header_swirls.png" alt="" style="width: 900px; height: 150px;" /></div>
-			<div id="overlay_stripes_glow"><img src="rw_common/themes/caribou/images/header_stripes_glow.png" alt="" style="width: 900px; height: 150px;" /></div>
-			<div id="overlay_stripes_solid"><img src="rw_common/themes/caribou/images/header_stripes_solid.png" alt="" style="width: 900px; height: 150px;" /></div>
-			<div id="overlay_curve_solid"><img src="rw_common/themes/caribou/images/header_curve_solid.png" alt="" style="width: 900px; height: 150px;" /></div>
-		</div>
-		<div id="background"><img src="rw_common/themes/caribou/images/header_bg.png" alt="" style="width: 914px; height: 197px;" /></div>
-	</div><!-- End page header -->
-	
-	<div id="contentContainer"><!-- Start main content wrapper -->
-		<div id="content"><!-- Start content -->
-			<div class="contentSpacer"></div><!-- this makes sure the content is long enough for the design -->
-			<p style="text-align:center;"><br /><br /><br /></p><p style="text-align:left;"><span style="font:14px Trebuchet, Verdana, serif; font-weight:bold; font-weight:bold; ">The Sankoré Editor allows you to create rich interactivity scenarios to be used within the Sankoré 3.1 Software</span><span style="font:12px Trebuchet, Verdana, serif; "><br /></span><span style="font:11px Trebuchet, Verdana, serif; "><br />BEWARE : You must be connected to the Internet to use the editor and the current version is only available in french</span><span style="font:12px Trebuchet, Verdana, serif; "><br /><br /></span><span style="font:13px Trebuchet, Verdana, serif; ">When you get into the editor, you will need to authentify.<br /><br />In order to test it, you can, just as shown below, use the identifier and password “demo”.<br /></span><span style="font:12px Trebuchet, Verdana, serif; "><br /></span></p><p style="text-align:center;"><img class="imageStyle" alt="login_paraschool" src="files/login_paraschool.png" width="371" height="252" /><span style="font:12px Trebuchet, Verdana, serif; "><br /></span></p><p style="text-align:left;"><span style="font:12px Trebuchet, Verdana, serif; "><br /></span><span style="font:13px Trebuchet, Verdana, serif; ">If you wish to use it as your personal content creation tool, please send a mail to this </span><span style="font:13px Trebuchet, Verdana, serif; "><a href="mailto:daniel.lebret at gmail.com" rel="self">address</a></span><span style="font:13px Trebuchet, Verdana, serif; "> explaining you want to create an account for the Sankoré Editor.<br /><br /></span></p><p style="text-align:center;"><span style="font:13px Trebuchet, Verdana, serif; "><a href="http://editeur.sankore.org" rel="self">Click here to connect to the Sankoré Editor<br /></a></span><a href="http://editeur.sankore.org" rel="self"><img class="imageStyle" alt="connect_screen" src="files/connect_screen.png" width="303" height="75" /></a></p>
-			<div class="clearer"></div>
-		</div><!-- End content -->
-		
-	</div><!-- End main content wrapper -->
-	
-	<div id="sidebarContainer"><!-- Start Sidebar wrapper -->
-		<div id="sidebar"><!-- Start sidebar content -->
-		<div class="sideHeader"></div><!-- Sidebar header --> 
-			<!-- sidebar content you enter in the page inspector -->
-			 <!-- sidebar content such as the blog archive links -->
-		</div><!-- End sidebar content -->
-	</div><!-- End sidebar wrapper -->
-	
-	<div class="clearer"></div>
-	
-</div><!-- End container -->
-
-<div class="clearer"></div>
-<div id="footer"><!-- Start Footer -->
-	<p></p>
-	<div id="breadcrumbcontainer"><!-- Start the breadcrumb wrapper -->
-		
-	</div><!-- End breadcrumb -->
-</div><!-- End Footer -->
+<table width="843" border="0" align="center">
+  <tr>
+    <td class="conteneur"><p><img src="files/logo.png" width="196" height="22" alt="editeur" /></p>
+    <p><span class="white">Instructions on how to use Sankoré editor </span></p>
+    <p><span class="white">THE CURRENT VERSION IS ONLY AVAILABLE IN FRENCH</span></p></td>
+  </tr>
+  <tr>
+    <td><div align="center"><img src="files/outils.png" width="128" height="128" alt="outils" /> <img src="files/mappe.png" width="128" height="128" alt="mappe" /> <img src="files/calepin.png" width="128" height="128" alt="calepin" /></div></td>
+  </tr>
+  <tr>
+    <td><p>Sankoré Editor allows you to create rich interactivity scenarios. Create interactive content easily with basic activities that can be used in various subjects (attach images, sounds, order of words, phrases, create categories ...). This content can then be added to the software Open-Sankore. </p></td>
+  </tr>
+  <tr>
+    <td><p>Requirement to work with the editor :</p>
+      <ul>
+        <li>a Web access</li>
+        <li>an account on Planète Sankoré</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td><div align="center">
+      <p> </p>
+      <p><a href="http://editeur.sankore.org" title="Editeur" target="_self" class="c">Click here to connect to the Sankoré Editor</a></p>
+    </div></td>
+  </tr>
+  <tr>
+    <td><p> </p>
+    <p> </p>
+    <p> </p></td>
+  </tr>
+  <tr>
+    <td>Sankoré editor is hosted on <a href="http://planete.sankore.org/" target="_self">planete.sankore.org</a></td>
+  </tr>
+</table>
+<p> </p>
 </body>
 </html>
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/colourtag-theme-default.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/colourtag-theme-default.css
deleted file mode 100644
index 15d1220..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/colourtag-theme-default.css
+++ /dev/null
@@ -1,99 +0,0 @@
-/* @group Layout Colours */
-
-#bar,
-.photo-navigation,
-.movie-title {
-	background-color: #51748C;
-}
-
-#pageHeader #title {
-	background-color: #FF7E00;
-}
-
-#pageHeader h1,
-#pageHeader h2 {
-	text-shadow: 0px -1px 0px #994B00;
-}
-
-#footer {
-	background-color: #82B4D7;
-}
-
-#footer p {
-	text-shadow: 0px -1px 0px #4E6C81;
-}
-
-#breadcrumbcontainer li {
-	color: #5B7E96;
-}
-
-/* @end */
-
-/* @group Content Colours */
-	
-body,
-.blog-entry-body,
-.blog-entry-date,
-.blog-entry {
-	color: #7F7F7F;
-}
-
-
-#sidebarContainer .sideHeader,
-#sidebarContainer #sidebar h1,
-#sidebarContainer #sidebar h2,
-#sidebarContainer #sidebar h3 {
-	color: #51748C;
-}
-
-#sidebarContainer {
-	color: #A6A6A6;
-}
-
-#sidebarContainer #sidebar a,
-#breadcrumbcontainer,
-a:link, a:visited {
-	color: #656565;
-}
-
-h1, h2, h3, h4, h5,
-h1.blog-entry-title a,
-.blog-archive-headings-wrapper,
-.album-title,
-.photo-title,
-.movie-page-title {
-	color: #FF7E00;
-}
-
-
-
-/* @end */
-
-/* @group Navbar */
-
-#navcontainer a {
-	color: #7F7F7F;
-}
-
-#navcontainer a:hover,
-#navcontainer #current,
-#navcontainer .currentAncestor,
-#sidebarContainer #sidebar a:hover,
-.photo-navigation a:hover,
-a:hover, a:active,
-form,
-h1 {
-	color: #FF7E00;
-}
-
-#navcontainer ul ul a:hover,
-#navcontainer ul ul #current,
-#navcontainer ul ul .currentAncestor {
-	background: #FF7E00;
-	color: #fff;
-	border-bottom-color: #FF7E00;
-}
-
-
-
-/* @end */
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/curve_solid.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/curve_solid.css
deleted file mode 100644
index da249e3..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/curve_solid.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_curve_solid {
- 	display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_glow.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_glow.css
deleted file mode 100644
index 444f0e6..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_glow.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_stripes_glow {
-display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_solid.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_solid.css
deleted file mode 100644
index 39c2521..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/stripes_solid.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_stripes_solid {
-	display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/swirls.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/swirls.css
deleted file mode 100644
index 6b185fc..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/banner/swirls.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_swirls {
-	display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/alternative.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/alternative.css
deleted file mode 100644
index 0a662f2..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/alternative.css
+++ /dev/null
@@ -1,70 +0,0 @@
-.filesharing-item {
-	background: url(../../images/download_icon.png) no-repeat 0 3px;
-	padding-left: 20px;
-}
-
-/* @group Blog */
-
-.blog-archive-link {
-	background: url(../../images/blog_home.png) no-repeat 0 5px;
-	padding-left: 20px;
-}
-
-.blog-entry-date {
-	padding-left: 20px;
-	background: url(../../images/blog_clock.png) no-repeat 0 3px;
-}
-
-/*styles the category link in the main entry */
-.blog-entry-category {
-	background: url(../../images/blog_file.png) no-repeat 0 0;
-}
-
-.blog-entry-body {
-	padding: 20px 0 40px 0;
-	background: url(../../images/blog_bottom_bar.png) no-repeat left bottom;
-}
-
-.blog-entry-comments {
-	padding-left: 20px;
-	background: url(../../images/blog_comments.png) no-repeat 0 3px;
-}
-
-.blog-trackback-link {
-	padding-left: 20px;
-	background: url(../../images/blog_trackback.png) no-repeat 0 0px;
-}
-
-p.blog-entry-tags {
-	background: url(../../images/blog_tag.png) no-repeat 0 3px;
-}
-
-/* styles the archives in the blog sidebar */
-
-.blog-archive-link-enabled {
-
-	background: url(../../images/blog_icon.png) no-repeat 0;
-}
-
-.blog-archive-link-disabled {
-	background: url(../../images/blog_icon.png) no-repeat 0;
-}
-
-/* Styles the blog categories in the blog sidebar */
-
-.blog-category-link-enabled {
-	background: url(../../images/blog_file.png) no-repeat 0;
-}
-
-.blog-category-link-disabled {
-	background: url(../../images/blog_file.png) no-repeat 0 3px;
-}
-
-.blog-rss-link {
-	background: url(../../images/blog_rss.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/blog_rss.png) no-repeat 0;
-}
-	
-/* @end */
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/black.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/black.css
deleted file mode 100644
index a816248..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/black.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_black.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_black.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_black.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_black.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/blue.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/blue.css
deleted file mode 100644
index a8fdad0..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/blue.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_blue.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_blue.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_blue.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_blue.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/brown.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/brown.css
deleted file mode 100644
index 52d8a6b..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/brown.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_brown.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_brown.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_brown.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_brown.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/green.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/green.css
deleted file mode 100644
index 1114ad4..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/green.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_green.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_green.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_green.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_green.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/pink.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/pink.css
deleted file mode 100644
index ac25b09..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/pink.css
+++ /dev/null
@@ -1,26 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_pink.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_pink.png) no-repeat left 2px;
-}
-
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_pink.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_pink.png) no-repeat left 2px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/red.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/red.css
deleted file mode 100644
index 7d23dfd..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/icons/red.css
+++ /dev/null
@@ -1,32 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_red.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_red.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_red.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_red.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/ie6.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/ie6.css
deleted file mode 100644
index fbd4e6f..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/ie6.css
+++ /dev/null
@@ -1,4 +0,0 @@
-#navcontainer a {
-	padding: 15px 15px 17px 15px;
-	height: 0px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/center.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/center.css
deleted file mode 100644
index ee422a9..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/center.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #logo img {
-	margin: 10px auto 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/left.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/left.css
deleted file mode 100644
index beb0cbf..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/left.css
+++ /dev/null
@@ -1,4 +0,0 @@
-#pageHeader #logo img {
-	float: left;
-	margin: 10px 0 0 30px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/right.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/right.css
deleted file mode 100644
index a4a0caf..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/logo_position/right.css
+++ /dev/null
@@ -1,4 +0,0 @@
-#pageHeader #logo img {
-	float: right;
-	margin: 10px 30px 0 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_left.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_left.css
deleted file mode 100644
index d9592ad..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_left.css
+++ /dev/null
@@ -1,15 +0,0 @@
-#contentContainer {
-	float: right;
-	padding-right: 7px;
-	background-position: top left;
-}
-
-#sidebarContainer {
-	float: left;
-	padding-left: 7px;	
-}
-
-#sidebarContainer #sidebar {
-	padding-left: 30px;
-	padding-right: 10px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_none.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_none.css
deleted file mode 100644
index d18e1f2..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_none.css
+++ /dev/null
@@ -1,8 +0,0 @@
-#sidebarContainer {
-	display: none;
-}
-
-#contentContainer {
-	width: auto;
-	background-image: none;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_right.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_right.css
deleted file mode 100644
index 5a0a941..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/css/sidebar/sidebar_right.css
+++ /dev/null
@@ -1,15 +0,0 @@
-#contentContainer {
-	float: left;
-	padding-left: 7px;
-	background-position: top right;
-}
-
-#sidebarContainer {
-	float: right;
-	padding-right: 7px;		
-}
-
-#sidebarContainer #sidebar {
-	padding-right: 30px;
-	padding-left: 10px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/csshover.htc b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/csshover.htc
deleted file mode 100644
index 20645fd..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/csshover.htc
+++ /dev/null
@@ -1,116 +0,0 @@
-<attach event="ondocumentready" handler="parseStylesheets" />
-<script>
-/**
- *	Whatever:hover - V2.01.050927 - hover, active & focus
- *	------------------------------------------------------------
- *	(c) 2005 - Peter Nederlof
- *	Peterned - http://www.xs4all.nl/~peterned/
- *	License  - http://creativecommons.org/licenses/LGPL/2.1/
- *
- *	Whatever:hover 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.
- *
- *	Whatever:hover is distributed in the hope that 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.
- *
- *	Credits and thanks to:
- *	Arnoud Berendsen, Martin Reurings, Robert Hanson
- *
- *	howto: body { behavior:url("csshover.htc"); }
- *	------------------------------------------------------------
- */
-
-var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea):unknown)/i,
-currentSheet, doc = window.document, hoverEvents = [], activators = {
-	onhover:{on:'onmouseover', off:'onmouseout'},
-	onactive:{on:'onmousedown', off:'onmouseup'},
-	onunknown:{on:'onfocus', off:'onblur'}
-}
-
-function parseStylesheets() {
-	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
-	window.attachEvent('onunload', unhookHoverEvents);
-	var sheets = doc.styleSheets, l = sheets.length;
-	for(var i=0; i<l; i++) 
-		parseStylesheet(sheets[i]);
-}
-	function parseStylesheet(sheet) {
-		if(sheet.imports) {
-			try {
-				var imports = sheet.imports, l = imports.length;
-				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
-			} catch(securityException){}
-		}
-
-		try {
-			var rules = (currentSheet = sheet).rules, l = rules.length;
-			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
-		} catch(securityException){}
-	}
-
-	function parseCSSRule(rule) {
-		var select = rule.selectorText, style = rule.style.cssText;
-		if(!csshoverReg.test(select) || !style) return;
-		
-		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
-		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
-		var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
-		var affected = select.replace(/:(hover|active|unknown).*$/, '');
-		var elements = getElementsBySelect(affected);
-		if(elements.length == 0) return;
-
-		currentSheet.addRule(newSelect, style);
-		for(var i=0; i<elements.length; i++)
-			new HoverElement(elements[i], className, activators[pseudo]);
-	}
-
-function HoverElement(node, className, events) {
-	if(!node.hovers) node.hovers = {};
-	if(node.hovers[className]) return;
-	node.hovers[className] = true;
-	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
-	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
-}
-	function hookHoverEvent(node, type, handler) {
-		node.attachEvent(type, handler);
-		hoverEvents[hoverEvents.length] = { 
-			node:node, type:type, handler:handler 
-		};
-	}
-
-	function unhookHoverEvents() {
-		for(var e,i=0; i<hoverEvents.length; i++) {
-			e = hoverEvents[i]; 
-			e.node.detachEvent(e.type, e.handler);
-		}
-	}
-
-function getElementsBySelect(rule) {
-	var parts, nodes = [doc];
-	parts = rule.split(' ');
-	for(var i=0; i<parts.length; i++) {
-		nodes = getSelectedNodes(parts[i], nodes);
-	}	return nodes;
-}
-	function getSelectedNodes(select, elements) {
-		var result, node, nodes = [];
-		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
-		if(identify) return [doc.getElementById(identify[1])];
-		
-		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
-		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
-		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
-		for(var i=0; i<elements.length; i++) {
-			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
-			for(var j=0; j<result.length; j++) {
-				node = result[j];
-				if(classReg && !classReg.test(node.className)) continue;
-				nodes[nodes.length] = node;
-			}
-		}	return nodes;
-	}
-</script>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/handheld.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/handheld.css
deleted file mode 100644
index 73e70c0..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/handheld.css
+++ /dev/null
@@ -1,545 +0,0 @@
-/*<group=General Styles>*/
-
-body {
-	text-align: left;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 0.9em;
-	margin: 0px;
-	padding: 0;
-	white-space: pre;
-}
-
-p {
-}
-
-b, strong {
-
-}
-
-a:link {
-	color: #0000ff;
-	text-decoration: underline;
-}
-
-a:visited {
-	color: #681796;
-}
-
-a:hover, a:active {
-	text-decoration: none;
-	background: #0000ff;
-	color: #ffffff;
-}
-
-img {
-	max-width: 99%;
-}
-
-.image-left {
-
-}
-
-.image-right {
-
-}
-	
-/*</group>*/
-
-/*<group=Layout>*/
-
-#container { 
-	background: #ffffff;
-	background-image: none;
-	width: 100%;
-}
-
-#pageHeader {
-	height: auto;
-	text-align: left;
-	margin-bottom: 8px;
-	background: #000000;
-	padding: 3px;
-	border-bottom: solid #191919 2px;
-}
-
-#pageHeader img {
-	position: relative;
-	top: auto;
-	right: auto;
-}
-
-#pageHeader h1 {
-	color: #ffffff;
-	font-size: 1.3em;
-	margin: 0 0 5px;
-	padding-top: 0px;
-	font-weight: bold;
-}
-
-#pageHeader h2 {
-	font-size: 1.1em;
-	margin: 0;
-	color: #ffffff;
-	font-weight: normal;
-}
-
-#contentContainer {
-	margin: 0px;
-	display: block;
-	width: auto;
-}
-
-#contentContainer #content {
-	margin: 0;
-	padding: 0;
-}
-
-#sidebarContainer {
-	float: none;
-	width: auto;
-	display: block;
-	margin-bottom: 10px;
-	padding-bottom: 10px;
-	border-bottom: 1px solid #808080;
-}
-
-#sidebarContainer #sidebar {
-	margin: 0;
-	padding: 0px;
-}
-
-#sidebarContainer .sideHeader {
-	color: #000000;
-	font-weight: bold;
-	margin-bottom: 5px;
-}
-
-#footer { 
-	width: auto;
-	text-align: left;
-	padding: 0px;
-	margin: 0;
-}
-
-#footer p {
-}
-
-#footer a:link, #footer a:visited {
-
-}
-
-#footer a:hover, #footer a:active {
-}
-	
-/*</group>*/
-
-/*<group=Bread-crumb>*/
-
-#breadcrumbcontainer {
-	margin-bottom: 5px;
-}
-
-#breadcrumbcontainer ul {
-	list-style: none;
-	margin: 0;
-	padding: 0;
-}
-
-#breadcrumbcontainer li {
-	display: inline;
-	padding: 0;
-	margin: 0;
-}
-
-#breadcrumbcontainer a {
-	padding: 0;
-}
-
-#breadcrumbcontainer a:hover {
-
-}
-	
-/*</group>*/
-
-/*<group=Toolbar>*/
-
-/* Toolbar Styles */
-
-#navcontainer {
-	color: #000000;
-	margin: 0 0 10px 0;
-	padding: 0;
-}
-
-#navcontainer #current {
-
-}
-
-#navcontainer #current:hover {
-}
-
-#navcontainer .currentAncestor {
-
-}
-
-/* Parent - Level 0 */
-
-#navcontainer ul{
-	margin: 0;
-	padding: 0;
-	list-style-type: none;
-}
-
-#navcontainer li {
-	margin: 0;
-	padding: 0;
-}
-
-#navcontainer a {
-	padding: 0;
-}
-
-#navcontainer a:hover {
-}
-
-#navcontainer a:active {
-}
-
-/* Child - Level 1 */
-
-#navcontainer ul ul {
-	list-style-type: none;
-	margin-left: 2px;
-	padding: 0;
-	color: black;
-}
-
-#navcontainer ul ul li {
-	padding-left: 5px;
-}
-
-#navcontainer ul ul a {
-	padding: 0;
-}
-
-#navcontainer ul ul a:hover{
-}
-
-#navcontainer ul ul #current{
-}
-
-/* Child - Level 2 */
-
-#navcontainer ul ul ul {
-
-}
-
-#navcontainer ul ul ul li {
-	padding-left: 10px;
-}
-
-#navcontainer ul ul ul a{
-}
-
-#navcontainer ul ul ul a:hover{
-
-}
-
-/* Child Level 3 */
-
-#navcontainer ul ul ul {
-
-}
-
-#navcontainer ul ul ul ul li {
-	padding-left: 15px;
-}
-
-#navcontainer ul ul ul ul a{
-}
-
-#navcontainer ul ul ul ul a:hover{
-
-}
-
-/* Child Level 4 */
-
-#navcontainer ul ul ul ul {
-
-}
-
-#navcontainer ul ul ul ul ul li {
-	padding-left: 20px;
-}
-
-#navcontainer ul ul ul ul ul a{
-}
-
-#navcontainer ul ul ul ul ul a:hover{
-
-}
-
-/* Child Level 5 */
-
-#navcontainer ul ul ul ul ul {
-
-}
-
-#navcontainer ul ul ul ul ul ul li { 
-}
-
-#navcontainer ul ul ul ul ul ul a{
-}
-
-#navcontainer ul ul ul ul ul ul a:hover{
-
-}
-
-/*</group>*/
-
-/*<group=Global Classes>*/
-
-blockquote, .standout {
-	margin: 0;
-	padding: 5px;
-	font-weight: bold;
-}
-
-h1 {
-}
-
-h2 {
-}
-
-h3 {
-}
-
-h4 {
-}
-
-.imageStyle {
-
-}
-	
-/*</group>*/
-
-/*<group=Blog>*/
-
-/*<group=Archive Page>*/
-
-.blog-archive-background {
-}

.blog-archive-headings-wrapper {
-}
-
-.blog-archive-entries-wrapper {
-}
-
-.blog-archive-entries-wrapper .blog-entry {
-}

.blog-archive-month {
-}
-
-.blog-archive-link {
-}

.blog-archive-link a:link, .blog-archive-link a:visited {
-}
-	
-/*</group>*/
-
-.blog-entry {
-}
-
-.blog-entry-title {
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.blog-entry-date {
-	margin-bottom: 8px;
-	font-size: 0.9em;
-	color: #808080;
-}
-
-.blog-entry-body {
-	margin-bottom: 5px;
-	padding-bottom: 5px;
-	border-bottom: 1px solid #cccccc;
-}
-
-.blog-entry-comments {
-	display: none;
-}
-
-.blog-entry-category {
-}
-
-.blog-category-link-enabled {
-}
-
-.blog-category-link-disabled {
-}
-
-/*</group>*/
-
-/*<group=File Sharing>*/
-
-.filesharing-description {
-}
-
-.filesharing-item {
-	margin-bottom: 5px;
-	padding-bottom: 5px;
-	border-bottom: 1px solid #cccccc;
-}
-
-.filesharing-item-title a:link {
-}
-
-.filesharing-item-title a:hover {
-}
-
-.filesharing-item-title a:visited {
-
-}
-
-.filesharing-item-description {
-}
-
-/*</group>*/
-
-/*<group=Photo Album>*/
-
-/*<group=Index Page (Thumbnail view)>*/
-
-.album-title {
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.album-description {
-	margin-bottom: 8px;
-	font-size: 0.9em;
-	color: #808080;
-}
-
-table.thumbnail-table {
-	width: 99%;
-}
-
-table.thumbnail-table, table.thumbnail-table tr, table.thumbnail-table td {
-	display: block;
-}
-
-.thumbnail-frame {
-}
-
-.thumbnail-frame:hover {
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-}
-
-.thumbnail-frame img {
-}
-
-.thumbnail-caption {
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Photo view)>*/
-
-.photo-background {
-}
-
-.photo-navigation {
-}
-
-.photo-links {
-}
-
-.photo-navigation a:link, .photo-navigation a:visited {
-
-}
-
-.photo-navigation a:hover {
-
-}
-
-.photo-frame{
-}
-
-.photo-title {
-}
-
-.photo-caption {
-}
-
-/*</group>*/
-	
-/*</group>*/
-
-/*<group=Quicktime Page>*/
-
-.movie-description {
-
-}
-	
-/*</group>*/
-
-/*<group=Quicktime Album>*/
-
-/*<group=Index Page (Movie Thumbnail view)>*/
-
-.movie-page-title {
-	font-weight: bold;
-	margin-bottom: 3px;
-}

.movie-page-description {
-	margin-bottom: 8px;
-	font-size: 0.9em;
-	color: #808080;
-}

.movie-thumbnail-frame {
-}
-
-.movie-thumbnail-frame:hover {
-}
-
-.movie-thumbnail-caption {
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Movie View)>*/
-
-.movie-background {
-}
-
-.movie-title {
-}
-
-.movie-frame {
-
-}
-	
-/*</group>*/
-
-
-/*</group>*/
-
-/*<group=Contact Form>*/
-.message-text { 
-} 
-
-.required-text {
-} 
-
-.form-input-field {
-	max-width: 100%;
-} 
-
-.form-input-button { 
-} 
-/*</group>*/
-
-
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_bottom_bar.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_bottom_bar.png
deleted file mode 100644
index a76ad53..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_bottom_bar.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_clock.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_clock.png
deleted file mode 100644
index 9aed16d..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_clock.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_comments.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_comments.png
deleted file mode 100644
index 36af5fc..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_comments.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_file.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_file.png
deleted file mode 100644
index 2c723b4..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_file.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_home.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_home.png
deleted file mode 100644
index b69156e..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_home.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_icon.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_icon.png
deleted file mode 100644
index 417efe6..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_rss.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_rss.png
deleted file mode 100644
index 3c7e843..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_rss.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_tag.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_tag.png
deleted file mode 100644
index 3be0335..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_tag.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_trackback.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_trackback.png
deleted file mode 100644
index 0b29d7a..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/blog_trackback.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/button_over.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/button_over.png
deleted file mode 100644
index 54d9ee1..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/button_over.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/container_top_grad.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/container_top_grad.png
deleted file mode 100644
index 608b610..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/container_top_grad.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.bak.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.bak.png
deleted file mode 100644
index 8762f46..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.bak.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.png
deleted file mode 100644
index 2fe33d6..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_sep.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_top.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_top.png
deleted file mode 100644
index 1331d89..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/content_top.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/download_icon.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/download_icon.png
deleted file mode 100644
index def80b9..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/download_icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/feed.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/feed.png
deleted file mode 100644
index 19fca80..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/feed.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_black.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_black.png
deleted file mode 100644
index 4b0e211..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_black.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_blue.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_blue.png
deleted file mode 100644
index fa483be..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_blue.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_brown.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_brown.png
deleted file mode 100644
index 72bde9f..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_brown.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_green.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_green.png
deleted file mode 100644
index 512f704..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_green.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_pink.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_pink.png
deleted file mode 100644
index 3e59843..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_pink.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_red.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_red.png
deleted file mode 100644
index 6f1963c..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/file_red.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_bg.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_bg.png
deleted file mode 100644
index bcef0a8..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_bg.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_curve_solid.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_curve_solid.png
deleted file mode 100644
index 20b2a4b..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_curve_solid.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_glow.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_glow.png
deleted file mode 100644
index dc4d0ee..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_glow.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_solid.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_solid.png
deleted file mode 100644
index e36f333..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_stripes_solid.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_swirls.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_swirls.png
deleted file mode 100644
index ce8a27a..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/header_swirls.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_bottom.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_bottom.png
deleted file mode 100644
index a742b53..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_bottom.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_top.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_top.png
deleted file mode 100644
index 814c0d3..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_shadow_top.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_thumbnail.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_thumbnail.png
deleted file mode 100644
index 47750b3..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/photo_thumbnail.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_black.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_black.png
deleted file mode 100644
index 485b897..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_black.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_blue.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_blue.png
deleted file mode 100644
index b51fda5..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_blue.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_brown.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_brown.png
deleted file mode 100644
index e472389..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_brown.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_green.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_green.png
deleted file mode 100644
index 27d833b..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_green.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_pink.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_pink.png
deleted file mode 100644
index dbdc1ee..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_pink.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_red.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_red.png
deleted file mode 100644
index 9c8a716..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/images/tag_red.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/javascript.js b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/javascript.js
deleted file mode 100644
index ba93db4..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/javascript.js
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * RapidWeaver 3.5.0 theme functions.
- * Script Version 2.1
- * Updated 26 May 2006.
- */
-
-
-
-/*
- * Function to generate "open in new window" link as W3C compliant
- */
-
-function externalLinks() {
-if (!document.getElementsByTagName) return; 
-var anchors = document.getElementsByTagName("a"); 
-for (var i=0; i<anchors.length; i++) { 
-var anchor = anchors[i]; 
-if (anchor.getAttribute("href") && 
-anchor.getAttribute("rel") == "external") 
-anchor.target = "_blank";
-} 
-} 
-window.onload = externalLinks;
-
-
-
-
-/*
- * Functions to generate OBJECT and EMBED tags for Flash content.
- * Resource: http://blog.deconcept.com/swfobject/
- *
- * SWFObject is (c) 2006 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(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
-	if (!document.createElement || !document.getElementById) { return; }
-	this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
-	this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
-	this.params = new Object();
-	this.variables = new Object();
-	this.attributes = new Array();
-	if(swf) { this.setAttribute('swf', swf); }
-	if(id) { this.setAttribute('id', id); }
-	if(w) { this.setAttribute('width', w); }
-	if(h) { this.setAttribute('height', h); }
-	if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
-	this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
-	if(c) { this.addParam('bgcolor', c); }
-	var q = quality ? quality : 'high';
-	this.addParam('quality', q);
-	this.setAttribute('useExpressInstall', useExpressInstall);
-	this.setAttribute('doExpressInstall', false);
-	var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
-	this.setAttribute('xiRedirectUrl', xir);
-	this.setAttribute('redirectUrl', '');
-	if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
-}
-deconcept.SWFObject.prototype = {
-	setAttribute: function(name, value){
-		this.attributes[name] = value;
-	},
-	getAttribute: function(name){
-		return this.attributes[name];
-	},
-	addParam: function(name, value){
-		this.params[name] = value;
-	},
-	getParams: function(){
-		return this.params;
-	},
-	addVariable: function(name, value){
-		this.variables[name] = value;
-	},
-	getVariable: function(name){
-		return this.variables[name];
-	},
-	getVariables: function(){
-		return this.variables;
-	},
-	getVariablePairs: function(){
-		var variablePairs = new Array();
-		var key;
-		var variables = this.getVariables();
-		for(key in variables){
-			variablePairs.push(key +"="+ variables[key]);
-		}
-		return variablePairs;
-	},
-	getSWFHTML: function() {
-		var swfNode = "";
-		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
-			if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");
-			swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
-			swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
-			var params = this.getParams();
-			 for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
-			var pairs = this.getVariablePairs().join("&");
-			 if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
-			swfNode += '/>';
-		} else { // PC IE
-			if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");
-			swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
-			swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
-			var params = this.getParams();
-			for(var key in params) {
-			 swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
-			}
-			var pairs = this.getVariablePairs().join("&");
-			if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
-			swfNode += "</object>";
-		}
-		return swfNode;
-	},
-	write: function(elementId){
-		if(this.getAttribute('useExpressInstall')) {
-			// check to see if we need to do an express install
-			var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
-			if (this.installedVer.versionIsValid(expressInstallReqVer) && !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 elementId == 'string') ? document.getElementById(elementId) : elementId;
-			n.innerHTML = this.getSWFHTML();
-			return true;
-		}else{
-			if(this.getAttribute('redirectUrl') != "") {
-				document.location.replace(this.getAttribute('redirectUrl'));
-			}
-		}
-		return false;
-	}
-}
-
-/* ---- detection functions ---- */
-deconcept.SWFObjectUtil.getPlayerVersion = function(reqVer, xiInstall){
-	var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
-	if(navigator.plugins && navigator.mimeTypes.length){
-		var x = navigator.plugins["Shockwave Flash"];
-		if(x && x.description) {
-			PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
-		}
-	}else{
-		try{
-			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
-			for (var i=3; axo!=null; i++) {
-				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
-				PlayerVersion = new deconcept.PlayerVersion([i,0,0]);
-			}
-		}catch(e){}
-		if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; // version is ok, skip minor detection
-		// this only does the minor rev lookup if the user's major version 
-		// is not 6 or we are checking for a specific minor or revision number
-		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
-		if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {
-			try{
-				PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
-			}catch(e){}
-		}
-	}
-	return PlayerVersion;
-}
-deconcept.PlayerVersion = function(arrVersion){
-	this.major = parseInt(arrVersion[0]) != null ? parseInt(arrVersion[0]) : 0;
-	this.minor = parseInt(arrVersion[1]) || 0;
-	this.rev = parseInt(arrVersion[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;
-}
-/* ---- get value of query string param ---- */
-deconcept.util = {
-	getRequestParameter: function(param){
-		var q = document.location.search || document.location.hash;
-		if(q){
-			var startIndex = q.indexOf(param +"=");
-			var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
-			if (q.length > 1 && startIndex > -1) {
-				return q.substring(q.indexOf("=", startIndex)+1, endIndex);
-			}
-		}
-		return "";
-	}
-}
-/* fix for video streaming bug */
-deconcept.SWFObjectUtil.cleanupSWFs = function() {
-	var objects = document.getElementsByTagName("OBJECT");
-	for (var i=0; i < objects.length; i++) {
-		for (var x in objects[i]) {
-			if (typeof objects[i][x] == 'function') {
-				objects[i][x] = null;
-			}
-		}
-	}
-}
-if (typeof window.onunload == 'function') {
-	var oldunload = window.onunload;
-		window.onunload = function() {
-		deconcept.SWFObjectUtil.cleanupSWFs();
-		oldunload();
-	}
-} else {
-	window.onunload = deconcept.SWFObjectUtil.cleanupSWFs;
-}
-/* add Array.push if needed (ie5) */
-if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
-
-/* add some aliases for ease of use/backwards compatibility */
-var getQueryParamValue = deconcept.util.getRequestParameter;
-var FlashObject = deconcept.SWFObject; // for legacy support
-var SWFObject = deconcept.SWFObject;
-
-
-
-
-
-/*
- * Functions to generate OBJECT and EMBED tags for QuickTime content.
- * Resource: http://developer.apple.com/internet/ieembedfix.html
- */
-
-/************** LOCALIZABLE GLOBAL VARIABLES ****************/
-
-var gArgCountErr =	'The "%%" function requires an even number of arguments.'
-				+	'\nArguments should be in the form "atttributeName", "attributeValue", ...';
-
-/******************** END LOCALIZABLE **********************/
-
-var gTagAttrs				= null;
-var gQTGeneratorVersion		= 1.0;
-
-function AC_QuickTimeVersion()	{ return gQTGeneratorVersion; }
-
-function _QTComplain(callingFcnName, errMsg)
-{
-    errMsg = errMsg.replace("%%", callingFcnName);
-	alert(errMsg);
-}
-
-function _QTAddAttribute(prefix, slotName, tagName)
-{
-	var		value;
-
-	value = gTagAttrs[prefix + slotName];
-	if ( null == value )
-		value = gTagAttrs[slotName];
-
-	if ( null != value )
-	{
-		if ( 0 == slotName.indexOf(prefix) && (null == tagName) )
-			tagName = slotName.substring(prefix.length); 
-		if ( null == tagName ) 
-			tagName = slotName;
-		return tagName + '="' + value + '" ';
-	}
-	else
-		return "";
-}
-
-function _QTAddObjectAttr(slotName, tagName)
-{
-	// don't bother if it is only for the embed tag
-	if ( 0 == slotName.indexOf("emb#") )
-		return "";
-
-	if ( 0 == slotName.indexOf("obj#") && (null == tagName) )
-		tagName = slotName.substring(4); 
-
-	return _QTAddAttribute("obj#", slotName, tagName);
-}
-
-function _QTAddEmbedAttr(slotName, tagName)
-{
-	// don't bother if it is only for the object tag
-	if ( 0 == slotName.indexOf("obj#") )
-		return "";
-
-	if ( 0 == slotName.indexOf("emb#") && (null == tagName) )
-		tagName = slotName.substring(4); 
-
-	return _QTAddAttribute("emb#", slotName, tagName);
-}
-
-
-function _QTAddObjectParam(slotName, generateXHTML)
-{
-	var		paramValue;
-	var		paramStr = "";
-	var		endTagChar = (generateXHTML) ? ' />' : '>';
-
-	if ( -1 == slotName.indexOf("emb#") )
-	{
-		// look for the OBJECT-only param first. if there is none, look for a generic one
-		paramValue = gTagAttrs["obj#" + slotName];
-		if ( null == paramValue )
-			paramValue = gTagAttrs[slotName];
-
-		if ( 0 == slotName.indexOf("obj#") )
-			slotName = slotName.substring(4); 
-	
-		if ( null != paramValue )
-			paramStr = '  <param name="' + slotName + '" value="' + paramValue + '"' + endTagChar + '\n';
-	}
-
-	return paramStr;
-}
-
-function _QTDeleteTagAttrs()
-{
-	for ( var ndx = 0; ndx < arguments.length; ndx++ )
-	{
-		var attrName = arguments[ndx];
-		delete gTagAttrs[attrName];
-		delete gTagAttrs["emb#" + attrName];
-		delete gTagAttrs["obj#" + attrName];
-	}
-}
-
-		
-
-// generate an embed and object tag, return as a string
-function _QTGenerate(callingFcnName, generateXHTML, args)
-{
-	// is the number of optional arguments even?
-	if ( args.length < 4 || (0 != (args.length % 2)) )
-	{
-		_QTComplain(callingFcnName, gArgCountErr);
-		return "";
-	}
-	
-	// allocate an array, fill in the required attributes with fixed place params and defaults
-	gTagAttrs = new Array();
-	gTagAttrs["src"] = args[0];
-	gTagAttrs["width"] = args[1];
-	gTagAttrs["height"] = args[2];
-	gTagAttrs["classid"] = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
-	gTagAttrs["pluginspage"] = "http://www.apple.com/quicktime/download/";
-
-	// set up codebase attribute with specified or default version before parsing args so
-	//  anything passed in will override
-	var activexVers = args[3]
-	if ( (null == activexVers) || ("" == activexVers) )
-		activexVers = "6,0,2,0";
-	gTagAttrs["codebase"] = "http://www.apple.com/qtactivex/qtplugin.cab#version=" + activexVers;
-
-	var	attrName,
-		attrValue;
-
-	// add all of the optional attributes to the array
-	for ( var ndx = 4; ndx < args.length; ndx += 2)
-	{
-		attrName = args[ndx].toLowerCase();
-		attrValue = args[ndx + 1];
-
-		// "name" and "id" should have the same value, the former goes in the embed and the later goes in
-		//  the object. use one array slot 
-		if ( "name" == attrName || "id" == attrName )
-			gTagAttrs["name"] = attrValue;
-
-		else 
-			gTagAttrs[attrName] = attrValue;
-	}
-
-	// init both tags with the required and "special" attributes
-	var objTag =  '<object '
-					+ _QTAddObjectAttr("classid")
-					+ _QTAddObjectAttr("width")
-					+ _QTAddObjectAttr("height")
-					+ _QTAddObjectAttr("codebase")
-					+ _QTAddObjectAttr("name", "id")
-					+ _QTAddObjectAttr("tabindex")
-					+ _QTAddObjectAttr("hspace")
-					+ _QTAddObjectAttr("vspace")
-					+ _QTAddObjectAttr("border")
-					+ _QTAddObjectAttr("align")
-					+ _QTAddObjectAttr("class")
-					+ _QTAddObjectAttr("title")
-					+ _QTAddObjectAttr("accesskey")
-					+ _QTAddObjectAttr("noexternaldata")
-					+ '>\n'
-					+ _QTAddObjectParam("src", generateXHTML);
-	var embedTag = '  <embed '
-					+ _QTAddEmbedAttr("src")
-					+ _QTAddEmbedAttr("width")
-					+ _QTAddEmbedAttr("height")
-					+ _QTAddEmbedAttr("pluginspage")
-					+ _QTAddEmbedAttr("name")
-					+ _QTAddEmbedAttr("align")
-					+ _QTAddEmbedAttr("tabindex");
-
-	// delete the attributes/params we have already added
-	_QTDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex",
-					"hspace","vspace","border","align","noexternaldata","class","title","accesskey");
-
-	// and finally, add all of the remaining attributes to the embed and object
-	for ( var attrName in gTagAttrs )
-	{
-		attrValue = gTagAttrs[attrName];
-		if ( null != attrValue )
-		{
-			embedTag += _QTAddEmbedAttr(attrName);
-			objTag += _QTAddObjectParam(attrName, generateXHTML);
-		}
-	} 
-
-	// end both tags, we're done
-	return objTag + embedTag + '> </em' + 'bed>\n</ob' + 'ject' + '>';
-}
-
-// return the object/embed as a string
-function QT_GenerateOBJECTText()
-{
-	return _QTGenerate("QT_GenerateOBJECTText", false, arguments);
-}
-
-function QT_GenerateOBJECTText_XHTML()
-{
-	return _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments);
-}
-
-function QT_WriteOBJECT()
-{
-	document.writeln(_QTGenerate("QT_WriteOBJECT", false, arguments));
-}
-
-function QT_WriteOBJECT_XHTML()
-{
-	document.writeln(_QTGenerate("QT_WriteOBJECT_XHTML", true, arguments));
-}
-
-
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/blank.gif b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/blank.gif
deleted file mode 100644
index 75b945d..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/blank.gif and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/pngbehavior.htc b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/pngbehavior.htc
deleted file mode 100644
index 09ff463..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/png/pngbehavior.htc
+++ /dev/null
@@ -1,86 +0,0 @@
-<public:component lightWeight="true">
-<public:attach event="onpropertychange" onevent="propertyChanged()" />
-<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
-<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
-<script>
-
-/*
- * PNG Behavior
- *
- * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
- * for WebFX (http://webfx.eae.net)
- * Copyright 2002-2004
- *
- * For usage see license at http://webfx.eae.net/license.html
- *
- * Version: 1.02
- * Created: 2001-??-??	First working version
- * Updated: 2002-03-28	Fixed issue when starting with a non png image and
- *                      switching between non png images
- *          2003-01-06	Fixed RegExp to correctly work with IE 5.0x
- *          2004-05-09  When printing revert to original
- *
- */
-
-var supported = /MSIE ((5\.5)|[6789])/.test(navigator.userAgent) &&
-				navigator.platform == "Win32";
-
-var realSrc;
-//var blankSrc = "blank.gif";
-var isPrinting = false;
-
-if (supported) fixImage();
-
-function propertyChanged() {
-	if (!supported || isPrinting) return;
-
-	var pName = event.propertyName;
-	if (pName != "src") return;
-	// if not set to blank
-	if (!new RegExp(blankSrc).test(src))
-		fixImage();
-};
-
-function fixImage() {
-	// get src
-	var src = element.src;
-
-	// check for real change
-	if (src == realSrc && /\.png$/i.test(src)) {
-		element.src = blankSrc;
-		return;
-	}
-
-	if ( ! new RegExp(blankSrc).test(src)) {
-		// backup old src
-		realSrc = src;
-	}
-
-	// test for png
-	if (/\.png$/i.test(realSrc)) {
-		// set blank image
-		element.src = blankSrc;
-		// set filter
-		element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
-					"AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
-	}
-	else {
-		// remove filter
-		element.runtimeStyle.filter = "";
-	}
-}
-
-function beforePrint() {
-	isPrinting = true;
-	element.src = realSrc;
-	element.runtimeStyle.filter = "";
-	realSrc = null;
-}
-
-function afterPrint() {
-	isPrinting = false;
-	fixImage();
-}
-
-</script>
-</public:component>
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/print.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/print.css
deleted file mode 100644
index 675c58c..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/print.css
+++ /dev/null
@@ -1,631 +0,0 @@
-/*<group=General Styles>*/
-
-body {
-	background: transparent none;
-	margin: 0px 5% 0px 5%;
-	text-align: left;
-	color: #000000;
-	letter-spacing: 0.5px;
-	word-spacing: 1px;
-	padding: 0px;
-	font: 10pt Geneva, Arial, Helvetica;
-}
-
-p { 
-}
-
-b, strong {
-	font-weight: bold;
-}
-
-a:link, a:visited {
-}
-
-a:hover, a:active {
-}
-	
-/*</group>*/
-
-/*<group=Layout>*/
-
-#container {
	text-align: left;
-	width: 100%;
-	padding: 10px 0 0 0;
-	margin: 0px;
-}
-
-#pageHeader {
-	display: none;
-}
-
-#pageHeader img {
-	float: right;
-}
-
-#pageHeader h1 {
-	color: #000000;
-	margin: 0px;
-	font-weight: bold;
-	font-size: 16pt;
-	padding: 0px;
-}
-
-#pageHeader h2 {
-	color: #333333;
-	margin: 0px;
-	font-size: 13pt;
-	font-weight: normal;
-	padding: 0px;
-}
-
-#contentContainer {
-	float: none !important;
-	padding: 0px;
-}
-
-#contentContainer #content {
-	padding: 0px;
-}
-
-#contentContainer #content img {
-}
-
-#sidebarContainer {
-	float: right;
-}
-
-#sidebarContainer .sidebar {
-	width: 190px;
-	padding: 10px;
-	border-left: 1px solid #cccccc;
-}
-
-#footer {
-	text-align: center; 
-	background: none;
-	color: #000000;
-	font-size: 10pt;
-	border-top: 1px solid #cccccc;
-	margin-top: 10px;
-	padding-top: 10px;
-}
-
-#footer a {
-}
-
-#footer a:hover {
-}
-	
-/*</group>*/
-
-/*<group=toolbar>*/
-
-#navcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Bread-crumb>*/
-
-#breadcrumbcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Global Classes>*/
-
-.standout {
-	color: #474747;
-	font-size: 11pt;
-	font-weight: bold;
-	letter-spacing: 1px;
-	word-spacing: 2px;
-	padding: 40px;
-	background-color: #f5f5f5;
-	font-style: italic;
-}
-
-h1 {
-	font-size: 20pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h2 {
-	font-size: 18pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h3 {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h4 {
-	font-size: 14pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h5 {
-	font-size: 12px;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.imageStyle {
-}
-	
-/*</group>*/
-
-/*<group=Blog>*/
-
-.blog-entry {
-	border-style: none;
-}
-
-.blog-entry-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-	border-style: none;
-}
-
-.blog-entry-date {
-	margin-bottom: 10px;
-	margin-top: 5px;
-	border-style: none;
-	font-size: 10pt;
-	color: #333333;
-}
-
-.blog-entry-body {
-	margin-bottom: 45px;
-	border-style: none;
-}
-	
-/*</group>*/
-
-/*<group=File Sharing>*/
-
-.filesharing-description {
-	margin-bottom: 20px;
-	border-bottom: 1px solid #d9d9d9;
-}
-
-.filesharing-item {
-	
-}
-
-.filesharing-item-title {
-	font-size: 16pt;
-	font-weight: bold;
-}
-
-.filesharing-item-description {
-	margin-bottom: 10px;
-}
-
-/*</group>*/
-
-/*<group=Photo Album>*/
-
-/*<group=Index Page (Thumbnail view)>*/
-
-.album-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.album-description {
-}
-
-.thumbnail-frame {
-	margin: 0px;
-	padding: 0px;
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-	height: 30px;
-}
-
-.thumbnail-frame img {
-	background: repeat url(images/sidebar_bg.png);
-}
-
-.thumbnail-caption {
-	color: #4c4c4c;
-	margin-top: -2px;
-	font-size: 10pt;
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Photo view)>*/
-
-.photo-background {
-	text-align: center;
-}
-
-.photo-navigation {
-	background: none;
-	display: none;
-}
-
-.photo-navigation a {
-	display: none;
-}
-
-.photo-navigation a:hover {
-	display: none;
-}
-
-.photo-frame{
-
-}
-
-.photo-links {
-	display: none;
-}
-
-.photo-title {
-	display: none;
-}
-
-.photo-caption {
-	font-size: 11pt;
-	margin: 0px;
-	text-align: center;
-}
-
-/*</group>*/
-	
-/*</group>*/
-
-/*<group=Quicktime Page>*/
-
-.movie-title {
-	font-size: 16pt;
-	font-weight: bold;
-	text-align: left;
-}
-
-.movie-description {
-	text-align: center;
-}
-
-.movie-frame {
-	text-align: center;
-	margin-bottom: 10px;
-}
-	
-/*</group>*/
-
-/*<group=General Styles>*/
-
-body {
-	background: transparent none;
-	margin: 0px 5% 0px 5%;
-	text-align: left;
-	color: #000000;
-	letter-spacing: 0.5px;
-	word-spacing: 1px;
-	padding: 0px;
-	font: 10pt Georgia, Times New Roman, Times, serif;
-}
-
-p { 
-}
-
-b, strong {
-	font-weight: bold;
-}
-
-a:link, a:visited {
-}
-
-a:hover, a:active {
-}
-	
-/*</group>*/
-
-/*<group=Layout>*/
-
-#container {
	text-align: left;
-	width: 100%;
-	padding: 0px;
-	margin: 0px;
-}
-
-#pageHeader {
-	text-align: left;
-	background: none;
-	border-bottom: 1px solid #cccccc;
-	padding-bottom: 10px;
-	margin-bottom: 10px;
-}
-
-#pageHeader img {
-	float: right;
-}
-
-#pageHeader h1 {
-	color: #000000;
-	margin: 0px;
-	font-weight: bold;
-	font-size: 16pt;
-	padding: 0px;
-}
-
-#pageHeader h2 {
-	color: #333333;
-	margin: 0px;
-	font-size: 13pt;
-	font-weight: normal;
-	padding: 0px;
-}
-
-#contentContainer {
-	float: none !important;
-	padding: 0px;
-	margin-bottom: 10px;
-	border-bottom: 1px solid #cccccc;
-	padding-bottom: 10px;
-}
-
-#contentContainer #content {
-	padding: 0px;
-}
-
-#contentContainer #content img {
-}
-
-#sidebarContainer {
-	float: none;
-	width: auto;
-}
-
-#sidebarContainer .sidebar {
-}
-
-#footer {
-	text-align: center; 
-	background: none;
-	color: #000000;
-	font-size: 10pt;
-	border-top: 1px solid #cccccc;
-	margin-top: 10px;
-	padding-top: 10px;
-}
-
-#footer a {
-}
-
-#footer a:hover {
-}
-	
-/*</group>*/
-
-/*<group=toolbar>*/
-
-#navcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Bread-crumb>*/
-
-#breadcrumbcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Global Classes>*/
-
-.standout {
-	color: #474747;
-	font-size: 11pt;
-	font-weight: bold;
-	letter-spacing: 1px;
-	word-spacing: 2px;
-	padding: 40px;
-	background-color: #f5f5f5;
-	font-style: italic;
-}
-
-h1 {
-	font-size: 20pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h2 {
-	font-size: 18pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h3 {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h4 {
-	font-size: 14pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h5 {
-	font-size: 12px;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.imageStyle {
-}
-	
-/*</group>*/
-
-/*<group=Blog>*/
-
-.blog-entry {
-	border-style: none;
-}
-
-.blog-entry-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-	border-style: none;
-}
-
-.blog-entry-date {
-	margin-bottom: 10px;
-	margin-top: 5px;
-	border-style: none;
-	font-size: 10pt;
-	color: #333333;
-}
-
-.blog-entry-body {
-	margin-bottom: 45px;
-	border-style: none;
-}
-	
-/*</group>*/
-
-/*<group=File Sharing>*/
-
-.filesharing-description {
-	margin-bottom: 20px;
-	border-bottom: 1px solid #d9d9d9;
-}
-
-.filesharing-item {
-	
-}
-
-.filesharing-item-title {
-	font-size: 16pt;
-	font-weight: bold;
-}
-
-.filesharing-item-description {
-	margin-bottom: 10px;
-}
-
-/*</group>*/
-
-/*<group=Photo Album>*/
-
-/*<group=Index Page (Thumbnail view)>*/
-
-.album-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.album-description {
-}
-
-.thumbnail-frame {
-	margin: 0px;
-	padding: 0px;
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-	height: 30px;
-}
-
-.thumbnail-frame img {
-	background: repeat url(images/sidebar_bg.png);
-}
-
-.thumbnail-caption {
-	color: #4c4c4c;
-	margin-top: -2px;
-	font-size: 10pt;
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Photo view)>*/
-
-.photo-background {
-	text-align: center;
-}
-
-.photo-navigation {
-	background: none;
-	display: none;
-}
-
-.photo-navigation a {
-	display: none;
-}
-
-.photo-navigation a:hover {
-	display: none;
-}
-
-.photo-frame{
-
-}
-
-.photo-links {
-	display: none;
-}
-
-.photo-title {
-	display: none;
-}
-
-.photo-caption {
-	font-size: 11pt;
-	margin: 0px;
-	text-align: center;
-}
-
-/*</group>*/
-	
-/*</group>*/
-
-/*<group=Quicktime Page>*/
-
-.movie-title {
-	font-size: 16pt;
-	font-weight: bold;
-	text-align: left;
-}
-
-.movie-description {
-	text-align: center;
-}
-
-.movie-frame {
-	text-align: center;
-	margin-bottom: 10px;
-}
-	
-/*</group>*/
-
-
-
-
-
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/styles.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/styles.css
deleted file mode 100644
index eb4ca54..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_en/rw_common/themes/caribou/styles.css
+++ /dev/null
@@ -1,1167 +0,0 @@
-/* @group General Styles */
-
-body {
-	margin: 0;
-	padding: 0;
-	background: url(images/container_top_grad.png) repeat-x left 120px;
-	font: 0.85em/1.6 Arial, "Lucida Grande", Lucida, Verdana, sans-serif;
-}
-
-p {
-	margin: 0 0 15px;
-}
-
-b, strong {
-
-}
-
-a:link, a:visited {
-
-}
-
-a:hover, a:active {
-
-}
-
-img {
-	border: none;
-}
-
-.image-left {
-	float: left;
-	margin: 3px 10px 3px 0;
-}
-
-.image-right {
-	float: right;
-	margin: 3px 0 3px 10px;
-}
-	
-/* @end */
-
-/* @group Layout */
-
-#bar {
-	height: 119px;
-	border-bottom: 1px solid #fff;
-	position: absolute;
-	left: 0;
-	top: 0;
-	width: 100%;
-}
-
-#container {
-	width: 914px;
-	margin: 0 auto;
-	background: url(images/content_top.png) no-repeat left 227px;
-	padding-top: 30px;
-}
-
-.clearer {
-	clear: both;
-}
-
-#pageHeader {
-	height: 197px;
-	position: relative;
-	text-align: center;
-	line-height: normal;
-}
-
-#pageHeader #background {
-	position: absolute;
-	left: 0;
-	top: 0;
-	z-index: 1;
-}
-
-/* @group Overlay */
-
-#pageHeader #overlay_swirls {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-#pageHeader #overlay_stripes_solid {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-#pageHeader #overlay_stripes_glow {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-#pageHeader #overlay_curve_solid {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-/* @end */
-
-#pageHeader #logo {
-	position: absolute;
-	top: 0;
-	left: 0;
-	width: 100%;
-	height: 100%;
-}
-
-#pageHeader #logo img {
-	display: block;
-}
-
-#pageHeader #title {
-	position: absolute;
-	left: 7px;
-	top: 46px;
-	z-index: 2;
-	width: 900px;
-	height: 150px;
-	font-size: .8em;
-}
-
-#pageHeader h1 {
-	position: relative;
-	z-index: 2;
-	margin: 50px 0 0;
-	color: #fff;
-}
-
-#pageHeader h2 {
-	position: relative;
-	z-index: 2;
-	margin: 0;
-	color: #fff;
-}
-
-#contentContainer {
-	width: 659px;
-	background-image: url(images/content_sep.png) ;
-	background-repeat: no-repeat;
-	margin-bottom: 20px;
-}
-
-#contentContainer #content {
-	padding: 10px 30px;
-}
-
-.contentSpacer {
-	height:350px;
-	float:right;
-	width:1px;
-}
-
-#sidebarContainer {
-	width: 237px;
-}
-
-#sidebarContainer #sidebar {
-	padding-bottom:20px;
-}
-
-#sidebarContainer #sidebar a {
-}
-
-#sidebarContainer #sidebar a:hover {
-	text-decoration: underline;
-}
-
-#sidebarContainer .sideHeader {
-	padding: 15px 0 5px 0px;
-	font-size: 1.2em;
-	font-weight: bold;
-	letter-spacing: 0.5px;
-}
-
-#sidebarContainer #sidebar h1 {
-	font-size: 1.2em;
-	font-weight: bold;
-	letter-spacing: 0.5px;
-}
-
-#sidebarContainer #sidebar h2 {
-	font-size: 1.1em;
-	font-weight: bold;
-	letter-spacing: 0.5px;
-}
-
-#sidebarContainer #sidebar h3 {
-	font-size: 1.1em;
-	
-}
-
-#footer {
-	color: #fff;
-	height: 70px;
-	text-align: center;
-}
-
-#footer p {
-	padding-top: 15px;
-	margin: 0;
-
-}
-
-#footer a:link, #footer a:visited {
-	font-weight: bold;
-	text-decoration: none;
-	text-shadow: none;
-	color: #fff;
-}
-
-#footer a:hover, #footer a:active {
-}
-	
-/* @end */
-
-/* @group Bread-crumb */
-
-#breadcrumbcontainer {
-
-}
-
-#breadcrumbcontainer ul {
-	padding: 0;
-	margin: 0;
-	list-style-type: none;
-}
-
-#breadcrumbcontainer li {
-	display: inline;
-}
-
-#breadcrumbcontainer a {
-	text-decoration: underline;
-}
-
-#breadcrumbcontainer a:hover {
-}
-	
-/* @end */
-
-/* @group Global Classes */
-
-blockquote, .standout {
-	font-style: italic;
-	margin: 0;
-	font-size: 1.2em;
-}
-
-h1 {
-	font-size: 2.2em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-h2 {
-	font-size: 1.8em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-h3 {
-	font-size: 1.6em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-h4 {
-	font-size: 1.4em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-.imageStyle {
-
-}
-
-/* Main content area unordered list styles */
-#contentContainer #content ul {
-}
-
-#contentContainer #content li {
-}
-
-ul.disc {
-	list-style-type: disc;
-}
-
-ul.circle {
-	list-style-type: circle;
-}
-
-ul.square {
-	list-style-type: square;
-}
-
-ol.arabic-numbers {
-	list-style-type: decimal;
-}
-
-ol.upper-alpha {
-	list-style-type: upper-alpha;
-}
-
-ol.lower-alpha {
-	list-style-type: lower-alpha;
-}
-
-ol.upper-roman {
-	list-style-type: upper-roman;
-}
-
-ol.lower-roman {
-	list-style-type: lower-roman;
-}
-/* Sidebar area unordered list styles */
-#sidebarContainer #sidebar ul {
-}
-
-#sidebarContainer #sidebar li {
-}
-
-
-/* Table Styles */
-table {
-	font-size: 1em;
-}
-/* @end */
-
-/* @group Toolbar */
-
-#navcontainer {
-	height: 40px;
-	position: relative;
-	z-index: 3;
-	padding: 0 20px;
-}
-
-#navcontainer #current {
-	background: url(images/button_over.png) no-repeat center 4px;
-}
-
-#navcontainer #current:hover {
-}
-
-#navcontainer .currentAncestor {
-	background: url(images/button_over.png) no-repeat center 4px;
-}
-
-/* Parent - Level 0 */
-
-#navcontainer ul{
-	list-style: none;
-	margin: 0;
-	padding: 0;
-	z-index: 7;
-}
-
-#navcontainer li {
-	position: relative;
-	display: inline;
-	float: left;
-}
-
-#navcontainer a {
-	font-size: 0.9em;
-	display: block;
-	padding: 17px 15px 19px 15px;
-	height: 11px;
-	text-decoration: none;
-	width: 90px;
-	text-align: center;
-	font-weight: bold;
-	position: relative;
-	z-index: 7;
-}
-
-#navcontainer a:hover {
-	background: url(images/button_over.png) no-repeat center 4px;
-}
-
-#navcontainer a:active {
-}
-
-/* Child - Level 1 */
-/* All browsers will use this code, it will make the pop out menus work */
-#navcontainer ul ul {
-	position: absolute;
-	top: 46px;
-	left: 0;
-	right: 0;
-	display: none;
-	z-index: 6;
-	font-size: 0.9em;
-	width: 120px;
-	padding: 0;
-	margin: 0;
-}
-
-#navcontainer ul ul:hover {
-	background: url(images/button_over.png) no-repeat center top;
-	padding-top: 42px;
-	top: 4px;
-	}
-
-#navcontainer ul ul li {
-	display: block;
-}
-
-#navcontainer ul ul a {
-	padding: 5px 0;
-	display: block;
-	width: 120px;
-	background: #fff;
-	border-bottom: 1px solid #f0f0f0;
-	height: auto;
-}
-
-#navcontainer ul ul a:hover {
-	color: #fff;
-}
-
-#navcontainer ul ul #current,
-#navcontainer ul ul .currentAncestor{
-	background: #fff;
-}
-
-
-/* Child Level 3 */
-
-#navcontainer ul ul ul {
-	position: absolute;
-	top: 0px;
-	left: 120px;
-	z-index: 6;
-	font-size: 1em;
-	width: 120px;
-}
-
-#navcontainer ul ul ul:hover {
-	padding: 0;
-	top: 0px;
-}
-
-div#navcontainer ul ul,
-div#navcontainer ul ul ul,
-div#navcontainer ul li:hover ul ul,
-div#navcontainer ul li:hover ul ul ul,
-div#navcontainer ul li:hover ul ul ul ul,
-div#navcontainer ul li:hover ul ul ul ul ul {
-	display:none;
-}
-
-div#navcontainer ul li:hover ul,
-div#navcontainer ul ul li:hover ul,
-div#navcontainer ul ul ul li:hover ul,
-div#navcontainer ul ul ul ul li:hover ul,
-div#navcontainer ul ul ul ul ul li:hover ul {
-	display:block;
-}
-
-/* @end */
-
-/* @group Blog */
-
-/* @group Tag Cloud */
-ul.blog-tag-cloud {
-	padding: 15px 0;
-	margin: 0;
-}
-
-ul.blog-tag-cloud li {
-	
-	padding-right: 5px;
-	text-align: center;
-	list-style-type: none;
-	display: inline;
-}
-
-ul.blog-tag-cloud li a{
-	text-decoration: none;
-}
-
-.blog-tag-size-1 {	
-	font-size: 0.8em;
-}
-
-.blog-tag-size-2 {	
-	font-size: 0.85em;
-}
-
-.blog-tag-size-3 {	
-	font-size: 0.9em;
-}
-
-.blog-tag-size-4 {	
-	font-size: 0.95em;
-}
-
-.blog-tag-size-5 {	
-	font-size: 1em;
-}
-
-.blog-tag-size-6 {	
-	font-size: 1.05em;
-}
-
-.blog-tag-size-7 {	
-	font-size: 1.1em;
-}
-
-.blog-tag-size-8 {	
-	font-size: 1.15em;
-}
-
-.blog-tag-size-9 {	
-	font-size: 1.2em;
-}
-
-.blog-tag-size-10 {	
-	font-size: 1.25em;
-}
-
-.blog-tag-size-11 {	
-	font-size: 1.3em;
-}
-
-.blog-tag-size-12 {	
-	font-size: 1.35em;
-}
-
-.blog-tag-size-13 {
-	font-size: 1.4em;
-}
-
-.blog-tag-size-14 {	
-	font-size: 1.45em;
-}
-
-.blog-tag-size-15 {
-	font-size: 1.5em;
-}
-
-.blog-tag-size-16 {	
-	font-size: 1.55em;
-}
-
-.blog-tag-size-17 {	
-	font-size: 1.6em;
-}
-
-.blog-tag-size-18 {	
-	font-size: 1.65em;
-}
-
-.blog-tag-size-19 {
-	font-size: 1.7em;
-}
-
-.blog-tag-size-20 {	
-	font-size: 1.75em;
-}
-
-
-/* @end */
-
-/* @group Archive Page */
-
-.blog-archive-background {
-}
-
-.blog-entry-summary {
-}
-
.blog-archive-headings-wrapper {
-	font-size: 1.4em;
-	padding-bottom: 25px;
-	background: url(images/blog_bottom_bar.png) no-repeat center bottom;
-}
-
-.blog-archive-entries-wrapper {
-}
-
-.blog-archive-entries-wrapper .blog-entry {
-	padding-top: 20px;
-}

.blog-archive-month {
-	font-size: 1.2em;
-	padding-left: 2;
-
-}
-
-.blog-archive-link {
-	font-size: 0.8em;
-}

.blog-archive-link a:link, .blog-archive-link a:visited {
-}
-	
-/* @end */
-
-.blog-entry {
-	padding-bottom: 20px;
-}
-
-h1.blog-entry-title {
-	padding: 0;
-	margin: 0;
-}
-
-
-h1.blog-entry-title a {
-
-	text-decoration: none;
-}
-
-.blog-entry-date {
-}
-
-/*styles the category link in the main entry */
-.blog-entry-category {
-	padding-left: 20px;
-	margin-right: 12px;
-}
-
-.blog-entry-category a:link, .blog-entry-category a:visited {
-}
-
-.blog-read-more {
-	text-decoration: none;
-}
-
-.blog-entry-body {
-	padding: 20px 0 40px 0;
-	background: url(images/blog_bottom_bar.png) no-repeat left bottom;
-}
-
-.blog-entry-comments {
-}
-
-.blog-trackback-link {
-}
-
-p.blog-entry-tags {
-	padding-left: 20px;
-	margin-top: 15px;
-}
-
-/* styles the archives in the blog sidebar */
-#blog-archives {
-	padding-top: 20px;
-}
-
-#sidebarContainer #sidebar ul {
-
-}
-
-.blog-archive-link-enabled {
-	padding-left: 20px;
-}
-
-.blog-archive-link-disabled {
-	padding-left: 20px;
-}
-
-/* Styles the blog categories in the blog sidebar */
-#blog-categories {
-	padding-top: 20px ;
-}
-
-.blog-category-link-enabled {
-	padding: 0px 0px 0px 20px;
-	margin-top: 3;
-}
-
-.blog-category-link-disabled {
-	margin: 0;
-	padding-bottom: 0px;
-	padding-left: 20px;
-}
-
-/* Styles the blog RSS feeds in the blog sidebar */
-#blog-rss-feeds {
-	text-decoration: none;
-}
-
-.blog-rss-link {
-	padding-left: 20px;
-}
-
-.blog-comments-rss-link {
-	padding-left: 20px;
-}
-
-/* @end */
-
-/* @group File Sharing */
-
-.filesharing-description {
-	padding-top: 10px;
-	padding-bottom: 15px;
-}
-
-.filesharing-item {
-}
-
-.filesharing-item-title a:link {
-}
-
-.filesharing-item-title a:hover {
-}
-
-.filesharing-item-title a:visited {
-}
-
-.filesharing-item-description {
-	font-size: 0.85em;
-	padding-bottom:10px;
-}
-
-/* @end */
-
-/* @group Photo Album */
-
-/* @group Index Page (Thumbnail view) */
-
-#flashcontent {
-	padding-top: 15px;
-}
-
-.album-title {
-	font-size: 2.2em;
-	margin-bottom: 10px;
-}
-
-.album-description {
-	margin-bottom: 20px;
-}
-
-.album-wrapper {
-	display: block;
-	width: 99%;
-	position: relative;
-}
-
-.thumbnail-wrap {
-	text-align: center;
-	position: relative;
-	float: left;
-	margin-bottom: 20px;
-	margin-right: 10px;
-	padding-top: 70px;
-	padding-left: 5px;
-	padding-right: 5px;
-	border-top: 1px solid #f3f3f3;
-	border-right: 1px solid #f1f1f1;
-	border-left: 1px solid #f1f1f1;
-}
-
-.thumbnail-frame {
-	position: absolute;
-    bottom: 0;
-    left: 0;
-    padding-left: 5px;
-	padding-right: 5px;
-}
-
-.thumbnail-frame:hover {
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-}
-
-.thumbnail-frame img {
-	margin: auto;
-	border: none;
-}
-
-.thumbnail-caption {
-	margin: 0 -5px;
-	padding: 7px 0 7px 0;
-	font-size: 0.9em;
-	background:  repeat-x left bottom url(images/photo_shadow_bottom.png);
-	height: 38px;
-	display: block;
-}
-	
-/* @end */
-
-/* @group Single Page (Photo view) */
-
-.photo-background {
-	background-image: none;
-	text-align: center;
-}
-
-.photo-navigation {
-	color: #e5e5e5;
-	height: 119px;
-	border-bottom: 1px solid #fff;
-	margin-bottom: 25px;
-	width: 100%;
-	text-align: left;
-}
-
-.photo-links{
-	padding: 0 0 0 40px;
-	margin: 0;
-	
-}
-
-.photo-navigation a:link, .photo-navigation a:visited {
-	color: #f2f2f2;
-}
-
-.photo-navigation a:hover {
-}
-
-.photo-frame{
-	padding: 20px 20px 20px 20px;
-	margin-bottom: 20px;
-	border: 1px solid #f1f1f1;
-}
-
-.photo-title {
-	font-size: 2.2em;
-	padding: 5px 0 0 40px;
-	margin: 0;
-	
-}
-
-.photo-caption {
-	font-size: 1.2em;
-	padding: 0 0 0 40px;
-	margin: 0;
-}
-
-/* @group EXIF data */
-/* Data wrapper */
-.exif-data {
-}
-
-.exif-data p {
-}
-
-/* p tag classes for all exif data */
-p.exif-version {
-}
-
-p.exif-colour-space {
-}
-
-p.exif-focal-length {
-}
-
-p.exif-dimensions {
-}
-
-p.exif-pixel-y-dimension {
-}
-
-p.exif-pixel-x-dimension {
-}
-
-p.exif-oecf-value {
-}
-
-p.exif-subsec-time-original {
-}
-
-p.exif-exposure-mode {
-}
-
-p.exif-spatial-frequency-response {
-}
-
-p.exif-scene-capture-type {
-}
-
-p.exif-subject-location {
-}
-
-p.exif-shutter-speed {
-}
-
-p.exif-datetime-original {
-}
-
-p.exif-subsec-time {
-}
-
-p.exif-compressed-bits-per-pixel {
-}
-
-p.exif-flash-energy {
-}
-
-p.exif-saturation {
-}
-
-p.exif-brightness {
-}
-
-p.exif-exposure-time {
-}
-
-p.exif-f-number {
-}
-
-p.exif-file-source {
-}
-
-p.exif-gain-control {
-}
-
-p.exif-subject-area {
-}
-
-p.exif-cfa-pattern {
-}
-
-p.exif-scene-type {
-}
-
-p.exif-white-balance {
-}
-
-p.exif-flash {
-}
-
-p.exif-exposure-index {
-}
-
-p.exif-flashpix-version {
-}
-
-p.exif-device-setting-description {
-}
-
-p.exif-focalplane-x-resolution {
-}
-
-p.exif-image-uniqueid {
-}
-
-p.exif-components-configuration {
-}
-
-p.exif-light-source {
-}
-
-p.exif-sensing-method {
-}
-
-p.exif-aperture {
-}
-
-p.exif-sharpness {
-}
-
-p.exif-exposure-program {
-}
-
-p.exif-subject-distance {
-}
-
-p.exif-subsec-time-digitized {
-}
-
-p.exif-contrast {
-}
-
-p.exif-focalplane-resolution-unit {
-}
-
-p.exif-gamma {
-}
-
-p.exif-35mm-focal-length {
-}
-
-p.exif-datetime-digitized {
-}
-
-p.exif-subject-distance-range {
-}
-
-p.exif-custom-rendered {
-}
-
-p.exif-max-aperture {
-}
-
-p.exif-sound-file {
-}
-
-p.exif-metering-mode {
-}
-
-p.exif-spectral-sensitivity {
-}
-
-p.exif-exposure-bias {
-}
-
-p.exif-focalplane-y-resolution {
-}
-
-p.exif-iso-rating {
-}
-
-p.exif-maker-note {
-}
-
-p.exif-digital-zoom-ratio {
-}
-
-p.exif-user-comment {
-}
-/* @end */
-
-/* @end */
-	
-/* @end */
-
-/* @group Quicktime Page */
-
-.movie-description {
-}
-	
-/* @end */
-
-
-
-/* @group Quicktime Album */
-
-/* @group Index Page (Movie Thumbnail view) */
-
-.movie-page-title {
-	font-size: 2.2em;
-	margin-bottom: 10px;
-}

.movie-page-description {
-	margin-bottom: 20px;
-}

.movie-thumbnail-frame {
-	width: 132px;
-	height: 162px;
-	float: left;
-	position: relative;
-	border-top: 1px ;
-	text-align: center;
-	margin-bottom: 20px;
-	margin-right: 10px;
-	padding-top: 7px;
-	padding-left: 5px;
-	padding-right: 5px;
-	border-top: 1px solid #f3f3f3;
-	border-right: 1px solid #f1f1f1;
-	border-left: 1px solid #f1f1f1;
-	background: url(images/photo_shadow_bottom.png) repeat-x 0 bottom;
-
-}
-
-.movie-thumbnail-frame:hover {
-}
-
-.movie-thumbnail-caption {
-	height: 56px;
-	width:  132px;
-	padding: 5px 0px 0 0px;
-	
-
-}
-	
-/* @end */
-
-/* @group Single Page (Movie View) */
-
-.movie-background {
-	background-image: none;
-	text-align: center;
-}
-
-.movie-title {
-	font-size: 1.4em;
-	height: 120px;
-	color: #e5e5e5;
-	padding: 10px 0 0 20px;
-}
-
-.movie-frame {
-	margin-top: 10px;
-	margin-bottom: 10px;
-}
-	
-/* @end */
-
-
-/* @end */
-
-/* @group Contact Form */
-.message-text {
-	padding-top: 10px; 
-} 
-
-.required-text {
-} 
-
-.form-input-field {
-	
-}
-
-label{
-	color:#7f7f7f;
-	
-} 
-
-.form-input-button { 
-} 
-/* @end */
-
-/* @group Sitemap */
-
-.rw-sitemap ul {
-    margin: 0;
-    padding: 0;
-    list-style-type: disc;
-    list-style-position: inside;
-}
-
-.rw-sitemap ul li {
-    margin: 0 0 10px 0;
-}
-
-.rw-sitemap ul li:last-child {
-    margin: 0;
-}
-
-.rw-sitemap ul li li {
-    margin: 0 0 5px 0;
-}
-
-.rw-sitemap ul li li:last-child {
-    margin: 0;
-}
-
-.rw-sitemap ul ul {
-    padding: 0 0 0 20px;
-    list-style-type: square;
-}
-
-.rw-sitemap ul ul ul {
-    list-style-type: circle;
-}
-
-/* @end */
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/calepin.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/calepin.png
new file mode 100644
index 0000000..e710d8c
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/calepin.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/connect_screen.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/connect_screen.png
deleted file mode 100644
index 4bfde7f..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/connect_screen.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/login_paraschool.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/login_paraschool.png
deleted file mode 100644
index 7e511f5..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/login_paraschool.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logo.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logo.png
new file mode 100644
index 0000000..e1a85e3
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logo.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logoplanetesankore.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logoplanetesankore.png
new file mode 100644
index 0000000..c6f4ac3
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/logoplanetesankore.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/mappe.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/mappe.png
new file mode 100644
index 0000000..f9548be
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/mappe.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/outils.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/outils.png
new file mode 100644
index 0000000..0ef1c5b
Binary files /dev/null and b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/files/outils.png differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/index.html b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/index.html
index e1e2d69..c328865 100644
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/index.html
+++ b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/index.html
@@ -1,79 +1,80 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!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=utf-8" />
-		<meta name="generator" content="RapidWeaver" />
-		
-		<title>Editeur</title>
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/styles.css" />
-		<!--[if IE 6]><link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/ie6.css" /><![endif]-->
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/colourtag-theme-default.css" />
-		<link rel="stylesheet" type="text/css" media="print" href="rw_common/themes/caribou/print.css" />
-		<link rel="stylesheet" type="text/css" media="handheld" href="rw_common/themes/caribou/handheld.css" />
-		<!--[if IE]><style type="text/css" media="screen">body {behavior: url(rw_common/themes/caribou/csshover.htc);}</style><![endif]-->
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/banner/swirls.css" />
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/logo_position/center.css" />
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/sidebar/sidebar_right.css" />
-		<link rel="stylesheet" type="text/css" media="screen" href="rw_common/themes/caribou/css/icons/black.css" />
-		
-		
-		<script type="text/javascript" src="rw_common/themes/caribou/javascript.js"></script>
-		
-		
-		
-		
-		<script type="text/javascript" charset="utf-8">	var blankSrc = "rw_common/themes/caribou/png/blank.gif";</script>	
-		<style type="text/css">	img { behavior:	url("rw_common/themes/caribou/png/pngbehavior.htc"); }</style>
-	</head>
-	
-	<!-- This page was created with RapidWeaver from Realmac Software. http://www.realmacsoftware.com -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Editeur Sankoré</title>
+<style type="text/css">
+<!--
+.white {	color: #FFF;
+}
+body {
+	background-color: #E5E3DB;
+}
+body,td,th {
+	font-family: Verdana, Geneva, sans-serif;
+	color: #666;
+	text-align: left;
+}
+.conteneur {
+	background-color: #5C5C5C;
+	text-align: center;
+}
+.c {
+	text-align: center;
+}
+.m {
+	font-size: medium;
+}
+a:link {
+	color: #666;
+}
+a:visited {
+	color: #666;
+}
+a:hover {
+	color: #000;
+}
+a:active {
+	color: #666;
+}
+-->
+</style>
+</head>
 
 <body>
-<div id="bar"></div>
-<div id="container"><!-- Start container -->
-	<div id="pageHeader"><!-- Start page header -->
-		<div id="navcontainer"><!-- Start Navigation -->
-			<ul><li><a href="index.html" rel="self" id="current">Editeur</a></li></ul>
-		</div><!-- End navigation --> 
-		<div id="title">
-			<div id="logo"></div>
-			<h1>Editeur Sankoré</h1>
-			<h2>Instructions pour l'utilisation de l'éditeur Sankoré</h2>
-			<div id="overlay_swirls"><img src="rw_common/themes/caribou/images/header_swirls.png" alt="" style="width: 900px; height: 150px;" /></div>
-			<div id="overlay_stripes_glow"><img src="rw_common/themes/caribou/images/header_stripes_glow.png" alt="" style="width: 900px; height: 150px;" /></div>
-			<div id="overlay_stripes_solid"><img src="rw_common/themes/caribou/images/header_stripes_solid.png" alt="" style="width: 900px; height: 150px;" /></div>
-			<div id="overlay_curve_solid"><img src="rw_common/themes/caribou/images/header_curve_solid.png" alt="" style="width: 900px; height: 150px;" /></div>
-		</div>
-		<div id="background"><img src="rw_common/themes/caribou/images/header_bg.png" alt="" style="width: 914px; height: 197px;" /></div>
-	</div><!-- End page header -->
-	
-	<div id="contentContainer"><!-- Start main content wrapper -->
-		<div id="content"><!-- Start content -->
-			<div class="contentSpacer"></div><!-- this makes sure the content is long enough for the design -->
-			<p style="text-align:center;"><br /><br /><br /></p><p style="text-align:left;"><span style="font:14px Trebuchet, Verdana, serif; font-weight:bold; font-weight:bold; ">L’éditeur Sankoré vous permet de réaliser des scénarios d’interactivités riches</span><span style="font:12px Trebuchet, Verdana, serif; "><br /><br /></span><span style="font:11px Trebuchet, Verdana, serif; ">ATTENTION : Vous devez être connecté à l’Internet pour l’utiliser.</span><span style="font:12px Trebuchet, Verdana, serif; "><br /><br /></span><span style="font:13px Trebuchet, Verdana, serif; ">Quand vous entrez sur l’éditeur, un nom d’utilisateur et mot de passe vous sont demandés.<br /><br />Pour le tester et l’utiliser en mode de démonstration, utilisez, comme indiqué ci-dessous, l’identifiant “demo” autant pour le nom d’utilisateur que pour le mot de passe.<br /></span><span style="font:12px Trebuchet, Verdana, serif; "><br /></span></p><p style="text-align:center;"><img class="imageStyle" alt="login_paraschool" src="files/login_paraschool.png" width="371" height="252" /><span style="font:12px Trebuchet, Verdana, serif; "><br /></span></p><p style="text-align:left;"><span style="font:12px Trebuchet, Verdana, serif; "><br /></span><span style="font:13px Trebuchet, Verdana, serif; ">Si vous désirez l’utiliser en tant qu’outil personnel de création de contenus, vous pouvez envoyer un email à </span><span style="font:13px Trebuchet, Verdana, serif; "><a href="mailto:daniel.lebret at gmail.com" rel="self">cette adresse</a></span><span style="font:13px Trebuchet, Verdana, serif; "> en précisant bien que vous désirez créer un compte sur l’éditeur Sankoré.<br /><br /></span></p><p style="text-align:center;"><span style="font:13px Trebuchet, Verdana, serif; "><a href="http://editeur.sankore.org" rel="self">Cliquez ici pour vous connecter à l’éditeur Sankoré<br /></a></span><a href="http://editeur.sankore.org" rel="self"><img class="imageStyle" alt="connect_screen" src="files/connect_screen.png" width="303" height="75" /></a></p>
-			<div class="clearer"></div>
-		</div><!-- End content -->
-		
-	</div><!-- End main content wrapper -->
-	
-	<div id="sidebarContainer"><!-- Start Sidebar wrapper -->
-		<div id="sidebar"><!-- Start sidebar content -->
-		<div class="sideHeader"></div><!-- Sidebar header --> 
-			<!-- sidebar content you enter in the page inspector -->
-			 <!-- sidebar content such as the blog archive links -->
-		</div><!-- End sidebar content -->
-	</div><!-- End sidebar wrapper -->
-	
-	<div class="clearer"></div>
-	
-</div><!-- End container -->
-
-<div class="clearer"></div>
-<div id="footer"><!-- Start Footer -->
-	<p></p>
-	<div id="breadcrumbcontainer"><!-- Start the breadcrumb wrapper -->
-		
-	</div><!-- End breadcrumb -->
-</div><!-- End Footer -->
+<table width="843" border="0" align="center">
+  <tr>
+    <td class="conteneur"><p><img src="files/logo.png" width="196" height="22" alt="editeur" /></p>
+    <p><span class="white">Instructions pour l'utilisation de l'éditeur Sankoré</span></p></td>
+  </tr>
+  <tr>
+    <td><div align="center"><img src="files/outils.png" width="128" height="128" alt="outils" /> <img src="files/mappe.png" width="128" height="128" alt="mappe" /> <img src="files/calepin.png" width="128" height="128" alt="calepin" /></div></td>
+  </tr>
+  <tr>
+    <td>L'éditeur Sankoré vous permet de réaliser des scénarios d'interactivités riches. Il facilite la création de contenu interactif avec des activités de base qui peuvent être utilisées dans diverses disciplines (associer des images, des sons, ordonner des mots, des phrases,  créer des catégories...). Ce contenu peut ensuite être ajouté à votre cours sur le logiciel Open-Sankoré. L'éditeur repose sur votre compte utilisateur Planète Sankoré.</td>
+  </tr>
+  <tr>
+    <td><p>Éléments requis pour travailler avec l'éditeur :</p>
+      <ul>
+        <li>un accès Web</li>
+        <li>un compte Planète Sankoré</li>
+    </ul></td>
+  </tr>
+  <tr>
+    <td><div align="center">
+      <p> </p>
+      <p><a href="http://editeur.sankore.org" title="Editeur" target="_self" class="c">Accès à l'éditeur Sankoré</a></p>
+    </div></td>
+  </tr>
+  <tr>
+    <td><p> </p>
+    <p> </p>
+    <p> </p></td>
+  </tr>
+  <tr>
+    <td>L'éditeur Sankoré est hébergé sur <a href="http://planete.sankore.org/" target="_self">planete.sankore.org</a></td>
+  </tr>
+</table>
+<p> </p>
 </body>
 </html>
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/colourtag-theme-default.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/colourtag-theme-default.css
deleted file mode 100644
index 15d1220..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/colourtag-theme-default.css
+++ /dev/null
@@ -1,99 +0,0 @@
-/* @group Layout Colours */
-
-#bar,
-.photo-navigation,
-.movie-title {
-	background-color: #51748C;
-}
-
-#pageHeader #title {
-	background-color: #FF7E00;
-}
-
-#pageHeader h1,
-#pageHeader h2 {
-	text-shadow: 0px -1px 0px #994B00;
-}
-
-#footer {
-	background-color: #82B4D7;
-}
-
-#footer p {
-	text-shadow: 0px -1px 0px #4E6C81;
-}
-
-#breadcrumbcontainer li {
-	color: #5B7E96;
-}
-
-/* @end */
-
-/* @group Content Colours */
-	
-body,
-.blog-entry-body,
-.blog-entry-date,
-.blog-entry {
-	color: #7F7F7F;
-}
-
-
-#sidebarContainer .sideHeader,
-#sidebarContainer #sidebar h1,
-#sidebarContainer #sidebar h2,
-#sidebarContainer #sidebar h3 {
-	color: #51748C;
-}
-
-#sidebarContainer {
-	color: #A6A6A6;
-}
-
-#sidebarContainer #sidebar a,
-#breadcrumbcontainer,
-a:link, a:visited {
-	color: #656565;
-}
-
-h1, h2, h3, h4, h5,
-h1.blog-entry-title a,
-.blog-archive-headings-wrapper,
-.album-title,
-.photo-title,
-.movie-page-title {
-	color: #FF7E00;
-}
-
-
-
-/* @end */
-
-/* @group Navbar */
-
-#navcontainer a {
-	color: #7F7F7F;
-}
-
-#navcontainer a:hover,
-#navcontainer #current,
-#navcontainer .currentAncestor,
-#sidebarContainer #sidebar a:hover,
-.photo-navigation a:hover,
-a:hover, a:active,
-form,
-h1 {
-	color: #FF7E00;
-}
-
-#navcontainer ul ul a:hover,
-#navcontainer ul ul #current,
-#navcontainer ul ul .currentAncestor {
-	background: #FF7E00;
-	color: #fff;
-	border-bottom-color: #FF7E00;
-}
-
-
-
-/* @end */
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/curve_solid.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/curve_solid.css
deleted file mode 100644
index da249e3..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/curve_solid.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_curve_solid {
- 	display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_glow.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_glow.css
deleted file mode 100644
index 444f0e6..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_glow.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_stripes_glow {
-display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_solid.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_solid.css
deleted file mode 100644
index 39c2521..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/stripes_solid.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_stripes_solid {
-	display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/swirls.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/swirls.css
deleted file mode 100644
index 6b185fc..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/banner/swirls.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #overlay_swirls {
-	display: block;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/alternative.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/alternative.css
deleted file mode 100644
index 0a662f2..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/alternative.css
+++ /dev/null
@@ -1,70 +0,0 @@
-.filesharing-item {
-	background: url(../../images/download_icon.png) no-repeat 0 3px;
-	padding-left: 20px;
-}
-
-/* @group Blog */
-
-.blog-archive-link {
-	background: url(../../images/blog_home.png) no-repeat 0 5px;
-	padding-left: 20px;
-}
-
-.blog-entry-date {
-	padding-left: 20px;
-	background: url(../../images/blog_clock.png) no-repeat 0 3px;
-}
-
-/*styles the category link in the main entry */
-.blog-entry-category {
-	background: url(../../images/blog_file.png) no-repeat 0 0;
-}
-
-.blog-entry-body {
-	padding: 20px 0 40px 0;
-	background: url(../../images/blog_bottom_bar.png) no-repeat left bottom;
-}
-
-.blog-entry-comments {
-	padding-left: 20px;
-	background: url(../../images/blog_comments.png) no-repeat 0 3px;
-}
-
-.blog-trackback-link {
-	padding-left: 20px;
-	background: url(../../images/blog_trackback.png) no-repeat 0 0px;
-}
-
-p.blog-entry-tags {
-	background: url(../../images/blog_tag.png) no-repeat 0 3px;
-}
-
-/* styles the archives in the blog sidebar */
-
-.blog-archive-link-enabled {
-
-	background: url(../../images/blog_icon.png) no-repeat 0;
-}
-
-.blog-archive-link-disabled {
-	background: url(../../images/blog_icon.png) no-repeat 0;
-}
-
-/* Styles the blog categories in the blog sidebar */
-
-.blog-category-link-enabled {
-	background: url(../../images/blog_file.png) no-repeat 0;
-}
-
-.blog-category-link-disabled {
-	background: url(../../images/blog_file.png) no-repeat 0 3px;
-}
-
-.blog-rss-link {
-	background: url(../../images/blog_rss.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/blog_rss.png) no-repeat 0;
-}
-	
-/* @end */
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/black.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/black.css
deleted file mode 100644
index a816248..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/black.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_black.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_black.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_black.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_black.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/blue.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/blue.css
deleted file mode 100644
index a8fdad0..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/blue.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_blue.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_blue.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_blue.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_blue.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/brown.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/brown.css
deleted file mode 100644
index 52d8a6b..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/brown.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_brown.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_brown.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_brown.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_brown.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/green.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/green.css
deleted file mode 100644
index 1114ad4..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/green.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_green.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_green.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_green.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_green.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/pink.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/pink.css
deleted file mode 100644
index ac25b09..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/pink.css
+++ /dev/null
@@ -1,26 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_pink.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_pink.png) no-repeat left 2px;
-}
-
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_pink.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_pink.png) no-repeat left 2px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/red.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/red.css
deleted file mode 100644
index 7d23dfd..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/icons/red.css
+++ /dev/null
@@ -1,32 +0,0 @@
-.blog-entry-category {
-	background: url(../../images/file_red.png) no-repeat left 0;
-	}
-	
-p.blog-entry-tags {
-	background: url(../../images/tag_red.png) no-repeat left 2px;
-}
-
-.blog-category-link-disabled,
-.blog-archive-link-disabled {
-	background: url(../../images/file_red.png) no-repeat left center;
-}
-
-
-.blog-category-link-enabled,
-.blog-archive-link-enabled {
-	background: url(../../images/file_red.png) no-repeat left 1px;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
-
-.blog-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;}
-
-.blog-comments-rss-link {
-	background: url(../../images/feed.png) no-repeat 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/ie6.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/ie6.css
deleted file mode 100644
index fbd4e6f..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/ie6.css
+++ /dev/null
@@ -1,4 +0,0 @@
-#navcontainer a {
-	padding: 15px 15px 17px 15px;
-	height: 0px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/center.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/center.css
deleted file mode 100644
index ee422a9..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/center.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#pageHeader #logo img {
-	margin: 10px auto 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/left.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/left.css
deleted file mode 100644
index beb0cbf..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/left.css
+++ /dev/null
@@ -1,4 +0,0 @@
-#pageHeader #logo img {
-	float: left;
-	margin: 10px 0 0 30px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/right.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/right.css
deleted file mode 100644
index a4a0caf..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/logo_position/right.css
+++ /dev/null
@@ -1,4 +0,0 @@
-#pageHeader #logo img {
-	float: right;
-	margin: 10px 30px 0 0;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_left.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_left.css
deleted file mode 100644
index d9592ad..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_left.css
+++ /dev/null
@@ -1,15 +0,0 @@
-#contentContainer {
-	float: right;
-	padding-right: 7px;
-	background-position: top left;
-}
-
-#sidebarContainer {
-	float: left;
-	padding-left: 7px;	
-}
-
-#sidebarContainer #sidebar {
-	padding-left: 30px;
-	padding-right: 10px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_none.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_none.css
deleted file mode 100644
index d18e1f2..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_none.css
+++ /dev/null
@@ -1,8 +0,0 @@
-#sidebarContainer {
-	display: none;
-}
-
-#contentContainer {
-	width: auto;
-	background-image: none;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_right.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_right.css
deleted file mode 100644
index 5a0a941..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/css/sidebar/sidebar_right.css
+++ /dev/null
@@ -1,15 +0,0 @@
-#contentContainer {
-	float: left;
-	padding-left: 7px;
-	background-position: top right;
-}
-
-#sidebarContainer {
-	float: right;
-	padding-right: 7px;		
-}
-
-#sidebarContainer #sidebar {
-	padding-right: 30px;
-	padding-left: 10px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/csshover.htc b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/csshover.htc
deleted file mode 100644
index 20645fd..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/csshover.htc
+++ /dev/null
@@ -1,116 +0,0 @@
-<attach event="ondocumentready" handler="parseStylesheets" />
-<script>
-/**
- *	Whatever:hover - V2.01.050927 - hover, active & focus
- *	------------------------------------------------------------
- *	(c) 2005 - Peter Nederlof
- *	Peterned - http://www.xs4all.nl/~peterned/
- *	License  - http://creativecommons.org/licenses/LGPL/2.1/
- *
- *	Whatever:hover 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.
- *
- *	Whatever:hover is distributed in the hope that 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.
- *
- *	Credits and thanks to:
- *	Arnoud Berendsen, Martin Reurings, Robert Hanson
- *
- *	howto: body { behavior:url("csshover.htc"); }
- *	------------------------------------------------------------
- */
-
-var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea):unknown)/i,
-currentSheet, doc = window.document, hoverEvents = [], activators = {
-	onhover:{on:'onmouseover', off:'onmouseout'},
-	onactive:{on:'onmousedown', off:'onmouseup'},
-	onunknown:{on:'onfocus', off:'onblur'}
-}
-
-function parseStylesheets() {
-	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
-	window.attachEvent('onunload', unhookHoverEvents);
-	var sheets = doc.styleSheets, l = sheets.length;
-	for(var i=0; i<l; i++) 
-		parseStylesheet(sheets[i]);
-}
-	function parseStylesheet(sheet) {
-		if(sheet.imports) {
-			try {
-				var imports = sheet.imports, l = imports.length;
-				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
-			} catch(securityException){}
-		}
-
-		try {
-			var rules = (currentSheet = sheet).rules, l = rules.length;
-			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
-		} catch(securityException){}
-	}
-
-	function parseCSSRule(rule) {
-		var select = rule.selectorText, style = rule.style.cssText;
-		if(!csshoverReg.test(select) || !style) return;
-		
-		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
-		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
-		var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
-		var affected = select.replace(/:(hover|active|unknown).*$/, '');
-		var elements = getElementsBySelect(affected);
-		if(elements.length == 0) return;
-
-		currentSheet.addRule(newSelect, style);
-		for(var i=0; i<elements.length; i++)
-			new HoverElement(elements[i], className, activators[pseudo]);
-	}
-
-function HoverElement(node, className, events) {
-	if(!node.hovers) node.hovers = {};
-	if(node.hovers[className]) return;
-	node.hovers[className] = true;
-	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
-	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
-}
-	function hookHoverEvent(node, type, handler) {
-		node.attachEvent(type, handler);
-		hoverEvents[hoverEvents.length] = { 
-			node:node, type:type, handler:handler 
-		};
-	}
-
-	function unhookHoverEvents() {
-		for(var e,i=0; i<hoverEvents.length; i++) {
-			e = hoverEvents[i]; 
-			e.node.detachEvent(e.type, e.handler);
-		}
-	}
-
-function getElementsBySelect(rule) {
-	var parts, nodes = [doc];
-	parts = rule.split(' ');
-	for(var i=0; i<parts.length; i++) {
-		nodes = getSelectedNodes(parts[i], nodes);
-	}	return nodes;
-}
-	function getSelectedNodes(select, elements) {
-		var result, node, nodes = [];
-		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
-		if(identify) return [doc.getElementById(identify[1])];
-		
-		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
-		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
-		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
-		for(var i=0; i<elements.length; i++) {
-			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
-			for(var j=0; j<result.length; j++) {
-				node = result[j];
-				if(classReg && !classReg.test(node.className)) continue;
-				nodes[nodes.length] = node;
-			}
-		}	return nodes;
-	}
-</script>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/handheld.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/handheld.css
deleted file mode 100644
index 73e70c0..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/handheld.css
+++ /dev/null
@@ -1,545 +0,0 @@
-/*<group=General Styles>*/
-
-body {
-	text-align: left;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 0.9em;
-	margin: 0px;
-	padding: 0;
-	white-space: pre;
-}
-
-p {
-}
-
-b, strong {
-
-}
-
-a:link {
-	color: #0000ff;
-	text-decoration: underline;
-}
-
-a:visited {
-	color: #681796;
-}
-
-a:hover, a:active {
-	text-decoration: none;
-	background: #0000ff;
-	color: #ffffff;
-}
-
-img {
-	max-width: 99%;
-}
-
-.image-left {
-
-}
-
-.image-right {
-
-}
-	
-/*</group>*/
-
-/*<group=Layout>*/
-
-#container { 
-	background: #ffffff;
-	background-image: none;
-	width: 100%;
-}
-
-#pageHeader {
-	height: auto;
-	text-align: left;
-	margin-bottom: 8px;
-	background: #000000;
-	padding: 3px;
-	border-bottom: solid #191919 2px;
-}
-
-#pageHeader img {
-	position: relative;
-	top: auto;
-	right: auto;
-}
-
-#pageHeader h1 {
-	color: #ffffff;
-	font-size: 1.3em;
-	margin: 0 0 5px;
-	padding-top: 0px;
-	font-weight: bold;
-}
-
-#pageHeader h2 {
-	font-size: 1.1em;
-	margin: 0;
-	color: #ffffff;
-	font-weight: normal;
-}
-
-#contentContainer {
-	margin: 0px;
-	display: block;
-	width: auto;
-}
-
-#contentContainer #content {
-	margin: 0;
-	padding: 0;
-}
-
-#sidebarContainer {
-	float: none;
-	width: auto;
-	display: block;
-	margin-bottom: 10px;
-	padding-bottom: 10px;
-	border-bottom: 1px solid #808080;
-}
-
-#sidebarContainer #sidebar {
-	margin: 0;
-	padding: 0px;
-}
-
-#sidebarContainer .sideHeader {
-	color: #000000;
-	font-weight: bold;
-	margin-bottom: 5px;
-}
-
-#footer { 
-	width: auto;
-	text-align: left;
-	padding: 0px;
-	margin: 0;
-}
-
-#footer p {
-}
-
-#footer a:link, #footer a:visited {
-
-}
-
-#footer a:hover, #footer a:active {
-}
-	
-/*</group>*/
-
-/*<group=Bread-crumb>*/
-
-#breadcrumbcontainer {
-	margin-bottom: 5px;
-}
-
-#breadcrumbcontainer ul {
-	list-style: none;
-	margin: 0;
-	padding: 0;
-}
-
-#breadcrumbcontainer li {
-	display: inline;
-	padding: 0;
-	margin: 0;
-}
-
-#breadcrumbcontainer a {
-	padding: 0;
-}
-
-#breadcrumbcontainer a:hover {
-
-}
-	
-/*</group>*/
-
-/*<group=Toolbar>*/
-
-/* Toolbar Styles */
-
-#navcontainer {
-	color: #000000;
-	margin: 0 0 10px 0;
-	padding: 0;
-}
-
-#navcontainer #current {
-
-}
-
-#navcontainer #current:hover {
-}
-
-#navcontainer .currentAncestor {
-
-}
-
-/* Parent - Level 0 */
-
-#navcontainer ul{
-	margin: 0;
-	padding: 0;
-	list-style-type: none;
-}
-
-#navcontainer li {
-	margin: 0;
-	padding: 0;
-}
-
-#navcontainer a {
-	padding: 0;
-}
-
-#navcontainer a:hover {
-}
-
-#navcontainer a:active {
-}
-
-/* Child - Level 1 */
-
-#navcontainer ul ul {
-	list-style-type: none;
-	margin-left: 2px;
-	padding: 0;
-	color: black;
-}
-
-#navcontainer ul ul li {
-	padding-left: 5px;
-}
-
-#navcontainer ul ul a {
-	padding: 0;
-}
-
-#navcontainer ul ul a:hover{
-}
-
-#navcontainer ul ul #current{
-}
-
-/* Child - Level 2 */
-
-#navcontainer ul ul ul {
-
-}
-
-#navcontainer ul ul ul li {
-	padding-left: 10px;
-}
-
-#navcontainer ul ul ul a{
-}
-
-#navcontainer ul ul ul a:hover{
-
-}
-
-/* Child Level 3 */
-
-#navcontainer ul ul ul {
-
-}
-
-#navcontainer ul ul ul ul li {
-	padding-left: 15px;
-}
-
-#navcontainer ul ul ul ul a{
-}
-
-#navcontainer ul ul ul ul a:hover{
-
-}
-
-/* Child Level 4 */
-
-#navcontainer ul ul ul ul {
-
-}
-
-#navcontainer ul ul ul ul ul li {
-	padding-left: 20px;
-}
-
-#navcontainer ul ul ul ul ul a{
-}
-
-#navcontainer ul ul ul ul ul a:hover{
-
-}
-
-/* Child Level 5 */
-
-#navcontainer ul ul ul ul ul {
-
-}
-
-#navcontainer ul ul ul ul ul ul li { 
-}
-
-#navcontainer ul ul ul ul ul ul a{
-}
-
-#navcontainer ul ul ul ul ul ul a:hover{
-
-}
-
-/*</group>*/
-
-/*<group=Global Classes>*/
-
-blockquote, .standout {
-	margin: 0;
-	padding: 5px;
-	font-weight: bold;
-}
-
-h1 {
-}
-
-h2 {
-}
-
-h3 {
-}
-
-h4 {
-}
-
-.imageStyle {
-
-}
-	
-/*</group>*/
-
-/*<group=Blog>*/
-
-/*<group=Archive Page>*/
-
-.blog-archive-background {
-}

.blog-archive-headings-wrapper {
-}
-
-.blog-archive-entries-wrapper {
-}
-
-.blog-archive-entries-wrapper .blog-entry {
-}

.blog-archive-month {
-}
-
-.blog-archive-link {
-}

.blog-archive-link a:link, .blog-archive-link a:visited {
-}
-	
-/*</group>*/
-
-.blog-entry {
-}
-
-.blog-entry-title {
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.blog-entry-date {
-	margin-bottom: 8px;
-	font-size: 0.9em;
-	color: #808080;
-}
-
-.blog-entry-body {
-	margin-bottom: 5px;
-	padding-bottom: 5px;
-	border-bottom: 1px solid #cccccc;
-}
-
-.blog-entry-comments {
-	display: none;
-}
-
-.blog-entry-category {
-}
-
-.blog-category-link-enabled {
-}
-
-.blog-category-link-disabled {
-}
-
-/*</group>*/
-
-/*<group=File Sharing>*/
-
-.filesharing-description {
-}
-
-.filesharing-item {
-	margin-bottom: 5px;
-	padding-bottom: 5px;
-	border-bottom: 1px solid #cccccc;
-}
-
-.filesharing-item-title a:link {
-}
-
-.filesharing-item-title a:hover {
-}
-
-.filesharing-item-title a:visited {
-
-}
-
-.filesharing-item-description {
-}
-
-/*</group>*/
-
-/*<group=Photo Album>*/
-
-/*<group=Index Page (Thumbnail view)>*/
-
-.album-title {
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.album-description {
-	margin-bottom: 8px;
-	font-size: 0.9em;
-	color: #808080;
-}
-
-table.thumbnail-table {
-	width: 99%;
-}
-
-table.thumbnail-table, table.thumbnail-table tr, table.thumbnail-table td {
-	display: block;
-}
-
-.thumbnail-frame {
-}
-
-.thumbnail-frame:hover {
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-}
-
-.thumbnail-frame img {
-}
-
-.thumbnail-caption {
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Photo view)>*/
-
-.photo-background {
-}
-
-.photo-navigation {
-}
-
-.photo-links {
-}
-
-.photo-navigation a:link, .photo-navigation a:visited {
-
-}
-
-.photo-navigation a:hover {
-
-}
-
-.photo-frame{
-}
-
-.photo-title {
-}
-
-.photo-caption {
-}
-
-/*</group>*/
-	
-/*</group>*/
-
-/*<group=Quicktime Page>*/
-
-.movie-description {
-
-}
-	
-/*</group>*/
-
-/*<group=Quicktime Album>*/
-
-/*<group=Index Page (Movie Thumbnail view)>*/
-
-.movie-page-title {
-	font-weight: bold;
-	margin-bottom: 3px;
-}

.movie-page-description {
-	margin-bottom: 8px;
-	font-size: 0.9em;
-	color: #808080;
-}

.movie-thumbnail-frame {
-}
-
-.movie-thumbnail-frame:hover {
-}
-
-.movie-thumbnail-caption {
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Movie View)>*/
-
-.movie-background {
-}
-
-.movie-title {
-}
-
-.movie-frame {
-
-}
-	
-/*</group>*/
-
-
-/*</group>*/
-
-/*<group=Contact Form>*/
-.message-text { 
-} 
-
-.required-text {
-} 
-
-.form-input-field {
-	max-width: 100%;
-} 
-
-.form-input-button { 
-} 
-/*</group>*/
-
-
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_bottom_bar.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_bottom_bar.png
deleted file mode 100644
index a76ad53..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_bottom_bar.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_clock.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_clock.png
deleted file mode 100644
index 9aed16d..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_clock.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_comments.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_comments.png
deleted file mode 100644
index 36af5fc..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_comments.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_file.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_file.png
deleted file mode 100644
index 2c723b4..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_file.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_home.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_home.png
deleted file mode 100644
index b69156e..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_home.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_icon.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_icon.png
deleted file mode 100644
index 417efe6..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_rss.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_rss.png
deleted file mode 100644
index 3c7e843..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_rss.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_tag.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_tag.png
deleted file mode 100644
index 3be0335..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_tag.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_trackback.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_trackback.png
deleted file mode 100644
index 0b29d7a..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/blog_trackback.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/button_over.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/button_over.png
deleted file mode 100644
index 54d9ee1..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/button_over.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/container_top_grad.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/container_top_grad.png
deleted file mode 100644
index 608b610..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/container_top_grad.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.bak.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.bak.png
deleted file mode 100644
index 8762f46..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.bak.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.png
deleted file mode 100644
index 2fe33d6..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_sep.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_top.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_top.png
deleted file mode 100644
index 1331d89..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/content_top.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/download_icon.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/download_icon.png
deleted file mode 100644
index def80b9..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/download_icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/feed.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/feed.png
deleted file mode 100644
index 19fca80..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/feed.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_black.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_black.png
deleted file mode 100644
index 4b0e211..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_black.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_blue.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_blue.png
deleted file mode 100644
index fa483be..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_blue.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_brown.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_brown.png
deleted file mode 100644
index 72bde9f..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_brown.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_green.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_green.png
deleted file mode 100644
index 512f704..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_green.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_pink.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_pink.png
deleted file mode 100644
index 3e59843..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_pink.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_red.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_red.png
deleted file mode 100644
index 6f1963c..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/file_red.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_bg.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_bg.png
deleted file mode 100644
index bcef0a8..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_bg.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_curve_solid.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_curve_solid.png
deleted file mode 100644
index 20b2a4b..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_curve_solid.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_glow.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_glow.png
deleted file mode 100644
index dc4d0ee..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_glow.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_solid.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_solid.png
deleted file mode 100644
index e36f333..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_stripes_solid.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_swirls.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_swirls.png
deleted file mode 100644
index ce8a27a..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/header_swirls.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_bottom.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_bottom.png
deleted file mode 100644
index a742b53..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_bottom.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_top.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_top.png
deleted file mode 100644
index 814c0d3..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_shadow_top.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_thumbnail.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_thumbnail.png
deleted file mode 100644
index 47750b3..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/photo_thumbnail.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_black.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_black.png
deleted file mode 100644
index 485b897..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_black.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_blue.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_blue.png
deleted file mode 100644
index b51fda5..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_blue.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_brown.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_brown.png
deleted file mode 100644
index e472389..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_brown.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_green.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_green.png
deleted file mode 100644
index 27d833b..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_green.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_pink.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_pink.png
deleted file mode 100644
index dbdc1ee..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_pink.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_red.png b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_red.png
deleted file mode 100644
index 9c8a716..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/images/tag_red.png and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/javascript.js b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/javascript.js
deleted file mode 100644
index ba93db4..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/javascript.js
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * RapidWeaver 3.5.0 theme functions.
- * Script Version 2.1
- * Updated 26 May 2006.
- */
-
-
-
-/*
- * Function to generate "open in new window" link as W3C compliant
- */
-
-function externalLinks() {
-if (!document.getElementsByTagName) return; 
-var anchors = document.getElementsByTagName("a"); 
-for (var i=0; i<anchors.length; i++) { 
-var anchor = anchors[i]; 
-if (anchor.getAttribute("href") && 
-anchor.getAttribute("rel") == "external") 
-anchor.target = "_blank";
-} 
-} 
-window.onload = externalLinks;
-
-
-
-
-/*
- * Functions to generate OBJECT and EMBED tags for Flash content.
- * Resource: http://blog.deconcept.com/swfobject/
- *
- * SWFObject is (c) 2006 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(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
-	if (!document.createElement || !document.getElementById) { return; }
-	this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
-	this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
-	this.params = new Object();
-	this.variables = new Object();
-	this.attributes = new Array();
-	if(swf) { this.setAttribute('swf', swf); }
-	if(id) { this.setAttribute('id', id); }
-	if(w) { this.setAttribute('width', w); }
-	if(h) { this.setAttribute('height', h); }
-	if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }
-	this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
-	if(c) { this.addParam('bgcolor', c); }
-	var q = quality ? quality : 'high';
-	this.addParam('quality', q);
-	this.setAttribute('useExpressInstall', useExpressInstall);
-	this.setAttribute('doExpressInstall', false);
-	var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
-	this.setAttribute('xiRedirectUrl', xir);
-	this.setAttribute('redirectUrl', '');
-	if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }
-}
-deconcept.SWFObject.prototype = {
-	setAttribute: function(name, value){
-		this.attributes[name] = value;
-	},
-	getAttribute: function(name){
-		return this.attributes[name];
-	},
-	addParam: function(name, value){
-		this.params[name] = value;
-	},
-	getParams: function(){
-		return this.params;
-	},
-	addVariable: function(name, value){
-		this.variables[name] = value;
-	},
-	getVariable: function(name){
-		return this.variables[name];
-	},
-	getVariables: function(){
-		return this.variables;
-	},
-	getVariablePairs: function(){
-		var variablePairs = new Array();
-		var key;
-		var variables = this.getVariables();
-		for(key in variables){
-			variablePairs.push(key +"="+ variables[key]);
-		}
-		return variablePairs;
-	},
-	getSWFHTML: function() {
-		var swfNode = "";
-		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
-			if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");
-			swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
-			swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
-			var params = this.getParams();
-			 for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
-			var pairs = this.getVariablePairs().join("&");
-			 if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
-			swfNode += '/>';
-		} else { // PC IE
-			if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");
-			swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
-			swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
-			var params = this.getParams();
-			for(var key in params) {
-			 swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
-			}
-			var pairs = this.getVariablePairs().join("&");
-			if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
-			swfNode += "</object>";
-		}
-		return swfNode;
-	},
-	write: function(elementId){
-		if(this.getAttribute('useExpressInstall')) {
-			// check to see if we need to do an express install
-			var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);
-			if (this.installedVer.versionIsValid(expressInstallReqVer) && !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 elementId == 'string') ? document.getElementById(elementId) : elementId;
-			n.innerHTML = this.getSWFHTML();
-			return true;
-		}else{
-			if(this.getAttribute('redirectUrl') != "") {
-				document.location.replace(this.getAttribute('redirectUrl'));
-			}
-		}
-		return false;
-	}
-}
-
-/* ---- detection functions ---- */
-deconcept.SWFObjectUtil.getPlayerVersion = function(reqVer, xiInstall){
-	var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);
-	if(navigator.plugins && navigator.mimeTypes.length){
-		var x = navigator.plugins["Shockwave Flash"];
-		if(x && x.description) {
-			PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
-		}
-	}else{
-		try{
-			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
-			for (var i=3; axo!=null; i++) {
-				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
-				PlayerVersion = new deconcept.PlayerVersion([i,0,0]);
-			}
-		}catch(e){}
-		if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; // version is ok, skip minor detection
-		// this only does the minor rev lookup if the user's major version 
-		// is not 6 or we are checking for a specific minor or revision number
-		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
-		if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {
-			try{
-				PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
-			}catch(e){}
-		}
-	}
-	return PlayerVersion;
-}
-deconcept.PlayerVersion = function(arrVersion){
-	this.major = parseInt(arrVersion[0]) != null ? parseInt(arrVersion[0]) : 0;
-	this.minor = parseInt(arrVersion[1]) || 0;
-	this.rev = parseInt(arrVersion[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;
-}
-/* ---- get value of query string param ---- */
-deconcept.util = {
-	getRequestParameter: function(param){
-		var q = document.location.search || document.location.hash;
-		if(q){
-			var startIndex = q.indexOf(param +"=");
-			var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
-			if (q.length > 1 && startIndex > -1) {
-				return q.substring(q.indexOf("=", startIndex)+1, endIndex);
-			}
-		}
-		return "";
-	}
-}
-/* fix for video streaming bug */
-deconcept.SWFObjectUtil.cleanupSWFs = function() {
-	var objects = document.getElementsByTagName("OBJECT");
-	for (var i=0; i < objects.length; i++) {
-		for (var x in objects[i]) {
-			if (typeof objects[i][x] == 'function') {
-				objects[i][x] = null;
-			}
-		}
-	}
-}
-if (typeof window.onunload == 'function') {
-	var oldunload = window.onunload;
-		window.onunload = function() {
-		deconcept.SWFObjectUtil.cleanupSWFs();
-		oldunload();
-	}
-} else {
-	window.onunload = deconcept.SWFObjectUtil.cleanupSWFs;
-}
-/* add Array.push if needed (ie5) */
-if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}
-
-/* add some aliases for ease of use/backwards compatibility */
-var getQueryParamValue = deconcept.util.getRequestParameter;
-var FlashObject = deconcept.SWFObject; // for legacy support
-var SWFObject = deconcept.SWFObject;
-
-
-
-
-
-/*
- * Functions to generate OBJECT and EMBED tags for QuickTime content.
- * Resource: http://developer.apple.com/internet/ieembedfix.html
- */
-
-/************** LOCALIZABLE GLOBAL VARIABLES ****************/
-
-var gArgCountErr =	'The "%%" function requires an even number of arguments.'
-				+	'\nArguments should be in the form "atttributeName", "attributeValue", ...';
-
-/******************** END LOCALIZABLE **********************/
-
-var gTagAttrs				= null;
-var gQTGeneratorVersion		= 1.0;
-
-function AC_QuickTimeVersion()	{ return gQTGeneratorVersion; }
-
-function _QTComplain(callingFcnName, errMsg)
-{
-    errMsg = errMsg.replace("%%", callingFcnName);
-	alert(errMsg);
-}
-
-function _QTAddAttribute(prefix, slotName, tagName)
-{
-	var		value;
-
-	value = gTagAttrs[prefix + slotName];
-	if ( null == value )
-		value = gTagAttrs[slotName];
-
-	if ( null != value )
-	{
-		if ( 0 == slotName.indexOf(prefix) && (null == tagName) )
-			tagName = slotName.substring(prefix.length); 
-		if ( null == tagName ) 
-			tagName = slotName;
-		return tagName + '="' + value + '" ';
-	}
-	else
-		return "";
-}
-
-function _QTAddObjectAttr(slotName, tagName)
-{
-	// don't bother if it is only for the embed tag
-	if ( 0 == slotName.indexOf("emb#") )
-		return "";
-
-	if ( 0 == slotName.indexOf("obj#") && (null == tagName) )
-		tagName = slotName.substring(4); 
-
-	return _QTAddAttribute("obj#", slotName, tagName);
-}
-
-function _QTAddEmbedAttr(slotName, tagName)
-{
-	// don't bother if it is only for the object tag
-	if ( 0 == slotName.indexOf("obj#") )
-		return "";
-
-	if ( 0 == slotName.indexOf("emb#") && (null == tagName) )
-		tagName = slotName.substring(4); 
-
-	return _QTAddAttribute("emb#", slotName, tagName);
-}
-
-
-function _QTAddObjectParam(slotName, generateXHTML)
-{
-	var		paramValue;
-	var		paramStr = "";
-	var		endTagChar = (generateXHTML) ? ' />' : '>';
-
-	if ( -1 == slotName.indexOf("emb#") )
-	{
-		// look for the OBJECT-only param first. if there is none, look for a generic one
-		paramValue = gTagAttrs["obj#" + slotName];
-		if ( null == paramValue )
-			paramValue = gTagAttrs[slotName];
-
-		if ( 0 == slotName.indexOf("obj#") )
-			slotName = slotName.substring(4); 
-	
-		if ( null != paramValue )
-			paramStr = '  <param name="' + slotName + '" value="' + paramValue + '"' + endTagChar + '\n';
-	}
-
-	return paramStr;
-}
-
-function _QTDeleteTagAttrs()
-{
-	for ( var ndx = 0; ndx < arguments.length; ndx++ )
-	{
-		var attrName = arguments[ndx];
-		delete gTagAttrs[attrName];
-		delete gTagAttrs["emb#" + attrName];
-		delete gTagAttrs["obj#" + attrName];
-	}
-}
-
-		
-
-// generate an embed and object tag, return as a string
-function _QTGenerate(callingFcnName, generateXHTML, args)
-{
-	// is the number of optional arguments even?
-	if ( args.length < 4 || (0 != (args.length % 2)) )
-	{
-		_QTComplain(callingFcnName, gArgCountErr);
-		return "";
-	}
-	
-	// allocate an array, fill in the required attributes with fixed place params and defaults
-	gTagAttrs = new Array();
-	gTagAttrs["src"] = args[0];
-	gTagAttrs["width"] = args[1];
-	gTagAttrs["height"] = args[2];
-	gTagAttrs["classid"] = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
-	gTagAttrs["pluginspage"] = "http://www.apple.com/quicktime/download/";
-
-	// set up codebase attribute with specified or default version before parsing args so
-	//  anything passed in will override
-	var activexVers = args[3]
-	if ( (null == activexVers) || ("" == activexVers) )
-		activexVers = "6,0,2,0";
-	gTagAttrs["codebase"] = "http://www.apple.com/qtactivex/qtplugin.cab#version=" + activexVers;
-
-	var	attrName,
-		attrValue;
-
-	// add all of the optional attributes to the array
-	for ( var ndx = 4; ndx < args.length; ndx += 2)
-	{
-		attrName = args[ndx].toLowerCase();
-		attrValue = args[ndx + 1];
-
-		// "name" and "id" should have the same value, the former goes in the embed and the later goes in
-		//  the object. use one array slot 
-		if ( "name" == attrName || "id" == attrName )
-			gTagAttrs["name"] = attrValue;
-
-		else 
-			gTagAttrs[attrName] = attrValue;
-	}
-
-	// init both tags with the required and "special" attributes
-	var objTag =  '<object '
-					+ _QTAddObjectAttr("classid")
-					+ _QTAddObjectAttr("width")
-					+ _QTAddObjectAttr("height")
-					+ _QTAddObjectAttr("codebase")
-					+ _QTAddObjectAttr("name", "id")
-					+ _QTAddObjectAttr("tabindex")
-					+ _QTAddObjectAttr("hspace")
-					+ _QTAddObjectAttr("vspace")
-					+ _QTAddObjectAttr("border")
-					+ _QTAddObjectAttr("align")
-					+ _QTAddObjectAttr("class")
-					+ _QTAddObjectAttr("title")
-					+ _QTAddObjectAttr("accesskey")
-					+ _QTAddObjectAttr("noexternaldata")
-					+ '>\n'
-					+ _QTAddObjectParam("src", generateXHTML);
-	var embedTag = '  <embed '
-					+ _QTAddEmbedAttr("src")
-					+ _QTAddEmbedAttr("width")
-					+ _QTAddEmbedAttr("height")
-					+ _QTAddEmbedAttr("pluginspage")
-					+ _QTAddEmbedAttr("name")
-					+ _QTAddEmbedAttr("align")
-					+ _QTAddEmbedAttr("tabindex");
-
-	// delete the attributes/params we have already added
-	_QTDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex",
-					"hspace","vspace","border","align","noexternaldata","class","title","accesskey");
-
-	// and finally, add all of the remaining attributes to the embed and object
-	for ( var attrName in gTagAttrs )
-	{
-		attrValue = gTagAttrs[attrName];
-		if ( null != attrValue )
-		{
-			embedTag += _QTAddEmbedAttr(attrName);
-			objTag += _QTAddObjectParam(attrName, generateXHTML);
-		}
-	} 
-
-	// end both tags, we're done
-	return objTag + embedTag + '> </em' + 'bed>\n</ob' + 'ject' + '>';
-}
-
-// return the object/embed as a string
-function QT_GenerateOBJECTText()
-{
-	return _QTGenerate("QT_GenerateOBJECTText", false, arguments);
-}
-
-function QT_GenerateOBJECTText_XHTML()
-{
-	return _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments);
-}
-
-function QT_WriteOBJECT()
-{
-	document.writeln(_QTGenerate("QT_WriteOBJECT", false, arguments));
-}
-
-function QT_WriteOBJECT_XHTML()
-{
-	document.writeln(_QTGenerate("QT_WriteOBJECT_XHTML", true, arguments));
-}
-
-
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/blank.gif b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/blank.gif
deleted file mode 100644
index 75b945d..0000000
Binary files a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/blank.gif and /dev/null differ
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/pngbehavior.htc b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/pngbehavior.htc
deleted file mode 100644
index 09ff463..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/png/pngbehavior.htc
+++ /dev/null
@@ -1,86 +0,0 @@
-<public:component lightWeight="true">
-<public:attach event="onpropertychange" onevent="propertyChanged()" />
-<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
-<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
-<script>
-
-/*
- * PNG Behavior
- *
- * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
- * for WebFX (http://webfx.eae.net)
- * Copyright 2002-2004
- *
- * For usage see license at http://webfx.eae.net/license.html
- *
- * Version: 1.02
- * Created: 2001-??-??	First working version
- * Updated: 2002-03-28	Fixed issue when starting with a non png image and
- *                      switching between non png images
- *          2003-01-06	Fixed RegExp to correctly work with IE 5.0x
- *          2004-05-09  When printing revert to original
- *
- */
-
-var supported = /MSIE ((5\.5)|[6789])/.test(navigator.userAgent) &&
-				navigator.platform == "Win32";
-
-var realSrc;
-//var blankSrc = "blank.gif";
-var isPrinting = false;
-
-if (supported) fixImage();
-
-function propertyChanged() {
-	if (!supported || isPrinting) return;
-
-	var pName = event.propertyName;
-	if (pName != "src") return;
-	// if not set to blank
-	if (!new RegExp(blankSrc).test(src))
-		fixImage();
-};
-
-function fixImage() {
-	// get src
-	var src = element.src;
-
-	// check for real change
-	if (src == realSrc && /\.png$/i.test(src)) {
-		element.src = blankSrc;
-		return;
-	}
-
-	if ( ! new RegExp(blankSrc).test(src)) {
-		// backup old src
-		realSrc = src;
-	}
-
-	// test for png
-	if (/\.png$/i.test(realSrc)) {
-		// set blank image
-		element.src = blankSrc;
-		// set filter
-		element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
-					"AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
-	}
-	else {
-		// remove filter
-		element.runtimeStyle.filter = "";
-	}
-}
-
-function beforePrint() {
-	isPrinting = true;
-	element.src = realSrc;
-	element.runtimeStyle.filter = "";
-	realSrc = null;
-}
-
-function afterPrint() {
-	isPrinting = false;
-	fixImage();
-}
-
-</script>
-</public:component>
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/print.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/print.css
deleted file mode 100644
index 675c58c..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/print.css
+++ /dev/null
@@ -1,631 +0,0 @@
-/*<group=General Styles>*/
-
-body {
-	background: transparent none;
-	margin: 0px 5% 0px 5%;
-	text-align: left;
-	color: #000000;
-	letter-spacing: 0.5px;
-	word-spacing: 1px;
-	padding: 0px;
-	font: 10pt Geneva, Arial, Helvetica;
-}
-
-p { 
-}
-
-b, strong {
-	font-weight: bold;
-}
-
-a:link, a:visited {
-}
-
-a:hover, a:active {
-}
-	
-/*</group>*/
-
-/*<group=Layout>*/
-
-#container {
	text-align: left;
-	width: 100%;
-	padding: 10px 0 0 0;
-	margin: 0px;
-}
-
-#pageHeader {
-	display: none;
-}
-
-#pageHeader img {
-	float: right;
-}
-
-#pageHeader h1 {
-	color: #000000;
-	margin: 0px;
-	font-weight: bold;
-	font-size: 16pt;
-	padding: 0px;
-}
-
-#pageHeader h2 {
-	color: #333333;
-	margin: 0px;
-	font-size: 13pt;
-	font-weight: normal;
-	padding: 0px;
-}
-
-#contentContainer {
-	float: none !important;
-	padding: 0px;
-}
-
-#contentContainer #content {
-	padding: 0px;
-}
-
-#contentContainer #content img {
-}
-
-#sidebarContainer {
-	float: right;
-}
-
-#sidebarContainer .sidebar {
-	width: 190px;
-	padding: 10px;
-	border-left: 1px solid #cccccc;
-}
-
-#footer {
-	text-align: center; 
-	background: none;
-	color: #000000;
-	font-size: 10pt;
-	border-top: 1px solid #cccccc;
-	margin-top: 10px;
-	padding-top: 10px;
-}
-
-#footer a {
-}
-
-#footer a:hover {
-}
-	
-/*</group>*/
-
-/*<group=toolbar>*/
-
-#navcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Bread-crumb>*/
-
-#breadcrumbcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Global Classes>*/
-
-.standout {
-	color: #474747;
-	font-size: 11pt;
-	font-weight: bold;
-	letter-spacing: 1px;
-	word-spacing: 2px;
-	padding: 40px;
-	background-color: #f5f5f5;
-	font-style: italic;
-}
-
-h1 {
-	font-size: 20pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h2 {
-	font-size: 18pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h3 {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h4 {
-	font-size: 14pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h5 {
-	font-size: 12px;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.imageStyle {
-}
-	
-/*</group>*/
-
-/*<group=Blog>*/
-
-.blog-entry {
-	border-style: none;
-}
-
-.blog-entry-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-	border-style: none;
-}
-
-.blog-entry-date {
-	margin-bottom: 10px;
-	margin-top: 5px;
-	border-style: none;
-	font-size: 10pt;
-	color: #333333;
-}
-
-.blog-entry-body {
-	margin-bottom: 45px;
-	border-style: none;
-}
-	
-/*</group>*/
-
-/*<group=File Sharing>*/
-
-.filesharing-description {
-	margin-bottom: 20px;
-	border-bottom: 1px solid #d9d9d9;
-}
-
-.filesharing-item {
-	
-}
-
-.filesharing-item-title {
-	font-size: 16pt;
-	font-weight: bold;
-}
-
-.filesharing-item-description {
-	margin-bottom: 10px;
-}
-
-/*</group>*/
-
-/*<group=Photo Album>*/
-
-/*<group=Index Page (Thumbnail view)>*/
-
-.album-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.album-description {
-}
-
-.thumbnail-frame {
-	margin: 0px;
-	padding: 0px;
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-	height: 30px;
-}
-
-.thumbnail-frame img {
-	background: repeat url(images/sidebar_bg.png);
-}
-
-.thumbnail-caption {
-	color: #4c4c4c;
-	margin-top: -2px;
-	font-size: 10pt;
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Photo view)>*/
-
-.photo-background {
-	text-align: center;
-}
-
-.photo-navigation {
-	background: none;
-	display: none;
-}
-
-.photo-navigation a {
-	display: none;
-}
-
-.photo-navigation a:hover {
-	display: none;
-}
-
-.photo-frame{
-
-}
-
-.photo-links {
-	display: none;
-}
-
-.photo-title {
-	display: none;
-}
-
-.photo-caption {
-	font-size: 11pt;
-	margin: 0px;
-	text-align: center;
-}
-
-/*</group>*/
-	
-/*</group>*/
-
-/*<group=Quicktime Page>*/
-
-.movie-title {
-	font-size: 16pt;
-	font-weight: bold;
-	text-align: left;
-}
-
-.movie-description {
-	text-align: center;
-}
-
-.movie-frame {
-	text-align: center;
-	margin-bottom: 10px;
-}
-	
-/*</group>*/
-
-/*<group=General Styles>*/
-
-body {
-	background: transparent none;
-	margin: 0px 5% 0px 5%;
-	text-align: left;
-	color: #000000;
-	letter-spacing: 0.5px;
-	word-spacing: 1px;
-	padding: 0px;
-	font: 10pt Georgia, Times New Roman, Times, serif;
-}
-
-p { 
-}
-
-b, strong {
-	font-weight: bold;
-}
-
-a:link, a:visited {
-}
-
-a:hover, a:active {
-}
-	
-/*</group>*/
-
-/*<group=Layout>*/
-
-#container {
	text-align: left;
-	width: 100%;
-	padding: 0px;
-	margin: 0px;
-}
-
-#pageHeader {
-	text-align: left;
-	background: none;
-	border-bottom: 1px solid #cccccc;
-	padding-bottom: 10px;
-	margin-bottom: 10px;
-}
-
-#pageHeader img {
-	float: right;
-}
-
-#pageHeader h1 {
-	color: #000000;
-	margin: 0px;
-	font-weight: bold;
-	font-size: 16pt;
-	padding: 0px;
-}
-
-#pageHeader h2 {
-	color: #333333;
-	margin: 0px;
-	font-size: 13pt;
-	font-weight: normal;
-	padding: 0px;
-}
-
-#contentContainer {
-	float: none !important;
-	padding: 0px;
-	margin-bottom: 10px;
-	border-bottom: 1px solid #cccccc;
-	padding-bottom: 10px;
-}
-
-#contentContainer #content {
-	padding: 0px;
-}
-
-#contentContainer #content img {
-}
-
-#sidebarContainer {
-	float: none;
-	width: auto;
-}
-
-#sidebarContainer .sidebar {
-}
-
-#footer {
-	text-align: center; 
-	background: none;
-	color: #000000;
-	font-size: 10pt;
-	border-top: 1px solid #cccccc;
-	margin-top: 10px;
-	padding-top: 10px;
-}
-
-#footer a {
-}
-
-#footer a:hover {
-}
-	
-/*</group>*/
-
-/*<group=toolbar>*/
-
-#navcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Bread-crumb>*/
-
-#breadcrumbcontainer {
-	display: none;
-}
-	
-/*</group>*/
-
-/*<group=Global Classes>*/
-
-.standout {
-	color: #474747;
-	font-size: 11pt;
-	font-weight: bold;
-	letter-spacing: 1px;
-	word-spacing: 2px;
-	padding: 40px;
-	background-color: #f5f5f5;
-	font-style: italic;
-}
-
-h1 {
-	font-size: 20pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h2 {
-	font-size: 18pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h3 {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h4 {
-	font-size: 14pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-h5 {
-	font-size: 12px;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.imageStyle {
-}
-	
-/*</group>*/
-
-/*<group=Blog>*/
-
-.blog-entry {
-	border-style: none;
-}
-
-.blog-entry-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-	border-style: none;
-}
-
-.blog-entry-date {
-	margin-bottom: 10px;
-	margin-top: 5px;
-	border-style: none;
-	font-size: 10pt;
-	color: #333333;
-}
-
-.blog-entry-body {
-	margin-bottom: 45px;
-	border-style: none;
-}
-	
-/*</group>*/
-
-/*<group=File Sharing>*/
-
-.filesharing-description {
-	margin-bottom: 20px;
-	border-bottom: 1px solid #d9d9d9;
-}
-
-.filesharing-item {
-	
-}
-
-.filesharing-item-title {
-	font-size: 16pt;
-	font-weight: bold;
-}
-
-.filesharing-item-description {
-	margin-bottom: 10px;
-}
-
-/*</group>*/
-
-/*<group=Photo Album>*/
-
-/*<group=Index Page (Thumbnail view)>*/
-
-.album-title {
-	font-size: 16pt;
-	font-weight: bold;
-	margin-bottom: 3px;
-}
-
-.album-description {
-}
-
-.thumbnail-frame {
-	margin: 0px;
-	padding: 0px;
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-	height: 30px;
-}
-
-.thumbnail-frame img {
-	background: repeat url(images/sidebar_bg.png);
-}
-
-.thumbnail-caption {
-	color: #4c4c4c;
-	margin-top: -2px;
-	font-size: 10pt;
-}
-	
-/*</group>*/
-
-/*<group=Single Page (Photo view)>*/
-
-.photo-background {
-	text-align: center;
-}
-
-.photo-navigation {
-	background: none;
-	display: none;
-}
-
-.photo-navigation a {
-	display: none;
-}
-
-.photo-navigation a:hover {
-	display: none;
-}
-
-.photo-frame{
-
-}
-
-.photo-links {
-	display: none;
-}
-
-.photo-title {
-	display: none;
-}
-
-.photo-caption {
-	font-size: 11pt;
-	margin: 0px;
-	text-align: center;
-}
-
-/*</group>*/
-	
-/*</group>*/
-
-/*<group=Quicktime Page>*/
-
-.movie-title {
-	font-size: 16pt;
-	font-weight: bold;
-	text-align: left;
-}
-
-.movie-description {
-	text-align: center;
-}
-
-.movie-frame {
-	text-align: center;
-	margin-bottom: 10px;
-}
-	
-/*</group>*/
-
-
-
-
-
diff --git a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/styles.css b/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/styles.css
deleted file mode 100644
index eb4ca54..0000000
--- a/Sankore-3.1/resources/etc/SankoreEditor/editor_fr/rw_common/themes/caribou/styles.css
+++ /dev/null
@@ -1,1167 +0,0 @@
-/* @group General Styles */
-
-body {
-	margin: 0;
-	padding: 0;
-	background: url(images/container_top_grad.png) repeat-x left 120px;
-	font: 0.85em/1.6 Arial, "Lucida Grande", Lucida, Verdana, sans-serif;
-}
-
-p {
-	margin: 0 0 15px;
-}
-
-b, strong {
-
-}
-
-a:link, a:visited {
-
-}
-
-a:hover, a:active {
-
-}
-
-img {
-	border: none;
-}
-
-.image-left {
-	float: left;
-	margin: 3px 10px 3px 0;
-}
-
-.image-right {
-	float: right;
-	margin: 3px 0 3px 10px;
-}
-	
-/* @end */
-
-/* @group Layout */
-
-#bar {
-	height: 119px;
-	border-bottom: 1px solid #fff;
-	position: absolute;
-	left: 0;
-	top: 0;
-	width: 100%;
-}
-
-#container {
-	width: 914px;
-	margin: 0 auto;
-	background: url(images/content_top.png) no-repeat left 227px;
-	padding-top: 30px;
-}
-
-.clearer {
-	clear: both;
-}
-
-#pageHeader {
-	height: 197px;
-	position: relative;
-	text-align: center;
-	line-height: normal;
-}
-
-#pageHeader #background {
-	position: absolute;
-	left: 0;
-	top: 0;
-	z-index: 1;
-}
-
-/* @group Overlay */
-
-#pageHeader #overlay_swirls {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-#pageHeader #overlay_stripes_solid {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-#pageHeader #overlay_stripes_glow {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-#pageHeader #overlay_curve_solid {
-	display: none;
-	position: absolute;
-	left: 0;
-	top: 0;
-}
-
-/* @end */
-
-#pageHeader #logo {
-	position: absolute;
-	top: 0;
-	left: 0;
-	width: 100%;
-	height: 100%;
-}
-
-#pageHeader #logo img {
-	display: block;
-}
-
-#pageHeader #title {
-	position: absolute;
-	left: 7px;
-	top: 46px;
-	z-index: 2;
-	width: 900px;
-	height: 150px;
-	font-size: .8em;
-}
-
-#pageHeader h1 {
-	position: relative;
-	z-index: 2;
-	margin: 50px 0 0;
-	color: #fff;
-}
-
-#pageHeader h2 {
-	position: relative;
-	z-index: 2;
-	margin: 0;
-	color: #fff;
-}
-
-#contentContainer {
-	width: 659px;
-	background-image: url(images/content_sep.png) ;
-	background-repeat: no-repeat;
-	margin-bottom: 20px;
-}
-
-#contentContainer #content {
-	padding: 10px 30px;
-}
-
-.contentSpacer {
-	height:350px;
-	float:right;
-	width:1px;
-}
-
-#sidebarContainer {
-	width: 237px;
-}
-
-#sidebarContainer #sidebar {
-	padding-bottom:20px;
-}
-
-#sidebarContainer #sidebar a {
-}
-
-#sidebarContainer #sidebar a:hover {
-	text-decoration: underline;
-}
-
-#sidebarContainer .sideHeader {
-	padding: 15px 0 5px 0px;
-	font-size: 1.2em;
-	font-weight: bold;
-	letter-spacing: 0.5px;
-}
-
-#sidebarContainer #sidebar h1 {
-	font-size: 1.2em;
-	font-weight: bold;
-	letter-spacing: 0.5px;
-}
-
-#sidebarContainer #sidebar h2 {
-	font-size: 1.1em;
-	font-weight: bold;
-	letter-spacing: 0.5px;
-}
-
-#sidebarContainer #sidebar h3 {
-	font-size: 1.1em;
-	
-}
-
-#footer {
-	color: #fff;
-	height: 70px;
-	text-align: center;
-}
-
-#footer p {
-	padding-top: 15px;
-	margin: 0;
-
-}
-
-#footer a:link, #footer a:visited {
-	font-weight: bold;
-	text-decoration: none;
-	text-shadow: none;
-	color: #fff;
-}
-
-#footer a:hover, #footer a:active {
-}
-	
-/* @end */
-
-/* @group Bread-crumb */
-
-#breadcrumbcontainer {
-
-}
-
-#breadcrumbcontainer ul {
-	padding: 0;
-	margin: 0;
-	list-style-type: none;
-}
-
-#breadcrumbcontainer li {
-	display: inline;
-}
-
-#breadcrumbcontainer a {
-	text-decoration: underline;
-}
-
-#breadcrumbcontainer a:hover {
-}
-	
-/* @end */
-
-/* @group Global Classes */
-
-blockquote, .standout {
-	font-style: italic;
-	margin: 0;
-	font-size: 1.2em;
-}
-
-h1 {
-	font-size: 2.2em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-h2 {
-	font-size: 1.8em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-h3 {
-	font-size: 1.6em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-h4 {
-	font-size: 1.4em;
-	font-weight: normal;
-	margin: 0 0 5px;
-	letter-spacing: -1px;
-}
-
-.imageStyle {
-
-}
-
-/* Main content area unordered list styles */
-#contentContainer #content ul {
-}
-
-#contentContainer #content li {
-}
-
-ul.disc {
-	list-style-type: disc;
-}
-
-ul.circle {
-	list-style-type: circle;
-}
-
-ul.square {
-	list-style-type: square;
-}
-
-ol.arabic-numbers {
-	list-style-type: decimal;
-}
-
-ol.upper-alpha {
-	list-style-type: upper-alpha;
-}
-
-ol.lower-alpha {
-	list-style-type: lower-alpha;
-}
-
-ol.upper-roman {
-	list-style-type: upper-roman;
-}
-
-ol.lower-roman {
-	list-style-type: lower-roman;
-}
-/* Sidebar area unordered list styles */
-#sidebarContainer #sidebar ul {
-}
-
-#sidebarContainer #sidebar li {
-}
-
-
-/* Table Styles */
-table {
-	font-size: 1em;
-}
-/* @end */
-
-/* @group Toolbar */
-
-#navcontainer {
-	height: 40px;
-	position: relative;
-	z-index: 3;
-	padding: 0 20px;
-}
-
-#navcontainer #current {
-	background: url(images/button_over.png) no-repeat center 4px;
-}
-
-#navcontainer #current:hover {
-}
-
-#navcontainer .currentAncestor {
-	background: url(images/button_over.png) no-repeat center 4px;
-}
-
-/* Parent - Level 0 */
-
-#navcontainer ul{
-	list-style: none;
-	margin: 0;
-	padding: 0;
-	z-index: 7;
-}
-
-#navcontainer li {
-	position: relative;
-	display: inline;
-	float: left;
-}
-
-#navcontainer a {
-	font-size: 0.9em;
-	display: block;
-	padding: 17px 15px 19px 15px;
-	height: 11px;
-	text-decoration: none;
-	width: 90px;
-	text-align: center;
-	font-weight: bold;
-	position: relative;
-	z-index: 7;
-}
-
-#navcontainer a:hover {
-	background: url(images/button_over.png) no-repeat center 4px;
-}
-
-#navcontainer a:active {
-}
-
-/* Child - Level 1 */
-/* All browsers will use this code, it will make the pop out menus work */
-#navcontainer ul ul {
-	position: absolute;
-	top: 46px;
-	left: 0;
-	right: 0;
-	display: none;
-	z-index: 6;
-	font-size: 0.9em;
-	width: 120px;
-	padding: 0;
-	margin: 0;
-}
-
-#navcontainer ul ul:hover {
-	background: url(images/button_over.png) no-repeat center top;
-	padding-top: 42px;
-	top: 4px;
-	}
-
-#navcontainer ul ul li {
-	display: block;
-}
-
-#navcontainer ul ul a {
-	padding: 5px 0;
-	display: block;
-	width: 120px;
-	background: #fff;
-	border-bottom: 1px solid #f0f0f0;
-	height: auto;
-}
-
-#navcontainer ul ul a:hover {
-	color: #fff;
-}
-
-#navcontainer ul ul #current,
-#navcontainer ul ul .currentAncestor{
-	background: #fff;
-}
-
-
-/* Child Level 3 */
-
-#navcontainer ul ul ul {
-	position: absolute;
-	top: 0px;
-	left: 120px;
-	z-index: 6;
-	font-size: 1em;
-	width: 120px;
-}
-
-#navcontainer ul ul ul:hover {
-	padding: 0;
-	top: 0px;
-}
-
-div#navcontainer ul ul,
-div#navcontainer ul ul ul,
-div#navcontainer ul li:hover ul ul,
-div#navcontainer ul li:hover ul ul ul,
-div#navcontainer ul li:hover ul ul ul ul,
-div#navcontainer ul li:hover ul ul ul ul ul {
-	display:none;
-}
-
-div#navcontainer ul li:hover ul,
-div#navcontainer ul ul li:hover ul,
-div#navcontainer ul ul ul li:hover ul,
-div#navcontainer ul ul ul ul li:hover ul,
-div#navcontainer ul ul ul ul ul li:hover ul {
-	display:block;
-}
-
-/* @end */
-
-/* @group Blog */
-
-/* @group Tag Cloud */
-ul.blog-tag-cloud {
-	padding: 15px 0;
-	margin: 0;
-}
-
-ul.blog-tag-cloud li {
-	
-	padding-right: 5px;
-	text-align: center;
-	list-style-type: none;
-	display: inline;
-}
-
-ul.blog-tag-cloud li a{
-	text-decoration: none;
-}
-
-.blog-tag-size-1 {	
-	font-size: 0.8em;
-}
-
-.blog-tag-size-2 {	
-	font-size: 0.85em;
-}
-
-.blog-tag-size-3 {	
-	font-size: 0.9em;
-}
-
-.blog-tag-size-4 {	
-	font-size: 0.95em;
-}
-
-.blog-tag-size-5 {	
-	font-size: 1em;
-}
-
-.blog-tag-size-6 {	
-	font-size: 1.05em;
-}
-
-.blog-tag-size-7 {	
-	font-size: 1.1em;
-}
-
-.blog-tag-size-8 {	
-	font-size: 1.15em;
-}
-
-.blog-tag-size-9 {	
-	font-size: 1.2em;
-}
-
-.blog-tag-size-10 {	
-	font-size: 1.25em;
-}
-
-.blog-tag-size-11 {	
-	font-size: 1.3em;
-}
-
-.blog-tag-size-12 {	
-	font-size: 1.35em;
-}
-
-.blog-tag-size-13 {
-	font-size: 1.4em;
-}
-
-.blog-tag-size-14 {	
-	font-size: 1.45em;
-}
-
-.blog-tag-size-15 {
-	font-size: 1.5em;
-}
-
-.blog-tag-size-16 {	
-	font-size: 1.55em;
-}
-
-.blog-tag-size-17 {	
-	font-size: 1.6em;
-}
-
-.blog-tag-size-18 {	
-	font-size: 1.65em;
-}
-
-.blog-tag-size-19 {
-	font-size: 1.7em;
-}
-
-.blog-tag-size-20 {	
-	font-size: 1.75em;
-}
-
-
-/* @end */
-
-/* @group Archive Page */
-
-.blog-archive-background {
-}
-
-.blog-entry-summary {
-}
-
.blog-archive-headings-wrapper {
-	font-size: 1.4em;
-	padding-bottom: 25px;
-	background: url(images/blog_bottom_bar.png) no-repeat center bottom;
-}
-
-.blog-archive-entries-wrapper {
-}
-
-.blog-archive-entries-wrapper .blog-entry {
-	padding-top: 20px;
-}

.blog-archive-month {
-	font-size: 1.2em;
-	padding-left: 2;
-
-}
-
-.blog-archive-link {
-	font-size: 0.8em;
-}

.blog-archive-link a:link, .blog-archive-link a:visited {
-}
-	
-/* @end */
-
-.blog-entry {
-	padding-bottom: 20px;
-}
-
-h1.blog-entry-title {
-	padding: 0;
-	margin: 0;
-}
-
-
-h1.blog-entry-title a {
-
-	text-decoration: none;
-}
-
-.blog-entry-date {
-}
-
-/*styles the category link in the main entry */
-.blog-entry-category {
-	padding-left: 20px;
-	margin-right: 12px;
-}
-
-.blog-entry-category a:link, .blog-entry-category a:visited {
-}
-
-.blog-read-more {
-	text-decoration: none;
-}
-
-.blog-entry-body {
-	padding: 20px 0 40px 0;
-	background: url(images/blog_bottom_bar.png) no-repeat left bottom;
-}
-
-.blog-entry-comments {
-}
-
-.blog-trackback-link {
-}
-
-p.blog-entry-tags {
-	padding-left: 20px;
-	margin-top: 15px;
-}
-
-/* styles the archives in the blog sidebar */
-#blog-archives {
-	padding-top: 20px;
-}
-
-#sidebarContainer #sidebar ul {
-
-}
-
-.blog-archive-link-enabled {
-	padding-left: 20px;
-}
-
-.blog-archive-link-disabled {
-	padding-left: 20px;
-}
-
-/* Styles the blog categories in the blog sidebar */
-#blog-categories {
-	padding-top: 20px ;
-}
-
-.blog-category-link-enabled {
-	padding: 0px 0px 0px 20px;
-	margin-top: 3;
-}
-
-.blog-category-link-disabled {
-	margin: 0;
-	padding-bottom: 0px;
-	padding-left: 20px;
-}
-
-/* Styles the blog RSS feeds in the blog sidebar */
-#blog-rss-feeds {
-	text-decoration: none;
-}
-
-.blog-rss-link {
-	padding-left: 20px;
-}
-
-.blog-comments-rss-link {
-	padding-left: 20px;
-}
-
-/* @end */
-
-/* @group File Sharing */
-
-.filesharing-description {
-	padding-top: 10px;
-	padding-bottom: 15px;
-}
-
-.filesharing-item {
-}
-
-.filesharing-item-title a:link {
-}
-
-.filesharing-item-title a:hover {
-}
-
-.filesharing-item-title a:visited {
-}
-
-.filesharing-item-description {
-	font-size: 0.85em;
-	padding-bottom:10px;
-}
-
-/* @end */
-
-/* @group Photo Album */
-
-/* @group Index Page (Thumbnail view) */
-
-#flashcontent {
-	padding-top: 15px;
-}
-
-.album-title {
-	font-size: 2.2em;
-	margin-bottom: 10px;
-}
-
-.album-description {
-	margin-bottom: 20px;
-}
-
-.album-wrapper {
-	display: block;
-	width: 99%;
-	position: relative;
-}
-
-.thumbnail-wrap {
-	text-align: center;
-	position: relative;
-	float: left;
-	margin-bottom: 20px;
-	margin-right: 10px;
-	padding-top: 70px;
-	padding-left: 5px;
-	padding-right: 5px;
-	border-top: 1px solid #f3f3f3;
-	border-right: 1px solid #f1f1f1;
-	border-left: 1px solid #f1f1f1;
-}
-
-.thumbnail-frame {
-	position: absolute;
-    bottom: 0;
-    left: 0;
-    padding-left: 5px;
-	padding-right: 5px;
-}
-
-.thumbnail-frame:hover {
-}
-
-.thumbnail-frame a {
-}
-
-.thumbnail-frame a:hover {
-}
-
-.thumbnail-frame img {
-	margin: auto;
-	border: none;
-}
-
-.thumbnail-caption {
-	margin: 0 -5px;
-	padding: 7px 0 7px 0;
-	font-size: 0.9em;
-	background:  repeat-x left bottom url(images/photo_shadow_bottom.png);
-	height: 38px;
-	display: block;
-}
-	
-/* @end */
-
-/* @group Single Page (Photo view) */
-
-.photo-background {
-	background-image: none;
-	text-align: center;
-}
-
-.photo-navigation {
-	color: #e5e5e5;
-	height: 119px;
-	border-bottom: 1px solid #fff;
-	margin-bottom: 25px;
-	width: 100%;
-	text-align: left;
-}
-
-.photo-links{
-	padding: 0 0 0 40px;
-	margin: 0;
-	
-}
-
-.photo-navigation a:link, .photo-navigation a:visited {
-	color: #f2f2f2;
-}
-
-.photo-navigation a:hover {
-}
-
-.photo-frame{
-	padding: 20px 20px 20px 20px;
-	margin-bottom: 20px;
-	border: 1px solid #f1f1f1;
-}
-
-.photo-title {
-	font-size: 2.2em;
-	padding: 5px 0 0 40px;
-	margin: 0;
-	
-}
-
-.photo-caption {
-	font-size: 1.2em;
-	padding: 0 0 0 40px;
-	margin: 0;
-}
-
-/* @group EXIF data */
-/* Data wrapper */
-.exif-data {
-}
-
-.exif-data p {
-}
-
-/* p tag classes for all exif data */
-p.exif-version {
-}
-
-p.exif-colour-space {
-}
-
-p.exif-focal-length {
-}
-
-p.exif-dimensions {
-}
-
-p.exif-pixel-y-dimension {
-}
-
-p.exif-pixel-x-dimension {
-}
-
-p.exif-oecf-value {
-}
-
-p.exif-subsec-time-original {
-}
-
-p.exif-exposure-mode {
-}
-
-p.exif-spatial-frequency-response {
-}
-
-p.exif-scene-capture-type {
-}
-
-p.exif-subject-location {
-}
-
-p.exif-shutter-speed {
-}
-
-p.exif-datetime-original {
-}
-
-p.exif-subsec-time {
-}
-
-p.exif-compressed-bits-per-pixel {
-}
-
-p.exif-flash-energy {
-}
-
-p.exif-saturation {
-}
-
-p.exif-brightness {
-}
-
-p.exif-exposure-time {
-}
-
-p.exif-f-number {
-}
-
-p.exif-file-source {
-}
-
-p.exif-gain-control {
-}
-
-p.exif-subject-area {
-}
-
-p.exif-cfa-pattern {
-}
-
-p.exif-scene-type {
-}
-
-p.exif-white-balance {
-}
-
-p.exif-flash {
-}
-
-p.exif-exposure-index {
-}
-
-p.exif-flashpix-version {
-}
-
-p.exif-device-setting-description {
-}
-
-p.exif-focalplane-x-resolution {
-}
-
-p.exif-image-uniqueid {
-}
-
-p.exif-components-configuration {
-}
-
-p.exif-light-source {
-}
-
-p.exif-sensing-method {
-}
-
-p.exif-aperture {
-}
-
-p.exif-sharpness {
-}
-
-p.exif-exposure-program {
-}
-
-p.exif-subject-distance {
-}
-
-p.exif-subsec-time-digitized {
-}
-
-p.exif-contrast {
-}
-
-p.exif-focalplane-resolution-unit {
-}
-
-p.exif-gamma {
-}
-
-p.exif-35mm-focal-length {
-}
-
-p.exif-datetime-digitized {
-}
-
-p.exif-subject-distance-range {
-}
-
-p.exif-custom-rendered {
-}
-
-p.exif-max-aperture {
-}
-
-p.exif-sound-file {
-}
-
-p.exif-metering-mode {
-}
-
-p.exif-spectral-sensitivity {
-}
-
-p.exif-exposure-bias {
-}
-
-p.exif-focalplane-y-resolution {
-}
-
-p.exif-iso-rating {
-}
-
-p.exif-maker-note {
-}
-
-p.exif-digital-zoom-ratio {
-}
-
-p.exif-user-comment {
-}
-/* @end */
-
-/* @end */
-	
-/* @end */
-
-/* @group Quicktime Page */
-
-.movie-description {
-}
-	
-/* @end */
-
-
-
-/* @group Quicktime Album */
-
-/* @group Index Page (Movie Thumbnail view) */
-
-.movie-page-title {
-	font-size: 2.2em;
-	margin-bottom: 10px;
-}

.movie-page-description {
-	margin-bottom: 20px;
-}

.movie-thumbnail-frame {
-	width: 132px;
-	height: 162px;
-	float: left;
-	position: relative;
-	border-top: 1px ;
-	text-align: center;
-	margin-bottom: 20px;
-	margin-right: 10px;
-	padding-top: 7px;
-	padding-left: 5px;
-	padding-right: 5px;
-	border-top: 1px solid #f3f3f3;
-	border-right: 1px solid #f1f1f1;
-	border-left: 1px solid #f1f1f1;
-	background: url(images/photo_shadow_bottom.png) repeat-x 0 bottom;
-
-}
-
-.movie-thumbnail-frame:hover {
-}
-
-.movie-thumbnail-caption {
-	height: 56px;
-	width:  132px;
-	padding: 5px 0px 0 0px;
-	
-
-}
-	
-/* @end */
-
-/* @group Single Page (Movie View) */
-
-.movie-background {
-	background-image: none;
-	text-align: center;
-}
-
-.movie-title {
-	font-size: 1.4em;
-	height: 120px;
-	color: #e5e5e5;
-	padding: 10px 0 0 20px;
-}
-
-.movie-frame {
-	margin-top: 10px;
-	margin-bottom: 10px;
-}
-	
-/* @end */
-
-
-/* @end */
-
-/* @group Contact Form */
-.message-text {
-	padding-top: 10px; 
-} 
-
-.required-text {
-} 
-
-.form-input-field {
-	
-}
-
-label{
-	color:#7f7f7f;
-	
-} 
-
-.form-input-button { 
-} 
-/* @end */
-
-/* @group Sitemap */
-
-.rw-sitemap ul {
-    margin: 0;
-    padding: 0;
-    list-style-type: disc;
-    list-style-position: inside;
-}
-
-.rw-sitemap ul li {
-    margin: 0 0 10px 0;
-}
-
-.rw-sitemap ul li:last-child {
-    margin: 0;
-}
-
-.rw-sitemap ul li li {
-    margin: 0 0 5px 0;
-}
-
-.rw-sitemap ul li li:last-child {
-    margin: 0;
-}
-
-.rw-sitemap ul ul {
-    padding: 0 0 0 20px;
-    list-style-type: square;
-}
-
-.rw-sitemap ul ul ul {
-    list-style-type: circle;
-}
-
-/* @end */
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html b/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html
index 481ac0e..c47a787 100644
--- a/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html
+++ b/Sankore-3.1/resources/etc/Tutorial/tutorial_en/index.html
@@ -1,70 +1,72 @@
-<!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=UTF-8" />
-
-<link rel="stylesheet" href="CSS/grid.css" type="text/css" media="screen, projection">
-<link rel="stylesheet" href="CSS/reset.css" type="text/css" media="screen, projection">
-<link rel="stylesheet" href="CSS/typography.css" type="text/css" media="screen, projection">
-
-<style>
-body {
-	background-color:#fff;
-	}
-.main {
-	background-color:#fff;
-	} 
-.clear {
-	height:10px;
-	}
-</style>
-</head>
-
-<body>
-<div class="main">
-
-<div class="g800">
-
-<img src="images/logo_open_sankore.png" style="width: 800px"/>
-
-</div>
-
-<div class="g800">
-
-<h4>Welcome to the tutorial space of Open-Sankoré. We propose you a set of online ressources to help you discover our software and improve your teaching and technical knowledge. If you have questions to ask us or want to contribute to the project, simply visit our main website <a href="http://open-sankore.org/" target="_blank">open-sankore.org</a></h4>
-
-</div>
-
-<div class="g200left">
-
-<a href="http://www.youtube.com/user/OpenSankore" target="_blank"><img src="images/video.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://www.youtube.com/user/OpenSankore" target="_blank"><h5 style="text-align: center;">Video tutorials</h5></a>
-
-</div>
-
-<div class="g200">
-
-<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+qui+manquait" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+qui+manquait" target="_blank"><h5 style="text-align: center;">The user manual</h5></a>
-
-</div>
-<div class="g200">
-
-<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank"><img src="images/pedago.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank"><h5 style="text-align: center;">The teaching space</h5></a>
-
-</div>
-
-<div class="g200">
-
-<a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><img src="images/tech.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><h5 style="text-align: center;">The technical space</h5></a>
-
-</div>
-
-<div class="clear"> </div>
-
-</div>
-
-</body>
-</html>
+<!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=UTF-8" />
+
+<link rel="stylesheet" href="CSS/grid.css" type="text/css" media="screen, projection">
+<link rel="stylesheet" href="CSS/reset.css" type="text/css" media="screen, projection">
+<link rel="stylesheet" href="CSS/typography.css" type="text/css" media="screen, projection">
+
+<style>
+body {
+	background-color:#fff;
+	}
+.main {
+	background-color:#fff;
+	} 
+.clear {
+	height:10px;
+	}
+</style>
+</head>
+
+<body>
+<div class="main">
+
+<div class="g800">
+
+<img src="images/logo_open_sankore.png" style="width: 800px"/>
+
+</div>
+
+<div class="g800">
+
+<h4>Welcome to the tutorial space of Open-Sankoré. We propose you a set of online ressources to help you discover our software and improve your teaching and technical knowledge. If you have questions to ask us or want to contribute to the project, simply visit our website <a href="http://open-sankore.org/" target="_blank">open-sankore.org</a></h4>
+
+</div>
+
+<div class="g200left">
+
+<a href="http://www.youtube.com/user/OpenSankore" target="_blank"><img src="images/video.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://www.youtube.com/user/OpenSankore" target="_blank"><h5 style="text-align: center;">Video tutorials</h5></a>
+
+</div>
+
+<div class="g200">
+
+<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/User+manual+EN+2.00" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/User+manual+EN+2.00" target="_blank">
+<h5 style="text-align: center;">The user manual</h5></a>
+
+</div>
+<div class="g200">
+
+<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/WebHome_EN" target="_blank"><img src="images/pedago.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank">
+<h5 style="text-align: center;">The teaching space</h5></a>
+
+</div>
+
+<div class="g200">
+
+<a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome_EN" target="_blank"><img src="images/tech.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><h5 style="text-align: center;">The technical space</h5></a>
+
+</div>
+
+<div class="clear"> </div>
+
+</div>
+
+</body>
+</html>
diff --git a/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html b/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html
index fbf6cbe..66467cf 100644
--- a/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html
+++ b/Sankore-3.1/resources/etc/Tutorial/tutorial_fr/index.html
@@ -1,69 +1,72 @@
-<!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=UTF-8" />
-
-<link rel="stylesheet" href="CSS/grid.css" type="text/css" media="screen, projection">
-<link rel="stylesheet" href="CSS/reset.css" type="text/css" media="screen, projection">
-<link rel="stylesheet" href="CSS/typography.css" type="text/css" media="screen, projection">
-
-<style>
-body {
-	background-color:#fff;
-	}
-.main {
-	background-color:#fff;
-	} 
-.clear {
-	height:10px;
-	}
-</style>
-</head>
-
-<body>
-<div class="main">
-
-<div class="g800">
-
-<img src="images/logo_open_sankore.png" style="width: 800px"/>
-
-</div>
-
-<div class="g800">
-
-<h4>Bienvenue l'espace tutoriel du logiciel Open-Sankoré. Nous vous proposons une série de ressources en ligne pour vous aider à découvrir le logiciel et améliorer vos connaissances pédagogiques et techniques. Si vous avez des questions à nous poser ou désirez contribuer à notre projet, rendez-vous sur notre site principal <a href="http://open-sankore.org/" target="_blank">open-sankore.org</a></h4>
-
-</div>
-
-<div class="g200left">
-
-<a href="http://www.youtube.com/user/OpenSankore" target="_blank"><img src="images/video.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://www.youtube.com/user/OpenSankore" target="_blank"><h5 style="text-align: center;">Tutoriels video</h5></a>
-
-</div>

-<div class="g200">
-
-<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+qui+manquait" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+qui+manquait" target="_blank"><h5 style="text-align: center;">Le manuel d'utilisation</h5></a>
-
-</div>
-<div class="g200">
-
-<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank"><img src="images/pedago.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank"><h5 style="text-align: center;">L'espace pédagogique</h5></a>
-
+<!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=UTF-8" />
+
+<link rel="stylesheet" href="CSS/grid.css" type="text/css" media="screen, projection">
+<link rel="stylesheet" href="CSS/reset.css" type="text/css" media="screen, projection">
+<link rel="stylesheet" href="CSS/typography.css" type="text/css" media="screen, projection">
+
+<style>
+body {
+	background-color:#fff;
+	}
+.main {
+	background-color:#fff;
+	} 
+.clear {
+	height:10px;
+	}
+</style>
+</head>
+
+<body>
+<div class="main">
+
+<div class="g800">
+
+<img src="images/logo_open_sankore.png" style="width: 800px"/>
+
 </div>
-
-<div class="g200">
-
-<a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><img src="images/tech.png" style="width: 188px; border: 1px solid #999"/></a>
-<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><h5 style="text-align: center;">L'espace technique</h5></a>
-
-</div>
-
-<div class="clear"> </div>
-
-</div>
-
-</body>
-</html>
+
+<div class="g800">
+
+<h4>Bienvenue l'espace tutoriel du logiciel Open-Sankoré. Nous vous proposons une série de ressources en ligne pour vous aider à découvrir le logiciel et améliorer vos connaissances pédagogiques et techniques. Si vous avez des questions à nous poser ou désirez contribuer à notre projet, rendez-vous sur notre site <a href="http://open-sankore.org/" target="_blank">open-sankore.org</a></h4>
+
+</div>
+
+<div class="g200left">
+
+<a href="http://www.youtube.com/user/OpenSankore" target="_blank"><img src="images/video.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://www.youtube.com/user/OpenSankore" target="_blank"><h5 style="text-align: center;">Tutoriels video</h5></a>
+
+</div>
+
+<div class="g200">
+
+<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+du+logiciel+FR+2.00" target="_blank"><img src="images/manuel.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Le+manuel+du+logiciel+FR+2.00" target="_blank">
+<h5 style="text-align: center;">Le manuel d'utilisation</h5></a>
+
+</div>
+<div class="g200">
+
+<a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/WebHome" target="_blank"><img src="images/pedago.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Pedagogique/Tutoriels" target="_blank">
+<h5 style="text-align: center;">L'espace pédagogique</h5></a>
+
+</div>
+
+<div class="g200">
+
+<a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><img src="images/tech.png" style="width: 188px; border: 1px solid #999"/></a>
+<br/><br/><a href="http://planete.sankore.org/xwiki/bin/view/Technologique/WebHome" target="_blank"><h5 style="text-align: center;">L'espace technique</h5></a>
+
+</div>
+
+<div class="clear"> </div>
+
+</div>
+
+</body>
+</html>
diff --git a/Sankore-3.1/resources/etc/Uniboard.css b/Sankore-3.1/resources/etc/Uniboard.css
index a6a1ced..935c028 100644
--- a/Sankore-3.1/resources/etc/Uniboard.css
+++ b/Sankore-3.1/resources/etc/Uniboard.css
@@ -1,3 +1,31 @@
+QWidget:enabled
+{
+   color: #3F3F3F;
+}
+
+QWidget:disabled
+{
+    color: #777777;
+}
+
+QTextEdit, 
+QLineEdit, 
+QComboBox#DockPaletteWidgetComboBox QAbstractItemView 
+{ 
+    selection-background-color: lightgreen; 
+    selection-color: black; 
+} 
+QProgressBar:horizontal {
+    border: 1px solid gray;
+    border-radius: 3px;
+    background: white;
+    padding: 1px;
+}
+QProgressBar::chunk:horizontal {
+    /*background: qlineargradient(x1: 0, y1: 0.5, x2: 1, y2: 0.5, stop: 0 green, stop: 1 lightgreen);*/
+    background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);
+}
+
 QMainWindow
 {
    background-color: #F1F1F1;  
diff --git a/Sankore-3.1/resources/etc/freezedWidgetWrapper.html b/Sankore-3.1/resources/etc/freezedWidgetWrapper.html
index 56f2f42..00aaeb1 100644
--- a/Sankore-3.1/resources/etc/freezedWidgetWrapper.html
+++ b/Sankore-3.1/resources/etc/freezedWidgetWrapper.html
@@ -9,9 +9,19 @@
                 width: 100%;
             }
 
-            div{
+            #freezed{
                 text-align: center;
-                border: 5px #ccc outset;
+                border: 5px solid #ccc;
+                border-radius: 80px;
+                box-shadow: inset 0 0 30px rgba(66,66,66,0.5);
+            }
+            
+            .loading{
+                color: #999;
+                font-weight: bold;
+                font-size: large;
+                margin-top: 5px;
+                margin-left: 5px;
             }
         </style>
         <script type="text/javascript">
@@ -42,6 +52,6 @@
         </script>
     </head>
     <body>
-        <div id="freezed">Widget freezed.</div>
+        <div id="freezed"><img src="img/loading.gif"/><div class="loading">Loading ...</div></div>
     </body>
 </html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/etc/img/loading.gif b/Sankore-3.1/resources/etc/img/loading.gif
new file mode 100644
index 0000000..feb4229
Binary files /dev/null and b/Sankore-3.1/resources/etc/img/loading.gif differ
diff --git a/Sankore-3.1/resources/forms/mainWindow.ui b/Sankore-3.1/resources/forms/mainWindow.ui
index a2ac84b..06ea51a 100644
--- a/Sankore-3.1/resources/forms/mainWindow.ui
+++ b/Sankore-3.1/resources/forms/mainWindow.ui
@@ -71,7 +71,6 @@
    <addaction name="actionErase"/>
    <addaction name="actionGroupItems"/>
    <addaction name="actionBoard"/>
-   <addaction name="actionTutorial"/>
    <addaction name="actionWeb"/>
    <addaction name="actionDocument"/>
    <addaction name="actionDesktop"/>
@@ -117,7 +116,6 @@
    <addaction name="actionWebSmaller"/>
    <addaction name="separator"/>
    <addaction name="actionBoard"/>
-   <addaction name="actionTutorial"/>
    <addaction name="actionWeb"/>
    <addaction name="actionDocument"/>
    <addaction name="actionDesktop"/>
@@ -167,7 +165,6 @@
    <addaction name="actionAddToWorkingDocument"/>
    <addaction name="actionDocumentAdd"/>
    <addaction name="actionBoard"/>
-   <addaction name="actionTutorial"/>
    <addaction name="actionWeb"/>
    <addaction name="actionDocument"/>
    <addaction name="actionDesktop"/>
@@ -1635,20 +1632,52 @@
    </property>
   </action>
   <action name="actionGroupItems">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
    <property name="enabled">
     <bool>false</bool>
    </property>
    <property name="icon">
     <iconset resource="../sankore.qrc">
-     <normaloff>:/images/toolbar/library.png</normaloff>:/images/toolbar/library.png</iconset>
+     <normaloff>:/images/toolbar/group.png</normaloff>
+     <normalon>:/images/toolbar/ungroup.png</normalon>:/images/toolbar/group.png</iconset>
    </property>
    <property name="text">
-    <string>Group Items</string>
+    <string>Group</string>
    </property>
    <property name="toolTip">
     <string>Group items</string>
    </property>
   </action>
+  <action name="actionPlay">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/stylusPalette/handPlay.png</normaloff>
+     <normalon>:/images/stylusPalette/handPlayOn.png</normalon>:/images/stylusPalette/handPlay.png</iconset>
+   </property>
+   <property name="text">
+    <string>Play</string>
+   </property>
+   <property name="toolTip">
+    <string>Interact with items</string>
+   </property>
+  </action>
+  <action name="actionEraseBackground">
+   <property name="icon">
+    <iconset resource="../sankore.qrc">
+     <normaloff>:/images/erasePalette/eraseBackground.svg</normaloff>:/images/erasePalette/eraseBackground.svg</iconset>
+   </property>
+   <property name="text">
+    <string>Erase Background</string>
+   </property>
+   <property name="toolTip">
+    <string>Remove the backgound</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="../sankore.qrc"/>
diff --git a/Sankore-3.1/resources/forms/preferences.ui b/Sankore-3.1/resources/forms/preferences.ui
index 94bbc4b..a87956c 100644
--- a/Sankore-3.1/resources/forms/preferences.ui
+++ b/Sankore-3.1/resources/forms/preferences.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>601</width>
-    <height>619</height>
+    <height>686</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -24,7 +24,7 @@
    <item row="1" column="0">
     <widget class="QTabWidget" name="mainTabWidget">
      <property name="currentIndex">
-      <number>6</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="displayTab">
       <attribute name="title">
@@ -568,11 +568,7 @@
                 <number>0</number>
                </property>
                <item>
-                <widget class="QLineEdit" name="proxyPassword">
-                 <property name="echoMode">
-                  <enum>QLineEdit::Password</enum>
-                 </property>
-                </widget>
+                <widget class="QLineEdit" name="proxyUsername"/>
                </item>
                <item>
                 <widget class="QLabel" name="label_3">
@@ -582,7 +578,11 @@
                 </widget>
                </item>
                <item>
-                <widget class="QLineEdit" name="proxyUsername"/>
+                <widget class="QLineEdit" name="proxyPassword">
+                 <property name="echoMode">
+                  <enum>QLineEdit::Password</enum>
+                 </property>
+                </widget>
                </item>
               </layout>
              </widget>
@@ -608,19 +608,6 @@
          </layout>
         </widget>
        </item>
-       <item row="3" column="0">
-        <spacer name="verticalSpacer_2">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
        <item row="2" column="0">
         <widget class="QGroupBox" name="CommunityGroupBox">
          <property name="sizePolicy">
@@ -630,7 +617,7 @@
           </sizepolicy>
          </property>
          <property name="title">
-          <string>Planète Sankoré ID</string>
+          <string>Planète Sankoré ID for exporting file</string>
          </property>
          <layout class="QGridLayout" name="gridLayout_18">
           <item row="2" column="1">
@@ -693,9 +680,38 @@
             </property>
            </spacer>
           </item>
+          <item row="3" column="1">
+           <widget class="QCheckBox" name="PSCredentialsPersistenceCheckBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string>Restore credentials on reboot  </string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
          </layout>
         </widget>
        </item>
+       <item row="3" column="0">
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="thirdPartyLicence">
@@ -705,26 +721,201 @@
       <attribute name="title">
        <string>Licences</string>
       </attribute>
-      <layout class="QHBoxLayout" name="horizontalLayout_8">
+      <layout class="QVBoxLayout" name="verticalLayout_3">
        <item>
-        <widget class="QTabWidget" name="openSslWidget">
+        <widget class="QTextEdit" name="LicenceWarningTextBrowser">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>55</height>
+          </size>
+         </property>
+         <property name="acceptDrops">
+          <bool>false</bool>
+         </property>
+         <property name="toolTip">
+          <string notr="true"/>
+         </property>
+         <property name="statusTip">
+          <string notr="true"/>
+         </property>
+         <property name="undoRedoEnabled">
+          <bool>false</bool>
+         </property>
+         <property name="html">
+          <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></string>
+         </property>
+         <property name="textInteractionFlags">
+          <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QTabWidget" name="OpenSSLWidget">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>1</verstretch>
+          </sizepolicy>
+         </property>
          <property name="currentIndex">
-          <number>4</number>
+          <number>0</number>
          </property>
-         <widget class="QWidget" name="openSSlTab">
+         <widget class="QWidget" name="OpenSSLTab">
           <attribute name="title">
-           <string>OpenSSl</string>
+           <string>OpenSSL</string>
           </attribute>
           <layout class="QHBoxLayout" name="horizontalLayout_4">
            <item>
-            <widget class="QTextBrowser" name="openSSlTextBrowser">
-             <property name="html">
-              <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></string>
+            <widget class="QPlainTextEdit" name="OpenSSLTextEdit">
+             <property name="acceptDrops">
+              <bool>false</bool>
+             </property>
+             <property name="undoRedoEnabled">
+              <bool>false</bool>
+             </property>
+             <property name="plainText">
+              <string notr="true">  LICENSE ISSUES
+  ==============
+
+  The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+  the OpenSSL License and the original SSLeay license apply to the toolkit.
+  See below for the actual license texts. Actually both licenses are BSD-style
+  Open Source licenses. In case of any license issues related to OpenSSL
+  please contact openssl-core at openssl.org.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2004 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. 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.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core at openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED 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 OpenSSL PROJECT OR
+ * ITS 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.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay at cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh at cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay at cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay at cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh at cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay at cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh at cryptsoft.com)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */</string>
+             </property>
+             <property name="textInteractionFlags">
+              <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
              </property>
             </widget>
            </item>
@@ -736,49 +927,791 @@ p, li { white-space: pre-wrap; }
           </attribute>
           <layout class="QHBoxLayout" name="horizontalLayout_7">
            <item>
-            <widget class="QTextBrowser" name="zlibTextBrowser">
-             <property name="html">
-              <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></string>
+            <widget class="QPlainTextEdit" name="zlibTextEdit">
+             <property name="acceptDrops">
+              <bool>false</bool>
+             </property>
+             <property name="undoRedoEnabled">
+              <bool>false</bool>
+             </property>
+             <property name="plainText">
+              <string notr="true">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
+
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+   claim that you wrote the original software. If you use this software
+   in a product, an acknowledgment in the product documentation would be
+   appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+   misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+Jean-loup Gailly        Mark Adler
+jloup at gzip.org          madler at alumni.caltech.edu</string>
+             </property>
+             <property name="textInteractionFlags">
+              <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
              </property>
             </widget>
            </item>
           </layout>
          </widget>
-         <widget class="QWidget" name="xpdfTab">
+         <widget class="QWidget" name="XpdfTab">
           <attribute name="title">
-           <string>xpdf</string>
+           <string>Xpdf</string>
           </attribute>
           <layout class="QHBoxLayout" name="horizontalLayout_6">
            <item>
-            <widget class="QTextBrowser" name="xpdfTextBrowser">
-             <property name="html">
-              <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></string>
+            <widget class="QPlainTextEdit" name="XpdfTextEdit">
+             <property name="acceptDrops">
+              <bool>false</bool>
+             </property>
+             <property name="undoRedoEnabled">
+              <bool>false</bool>
+             </property>
+             <property name="plainText">
+              <string notr="true">Copyright (C) 1996-2011 Glyph & Cog, LLC.
+
+Xpdf is licensed under the GNU General Public License (GPL), version
+2.  In my opinion, the GPL is a convoluted, confusing, ambiguous mess.
+But it's also pervasive, and I'm sick of arguing.  And even if it is
+confusing, the basic idea is good.
+
+In order to cut down on the confusion a little bit, here are some
+informal clarifications:
+
+- I don't mind if you redistribute xpdf in source and/or binary form,
+  as long as you include all of the documentation: README, man pages
+  (or help files), and COPYING.  (Note that the README file contains a
+  pointer to a web page with the source code.)
+
+- Selling a CD-ROM that contains xpdf is fine with me, as long as it
+  includes the documentation.  I wouldn't mind receiving a sample
+  copy, but it's not necessary.
+
+- If you make useful changes to xpdf, please make the source code
+  available -- post it on a web site, email it to me, whatever.
+
+For information on commercial licensing and consulting, please see the
+Glyph & Cog web site:
+
+    http://www.glyphandcog.com/
+
+Here is the full text of the GNU General Public License version 2.
+
+--8<---------------cut here---------------start------------->8---
+                    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
+
+            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.
+
+    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 Lesser General
+Public License instead of this License.
+--8<---------------cut here---------------end--------------->8---</string>
+             </property>
+             <property name="textInteractionFlags">
+              <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
              </property>
             </widget>
            </item>
           </layout>
          </widget>
-         <widget class="QWidget" name="quazipTab">
+         <widget class="QWidget" name="QuaZIPTab">
           <attribute name="title">
-           <string>Quazip</string>
+           <string>QuaZIP</string>
           </attribute>
           <layout class="QHBoxLayout" name="horizontalLayout_3">
            <item>
-            <widget class="QTextBrowser" name="quazipTextBrowser">
-             <property name="html">
-              <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></string>
+            <widget class="QPlainTextEdit" name="QuaZIPTextEdit">
+             <property name="acceptDrops">
+              <bool>false</bool>
+             </property>
+             <property name="undoRedoEnabled">
+              <bool>false</bool>
+             </property>
+             <property name="plainText">
+              <string notr="true">Copyright (C) 2005-2007 Sergey A. Tachenov
+
+                    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
+
+            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 Lesser General
+Public License instead of this License.</string>
+             </property>
+             <property name="textInteractionFlags">
+              <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
              </property>
             </widget>
            </item>
@@ -790,183 +1723,511 @@ p, li { white-space: pre-wrap; }
           </attribute>
           <layout class="QHBoxLayout" name="horizontalLayout_9">
            <item>
-            <widget class="QTextBrowser" name="sankoreTextBrowser">
-             <property name="html">
-              <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></string>
+            <widget class="QPlainTextEdit" name="sankoreTextEdit">
+             <property name="acceptDrops">
+              <bool>false</bool>
+             </property>
+             <property name="plainText">
+              <string notr="true">Copyright (C) 2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+  In addition, as a special exception, the Open-Sankoré authors
+give permission to link the code of its release of Open-Sankoré with the
+OpenSSL project's "OpenSSL" library (or with modified versions of it
+that use the same license as the "OpenSSL" library), and distribute
+the linked executables.  You must obey the GNU Library General Public License
+in all respects for all of the code used other than "OpenSSL".  If you
+modify this file, you may extend this exception to your version of the
+file, but you are not obligated to do so.  If you do not wish to do
+so, delete this exception statement from your version.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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> Webdoc SA
+
+    This file is part of Open-Sankoré.
+
+    Open-Sankoré is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation, version 2,
+    with a specific linking exception for the OpenSSL project's
+    "OpenSSL" library (or with modified versions of it that use the
+    same license as the "OpenSSL" library).
+
+    Open-Sankoré is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with Open-Sankoré, if not, see
+    <http://www.gnu.org/licenses/>.
+
+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!</string>
+             </property>
+             <property name="textInteractionFlags">
+              <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
              </property>
             </widget>
            </item>
@@ -991,24 +2252,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QTextBrowser" name="ownerTextBrowser">
-         <property name="html">
-          <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></string>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 2.0, Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></string>
          </property>
         </widget>
        </item>
@@ -1037,7 +2285,7 @@ p, li { white-space: pre-wrap; }
            <rect>
             <x>10</x>
             <y>30</y>
-            <width>341</width>
+            <width>551</width>
             <height>21</height>
            </rect>
           </property>
@@ -1056,7 +2304,7 @@ p, li { white-space: pre-wrap; }
       <attribute name="title">
        <string>Credits</string>
       </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_3">
+      <layout class="QVBoxLayout" name="verticalLayout_31">
        <item>
         <widget class="QTextBrowser" name="credentialTextBrowser">
          <property name="html">
@@ -1064,10 +2312,58 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></string>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></string>
          </property>
          <property name="textInteractionFlags">
           <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
@@ -1080,6 +2376,37 @@ p, li { white-space: pre-wrap; }
          </property>
         </widget>
        </item>
+       <item>
+        <widget class="QTextBrowser" name="textBrowser">
+         <property name="acceptDrops">
+          <bool>false</bool>
+         </property>
+         <property name="html">
+          <string notr="true"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:18px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Translations</span></p>
+<p style=" margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt;">A special thanks to:</span></p>
+<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" font-size:medium; font-weight:600;" style=" margin-top:16px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium; font-weight:400;">Alexander Angelov and Iva Ninova for Bulgarian</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Francesc Busquets for Catalan</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Jaroslav Krejčí, Janek Wagner for Czech</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Geert Kraeye and Derk Klomp for Dutch</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Christian Oïhénart and François Bocquet for French</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Hans-Peter Zahno and Klaus Tenner for German</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Yannis Kiolalis for Greek</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Antonello Comi and Marco Menardi for Italian</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Didier Clerc for Japanese</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Faraniaina Domoina Rabarijaona for Malagasy</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Patricia Fisch and César Marques for Portuguese</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Ilia Ryabokon for Russian</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Anki Chen for Traditional Chinese</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Jaroslav Ryník for Slovak</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Dorian Fuentes and Juan José Gutiérrez Aparicio for Spanish</span></li>
+<li style=" font-size:medium;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:medium;">Ferhat Ozkasgarli for Turkish</span></li></ul></body></html></string>
+         </property>
+        </widget>
+       </item>
       </layout>
      </widget>
     </widget>
diff --git a/Sankore-3.1/resources/forms/youTubePublishingDialog.ui b/Sankore-3.1/resources/forms/youTubePublishingDialog.ui
index e7b83b6..b07f799 100644
--- a/Sankore-3.1/resources/forms/youTubePublishingDialog.ui
+++ b/Sankore-3.1/resources/forms/youTubePublishingDialog.ui
@@ -123,7 +123,7 @@
        </property>
       </widget>
      </item>
-     <item row="9" column="1">
+     <item row="10" column="1">
       <widget class="QLabel" name="label_4">
        <property name="text">
         <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
@@ -143,13 +143,23 @@ p, li { white-space: pre-wrap; }
        </property>
       </widget>
      </item>
-     <item row="10" column="1">
+     <item row="11" column="1">
       <widget class="QDialogButtonBox" name="dialogButtons">
        <property name="standardButtons">
         <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
        </property>
       </widget>
      </item>
+     <item row="9" column="1">
+      <widget class="QCheckBox" name="youtubeCredentialsPersistence">
+       <property name="text">
+        <string>Restore credentials on reboot</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
   </layout>
diff --git a/Sankore-3.1/resources/i18n/sankore_ar.ts b/Sankore-3.1/resources/i18n/sankore_ar.ts
index b43ffb4..71d422a 100644
--- a/Sankore-3.1/resources/i18n/sankore_ar.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ar.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="ar" sourcelanguage="fr">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>مغادرة فتح Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>فتح Sankoré Editor</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>إظهار محرر النماذج المصغرة Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>إخفاء فتح Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>إخفاء تطبيق فتح Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>استيراد وثائق Uniboard</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>استيراد وثائق Sankore أو Uniboard قديمة</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>تجميع العناصر</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>تشغيل</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>التفاعل مع العناصر</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>فسخ الخلفية</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>إزالة الخلفية</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>تجميع</translation>
     </message>
 </context>
 <context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/الصفحة البدء</translation>
+        <source>Element ID = </source>
+        <translation>معرّف المكوّن =</translation>
     </message>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>سلة المهملات</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>المحتوى غير مدعوم في النسق الهدف.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>لا يمكن تحميل المحتوى</translation>
+        <source>Remove Page</source>
+        <translation>ازالة الصفحة</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>تحميل...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>هل تريدون حقا إزالة صفحة واحدة من الوثيقة '%0' المختارة؟</translation>
     </message>
 </context>
 <context>
@@ -897,11 +908,11 @@
     </message>
     <message>
         <source>Update available</source>
-        <translation type="unfinished"></translation>
+        <translation>تحديث متوفّر</translation>
     </message>
     <message>
         <source>Update</source>
-        <translation type="unfinished">التحيين</translation>
+        <translation>التحيين</translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>دعم الجميع (1%)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>إزالة صفحة%1  من الوثيقة</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>تمت إزالة صفحة%1  </translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>فشلت عملية إضافة الملف: خطأ في نسخ الملف</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>تجميع</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>تفريق</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,37 +968,38 @@
         <source>Error Adding Image to Library</source>
         <translation>خطأ عند اضافة الصورة الى المكتبة</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>صورة ملتقطة</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
     <message>
         <source>Cache Properties</source>
-        <translation type="unfinished"></translation>
+        <translation>خصائص التخزين المؤقت</translation>
     </message>
     <message>
         <source>Color:</source>
-        <translation type="unfinished"></translation>
+        <translation>اللون:</translation>
     </message>
     <message>
         <source>Shape:</source>
-        <translation type="unfinished"></translation>
+        <translation>الشكل:</translation>
     </message>
     <message>
         <source>Size:</source>
-        <translation type="unfinished"></translation>
+        <translation>الحجم:</translation>
     </message>
     <message>
         <source>Close</source>
-        <translation type="unfinished">Close</translation>
+        <translatorcomment>اغلاق:</translatorcomment>
+        <translation>Close</translation>
     </message>
 </context>
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>اظهار Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>التقاط جزء من الشاشة</translation>
     </message>
@@ -987,6 +1019,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>اظهار سطح المكتب على الشاشة الثانوية</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>إظهار Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1111,6 @@
         <translation>استيراد كل الصور من المجلد</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>المجلد لا يحتوي على ملفات صور!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>حذف</translation>
     </message>
@@ -1112,10 +1144,27 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>هل تريدون حقّا إزالة %n صفحة من الوثيقة المختارة '%1' ؟</numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>صفحة العنوان</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>المجلد لا يحتوي على ملفات صور</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>وثائق غير معنونة</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1137,26 +1186,38 @@
     </message>
     <message>
         <source>All supported files (*.%1)</source>
-        <translation>كل الملفات المدعومة (*.1%)</translation>
+        <translation>كل الملفات المدعومة (*.%1)</translation>
     </message>
     <message>
         <source>File %1 saved</source>
         <translation>حفظ الملف 1%</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>استيراد الصفحة 1% من 2%</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>إدراج صفحة %1 من أصل %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>استيراد ناجح.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>بيانات صور خاطئة، تخطي الملف 1%</translation>
+        <source>Import of file %1 successful.</source>
+        <translation>نجح استيراد الملف %1</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>استيراد ملف 1%</translation>
     </message>
 </context>
 <context>
     <name>UBDocumentNavigator</name>
     <message>
         <source>Page %0</source>
-        <translation>صفحة 0%</translation>
+        <translation>صفحة %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>صفحة العنوان</translation>
     </message>
 </context>
 <context>
@@ -1202,7 +1263,12 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 صفحة منسوخة</numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1211,34 +1277,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>تحميل الملفات</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished"></translation>
+        <translation>إلغاء </translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>ظهر تحذير أثناء التصدير</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>التصدير للـIWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>التصدير كملف IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">تصدير الوثيقة...</translation>
+        <translation>تصدير الوثيقة...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">تصدير ناجح.</translation>
+        <translation>تصدير ناجح.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">فشل التصدير.</translation>
+        <translation>فشل التصدير.</translation>
     </message>
 </context>
 <context>
@@ -1341,68 +1414,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">الاضافة الى الصفحة</translation>
+        <translation>الاضافة الى الصفحة</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">تعيين كخلفية</translation>
+        <translation>تعيين كخلفية</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">الاضافة الى المكتبة</translation>
+        <translation>الاضافة الى المكتبة</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">معلومات حول الأشياء</translation>
+        <translation>معلومات حول الأشياء</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">الاضافة الى المفضلة</translation>
+        <translation>الاضافة الى المفضلة</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">تقاسم</translation>
+        <translation>تقاسم</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">بحث</translation>
+        <translation>بحث</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">حذف</translation>
+        <translation>حذف</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">العودة الى المجلد</translation>
+        <translation>العودة الى المجلد</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">الحذف المفضلة</translation>
+        <translation>الحذف من المفضلة</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">انشاء مجلد جديد</translation>
+        <translation>انشاء مجلد جديد</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>إعادة مسح نظام الملفات</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">الصورة المستوردة</translation>
+        <translation>الصورة المستوردة</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>ملفات صوتية</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>أفلام</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>صور</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>حركات</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>تفاعلات</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>تطبيقات</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>أشكال</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>مفضلة</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>بحث على الويب</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>سلة المهملات</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>موافقة</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>إلغاء </translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>إدخال اسم مجلد جديد</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>تحميل</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">مقفل</translation>
+        <translation>مقفل</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">مرئي على الشاشة الكبيرة</translation>
+        <translation>مرئي على الشاشة الكبيرة</translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1574,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>قابل للنشر</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>الويب</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>تحميل...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1641,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1650,6 @@
         <source>Image Format (</source>
         <translation>شكل الصورة (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>فشل استيراد صورة</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>استيراد صورة ناجح.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1665,6 @@
         <source>Importing page %1 of %2</source>
         <translation>استيراد الصفحة 1% من 2%</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>نجاح استيراد PDF.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,136 +1688,29 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>الاضافة الى المفضلة</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>تقاسم</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>بحث</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>حذف</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>العودة الى المجلد</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>الحذف المفضلة</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>انشاء مجلد جديد</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>الاضافة الى الصفحة</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>تعيين كخلفية</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>الاضافة الى المكتبة</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>معلومات حول الأشياء</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>اضافة 1 صورة الى المكتبة</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>ملفات صوتية</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>أفلام</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>صور</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>أشكال</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>تطبيقات</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>مفضل</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>تفاعلات</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>انشاء صور مصغرة لـ 1%.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>فشل الاضافة للصفحة بالنسبة للعنصر 1%.</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>الصورة المستوردة</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>حركات</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>دخول</translation>
     </message>
 </context>
 <context>
     <name>UBMainWindow</name>
     <message>
         <source>Yes</source>
-        <translation type="unfinished"></translation>
+        <translation>نعم</translation>
     </message>
     <message>
         <source>No</source>
-        <translation type="unfinished"></translation>
+        <translation>لا</translation>
     </message>
     <message>
         <source>Ok</source>
-        <translation type="unfinished"></translation>
+        <translation>موافق</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>غلق</translation>
     </message>
 </context>
 <context>
@@ -1697,49 +1731,53 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
-        <translation type="unfinished"></translation>
+        <translation><qt>إدخال اسم مستعمل وكلمة مرور لـ "%1" في %2  </qt></translation>
     </message>
     <message>
         <source>Yes</source>
-        <translation type="unfinished"></translation>
+        <translation>نعم</translation>
     </message>
     <message>
         <source>No</source>
-        <translation type="unfinished"></translation>
+        <translation>لا</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>اضافة مجلد جديد</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>اسم المجلد الجديد:</translation>
+        <source>(copy)</source>
+        <translation>(نسخ)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation type="unfinished">اضافة</translation>
+        <source>Document Repository Loss</source>
+        <translation>خسارة سجل الوثيقة</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation type="unfinished"></translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>لم يستطع Sankore الدخول الى سجل الوثيقة '1%'. للأسف، يجب اغلاق التطبيق لتفادي فساد البيانات.  يمكن أيضا فقدان التغييرات الأخيرة.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(نسخ)</translation>
+        <source>English</source>
+        <translation>انجليزي</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>خسارة سجل الوثيقة</translation>
+        <source>Russian</source>
+        <translation>روسي</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>لم يستطع Sankore الدخول الى سجل الوثيقة '1%'. للأسف، يجب اغلاق التطبيق لتفادي فساد البيانات.  يمكن أيضا فقدان التغييرات الأخيرة.</translation>
+        <source>German</source>
+        <translation>ألماني</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>فرنسي</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>فرنسي سويسري</translation>
     </message>
 </context>
 <context>
@@ -1853,14 +1891,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>وثائق غير معنونة</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>سلة المهملات</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>أفلامي</translation>
     </message>
@@ -1869,33 +1899,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>معلّم</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>تلميذ</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال المهمة هنا...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>اسقاط الوسيط هنا...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال العنوان هنا</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال عنوان الرابط هنا</translation>
     </message>
 </context>
 <context>
@@ -1909,70 +1939,78 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال العنوان هنا</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال التعليق هنا</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>اضافة عملية</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>اضافة وسيط</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>صفحة: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال عنوان الحصة هنا...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>المؤلفون</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال المؤلفين هنا...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>الأهداف</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>ادخال الأهداف هنا</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>فهرسة الموارد</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>الكلمات المفاتيح</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>ادخال الكلمات المفاتيح هنا...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>المستوى:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>المواضيع:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>النوعية:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>الرخصة</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
@@ -2000,40 +2038,32 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>الحقل العام</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>حقوق التأليف</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>تاريخ الانشاء:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>تاريخ التحيين:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>صفحة العنوان</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>صفحة: %0</translation>
     </message>
 </context>
 <context>
@@ -2071,10 +2101,15 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Magnifier</source>
-        <translation type="unfinished"></translation>
+        <translation>مكبرة</translation>
     </message>
     <message>
         <source>Cache</source>
+        <translation>تخزين مؤقت</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translatorcomment>More context needed</translatorcomment>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2134,18 +2169,13 @@ Do you want to ignore these errors for this host?</source>
     <message>
         <source>Files update successful!
 Please reboot the application to access the updated documents.</source>
-        <translation type="unfinished"></translation>
+        <translation>نجاح تحديث الملفات!
+يرجى إعادة تشغيل التطبيق للوصول إلى الوثائق المحدثة.
+</translation>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>الويب</translation>
+        <translation>التذكير لاحقا</translation>
     </message>
 </context>
 <context>
@@ -2183,6 +2213,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>يجري التحميل على الشبكة اليوتوب %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2216,35 +2254,35 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation type="unfinished"></translation>
+        <translation>سيارات وعربات</translation>
     </message>
     <message>
         <source>Pets & Animals</source>
-        <translation type="unfinished"></translation>
+        <translation>حيوانات وحيوانات أليفة</translation>
     </message>
     <message>
         <source>Travel & Events</source>
-        <translation type="unfinished"></translation>
+        <translation>سفر ومناسبات</translation>
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation type="unfinished"></translation>
+        <translation>شخصيات ومدونات</translation>
     </message>
     <message>
         <source>News & Politics</source>
-        <translation type="unfinished"></translation>
+        <translation>أخبار وسياسة</translation>
     </message>
     <message>
         <source>Howto & Style</source>
-        <translation type="unfinished"></translation>
+        <translation>دليل وستايل</translation>
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation type="unfinished"></translation>
+        <translation>أعمال خيرية وأنشطة</translation>
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation type="unfinished"></translation>
+        <translation>علوم وتكنولوجيا</translation>
     </message>
 </context>
 <context>
@@ -2258,11 +2296,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>استيراد وثائق Uniboard/Sankore قديمة</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>لا توجد وثائق يجب استيرادها</translation>
     </message>
 </context>
 <context>
@@ -2341,7 +2379,7 @@ Please reboot the application to access the updated documents.</source>
     <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
-        <translation type="unfinished">%1 تنزيلات </translation>
+        <translation>%1 تنزيلات </translation>
     </message>
 </context>
 <context>
@@ -2397,7 +2435,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>New &Tab</source>
-        <translation type="unfinished"></translation>
+        <translation>New &Tab</translation>
     </message>
 </context>
 <context>
@@ -2500,7 +2538,12 @@ Please reboot the application to access the updated documents.</source>
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">بالضغط على 'تحميل'، تشهدون أنكم تملكون كل حقوق المحتوى أو أنكم تملكون رخصة من مالك الحقوق لنشر المحتوى على اليوتوب، وأنه يخترم شروط استعمال لبيوتوب الموجودة في </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html>
+</translation>
     </message>
 </context>
 <context>
@@ -2715,306 +2758,611 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>version : …</source>
-        <translation type="unfinished"></translation>
+        <translation>نسخة:</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>عرض محتوى صفحة الويب الداخلية على الشاشة الثانوية أو جهاز العرض</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>عرض متعدد</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>تبديل عرض التحكم ومشاهدة العرض</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>نسق</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>نسق البداية:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">لوحة</translation>
+        <translation>لوحة</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>سطح المكتب</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>مستعمل بروكسي:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>المرور:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>معرّف كوكب  Sankoré </translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>المستعمل:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>المرور:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>الشكر إلى</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> يقدّم البرنامج كما هو، دون أي ضمان صريح أو ضمني. ولن يكون مطورو البرنامج مسؤولين في أي حال من الأحوال عن أية أضرار ناتجة عن الاستعمال.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> يرخّص لأي شخص استعمال هذا البرنامج لأي غرض كان، بما في ذلك الاستعمالات التجارية وتغييره وإعادة توزيعه بحرية لكن مع احترام الشروط التالية:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. يجب عدم إخفاء مصدر البرنامج؛ لا يمكنكم ادعاء أنكم من طورتم البرنامج الأصلي. في حال استعمالكم للبرنامج في منتج ما، من المستحسن ذكر ذلك في دليل المنتج ولكن يبقى ذلك اختياريا.
+</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. يجب الإعلان صراحة عن النسخ الأصلية التي وقع تغييرها ويجب عدم تقديمها بصفتها المنتج الأصلي.
+</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3.لا يمكن إزالة هذه الوثيقة أو تغييرها في أي توزيع للبرنامج.
+</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html>
+</translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré نسخة 1.4 ؛ حقوق التأليف 2010-2012 لـGroupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)
+(GIP ENA)<br /><br />Open-Sankoré هو برنامج حرّ: يمكنكم إعادة توزيعه و/أو تغيير شرط احترام شروط Lesser GNU general Public Licence (GNU LGPL) كما هي منشورة من قبل Free Software Foundation في النسخة الثانية والنسخ التالية.
+<br />يمكنكم الاطلاع على مصدر التعليمات البرمجية للبرنامج وتحميله على</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />يقع توزيع Open-Sankoré بأمل أن يكون مفيدا لكن دون أي ضمان، من دون حتى ضمان ضمني للتسويق أو التكييف مع منتج بعينه.<br />يمكنكم الاطلاع على رخصة Lesser GNU General Public Licence  الموجود في باب الرخص أو زيارة الموقع </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />الهاتف:  01 43 17 68 08<br />البريد الإلكتروني: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
+</translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_bg.ts b/Sankore-3.1/resources/i18n/sankore_bg.ts
new file mode 100644
index 0000000..e96f00b
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_bg.ts
@@ -0,0 +1,3868 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="bg_BG">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Натисни, за да се върнеш към приложението</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>Изтегляни файлове</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Почистване</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>0 обекта</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Форма</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Име на файла</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Опитай отново</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Стоп</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Отвори</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Публикувай подкаст в YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Заглавие</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Описание</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Автор</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>Дъска</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Мрежа</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Документи</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Ръководство</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Писалка</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Натиснете Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Фонове</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Смени фона</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Отмени последното действие</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Натиснете Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Преработване</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Натиснете Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Предишен</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Предишна страница</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>PgUp</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Следващ</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Следваща страница</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>PgDown</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Управление на документи</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Натиснете Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Търсене в мрежата</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Натиснете Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Изход</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Назад</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>На ляво</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Напред</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>На дясно</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Презареждане</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Home</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Отметки</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>Отметка</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Натиснете Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Заличи</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Опции</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Библиотека</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Покажи десктоп</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>По-голям</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Натиснете Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>По-малък</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Натиснете Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Нова папка</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Нов Документ</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>Вмъкване</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Екпортиране</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Отвори в режим на дъска</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Натиснете Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Копирай</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Изтрий</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Del</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Добави в работен документ</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Добави избраното в отворен документ</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>Добави</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Преименувай</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Инструменти</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Много екрани</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>Широк размер (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Нормален размер (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Размер по избор</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Спри зареждането</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Изрежи</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Копирай</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Постави</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Заспиване</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Виртуална клавиатура</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Обикновен Светъл фон</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Светъл</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Светъл фон - решетка</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Обикновен тъмен фон</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Тъмен</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Тъмен фон - решетка</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Подкаст</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Запиши</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Започни записване на екрана</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Изтрий обектите</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Изтрий анотациите</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Изчисти страницата</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Химикалка</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Отвори ръковоството</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Провери за обновления</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Натиснете Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Гума</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Маркер</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Инструмент за маркиране</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>Ръка</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>Приближавам</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Отдалечавам</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Линия</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Малка линия</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Средна линия</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Голяма линия</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Малка гума</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>средна гума</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Голяма гума</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Цвят</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Презареди текущата страница</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Зареди началната страница</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Покажи отметките</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Добави отметка</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Покажи дъската</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>Изтрий съдържанието</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Покажи опциите</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Покажи библиотека</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Покажи десктоп</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Натиснете Ctrl+Shift+W</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Създай нова папка</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Създай нов документ</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Вмъкни документ</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Експортирай документ</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Отвори страница в режим Дъска</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Дублирай избраното съдържание</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Изтрий избраното съдържание</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>Добави съдържане към документа</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>Преименувай съдържанието</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Покажи инструменти</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Широк формат на документа (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Нормален формат на документа (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Формат на документа по избор</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Спиране на зареждането на страницата</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Презентация в режим на сън</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Покажи виртуалната клавиатура</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Запиши презентацията като видео</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Изтрий всички обекти</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Изтрий всички анотации</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Изчисти всички елементи</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Анотация на документ</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Натиснете Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Изтрий анотация</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Натиснете Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Подчертаване</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Натиснете Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>Избиране и променяне на обекти</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Натиснете Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Превъртане на страницата</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Лазерна показалка</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Виртуална лазерна показалка</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Натиснете Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Рисуване на линии</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Натиснете Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Текст</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Въведи текст</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Натиснете Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Записване</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Добави към текущата страница</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Добави обекта на настоящата страница</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Добави на нова страница</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Добави обекта на нова страница</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Добави в библиотека</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Добави обекта в галерията</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Страници</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Създай нова страница</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Нова страница</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Дублирай страница</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Дублирай текущата страница</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Вмъкни страница</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Вмъкни външна страница</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Пауза</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Пауза на записа на подкаст</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Конфигурации на подкаста</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Конфигурации на записа на подкаст</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Инструмент за Flash съдържание</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>Съдържание на Flash</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Инструмент за съдържание от мрежата</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Съдържание от мрежата</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Снимане на част от екрана</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Снимане по избор</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Снимане на прозорец</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>Вмъкване на съдържание от мрежата</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>Снимане на съдържание от мрежата</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>Покажи главния екран </translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Изтрий всички анотации</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>вмъкни eduMedia симулация</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Снимане на прозореца</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Покажи на екрана</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Отворено-Санкоре</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Излез от Санкоре</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Отвори редактора на Санкоре</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Отвори редактора за Widgets на Санкоре</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Скрий Санкоре</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Скрий приложението Санкоре</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Вмъкни документи Uniboard</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Вмъкни стари Санкоре или Uniboard документи</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Групирай обекти</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>Пусни</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Работи с обектите</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Изтрий фона</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Премахни фона</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Групирай</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Изисква се проверка за достоверност</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Потребителско име:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Парола:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Проверка на Proxy</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Свържи се към Proxy</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Потребителско име:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Парола:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Запомни потребителско име и парола за бъдеща употреба</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>Номер на елемента =</translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>Това съдържание не се поддържа вкрайния формат.</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Премахни страницата</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Сигурни ли сте ,че искате да премахнете 1 страница от избрания документ '%0'?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>Големина на страницата</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Подкаст</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Мрежа</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>Има ново обновление, ще отидете ли на интернет страницата?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>Няма нови обновления</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>Има нови обновления</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Обновления</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>Изтеглянето %1 прекъсна</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>Изтеглянето завърши</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Непознат инструмент %1</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Непознато съдържание %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Добави обект</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Всички поддържани (%1)</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Изтрий страница %1 от документа</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Страница %1 изтрита</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Грешка при операцията:грешка при копирането на файл</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Групирай</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Премахни групирането</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>Грешка при добавяне на изображение в библиотеката</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Уловени изображения</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Настройки на щората</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Цвят:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Форма:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>Размер:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Затвори</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Снимай част от екрана</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Снимай екрана</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Покажи палитрата на маркера</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Покажи дъската на втория екран</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Покажи работния плот на втория екран</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Покажи Open Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>Нова папка</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Страница %1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Добави папка с изображения</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Добави изображения</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Добави страници към документа</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>Копирай документа %1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>Документът %1 е копиран</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Премахни страницата</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>Премахни документа</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>Сигурни ли сте, че искате да премахнете документа '%1'?</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>Изпразни кошчето</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>Сигурни ли сте, че искате да изпразните кошчето?</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>Изпразване на кошче</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>Кошчето е изпразнено</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>Премахни папка</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>Сигурни ли сте, че искате да премахнете папка '%1' и всичко което съдържа? </translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>Не е избран документ!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Отвори поддържани файлове</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Вмъкване на файлове %1...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Греша при внъкването на файловете ...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Вмъкни всички изображения от папката</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Изтрий</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>Изпразни</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Кошче</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Отвори документ</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Добави всички изображения към документа</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Всички изображения (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>Избраните файлове не са изображения!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>Докъментът '%1'е бил създаден с по-нова версия на Санкоре (%2). При отваряне може да се загуби съдържание. Искате ли да продължите?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translatorcomment>We do not understand the warning marks here, please clarify what the problem is,  to: a.angelov at cct.bg and iva.ninova at cct.bg Thanks!</translatorcomment>
+        <translation>
+            <numerusform>Сигурни ли сте, че искате на премахнете %n страница  от избрания документ '%1'? </numerusform>
+            <numerusform>Сигурни ли сте, че искате на премахнете %n страници  от избрания документ '%1'? </numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Озаглави страницата</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>В папката няма файлове с изображения</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Неозаглавени документи</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>Изображения</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>Видео </translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>обекти</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>widgets</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Всички поддържани файлове (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>Файлът %1 е запазен</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>Вмъкване на страница %1 от %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Вмъкването успешно.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Вмъкване на файл %1 успешно.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Вмъква файл %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Страница %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Озаглави страницата</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Грешка при експортиране.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>Експортирането прекратено ...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>Конвертиране на страница %1/%2 ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>Препоръките не са въведени все още. </translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Качване на Санкоре файлове в мрежата.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>Документът е качен в мрежата.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Грешка при качването на документа в мрежата.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (копиране)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Копиране на страница %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 страница копирана</numerusform>
+            <numerusform>%1 страници копирани</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>Изтегляне на файлове</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Отмени</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Появиха се предупреждения по време на експортирането на страницата</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>Експортирай към интерактивната дъска</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>Експортирай като файл за интерактивна дъска</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Експортиране на документ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Експортирането успешно.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Експортирането се провали.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>Страница</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>Експортирай като UBZ файл</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Експортиране на документ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Експортирането е успешно.</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>Експортиране на %1 %2 от %3</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Експортирай към Санкоре формат</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Експортирай като PDF файл</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Експортиране на документа...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Експортирането е успешно.</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Експортиране към PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Експортиране като PDF файл</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Експортиране на документ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Експортирането успешно.</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>Експортиране на страница %1 от %2</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Експортиране като PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Страница</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Експортиране като Web data</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Експортиране на документ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Експортирането успешно.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Грешка при експортирането.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Експортирането към интернет браузър</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>Добави към страница</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>Задай като фон</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>Добави към библиотека</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Информация за обекта</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Добави в любими</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>Сподели</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Търсене</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Изтрий</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Обратно в папката</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Премахване от любими</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Създаване на нова папка</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Сканирай файловата система отново</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>Вмъкнати изображения</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Звук</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Филми</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Изображения</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Анимации</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Интерактивни обекти</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Приложения</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Форми</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Любими</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Търсене в интернет</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Кошче</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Приеми</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Откажи</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Въведете ново име на папка</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Зареждане</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Заключено</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Видим на втория екран</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Заключено</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Видим на втория екран</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Отиди към източника на съдържанието</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><Напишете текст тук></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Цвят на текста</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Възможност за редактиране</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Мрежа</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Зареждане...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>Замръзнал</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Трансформирай като Инструмент </translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Общ формат на файла (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Импортиране на файл %1...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Импортирането на файл %1 се провали.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Импортирането успешно.</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>Грешка при импортирането.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Импортиране на файл %1...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Импортирането успешно.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Грешка при импортирането на файл %1.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Отворено-Санкоре (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Формат на изображението (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Portable Document Format (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>Грешка при вмъкване на PDF .</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>Вмъкване на страница %1 от %2</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Грешка при публикуването на видеото (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>Видеото се публикува %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Публикувай</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>Вход</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>Да</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Не</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Добре</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Затвори</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>Въведи потребителско име и парола"%1" на %2</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Грешка при свързването към Proxy</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>SSL грешки:
+
+%1
+
+%2
+
+Искате ли да прескочите тези грешки?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Да</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Не</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(копирай)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Загубено е хранилището за документи</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Санкоре изгуби достъп до хранилището за докумети '%1'. За съжаление приложението ще се затвори, за да не се повредят файловете. Последните промени могат да бъдат изгубени.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Английски</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Руски</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Немски</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Френски</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Щвейцарски френски</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Грешка при стартирането на encoder ...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Не е наличен encoder за подкаст ...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Част %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>на вашия работен плот...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>в папка %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Създаден подкаст %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Грешка при записа на подкаст (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Аудио вход по подразбиране</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Няма аудио разпис</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Малък</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Среден</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Пълен</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Публикувай в мрежата</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Публикувай в YouTube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Санкоре Cast</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>версия: </translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>Чувствителен на натиск маркер</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Прокси свързване</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Потребителско име:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Парола:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Публикувай документ в мрежата</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Заглавие:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>Описание:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Публикувай</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Моите филми</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Учител</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Ученик</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Запиши задачата тук...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>Извлачете медия файл тук...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Извлачете заглавие тук...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Вмъкнете връзка към заглавието тук...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Въведете заглавие тук...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Въедете коментар тук...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Въведете действие</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Въведете медия</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Въведете връзка</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Страница: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Въведете заглавие на сесията тук...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Автор (и)</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Въведете автори тук ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Цел(и)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Въведете цел(и) тук...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Индексиране на ресурсите</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Ключови думи:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Въведете ключови думи тук...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Ниво:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Дисциплини:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Тип:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Лиценз</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Attribution CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Attribution NoDerivs CC BY ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Attribution-NonComercial CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Обществен домейн</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Авторско право</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>Създаде:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Обнови:</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Озаглави страница</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Страница: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>Създаване на икомите за предварителен преглед ...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>%1 икони са създадени ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Mask</source>
+        <translation>Маска</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Линия</translation>
+    </message>
+    <message>
+        <source>Compass</source>
+        <translation>Компас</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Транспортир</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Триъгълник</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Лупа</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Кеш</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Аристо</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>Цялата страница</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Мрежа</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Обновяване на документ</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>Файлове, които имат нужда от обновяване.</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Място на архив:</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Разгледай</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Обнови</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Избери папка за архив</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>Обновяването на файловете е успешно! Моля рестартирайте приложението, за да имате достъп до обновените документи.</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Възникна грешка по време на обновяването. Файловете не са засегнати.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Резултат от обновяването на файловете</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>Файлът се обновява</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Моля, изчакайте, процесът на вмъкване ще започне след малко...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Напомни ми по-късно</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>Зареждане...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Публикувай документа в мрежата на Санкоре</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 извикани (метод=%1, статус=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Проверката за достоверност в YouTube не е завършена.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>Грешка при зареждане на видео от YouTube (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>Качване в YouTube  %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>Качване</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Коли & превозни средства</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>Музика</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Домашни любимци & животни</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Спорт</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Пътуване & събития</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Игри</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Комедия</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Хора & блогове</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Новини & политика</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>Забавление</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>Образование</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Направи си сам & стил</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>Организации с нетърговска цел & активизъм</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Наука & технологии</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 Ñ…</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Вмъкване на стари Unibord/Санкоре документи</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>Няма документи, които трябва да се вмъкнат</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Изчисти</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>Запиши файл</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>Изтеглянето е отменено: %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Грешка при отваряне на запазен файл: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Грешка при запазване: %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Грешка в мрежата: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>секунди</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>минути</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>-%4 %5 остават</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 от %2 (%3/сек) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 от %2 - спряни</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>байтове</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation>1 изтегляне</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 изтегляне</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Заглавие</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Адрес</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>По-рано днес</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 обекта</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Търсене</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>Нов & Разделител</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Копирай разделията</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>& Затвори разделителя</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>Затвори &други разделители</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Презариди разделителя</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Презареди всички разделители</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Скоро затворени разделители</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>(неименуван)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>Търсене</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>Няма скорошни търсения</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Скорошни търсения</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Изчисти скорошните търсения</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>Изтегляне</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Добави към текущия документ</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>Грешка при зареждане на страница: %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>Изтегляне на PDF документ: предпочитате да изтеглите PDF файла или да го добавите към текущия Санкоре документ?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Отвори в нов раздел</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Публикувай подкат в YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Заглавие</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Описание</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Ключови думи</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Категория</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>потребителско име за YouTube</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>парола за YouTube</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">С натискането на бутона "Качи" вие удостоверявате, че притежавате всички права върху съдържанието или че законния собственик ви е разрешил да разпространите публично съдържанието в YouTube  и че не е в разрез с условията на YouTube </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>Непрозрачност</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>На светъл фон</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>На тъмен фон</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Ширина на линията</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Средна</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Голяма</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>тънка</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>Химикалката е чувствителна на натиск</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Диалог</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Заглавие</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>електронна поща</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Автор</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Описание</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Диалог</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Заглавие</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>електронна поща</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Автор</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Описаие</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Прикачи PDF версия за изтегляне</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>Прикачи Uniboard файл с възможност за изтегляне</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Предупреждение: Този документ съдържа видео, което не може да бъде показано</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Uniboard документи</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Настройки</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Настройки по подразбиране</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Затвори</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Дисплей</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Покажи страницата с външен браузър</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Виртуална клавиатура</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Големина на бутоните на клавиатурата:</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Поставена отгоре (препоръчва се за таблети)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Поставена от долу (препоръчва се за бели дъски)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Покажи текста под бутона</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Палитна на стилуса</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Хоризонтално</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Вертикално</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>Информация</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Оновяване на софтуера</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Проверявай за обновления при стартиране</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Интернет</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>начална страница:</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Лента с инструменти</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Химикалка</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Маркер</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>версия: ...</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Лиценз</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>ОтворенSSI</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>мрежа</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Отворено-Санкоре</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Покажи вътрешната страница на втори екран на проектора</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Много екрани</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Размени контролния екран и екрана за гледане</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Начин</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Начин на започване:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Дъска</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Десктоп</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Потребител на прокси:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Парола:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation type="obsolete">Planete Санкоре ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Потребител:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Парола:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>                 GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Изготвили</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Лицензите са на английски език, за да се запази пълния смисъл на одобрения текст.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Този софтуер е предоставен във вида в който го виждате, без гаранции. В никакъв случай авторите не могат да бъдат държани отговорни за вреди породени от използването на този софтуер.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Дава се разрешение за ползване на този софтуер, разрешението се дава на всеки и за всякакви цели, вкл. комерсиални цели, както свободна промяна на съдържанието и свободно копиране и разпространение. Съществуват следните ограничения:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. Източника на софтуера трябва да бъде представен, той не може да бъде злепоставян, нямате право да си присвоявате правата за авторство на този софтуер. Ако ползвате този софтуер, цитирането на неговите автори ще бъде прието добре, но не е задължително.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Ако създадете различна версия на този софтуер трябва да го обявите видно, и да не представяте своята версия за оригиналната.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. Това съобщение не може да бъде премахвано от вашата нова версия или модификация на този софтуер.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré версия 1.4 , Всички права са запазени (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Използване на флаш</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Избери флаш , който ще използваш</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>about:blank</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Име на приложението</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Създаване на приложение</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_ca.ts b/Sankore-3.1/resources/i18n/sankore_ca.ts
new file mode 100644
index 0000000..b7ee62c
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_ca.ts
@@ -0,0 +1,3966 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ca" sourcelanguage="en">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Feu clic per tornar a l'aplicació</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>Baixades</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Neteja</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>0 elements</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Formulari</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Fitxer</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Torneu-ho a intentar</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Atura</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Obre</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Publica un podcast al YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Títol</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descripció</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autor/a</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>Tauler</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Documents</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Tutorial</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Estris</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Fons</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Captura</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Afegeix a la pàgina actual</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Afegeix a una pàgina nova</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Afegeix a la biblioteca</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Pàgines</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Pàgina nova</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Canvia el fons</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Desfés</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Refés</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Anterior</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pàgina anterior</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>Tecla de retrocedir pàgina</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Següent</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pàgina següent</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>Tecla d'avançar pàgina</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Gestiona els documents</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Navegació web</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Línia</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Línia petita</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Línia mitjana</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Línia gran</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Surt</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Esborrador</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Esborrador petit</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>Esborrador mitjà</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Esborrador gran</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Color</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Enrere</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Esquerra</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Cap endavant</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Dreta</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Torna a carregar</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Torna a carregar la pàgina actual</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Inici</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Carrega la pàgina d'inici</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Adreces d'interès</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Mostra les adreces d'interès</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>Adreça d'interès</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Afegeix una adreça d'interès</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Mostra el tauler</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Esborra</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>Esborra el contingut</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Preferències</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Visualitza les preferències</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Biblioteca</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Mostra la biblioteca</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Mostra l'escriptori</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Mostra l'escriptori de l'ordinador</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Maj+H</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>Més gran</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>Apropa</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>Més petit</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Allunya</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Carpeta nova</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Crea una carpeta nova</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Document nou</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Crea un document nou</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>Importa</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Importa un document</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Exporta</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Exporta un document</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Obre al tauler</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Obre la pàgina al tauler</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Duplica</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Duplica el contingut seleccionat</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Elimina</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Elimina el contingut seleccionat</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Elimina</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Afegeix al document de treball</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Afegeix el contingut seleccionat al document obert</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>Afegeix</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>Afegeix contingut al document</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Canvia el nom</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>Canvia el nom del contingut</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Eines</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Mostra les eines</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Multipantalla</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>Mida ampla (16:9)</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Utilitza la mida de document ampla (16:9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Mida normal (4:3)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Utilitza la mida de document normal (4:3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Mida personalitzada</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Utilitza la mida de document personalitzada</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Atura la càrrega</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Atura la càrrega de la pàgina web</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Retalla</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Copia</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Enganxa</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Adorm</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Adorm la presentació</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Teclat virtual</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Mostra el tecla virtual</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Fons clar llis</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Clar</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Fons clar quadriculat</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Fons fosc llis</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Fosc</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Fons fosc quadriculat</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Enregistra la presentació en vídeo</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Enregistra</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Inicia l'enregistrament de la pantalla</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Esborra els elements</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Esborra tots els elements</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Esborra les anotacions</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Esborra totes les anotacions</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Esborra la pàgina</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Esborra tots els elements</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Llapis</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Anota al document</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Esborra l'anotació</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Marcador</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Ressalta</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Selector</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>Selecciona i modifica objectes</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>Mà</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Captura part de la pantalla</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Captura personalitzada</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Captura una finestra</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>Incrusta contingut web</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>Captura contingut web incrustable</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>Mostra la pantalla principal a la pantalla</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>Importa una simulació eduMedia</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Obre el tutorial</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Comprova si hi ha actualitzacions</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Desplaça la pàgina</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Punter làser</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Punter làser virtual</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Dibuixa línies</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Escriu text</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Afegeix l'element a la pàgina actual</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Afegeix l'element a una pàgina nova</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Afegeix l'element a la biblioteca</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Crea una pàgina nova</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Duplica la pàgina</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Duplica la pàgina actual</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Importa una pàgina</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Importa una pàgina externa</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Posa en pausa</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Posa en pausa l'enregistrament del podcast</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Configuració del podcast</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Configura l'enregistrament del podcast</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Captura d'objectes Flash</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>Captura un objecte Flash</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Captura de contingut web</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Captura d'un contingut web</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Captura de finestra</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Mostra a la pantalla</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Surt de l'Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Esborra totes les anotacions</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Editor de l'Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Mostra l'editor de ginys de l'Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Amaga l'Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Amaga l'aplicació Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Importa documents Uniboard</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Importa documents antics de l'Uniboard o del Sankoré</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Agrupa elements</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>Inicia</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interactua amb els elements</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Esborra el fons</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Elimina el fons</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Agrupa</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Cal autenticació</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Usuari:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Contrasenya:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Autenticació del servidor intermediari</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Connecta al servidor intermediari</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Usuari:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Contrasenya:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Desa el nom d'usuari i la contrasenya per a un ús futur</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>ID de l'element = </translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>Aquest contingut no està suportat pel format escollit.</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Suprimeix la pàgina</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Esteu segur que voleu eliminar 1 pàgina del document seleccionat '%0'?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>Mida de la pàgina</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>Hi ha disponible una actualització. Voleu visitar la web per descarregar-la?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>No hi ha cap actualització disponible</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>Hi ha una actualització disponible</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Actualitza</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>Ha fallat la baixada del contingut %1</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>Ha acabat la baixada</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Tipus desconegut d'eina %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Afegeix un element</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Tots els acceptats (%1)</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Tipus desconegut de contingut %1</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Elimina la pàgina %1 del document</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>La pàgina %1 ha estat eliminada</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Ha fallat l'operació d'afegir un fitxer: error en copiar el fitxer</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Agrupa</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Desagrupa</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>No s'ha pogut afegir la imatge a la llibreria</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>CapturedImage</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Propietats de la memòria cau</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Color:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Forma:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>Mida:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Tanca</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Captura part de la pantalla</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Captura la pantalla</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Mostra la barra d'estris</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Mostra el tauler a la pantalla secundària</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Mostra l'escriptori a la pantalla secundària</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Mostra l'Open-Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>Carpeta nova</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Pàgina %1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Afegeix una carpeta d'imatges</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Afegeix imatges</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Afegeix pàgines des d'un fitxer</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>S'està duplicant el document %1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>S'ha copiat el document %1</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Suprimeix la pàgina</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>Suprimeix el document</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>Esteu segur que voleu eliminar el document '%1'?</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>Buida la paperera</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>Esteu segur que voleu buidar la paperera?</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>S'està buidant la paperera</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>S'ha buidat la paperera</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>Suprimeix la carpeta</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>Esteu segur que voleu suprimir la carpeta '%1' i tot el seu contingut?</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>No hi ha cap document seleccionat!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Obre un fitxer acceptat</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>S'està important el fitxer %1...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Ha fallat la importació del fitxer...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Importa totes les imatges de la carpeta</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Esborra</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>Buida</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Paperera</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Obre un document</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Afegeix totes les imatges al document</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Totes les imatges (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>La selecció no conté cap fitxer d'imatge!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>El document '%1' ha estat generat amb una versió més nova del Sankoré (%2). Si l'obriu podríeu perdre alguna informació. Voleu continuar?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>Esteu segur que voleu eliminar %n pàgina del document seleccionat '%1'?</numerusform>
+            <numerusform>Esteu segur que voleu eliminar %n pàgines del document seleccionat '%1'?</numerusform>
+            <numerusform>Esteu segur que voleu eliminar %n pàgines del document seleccionat '%1'?</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pàgina de títol</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>La carpeta no conté cap fitxer d'imatge</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documents sense títol</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>imatges</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>vídeos</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>objectes</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>ginys</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Tots els fitxers acceptats (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>S'ha desat el fitxer %1</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>S'està inserint la pàgina %1 de %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>La importació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>La importació del fitxer %1 ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>S'està important el fitxer %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Pàgina %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pàgina de títol</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Ha fallat l'exportació.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>S'ha cancel·lat l'exportació...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>S'està convertint la pàgina %1/%2...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>Encara no s'han introduït les credencials.</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>S'està carregant el fitxer Sankoré a la web.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>El document s'ha publicat correctament a la web.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Ha fallat la càrrega del document a la web.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (còpia)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>S'està copiant la pàgina %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 pàgina copiada</numerusform>
+            <numerusform>%1 pàgines copiades</numerusform>
+            <numerusform>%1 pàgines copiades</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>S'estan baixant fitxers</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancel·la</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Advertiments: durant l'exportació han aparegut</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>Exporta a IWB</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>Exporta com a fitxer IWB</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>S'està exportant el document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>L'exportació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>L'exportació ha fallat.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>Pàgina</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>Exporta com a fitxer UBZ</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>S'està exportant el document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>L'exportació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>S'està exportant %1 %2 de %3</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Exporta al format del Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Exporta com a fitxer PDF</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>S'està exportant el document...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Exporta a PDF</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>L'exportació ha estat correcta.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Exporta com a fitxer PDF</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>S'està exportant el document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>L'exportació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>S'està exportant la pàgina %1 de %2</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Exporta a PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Pàgina</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Exporta com a dades web</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>S'està exportant el document...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>L'exportació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>L'exportació ha fallat.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Exporta al navegador web</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>Afegeix a la pàgina</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>Estableix com a fons</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>Afegeix a la biblioteca</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Informacions de l'objecte</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Afegeix als llocs d'interès</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>Comparteix</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Cerca</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Torna a explorar el sistema de fitxers</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Elimina</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Torna a la carpeta</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Elimina dels llocs d'interès</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Crea una carpeta nova</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>Imatge importada</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Sons</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Vídeos</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Imatges</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animacions</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interactivitats</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplicacions</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Formes</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Preferits</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Cerca a la web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Paperera</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>D'acord</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancel·la</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Escriviu el nom de la carpeta nova</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>S'està carregant </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Blocat</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Visible a la pantalla estesa</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Blocat</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Visible a la pantalla estesa</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Ves a la font de contingut</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><Escriu text aquí></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Color del text</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Editable</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>S'està carregant ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>Congelat</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Transforma en eina</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Format de fitxer comú (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>S'està important el fitxer %1...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Ha fallat la importació del fitxer %1.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>La importació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>Ha fallat la importació.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>S'està important el fitxer %1...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>La importació ha estat correcta.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Ha fallat la importació del fitxer %1.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankoré (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Format d'imatge (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Format de document portable (*.PDF)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>Ha fallat la importació del PDF.</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>S'està important la pàgina %1 de %2</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Ha ocorregut un error mentre es publicava el vídeo a la intranet (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>La publicació a la intranet està en progrés %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Publica</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>Entra</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>Sí</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>No</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>D'acord</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Tanca</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>Escriviu el nom d'usuari i la contrasenya per a "%1" a %2</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Ha fallat el registre al servidor intermediari</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>Errors d'SSL: 
+
+%1
+
+%2
+
+Voleu ignorar aquests errors per a aquest amfitrió?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Sí</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>No</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(còpia)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Pèrdua del repositori de documents</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankoré ha perdut l'accés al repositori de documents '%1'. Desafortunadament, l'aplicació ha de finalitzar per evitar una possible corrupció de les dades. També es perdran les darreres modificacions efectuades.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Anglès</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rus</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemany</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francès</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francès de Suïssa</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>No s'ha pogut iniciar el codificador...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>No hi ha disponible el codificador de podcast...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Part %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>al vostre escriptori ...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>a la carpeta %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>S'ha creat el podcast %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>S'ha produït un error en enregistrar el podcast (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Entrada d'àudio per defecte</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>No hi ha enregistraments d'àudio</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Petit</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Mitjà</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Complet</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Publica a la intranet</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Publica a YouTube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Presentació Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>versió:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>El marcador és sensible a la pressió</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Inici de sessió al servidor intermediari</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Usuari:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Contrasenya:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Publica el document a la web</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Títol:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>Descripció:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Publica</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Les meves pel·lícules</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Professor/a</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Alumne/a</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Escriviu aquí la tasca...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>deixeu caure aquí objectes multimèdia...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Escriviu aquí el títol...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Inseriu aquí el títol de l'enllaç...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Escriviu aquí el títol...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Escriviu aquí el comentari...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Afegeix una acció</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Afegeix un objecte multimèdia</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Afegeix un enllaç</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Pàgina: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Title page</source>
+        <translation>Pàgina de títol</translation>
+    </message>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Escriviu aquí el títol de la sessió...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Autor(s)</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Escriviu aquí els noms dels autors...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Objectiu(s)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Escriviu aquí els objectius...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Indexació de recursos</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Paraules clau:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Escriviu aquí les paraules clau...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Nivell:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Àrees:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Tipus:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Llicència</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Reconeixement CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Reconeixement-SenseObraDerivada CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Reconeixement-CompartirIgual CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Reconeixement-NoComercial CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Reconeixement-NoComercial-SenseObraDerivada CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Reconeixement-NoComercial-CompartirIgual CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Domini públic</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Copyright</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>Creat el:
+</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Actualitzat el:
+</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Pàgina: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>S'estan generant les miniatures de previsualització...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>S'han generat %1 miniatures...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Compass</source>
+        <translation>Compàs</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Regle</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Transportador</translation>
+    </message>
+    <message>
+        <source>Mask</source>
+        <translation>Màscara</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Escaire</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Lupa</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Memòria cau</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Cartabó Aristo</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>Pàgina sencera</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Actualitzador de documents</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation> fitxers requereixen una actualització.</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Ubicació de la còpia de seguretat: </translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Navega</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Actualitza</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Seleccioneu una carpeta per a les còpies de seguretat</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>L'actualització dels fitxers ha estat correcta.
+Reinicieu l'aplicació per accedir als documents actualitzats.</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Ha ocorregut un error durant l'actualització. Els fitxers no s'han vist afectats.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Resultats de l'actualització de fitxers</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>S'està actualitzant un fitxer </translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Espereu, el procés d'importació començarà aviat...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Recorda-m'ho després</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>S'està carregant...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Publica el document a la web del Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 cridats (mètode=%1, estat=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Ha fallat l'autenticació al YouTube.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>Ha ocorregut un error mentre es carregava el vídeo al YouTube (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>La càrrega al YouTube és en progrés %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>Carrega</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Automòbils i vehicles</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>Música</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Animals i mascotes</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Esports</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Viatges i esdeveniments</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Jocs</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Comèdia</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Gent i blocs</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Notícies i política</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>Entreteniment</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>Educació</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Consells i estil</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>ONG i activisme</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Ciència i tecnologia</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Importa documents antics de l'Uniboard o el Sankoré</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>No hi ha documents per a importar</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Neteja</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>Desa el fitxer</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>S'ha cancel·lat la baixada: %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Ha ocorregut un error quan s'obria el fitxer desat: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Ha ocorregut un error mentre es desava: %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Error de xarxa: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>segons</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>minuts</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>- %4 %5 restants</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 de %2 (%3/segon) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 de %2 - Aturat</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>bytes</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 baixades</translation>
+    </message>
+    <message>
+        <source>1 Download</source>
+        <translation>1 baixada</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Títol</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Adreça</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>Avui</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 elements</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Cerca</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>Pes&tanya nova</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Clona la pestanya</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>Tan&ca la pestanya</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>Tanca &altres pestanyes</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Recarrega la pestanya</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Recarrega totes les pestanyes</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Pestanyes tancades recentment</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>(Sense títol)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>Cerca</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>No hi ha cap cerca recent</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Cerques recents</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Neteja les cerques recents</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>Baixa</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Afegeix al document actual</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>S'ha produït un error en carregar la pàgina: %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>Descàrrega del document PDF: preferiu descarregar el fitxer PDF o afegir-lo al document Sankoré actual?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Obre en una pestanya nova</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Publica un podcast al YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Títol</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descripció</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Paraules clau</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Categoria</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>Usuari del YouTube</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>Contrasenya del YouTube</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Clicant 'Carrega,' certifiqueu que teniu tots els drets sobre el contingut o que esteu autoritzats pel propietari dels drets a fer-lo públicament disponible al YouTube, així com que el contingut compleix amb els termes de servei del YouTube localitzats a </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>Opacitat</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>Sobre fons clar</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>Sobre fons fosc</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Amplada de la línia</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Mitjà</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Ressaltat</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>Fi</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>El llapis és sensible a la pressió</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Diàleg</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Títol</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>Adreça de correu electrònic</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autor/a</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descripció</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Diàleg</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Títol</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>Adreça de correu electrònic</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autor/a</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descripció</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Adjunta una versió descarregable en PDF</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>Adjunta un fitxer descarregable Uniboard (UBZ)</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Atenció: aquest document conté vídeo, que no es mostrarà correctament a la web</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Documents Uniboard</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Preferències</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>versió: …</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Paràmetres per defecte</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Tanca</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Visualitza</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Mostra la pàgina amb un navegador extern</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>Pàgina d'inici:</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Teclat virtual</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Mida de les tecles:</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Barra d'eines</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Col·locada a la part superior (recomanat per a les tauletes)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Col·locada a la part inferior (recomanat per a les pissarres)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Mostra el text sota el botó</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Barra d'estris</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Horitzontal</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Vertical</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Bolígraf</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Marcador</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>Quant a</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Actualització del programari</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Comprova si hi ha actualitzacions del programari en engegar</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Internet</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Llicències</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>Xarxa</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Mostra el contingut de la pàgina web en un monitor o projector secundari</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Pantalla múltiple</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Canvia entre 'control de la pantalla' i 'visualització de la pantalla'</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Modalitat</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Comença en la modalitat:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Tauler</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Escriptori</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Nom d'usuari del servidor intermediari:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Contrasenya:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation type="obsolete">Planète Sankoré ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Usuari:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Contrasenya:</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Crèdits</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Les llic&egrave;ncies es mostren en angl&egrave;s per respectar la traducci&oacute; legalment aprovada.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré és programari lliure : podeu redistribuir-lo i/o modificar-lo sempre que respecteu els termes de la Lesser GNU general Public Licence (GNU LGPL) tal com ha estat publicada per la Free Software Foundation en la seva versió 2 o qualsevol versió més recent.<br />podeu consultar i descarregar el codi font del programari des de </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré es distribueix amb l'esperança de ser útil, però SENSE CAP GARANTIA, ni tan sols la garantia implícita de COMERCIALITZACIÖ o D'ADAPTACIÓ A UN OBJECTIU PARTICULAR.<br />Consulteu la llicència Lesser GNU General Public Licence situada a la pestanya Llicències o bé el lloc web </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contacte : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crèdits del tipus de lletra escolar Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">El tipus de lletra Andika Basic disposa d'una llicència Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Llicència OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra escolars que s'esmenten tot seguit són obra de Jean-Marie Douteau i disposen d'una llicència OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra escolars que s'esmenten tot seguit són obra de Jean-Marie Douteau i disposen d'una llicència Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra lligada són obra d'Antoine Fetet (antoine.fetet at laposte.net) a partir d'un tipus de lletra proposat per Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'autor m'autoritza l'ús en el marc del programari open-Sankoré, sempre que es tracti d'un ús no comercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Els tipus de lletra lligada (Ecole et CaseEcole) són obra d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Se n'autoritza l'ús no comercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">El tipus de lletra fonètica Alphonet és obra d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Se n'autoritza l'ús no comercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Font : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Captura d'un objecte Flash</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Seleccioneu l'objecte Flash a capturar</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>about:blank</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Nom de l'aplicació</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Crea una aplicació</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_cs.ts b/Sankore-3.1/resources/i18n/sankore_cs.ts
new file mode 100644
index 0000000..df27f5a
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_cs.ts
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ" sourcelanguage="en">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Chcete-li se vrátit do aplikace, klikněte sem</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>0 Items</source>
+        <translation>0 položek</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Vymazat</translation>
+    </message>
+    <message>
+        <source>Downloads</source>
+        <translation>Stáhnout</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Zastavit</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Název souboru</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Zkusit znovu</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Title</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autor</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Popis</translation>
+    </message>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Publikovat podcast na YouTube</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Add</source>
+        <translation>Přidat</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Vymazat</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Vyjmout</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Pero</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Zpět</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Kopírovat</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Tmavá</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>Ruka</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Domů</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Vlevo</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Čára</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translatorcomment>strana</translatorcomment>
+        <translation>Další</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>PgUp</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Znovu</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Ukončit</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Zpět</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Zobrazit tabuli</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Tabule</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Barva</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Guma</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Zobrazit nástroje</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Světlá</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>Vložit obsah z webu</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Stránky</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Pozastavit</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Vpravo</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Uspat</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Nástroje</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Víceobrazovkový mód</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Uspat prezentaci</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Nový dokument</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Černé pozadí</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Nastavení podcastu</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Vyhledat aktualizace</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Použít vlastní velikost dokumentu</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>Přiblížit</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Zaznamenat prezentaci jako video</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Mřížka s černým pozadím</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Velká guma</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Mřížka s bílým pozadím</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Skrýt aplikaci Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Otevřít externí stránku</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Přidat záložku</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Vymazat všechny objekty</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Posun po stránce</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Tenká čára</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Knihovna</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Nastavit záznam podastu</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Otevřít stránku na tabuli</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Otevřít dokumenty Uniboard</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>Větší</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Vygumovat</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Exportovat</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Nová složka</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>Přenést obsah ve Flashi</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Vlastní způsob zachytávání</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Zvýrazňovač</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>PgDown</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Vytvořit nový dokument</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Nahrávat</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Obnovit</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Přejmenovat</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Stylus</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Ukončit Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Vlastní velikost</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Laserové ukazovátko</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>Na šířku (16/9)</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Nahrát domovskou stránku</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Duplikovat stránku</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Duplikovat vybraný obsah</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Záložky</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Otevřít na tabuli</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>Přejmenovat obsah</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Otevřít staré dokumenty Sankoré nebo Uniboard</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Oddálit</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>Záložka</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Přidat na aktuální stránku</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Vytvořit novou stránku</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Skrýt Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Odstranit všechny položky</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>Odstranit obsah</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Odstranit položky</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Duplikovat</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Přidat vybraný obsah do otevřeného dokumentu</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Virtuální klávesnice</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Editor Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Zobrazit knihovnu</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>Středně velká guma</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Zastavit nahrávání stránky</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Duplikovat aktuální stránku</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Pozastavit nahrávání podcastu</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Vytvořit novou složku </translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Vymazat stránku</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Přidat do knihovny</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Předchozí</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Zastavit nahrávání</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Obnovit aktuální stránku</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Otevřít stránku</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Nakreslit čáry</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Zachytit</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>V zobrazené části obrazovky zobrazit hlavní obrazovku</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Přenést Flash</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Zachytit okno</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Odstranit vybraný obsah</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Přidat položku na novou stránku</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>Přidat obsah do dokumentu</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>Menší</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Zobrazit editor widgetů Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>Zachytit část webové stránky</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Napsat text</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Dokumenty</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Přidat na novou stránku</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Bežná velikost (4/3)</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Přenést web</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Zobrazit virtuální klávesnici</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Otevřít návod</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Zobrazit záložky</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Používat dokument na šířku (16/9)</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Zobrazit plochu</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Středně široká čára</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Předchozí stránka</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Přenést obsah z webu</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Oddělovač</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Vymazat všechny anotace</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Vymazat všechny anotace</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Exportovat dokument</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Spustit nahrávání obrazovky</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Nová stránka</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Otevřít dokument</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Návod</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>Nahrát simulaci z webu eduMedia</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Používat běžnou velikost dokumentu (4/3)</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Změnit pozadí</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Zobrazit předvolby</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Předvolby</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Zachytit část obrazovky</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Vpřed</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Spravovat dokumenty</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Široká čára</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Vymazat anotace</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Zobrazit při projekcii</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>Vybrat a upravit objekty</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Zachytit okno</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Virtuální laserové ukazovátko</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Bílé pozadí</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Přidat položku do knihovny</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Prohlížet web</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Pozadí</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Malá guma</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Přidat položku na aktuální stránku</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Přidat do aktuálního dokumentu</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Zvýraznit </translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Plocha</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Další stránka</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Přidat anotaci dokumentu</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Vymazat anotaci</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Seskupit položky</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>Přehrát</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Pracovat s položkami</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Vymazat pozadí</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Odstranit pozadí</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Seskupit</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Vyžaduje se přihlášení</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Heslo:</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Uživatelské jméno:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Uložit uživatelské jméno a heslo pro budoucí použití</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Připojit se k proxy</translation>
+    </message>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Přihlášení na proxy</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Heslo:</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Uživatelské jméno:</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation type="unfinished">ID objektu = </translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>Obsah není podporován v cílovém formátu.</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Odstranit stránku</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Opravdu chcete odstranit 1 stránku z vybraného dokumentu '%0'?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+    <message>
+        <source>Page Size</source>
+        <translation>Velikost stránky</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Akutalizovat</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>Žádná aktualizace není k dispozicii</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>K dispozici je nová aktualizace, chcete přejít na webovou stránku?</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>K dispozici je aktualizace</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Všechny podporované (%1)</translation>
+    </message>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>Nepodařilo se stáhnout %1</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Neznámy typ obsahu (%1)</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Přidat položku</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Neznámý typ nástroje %1</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>Stahování dokončeno</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Odstranit stránku %1 z dokumentu</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Stránka %1 byla odstraněna</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Přidání souboru selhalo: chyba při kopírování</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Seskupit</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Odseskupit</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>Chyba při přidávání obrázku do knihovny</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Zachycenýobrázek</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>Velikost:</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Barva:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Tvar:</translation>
+    </message>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Vlastnosti baterky</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Zobrazit plochu na druhé obrazovce</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Zachytit obrazovku</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Zobrazit paletu pro stylus</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Zachytit část obrazovky</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Zobrazit tabuli na druhé obrazovce</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Zobrazit Open-Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>Empty</source>
+        <translation>Vyprázdnit</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Koš</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>Určitě chcete vyprázdnit koš?</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>Určitě chcete odstranit složku "%1" a celý její obsah?</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Otevřít podporovaný soubor</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>Odstranit dokument</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Všechny obrázky (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>Ve výběru není žádný soubor obrázku!</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Otevřít dokument</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Přidat složku s obrázky</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Nová složka</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Přidat obrázky</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>Duplikuje se dokument %1</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Stránka %1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>Dokument %1 byl zkopírovaný</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>Dokument "%1" byl vytvořený novější verzí Sankoré (%2). Pokud ho otevřete, můžete ztratit některé informace. Chcete pokračovat?</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Otevírá se soubor %1...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Soubor se nepodařilo otevřít...</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>Určitě chcete odstranit dokument "%1"?</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>Koš byl vyprázdněn</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>Vyprázdnit koš</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>Odstranit složku</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Odstranit stránku</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>Nevybrali jste žádný dokument!</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Nahrát všechny obrázky ze složky</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>Vyprazdňuje se koš</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>Určitě chcete odstranit %n stránku z vybraného dokumentu %1?</numerusform>
+            <numerusform>Určitě chcete odstranit %n stránky z vybraného dokumentu %1?</numerusform>
+            <numerusform>Určitě chcete odstranit %n stránek z vybraného dokumentu %1?</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Přidat všechny obrázky do dokumentu</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Přidat stránky ze souboru</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Úvodní stránka</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Složka neobsahuje žádné obrázky</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Dokumenty bez názvu</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Všechny podporované soubory (*.%1)</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>objekty</translation>
+    </message>
+    <message>
+        <source>images</source>
+        <translation>obrázky</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>videa</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>widgety</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>Soubor %1 byl uložen</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>Vkládá se strana %1 z %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Import byl úspěšně dokončen.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Import souboru %1 byl úspěšný.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Importuje se soubor %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Stránka %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Úvodní stránka</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export se nezdařil.</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>Konvertuje se stránka %1/%2...</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Nepodařilo se nahrát dokument na web.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>Export byl zrušen...</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Právě se nahrává soubor Sankoré na web.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>Dokument byl úspěšně nahrán na web.</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>Údaje jste ještě nevyplnili.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 zkopírovaná stránka</numerusform>
+            <numerusform>%1 zkopírované stránky</numerusform>
+            <numerusform>%1 zkopírovaných stránek</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (kopie)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Kopíruje se stránka %1/%2</translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>Stahování souborů</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Během exportu se objevila varování</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>Export do IWB</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>Exportovat jako IWB soubor</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje se dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export byl úspěšně dokončen.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export se nezdařil.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>Stránka</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Exportovat do formátu Sankoré</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>Exportovat jako soubor UBZ</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>Exportuje se %1 %2 z(e) %3</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje se dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export byl úspěšně dokončen.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Exportovat jako soubor PDF</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Exportovat do PDF</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje se dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export byl úspěšně dokončen.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Exportovat jako soubor PDF</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Exportovat do PDF</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>Exportuje se stránka %1 z(e) %2</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje se dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export byl úspěšně dokončen.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Stránka</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Export se nezdařill.</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Exportovat jako webová data</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Exportuje se dokument...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Export byl úspěšně dokončen.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Exportovat do webového prohlížeče</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>Přidat na stránku</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>Nastavit jako pozadí</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>Přidat do knihovny</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Informace o objektu</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Přidat do oblíbených položek</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>Sdílet</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Zpět na složku</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Odstranit z oblíbených položek</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Vytvořit novou složku</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Znovu prověřit souborový systém</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>NahranýObrázek</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Zvuky</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmy</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Obrázky</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animace</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interaktivity</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplikace</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Tvary</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Oblíbené</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Webové vyhledávače</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Koš</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Přijmout</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Zapsat název nové složky</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Nahrává se </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Uzamčeno</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Viditelné na rozšířené obrazovce</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Přejít na zdroj</translation>
+    </message>
+    <message>
+        <source>Locked</source>
+        <translation>Uzamčeno</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Viditelné na rozšířené obrazovce</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><Sem napište text></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Barva textu</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Upravitelný</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Nahrává se...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>Zamrzlé</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Změnit na nástroj</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Importuje se soubor %1...</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>Import se nezdařil.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Import souboru %1 se nezdařil.</translation>
+    </message>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Univerzální IWB soubor (</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Import byl úspěšně dokončen.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Importuje se soubor %1...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Import souboru %1 se nezdařil.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Import byl úspěšně dokončen.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Soubor obrázku (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>Import do PDF selhal.</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>Importuje se stránka %1 z(e) %2</translation>
+    </message>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Portable Document Format (*.pdf)</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>Probíhá publikování na intranet %1 %</translation>
+    </message>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Chyba při publikovaní videa na intranet (%1)</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Publikovat</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>Enter</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>No</source>
+        <translation>Ne</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Ano</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source>No</source>
+        <translation>Ne</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Ano</translation>
+    </message>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>Zadajte uživatelské jméno a heslo pro "%1" na %2</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Nepodařilo se přihlásit na proxy</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>Chyby SSL:
+
+%1
+
+%2
+
+Chcete ignorovat tyto chyby na tomto serveru?</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(kopie)</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankoré ztratil přístup k repozitáři s dokumenty "%1". Program bude ukončen, aby se předešlo poškození dat. Poslední změny možná ztratíte též.</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Ztráta repozitáře s dokumenty</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Angličtina</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Ruština</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Němčina</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francouzština</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Švýcarská francouzština</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Full</source>
+        <translation>Plná velikost</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Malá velikost</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Chyba při nahrávaní podcastu (%1)</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Žádný encoder podcastu není dostupný...</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Publikovat na Youtube</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Střední velikost</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>ve složce %1</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Část %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Podcast vytvořen %1</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Žádný zvukový záznam</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Publikovat na intranetu</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>na vaši pracovní plochu...</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Výchozí vstupní audio zařízení</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore Cast</translation>
+    </message>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Nepodařilo se spustit encoder...</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>verze: </translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>Zvýrazňovač je citlivý na tlak</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Password:</source>
+        <translation>Heslo:</translation>
+    </message>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Přihlášení na proxy</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Uživatelské jméno:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Description:</source>
+        <translation>Popis:</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Název:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Publikovat</translation>
+    </message>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Publikovat dokument na webu</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Moje filmy</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Učitel</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Student</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Sem napište úkol ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>Sem upusťte multimédia ...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Sem napište titulek...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Sem vložte titulek odkazu...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Sem napište titulek ...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Sem napište komentář ...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Přidat akci</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Přidat multimédia</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Přidat odkaz</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Stránka %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Sem napište titulek relace ...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Autor</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Sem napište autory ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Cíl(e)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Sem napište cíl...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Indexace zdrojů</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Klíčová slova:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Sem napište klíčová slova ...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Úroveň:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Témata:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Typ:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Licence</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Attribution CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Public domain</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Copyright</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>Vytvořeno:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Aktualizováno:</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Úvodní stránka</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Stránka %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>%1 vytvořených miniatur...</translation>
+    </message>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>Vytváří se miniatury obrázků ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Mask</source>
+        <translation>Clona</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Baterka</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Pravítko</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Trojúhelník</translation>
+    </message>
+    <message>
+        <source>Compass</source>
+        <translation>Kružítko</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Úhloměr</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Lupa</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Aristo</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>Whole page</source>
+        <translation>Celá stránka</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Aktualizace dokumentu</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Prosím, počkejte, proces nahrávání brzy začne...</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>Aktualizace proběhla úspěšně!
+Znovu spusťte aplikaci, abyste mohli pracovat s aktualizovanými dokumenty.</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Procházet</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Vyberte složku na zálohu</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation> soubory je nutné aktualizovat.</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Aktualizovat</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Během aktualizace se vyskytla chyba. Soubory to neovlivnilo.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Výsledky aktualizace souborů</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Umístění zálohy: </translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>Aktualizuje se soubor</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Připomenout později</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>Nahrává se...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Publikovat dokument na webu Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 vyvolané (metoda = %1, stav = %2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Přihlášení na YouTube selhalo.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>Chyba při nahrávaní videa na YouTube (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>Probíhá nahrávaní na YouTube %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Music</source>
+        <translation>Hudba</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Lidé a blogy</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>Neziskovky a aktivisti</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Komedie</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Hry</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Sport</translation>
+    </message>
+    <message>
+        <source>Upload</source>
+        <translation>Nahrát</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Věda a technika</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Návody a styl</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>Vzdělávání</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>Zábava</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Cestování a události</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Zprávy a politika</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Mazlíčci a jiná zvířata</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Nákladní a osobní auta</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>Nejsou žádné dokumenty, které by se mohly importovat</translation>
+    </message>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Importovat staré dokumenty Uniboard/Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Vymazat</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>KB</source>
+        <translation>kB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>bytů</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>– zbývá %4 %5 </translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>minut(y)</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Chyba při otevírání uloženého souboru: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>sekund</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Chyba při ukládání: %1</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>Stahování zrušeno: %1</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 z(o) %2 – zastaveno</translation>
+    </message>
+    <message>
+        <source>Save File</source>
+        <translation>Uložit soubor</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 z(e) %2 (%3/sek) %4</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Chyba sítě: %1</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>?</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation>1 stahování</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 stahování</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Adresa</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 položek</translation>
+    </message>
+    <message>
+        <source>Earlier Today</source>
+        <translation>dnes brzy ráno</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Obnovit všechny karty</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Obnovit kartu</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Duplikovat kartu</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>&Zavřít kartu</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>Zavřít &ostaní karty</translation>
+    </message>
+    <message>
+        <source>New &Tab</source>
+        <translation>Nová &karta</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>(Untitled)</source>
+        <translation>(Bez názvu)</translation>
+    </message>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Nedávno zavřené karty</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Historie vyhledávání</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Vyhledat</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>Žádná historie vyhledávání</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Vymazat historii vyhledávání</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>Stáhnot PDF dokument: dáte přednost stažení PDF souboru anebo ho přidáte do aktuálního dokumentu Sankoré?</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Přidat do aktuálního dokumentu</translation>
+    </message>
+    <message>
+        <source>Download</source>
+        <translation>Stáhnout</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>Chyba při nahrávání stránky: %1</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Otevřít v nové kartě</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Title</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>Uživatelské jméno na YouTube</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>Heslo na YouTube</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Kategorie</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Popis</translation>
+    </message>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Publikovat podcast na YouTube</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Klíčová slova</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Kliknutím na "Upload" (Nahrať) potvrdzujete, že máte všetky práva k materiálu alebo že máte písomný súhlas vlastníka týchto práv na zverejnenie materiálu na sieti YouTube a že materiál je v súlade s podmienkami využívania služieb siete YouTube, ktorých aktuálne znenie sa nachádza na adrese  </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Fine</source>
+        <translation>Tenká</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Střední</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Široká</translation>
+    </message>
+    <message>
+        <source>Opacity</source>
+        <translation>Průhlednost</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Šířka čáry</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>Na světlém pozadí</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>Pero je citlivé na tlak</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>Na tmavém pozadí</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Title</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autor</translation>
+    </message>
+    <message>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Popis</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Title</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>Připojit stáhnutelný soubor uniboard (UBZ)</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Připojit stáhnutelnou verzi v PDF</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Autor</translation>
+    </message>
+    <message>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Pozor! V tomto dokumentu je video, které se na webu nezobrazí správně</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Popis</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Dokumenty Uniboard</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Pen</source>
+        <translation>Pero</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>O programu</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Vodorovná</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Zobrazit text pod tlačítkem</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Zobrazit stránku v externím prohlížeči</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open Sankoré</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Výchozí nastavení</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>Síť</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Je umístěný dole (doporučeno pro interaktivní tabule)</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Zvýrazňovač</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Internet</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Je umístěný na vrchu (doporučeno pro tablety)</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSl</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Virtuální klávesnice</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>Domovská stránka:</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Při spuštění programu vyhledat aktualizace</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Aktualizace programu</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Velikost tlačítka klávesnice:</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Paleta pro stylus</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Zobrazit</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Panel nástrojů</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Svislá</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Předvolby</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>verze:...</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Licence</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Víceobrazovkový režim</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Zobrazit obsah interní webové stránky na další obrazovce či dataprojektoru</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Vyměnit ovládací obrazovku za obrazovku pohledu</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Mód</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Mód začne na:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Tabuli</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Ploše</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Proxy Uživatel:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Heslo:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation type="obsolete">Planète Sankoré ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Uživatel:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Heslo:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Zásluhy</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Přenést obsah ve flashi</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Vyberte flash, který chcete přenést</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>about:blank</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Název aplikace</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Vytvořit aplikaci</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_da.ts b/Sankore-3.1/resources/i18n/sankore_da.ts
index f1c4506..b0af95f 100644
--- a/Sankore-3.1/resources/i18n/sankore_da.ts
+++ b/Sankore-3.1/resources/i18n/sankore_da.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="da_DK">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,60 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Forlad Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Editor for Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Vis Widgets Editor for Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Skjul Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Skjul programmet Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importer Unibord-dokumenter</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importer ældre version af Sankoré eller Uniboard-dokumenter</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translatorcomment>Gruppér enheder</translatorcomment>
+        <translation>Group items</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Afspil</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagér med elementer</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Slet baggrund</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Fjern baggrunden</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Gruppér</translation>
     </message>
 </context>
 <context>
@@ -849,25 +866,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Papirkurv</translation>
+        <source>Element ID = </source>
+        <translation>Element-ID = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Hjem</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Indholdet understøttes ikke i destinationsformatet.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Kan ikke indlæse indhold</translation>
+        <source>Remove Page</source>
+        <translation>Fjern side</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Indlæser...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Er du sikker på, at du vil fjerne 1 side fra det valgte dokument'%0'?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +942,26 @@
         <source>All Supported (%1)</source>
         <translation>Alle understøttede (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Slet side %1 fra dokumentet</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Side %1 er slettet</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Tilføjelse af fil mislykkedes: Fejl ved kopiering af fil</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Gruppér</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Opdel gruppe</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +969,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Fejl under tilføjelse af billede til bibliotek</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>HentetBillede</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +1000,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Vis Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Klip del af skærmen</translation>
     </message>
@@ -987,6 +1019,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Vis skrivebord på sekundær skærm</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Vis Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1111,6 @@
         <translation>Importer alle billeder fra mappe</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Mappen indeholder ikke nogen billedfiler!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Slet</translation>
     </message>
@@ -1112,10 +1144,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>Er du sikker på, at du vil fjerne %n side fra det valgte dokument '%1'?</numerusform>
+            <numerusform>Er du sikker på, at du vil fjerne %n sider fra det valgte dokument '%1'?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titelside</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Mappen indeholder ikke nogen billedfiler</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Unavngivne dokumenter</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1189,20 @@
         <translation>Fil %1 gemt</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importerer side %1 af %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Indsætter side %1 af %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Import gennemført.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Import af fil %1 gennemført.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Fejlpåhæftet billeddata, springer filen over %1</translation>
+        <source>Importing file %1</source>
+        <translation>Importer fil %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1211,10 @@
         <source>Page %0</source>
         <translation>Side %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titelside</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,8 +1259,9 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 side kopieret</numerusform>
+            <numerusform>%1 sider kopieret</numerusform>
         </translation>
     </message>
 </context>
@@ -1211,34 +1269,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Downloader filer</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Annuller</translation>
+        <translation>Annuller</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Advarsler under eksportering blev vist</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Eksporter til IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Eksporter som IWB-fil</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Eksporterer dokument...</translation>
+        <translation>Eksporterer dokument...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Eksport gennemført.</translation>
+        <translation>Eksport gennemført.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Eksport mislykkedes.</translation>
+        <translation>Eksport mislykkedes.</translation>
     </message>
 </context>
 <context>
@@ -1341,68 +1406,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Tilføj til side</translation>
+        <translation>Tilføj til side</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Brug som baggrund</translation>
+        <translation>Brug som baggrund</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Tilføj til bibliotek</translation>
+        <translation>Tilføj til bibliotek</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Oplysninger om objekt</translation>
+        <translation>Objektinformationer</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Tilføj til favoritter</translation>
+        <translation>Tilføj til favoritter</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Del</translation>
+        <translation>Del</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Søg</translation>
+        <translation>Søg</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Slet</translation>
+        <translation>Slet</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Tilbage til mappe</translation>
+        <translation>Tilbage til mappe</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Fjern fra favoritter</translation>
+        <translation>Fjern fra favoritter</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Opret ny mappe</translation>
+        <translation>Opret ny mappe</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Gennemsøg filsystem igen</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">ImporteretBillede</translation>
+        <translation>ImporteretBillede</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Lydfiler</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Film</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Billeder</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animationer</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interaktiviteter</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Applikationer</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Former</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoritter</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Websøgning</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papirkurv</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepter</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuller</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Indtast et nyt mappenavn</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Indlæser</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">LÃ¥st</translation>
+        <translation>LÃ¥st</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Synlig på udvidet skærm</translation>
+        <translation>Synlig på udvidet skærm</translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1566,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan redigeres</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Indlæser...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1633,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1642,6 @@
         <source>Image Format (</source>
         <translation>Billedformat (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Import af billede mislykkedes.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Import af billede gennemført.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1657,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Importerer side %1 af %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Import at PDF gennemført.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,121 +1680,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Tilføj til favoritter</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Del</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Søg</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Slet</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Tilbage til mappe</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Fjern fra favoritter</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Opret ny mappe</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Tilføj til side</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Brug som baggrund</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Tilføj til bibliotek</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Oplysninger om objekt</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>Tilføjet 1 billede til bibliotek</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Lydiler</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Film</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Billeder</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Former</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applikationer</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favorit</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Opretter miniaturebillede for %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Tilføjelse til side mislykkedes for enhed %1.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interaktiviteter</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>ImporteretBillede</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animationer</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1699,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Luk</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1715,37 +1741,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Tilføj ny mappe</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Navn på ny mappe:</translation>
+        <source>(copy)</source>
+        <translation>(kopier)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Tilføj</translation>
+        <source>Document Repository Loss</source>
+        <translation>Tab af dokumentdepot</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Annuller</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore har mistet adgangen til dokumentdepotet '%1'. Desværre må applikationen lukke ned for at undgå, at data mistes. De seneste ændringer kan være gået tabt.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(kopier)</translation>
+        <source>English</source>
+        <translation>Engelsk</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Tab af dokumentdepot</translation>
+        <source>Russian</source>
+        <translation>Russisk</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore har mistet adgangen til dokumentdepotet '%1'. Desværre må applikationen lukke ned for at undgå, at data mistes. De seneste ændringer kan være gået tabt.</translation>
+        <source>German</source>
+        <translation>Tysk</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Fransk</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Schweizisk Fransk</translation>
     </message>
 </context>
 <context>
@@ -1859,14 +1889,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Ikke navngivne dokumenter</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Papirkurv</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mine Film</translation>
     </message>
@@ -1875,33 +1897,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Lærer</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Elev</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast opgave her ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Slip medie her ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast titel her ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indsæt linktitel her...</translation>
     </message>
 </context>
 <context>
@@ -1915,131 +1937,137 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast titel her ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast kommentar her ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Tilføj en handling</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Tilføj et medie</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Tilføj et link</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Side: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast sessiontitel her ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Forfatter(e)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast forfattere her ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>MÃ¥l</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Indtast mål her...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Resourceindeksering</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nøgleord:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Indtast nøgleord her ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Niveau:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Emne:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Type:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licens</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Chose not to translate. Please advise.</translatorcomment>
+        <translation>Attribution CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Chose not to translate. Please advise</translatorcomment>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Chose not to translate. Please advise</translatorcomment>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Chose not to translate. Please advise</translatorcomment>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Chose not to translate. Please advise</translatorcomment>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Chose not to translate. Please advise</translatorcomment>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Offentlig ejendom</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Copyright</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Oprettet:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Opdateret:</translation>
     </message>
     <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Titelside</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Side: %0</translation>
     </message>
 </context>
 <context>
@@ -2083,6 +2111,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2145,14 +2177,7 @@ Genstart venligst applikationen for at få adgang til de opdaterede dokumenter.<
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>PÃ¥mind mig senere</translation>
     </message>
 </context>
 <context>
@@ -2190,6 +2215,14 @@ Genstart venligst applikationen for at få adgang til de opdaterede dokumenter.<
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Upload til YouTube i gang %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2265,11 +2298,11 @@ Genstart venligst applikationen for at få adgang til de opdaterede dokumenter.<
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importer ældre Uniboard-/Sankore-dokumenter</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Der findes ingen dokumenter, der skal importeres</translation>
     </message>
 </context>
 <context>
@@ -2726,303 +2759,1093 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Vis indhold fra intern webside på sekundær skærm eller projektor</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Multivisning</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Skift mellem kontrolvisning og almindelig visning</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Tilstand</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Starttilstand:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Tavle</translation>
+        <translation>Tavle</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrivebord</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy-bruger:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Adgangskode:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>Planet Sankoré-ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Bruger:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Adgangskode:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Anerkendelse</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_de.ts b/Sankore-3.1/resources/i18n/sankore_de.ts
index 13d4541..2afb6cc 100644
--- a/Sankore-3.1/resources/i18n/sankore_de.ts
+++ b/Sankore-3.1/resources/i18n/sankore_de.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="de_DE">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré verlassen</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré Editor</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré Widgets Editor öffnen</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré ausblenden</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré ausblenden</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Uniboard-Dokumente importieren</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Alte Sankore oder Uniboard Dokumente importieren</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Objekte gruppieren</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Abspielen</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Mit Objekten interagieren</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Hintergrund löschen</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Hintergrund entfernen</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished">Gruppieren</translation>
     </message>
 </context>
 <context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Papierkorb</translation>
+        <source>Element ID = </source>
+        <translation type="unfinished">Element ID = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Startseite</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation type="unfinished">Inhalt wird im Zielformat nicht unterstützt.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Inhalt kann nicht geladen werden</translation>
+        <source>Remove Page</source>
+        <translation type="unfinished">Seite entfernen</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Lädt...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation type="unfinished">Wollen Sie wirklich 1 Seite des gewählten Dokuments '%0' entfernen?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>Alle unterstützt (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished">Seite %1 des Dokuments löschen</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished">Seite %1 gelöscht</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished">Dokument hinzufügen fehlgeschlagen: Fehler beim Kopieren</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished">Gruppieren</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished">Gruppierung auflösen</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Fehler beim Hinzufügen des Bildes zur Bibliothek</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>erfasstes Bild</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Uniboard anzeigen</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Teil des Bildschirms erfassen</translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Desktop auf zweitem Bildschirm anzeigen</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished">Open-Sankore anzeigen</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation>Alle Bilder aus dem Ordner importieren</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Ordner enthält keine Bilddateien!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
@@ -1112,10 +1143,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>Wollen Sie wirklich %n Seite vom ausgewählten Dokument '%1' entfernen?</numerusform>
+            <numerusform>Wollen Sie wirklich %n Seiten vom ausgewählten Dokument '%1' entfernen?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titelseite</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished">Das Verzeichnis enthält keine Bilder</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished">Unbenanntes Dokument</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1188,20 @@
         <translation>Datei %1 gespeichert</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Seite %1 von %2 wird importiert</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished">Hinzufügen der Seite %1 von %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished">Import erfolgreich.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation type="unfinished">Import des Dokuments %1 erfolgreich.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Fehlerhafte Bilddateien, Datei %1 überspringen</translation>
+        <source>Importing file %1</source>
+        <translation type="unfinished">Importieren von %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1210,10 @@
         <source>Page %0</source>
         <translation>Seite %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titelseite</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,8 +1258,9 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 Seite kopiert</numerusform>
+            <numerusform>%1 Seiten kopiert</numerusform>
         </translation>
     </message>
 </context>
@@ -1211,34 +1268,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Dateien werden heruntergeladen</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Abbrechen</translation>
+        <translation>Abbrechen</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished">Warnungen beim Exportieren aufgetreten</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportieren nach IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportieren als IWB-Datei</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Dokument wird exportiert...</translation>
+        <translation>Dokument wird exportiert...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Export erfolgreich.</translation>
+        <translation>Export erfolgreich.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Export fehlgeschlagen.</translation>
+        <translation>Export fehlgeschlagen.</translation>
     </message>
 </context>
 <context>
@@ -1341,57 +1405,123 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Zur Seite hinzufügen</translation>
+        <translation>Zur Seite hinzufügen</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Als Hintergrund festlegen</translation>
+        <translation>Als Hintergrund festlegen</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Zur Bibliothek hinzufügen</translation>
+        <translation>Zur Bibliothek hinzufügen</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Objektinformationen</translation>
+        <translation>Objektinformationen</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Zu Favoriten hinzufügen</translation>
+        <translation>Zu Favoriten hinzufügen</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Teilen</translation>
+        <translation>Teilen</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Suchen</translation>
+        <translation>Suchen</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Löschen</translation>
+        <translation>Löschen</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Zurück zum Ordner</translation>
+        <translation>Zurück zum Ordner</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Aus Favoritenliste entfernen</translation>
+        <translation>Aus Favoritenliste entfernen</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Neuen Ordner erstellen</translation>
+        <translation>Neuen Ordner erstellen</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Dateisystem neu einlesen</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Importiertes Bild</translation>
+        <translation>Importiertes Bild</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation type="unfinished">Audiodateien</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation type="unfinished">Filme</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation type="unfinished">Bilder</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation type="unfinished">Animationen</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation type="unfinished">Interaktivitäten</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation type="unfinished">Anwendungen</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation type="unfinished">Formen</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation type="unfinished">Favoriten</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation type="unfinished">Websuche</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">Papierkorb</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">Akzeptieren</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Abbrechen</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation type="unfinished">Geben Sie den Namen des Verzeichnisses ein</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation type="unfinished">Laden </translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1565,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Editierbar</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation type="unfinished">Lädt...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1632,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1641,6 @@
         <source>Image Format (</source>
         <translation>Bildformat (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Bild-Import fehlgeschlagen.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Bild-Import erfolgreich.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1656,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Seite %1 von %2 wird importiert</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>PDF-Import erfolgreich.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,121 +1679,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Zu Favoriten hinzufügen</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Teilen</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Suchen</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Löschen</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Zurück zum Ordner</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Aus Favoritenliste entfernen</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Neuen Ordner erstellen</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Zur Seite hinzufügen</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Als Hintergrund festlegen</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Zur Bibliothek hinzufügen</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Objektinformationen</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>1 Bild wurde der Bibliothek hinzugefügt</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Audiodateien</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Filme</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Bilder</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Formen</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Anwendungen</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favorit</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Bild in Miniaturansicht für %1 wird erstellt.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Objekt %1 konnte der Seite nicht hinzugefügt werden.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interaktivitäten</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Importiertes Bild</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animationen</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Eingabe</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1698,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">Schließen</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1715,37 +1740,41 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Neuen Ordner hinzufügen</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Neuer Ordnername:</translation>
+        <source>(copy)</source>
+        <translation>(Kopie)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Hinzufügen</translation>
+        <source>Document Repository Loss</source>
+        <translation>Verlust des Dokumentenarchivs</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Abbrechen</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore hat den Zugang zum Dokumentenarchiv '%1' verloren. Die Anwendung muss leider beendet werden, um Datenkorruption zu vermeiden. Der Verlust kürzlich vorgenommener Änderungen ist möglich.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(Kopie)</translation>
+        <source>English</source>
+        <translation>englisch</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Verlust des Dokumentenarchivs</translation>
+        <source>Russian</source>
+        <translation>russisch</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore hat den Zugang zum Dokumentenarchiv '%1' verloren. Die Anwendung muss leider beendet werden, um Datenkorruption zu vermeiden. Der Verlust kürzlich vorgenommener Änderungen ist möglich.</translation>
+        <source>German</source>
+        <translation>deutsch</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>französisch</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>französisch (Schweiz)</translation>
     </message>
 </context>
 <context>
@@ -1859,14 +1888,6 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Unbenanntes Dokument</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Papierkorb</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Meine Filme</translation>
     </message>
@@ -1875,33 +1896,33 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Lehrer</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Student</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Aufgabe eingeben...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Mediendatei ablegen...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Titel eingeben...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Linktitel eingeben...</translation>
     </message>
 </context>
 <context>
@@ -1915,131 +1936,139 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Titel eingeben...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Kommentar eingeben...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Aktion hinzufügen</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Medium hinzufügen</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Link hinzufügen</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Seite: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Sessionstitel eingeben...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor(en)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Autoren eingeben...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Ziel(e)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Hier Ziele eingeben...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Indexierung der Ressourcen</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Stichwörter:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Hier Stichwörter eingeben...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Schwierigkeitsgrad:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Themen:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Lizenz</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Erstellt am:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Aktualisiert am: </translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Titelseite</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Seite: %0</translation>
     </message>
 </context>
 <context>
@@ -2145,14 +2174,7 @@ Bitte starten Sie die Anwendung erneut, um auf die aktualisierten Dokumente zugr
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Internet</translation>
+        <translation>Später erinnern</translation>
     </message>
 </context>
 <context>
@@ -2190,6 +2212,14 @@ Bitte starten Sie die Anwendung erneut, um auf die aktualisierten Dokumente zugr
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Hochladen auf YouTube läuft %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2265,11 +2295,11 @@ Bitte starten Sie die Anwendung erneut, um auf die aktualisierten Dokumente zugr
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Alte Uniboard/Sankore Dokumente importieren</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Es gibt keine Dokumente zu importieren</translation>
     </message>
 </context>
 <context>
@@ -2507,6 +2537,14 @@ Bitte starten Sie die Anwendung erneut, um auf die aktualisierten Dokumente zugr
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Durch Klicken auf 'Upload', bestätigen Sie die nötigen Rechte zum Veröffentlichen des Inhalts zu besitzen und die allgemeinen Nutzungsbedingungen von YouTube zu respektieren.</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2726,278 +2764,531 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Inhalt der internen Webseite auf Zweit-Bildschirm oder Projektor anzeigen</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Mehrfach-Bildschirm</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Kontroll- und Anzeige-Bildschirm vertauschen</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Betriebsart</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Starten in Betriebsart:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Board</translation>
+        <translation>Board</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Schreibtisch</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy Benutzer:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Passwort:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Planète Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Benutzer:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Passwort:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translatorcomment>do not translate!</translatorcomment>
+        <translation></translation>
     </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3005,12 +3296,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3018,10 +3308,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_el.ts b/Sankore-3.1/resources/i18n/sankore_el.ts
new file mode 100644
index 0000000..30ceccb
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_el.ts
@@ -0,0 +1,3671 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="el_GR">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Κάντε κλικ για να επιστρέψετε στην εφαρμογη</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>Λήψεις</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Καθαρισμος</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>Αντικείμενα</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Σχήμα</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Όνομα αρχειου</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Προσπάθησε πάλι</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Διακοπή</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Άνοιγμα</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Δημοσίευση βίντεο στο YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Τίτλος</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Περιγραφή</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Δημιουργός</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>Εφαρμογή</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Διαδίκτυο</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Έγγραφα</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Βοήθημα</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Εργαλειοθήκη</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Παρασκήνια</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Αλλαγή παρασκηνίου</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Αναίρεση</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Ακύρωση αναίρεσης</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Προηγούμενη</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Προηγούμενη σελίδα</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>PgUp</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Επόμενη</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Επόμενη σελίδα</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>PgDown</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Διαχείριση εγγράφων</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Περιήγηση διαδικτύου</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Έξοδος</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Πίσω</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Αριστερά</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Μπροστά</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Δεξιά</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Επαναφόρτωση</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Αρχικη</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Σελιδοδείκτες</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>Σελιδοδείκτης</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Σβήσιμο</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Ρυθμίσεις</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Εμφάνιση Επιφάνειας Εργασίας</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>Μεγέθυνση</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>Σμίκρυνση</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Νέος φάκελος</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Νέο έγγραφο</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>Εισαγωγή</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Εξαγωγή</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Άνοιγμα στην Εφαρμογή</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Αντίγραφο</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Διαγραφή</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Del</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Προσθήκη στο έγγραφο εργασίας</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Προσθήκη του επιλεγμένου περιεχομένου στο ανοιχτό έγγραφο</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>Προσθήκη</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Μετονομασία</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Εργαλεία</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Πολλαπλές οθόνες</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>Ευρεία οθόνη (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Κανονική οθόνη (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Προσαρμοσμένο μέγεθος οθόνης</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Διακοπή φόρτωσης</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Αποκοπή</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Αντιγραφή</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Επικόλληση</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Αναστολή λειτουργίας</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Εικονικό πληκτρολόγιο</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Ανοιχτόχρωμο παρασκήνιο</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Ανοιχτόχρωμο</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Ανοιχτόχρωμο παρασκήνιο πλέγματος</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Σκουρόχρωμο παρασκήνιο</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Σκουρόχρωμο</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Σκουρόχρωμο παρασκήνιο πλέγματος</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Βίντεο</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Εγγραφή</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Έναρξη εγγραφής οθόνης</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Σβήσιμο αντικειμένων</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Σβήσιμο σχολίων</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Καθαρισμός σελίδας</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Πένα</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Άνοιγμα των βοηθημάτων</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Έλεγχος για ενημερώσεις</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Γόμα</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Μαρκαδόρος</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Επιλογέας</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>Χέρι</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>Μεγέθυνση</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Σμίκρυνση</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Γραμμή</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Λεπτή γραμμή</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Μέτρια γραμμή</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Χοντρή γραμμή</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Μικρή σβήστρα</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>Μέτρια σβήστρα</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Μεγάλη σβήστρα</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Χρώμα</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Επαναφόρτωση τρέχουσας σελίδας</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Φόρτωση αρχικής σελίδας</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Εμφάνιση σελιδοδεικτών</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Προσθήκη σελιδοδείκτη</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Εμφάνιση Εφαρμογής</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>Σβήσιμο περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Εμφάνιση ρυθμίσεων</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Εμφάνιση βιβλιοθήκης</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Εμφάνιση Επιφάνειας Εργασίας του υπολογιστή</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Δημουργία νέου φακέλου</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Δημιουργία νέου εγγράφου</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Εισαγωγή εγγράφου</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Εξαγωγή εγγράφου</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Άνοιγμα σελίδας στην Εφαρμογή</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Δημιουργία αντιγράφου του επιλεγμένου περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Διαγραφή επιλεγμένου περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>Προσθήκη περιεχομένου στο έγγραφο</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>Μετονομασία περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Εμφάνιση εργαλείων</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Χρήση εγγράφου ευρείας οθόνης (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Χρήση εγγράφου κανονικής οθόνης (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Χρήση εγγράφου προσαρμοσμένου μεγέθους</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Διακοπή φόρτωσης ιστοσελίδας</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Παρουσίαση σε αναστολή</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Εμφάνιση εικονικού πληκτρολογίου</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Εγγραφή της παρουσίασης σε βίντεο</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Σβήσιμο όλων των αντικειμένων</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Σβήσιμο όλων των σχολιασμών</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Καθαρισμός όλων των αντικειμένων</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Σχολιασμός εγγράφου</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Σβήσιμο σχολιασμού</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Επισήμανση</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Κύλιση σελίδας</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Δείκτης λέιζερ</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Εικονικός δείκτης λέιζερ</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Σχεδίαση γραμμών</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Κείμενο</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Σύνταξη κειμένου</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Λήψη στιγμιότυπου</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Προσθήκη στην τρέχουσα σελίδα</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Προσθήκη αντικειμένου στην τρέχουσα σελίδα</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Προσθήκη σε νέα σελίδα</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Προσθήκη αντικειμένου σε νέα σελίδα</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Προσθήκη στη βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Προσθήκη αντικειμένου στη βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Σελίδες</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Δημιουργία νέας σελίδας</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Νέα σελίδα</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Δημιουργία αντιγράφου της σελίδας</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Δημιουργία αντιγράφου της τρέχουσας σελίδας</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Εισαγωγή σελίδας</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Εισαγωγή εξωτερικής σελίδας</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Παύση</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Παύση εγγραφής βίντεο</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Ρύθμιση βίντεο</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Ρύθμιση εγγραφής βίντεο</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Λήψη αντικειμένου flash</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>Λήψη περιεχομένου ενός αντικειμένου flash</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Λήψη Διαδικτύου</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Λήψη διαδικτυακού περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Λήψη στιγμιότυπου μέρους της οθόνης</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Προσαρμοσμένη λήψη στιγμιότυπου</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Λήψη στιγμιότυπου ενός παραθύρου</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>Ενσωμάτωση διαδικτυακού περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>Λήψη στιγμιότυπου ενσωματωμένου διαδικτυακού περιεχομένου</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>Εμφάνιση κύριας οθόνης στην Εμφάνιση Οθόνης</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Σβήσιμο όλων των σχολιασμών</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>Εισαγωγή προσομοίωσης eduMedia</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Λήψη στιγμιότυπου παραθύρου</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Παρουσίαση στην Εμφάνιση</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Έξοδος από το Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Επεξεργαστής Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Εμφάνιση επεξεργαστή γραφικών συστατικών του Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Απόκρυψη του Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Απόκρυψη της εφαρμογής Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Εισαγωγή εγγράφων Uniboard</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Εισαγωγή παλαιών εγγράφων Sankore ή Uniboard</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Ομαδοποίηση αντικειμένων</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>Αναπαραγωγή</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Σβήσιμο παρασκηνίου</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Αφαίρεση παρασκηνίου</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Ομάδα</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Απαιτείται πιστοποίηση</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Όνομα χρήστη:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Κωδικός πρόσβασης:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Πιστοποίηση μέσω εξουσιοδοτημένου διακομιστή</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Σύνδεση στον εξουσιοδοτημένο διακομιστή</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Όνομα χρήστη:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Κωδικός πρόσβασης:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Αποθήκευση στοιχείων σύνδεσης για μελλοντική χρήση</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>Αναγνωριστικό στοιχείου=</translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>Η μορφή του περιεχομένου δεν υποστηριζεται στον προορισμό</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Αφαίρεση σελίδας</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Είστε βέβαιος ότι θέλετε να αφαιρέσετε μια σελίδα από το επιλεγμένο έγγραφο '%0'?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>Μέγεθος σελίδας</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Βίντεο</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Διαδίκτυο</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>Υπάρχουν νέες ενημερώσεις διαθέσιμες. Θέλετε να μεταβείτε στην ιστοσελίδα;</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>Δεν υπάρχουν διαθέσιμες ενημερώσεις</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>Υπάρχουν νέες ενημερώσεις</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Ενημέρωση</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>Η λήψη περιεχομενου %1 απέτυχε</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>Η λήψη ολοκληρώθηκε</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Άγνωστο είδος εργαλείου %1</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Άγνωστο είδος περιεχομενου %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Προσθήκη αντικειμένου</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Όλα προστατευόμενα (%1)</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Διαγραφή της σελιδας %1 από το έγγραφο</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Η σελίδα %1 διαγράφηκε</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Η προσθήκη λειτουργίας στο αρχείο απέτυχε: σφάλμα αντιγραφής αρχείου</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Ομαδοποίηση</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Αποομαδοποίηση</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>Σφάλμα κατά την προσθήκη εικόνας στη βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Εικόνα από σύλληψη στιγμιότυπου</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Ιδιότητες κρυφής μνήμης</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Χρώμα:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Σχήμα:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>Μέγεθος:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Κλείσιμο:</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Λήψη στιγμιότυπου μέρους της οθόνης</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Λήψη στιγμιότυπου της οθόνης</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Εμφάνιση της εργαλειοθήκης</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Εμφάνιση της Εφαρμογής στη δευτερεύουσα οθόνη</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Εμφάνιση της Επιφάνειας Εργασίας στη δευτερεύουσα οθόνη</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Εμφάνιση του Open-Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>Νέος φάκελος</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Σελίδα %1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Προσθήκη φακέλου εικόνων</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Προσθήκη εικόνων</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Προσθήκη σελίδων από αρχείο</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>Δημιουργία αντιγράφου του εγγράφου %1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>Δημιουργήθηκε αντίγραφο του εγγράφου %1</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Αφαίρεση σελίδας</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>Αφαίρεση εγγράφου</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>Είστε βέβαιος ότι θέλετε να αφαιρέσετε το έγγραφο '%1';</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>Άδειασμα Κάδου Ανακύκλωσης</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>Είστε βέβαιος ότι θέλετε να αδειάσετε τον Κάδο Ανακύκλωσης;</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>Άδειασμα Κάδου Ανακύκλωσης</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>Ολοκληρώθηκε το άδειασμα του Κάδου Ανακύκλωσης</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>Αφαίρεση φακέλου</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>Είστε βέβαιος ότι θέλετε να αφαιρέσετε τον φάκελο '%1' και όλα τα περιεχόμενά του;</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>Δεν επιλέχθηκε κανένα έγγραφο!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Άνοιγμα υποστηριζόμενου αρχείου</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Εισαγωγή αρχείου %1...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Αποτυχία εισαγωγής αρχείου ... </translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Εισαγωγή όλων των εικόνων από φάκελο</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Διαγραφή</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>Κενός</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Κάδος ανακύκλωσης</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Άνοιγμα εγγράφου</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Προσθήκη όλων των εικόνων στο έγγραφο</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Όλες οι εικονες (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>Η επιλογή δεν περιέχει αρχεία εικόνας!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>Το έγγραφο '%1' έχει δημιουργηθεί με μια νεότερη έκδοση του Sankore (%2). Ανοίγοντάς το, ενδεχομένως θα χάσετε κάποιες πληροφορίες. Θέλετε να συνεχίσετε;</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>Είστε βέβαιος ότι θέλετε να αφαιρέσετε %n σελίδα από το επιλεγμένο έγγραφο '%1';</numerusform>
+            <numerusform>Είστε βέβαιος ότι θέλετε να αφαιρέσετε %n σελίδες από το επιλεγμένο έγγραφο '%1';</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Σελίδα τίτλου</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Ο φάκελος δεν περιέχει αρχεία εικόνων</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Έγγραφα χωρίς τίτλο</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>εικόνες</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>βίντεο</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>αντικείμενα</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>γραφικά συστατικά</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Όλα τα υποστηριζόμενα (%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>Το αρχείο %1 αποθηκεύτηκε</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>Εισαγωγή σελίδας %1 από %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Επιτυχημένη εισαγωγή</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Επιτυχημένη εισαγωγή του αρχείου %1 </translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Εισαγωγή αρχείου %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Σελίδα %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Σελίδα τίτλου</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Η εξαγωγή απέτυχε</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>Η εξαγωγή ακυρώθηκε ...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>Μετατροπή της σελίδας %1/%2 ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>Τα πιστοποιητικά πρέπει να μην έχουν συμπληρωθεί ακόμα.</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Φόρτωση αρχείου του Sankore στο διαδίκτυο.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>Το έγγραφο φορτώθηκε με επιτυχία στο διαδίκτυο.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Αποτυχία φόρτωσης του εγγράφου στο διαδίκτυο.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (αντιγραφή)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Αντιγραφή σελίδας %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 σελίδα αντιγράφηκε</numerusform>
+            <numerusform>%1 σελίδες αντιγράφηκαν</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>Λήψη αρχείων</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Άκυρο</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Εμφανίστηκαν προειδοποιήσεις κατά τη διάρκεια της εξαγωγής</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>Εξαγωγή σε IWB</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>Εξαγωγή ως αρχείο IWB</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Εξαγωγή εγγράφου...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Επιτυχημένη εξαγωγή</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Αποτυχημένη εξαγωγή</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>Σελίδα</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>Εξαγωγή ως αρχείο UBZ</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Εξαγωγή εγγράφου...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Επιτυχημένη εξαγωγή</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>Εξαγωγή %1 %2 από %3</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Εξαγωγή σε μορφή Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Εξαγωγή ως αρχείο PDF</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Εξαγωγή εγγράφου...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Επιτυχημένη εξαγωγή</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Εξαγωγή σε PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Εξαγωγή ως αρχείο PDF</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Εξαγωγή εγγράφου...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Επιτυχημένη εξαγωγή</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>Εξαγωγή σελίδας %1 από %2</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Εξαγωγή σε PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Σελίδα</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Εξαγωγή ως δεδομένα Web</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Εξαγωγή εγγράφου...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Επιτυχημένη εξαγωγή</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Η εξαγωγή απέτυχε</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Εξαγωγή σε περιηγητή διαδικτύου</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>Προσθήκη σε σελίδα</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>Ορισμός ως παρασκήνιο</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>Προσθήκη στη βιβλιοθήκη</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Πληροφορίες αντικειμένου</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Προσθήκη στα αγαπημένα</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>Διαμοιρασμός</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Αναζήτηση</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Διαγραφή</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Επιστροφή στον φάκελο</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Αφαίρεση από τα αγαπημένα</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Δημουργία νέου φακέλου</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Επανασάρωση συστήματος αρχείων</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>Εισηγμένη εικόνα</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Ήχοι</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Ταινίες</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Εικόνες</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Κινούμενα σχέδια</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Διαδραστικά εφαρμογίδια</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Εφαρμογές</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Σχήματα</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Αγαπημένα</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Διαδικτυακή αναζήτηση</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Κάδος ανακύκλωσης</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Αποδοχή</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Άκυρο</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Εισαγωγή νέου ονόματος φακέλου</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Φόρτωση </translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Κλειδωμένο</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Ορατό σε Εκταταμένη Οθόνη</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Κλειδωμένο</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Ορατό σε Εκταταμένη Οθόνη</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Μετάβαση στην Πηγή Περιεχομένου</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><Πληκτρολογήστε κείμενο></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Χρώμα κειμένου</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Επεξεργάσιμο</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Διαδίκτυο</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Φόρτωση...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>Παγωμένο</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Αλλαγή σε εργαλείο</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Συνηθισμένη μορφή αρχείου (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Εισαγωγή αρχείου %1...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Η εισαγωγή του αρχείου %1 απέτυχε</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Επιτυχημένη εισαγωγή</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>Αποτυχημένη εισαγωγή</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Εισαγωγή αρχείου %1...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Επιτυχημένη εισαγωγή</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Η εισαγωγή του αρχείου %1 απέτυχε</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Μορφή εικόνας (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Portable Document Format (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>Η εισαγωγή του PDF απέτυχε</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>Εισαγωγή σελίδας %1 από %2</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Σφάλμα κατά τη δημοσίευση του βίντεο στο δίκτυο (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>Δημοσίευση στο δικτυο σε εξέλιξη %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Δημοσίευση</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>Εισαγωγή</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>Ναι</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Όχι</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Εντάξει</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Κλείσιμο</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>Εισαγωγή ονόματος χρήστη και κωδικού πρόσβασης για το "%1" στο %2</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Αποτυχία καταχώρισης στον εξουσιοδοτημένο διακομιστή</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>Σφάλματα SSL:
+
+%1
+
+%2 
+
+Θέλετε να αγνοήσετε αυτά τα σφάλματα γι' αυτόν τον διακομιστή;</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Ναι</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Όχι</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(αντιγραφή)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Απώλεια αποθετηρίου του εγγράφου</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Το Sankore έχασε την πρόσβαση στο αποθετήριο του εγγράφου '%1'. Δυστυχώς η εφαρμογή θα πρέπει να κλείσει για να αποφευχθεί απώλεια δεδομένων. Επίσης, ενδεχομένως να χαθούν οι τελευταίες αλλαγές.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Αγγλικά</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Ρωσικά</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Γερμανικά</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Γαλλικά</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Γαλλικά της Ελβετίας</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Αποτυχία έναρξης του κωδικοποιητή...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Δεν υπάρχει διαθέσιμος κωδικοποιητής βίντεο...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Τμήμα %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>στην επιφάνεια εργασίας σας...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>στον φάκελο %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Ποσοστό δημιουργίας βίντεο %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Σφάλμα εγγραφής βίντεο (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Προκαθορισμένα δεδομένα εισόδου για τον ήχο</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Χωρίς εγγραφή ήχου</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Μικρό</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Μεσαίο</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Πλήρες</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Δημοσίευση στο δίκτυο</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Δημοσίευση στο Youtube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Βίντεο Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>έκδοση:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>Ο μαρκαδόρος είναι ευαίσθητος στην πίεση</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Σύνδεση στον εξουσιοδοτημένο διακομιστή</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Όνομα χρήστη:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Κωδικός πρόσβασης:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Δημοσίευση εγγράφου στο Web</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Τίτλος:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>Περιγραφή:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Δημοσίευση</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Οι ταινίες μου</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Δάσκαλος</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Μαθητής</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Πληκτρολογήστε την εργασία εδώ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>αποθέστε αρχεία μέσων εδώ...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Πληκτρολογήστε τον τίτλο εδώ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Εισαγωγή τίτλου συνδέσμου εδώ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Πληκτρολογήστε τον τίτλο εδώ...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Πληκτρολογήστε σχόλιο εδώ...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Προσθήκη ενέργειας</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Προσθήκη μέσου</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Προσθήκη συνδέσμου</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Σελίδα: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Πληκτρολογήστε τον τίτλο της συνεδρίας εδώ...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Δημιουργός(οί)</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Πληκτρολογήστε τους δημιουργούς εδώ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Στόχοι</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Πληκτρολογήστε τους στόχους εδώ...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Ευρετηρίαση</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Λέξεις κλειδιά:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Πληκτρολογήστε τις λέξεις κλειδιά εδώ...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Επίπεδο:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Θεματική περιοχή:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Είδος:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Αδειοδότηση:</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Αναφορά δημιουργού CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Αναφορά δημιουργού - Δεν επιτρέπονται παράγωγα έργα CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Αναφορά δημιουργού - Παρόμοια διανομή CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Αναφορά δημιουργού - Απαγορεύεται η εμπορική χρήση CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Αναφορά δημιουργού - Απαγορεύεται η εμπορική χρήση - Δεν επιτρέπονται παράγωγα έργα CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Αναφορά δημιουργού - Απαγορεύεται η εμπορική χρήση - Επιτρέπονται παράγωγα έργα CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Δημόσιος τομέας</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Πνευματικά δικαιώματα</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>Δημιουργήθηκε:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Ενημερώθηκε:</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Σελίδα τίτλου</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Σελίδα: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>Δημιουργία μικρογραφιών προεπισκόπησης...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>%1 μικρογραφίες δημιουργήθηκαν...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Mask</source>
+        <translation>Σκίαση οθόνης</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Χάρακας</translation>
+    </message>
+    <message>
+        <source>Compass</source>
+        <translation>Πυξίδα</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Μοιρογνωμόνιο</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Τρίγωνο</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Μεγεθυντικός φακός</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Προβολέας</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>Ολόκληρη σελίδα</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Εργαλείο ενημέρωσης εγγράφου</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>αρχεία που χρειάζονται ενημέρωση</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Διαδρομή αντιγράφου ασφαλείας:</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Περιήγηση</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Ενημέρωση</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Επιλογή φακέλου για τα αντίγραφα ασφαλείας</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>Η ενημέρωση των αρχείων ήταν επιτυχημένη!
+Παρακαλώ επανεκκινήστε την εφαρμογή για να έχετε πρόσβαση στα ενημερωμένα αρχεία.</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Συνέβη ένα σφάλμα κατά την ενημέρωση. Τα αρχεία δεν έχουν επηρεαστεί.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Αποτελέσματα ενημέρωσης των αρχείων</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>Ενημέρωση αρχείου</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Παρακαλώ περιμένετε. Η διαδικασία εισαγωγής θα ξεκινήσει σύντομα...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Υπενθύμιση αργότερα</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>Φόρτωση...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Δημοσίευση εγγράφου στο Sankore Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 κλήθηκε (μέθοδος=%1, κατάσταση=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Η πιστοποίηση του Youtube απέτυχε.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>Σφάλμα κατά τη φόρτωση του βίντεο στο Youtube (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>Φόρτωση στο Youtube σε εξέλιξη %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>Φόρτωση</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Αυτοκίνητα & Οχήματα</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>Μουσική</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Κατοικίδια & Ζώα</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Αθλήματα</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Ταξίδια & Εκδηλώσεις</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Παιχνίδια</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Κωμωδία</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Άνθρωποι & Ιστολόγια</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Νέα & Πολιτική</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>Διασκέδαση - ψυχαγωγία</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>Εκπαίδευση</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Τεχνικές & Στιλ</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>Μη κερδοσκοπικές δραστηριότητες & Ακτιβισμός</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Επιστήμη & Τεχνολογία</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Εισαγωγή παλαιών αρχείων Uniboard/Sankore</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>Δεν υπάρχουν αρχεία για εισαγωγή</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Καθαρισμός</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>Αποθήκευση αρχείου</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>Η λήψη ακυρώθηκε: %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Σφάλμα κατά το άνοιγμα του αποθηκευμένου αρχείου: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Σφάλμα κατά την αποθήκευση:%1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Σφάλμα στο δίκτυο: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>δευτερόλεπτα</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>λεπτά</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>- %4 %5 απομένουν</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 από %2 (%3/δευτ) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 από %2 - Διακόπηκε</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>bytes</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation>1 Λήψη</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 Λήψεις</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Τίτλος</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Διεύθυνση</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>Νωρίτερα σήμερα</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 αντικείμενα</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Αναζήτηση</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>Νέο & Καρτέλα</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Κλωνοποίηση καρτέλας</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>&Κλείσιμο καρτέλας</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>Κλείσιμο & Άλλες καρτέλες</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Επαναφόρτωση καρτέλας</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Επαναφόρτωση όλων των καρτελών</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Πρόσφατα κλεισμένες καρτέλες</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>(Χωρίς τίτλο)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>Αναζήτηση</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>Δεν υπάρχουν πρόσφατες αναζητήσεις</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Πρόσφατες αναζητήσεις</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Καθαρισμός πρόσφατων αναζητήσεων</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>Λήψη</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Προσθήκη στο τρέχον έγγραφο</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>Σφάλμα φόρτωσης σελίδας: %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>Λήψη αρχείου PDF: επιθυμείτε τη λήψη του αρχείου ή την προσθήκη του στο τρέχον έγγραφο του Sankore;</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Άνοιγμα σε νέα καρτέλα</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Δημοσίευση βίντεο στο YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Τίτλος</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Περιγραφή</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Λέξεις κλειδιά</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Κατηγορία</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>Όνομα χρήστη στο Youtube</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>Κωδικός πρόσβασης στο Youtube</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Κάνοντας κλικ στο πλήκτρο 'Φόρτωση', βεβαιώνετε ότι είστε κάτοχος των δικαιωμάτων του περιεχομένου ή ότι έχετε εξουσιοδοτηθεί από τον ιδιοκτήτη του να το δημοσιεύσετε στο Youtube, ή διαφορετικά συμφωνείτε με τους Όρους Παροχής Υπηρεσιών του Youtube που βρίσκονται στη διεύθυνση </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>Διαφάνεια</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>Σε φωτεινό παρασκήνιο</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>Σε σκοτεινό παρασκήνιο</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Πλάτος γραμμής</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Μέτριο</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Δυνατό</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>Κανονικό</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>Η πένα είναι ευαίσθητη στην πίεση</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Διάλογος</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Τίτλος</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Δημιουργός</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Περιγραφή</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Διάλογος</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Τίτλος</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Δημιουργός</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Περιγραφή</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Επισύναψη έκδοσης PDF που μπορεί να ληφθεί</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>Επισύναψη αρχείου (UBZ) Uniboard που μπορεί να ληφθεί</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Προσοχή: Αυτό το έγγραφο περιέχει βίντεο, το οποίο δεν εμφανίζεται σωστά στο διαδικτυο.</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Έγγραφα Uniboard</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Ρυθμίσεις</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Προκαθορισμένες ρυθμίσεις</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Κλείσιμο</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Εμφάνιση</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Εμφάνιση της σελίδας με εξωτερικό περιηγητή</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Εικονικό πληκτρολόγιο</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Μέγεθος πλήκτρων πληκτρολογίου:</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Τοποθετημένη στο επάνω μέρος (ενδείκνυται για tablets)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Τοποθετημένη στο κάτω μέρος (ενδείκνυται για διαδραστικούς πίνακες)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Εμφάνιση κειμένου κάτω από το πλήκτρο</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Παλέτα εργαλείων</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Οριζόντια</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Κάθετα</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>Σχετικά</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Ενημέρωση λογισμικού</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Έλεγχος για ενημέρωση του λογισμικού κατά το άνοιγμα της εφαρμογής</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Διαδίκτυο</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>Αρχική σελίδα</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Εργαλειοθήκη</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Πένα</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Μαρκαδόρος</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>έκδοση: ...</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Άδειες</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSl</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>Δίκτυο</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Εμφάνιση περιεχομένου εσωτερικής ιστοσελίδας στη δευτερεύουσα οθόνη ή τον προτζέκτορα</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Πολλαπλές οθόνες</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Αλλαγή εμφάνισης ελέγχου και εμφάνισης προβολής</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Λειτουργία</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Λειτουργια κατά την έναρξη:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Εφαρμογή</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Επιφάνεια εργασίας</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Χρήστης εξουσιοδοτημένου διακομιστή:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Κωδικός πρόσβασης:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation type="obsolete">Αναγνωριστικό για το Planète Sankoré</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Χρήστης:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Κωδικός πρόσβασης:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>ΓΕΝΙΚΗ ΑΔΕΙΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ GNU
+
+				Έκδοση 2, Ιούνιος 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Επιτρέπεται σε όλους η αντιγραφή και διανομή αυτούσιων αντιγράφων
+ αυτού του εγγράφου άδειας χρήσης, χωρίς ωστόσο να επιτρέπεται η αλλοίωσή του.
+
+					Εισαγωγή
+
+  Οι άδειες χρήσης των περισσότερων προγραμμάτων συντάσσονται για να περιορίσουν την ελευθερία σας να τα μοιράζεστε με άλλους και να τα επεξεργάζεστε.  Εν αντιθέσει, η Γενική Άδεια Δημόσιας Χρήσης GNU έχει σκοπό να εγγυηθεί την ελευθερία σας να χρησιμοποιείτε από κοινού με άλλους και να τροποποιείτε προγράμματα που διατίθενται ελεύθερα -- δηλαδή να εγγυηθεί ότι το πρόγραμμα είναι ελεύθερο για όλους τους χρήστες.  Αυτή η Γενική Άδεια Δημόσιας Χρήσης ισχύει για τα περισσότερα προγράμματα του Ιδρύματος Ελεύθερου Λογισμικού (Free Software Foundation), καθώς και για κάθε άλλο πρόγραμμα οι δημιουργοί του οποίου συμμορφώνονται με την άδεια αυτή.  (Ορισμένα άλλα προγράμματα του Ιδρύματος Ελεύθερου Λογισμικού καλύπτονται από τη Γενική Άδεια Δημόσιας Χρήσης Βιβλιοθήκης GNU.)  Την άδεια αυτή μπορείτε να την εφαρμόσετε και στα δικά σας προγράμματα.
+
+  Μιλώντας για ελεύθερο λογισμικό, αναφερόμαστε στην ελευθερία χρήσης του, όχι
+στο κόστος του.  Οι Γενικές Άδειες Δημόσιας Χρήσης τις οποίες συντάσσουμε έχουν σκοπό να κατοχυρώσουν την ελευθερία σας να διανέμετε αντίγραφα ελεύθερου λογισμικού (και να χρεώνετε, εάν το επιθυμείτε, την παροχή αυτής της υπηρεσίας), να σας εξασφαλίσουν το δικαίωμα να λαμβάνετε τον πηγαίο κώδικα, εάν τον χρειάζεστε, καθώς και να τροποποιείτε το πρόγραμμα ή να χρησιμοποιείτε τμήματά του σε καινούργια ελεύθερα προγράμματα -- και να διασφαλίσουν ότι είστε ενήμεροι για τα παραπάνω δικαιώματά σας.
+
+  Για την προστασία των δικαιωμάτων σας, επιβάλλεται να προβούμε σε περιορισμούς
+οι οποίοι θα εμποδίζουν σε κάποιον να αμφισβητήσει τα δικαιώματά σας ή να σας ζητήσει να παραιτηθείτε από αυτά. Αυτοί οι περιορισμοί ερμηνεύονται ως συγκεκριμένες ευθύνες για εσάς εάν διανέμετε αντίγραφα κάποιου ελεύθερου λογισμικού ή εάν το τροποποιείτε.
+
+  Για παράδειγμα, εάν διανέμετε αντίγραφα ενός τέτοιου προγράμματος, είτε δωρεάν
+είτε με χρέωση, πρέπει να εκχωρήσετε στους παραλήπτες όλα τα δικαιώματα που έχετε και εσείς.  Πρέπει να εγγυηθείτε ότι και εκείνοι επίσης λαμβάνουν, ή μπορούν να λάβουν, τον πηγαίο κώδικα.  Πρέπει επίσης να τους επιδείξετε τους όρους αυτής της άδειας χρήσης, ώστε να είναι ενήμεροι για τα δικαιώματά τους.
+
+  Προστατεύουμε τα δικαιώματά σας με δύο τρόπους: (1) προστατεύοντας το λογισμικό και (2) προσφέροντάς σας αυτήν την άδεια, με την οποία αποκτάτε νόμιμο δικαίωμα αντιγραφής, διανομής ή/και τροποποίησης του λογισμικού.
+
+  Επιπλέον, για την προστασία των δημιουργών και τη δική μας, θέλουμε να καταστήσουμε βέβαιο ότι όλοι κατανοούν την απουσία εγγύησης για αυτό το ελεύθερο λογισμικό.  Εάν το λογισμικό τροποποιηθεί από κάποιον τρίτο και στη συνέχεια διανεμηθεί, θέλουμε να γνωρίζουν οι παραλήπτες ότι το λογισμικό που απέκτησαν δεν είναι το πρωτότυπο, έτσι ώστε οποιοδήποτε πρόβλημα προκληθεί από τρίτους να μην βαρύνει το όνομα του δημιουργού.
+
+  Τέλος, κάθε ελεύθερο λογισμικό απειλείται συνεχώς από τις κατοχυρώσεις ευρεσιτεχνίας λογισμικού.  Θέλουμε να αποφύγουμε τον κίνδυνο να αποκτήσουν οι αναδιανομείς ελεύθερου λογισμικού τίτλους ευρεσιτεχνίας, καθιστώντας έτσι το λογισμικό προσωπική τους ιδιοκτησία.  Για να αποκλείσουμε αυτό το ενδεχόμενο, έχουμε ξεκαθαρίσει ότι οποιαδήποτε ευρεσιτεχνία θα πρέπει να παρέχει άδεια ελεύθερης χρήσης από όλους, διαφορετικά να μην παρέχει καμιά απολύτως άδεια.
+
+  Ακολουθούν οι ακριβείς όροι και συνθήκες αντιγραφής, διανομής και τροποποίησης.
+
+		    ΓΕΝΙΚΗ ΑΔΕΙΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ GNU
+   ΟΡΟΙ ΚΑΙ ΣΥΝΘΗΚΕΣ ΑΝΤΙΓΡΑΦΗΣ, ΔΙΑΝΟΜΗΣ ΚΑΙ ΤΡΟΠΟΠΟΙΗΣΗΣ
+
+  0. Η Άδεια αυτή ισχύει για κάθε πρόγραμμα ή άλλο έργο που περιέχει
+σημείωμα από τον κάτοχο πνευματικών δικαιωμάτων, στο οποίο αναφέρεται ότι η διανομή του προγράμματος είναι δυνατή υπό τους όρους αυτής της Γενικής Άδειας Δημόσιας Χρήσης.  Ο όρος "Πρόγραμμα", παρακάτω, αναφέρεται σε οποιοδήποτε τέτοιο πρόγραμμα ή έργο, ενώ ο όρος "έργο βασισμένο στο Πρόγραμμα" σημαίνει είτε το Πρόγραμμα είτε κάθε άλλο παραγόμενο έργο που υπάγεται στο νόμο περί πνευματικής ιδιοκτησίας: με λίγα λόγια, ένα έργο που περιέχει ακέραιο το Πρόγραμμα ή ένα μέρος του, είτε αυτούσιο είτε με τροποποιήσεις ή/και μεταφρασμένο σε άλλη γλώσσα.  (Από αυτό το σημείο, η μετάφραση θα περιλαμβάνεται χωρίς περιορισμούς στον όρο "τροποποίηση".)  Κάθε κάτοχος της άδειας χρήσης θα αναφέρεται στο εξής ως "εσείς/εσάς".
+
+’λλες δραστηριότητες πέραν της αντιγραφής, της διανομής και της τροποποίησης δεν καλύπτονται από αυτήν την Άδεια - είναι εκτός των πλαισίων της.  Δεν υπάρχει περιορισμός στην ενέργεια εκτέλεσης ενός προγράμματος, ενώ το προϊόν της χρήσης του Προγράμματος καλύπτεται μόνο εφόσον το περιεχόμενό του συνιστά έργο βασισμένο στο Πρόγραμμα (ανεξάρτητα από το εάν δημιουργήθηκε με την εκτέλεση του Προγράμματος). Το κατά πόσο συμβαίνει αυτό εξαρτάται από το είδος του Προγράμματος.
+
+  1. Επιτρέπεται η αντιγραφή και διανομή αυτούσιων αντιγράφων του πηγαίου κώδικα του Προγράμματος όπως ακριβώς το έχετε λάβει, σε οποιοδήποτε αποθηκευτικό μέσο, με την προϋπόθεση ότι: θα δημοσιεύσετε εμφανώς και καταλλήλως, σε κάθε αντίγραφο, ένα σημείωμα πνευματικής ιδιοκτησίας και ένα σημείωμα αποποίησης ευθυνών εγγύησης - ότι θα συμπεριλάβετε ακέραια όλα τα σημειώματα που αναφέρονται στην Άδεια αυτή και στην απουσία οποιασδήποτε εγγύησης - και, τέλος, ότι θα εκχωρήσετε σε κάθε άλλον παραλήπτη του Προγράμματος ένα αντίγραφο αυτής της Άδειας μαζί με το Πρόγραμμα.
+
+Έχετε δικαίωμα να επιβάλετε χρέωση για τη φυσική ενέργεια της μεταφοράς ενός αντιγράφου, καθώς και να παράσχετε, κατά την κρίση σας, προστασία εγγύησης με χρέωση.
+
+  2. Επιτρέπεται η τροποποίηση του αντιγράφου ή των αντιγράφων του Προγράμματος ολόκληρου ή μέρους του, η οποία συνιστά συνεπώς δημιουργία ενός έργου βασισμένου στο Πρόγραμμα, και η διανομή αυτών των τροποποιήσεων ή έργων υπό τους όρους της Ενότητας 1 ως ανωτέρω, με την προϋπόθεση ότι και εσείς πληροίτε όλες τις παρακάτω προϋποθέσεις:
+
+    α) Πρέπει να φροντίζετε ώστε τα τροποποιημένα αρχεία να παρέχουν εμφανή σημειώματα στα οποία να δηλώνεται η τροποποίηση των αρχείων και η ημερομηνία τροποποίησης.
+
+    β) Πρέπει να φροντίζετε ώστε για κάθε έργο το οποίο διανέμετε ή δημοσιεύετε, και το οποίο περιέχει ή παράγεται από ολόκληρο ή μέρος του Προγράμματος, να παρέχεται άδεια χρήσης του, χωρίς χρέωση, σε όλα τα τρίτα μέρη, σύμφωνα με τους όρους αυτής της Άδειας.
+
+    γ) Εάν το τροποποιημένο πρόγραμμα διαβάζει εντολές αλληλεπιδραστικά, κατά την τυπική εκτέλεσή του, πρέπει να φροντίζετε ώστε, κατά την έναρξη τυπικής εκτέλεσής του για αυτήν την αλληλεπιδραστική χρήση, να εκτυπώνεται ή να εμφανίζεται στην οθόνη μια ανακοίνωση, η οποία θα περιλαμβάνει το απαραίτητο σημείωμα πνευματικής ιδιοκτησίας και ένα σημείωμα στο οποίο θα αναφέρεται ότι δεν υπάρχει καμιά εγγύηση (ή, αντίθετα, ότι παρέχετε εγγύηση) και ότι οι χρήστες έχουν τη δυνατότητα να αναδιανέμουν το πρόγραμμα σύμφωνα με τις προϋποθέσεις αυτές, καθώς και οδηγίες προς το χρήστη για τον τρόπο προβολής ενός αντιγράφου αυτής της Άδειας.  (Εξαίρεση: εάν το ίδιο το Πρόγραμμα είναι αλληλεπιδραστικό αλλά κανονικά δεν εκτυπώνει αυτήν την ανακοίνωση, δεν απαιτείται από το έργο που δημιουργήσατε βασισμένοι στο Πρόγραμμα να εκτυπώνει ανακοίνωση.)
+
+Οι απαιτήσεις αυτές ισχύουν για ολόκληρο το τροποποιημένο έργο.  Εάν συγκεκριμένες ενότητες του έργου αυτού δεν παράγονται από το Πρόγραμμα, και μπορούν να θεωρηθούν με ασφάλεια από μόνες τους ως ανεξάρτητα και ξεχωριστά έργα, τότε αυτή η Άδεια και οι όροι της δεν ισχύουν για τις ενότητες αυτές, κατά τη διανομή τους ως ξεχωριστά έργα.  Αλλά όταν διανέμετε τις ίδιες ενότητες ως τμήματα ενός ευρύτερου έργου το οποίο βασίζεται στο Πρόγραμμα, η διανομή του συνόλου πρέπει να υπόκειται στους όρους της Άδειας, σύμφωνα με την οποία τα δικαιώματα των άλλων χρηστών εκτείνονται σε ολόκληρο το έργο, επομένως και σε καθένα χωριστό τμήμα του, ανεξάρτητα από το ποιος είναι ο δημιουργός του.
+
+Επομένως, πρόθεση αυτής της ενότητας δεν είναι να εγείρει δικαιώματα ή να αμφισβητήσει τα δικά σας δικαιώματα σε μια εργασία που δημιουργήσατε εξ ολοκλήρου οι ίδιοι - η πρόθεση, περισσότερο, είναι να ασκήσει το δικαίωμα ελέγχου της διανομής των παραγόμενων ή των συλλογικών έργων που βασίζονται στο Πρόγραμμα.
+
+Επιπλέον, η απλή προσθήκη ενός άλλου έργου, που δεν βασίζεται στο Πρόγραμμα, μαζί με το Πρόγραμμα (ή με ένα έργο που βασίζεται στο Πρόγραμμα) σε τόμο ενός μέσου αποθήκευσης ή διανομής, δεν υπάγει το άλλο έργο στα πλαίσια αυτής της Άδειας.
+
+  3. Επιτρέπεται η αντιγραφή και διανομή του Προγράμματος (ή ενός έργου βασισμένο σε αυτό, σύμφωνα με την Ενότητα 2) σε μορφή αντικειμενικού κώδικα ή εκτελέσιμη μορφή, σύμφωνα με τους όρους των Ενοτήτων 1 και 2 ως ανωτέρω, με την προϋπόθεση ότι πραγματοποιείτε και μια από τις ακόλουθες ενέργειες:
+
+    α) Το συνοδεύετε με τον αντίστοιχο, πλήρη πηγαίο κώδικα, ο οποίος είναι αναγνώσιμος από το σύστημα και ο οποίος πρέπει να διανέμεται σύμφωνα με τους όρους των Ενοτήτων 1 και 2 παραπάνω, σε ένα συνηθισμένο μέσο μεταφοράς λογισμικού - ή,
+    β) Το συνοδεύετε με γραπτή προσφορά, ισχύουσα τουλάχιστον για τρία χρόνια και με χρέωση όχι μεγαλύτερη από το κόστος της φυσικής διανομής κώδικα, παράδοσης σε τρίτους του πλήρους, αναγνώσιμου από το σύστημα αντιγράφου του αντίστοιχου πηγαίου κώδικα, ο οποίος θα διανεμηθεί υπό τους όρους των Ενοτήτων 1 και 2 ως ανωτέρω, σε συνηθισμένο μέσο μεταφοράς λογισμικού - ή,
+
+    γ) Το συνοδεύετε με τις πληροφορίες που λάβατε όσον αφορά την προσφορά διανομής του αντίστοιχου πηγαίου κώδικα.  (Η εναλλακτική αυτή επιλογή επιτρέπεται μόνο για μη εμπορική διανομή και μόνο εφόσον λάβατε το πρόγραμμα σε αντικειμενικό κώδικα ή εκτελέσιμη μορφή με αυτήν την προσφορά, σύμφωνα με την Υποενότητα [β] παραπάνω.)
+
+Ο πηγαίος κώδικας για ένα έργο συνιστά την προτιμώμενη μορφή του έργου για πραγματοποίηση τροποποιήσεων σε αυτό.  Για ένα εκτελέσιμο έργο, πλήρης πηγαίος κώδικας σημαίνει όλον τον πηγαίο κώδικα για όλες τις λειτουργικές μονάδες που περιλαμβάνει, συν οποιαδήποτε σχετικά αρχεία ορισμού διασύνδεσης, συν τις δέσμες ενεργειών που χρησιμοποιούνται για τον έλεγχο της μεταγλώττισης και εγκατάστασης του εκτελέσιμου αρχείου.  Ωστόσο, ως ειδική εξαίρεση, ο πηγαίος κώδικας που διανέμεται δεν χρειάζεται να περιλαμβάνει οτιδήποτε διανέμεται κανονικά (είτε ως κώδικας, είτε σε δυαδική μορφή) μαζί με τα μεγαλύτερα στοιχεία (μεταγλωττιστές, πυρήνας κ.ο.κ.) του λειτουργικού συστήματος στο οποίο εκτελείται το εκτελέσιμο αρχείο, εκτός εάν το ίδιο το στοιχείο συνοδεύει το εκτελέσιμο.
+
+Εάν η διανομή του εκτελέσιμου ή του αντικειμενικού κώδικα πραγματοποιείται με
+παραχώρηση πρόσβασης για αντιγραφή από καθορισμένη τοποθεσία, τότε η παραχώρηση
+ισοδύναμης πρόσβασης για αντιγραφή του πηγαίου κώδικα από την ίδια τοποθεσία λογίζεται ως διανομή του πηγαίου κώδικα - αν και τα τρίτα μέλη δεν
+υποχρεούνται να αντιγράψουν τον πηγαίο κώδικα μαζί με τον αντικειμενικό.
+
+  4. Δεν επιτρέπεται η αντιγραφή, τροποποίηση, παραχώρηση άδειας περαιτέρω εκμετάλλευσης ή διανομή του Προγράμματος εκτός εάν προβλέπεται ρητά στην παρούσα Άδεια.  Διαφορετικά, κάθε απόπειρα για αντιγραφή, τροποποίηση, παραχώρηση άδειας εκμετάλλευσης ή διανομή του Προγράμματος είναι άκυρη και αυτομάτως καταργεί τα δικαιώματα που σας παραχωρεί η παρούσα Άδεια.
+Ωστόσο, οι άδειες χρήσης των μελών που έχουν λάβει αντίγραφα ή δικαιώματα από εσάς, μέσω της παρούσας Άδειας, δεν θα ακυρωθούν, εφόσον τα μέλη αυτά
+παραμένουν πλήρως συμμορφωμένα με τους όρους της Άδειας.
+
+  5. Δεν απαιτείται από εσάς να δεχθείτε την παρούσα Άδεια, εφόσον δεν την έχετε υπογράψει.  Ωστόσο, τίποτε άλλο δεν σας δίνει το δικαίωμα να τροποποιήσετε ή να διανείμετε το Πρόγραμμα ή τα παραγόμενα από αυτό έργα.  Οι ενέργειες αυτές απαγορεύονται από το νόμο, εάν δεν αποδεχθείτε την παρούσα Άδεια.  Συνεπώς, με το να τροποποιήσετε ή να διανείμετε το Πρόγραμμα (ή οποιοδήποτε έργο που βασίζεται στο Πρόγραμμα), δηλώνετε ότι αποδέχεστε την παρούσα Άδεια, καθώς και όλους τους όρους και συνθήκες που προβλέπει η Άδεια για την αντιγραφή, διανομή ή τροποποίηση του Προγράμματος ή έργων που βασίζονται σε αυτό.
+
+  6. Κάθε φορά που αναδιανέμετε το Πρόγραμμα (ή ένα έργο βασισμένο στο Πρόγραμμα), ο αποδέκτης αυτόματα παραλαμβάνει την αρχική άδεια αντιγραφής, διανομής ή τροποποίησης του Προγράμματος σύμφωνα με τους όρους και τις συνθήκες αυτές.  Δεν επιτρέπεται να επιβάλλετε περαιτέρω περιορισμούς στην άσκηση των δικαιωμάτων του αποδέκτη τα οποία προβλέπονται εδώ. Δεν είστε υπεύθυνοι για το εάν τρίτα μέλη επιβάλλουν συμμόρφωση σε αυτήν τη Άδεια.
+
+  7. Εάν, ως συνέπεια δικαστικής απόφασης ή κατηγορίας για παράβαση νόμου περί πνευματικής ιδιοκτησίας ή για οποιονδήποτε άλλο λόγο (μη περιοριζόμενο σε θέματα ευρεσιτεχνίας), σας επιβληθούν όροι (είτε μέσω δικαστικής απόφασης, συμφωνίας ή μέσω άλλου τρόπου) οι οποίοι αντιβαίνουν τους όρους της παρούσας Άδειας, οι όροι εκείνοι δεν σας απαλλάσσουν από τους όρους της παρούσας.  Εάν δεν είναι δυνατή η αναδιανομή με τρόπο ώστε να ικανοποιεί συγχρόνως τις υποχρεώσεις σας σύμφωνα με την παρούσα Άδεια και οποιεσδήποτε άλλες υποχρεώσεις απορρέουν από αυτή, τότε, ως συνέπεια, δεν επιτρέπεται να αναδιανέμετε το Πρόγραμμα με κανένα τρόπο.  Για παράδειγμα, εάν μια άδεια ευρεσιτεχνίας δεν επιτρέπει τη χωρίς δικαιώματα εκμετάλλευσης αναδιανομή του Προγράμματος από όλους όσους λαμβάνουν αντίγραφα άμεσα ή έμμεσα από εσάς, τότε ο μόνος τρόπος με τον οποίο θα μπορούσατε να ικανοποιήσετε την άδεια εκείνη και την παρούσα Άδεια θα ήταν να αποφύγετε εντελώς την αναδιανομή του Προγράμματος.
+
+Εάν οποιοδήποτε τμήμα αυτής της ενότητας καταστεί άκυρο ή μη δυνάμενο να επιβληθεί σε κάποια συγκεκριμένη περίπτωση, το υπόλοιπο τμήμα της ενότητας αυτής εφαρμόζεται και η ενότητα ως σύνολο εφαρμόζεται υπό οποιεσδήποτε συγκυρίες.
+
+Δεν ανήκει στους σκοπούς της ενότητας αυτής να σας παρακινήσει να παραβιάσετε
+την ευρεσιτεχνία ή άλλες αξιώσεις πνευματικής ιδιοκτησίας ή να αμφισβητήσετε τον κύρος οποιωνδήποτε τέτοιων αξιώσεων. Μοναδικός σκοπός αυτής της ενότητας είναι να προστατέψει την ακεραιότητα του συστήματος διανομής ελεύθερου λογισμικού, η οποία υλοποιείται μέσω της πρακτικής των αδειών δημόσιας χρήσης. Πολλοί άνθρωποι έχουν συνεισφέρει γενναιόδωρα στην ευρεία έκταση του λογισμικού που διανέμεται μέσω αυτού του συστήματος, εμπιστευόμενοι την συνεπή εφαρμογή αυτού του συστήματος. Είναι στην ευχέρεια του δημιουργού/δωρητή να αποφασίσει εάν προτίθεται να διανείμει λογισμικό μέσω οποιουδήποτε άλλου συστήματος, και μια άδεια δεν είναι δυνατό να επιβάλει αυτήν την επιλογή.
+
+Η ενότητα αυτή έχει ως σκοπό να καταστήσει σαφές ό,τι συνεπάγεται το υπόλοιπο τμήμα της παρούσας Άδειας.
+
+  8. Εάν η διανομή ή/και η χρήση του Προγράμματος εμποδίζεται σε ορισμένες χώρες, είτε μέσω κατοχυρωμένης ευρεσιτεχνίας είτε μέσω διασυνδέσεων που προστατεύονται από πνευματικά δικαιώματα, επιτρέπεται στον κάτοχο του αρχικού πνευματικού δικαιώματος, ο οποίος θέτει το Πρόγραμμα υπό τους όρους της παρούσας Άδειας, να προσθέσει έναν ρητό γεωγραφικό περιορισμό στη διανομή, εξαιρώντας εκείνες τις χώρες, έτσι ώστε η διανομή να επιτρέπεται μόνο για τις χώρες οι οποίες δεν εξαιρούνται.  Σε τέτοια περίπτωση, η παρούσα Άδεια ενσωματώνει τον περιορισμό σαν να ήταν διατυπωμένος στο σώμα της παρούσας Άδειας.
+
+  9. Το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation) έχει τη δυνατότητα περιστασιακά να δημοσιεύει αναθεωρημένες ή/και νέες εκδόσεις της Γενικής Άδειας Δημόσιας Χρήσης.  Αυτές οι νέες εκδόσεις θα είναι συναφείς στο πνεύμα με την παρούσα έκδοση, όμως ενδέχεται να διαφέρουν στις λεπτομέρειες,
+καθώς αναφέρονται σε νέα προβλήματα και ζητήματα.
+
+Σε κάθε έκδοση δίνεται ένας διακριτικός αριθμός έκδοσης.  Εάν στο Πρόγραμμα
+καθορίζεται ένας αριθμός έκδοσης της παρούσας Άδειας, η οποία ισχύει σε αυτό, καθώς και "οποιασδήποτε μεταγενέστερης έκδοσης", μπορείτε να επιλέξετε ανάμεσα στο να ακολουθήσετε τους όρους και τις συνθήκες είτε εκείνης της έκδοσης είτε οποιασδήποτε άλλης έκδοσης που δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation).  Εάν στο Πρόγραμμα δεν καθορίζεται αριθμός έκδοσης
+της παρούσας Άδειας, μπορείτε να επιλέξετε οποιαδήποτε έκδοση η οποία έχει δημοσιευθεί από το Ίδρυμα Ελεύθερου Λογισμικού.
+
+  10. Εάν επιθυμείτε να ενσωματώσετε μέρη του Προγράμματος σε άλλα ελεύθερα
+προγράμματα, των οποίων οι όροι διανομής είναι διαφορετικοί, επικοινωνήστε με το δημιουργό του Προγράμματος για να ζητήσετε την έγκρισή του.  Για λογισμικό του οποίου η πνευματική ιδιοκτησία ανήκει στο Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation), επικοινωνήστε μαζί μας στο Ίδρυμα Ελεύθερου Λογισμικού (σε ορισμένες περιπτώσεις προβαίνουμε σε εξαιρέσεις).  Η απόφασή μας θα ληφθεί βάσει του διττού στόχου μας να διατηρήσουμε την ελευθερία όλων των προϊόντων που παράγονται από το ελεύθερο λογισμικό μας, καθώς και να προωθήσουμε γενικότερα την κοινή χρήση και τη δυνατότητα επαναχρησιμοποίησης του λογισμικού.
+
+                            ΚΑΜΙΑ ΕΓΓΥΗΣΗ
+
+  11. ΕΠΕΙΔΗ Η ΑΔΕΙΑ ΧΡΗΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΑΡΕΧΕΤΑΙ ΧΩΡΙΣ ΧΡΕΩΣΗ, ΔΕΝ ΥΠΑΡΧΕΙ ΕΓΓΥΗΣΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ, ΣΤΟ ΒΑΘΜΟ ΠΟΥ ΕΠΙΤΡΕΠΕΙ Η ΙΣΧΥΟΥΣΑ ΝΟΜΟΘΕΣΙΑ.  ΕΦΟΣΟΝ ΔΕΝ ΥΠΑΡΧΕΙ ΔΙΑΦΟΡΕΤΙΚΗ ΕΓΓΡΑΦΗ ΔΗΛΩΣΗ, ΟΙ ΚΑΤΟΧΟΙ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ Ή/ΚΑΙ ΑΛΛΕΣ ΠΛΕΥΡΕΣ ΠΑΡΕΧΟΥΝ ΤΟ ΠΡΟΓΡΑΜΜΑ "ΩΣ ΕΧΕΙ" ΧΩΡΙΣ ΚΑΝΕΝΟΣ ΕΙΔΟΥΣ ΕΓΓΥΗΣΕΙΣ, ΕΙΤΕ ΡΗΤΕΣ ΕΙΤΕ ΕΜΜΕΣΕΣ, ΣΤΙΣ ΟΠΟΙΕΣ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΝΤΑΙ, ΕΝΔΕΙΚΤΙΚΑ, ΟΙ ΕΜΜΕΣΕΣ ΕΓΓΥΗΣΕΙΣ ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ΚΑΙ ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ.  ΟΠΟΙΟΣΔΗΠΟΤΕ ΚΙΝΔΥΝΟΣ ΑΠΟ ΤΗΝ ΠΟΙΟΤΗΤΑ ΚΑΙ ΤΗΝ ΑΠΟΔΟΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΑΝΗΚΕΙ ΕΞ ΟΛΟΚΛΗΡΟΥ ΕΣΑΣ.  ΕΑΝ ΤΟ ΠΡΟΓΡΑΜΜΑ ΑΠΟΔΕΙΧΘΕΙ ΕΛΑΤΤΩΜΑΤΙΚΟ, ΤΟ ΚΟΣΤΟΣ ΟΛΩΝ ΤΩΝ ΕΡΓΑΣΙΩΝ ΕΠΙΣΚΕΥΗΣ Ή ΔΙΟΡΘΩΣΗΣ ΒΑΡΥΝΕΙ ΕΣΑΣ.
+
+  12. ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ, ΕΚΤΟΣ ΕΑΝ ΑΠΑΙΤΕΙΤΑΙ ΑΠΟ ΤΗΝ ΙΣΧΥΟΥΣΑ ΝΟΜΟΘΕΣΙΑ Ή ΕΧΕΙ ΣΥΜΦΩΝΗΘΕΙ ΓΡΑΠΤΩΣ, Ο ΚΑΤΟΧΟΣ ΤΩΝ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ, Ή ΟΠΟΙΟΔΗΠΟΤΕ ΑΛΛΟ ΜΕΛΟΣ ΤΟ ΟΠΟΙΟ ΜΠΟΡΕΙ ΝΑ ΤΡΟΠΟΠΟΙΗΣΕΙ Ή/ΚΑΙ ΝΑ ΑΝΑΔΙΑΝΕΙΜΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΟΠΩΣ ΠΡΟΒΛΕΠΕΤΑΙ ΠΑΡΑΠΑΝΩ, ΔΕΝ ΦΕΡΕΤΑΙ ΩΣ ΥΠΕΥΘΥΝΟΣ ΑΠΕΝΑΝΤΙ ΣΑΣ ΓΙΑ ΖΗΜΙΕΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ ΟΛΩΝ ΤΩΝ ΓΕΝΙΚΩΝ, ΕΙΔΙΚΩΝ, ΣΥΜΠΤΩΜΑΤΙΚΩΝ Ή ΣΥΝΕΠΑΚΟΛΟΥΘΩΝ ΖΗΜΙΩΝ ΠΟΥ ΕΝΔΕΧΕΤΑΙ ΝΑ ΠΡΟΚΥΨΟΥΝ ΛΟΓΩ ΤΗΣ ΧΡΗΣΗΣ Ή ΤΗΣ ΑΔΥΝΑΜΙΑΣ ΧΡΗΣΗΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ (ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΕΝΔΕΙΚΤΙΚΑ, ΤΗΣ ΑΠΩΛΕΙΑΣ ΔΕΔΟΜΕΝΩΝ Ή ΤΗΣ ΑΛΛΟΙΩΣΗΣ ΤΗΣ ΑΚΡΙΒΕΙΑΣ ΤΟΥΣ, Ή ΑΠΩΛΕΙΑΣ ΠΟΥ ΕΠΗΛΘΕ ΑΠΟ ΕΣΑΣ Ή ΑΠΟ ΤΡΙΤΑ ΜΕΛΗ, Ή ΑΔΥΝΑΜΙΑΣ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΝΑ ΛΕΙΤΟΥΡΓΗΣΕΙ ΜΕ ΑΛΛΑ ΠΡΟΓΡΑΜΜΑΤΑ), ΕΣΤΩ ΚΑΙ ΑΝ Ο ΚΑΤΟΧΟΣ ΑΥΤΟΣ Ή ΤΟ ΑΛΛΟ ΜΕΛΟΣ ΕΧΕΙ ΕΝΗΜΕΡΩΘΕΙ ΓΙΑ ΤΟ ΕΝΔΕΧΟΜΕΝΟ ΤΕΤΟΙΩΝ ΖΗΜΙΩΝ.
+
+
+		     ΤΕΛΟΣ ΤΩΝ ΟΡΩΝ ΚΑΙ ΤΩΝ ΣΥΝΘΗΚΩΝ
+
+
+	    Τρόπος εφαρμογής των όρων στα νέα Προγράμματα
+
+  Εάν αναπτύσσετε ένα νέο πρόγραμμα και θέλετε να έχει τη μεγαλύτερη δυνατή
+χρήση από το κοινό, ο καλύτερος τρόπος να επιτύχετε αυτό είναι να το χαρακτηρίσετε ελεύθερο λογισμικό, το οποίο όλοι θα μπορούν να αναδιανέμουν και να τροποποιούν υπό τους όρους αυτούς.
+  Για να γίνει αυτό, συνάψτε το ακόλουθο σημείωμα στο πρόγραμμα.  Είναι πιο ασφαλές να το συνάψετε στην αρχή κάθε αρχείου πηγαίου κώδικα, ώστε να φέρεται πιο αποτελεσματικά η εξαίρεση της εγγύησης - και κάθε αρχείο θα πρέπει να διαθέτει τουλάχιστον τη γραμμή "πνευματικής ιδιοκτησίας" και έναν δείκτη για το που βρίσκεται το πλήρες σημείωμα.
+
+    <μια γραμμή που παρέχει το όνομα του προγράμματος και μια σύντομη περιγραφή της λειτουργίας του.>
+    Copyright (C) <έτος>  <όνομα δημιουργού>
+
+    Το πρόγραμμα αυτό είναι ελεύθερο λογισμικό. Επιτρέπεται η αναδιανομή ή/και τροποποίησή του υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU (GNU General Public License), όπως αυτή δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation) - είτε της έκδοσης 2 της Άδειας, είτε (κατ' επιλογήν) οποιασδήποτε μεταγενέστερης έκδοσης.
+
+    Το πρόγραμμα αυτό διανέμεται με την ελπίδα ότι θα αποδειχθεί χρήσιμο, παρόλα αυτά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ - χωρίς ακόμη και την έμμεση εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ. Για περισσότερες λεπτομέρειες ανατρέξτε στη Γενική Άδεια Δημόσιας Χρήσης GNU (GNU General Public License).
+
+    Θα πρέπει να έχετε λάβει ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU (GNU General Public License) μαζί με αυτό το πρόγραμμα. Εάν όχι, επικοινωνήστε γραπτώς με το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation), Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Επίσης, προσθέστε πληροφορίες για τον τρόπο με τον οποίο μπορεί κάποιος να επικοινωνήσει μαζί σας μέσω ηλεκτρονικού ή παραδοσιακού ταχυδρομείου.
+
+Εάν το πρόγραμμα είναι αλληλεπιδραστικό, φροντίστε ώστε κατά την εκκίνησή του σε αλληλεπιδραστική λειτουργία να εμφανίζει ένα σύντομο σημείωμα όπως το παρακάτω:
+
+    <Όνομα_προγράμματος> έκδοση <αριθμός_έκδοσης>, Copyright (C) <έτος> <όνομα_δημιουργού>
+    Το <όνομα_προγράμματος> διανέμεται ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ. Για λεπτομέρειες πληκτρολογήστε `show w'.
+    Το λογισμικό αυτό είναι ελεύθερο, και η αναδιανομή του είναι ευπρόσδεκτη υπό συγκεκριμένους όρους. Πληκτρολογήστε `show c' για λεπτομέρειες.
+
+Οι υποθετικές εντολές `show w' και `show c' θα πρέπει να προβάλλουν τις αντίστοιχες ενότητες της Γενικής Άδειας Δημόσιας Χρήσης. Ασφαλώς οι εντολές που χρησιμοποιείτε δεν είναι απαραίτητο να ονομάζονται `show w' και `show c'. Μπορούν να είναι ακόμη και σύνδεσμοι που ενεργοποιούνται με πάτημα του ποντικιού ή στοιχεία μενού--οτιδήποτε ταιριάζει με το πρόγραμμά σας.
+
+Εάν κρίνετε απαραίτητο, θα πρέπει επίσης να ζητήσετε από τον εργοδότη σας (εάν εργάζεστε ως προγραμματιστής) ή τη σχολή σας, εάν υπάρχουν, να υπογράψουν μια "δήλωση αποκήρυξης πνευματικών δικαιωμάτων" (copyright disclaimer) για το πρόγραμμα.
+Μπορείτε να ακολουθήσετε το παρακάτω δείγμα, συμπληρώνοντας τα ονόματα:
+
+  Η <επωνυμία_εταιρίας/σχολής> αποκηρύσσει οποιοδήποτε δικαίωμα πνευματικής ιδιοκτησίας επί του προγράμματος <όνομα_προγράμματος>', το οποίο αποτελεί δημιουργία του <όνομα_δημιουργού>.
+
+  <υπογραφή_εκπροσώπου_εταιρίας/σχολής>, <ημερομηνία, έτος>
+  
+
+Η παρούσα Γενική Άδεια Δημόσιας Χρήσης δεν επιτρέπει την ενσωμάτωση του προγράμματός σας σε ιδιόκτητα προγράμματα.  Εάν το πρόγραμμά σας αποτελεί βιβλιοθήκη υπορουτίνας, θα είναι ενδεχομένως χρησιμότερο να επιτρέπετε σύνδεση ιδιόκτητων εφαρμογών με τη βιβλιοθήκη. Εάν όντως αυτό επιθυμείτε, χρησιμοποιήστε τη Γενική Άδεια Δημόσιας Χρήσης Βιβλιοθήκης GNU (GNU Library General Public License) αντί της παρούσας Άδειας.</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Εύσημα</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Οι άδειες είναι στα αγγλικά ως ένδειξη σεβασμου της επίσημα και νόμιμα έγκυρης μετάφρασης.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Λήψη αντικειμένου flash</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Επιλογή αντικειμένου flash για λήψη</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>about:blank</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Όνομα εφαρμογής</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Δημιουργία εφαρμογής</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_en.ts b/Sankore-3.1/resources/i18n/sankore_en.ts
index 8932c67..8529bad 100644
--- a/Sankore-3.1/resources/i18n/sankore_en.ts
+++ b/Sankore-3.1/resources/i18n/sankore_en.ts
@@ -800,11 +800,27 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Group Items</source>
+        <source>Group items</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Group items</source>
+        <source>Play</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Group</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -849,24 +865,19 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
+        <source>Element ID = </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
+        <source>Content is not supported in destination format.</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
+        <source>Remove Page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Loading ...</source>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -930,6 +941,26 @@
         <source>Unknown content type %1</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1116,6 +1147,18 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,11 +1187,19 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
+        <source>Importing file %1</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1158,6 +1209,10 @@
         <source>Page %0</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1219,6 +1274,13 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
@@ -1386,6 +1448,10 @@
         <source>Create new folder</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
@@ -1393,274 +1459,224 @@
         <source>ImportedImage</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
-        <source>Locked</source>
+        <source>Audios</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Visible on Extended Screen</source>
+        <source>Movies</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsItemDelegate</name>
     <message>
-        <source>Locked</source>
+        <source>Pictures</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Visible on Extended Screen</source>
+        <source>Animations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to Content Source</source>
+        <source>Interactivities</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsTextItem</name>
     <message>
-        <source><Type Text Here></source>
+        <source>Applications</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsTextItemDelegate</name>
     <message>
-        <source>Text Color</source>
+        <source>Shapes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Editable</source>
+        <source>Favorites</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsWidgetItemDelegate</name>
     <message>
-        <source>Frozen</source>
+        <source>Web search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Transform as Tool </source>
+        <source>Trash</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportCFF</name>
-    <message>
-        <source>Common File Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBFeaturesNewFolderDialog</name>
     <message>
-        <source>Import of file %1 failed.</source>
+        <source>Accept</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Import successful.</source>
+        <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Import failed.</source>
+        <source>Enter a new folder name</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportDocument</name>
+    <name>UBFeaturesProgressInfo</name>
     <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import of file %1 failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open-Sankore (*.ubz)</source>
+        <source>Loading </source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportImage</name>
-    <message>
-        <source>Image Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
-        <source>Image import failed.</source>
+        <source>Locked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Image import successful.</source>
+        <source>Visible on Extended Screen</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportPDF</name>
+    <name>UBGraphicsItemDelegate</name>
     <message>
-        <source>Portable Document Format (*.pdf)</source>
+        <source>Locked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PDF import failed.</source>
+        <source>Visible on Extended Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
+        <source>Go to Content Source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
     <message>
-        <source>PDF import successful.</source>
+        <source><Type Text Here></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBIntranetPodcastPublisher</name>
+    <name>UBGraphicsTextItemDelegate</name>
     <message>
-        <source>Error while publishing video to intranet (%1)</source>
+        <source>Text Color</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publishing to Intranet in progress %1 %</source>
+        <source>Editable</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBIntranetPodcastPublishingDialog</name>
+    <name>UBGraphicsW3CWidgetItem</name>
     <message>
-        <source>Publish</source>
+        <source>Web</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBKeyboardPalette</name>
+    <name>UBGraphicsWidgetItem</name>
     <message>
-        <source>Enter</source>
+        <source>Loading ...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBLibActionBar</name>
+    <name>UBGraphicsWidgetItemDelegate</name>
     <message>
-        <source>Add to favorites</source>
+        <source>Frozen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Share</source>
+        <source>Transform as Tool </source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
     <message>
-        <source>Search</source>
+        <source>Common File Format (</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Delete</source>
+        <source>Importing file %1...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Back to folder</source>
+        <source>Import of file %1 failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove from favorites</source>
+        <source>Import successful.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Create new folder</source>
+        <source>Import failed.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBLibItemProperties</name>
+    <name>UBImportDocument</name>
     <message>
-        <source>Add to page</source>
+        <source>Importing file %1...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Set as background</source>
+        <source>Import successful.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add to library</source>
+        <source>Import of file %1 failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Object informations</source>
+        <source>Open-Sankore (*.ubz)</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBImportImage</name>
     <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
+        <source>Image Format (</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
     <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
+        <source>Portable Document Format (*.pdf)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Creating image thumbnail for %1.</source>
+        <source>PDF import failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Adding to page failed for item %1.</source>
+        <source>Importing page %1 of %2</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
     <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
+        <source>Error while publishing video to intranet (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>ImportedImage</source>
+        <source>Publishing to Intranet in progress %1 %</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
     <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
+        <source>Publish</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
     <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
+        <source>Enter</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1680,6 +1696,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1709,36 +1732,40 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>Add new folder</source>
+        <source>(copy)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>New Folder name:</source>
+        <source>Document Repository Loss</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add</source>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>Cancel</source>
+        <source>English</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPersistenceManager</name>
     <message>
-        <source>(copy)</source>
+        <source>Russian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
+        <source>German</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <source>French</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1853,14 +1880,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1935,10 +1954,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1951,6 +1966,14 @@ Do you want to ignore these errors for this host?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Objective(s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Resource indexing</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1967,6 +1990,10 @@ Do you want to ignore these errors for this host?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Subjects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Type:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2017,15 +2044,7 @@ Do you want to ignore these errors for this host?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
+        <source>Title page</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2142,13 +2161,6 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>UBWebPluginWidget</name>
     <message>
         <source>Loading...</source>
@@ -2183,6 +2195,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2502,6 +2522,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2757,10 +2781,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
-    </message>
     <message>
         <source>User:</source>
         <translation type="unfinished"></translation>
@@ -2770,227 +2790,478 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>Credits</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -2998,12 +3269,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3011,10 +3281,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_en_UK.ts b/Sankore-3.1/resources/i18n/sankore_en_UK.ts
index b1c80fe..101744f 100644
--- a/Sankore-3.1/resources/i18n/sankore_en_UK.ts
+++ b/Sankore-3.1/resources/i18n/sankore_en_UK.ts
@@ -800,11 +800,27 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Group Items</source>
+        <source>Group items</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Group items</source>
+        <source>Play</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Group</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -849,24 +865,19 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
+        <source>Element ID = </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
+        <source>Content is not supported in destination format.</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
+        <source>Remove Page</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Loading ...</source>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation type="unfinished"></translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1116,6 +1147,18 @@
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,11 +1187,19 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
+        <source>Importing file %1</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1158,6 +1209,10 @@
         <source>Page %0</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1219,6 +1274,13 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
@@ -1386,6 +1448,10 @@
         <source>Create new folder</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
@@ -1393,274 +1459,224 @@
         <source>ImportedImage</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
-        <source>Locked</source>
+        <source>Audios</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Visible on Extended Screen</source>
+        <source>Movies</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsItemDelegate</name>
     <message>
-        <source>Locked</source>
+        <source>Pictures</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Visible on Extended Screen</source>
+        <source>Animations</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Go to Content Source</source>
+        <source>Interactivities</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsTextItem</name>
     <message>
-        <source><Type Text Here></source>
+        <source>Applications</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsTextItemDelegate</name>
     <message>
-        <source>Text Color</source>
+        <source>Shapes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Editable</source>
+        <source>Favorites</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBGraphicsWidgetItemDelegate</name>
     <message>
-        <source>Frozen</source>
+        <source>Web search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Transform as Tool </source>
+        <source>Trash</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportCFF</name>
-    <message>
-        <source>Common File Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBFeaturesNewFolderDialog</name>
     <message>
-        <source>Import of file %1 failed.</source>
+        <source>Accept</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Import successful.</source>
+        <source>Cancel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Import failed.</source>
+        <source>Enter a new folder name</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportDocument</name>
+    <name>UBFeaturesProgressInfo</name>
     <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import of file %1 failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open-Sankore (*.ubz)</source>
+        <source>Loading </source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportImage</name>
-    <message>
-        <source>Image Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
-        <source>Image import failed.</source>
+        <source>Locked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Image import successful.</source>
+        <source>Visible on Extended Screen</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBImportPDF</name>
+    <name>UBGraphicsItemDelegate</name>
     <message>
-        <source>Portable Document Format (*.pdf)</source>
+        <source>Locked</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>PDF import failed.</source>
+        <source>Visible on Extended Screen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
+        <source>Go to Content Source</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
     <message>
-        <source>PDF import successful.</source>
+        <source><Type Text Here></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBIntranetPodcastPublisher</name>
+    <name>UBGraphicsTextItemDelegate</name>
     <message>
-        <source>Error while publishing video to intranet (%1)</source>
+        <source>Text Color</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Publishing to Intranet in progress %1 %</source>
+        <source>Editable</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBIntranetPodcastPublishingDialog</name>
+    <name>UBGraphicsW3CWidgetItem</name>
     <message>
-        <source>Publish</source>
+        <source>Web</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBKeyboardPalette</name>
+    <name>UBGraphicsWidgetItem</name>
     <message>
-        <source>Enter</source>
+        <source>Loading ...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBLibActionBar</name>
+    <name>UBGraphicsWidgetItemDelegate</name>
     <message>
-        <source>Add to favorites</source>
+        <source>Frozen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Share</source>
+        <source>Transform as Tool </source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
     <message>
-        <source>Search</source>
+        <source>Common File Format (</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Delete</source>
+        <source>Importing file %1...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Back to folder</source>
+        <source>Import of file %1 failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Remove from favorites</source>
+        <source>Import successful.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Create new folder</source>
+        <source>Import failed.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBLibItemProperties</name>
+    <name>UBImportDocument</name>
     <message>
-        <source>Add to page</source>
+        <source>Importing file %1...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Set as background</source>
+        <source>Import successful.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add to library</source>
+        <source>Import of file %1 failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Object informations</source>
+        <source>Open-Sankore (*.ubz)</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBImportImage</name>
     <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
+        <source>Image Format (</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
     <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
+        <source>Portable Document Format (*.pdf)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Creating image thumbnail for %1.</source>
+        <source>PDF import failed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Adding to page failed for item %1.</source>
+        <source>Importing page %1 of %2</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
     <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
+        <source>Error while publishing video to intranet (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>ImportedImage</source>
+        <source>Publishing to Intranet in progress %1 %</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
     <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
+        <source>Publish</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
     <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
+        <source>Enter</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1680,6 +1696,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1709,36 +1732,40 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>Add new folder</source>
+        <source>(copy)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>New Folder name:</source>
+        <source>Document Repository Loss</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add</source>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>Cancel</source>
+        <source>English</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBPersistenceManager</name>
     <message>
-        <source>(copy)</source>
+        <source>Russian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
+        <source>German</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <source>French</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1853,14 +1880,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1935,10 +1954,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1951,6 +1966,14 @@ Do you want to ignore these errors for this host?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Objective(s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Resource indexing</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1967,6 +1990,10 @@ Do you want to ignore these errors for this host?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>Subjects:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Type:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2017,15 +2044,7 @@ Do you want to ignore these errors for this host?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
+        <source>Title page</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2142,13 +2161,6 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
     <name>UBWebPluginWidget</name>
     <message>
         <source>Loading...</source>
@@ -2183,6 +2195,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2502,6 +2522,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2757,10 +2781,6 @@ p, li { white-space: pre-wrap; }
         <source>Pass:</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
-    </message>
     <message>
         <source>User:</source>
         <translation type="unfinished"></translation>
@@ -2770,227 +2790,478 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>Credits</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -2998,12 +3269,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3011,10 +3281,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_es.ts b/Sankore-3.1/resources/i18n/sankore_es.ts
index 604ba42..f5cee76 100644
--- a/Sankore-3.1/resources/i18n/sankore_es.ts
+++ b/Sankore-3.1/resources/i18n/sankore_es.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="es_ES">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -39,7 +39,7 @@
     </message>
     <message>
         <source>Stop</source>
-        <translation>Parar</translation>
+        <translation>Detener</translation>
     </message>
     <message>
         <source>Open</source>
@@ -185,7 +185,7 @@
     </message>
     <message>
         <source>Medium Eraser</source>
-        <translation>Borrador medio</translation>
+        <translation>Borrador mediano</translation>
     </message>
     <message>
         <source>Large Eraser</source>
@@ -229,23 +229,23 @@
     </message>
     <message>
         <source>Bookmarks</source>
-        <translation>Marcadores</translation>
+        <translation>Favoritos</translation>
     </message>
     <message>
         <source>Show Bookmarks</source>
-        <translation>Mostrar marcadores</translation>
+        <translation>Mostrar favoritos</translation>
     </message>
     <message>
         <source>Bookmark</source>
-        <translation>Marcador</translation>
+        <translation>Favorito</translation>
     </message>
     <message>
         <source>Add Bookmark</source>
-        <translation>Añadir marcador</translation>
+        <translation>Añadir a favoritos</translation>
     </message>
     <message>
         <source>Display Board</source>
-        <translation>Mostrar marcador</translation>
+        <translation>Mostrar pizarra</translation>
     </message>
     <message>
         <source>Ctrl+B</source>
@@ -417,7 +417,7 @@
     </message>
     <message>
         <source>Wide Size (16/9)</source>
-        <translation>Tamaña ancho (16/9)</translation>
+        <translation>Tamaño ancho (16/9)</translation>
     </message>
     <message>
         <source>Use Document Wide Size (16/9)</source>
@@ -537,7 +537,7 @@
     </message>
     <message>
         <source>Clear All Elements</source>
-        <translation>Eliminar todos los elementos</translation>
+        <translation>Borrar todos los elementos</translation>
     </message>
     <message>
         <source>Pen</source>
@@ -689,7 +689,7 @@
     </message>
     <message>
         <source>Pause Podcast Recording</source>
-        <translation>Poner en pausa la grabación de Podcast</translation>
+        <translation>Pausar la grabación de Podcast</translation>
     </message>
     <message>
         <source>Podcast Config</source>
@@ -701,19 +701,19 @@
     </message>
     <message>
         <source>Flash Trap</source>
-        <translation>Trampa flash</translation>
+        <translation>Captura de elemento Flash</translation>
     </message>
     <message>
         <source>Trap Flash Content</source>
-        <translation>Contenido de la trampa de flash</translation>
+        <translation>Capturar contenido Flash</translation>
     </message>
     <message>
         <source>Web Trap</source>
-        <translation>Trampa web</translation>
+        <translation>Captura de contenido web</translation>
     </message>
     <message>
         <source>Trap Web Content</source>
-        <translation>Contenido de la trampa web</translation>
+        <translation>Capturar contenido web</translation>
     </message>
     <message>
         <source>Custom Capture</source>
@@ -800,12 +800,28 @@
         <translation>Importar viejos documentos de Sankore o Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Agrupar elementos</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Reproducir</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interactuar con los elementos</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Borrar el Fondo</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Eliminar el fondo</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Agrupar</translation>
     </message>
 </context>
 <context>
@@ -849,32 +865,27 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Papelera</translation>
+        <source>Element ID = </source>
+        <translation>Elemento ID = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Inicio</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>El formato de destino no permite este contenido</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>No se puede cargar contenido</translation>
+        <source>Remove Page</source>
+        <translation>Eliminar página</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Cargando...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>¿Está seguro de que quiere eliminar 1 página del documento seleccionado.'%0?</translation>
     </message>
 </context>
 <context>
     <name>UBApplication</name>
     <message>
         <source>Page Size</source>
-        <translation>Tamaño de  página</translation>
+        <translation>Tamaño de página</translation>
     </message>
     <message>
         <source>Podcast</source>
@@ -901,14 +912,14 @@
     </message>
     <message>
         <source>Update</source>
-        <translation>Actualización</translation>
+        <translation>Actualizar</translation>
     </message>
 </context>
 <context>
     <name>UBBoardController</name>
     <message>
         <source>Downloading content %1 failed</source>
-        <translation>Fallo de descarga de  contenido %1</translation>
+        <translation>Fallo al descargar contenido %1</translation>
     </message>
     <message>
         <source>Download finished</source>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>Todos compatibles (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Borrar la página %1 del documento</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Página %1 eliminada</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Todas las operaciones con ficheros han fallado. Error al copiar los ficheros</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Agrupar</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Desagrupar</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Error al añadir la imagen a la biblioteca</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Imagen capturada</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Mostrar Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Capturar parte de la pantalla</translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Mostrar escritorio en la pantalla secundaria</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Mostrar Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1064,21 +1099,17 @@
     </message>
     <message>
         <source>Importing file %1...</source>
-        <translation>Importando archivo %1</translation>
+        <translation>Importando archivo %1...</translation>
     </message>
     <message>
         <source>Failed to import file ... </source>
-        <translation>Fallo de la importación de archivo...</translation>
+        <translation>Fallo al importar archivo ...</translation>
     </message>
     <message>
         <source>Import all Images from Folder</source>
         <translation>Importar todas las imágenes desde la carpeta</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>¡La carpeta no contiene ningún archivo de imagen!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Eliminar</translation>
     </message>
@@ -1112,28 +1143,41 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>¿Está seguro de que desea eliminar %n página(s) del documento seleccionado '%1'?</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Portada</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>La carpeta no contiene ningún fichero con imágenes</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documentos sin título</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
     <message>
         <source>images</source>
-        <translation>imágenes</translation>
+        <translation>Imágenes</translation>
     </message>
     <message>
         <source>videos</source>
-        <translation>vídeos</translation>
+        <translation>Vídeos</translation>
     </message>
     <message>
         <source>objects</source>
-        <translation>objetos</translation>
+        <translation>Objetos</translation>
     </message>
     <message>
         <source>widgets</source>
-        <translation>widgets</translation>
+        <translation>Widgets</translation>
     </message>
     <message>
         <source>All supported files (*.%1)</source>
@@ -1144,12 +1188,20 @@
         <translation>Archivo %1 guardado</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importando página %1 de %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Insertando página %1 de %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Importación correcta</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>El archivo %1 se ha importado correctamente</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Datos de imagen erróneos, archivo omitido %1</translation>
+        <source>Importing file %1</source>
+        <translation>Importando el fichero %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1210,10 @@
         <source>Page %0</source>
         <translation>Página %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Portada</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1175,7 +1231,7 @@
     </message>
     <message>
         <source>Credentials has to not been filled out yet.</source>
-        <translation>Todavía no se han rellenado las credenciales.</translation>
+        <translation>Todavía no se han completado las credenciales.</translation>
     </message>
     <message>
         <source>Uploading Sankore File on Web.</source>
@@ -1202,7 +1258,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 páginas copiadas</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1219,26 +1276,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Han aparecido advertencias durante la exportación</translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar a IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar como fichero IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportando documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Exportación satisfactoria.</translation>
+        <translation>Exportación satisfactoria.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo en la exportación</translation>
     </message>
 </context>
 <context>
@@ -1276,7 +1340,7 @@
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation>Exportando documento</translation>
+        <translation>Exportando documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
@@ -1341,68 +1405,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Añadir a la página</translation>
+        <translation>Añadir a la página</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Definir como fondo</translation>
+        <translation>Definir como fondo</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Añadir a biblioteca</translation>
+        <translation>Añadir a biblioteca</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Información del objeto</translation>
+        <translation>Información del objeto</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Añadir a favoritos</translation>
+        <translation>Añadir a favoritos</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Compartir</translation>
+        <translation>Compartir</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>Buscar</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Eliminar</translation>
+        <translation>Eliminar</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Regresar a la carpeta</translation>
+        <translation>Regresar a la carpeta</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Eliminar de favoritos</translation>
+        <translation>Eliminar de favoritos</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Crear nueva carpeta</translation>
+        <translation>Crear nueva carpeta</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Comprobar los ficheros del sistema</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Imagen importada</translation>
+        <translation>Imagen importada</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Ficheros de Audio</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Películas</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Imágenes</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animaciones</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interactividades</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplicaciones</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Formas</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoritos</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Búsqueda Web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papelera</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Aceptar</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Introduzca en nuevo nombre para la carpeta</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Cargando </translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Bloqueado</translation>
+        <translation>Bloqueado</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Visible en pantalla extendida</translation>
+        <translation>Visible en pantalla extendida</translation>
     </message>
 </context>
 <context>
@@ -1439,6 +1569,20 @@
     </message>
 </context>
 <context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Cargando...</translation>
+    </message>
+</context>
+<context>
     <name>UBGraphicsWidgetItemDelegate</name>
     <message>
         <source>Frozen</source>
@@ -1488,7 +1632,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1641,6 @@
         <source>Image Format (</source>
         <translation>Formato de imagen (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Fallo de la importación de la imagen.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Importación de imagen satisfactoria.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,16 +1656,12 @@
         <source>Importing page %1 of %2</source>
         <translation>Importando página %1 de %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importación de PDF satisfactoria.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
     <message>
         <source>Error while publishing video to intranet (%1)</source>
-        <translation>Error mientras se publicaba vídeo en intranet (%1)</translation>
+        <translation>Error el publicar vídeo en intranet (%1)</translation>
     </message>
     <message>
         <source>Publishing to Intranet in progress %1 %</source>
@@ -1547,121 +1679,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Añadir a favoritos</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Compartir</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Buscar</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Eliminar</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Regresar a la carpeta</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Eliminar de favoritos</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Crear nueva carpeta</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Añadir a la página</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Definir como fondo</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Añadir a biblioteca</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Información del objeto</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>Se añadió una imagen a la biblioteca</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Audios</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Películas</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Imágenes</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Formas</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Aplicaciones</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favorito</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Creando miniatura de imagen para %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>La adición a la página falló para el elemento %1.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interactividades</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Imagen importada</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animaciones</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Entrar</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1698,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Cerrar</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1697,13 +1722,7 @@
 %2
 
 Do you want to ignore these errors for this host?</source>
-        <translation>Errores SSL:
-
-%1
-
-%2
-
-¿Desea ignorar estos errores para este servidor?</translation>
+        <translation>Errores SSL: %1 %2 ¿Desea ignorar estos errores para este servidor?</translation>
     </message>
     <message>
         <source>Yes</source>
@@ -1715,37 +1734,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Añadir nueva carpeta</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nombre de la nueva carpeta:</translation>
+        <source>(copy)</source>
+        <translation>(copiar)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Añadir</translation>
+        <source>Document Repository Loss</source>
+        <translation>Pérdida de depósito de documentos</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Cancelar</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore ha perdido acceso al depósito de documentos '%1'. Desafortunadamente la aplicación debe cerrarse para evitar daños en los datos. También se podrían perder los últimos cambios.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copiar)</translation>
+        <source>English</source>
+        <translation>Inglés</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Pérdida de depósito de documentos</translation>
+        <source>Russian</source>
+        <translation>Ruso</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore ha perdido acceso al depósito de documentos '%1'. Desafortunadamente la aplicación debe cerrarse para evitar la corrupción de los datos. También se podrían perder los últimos cambios.</translation>
+        <source>German</source>
+        <translation>Alemán</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francés</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francés-Suizo</translation>
     </message>
 </context>
 <context>
@@ -1776,7 +1799,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Podcast recording error (%1)</source>
-        <translation>Error de grabación de podcast (%1)</translation>
+        <translation>Error en la grabación de podcast (%1)</translation>
     </message>
     <message>
         <source>Default Audio Input</source>
@@ -1859,14 +1882,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Documentos sin título</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Papelera</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mis películas</translation>
     </message>
@@ -1875,33 +1890,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Profesor</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Estudiante</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escribir la tarea aquí ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Suelte el elemento multimedia aquí ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escriba aquí el título ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Inserte aquí el título del enlace ...</translation>
     </message>
 </context>
 <context>
@@ -1915,131 +1930,131 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escriba el título aquí ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escriba el comentario aquí ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir una acción</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir un fichero multimedia</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir un enlace</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Página: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escriba aquí el título de la sesión ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor(es)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escriba aquí los autores ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Objetivo(s)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Escriba aquí los objetivos ...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Ordenando los recursos</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Palabras Clave:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Escriba aquí las palabras clave ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nivel:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Materias:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tipo:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licencia</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribución CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribución-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribución-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribución-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribución-NonCommercial-Noderivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribución-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Dominio Público</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Copyright</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Creado el:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Actualizado el:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Portada</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Página: %0</translation>
     </message>
 </context>
 <context>
@@ -2103,7 +2118,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source> files require an update.</source>
-        <translation>los archivos requieren una actualización.</translation>
+        <translation> los archivos requieren una actualización.</translation>
     </message>
     <message>
         <source>Backup path: </source>
@@ -2125,11 +2140,11 @@ Do you want to ignore these errors for this host?</source>
         <source>Files update successful!
 Please reboot the application to access the updated documents.</source>
         <translation>¡Actualización de archivos satisfactoria!
-Por favor reinicie la aplicación para acceder a los documentos actualizados.</translation>
+Por favor, reinicie la aplicación para acceder a los documentos actualizados.</translation>
     </message>
     <message>
         <source>An error occured during the update. The files have not been affected.</source>
-        <translation>Ha ocurrido un error durante la actualización. Los archivos no se han afectado.</translation>
+        <translation>Ha ocurrido un error durante la actualización. Los archivos no han sido afectados.</translation>
     </message>
     <message>
         <source>Files update results</source>
@@ -2145,14 +2160,7 @@ Por favor reinicie la aplicación para acceder a los documentos actualizados.</t
     </message>
     <message>
         <source>Remind me later</source>
-        <translation>Recordarme más tarde</translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Recordármelo más tarde</translation>
     </message>
 </context>
 <context>
@@ -2180,16 +2188,24 @@ Por favor reinicie la aplicación para acceder a los documentos actualizados.</t
     <name>UBYouTubePublisher</name>
     <message>
         <source>YouTube authentication failed.</source>
-        <translation>Fallo en la autentificación de YouTube</translation>
+        <translation>Fallo en la autentificación de YouTube.</translation>
     </message>
     <message>
         <source>Error while uploading video to YouTube (%1)</source>
-        <translation>Error mientras se cargaba el vídeo a YouTube (%1)</translation>
+        <translation>Error al cargar el vídeo a YouTube (%1)</translation>
     </message>
     <message>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Carga a YoutTube en progreso %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2215,7 +2231,7 @@ Por favor reinicie la aplicación para acceder a los documentos actualizados.</t
     </message>
     <message>
         <source>Travel & Events</source>
-        <translation>Viaje & Eventos</translation>
+        <translation>Viajes & Eventos</translation>
     </message>
     <message>
         <source>Gaming</source>
@@ -2384,34 +2400,34 @@ Por favor reinicie la aplicación para acceder a los documentos actualizados.</t
     <name>WBTabBar</name>
     <message>
         <source>New &Tab</source>
-        <translation>Nueva &Ficha</translation>
+        <translation>Nueva &Pestaña</translation>
     </message>
     <message>
         <source>Clone Tab</source>
-        <translation>Ficha Clon</translation>
+        <translation>Duplicar pestaña</translation>
     </message>
     <message>
         <source>&Close Tab</source>
-        <translation>Ficha &Cerrar</translation>
+        <translation>&Cerrar pestaña</translation>
     </message>
     <message>
         <source>Close &Other Tabs</source>
-        <translation>Ficha Cerrar & Otros</translation>
+        <translation>Cerrar & Otras pestañas</translation>
     </message>
     <message>
         <source>Reload Tab</source>
-        <translation>Ficha Recargar</translation>
+        <translation>Recargar pestaña</translation>
     </message>
     <message>
         <source>Reload All Tabs</source>
-        <translation>Volver a cargar todas las fichas</translation>
+        <translation>Volver a cargar todas las pestañas</translation>
     </message>
 </context>
 <context>
     <name>WBTabWidget</name>
     <message>
         <source>Recently Closed Tabs</source>
-        <translation>Fichas cerradas recientemente</translation>
+        <translation>Pestañas cerradas recientemente</translation>
     </message>
     <message>
         <source>(Untitled)</source>
@@ -2445,7 +2461,7 @@ Por favor reinicie la aplicación para acceder a los documentos actualizados.</t
     </message>
     <message>
         <source>Add to Current Document</source>
-        <translation>Añadir al documento reciente</translation>
+        <translation>Añadir al documento actual</translation>
     </message>
     <message>
         <source>PDF</source>
@@ -2464,7 +2480,7 @@ Por favor reinicie la aplicación para acceder a los documentos actualizados.</t
     <name>WBWebView</name>
     <message>
         <source>Open in New Tab</source>
-        <translation>Abrir en nueva ficha</translation>
+        <translation>Abrir en nueva pestaña</translation>
     </message>
 </context>
 <context>
@@ -2511,7 +2527,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Al hacer clic en 'Descargar' usted certifica que posee todos los derechos sobre el contenido o que está autorizado por el propietario a publicar el contenido en YouTube, y que éste  cumple con los términos de servicio de YouTube que aparecen en</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Al hacer clic en 'Descargar' usted certifica que posee todos los derechos sobre el contenido o que está autorizado por el propietario a publicar el contenido en YouTube, y que éste cumple con los términos de servicio de YouTube que aparecen en</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -2561,7 +2581,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>E-mail</source>
-        <translation>Correo-e</translation>
+        <translation>Correo electrónico</translation>
     </message>
     <message>
         <source>Author</source>
@@ -2584,7 +2604,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>E-mail</source>
-        <translation>Correo-e</translation>
+        <translation>Correo electrónico</translation>
     </message>
     <message>
         <source>Author</source>
@@ -2596,7 +2616,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Attach Downloadable PDF Version</source>
-        <translation>Adjuntarla versión del PDF descargable</translation>
+        <translation>Adjuntar la versión del PDF descargable</translation>
     </message>
     <message>
         <source>Attach Downloadable Uniboard File (UBZ)</source>
@@ -2604,7 +2624,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation>Advertencia: este documento contiene vídeo, el cual no se mostrará adecuadamente en la web</translation>
+        <translation>Advertencia: Este documento contiene vídeo, el cual no se mostrará adecuadamente en la web</translation>
     </message>
 </context>
 <context>
@@ -2662,11 +2682,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
-        <translation>Posicionado en la parte superior (recomendado para la tabletas)</translation>
+        <translation>Colocar en la parte superior (recomendado para computadores tipo tablet)</translation>
     </message>
     <message>
         <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation>Posicionado en la parte inferior (recomendado para pizarras blancas)</translation>
+        <translation>Colocar en la parte inferior (recomendado para pizarras blancas)</translation>
     </message>
     <message>
         <source>Display Text Under Button</source>
@@ -2734,274 +2754,525 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar el contenido de la página web en un monitor secundario o proyector</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Pantalla múltiple</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Intercambiar control de pantalla y vista de pantalla</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Modalidad</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Comenzar en modalidad :</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Pizarra</translation>
+        <translation>Pizarra</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Escritorio</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nombre de usuario Proxy:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Contraseña:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">ID Planète Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nombre de usuario:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Contraseña:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Créditos</translation>
     </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3009,12 +3280,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3022,10 +3292,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -3033,11 +3344,11 @@ p, li { white-space: pre-wrap; }
     <name>trapFlashDialog</name>
     <message>
         <source>Trap flash</source>
-        <translation>Atrapar flash</translation>
+        <translation>Capturar elemento flash</translation>
     </message>
     <message>
         <source>Select a flash to trap</source>
-        <translation>Seleccionar un flash para atrapar</translation>
+        <translation>Seleccionar un flash para capturar</translation>
     </message>
     <message>
         <source>about:blank</source>
diff --git a/Sankore-3.1/resources/i18n/sankore_fr.ts b/Sankore-3.1/resources/i18n/sankore_fr.ts
index 40fd627..ca0a799 100644
--- a/Sankore-3.1/resources/i18n/sankore_fr.ts
+++ b/Sankore-3.1/resources/i18n/sankore_fr.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="en_US">
+<TS version="2.0" language="fr_FR">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -12,7 +12,7 @@
     <name>DownloadDialog</name>
     <message>
         <source>Downloads</source>
-        <translation>Téléchargements</translation>
+        <translation>Téléchargement(s)</translation>
     </message>
     <message>
         <source>Clean Up</source>
@@ -20,7 +20,7 @@
     </message>
     <message>
         <source>0 Items</source>
-        <translation>0 éléments</translation>
+        <translation>0 élément</translation>
     </message>
 </context>
 <context>
@@ -39,7 +39,7 @@
     </message>
     <message>
         <source>Stop</source>
-        <translation>Stop</translation>
+        <translation>Arrêter</translation>
     </message>
     <message>
         <source>Open</source>
@@ -50,7 +50,7 @@
     <name>IntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Publier le Podcast sur YouTube</translation>
+        <translation>Publier Podcast sur YouTube</translation>
     </message>
     <message>
         <source>Title</source>
@@ -73,7 +73,7 @@
     </message>
     <message>
         <source>Stylus</source>
-        <translation>Stylet</translation>
+        <translation>Stylets</translation>
     </message>
     <message>
         <source>Backgrounds</source>
@@ -93,7 +93,7 @@
     </message>
     <message>
         <source>PgUp</source>
-        <translation>PgUp</translation>
+        <translation>Page haut</translation>
     </message>
     <message>
         <source>Next</source>
@@ -101,7 +101,7 @@
     </message>
     <message>
         <source>PgDown</source>
-        <translation>PgDown</translation>
+        <translation>Page bas</translation>
     </message>
     <message>
         <source>Documents</source>
@@ -129,7 +129,7 @@
     </message>
     <message>
         <source>Marker</source>
-        <translation>Marqueur</translation>
+        <translation>Surligneur</translation>
     </message>
     <message>
         <source>Selector</source>
@@ -141,11 +141,11 @@
     </message>
     <message>
         <source>Zoom In</source>
-        <translation>Zoom avant</translation>
+        <translation>Zoomer en avant</translation>
     </message>
     <message>
         <source>Zoom Out</source>
-        <translation>Zoom arrière</translation>
+        <translation>Zoomer en arrière</translation>
     </message>
     <message>
         <source>Text</source>
@@ -177,23 +177,23 @@
     </message>
     <message>
         <source>Configure Podcast Recording</source>
-        <translation>Configurer podcast</translation>
+        <translation>Configurer le podcast</translation>
     </message>
     <message>
         <source>Flash Trap</source>
-        <translation>Capture Flash</translation>
+        <translation>Capturer du contenu Flash</translation>
     </message>
     <message>
         <source>Trap Flash Content</source>
-        <translation>Capturer Flash</translation>
+        <translation>Capturer du contenu Flash</translation>
     </message>
     <message>
         <source>Web Trap</source>
-        <translation>Capture Web</translation>
+        <translation>Capturer du contenu Web</translation>
     </message>
     <message>
         <source>Trap Web Content</source>
-        <translation>Capturer contenu web</translation>
+        <translation>Capturer du contenu Web</translation>
     </message>
     <message>
         <source>Window Capture</source>
@@ -293,11 +293,11 @@
     </message>
     <message>
         <source>Reload</source>
-        <translation>Rafraîchir</translation>
+        <translation>Recharger</translation>
     </message>
     <message>
         <source>Reload Current Page</source>
-        <translation>Rafraîchir la page courante</translation>
+        <translation>Recharger la page courante</translation>
     </message>
     <message>
         <source>Load Home Page</source>
@@ -365,7 +365,7 @@
     </message>
     <message>
         <source>Delete Selected Content</source>
-        <translation>Effacer le contenu sélectionné</translation>
+        <translation>Supprimer le contenu sélectionné</translation>
     </message>
     <message>
         <source>Add Content to Document</source>
@@ -373,15 +373,15 @@
     </message>
     <message>
         <source>Tutorial</source>
-        <translation>Tutoriel</translation>
+        <translation>Tutoriels</translation>
     </message>
     <message>
         <source>Show Desktop</source>
-        <translation>Afficher le bureau</translation>
+        <translation>Bureau</translation>
     </message>
     <message>
         <source>Ctrl+Shift+H</source>
-        <translation>Ctrl+Shift+H</translation>
+        <translation>Ctrl+Maj+H</translation>
     </message>
     <message>
         <source>Rename Content</source>
@@ -393,11 +393,11 @@
     </message>
     <message>
         <source>Use Document Wide Size (16/9)</source>
-        <translation>Utiliser le format de document 16/9</translation>
+        <translation>Utiliser un format large (16/9)</translation>
     </message>
     <message>
         <source>Use Document Regular Size (4/3)</source>
-        <translation>Utiliser le format de document 4/3</translation>
+        <translation>Utiliser un format normal (4/3)</translation>
     </message>
     <message>
         <source>Use Custom Document Size</source>
@@ -405,11 +405,11 @@
     </message>
     <message>
         <source>Stop Loading Web Page</source>
-        <translation>Stopper le chargement de la page web</translation>
+        <translation>Arrêter le chargement de la page Web</translation>
     </message>
     <message>
         <source>Put Presentation to Sleep</source>
-        <translation>Mettre la présentation sur pause</translation>
+        <translation>Mettre la présentation en pause</translation>
     </message>
     <message>
         <source>Display Virtual Keyboard</source>
@@ -417,11 +417,11 @@
     </message>
     <message>
         <source>Record Presentation to Video</source>
-        <translation>Enregistrer la présentation sur une vidéo</translation>
+        <translation>Enregistrer la présentation en vidéo</translation>
     </message>
     <message>
         <source>Erase Items</source>
-        <translation>Effacer les objets</translation>
+        <translation>Effacer les éléments</translation>
     </message>
     <message>
         <source>Erase All Items</source>
@@ -453,7 +453,7 @@
     </message>
     <message>
         <source>Erase Annotation</source>
-        <translation>Effacer une annotation</translation>
+        <translation>Effacer l'annotation</translation>
     </message>
     <message>
         <source>Ctrl+E</source>
@@ -461,11 +461,11 @@
     </message>
     <message>
         <source>Highlight </source>
-        <translation>Mettre en surbrillance</translation>
+        <translation>Surligner </translation>
     </message>
     <message>
         <source>Ctrl+M</source>
-        <translation></translation>
+        <translation>Ctrl+M</translation>
     </message>
     <message>
         <source>Select And Modify Objects</source>
@@ -473,51 +473,51 @@
     </message>
     <message>
         <source>Ctrl+F</source>
-        <translation></translation>
+        <translation>Ctrl+F</translation>
     </message>
     <message>
         <source>Scroll Page</source>
-        <translation>Faire défiler la page</translation>
+        <translation>Déplacer la page</translation>
     </message>
     <message>
         <source>Laser Pointer</source>
-        <translation>Pointeur laser</translation>
+        <translation>Utiliser le "pointeur laser"</translation>
     </message>
     <message>
         <source>Virtual Laser Pointer</source>
-        <translation>Pointeur laser virtuel</translation>
+        <translation>Utiliser le "pointeur laser"</translation>
     </message>
     <message>
         <source>Ctrl+G</source>
-        <translation></translation>
+        <translation>Ctrl+G</translation>
     </message>
     <message>
         <source>Draw Lines</source>
-        <translation>Dessiner des lignes</translation>
+        <translation>Tracer une ligne droite</translation>
     </message>
     <message>
         <source>Ctrl+J</source>
-        <translation></translation>
+        <translation>Ctrl+J</translation>
     </message>
     <message>
         <source>Write Text</source>
-        <translation>Ecrire du texte</translation>
+        <translation>Ecrire un texte</translation>
     </message>
     <message>
         <source>Ctrl+K</source>
-        <translation></translation>
+        <translation>Ctrl+K</translation>
     </message>
     <message>
         <source>Add Item To Current Page</source>
-        <translation>Ajouter un élément à la page courante</translation>
+        <translation>Ajouter l'élément à la page courante</translation>
     </message>
     <message>
         <source>Add Item To New Page</source>
-        <translation>Ajouter un élément à une nouvelle page</translation>
+        <translation>Ajouter l'élément à une nouvelle page</translation>
     </message>
     <message>
         <source>Add Item To Library</source>
-        <translation>Ajouter un élément à la bibliothèque</translation>
+        <translation>Ajouter l'élément à la bibliothèque</translation>
     </message>
     <message>
         <source>Create a New Page</source>
@@ -549,19 +549,19 @@
     </message>
     <message>
         <source>Podcast Config</source>
-        <translation>Config podcast</translation>
+        <translation>Configuration du podcast</translation>
     </message>
     <message>
         <source>Open the tutorial</source>
-        <translation>Ouvrir le didacticiel</translation>
+        <translation>Ouvrir les tutoriels</translation>
     </message>
     <message>
         <source>Check Update</source>
-        <translation>Contrôler les mises à jour</translation>
+        <translation>Contrôler la mise à jour</translation>
     </message>
     <message>
         <source>Ctrl+H</source>
-        <translation></translation>
+        <translation>Ctrl+H</translation>
     </message>
     <message>
         <source>Capture Part of the Screen</source>
@@ -577,11 +577,11 @@
     </message>
     <message>
         <source>Embed Web Content</source>
-        <translation>Embarquer un contenu web</translation>
+        <translation>Embarquer un contenu Web</translation>
     </message>
     <message>
         <source>Capture Embeddable Web Content</source>
-        <translation>Capturer un contenu web embarquable</translation>
+        <translation>Capturer un contenu Web embarquable</translation>
     </message>
     <message>
         <source>Show Main Screen on Display Screen</source>
@@ -593,7 +593,7 @@
     </message>
     <message>
         <source>eduMedia</source>
-        <translation></translation>
+        <translation>eduMedia</translation>
     </message>
     <message>
         <source>Import eduMedia simulation</source>
@@ -601,7 +601,7 @@
     </message>
     <message>
         <source>Del</source>
-        <translation>Del</translation>
+        <translation>Supprimer</translation>
     </message>
     <message>
         <source>Add Selected Content to Open Document</source>
@@ -609,7 +609,7 @@
     </message>
     <message>
         <source>Stop Loading</source>
-        <translation>Arrêter le chargement</translation>
+        <translation>Arrêter</translation>
     </message>
     <message>
         <source>Sleep</source>
@@ -645,15 +645,15 @@
     </message>
     <message>
         <source>Wide Size (16/9)</source>
-        <translation>Taille cinéma</translation>
+        <translation>Format large (16/9)</translation>
     </message>
     <message>
         <source>Regular Size (4/3)</source>
-        <translation>Taille nominale</translation>
+        <translation>Format normal (4/3)</translation>
     </message>
     <message>
         <source>Custom Size</source>
-        <translation>Taille spécifique</translation>
+        <translation>Format personnalisé</translation>
     </message>
     <message>
         <source>Ctrl+L</source>
@@ -701,7 +701,7 @@
     </message>
     <message>
         <source>Multi Screen</source>
-        <translation>Multi-écran</translation>
+        <translation>Multi-écrans</translation>
     </message>
     <message>
         <source>New Folder</source>
@@ -729,7 +729,7 @@
     </message>
     <message>
         <source>Add to Working Document</source>
-        <translation>Ajouter au document en cours</translation>
+        <translation>Ajouter au document</translation>
     </message>
     <message>
         <source>Add</source>
@@ -741,7 +741,7 @@
     </message>
     <message>
         <source>Home</source>
-        <translation>Page d'accueil</translation>
+        <translation>Accueil</translation>
     </message>
     <message>
         <source>Bookmarks</source>
@@ -777,19 +777,19 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation>Editeur Open-Sankoré</translation>
+        <translation>Éditeur Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation>Ouvrir l'éditeur d'appliquette Open-Sankoré</translation>
+        <translation>Ouvrir l'éditeur d'appliquettes Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation>Cacher Open-Sankoré</translation>
+        <translation>Masquer Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation>Cacher Open-Sankoré</translation>
+        <translation>Masquer Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
@@ -797,14 +797,31 @@
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation>Importer les anciens documents Sankoré et Uniboard</translation>
+        <translation>Importer les anciens documents Sankoré ou Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation>Grouper</translation>
+        <source>Group items</source>
+        <translation>Grouper les objets</translation>
     </message>
     <message>
-        <source>Group items</source>
+        <source>Play</source>
+        <translatorcomment>j'hésite avec Lancer (dépend du contexte d'usage)</translatorcomment>
+        <translation>Jouer</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagir avec des objets</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Effacer le fond</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Supprimer le fond</translation>
+    </message>
+    <message>
+        <source>Group</source>
         <translation>Grouper</translation>
     </message>
 </context>
@@ -816,11 +833,11 @@
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nom d'utilisateur:</translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>Mot de passe:</translation>
+        <translation>Mot de passe :</translation>
     </message>
 </context>
 <context>
@@ -831,50 +848,45 @@
     </message>
     <message>
         <source>Connect to Proxy</source>
-        <translation>Se connecter au proxy</translation>
+        <translation>Se connecter par le proxy</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nom d'utilisateur:</translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>Mot de passe:</translation>
+        <translation>Mot de passe :</translation>
     </message>
     <message>
         <source>Save username and password for future use</source>
-        <translation>Sauver nom d'utilisateur et mot de passe pour une utilisation future</translation>
+        <translation>Enregistrer le nom d'utilisateur et le mot de passe pour la prochaine.utilisation</translation>
     </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Corbeille</translation>
+        <source>Element ID = </source>
+        <translation>ID de l'élément = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Accueil</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Contenu non supporté dans le format souhaité.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Impossible de charger le contenu</translation>
+        <source>Remove Page</source>
+        <translation>Supprimer la page</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Chargement en cours ...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Voulez-vous vraiment effacer 1 page de ce document '%0'?</translation>
     </message>
 </context>
 <context>
     <name>UBApplication</name>
     <message>
         <source>Page Size</source>
-        <translation>Taille de la Page</translation>
+        <translation>Taille de la page</translation>
     </message>
     <message>
         <source>Podcast</source>
@@ -889,15 +901,15 @@
     </message>
     <message>
         <source>New update available, would you go to the web page ?</source>
-        <translation>Nouvelle mise à jour disponible, voulez-vous aller à la page web ?</translation>
+        <translation>Nouvelle mise à jour disponible : voulez-vous accéder à la page de téléchargement ?</translation>
     </message>
     <message>
         <source>No update available</source>
-        <translation>Pas de nouvelle mise à jour disponible</translation>
+        <translation>Pas de mise à jour disponible</translation>
     </message>
     <message>
         <source>Update available</source>
-        <translation>Mise à jour indisponible</translation>
+        <translation>Mise à jour disponible</translation>
     </message>
     <message>
         <source>Update</source>
@@ -920,7 +932,7 @@
     </message>
     <message>
         <source>Add Item</source>
-        <translation>Ajout objet</translation>
+        <translation>Ajouter un élément</translation>
     </message>
     <message>
         <source>All Supported (%1)</source>
@@ -930,6 +942,26 @@
         <source>Unknown content type %1</source>
         <translation>Type de contenu inconnu (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Supprimer la page %1 du document</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Page %1 supprimée</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Echec d'ajout de document : erreur de copie</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grouper</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Dégrouper</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,12 +969,16 @@
         <source>Error Adding Image to Library</source>
         <translation>Erreur lors de l'ajout d'images à la bibliothèque</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Image capturée</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
     <message>
         <source>Cache Properties</source>
-        <translation>Propriétés cache</translation>
+        <translation>Propriétés du cache</translation>
     </message>
     <message>
         <source>Color:</source>
@@ -964,10 +1000,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Afficher Sankoré</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Capturer une partie de l'écran</translation>
     </message>
@@ -977,7 +1009,7 @@
     </message>
     <message>
         <source>Show the stylus palette</source>
-        <translation>Afficher la barre d'outil du stylet</translation>
+        <translation>Afficher la barre d'outils du stylet</translation>
     </message>
     <message>
         <source>Show Board on Secondary Screen</source>
@@ -987,12 +1019,16 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Afficher le bureau sur l'écran secondaire</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Afficher Open-Sankoré</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
     <message>
         <source>No document selected!</source>
-        <translation>Aucun document sélectionné!</translation>
+        <translation>Aucun document sélectionné !</translation>
     </message>
     <message>
         <source>Open Supported File</source>
@@ -1012,7 +1048,7 @@
     </message>
     <message>
         <source>Add Pages from File</source>
-        <translation>Ajouter un fichier au document</translation>
+        <translation>Ajouter des pages depuis un fichier</translation>
     </message>
     <message>
         <source>Duplicating Document %1</source>
@@ -1036,7 +1072,7 @@
     </message>
     <message>
         <source>Are you sure you want to empty trash?</source>
-        <translation>Êtes-vous sûr de vouloir vider la corbeille ?</translation>
+        <translation>Voulez-vous vraiment vider la corbeille ?</translation>
     </message>
     <message>
         <source>Emptying trash</source>
@@ -1052,7 +1088,7 @@
     </message>
     <message>
         <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Souhaitez-vous supprimer le dossier '%1'?</translation>
+        <translation>Voulez-vous vraiment supprimer le dossier '%1' et tout son contenu ?</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1067,10 +1103,6 @@
         <translation>Importer toutes les images d'un dossier</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Le dossier ne contient aucune image!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Supprimer</translation>
     </message>
@@ -1088,7 +1120,7 @@
     </message>
     <message>
         <source>Add all Images to Document</source>
-        <translation>Ajouter toutes les images</translation>
+        <translation>Ajouter toutes les images au document</translation>
     </message>
     <message>
         <source>All Images (%1)</source>
@@ -1096,11 +1128,11 @@
     </message>
     <message>
         <source>Selection does not contain any image files!</source>
-        <translation>La séléction ne contient aucune image!</translation>
+        <translation>La sélection ne contient aucune image !</translation>
     </message>
     <message>
         <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Souhaitez-vous supprimer le document '%1'?</translation>
+        <translation>Voulez-vous vraiment supprimer le document '%1'?</translation>
     </message>
     <message>
         <source>Page %1</source>
@@ -1108,15 +1140,27 @@
     </message>
     <message>
         <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
-        <translation>Ce document '%1' a été créé avec une version plus récente de Sankoré (%2). En l'ouvrant, vous risquez de perdre certains éléments. Désirez-vous continuer?</translation>
+        <translation>Le document '%1' a été créé avec une version plus récente d'Open-Sankoré (%2). En l'ouvrant, vous risquez de perdre certains éléments. Désirez-vous continuer ?</translation>
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
-            <numerusform>Êtes-vous sûr de bien vouloir effacer %n page de ce document '%1'?</numerusform>
-            <numerusform>Êtes-vous sûr de bien vouloir effacer %n pages de ce document '%1'?</numerusform>
+            <numerusform>Voulez-vous vraiment effacer %n page de ce document '%1'?</numerusform>
+            <numerusform>Voulez-vous vraiment effacer %n pages de ce document '%1'?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Page de titre</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Le dossier ne contient pas d'image</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documents sans titre</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1141,16 +1185,25 @@
         <translation>Tous les fichiers supportés (*.%1)</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importation de la page %1 sur %2</translation>
+        <source>File %1 saved</source>
+        <translation>Fichier %1 enregistré</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Le fichier %1 n'a pas un format d'image valide</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Ajout de la page %1 sur %2</translation>
     </message>
     <message>
-        <source>File %1 saved</source>
-        <translation>Fichier %1 sauvé</translation>
+        <source>Import successful.</source>
+        <translation>Importation réussie.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importation du document %1 réussie.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translatorcomment>j'ai raccourci la phrase pour eviter les soucis de place !</translatorcomment>
+        <translation>Importation de %1 en cours</translation>
     </message>
 </context>
 <context>
@@ -1159,16 +1212,20 @@
         <source>Page %0</source>
         <translation>Page %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Page de titre</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
     <message>
         <source>Export failed.</source>
-        <translation>Exportation échouée.</translation>
+        <translation>Echec de l'export.</translation>
     </message>
     <message>
         <source>Export canceled ...</source>
-        <translation>Exportation annulée ...</translation>
+        <translation>Export annulée ...</translation>
     </message>
     <message>
         <source>Converting page %1/%2 ...</source>
@@ -1176,19 +1233,19 @@
     </message>
     <message>
         <source>Credentials has to not been filled out yet.</source>
-        <translation>Les informations n'ont pas encore été remplies.</translation>
+        <translation>Les nom d'utilisateur et mot de passe n'ont pas été encore renseignés.</translation>
     </message>
     <message>
         <source>Uploading Sankore File on Web.</source>
-        <translation>Fichier Sankoré en cours d'import sur le Web.</translation>
+        <translation>Fichier Open-Sankoré en cours de transfert vers Planète-Sankoré.</translation>
     </message>
     <message>
         <source>Document uploaded correctly on the web.</source>
-        <translation>Document correctment importé sur le Web.</translation>
+        <translation>Document Open-Sankoré correctement transféré sur Planète Sankoré.</translation>
     </message>
     <message>
         <source>Failed to upload document on the web.</source>
-        <translation>L'import Web du document a échoué.</translation>
+        <translation>Echec du transfert du document vers Planète-Sankoré.</translation>
     </message>
 </context>
 <context>
@@ -1221,37 +1278,44 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Avertissements lors de l'exportation</translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation>Exporter au format IWB</translation>
+        <translation>Exporter au format CFF (*.iwb)</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation>Exporter comme fichier IWB</translation>
+        <translation>Exporter au format CFF (*.iwb)</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation>Exportation du document en cours </translation>
+        <translation>Exportation du document...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export réussi.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Exportation échouée.</translation>
+        <translation>Echec de l'export.</translation>
     </message>
 </context>
 <context>
     <name>UBExportDocument</name>
     <message>
         <source>Export as UBZ File</source>
-        <translation>Exporter au format UBZ</translation>
+        <translation>Exporter au format UBZ (*.ubz)</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export réussi.</translation>
     </message>
     <message>
         <source>Page</source>
@@ -1267,14 +1331,14 @@
     </message>
     <message>
         <source>Export to Sankore Format</source>
-        <translation>Export au format Sankoré</translation>
+        <translation>Exporter au format Open-Sankoré</translation>
     </message>
 </context>
 <context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
-        <translation>Exporter au format PDF</translation>
+        <translation>Exporter au format PDF (*.pdf)</translation>
     </message>
     <message>
         <source>Exporting document...</source>
@@ -1286,14 +1350,14 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export terminé.</translation>
     </message>
 </context>
 <context>
     <name>UBExportPDF</name>
     <message>
         <source>Export as PDF File</source>
-        <translation>Exporter au format PDF</translation>
+        <translation>Exporter au format PDF (*.pdf)</translation>
     </message>
     <message>
         <source>Exporting page %1 of %2</source>
@@ -1301,7 +1365,7 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export terminé.</translation>
     </message>
     <message>
         <source>Exporting document...</source>
@@ -1309,7 +1373,7 @@
     </message>
     <message>
         <source>Export to PDF</source>
-        <translation>Exporter au format PDF</translation>
+        <translation>Exporter au format PDF (*.pdf)</translation>
     </message>
 </context>
 <context>
@@ -1328,11 +1392,11 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export réussi.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Exportation échouée.</translation>
+        <translation>Echec de l'export.</translation>
     </message>
     <message>
         <source>Export to Web Browser</source>
@@ -1343,15 +1407,18 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation>Ajouter à la page</translation>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Ajout page</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation>Ajouter en arrière plan</translation>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Ajout en fond</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation>Ajouter à la librarie</translation>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Ajout bibliothèque</translation>
     </message>
     <message>
         <source>Object informations</source>
@@ -1386,14 +1453,80 @@
     </message>
     <message>
         <source>Create new folder</source>
-        <translation>Créer un nouveau dossier</translation>
+        <translation>Créer nouveau dossier</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Parcourir le système de fichiers</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">ImageImportée</translation>
+        <translation>Image importée</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Sons</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Vidéos</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Images</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animations</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interactivités</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Applications</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Formes</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoris</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Recherche Web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Corbeille</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepter</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Saisir le nom du nouveau dossier</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Chargement en cours </translation>
     </message>
 </context>
 <context>
@@ -1404,7 +1537,7 @@
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation>Visible sur l'écran de projection</translation>
+        <translation>Visible sur l'écran étendu</translation>
     </message>
 </context>
 <context>
@@ -1415,7 +1548,7 @@
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation>Visible sur l'écran de projection</translation>
+        <translation>Visible sur l'écran étendu</translation>
     </message>
     <message>
         <source>Go to Content Source</source>
@@ -1426,7 +1559,7 @@
     <name>UBGraphicsTextItem</name>
     <message>
         <source><Type Text Here></source>
-        <translation><Ecrire votre texte ici></translation>
+        <translation><Saisir votre texte ici></translation>
     </message>
 </context>
 <context>
@@ -1441,10 +1574,24 @@
     </message>
 </context>
 <context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Chargement en cours ...</translation>
+    </message>
+</context>
+<context>
     <name>UBGraphicsWidgetItemDelegate</name>
     <message>
         <source>Frozen</source>
-        <translation>Gelé</translation>
+        <translation>Figé</translation>
     </message>
     <message>
         <source>Transform as Tool </source>
@@ -1455,7 +1602,7 @@
     <name>UBImportCFF</name>
     <message>
         <source>Common File Format (</source>
-        <translation>Format de fichier courant (</translation>
+        <translation>Format de fichier CFF (</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1463,15 +1610,15 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>L'import du fichier %1 a échoué.</translation>
+        <translation>Echec de l'import du fichier %1.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Importation terminée.</translation>
+        <translation>Import terminée.</translation>
     </message>
     <message>
         <source>Import failed.</source>
-        <translation>L'import a échoué.</translation>
+        <translation>Echec de l'import.</translation>
     </message>
 </context>
 <context>
@@ -1482,11 +1629,11 @@
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Importation terminée.</translation>
+        <translation>Import terminé.</translation>
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>L'import du fichier %1 a échoué.</translation>
+        <translation>Échec de l'import du fichier %1.</translation>
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
@@ -1499,33 +1646,21 @@
         <source>Image Format (</source>
         <translation>Format d'image (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Échec d'importation de l'image.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Importation de l'image réussie.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
     <message>
         <source>Portable Document Format (*.pdf)</source>
-        <translation>Portable Document Format (*.pdf)</translation>
+        <translation>Format PDF (*.pdf)</translation>
     </message>
     <message>
         <source>PDF import failed.</source>
-        <translation>L'importation du fichier PDF a échoué.</translation>
+        <translation>Échec de l'import du fichier PDF.</translation>
     </message>
     <message>
         <source>Importing page %1 of %2</source>
         <translation>Importation de la page %1 sur %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importation PDF terminée.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1553,120 +1688,6 @@
     </message>
 </context>
 <context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Ajouter aux favoris</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Partager</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Rechercher</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Supprimer</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Retour au répertoire</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Supprimer des favoris</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Créer un nouveau dossier</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Ajouter à la page</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Ajouter en arrière plan</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Ajouter à la librarie</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Informations</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>1 image ajoutées à la bibiliothèque</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Sons</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Vidéos</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Images</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Formes</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applications</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favoris</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Création de la vignette pour %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Impossible d'ajouter %1 à la page courrante.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interactivités</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>ImageImportée</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animations</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation>Recherche Web</translation>
-    </message>
-</context>
-<context>
     <name>UBMainWindow</name>
     <message>
         <source>Yes</source>
@@ -1682,14 +1703,21 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Fermer</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
-        <translation><qt>Saisir le nom de l'utilisateur et le mot de passe pour "%1" à %2</qt></translation>
+        <translation><qt>Renseigner le nom de l'utilisateur et le mot de passe pour "%1" à %2</qt></translation>
     </message>
     <message>
         <source>Failed to log to Proxy</source>
-        <translation>Erreur d'identification au proxy</translation>
+        <translation>Connexion au proxy impossible</translation>
     </message>
     <message>
         <source>SSL Errors:
@@ -1699,13 +1727,13 @@
 %2
 
 Do you want to ignore these errors for this host?</source>
-        <translation>Erreur SSL:
+        <translation>Erreur SSL (Secure Socket Layer) sur un serveur sécurisé:
 
 %1
 
 %2
 
-Voulez-vous ignorer les erreurs pour ce serveur?</translation>
+Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Yes</source>
@@ -1717,37 +1745,41 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Ajouter un nouveau dossier</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nom du dossier:</translation>
+        <source>(copy)</source>
+        <translation>(copie)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Ajouter</translation>
+        <source>Document Repository Loss</source>
+        <translation>Accès perdu vers le répertoire des documents</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Annuler</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Open-Sankoré a perdu l'accès au répertoire des documents '%1'. L'application doit malheureusement être fermée pour éviter tout risque de corruption de vos fichiers. Les dernières modifications effectuées risquent d'être perdues.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copie)</translation>
+        <source>English</source>
+        <translation>Anglais</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Accès perdu au dépôt de documents</translation>
+        <source>Russian</source>
+        <translation>Russe</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankoré a perdu l'accès au dossier de document '%1'. Malheurheusement l'application doit être fermée pour éviter tout risque de corruption de vos fichiers. Les dernières modifications effectuées risquent d'être perdues.</translation>
+        <source>German</source>
+        <translation>Allemand</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Français</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Français suisse</translation>
     </message>
 </context>
 <context>
@@ -1758,7 +1790,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>No Podcast encoder available ...</source>
-        <translation>Pas d'encodeur podcast disponible...</translation>
+        <translation>Aucun encodeur disponible.pour le podcast...</translation>
     </message>
     <message>
         <source>Part %1</source>
@@ -1798,7 +1830,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Full</source>
-        <translation>Complet</translation>
+        <translation>Maximum</translation>
     </message>
     <message>
         <source>Publish to Intranet</source>
@@ -1810,48 +1842,48 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Sankore Cast</source>
-        <translation></translation>
+        <translation>Podcast Open-Sankoré</translation>
     </message>
 </context>
 <context>
     <name>UBPreferencesController</name>
     <message>
         <source>Marker is pressure sensitive</source>
-        <translation>Marqueur sensible à la pression</translation>
+        <translation>Stylet sensible à la pression</translation>
     </message>
     <message>
         <source>version: </source>
-        <translation>version: </translation>
+        <translation>version : </translation>
     </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
     <message>
         <source>Proxy Login</source>
-        <translation></translation>
+        <translation>Identification sur le Proxy</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nom d'utilisateur:</translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>Mot de passe:</translation>
+        <translation>Mot de passe :</translation>
     </message>
 </context>
 <context>
     <name>UBPublicationDlg</name>
     <message>
         <source>Publish document on the web</source>
-        <translation>Publier le document sur le web</translation>
+        <translation>Publier un fichier Open-Sankoré sur Planète-Sankoré</translation>
     </message>
     <message>
         <source>Title:</source>
-        <translation>Titre:</translation>
+        <translation>Titre :</translation>
     </message>
     <message>
         <source>Description:</source>
-        <translation>Description:</translation>
+        <translation>Description :</translation>
     </message>
     <message>
         <source>Publish</source>
@@ -1861,14 +1893,6 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Documents sans titre</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Corbeille</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mes films</translation>
     </message>
@@ -1877,15 +1901,15 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation>Professeur</translation>
+        <translation>Enseignant</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation>Elève</translation>
+        <translation>Elève/Etudiant</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation>Ajouter une action</translation>
+        <translation>Proposer une action ici ...</translation>
     </message>
 </context>
 <context>
@@ -1896,14 +1920,14 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation>Titre de l'activité</translation>
+        <translation>Renseigner le titre ici ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation>Titre</translation>
+        <translation>Renseigner le titre du lien ici ...</translation>
     </message>
 </context>
 <context>
@@ -1917,11 +1941,11 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation>Titre</translation>
+        <translation>Renseigner le titre de l'activité...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation>Commentaire, descriptif</translation>
+        <translation>Renseigner le commentaire ici ...</translation>
     </message>
     <message>
         <source>Add an action</source>
@@ -1933,7 +1957,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation>Ajouter un lien</translation>
+        <translation>Ajouter un lien web</translation>
     </message>
     <message>
         <source>Page: %0</source>
@@ -1943,40 +1967,48 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation>Titre de la séance</translation>
+        <translation>Renseigner le titre de la séance ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation>Auteur(s)</translation>
+        <translation>Auteur(s) :</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation>Auteur(s)</translation>
+        <translation>Ajouter les auteurs ici ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Objectif(s) de la séance :</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Ajouter les objectifs ici ...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation>Indexation de la ressource</translation>
+        <translation>Métadonnées de la ressource</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation>Mots clé(s)</translation>
+        <translation>Mot(s) clé(s) :</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation>Mots clés</translation>
+        <translation>Ajouter le(s) mot(s) clé(s) ici ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation>Niveau scolaire</translation>
+        <translation>Niveau(x) scolaire(s) :</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Discipline(s) :</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation>Type</translation>
+        <translation>Type(s) :</translation>
     </message>
     <message>
         <source>Licence</source>
@@ -1984,64 +2016,57 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Licence recommandée (CC Paternité 3.0)</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas de modification</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Partage à l'identique</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas d'utilisation commerciale</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas d'utilisation commerciale, Pas de modification</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas d'utilisation commerciale, Partage à l'identique</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domaine public</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais.</translatorcomment>
+        <translation>Protection par le droit d'auteur</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation>Crée le: </translation>
+        <translation>Créé le :</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation>Modifié le: </translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation>Objectif(s)</translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation>Objectifs</translation>
+        <translation>Modifié le :</translation>
     </message>
     <message>
-        <source>Subjects:</source>
-        <translation>Discipline:</translation>
+        <source>Title page</source>
+        <translation>Page de titre</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation></translation>
+        <translation>Page: %0</translation>
     </message>
 </context>
 <context>
@@ -2075,7 +2100,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Triangle</source>
-        <translation>Equerre</translation>
+        <translation>Équerre</translation>
     </message>
     <message>
         <source>Magnifier</source>
@@ -2083,7 +2108,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Cache</source>
-        <translation>Cache</translation>
+        <translation>Spot</translation>
     </message>
 </context>
 <context>
@@ -2105,11 +2130,11 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source> files require an update.</source>
-        <translation>fichiers nécessitent une mise à jour.</translation>
+        <translation>fichiers nécessitant une mise à jour.</translation>
     </message>
     <message>
         <source>Backup path: </source>
-        <translation>Chemin de sauvegarde:</translation>
+        <translation>Chemin de sauvegarde : </translation>
     </message>
     <message>
         <source>Browse</source>
@@ -2126,7 +2151,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     <message>
         <source>Files update successful!
 Please reboot the application to access the updated documents.</source>
-        <translation>Fichiers mis à jour correctement!
+        <translation>Fichiers mis à jour correctement !
 Veuillez redémarrer l'application pour accéder aux documents mis à jour.</translation>
     </message>
     <message>
@@ -2147,14 +2172,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Remind me later</source>
-        <translation></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Me le rappeler plus tard</translation>
     </message>
 </context>
 <context>
@@ -2168,7 +2186,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>UBWebPublisher</name>
     <message>
         <source>Publish Document on Sankore Web</source>
-        <translation>Publier le document sur Planète Sankoré</translation>
+        <translation>Publier un fichier Open-Sankoré sur Planète-Sankoré</translation>
     </message>
 </context>
 <context>
@@ -2186,11 +2204,19 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Error while uploading video to YouTube (%1)</source>
-        <translation>Erreur de téléchargement de la vidéo vers YouTube (%1)</translation>
+        <translation>Erreur lors du transfert de la vidéo vers YouTube (%1)</translation>
     </message>
     <message>
         <source>Upload to YouTube in progress %1 %</source>
-        <translation>Chargement vers YouTube en cours %1 %</translation>
+        <translation>Transfert vers YouTube en cours %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>Open-Sankoré</translation>
     </message>
 </context>
 <context>
@@ -2201,7 +2227,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation>Autos et Véhicules</translation>
+        <translation>Auto/Moto</translation>
     </message>
     <message>
         <source>Music</source>
@@ -2221,7 +2247,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Gaming</source>
-        <translation>Jeux</translation>
+        <translation>Jeux vidéo et autres</translation>
     </message>
     <message>
         <source>Comedy</source>
@@ -2229,7 +2255,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation>People</translation>
+        <translation>Personnalités et blogues</translation>
     </message>
     <message>
         <source>News & Politics</source>
@@ -2249,11 +2275,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation>Associations et organismes</translation>
+        <translation>Organisations à but non lucratif</translation>
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation>Science et technologie</translation>
+        <translation>Sciences et technologies</translation>
     </message>
 </context>
 <context>
@@ -2267,41 +2293,41 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation>Importer les anciens documents Uniboard/Sankoré</translation>
+        <translation>Importer des documents depuis le format Uniboard ou Sankoré</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation>Aucun document trouvé</translation>
+        <translation>Aucun document au format Uniboard n'a été trouvé</translation>
     </message>
 </context>
 <context>
     <name>WBClearButton</name>
     <message>
         <source>Clear</source>
-        <translation>Supprimer</translation>
+        <translation>Effacer</translation>
     </message>
 </context>
 <context>
     <name>WBDownloadItem</name>
     <message>
         <source>Save File</source>
-        <translation>Sauver le fichier</translation>
+        <translation>Enregistrer le fichier</translation>
     </message>
     <message>
         <source>Download canceled: %1</source>
-        <translation>Téléchargement annulé: %1</translation>
+        <translation>Téléchargement annulé : %1</translation>
     </message>
     <message>
         <source>Error opening saved file: %1</source>
-        <translation>Erreur durant l'ouverture du fichier: %1</translation>
+        <translation>Erreur durant l'ouverture du fichier : %1</translation>
     </message>
     <message>
         <source>Error saving: %1</source>
-        <translation>Erreur lors de la sauvegarde du fichier: %1</translation>
+        <translation>Erreur lors de la sauvegarde du fichier : %1</translation>
     </message>
     <message>
         <source>Network Error: %1</source>
-        <translation>Erreur réseau: %1</translation>
+        <translation>Erreur réseau : %1</translation>
     </message>
     <message>
         <source>seconds</source>
@@ -2313,7 +2339,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>- %4 %5 remaining</source>
-        <translation>- %4 %5 restante</translation>
+        <translation>- %4 %5 restante(s)</translation>
     </message>
     <message>
         <source>%1 of %2 (%3/sec) %4</source>
@@ -2322,7 +2348,8 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <message>
         <source>?</source>
         <comment>unknown file size</comment>
-        <translation>?</translation>
+        <translatorcomment>si je me fie aux commentaires des développeurs...</translatorcomment>
+        <translation>Taille de fichier inconnue</translation>
     </message>
     <message>
         <source>%1 of %2 - Stopped</source>
@@ -2334,7 +2361,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>KB</source>
-        <translation>ko</translation>
+        <translation>Ko</translation>
     </message>
     <message>
         <source>MB</source>
@@ -2344,14 +2371,14 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
 <context>
     <name>WBDownloadManager</name>
     <message>
+        <source>1 Download</source>
+        <translation>1 téléchargement(s)</translation>
+    </message>
+    <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
         <translation>%1 téléchargement(s)</translation>
     </message>
-    <message>
-        <source>1 Download</source>
-        <translation>1 Téléchargement</translation>
-    </message>
 </context>
 <context>
     <name>WBHistoryModel</name>
@@ -2390,19 +2417,19 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Clone Tab</source>
-        <translation>Dupliquer l'onglet</translation>
+        <translation>Dupliquer onglet</translation>
     </message>
     <message>
         <source>&Close Tab</source>
-        <translation>&Fermer l'onglet</translation>
+        <translation>&Fermer onglet</translation>
     </message>
     <message>
         <source>Close &Other Tabs</source>
-        <translation>Fermer les &autres onglets</translation>
+        <translation>Fermer &autres onglets</translation>
     </message>
     <message>
         <source>Reload Tab</source>
-        <translation>Recharger l'onglet</translation>
+        <translation>Recharger &onglet</translation>
     </message>
     <message>
         <source>Reload All Tabs</source>
@@ -2428,15 +2455,15 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>No Recent Searches</source>
-        <translation>Aucun historique de recherche</translation>
+        <translation>Aucune recherche récente</translation>
     </message>
     <message>
         <source>Recent Searches</source>
-        <translation>Historique de recherches</translation>
+        <translation>Historique des recherches</translation>
     </message>
     <message>
         <source>Clear Recent Searches</source>
-        <translation>Supprimer l'historique de recherches</translation>
+        <translation>Supprimer l'historique des recherches</translation>
     </message>
 </context>
 <context>
@@ -2455,11 +2482,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Error loading page: %1</source>
-        <translation>Erreur de chargement de la page: %1</translation>
+        <translation>Erreur de chargement de la page : %1</translation>
     </message>
     <message>
         <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
-        <translation>Téléchargement du PDF: préférez-vous téléchargemer le fichier PDF ou l'ajouter à votre document Sankoré actuellement ouvert ?</translation>
+        <translation>Téléchargement du PDF : préférez-vous télécharger le fichier PDF ou l'ajouter à votre document courant ?</translation>
     </message>
 </context>
 <context>
@@ -2473,11 +2500,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>YouTubePublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Publier le Podcast sur YouTube</translation>
+        <translation>Publier le podcast sur YouTube</translation>
     </message>
     <message>
         <source>Title</source>
-        <translation>Titre</translation>
+        <translation>Titre du podcast</translation>
     </message>
     <message>
         <source>Description</source>
@@ -2489,7 +2516,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Uniboard</source>
-        <translation>Sankoré</translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Category</source>
@@ -2497,11 +2524,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>YouTube Username</source>
-        <translation>Utilisateur YouTube</translation>
+        <translation>Nom d'utilisateur YouTube</translation>
     </message>
     <message>
         <source>YouTube Password</source>
-        <translation>Mot de passe</translation>
+        <translation>Mot de passe YouTube</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
@@ -2509,7 +2536,15 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
-        <translation></translation>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Sauvegarder les paramètres de connexion. </translation>
     </message>
 </context>
 <context>
@@ -2528,19 +2563,19 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Line Width</source>
-        <translation>Epaisseur de ligne</translation>
+        <translation>Largeur de ligne</translation>
     </message>
     <message>
         <source>Medium</source>
-        <translation>Moyen</translation>
+        <translation>Moyenne</translation>
     </message>
     <message>
         <source>Strong</source>
-        <translation>Epais</translation>
+        <translation>Large</translation>
     </message>
     <message>
         <source>Fine</source>
-        <translation>Fin</translation>
+        <translation>Fine</translation>
     </message>
     <message>
         <source>Pen is Pressure Sensitive</source>
@@ -2559,7 +2594,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>E-mail</source>
-        <translation>E-mail</translation>
+        <translation>Courriel</translation>
     </message>
     <message>
         <source>Author</source>
@@ -2582,7 +2617,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>E-mail</source>
-        <translation>E-mail</translation>
+        <translation>Courriel</translation>
     </message>
     <message>
         <source>Author</source>
@@ -2594,15 +2629,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Attach Downloadable PDF Version</source>
-        <translation>Attacher la version PDF</translation>
+        <translation>Joindre la version PDF</translation>
     </message>
     <message>
         <source>Attach Downloadable Uniboard File (UBZ)</source>
-        <translation>Attacher le fichier Sankoré (UBZ)</translation>
+        <translation>Joindre le fichier Open-Sankoré (UBZ)</translation>
     </message>
     <message>
         <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation>Attention: Ce document contient une vidéo qui ne peut pas s'afficher correctement sur le Web</translation>
+        <translation>Attention : ce document contient une vidéo qui ne s'affichera pas correctement sur le Web</translation>
     </message>
 </context>
 <context>
@@ -2628,7 +2663,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Display</source>
-        <translation>Affichage</translation>
+        <translation>Afficher</translation>
     </message>
     <message>
         <source>Show Page with External Browser</source>
@@ -2644,11 +2679,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
-        <translation>Positionné en haut (recommandé pour les tablettes)</translation>
+        <translation>Positionnée en haut (recommandé pour les tablettes)</translation>
     </message>
     <message>
         <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation>Positionné en bas (recommandé pour les tableaux blancs)</translation>
+        <translation>Positionnée en bas (recommandé pour les tableaux interactifs)</translation>
     </message>
     <message>
         <source>Display Text Under Button</source>
@@ -2660,7 +2695,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Check software update at launch</source>
-        <translation>Vérifier la mise à jour logicielle au lancement</translation>
+        <translation>Vérifier la mise à jour au lancement</translation>
     </message>
     <message>
         <source>Internet</source>
@@ -2672,7 +2707,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>version : …</source>
-        <translation>version:...</translation>
+        <translation>version :...</translation>
     </message>
     <message>
         <source>Toolbar</source>
@@ -2680,7 +2715,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Stylus Palette</source>
-        <translation>Barre d'outils du stylet</translation>
+        <translation>Barre du stylet</translation>
     </message>
     <message>
         <source>Horizontal</source>
@@ -2696,7 +2731,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Marker</source>
-        <translation>Marqueur</translation>
+        <translation>Surligneur</translation>
     </message>
     <message>
         <source>About</source>
@@ -2732,15 +2767,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation>Afficher le contenu du navigateur web interne sur l'écran de projection</translation>
+        <translation>Afficher le contenu du navigateur Web interne sur l'écran de projection</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation>Multi-écran</translation>
+        <translation>Multi-écrans</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation>Inverser les écrans</translation>
+        <translation>Inverser la disposition des écrans</translation>
     </message>
     <message>
         <source>Mode</source>
@@ -2748,7 +2783,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation>Démarrer en mode:</translation>
+        <translation>Démarrer en mode :</translation>
     </message>
     <message>
         <source>Board</source>
@@ -2760,246 +2795,645 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy :</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Mot de passe :</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Identifiant Planète-Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Mot de passe :</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translatorcomment>non traduisible en l'état (sauf disponibilité d'une version non officielle introuvable sur le web)</translatorcomment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Crédits</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Les licences proposées ci-dessous sont rédigées en langue anglaise afin de respecter le cadre légal et officiel des traductions approuvées par les auteurs de ces textes.</span></p></td></tr></table></body></html></translation>
     </message>
-    <message>
+    <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translatorcomment>ATTENTION AU NUMERO DE VERSION MENTIONNÉ DANS LA VERSION ANGLAISE ! (RESTE EN 1.4)</translatorcomment>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 2.0 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
-    <message>
+    <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translatorcomment>attention ce texte est en français par défaut ce qui signifie qu'il devrait être traduit en anglais pour les utilisateurs non francophones !</translatorcomment>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identifiant Planète Sankoré pour l'export de fichier</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Sauvegarder les paramètres de connexion.</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Les licences sont en anglais pour respecter la traduction officielle et légale approuvée.</span></p></td></tr></table></body></html></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3007,23 +3441,63 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>Credits</source>
-        <translation>Crédits</translation>
-    </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -3039,7 +3513,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>about:blank</source>
-        <translation>about:blank</translation>
+        <translation>à propos : vide</translation>
     </message>
     <message>
         <source>Application name</source>
@@ -3047,7 +3521,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Create Application</source>
-        <translation>Créer une Application</translation>
+        <translation>Créer une application</translation>
     </message>
 </context>
 </TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_fr_CH.ts b/Sankore-3.1/resources/i18n/sankore_fr_CH.ts
index 40fd627..ca0a799 100644
--- a/Sankore-3.1/resources/i18n/sankore_fr_CH.ts
+++ b/Sankore-3.1/resources/i18n/sankore_fr_CH.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="en_US">
+<TS version="2.0" language="fr_FR">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -12,7 +12,7 @@
     <name>DownloadDialog</name>
     <message>
         <source>Downloads</source>
-        <translation>Téléchargements</translation>
+        <translation>Téléchargement(s)</translation>
     </message>
     <message>
         <source>Clean Up</source>
@@ -20,7 +20,7 @@
     </message>
     <message>
         <source>0 Items</source>
-        <translation>0 éléments</translation>
+        <translation>0 élément</translation>
     </message>
 </context>
 <context>
@@ -39,7 +39,7 @@
     </message>
     <message>
         <source>Stop</source>
-        <translation>Stop</translation>
+        <translation>Arrêter</translation>
     </message>
     <message>
         <source>Open</source>
@@ -50,7 +50,7 @@
     <name>IntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Publier le Podcast sur YouTube</translation>
+        <translation>Publier Podcast sur YouTube</translation>
     </message>
     <message>
         <source>Title</source>
@@ -73,7 +73,7 @@
     </message>
     <message>
         <source>Stylus</source>
-        <translation>Stylet</translation>
+        <translation>Stylets</translation>
     </message>
     <message>
         <source>Backgrounds</source>
@@ -93,7 +93,7 @@
     </message>
     <message>
         <source>PgUp</source>
-        <translation>PgUp</translation>
+        <translation>Page haut</translation>
     </message>
     <message>
         <source>Next</source>
@@ -101,7 +101,7 @@
     </message>
     <message>
         <source>PgDown</source>
-        <translation>PgDown</translation>
+        <translation>Page bas</translation>
     </message>
     <message>
         <source>Documents</source>
@@ -129,7 +129,7 @@
     </message>
     <message>
         <source>Marker</source>
-        <translation>Marqueur</translation>
+        <translation>Surligneur</translation>
     </message>
     <message>
         <source>Selector</source>
@@ -141,11 +141,11 @@
     </message>
     <message>
         <source>Zoom In</source>
-        <translation>Zoom avant</translation>
+        <translation>Zoomer en avant</translation>
     </message>
     <message>
         <source>Zoom Out</source>
-        <translation>Zoom arrière</translation>
+        <translation>Zoomer en arrière</translation>
     </message>
     <message>
         <source>Text</source>
@@ -177,23 +177,23 @@
     </message>
     <message>
         <source>Configure Podcast Recording</source>
-        <translation>Configurer podcast</translation>
+        <translation>Configurer le podcast</translation>
     </message>
     <message>
         <source>Flash Trap</source>
-        <translation>Capture Flash</translation>
+        <translation>Capturer du contenu Flash</translation>
     </message>
     <message>
         <source>Trap Flash Content</source>
-        <translation>Capturer Flash</translation>
+        <translation>Capturer du contenu Flash</translation>
     </message>
     <message>
         <source>Web Trap</source>
-        <translation>Capture Web</translation>
+        <translation>Capturer du contenu Web</translation>
     </message>
     <message>
         <source>Trap Web Content</source>
-        <translation>Capturer contenu web</translation>
+        <translation>Capturer du contenu Web</translation>
     </message>
     <message>
         <source>Window Capture</source>
@@ -293,11 +293,11 @@
     </message>
     <message>
         <source>Reload</source>
-        <translation>Rafraîchir</translation>
+        <translation>Recharger</translation>
     </message>
     <message>
         <source>Reload Current Page</source>
-        <translation>Rafraîchir la page courante</translation>
+        <translation>Recharger la page courante</translation>
     </message>
     <message>
         <source>Load Home Page</source>
@@ -365,7 +365,7 @@
     </message>
     <message>
         <source>Delete Selected Content</source>
-        <translation>Effacer le contenu sélectionné</translation>
+        <translation>Supprimer le contenu sélectionné</translation>
     </message>
     <message>
         <source>Add Content to Document</source>
@@ -373,15 +373,15 @@
     </message>
     <message>
         <source>Tutorial</source>
-        <translation>Tutoriel</translation>
+        <translation>Tutoriels</translation>
     </message>
     <message>
         <source>Show Desktop</source>
-        <translation>Afficher le bureau</translation>
+        <translation>Bureau</translation>
     </message>
     <message>
         <source>Ctrl+Shift+H</source>
-        <translation>Ctrl+Shift+H</translation>
+        <translation>Ctrl+Maj+H</translation>
     </message>
     <message>
         <source>Rename Content</source>
@@ -393,11 +393,11 @@
     </message>
     <message>
         <source>Use Document Wide Size (16/9)</source>
-        <translation>Utiliser le format de document 16/9</translation>
+        <translation>Utiliser un format large (16/9)</translation>
     </message>
     <message>
         <source>Use Document Regular Size (4/3)</source>
-        <translation>Utiliser le format de document 4/3</translation>
+        <translation>Utiliser un format normal (4/3)</translation>
     </message>
     <message>
         <source>Use Custom Document Size</source>
@@ -405,11 +405,11 @@
     </message>
     <message>
         <source>Stop Loading Web Page</source>
-        <translation>Stopper le chargement de la page web</translation>
+        <translation>Arrêter le chargement de la page Web</translation>
     </message>
     <message>
         <source>Put Presentation to Sleep</source>
-        <translation>Mettre la présentation sur pause</translation>
+        <translation>Mettre la présentation en pause</translation>
     </message>
     <message>
         <source>Display Virtual Keyboard</source>
@@ -417,11 +417,11 @@
     </message>
     <message>
         <source>Record Presentation to Video</source>
-        <translation>Enregistrer la présentation sur une vidéo</translation>
+        <translation>Enregistrer la présentation en vidéo</translation>
     </message>
     <message>
         <source>Erase Items</source>
-        <translation>Effacer les objets</translation>
+        <translation>Effacer les éléments</translation>
     </message>
     <message>
         <source>Erase All Items</source>
@@ -453,7 +453,7 @@
     </message>
     <message>
         <source>Erase Annotation</source>
-        <translation>Effacer une annotation</translation>
+        <translation>Effacer l'annotation</translation>
     </message>
     <message>
         <source>Ctrl+E</source>
@@ -461,11 +461,11 @@
     </message>
     <message>
         <source>Highlight </source>
-        <translation>Mettre en surbrillance</translation>
+        <translation>Surligner </translation>
     </message>
     <message>
         <source>Ctrl+M</source>
-        <translation></translation>
+        <translation>Ctrl+M</translation>
     </message>
     <message>
         <source>Select And Modify Objects</source>
@@ -473,51 +473,51 @@
     </message>
     <message>
         <source>Ctrl+F</source>
-        <translation></translation>
+        <translation>Ctrl+F</translation>
     </message>
     <message>
         <source>Scroll Page</source>
-        <translation>Faire défiler la page</translation>
+        <translation>Déplacer la page</translation>
     </message>
     <message>
         <source>Laser Pointer</source>
-        <translation>Pointeur laser</translation>
+        <translation>Utiliser le "pointeur laser"</translation>
     </message>
     <message>
         <source>Virtual Laser Pointer</source>
-        <translation>Pointeur laser virtuel</translation>
+        <translation>Utiliser le "pointeur laser"</translation>
     </message>
     <message>
         <source>Ctrl+G</source>
-        <translation></translation>
+        <translation>Ctrl+G</translation>
     </message>
     <message>
         <source>Draw Lines</source>
-        <translation>Dessiner des lignes</translation>
+        <translation>Tracer une ligne droite</translation>
     </message>
     <message>
         <source>Ctrl+J</source>
-        <translation></translation>
+        <translation>Ctrl+J</translation>
     </message>
     <message>
         <source>Write Text</source>
-        <translation>Ecrire du texte</translation>
+        <translation>Ecrire un texte</translation>
     </message>
     <message>
         <source>Ctrl+K</source>
-        <translation></translation>
+        <translation>Ctrl+K</translation>
     </message>
     <message>
         <source>Add Item To Current Page</source>
-        <translation>Ajouter un élément à la page courante</translation>
+        <translation>Ajouter l'élément à la page courante</translation>
     </message>
     <message>
         <source>Add Item To New Page</source>
-        <translation>Ajouter un élément à une nouvelle page</translation>
+        <translation>Ajouter l'élément à une nouvelle page</translation>
     </message>
     <message>
         <source>Add Item To Library</source>
-        <translation>Ajouter un élément à la bibliothèque</translation>
+        <translation>Ajouter l'élément à la bibliothèque</translation>
     </message>
     <message>
         <source>Create a New Page</source>
@@ -549,19 +549,19 @@
     </message>
     <message>
         <source>Podcast Config</source>
-        <translation>Config podcast</translation>
+        <translation>Configuration du podcast</translation>
     </message>
     <message>
         <source>Open the tutorial</source>
-        <translation>Ouvrir le didacticiel</translation>
+        <translation>Ouvrir les tutoriels</translation>
     </message>
     <message>
         <source>Check Update</source>
-        <translation>Contrôler les mises à jour</translation>
+        <translation>Contrôler la mise à jour</translation>
     </message>
     <message>
         <source>Ctrl+H</source>
-        <translation></translation>
+        <translation>Ctrl+H</translation>
     </message>
     <message>
         <source>Capture Part of the Screen</source>
@@ -577,11 +577,11 @@
     </message>
     <message>
         <source>Embed Web Content</source>
-        <translation>Embarquer un contenu web</translation>
+        <translation>Embarquer un contenu Web</translation>
     </message>
     <message>
         <source>Capture Embeddable Web Content</source>
-        <translation>Capturer un contenu web embarquable</translation>
+        <translation>Capturer un contenu Web embarquable</translation>
     </message>
     <message>
         <source>Show Main Screen on Display Screen</source>
@@ -593,7 +593,7 @@
     </message>
     <message>
         <source>eduMedia</source>
-        <translation></translation>
+        <translation>eduMedia</translation>
     </message>
     <message>
         <source>Import eduMedia simulation</source>
@@ -601,7 +601,7 @@
     </message>
     <message>
         <source>Del</source>
-        <translation>Del</translation>
+        <translation>Supprimer</translation>
     </message>
     <message>
         <source>Add Selected Content to Open Document</source>
@@ -609,7 +609,7 @@
     </message>
     <message>
         <source>Stop Loading</source>
-        <translation>Arrêter le chargement</translation>
+        <translation>Arrêter</translation>
     </message>
     <message>
         <source>Sleep</source>
@@ -645,15 +645,15 @@
     </message>
     <message>
         <source>Wide Size (16/9)</source>
-        <translation>Taille cinéma</translation>
+        <translation>Format large (16/9)</translation>
     </message>
     <message>
         <source>Regular Size (4/3)</source>
-        <translation>Taille nominale</translation>
+        <translation>Format normal (4/3)</translation>
     </message>
     <message>
         <source>Custom Size</source>
-        <translation>Taille spécifique</translation>
+        <translation>Format personnalisé</translation>
     </message>
     <message>
         <source>Ctrl+L</source>
@@ -701,7 +701,7 @@
     </message>
     <message>
         <source>Multi Screen</source>
-        <translation>Multi-écran</translation>
+        <translation>Multi-écrans</translation>
     </message>
     <message>
         <source>New Folder</source>
@@ -729,7 +729,7 @@
     </message>
     <message>
         <source>Add to Working Document</source>
-        <translation>Ajouter au document en cours</translation>
+        <translation>Ajouter au document</translation>
     </message>
     <message>
         <source>Add</source>
@@ -741,7 +741,7 @@
     </message>
     <message>
         <source>Home</source>
-        <translation>Page d'accueil</translation>
+        <translation>Accueil</translation>
     </message>
     <message>
         <source>Bookmarks</source>
@@ -777,19 +777,19 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation>Editeur Open-Sankoré</translation>
+        <translation>Éditeur Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation>Ouvrir l'éditeur d'appliquette Open-Sankoré</translation>
+        <translation>Ouvrir l'éditeur d'appliquettes Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation>Cacher Open-Sankoré</translation>
+        <translation>Masquer Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation>Cacher Open-Sankoré</translation>
+        <translation>Masquer Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
@@ -797,14 +797,31 @@
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation>Importer les anciens documents Sankoré et Uniboard</translation>
+        <translation>Importer les anciens documents Sankoré ou Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation>Grouper</translation>
+        <source>Group items</source>
+        <translation>Grouper les objets</translation>
     </message>
     <message>
-        <source>Group items</source>
+        <source>Play</source>
+        <translatorcomment>j'hésite avec Lancer (dépend du contexte d'usage)</translatorcomment>
+        <translation>Jouer</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagir avec des objets</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Effacer le fond</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Supprimer le fond</translation>
+    </message>
+    <message>
+        <source>Group</source>
         <translation>Grouper</translation>
     </message>
 </context>
@@ -816,11 +833,11 @@
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nom d'utilisateur:</translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>Mot de passe:</translation>
+        <translation>Mot de passe :</translation>
     </message>
 </context>
 <context>
@@ -831,50 +848,45 @@
     </message>
     <message>
         <source>Connect to Proxy</source>
-        <translation>Se connecter au proxy</translation>
+        <translation>Se connecter par le proxy</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nom d'utilisateur:</translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>Mot de passe:</translation>
+        <translation>Mot de passe :</translation>
     </message>
     <message>
         <source>Save username and password for future use</source>
-        <translation>Sauver nom d'utilisateur et mot de passe pour une utilisation future</translation>
+        <translation>Enregistrer le nom d'utilisateur et le mot de passe pour la prochaine.utilisation</translation>
     </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Corbeille</translation>
+        <source>Element ID = </source>
+        <translation>ID de l'élément = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Accueil</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Contenu non supporté dans le format souhaité.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Impossible de charger le contenu</translation>
+        <source>Remove Page</source>
+        <translation>Supprimer la page</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Chargement en cours ...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Voulez-vous vraiment effacer 1 page de ce document '%0'?</translation>
     </message>
 </context>
 <context>
     <name>UBApplication</name>
     <message>
         <source>Page Size</source>
-        <translation>Taille de la Page</translation>
+        <translation>Taille de la page</translation>
     </message>
     <message>
         <source>Podcast</source>
@@ -889,15 +901,15 @@
     </message>
     <message>
         <source>New update available, would you go to the web page ?</source>
-        <translation>Nouvelle mise à jour disponible, voulez-vous aller à la page web ?</translation>
+        <translation>Nouvelle mise à jour disponible : voulez-vous accéder à la page de téléchargement ?</translation>
     </message>
     <message>
         <source>No update available</source>
-        <translation>Pas de nouvelle mise à jour disponible</translation>
+        <translation>Pas de mise à jour disponible</translation>
     </message>
     <message>
         <source>Update available</source>
-        <translation>Mise à jour indisponible</translation>
+        <translation>Mise à jour disponible</translation>
     </message>
     <message>
         <source>Update</source>
@@ -920,7 +932,7 @@
     </message>
     <message>
         <source>Add Item</source>
-        <translation>Ajout objet</translation>
+        <translation>Ajouter un élément</translation>
     </message>
     <message>
         <source>All Supported (%1)</source>
@@ -930,6 +942,26 @@
         <source>Unknown content type %1</source>
         <translation>Type de contenu inconnu (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Supprimer la page %1 du document</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Page %1 supprimée</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Echec d'ajout de document : erreur de copie</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grouper</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Dégrouper</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,12 +969,16 @@
         <source>Error Adding Image to Library</source>
         <translation>Erreur lors de l'ajout d'images à la bibliothèque</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Image capturée</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
     <message>
         <source>Cache Properties</source>
-        <translation>Propriétés cache</translation>
+        <translation>Propriétés du cache</translation>
     </message>
     <message>
         <source>Color:</source>
@@ -964,10 +1000,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Afficher Sankoré</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Capturer une partie de l'écran</translation>
     </message>
@@ -977,7 +1009,7 @@
     </message>
     <message>
         <source>Show the stylus palette</source>
-        <translation>Afficher la barre d'outil du stylet</translation>
+        <translation>Afficher la barre d'outils du stylet</translation>
     </message>
     <message>
         <source>Show Board on Secondary Screen</source>
@@ -987,12 +1019,16 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Afficher le bureau sur l'écran secondaire</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Afficher Open-Sankoré</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
     <message>
         <source>No document selected!</source>
-        <translation>Aucun document sélectionné!</translation>
+        <translation>Aucun document sélectionné !</translation>
     </message>
     <message>
         <source>Open Supported File</source>
@@ -1012,7 +1048,7 @@
     </message>
     <message>
         <source>Add Pages from File</source>
-        <translation>Ajouter un fichier au document</translation>
+        <translation>Ajouter des pages depuis un fichier</translation>
     </message>
     <message>
         <source>Duplicating Document %1</source>
@@ -1036,7 +1072,7 @@
     </message>
     <message>
         <source>Are you sure you want to empty trash?</source>
-        <translation>Êtes-vous sûr de vouloir vider la corbeille ?</translation>
+        <translation>Voulez-vous vraiment vider la corbeille ?</translation>
     </message>
     <message>
         <source>Emptying trash</source>
@@ -1052,7 +1088,7 @@
     </message>
     <message>
         <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation>Souhaitez-vous supprimer le dossier '%1'?</translation>
+        <translation>Voulez-vous vraiment supprimer le dossier '%1' et tout son contenu ?</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1067,10 +1103,6 @@
         <translation>Importer toutes les images d'un dossier</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Le dossier ne contient aucune image!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Supprimer</translation>
     </message>
@@ -1088,7 +1120,7 @@
     </message>
     <message>
         <source>Add all Images to Document</source>
-        <translation>Ajouter toutes les images</translation>
+        <translation>Ajouter toutes les images au document</translation>
     </message>
     <message>
         <source>All Images (%1)</source>
@@ -1096,11 +1128,11 @@
     </message>
     <message>
         <source>Selection does not contain any image files!</source>
-        <translation>La séléction ne contient aucune image!</translation>
+        <translation>La sélection ne contient aucune image !</translation>
     </message>
     <message>
         <source>Are you sure you want to remove the document '%1'?</source>
-        <translation>Souhaitez-vous supprimer le document '%1'?</translation>
+        <translation>Voulez-vous vraiment supprimer le document '%1'?</translation>
     </message>
     <message>
         <source>Page %1</source>
@@ -1108,15 +1140,27 @@
     </message>
     <message>
         <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
-        <translation>Ce document '%1' a été créé avec une version plus récente de Sankoré (%2). En l'ouvrant, vous risquez de perdre certains éléments. Désirez-vous continuer?</translation>
+        <translation>Le document '%1' a été créé avec une version plus récente d'Open-Sankoré (%2). En l'ouvrant, vous risquez de perdre certains éléments. Désirez-vous continuer ?</translation>
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
-            <numerusform>Êtes-vous sûr de bien vouloir effacer %n page de ce document '%1'?</numerusform>
-            <numerusform>Êtes-vous sûr de bien vouloir effacer %n pages de ce document '%1'?</numerusform>
+            <numerusform>Voulez-vous vraiment effacer %n page de ce document '%1'?</numerusform>
+            <numerusform>Voulez-vous vraiment effacer %n pages de ce document '%1'?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Page de titre</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Le dossier ne contient pas d'image</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documents sans titre</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1141,16 +1185,25 @@
         <translation>Tous les fichiers supportés (*.%1)</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importation de la page %1 sur %2</translation>
+        <source>File %1 saved</source>
+        <translation>Fichier %1 enregistré</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Le fichier %1 n'a pas un format d'image valide</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Ajout de la page %1 sur %2</translation>
     </message>
     <message>
-        <source>File %1 saved</source>
-        <translation>Fichier %1 sauvé</translation>
+        <source>Import successful.</source>
+        <translation>Importation réussie.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importation du document %1 réussie.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translatorcomment>j'ai raccourci la phrase pour eviter les soucis de place !</translatorcomment>
+        <translation>Importation de %1 en cours</translation>
     </message>
 </context>
 <context>
@@ -1159,16 +1212,20 @@
         <source>Page %0</source>
         <translation>Page %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Page de titre</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
     <message>
         <source>Export failed.</source>
-        <translation>Exportation échouée.</translation>
+        <translation>Echec de l'export.</translation>
     </message>
     <message>
         <source>Export canceled ...</source>
-        <translation>Exportation annulée ...</translation>
+        <translation>Export annulée ...</translation>
     </message>
     <message>
         <source>Converting page %1/%2 ...</source>
@@ -1176,19 +1233,19 @@
     </message>
     <message>
         <source>Credentials has to not been filled out yet.</source>
-        <translation>Les informations n'ont pas encore été remplies.</translation>
+        <translation>Les nom d'utilisateur et mot de passe n'ont pas été encore renseignés.</translation>
     </message>
     <message>
         <source>Uploading Sankore File on Web.</source>
-        <translation>Fichier Sankoré en cours d'import sur le Web.</translation>
+        <translation>Fichier Open-Sankoré en cours de transfert vers Planète-Sankoré.</translation>
     </message>
     <message>
         <source>Document uploaded correctly on the web.</source>
-        <translation>Document correctment importé sur le Web.</translation>
+        <translation>Document Open-Sankoré correctement transféré sur Planète Sankoré.</translation>
     </message>
     <message>
         <source>Failed to upload document on the web.</source>
-        <translation>L'import Web du document a échoué.</translation>
+        <translation>Echec du transfert du document vers Planète-Sankoré.</translation>
     </message>
 </context>
 <context>
@@ -1221,37 +1278,44 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Avertissements lors de l'exportation</translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation>Exporter au format IWB</translation>
+        <translation>Exporter au format CFF (*.iwb)</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation>Exporter comme fichier IWB</translation>
+        <translation>Exporter au format CFF (*.iwb)</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation>Exportation du document en cours </translation>
+        <translation>Exportation du document...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export réussi.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Exportation échouée.</translation>
+        <translation>Echec de l'export.</translation>
     </message>
 </context>
 <context>
     <name>UBExportDocument</name>
     <message>
         <source>Export as UBZ File</source>
-        <translation>Exporter au format UBZ</translation>
+        <translation>Exporter au format UBZ (*.ubz)</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export réussi.</translation>
     </message>
     <message>
         <source>Page</source>
@@ -1267,14 +1331,14 @@
     </message>
     <message>
         <source>Export to Sankore Format</source>
-        <translation>Export au format Sankoré</translation>
+        <translation>Exporter au format Open-Sankoré</translation>
     </message>
 </context>
 <context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
-        <translation>Exporter au format PDF</translation>
+        <translation>Exporter au format PDF (*.pdf)</translation>
     </message>
     <message>
         <source>Exporting document...</source>
@@ -1286,14 +1350,14 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export terminé.</translation>
     </message>
 </context>
 <context>
     <name>UBExportPDF</name>
     <message>
         <source>Export as PDF File</source>
-        <translation>Exporter au format PDF</translation>
+        <translation>Exporter au format PDF (*.pdf)</translation>
     </message>
     <message>
         <source>Exporting page %1 of %2</source>
@@ -1301,7 +1365,7 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export terminé.</translation>
     </message>
     <message>
         <source>Exporting document...</source>
@@ -1309,7 +1373,7 @@
     </message>
     <message>
         <source>Export to PDF</source>
-        <translation>Exporter au format PDF</translation>
+        <translation>Exporter au format PDF (*.pdf)</translation>
     </message>
 </context>
 <context>
@@ -1328,11 +1392,11 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Exportation terminée.</translation>
+        <translation>Export réussi.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation>Exportation échouée.</translation>
+        <translation>Echec de l'export.</translation>
     </message>
     <message>
         <source>Export to Web Browser</source>
@@ -1343,15 +1407,18 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation>Ajouter à la page</translation>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Ajout page</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation>Ajouter en arrière plan</translation>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Ajout en fond</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation>Ajouter à la librarie</translation>
+        <translatorcomment>j'ai choisi de rendre le bouton plus compact (mais info moins complète)</translatorcomment>
+        <translation>Ajout bibliothèque</translation>
     </message>
     <message>
         <source>Object informations</source>
@@ -1386,14 +1453,80 @@
     </message>
     <message>
         <source>Create new folder</source>
-        <translation>Créer un nouveau dossier</translation>
+        <translation>Créer nouveau dossier</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Parcourir le système de fichiers</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">ImageImportée</translation>
+        <translation>Image importée</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Sons</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Vidéos</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Images</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animations</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interactivités</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Applications</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Formes</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoris</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Recherche Web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Corbeille</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accepter</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Saisir le nom du nouveau dossier</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Chargement en cours </translation>
     </message>
 </context>
 <context>
@@ -1404,7 +1537,7 @@
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation>Visible sur l'écran de projection</translation>
+        <translation>Visible sur l'écran étendu</translation>
     </message>
 </context>
 <context>
@@ -1415,7 +1548,7 @@
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation>Visible sur l'écran de projection</translation>
+        <translation>Visible sur l'écran étendu</translation>
     </message>
     <message>
         <source>Go to Content Source</source>
@@ -1426,7 +1559,7 @@
     <name>UBGraphicsTextItem</name>
     <message>
         <source><Type Text Here></source>
-        <translation><Ecrire votre texte ici></translation>
+        <translation><Saisir votre texte ici></translation>
     </message>
 </context>
 <context>
@@ -1441,10 +1574,24 @@
     </message>
 </context>
 <context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Chargement en cours ...</translation>
+    </message>
+</context>
+<context>
     <name>UBGraphicsWidgetItemDelegate</name>
     <message>
         <source>Frozen</source>
-        <translation>Gelé</translation>
+        <translation>Figé</translation>
     </message>
     <message>
         <source>Transform as Tool </source>
@@ -1455,7 +1602,7 @@
     <name>UBImportCFF</name>
     <message>
         <source>Common File Format (</source>
-        <translation>Format de fichier courant (</translation>
+        <translation>Format de fichier CFF (</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1463,15 +1610,15 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>L'import du fichier %1 a échoué.</translation>
+        <translation>Echec de l'import du fichier %1.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Importation terminée.</translation>
+        <translation>Import terminée.</translation>
     </message>
     <message>
         <source>Import failed.</source>
-        <translation>L'import a échoué.</translation>
+        <translation>Echec de l'import.</translation>
     </message>
 </context>
 <context>
@@ -1482,11 +1629,11 @@
     </message>
     <message>
         <source>Import successful.</source>
-        <translation>Importation terminée.</translation>
+        <translation>Import terminé.</translation>
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>L'import du fichier %1 a échoué.</translation>
+        <translation>Échec de l'import du fichier %1.</translation>
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
@@ -1499,33 +1646,21 @@
         <source>Image Format (</source>
         <translation>Format d'image (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Échec d'importation de l'image.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Importation de l'image réussie.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
     <message>
         <source>Portable Document Format (*.pdf)</source>
-        <translation>Portable Document Format (*.pdf)</translation>
+        <translation>Format PDF (*.pdf)</translation>
     </message>
     <message>
         <source>PDF import failed.</source>
-        <translation>L'importation du fichier PDF a échoué.</translation>
+        <translation>Échec de l'import du fichier PDF.</translation>
     </message>
     <message>
         <source>Importing page %1 of %2</source>
         <translation>Importation de la page %1 sur %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importation PDF terminée.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1553,120 +1688,6 @@
     </message>
 </context>
 <context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Ajouter aux favoris</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Partager</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Rechercher</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Supprimer</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Retour au répertoire</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Supprimer des favoris</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Créer un nouveau dossier</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Ajouter à la page</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Ajouter en arrière plan</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Ajouter à la librarie</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Informations</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>1 image ajoutées à la bibiliothèque</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Sons</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Vidéos</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Images</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Formes</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applications</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favoris</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Création de la vignette pour %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Impossible d'ajouter %1 à la page courrante.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interactivités</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>ImageImportée</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animations</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation>Recherche Web</translation>
-    </message>
-</context>
-<context>
     <name>UBMainWindow</name>
     <message>
         <source>Yes</source>
@@ -1682,14 +1703,21 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Fermer</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
-        <translation><qt>Saisir le nom de l'utilisateur et le mot de passe pour "%1" à %2</qt></translation>
+        <translation><qt>Renseigner le nom de l'utilisateur et le mot de passe pour "%1" à %2</qt></translation>
     </message>
     <message>
         <source>Failed to log to Proxy</source>
-        <translation>Erreur d'identification au proxy</translation>
+        <translation>Connexion au proxy impossible</translation>
     </message>
     <message>
         <source>SSL Errors:
@@ -1699,13 +1727,13 @@
 %2
 
 Do you want to ignore these errors for this host?</source>
-        <translation>Erreur SSL:
+        <translation>Erreur SSL (Secure Socket Layer) sur un serveur sécurisé:
 
 %1
 
 %2
 
-Voulez-vous ignorer les erreurs pour ce serveur?</translation>
+Voulez-vous ignorer les erreurs pour ce serveur ?</translation>
     </message>
     <message>
         <source>Yes</source>
@@ -1717,37 +1745,41 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Ajouter un nouveau dossier</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nom du dossier:</translation>
+        <source>(copy)</source>
+        <translation>(copie)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Ajouter</translation>
+        <source>Document Repository Loss</source>
+        <translation>Accès perdu vers le répertoire des documents</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Annuler</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Open-Sankoré a perdu l'accès au répertoire des documents '%1'. L'application doit malheureusement être fermée pour éviter tout risque de corruption de vos fichiers. Les dernières modifications effectuées risquent d'être perdues.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copie)</translation>
+        <source>English</source>
+        <translation>Anglais</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Accès perdu au dépôt de documents</translation>
+        <source>Russian</source>
+        <translation>Russe</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankoré a perdu l'accès au dossier de document '%1'. Malheurheusement l'application doit être fermée pour éviter tout risque de corruption de vos fichiers. Les dernières modifications effectuées risquent d'être perdues.</translation>
+        <source>German</source>
+        <translation>Allemand</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Français</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Français suisse</translation>
     </message>
 </context>
 <context>
@@ -1758,7 +1790,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>No Podcast encoder available ...</source>
-        <translation>Pas d'encodeur podcast disponible...</translation>
+        <translation>Aucun encodeur disponible.pour le podcast...</translation>
     </message>
     <message>
         <source>Part %1</source>
@@ -1798,7 +1830,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Full</source>
-        <translation>Complet</translation>
+        <translation>Maximum</translation>
     </message>
     <message>
         <source>Publish to Intranet</source>
@@ -1810,48 +1842,48 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Sankore Cast</source>
-        <translation></translation>
+        <translation>Podcast Open-Sankoré</translation>
     </message>
 </context>
 <context>
     <name>UBPreferencesController</name>
     <message>
         <source>Marker is pressure sensitive</source>
-        <translation>Marqueur sensible à la pression</translation>
+        <translation>Stylet sensible à la pression</translation>
     </message>
     <message>
         <source>version: </source>
-        <translation>version: </translation>
+        <translation>version : </translation>
     </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
     <message>
         <source>Proxy Login</source>
-        <translation></translation>
+        <translation>Identification sur le Proxy</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nom d'utilisateur:</translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>Mot de passe:</translation>
+        <translation>Mot de passe :</translation>
     </message>
 </context>
 <context>
     <name>UBPublicationDlg</name>
     <message>
         <source>Publish document on the web</source>
-        <translation>Publier le document sur le web</translation>
+        <translation>Publier un fichier Open-Sankoré sur Planète-Sankoré</translation>
     </message>
     <message>
         <source>Title:</source>
-        <translation>Titre:</translation>
+        <translation>Titre :</translation>
     </message>
     <message>
         <source>Description:</source>
-        <translation>Description:</translation>
+        <translation>Description :</translation>
     </message>
     <message>
         <source>Publish</source>
@@ -1861,14 +1893,6 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Documents sans titre</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Corbeille</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mes films</translation>
     </message>
@@ -1877,15 +1901,15 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation>Professeur</translation>
+        <translation>Enseignant</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation>Elève</translation>
+        <translation>Elève/Etudiant</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation>Ajouter une action</translation>
+        <translation>Proposer une action ici ...</translation>
     </message>
 </context>
 <context>
@@ -1896,14 +1920,14 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation>Titre de l'activité</translation>
+        <translation>Renseigner le titre ici ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation>Titre</translation>
+        <translation>Renseigner le titre du lien ici ...</translation>
     </message>
 </context>
 <context>
@@ -1917,11 +1941,11 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation>Titre</translation>
+        <translation>Renseigner le titre de l'activité...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation>Commentaire, descriptif</translation>
+        <translation>Renseigner le commentaire ici ...</translation>
     </message>
     <message>
         <source>Add an action</source>
@@ -1933,7 +1957,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation>Ajouter un lien</translation>
+        <translation>Ajouter un lien web</translation>
     </message>
     <message>
         <source>Page: %0</source>
@@ -1943,40 +1967,48 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation>Titre de la séance</translation>
+        <translation>Renseigner le titre de la séance ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation>Auteur(s)</translation>
+        <translation>Auteur(s) :</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation>Auteur(s)</translation>
+        <translation>Ajouter les auteurs ici ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Objectif(s) de la séance :</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Ajouter les objectifs ici ...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation>Indexation de la ressource</translation>
+        <translation>Métadonnées de la ressource</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation>Mots clé(s)</translation>
+        <translation>Mot(s) clé(s) :</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation>Mots clés</translation>
+        <translation>Ajouter le(s) mot(s) clé(s) ici ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation>Niveau scolaire</translation>
+        <translation>Niveau(x) scolaire(s) :</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Discipline(s) :</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation>Type</translation>
+        <translation>Type(s) :</translation>
     </message>
     <message>
         <source>Licence</source>
@@ -1984,64 +2016,57 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Licence recommandée (CC Paternité 3.0)</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas de modification</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Partage à l'identique</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas d'utilisation commerciale</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas d'utilisation commerciale, Pas de modification</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>CC Paternité, Pas d'utilisation commerciale, Partage à l'identique</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domaine public</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>attention le copyright n'est pas une protection ou une licence puisque ca existe même pour les licences libres les plus ouvertes. C'est simplement la mention détenteur des droits de reproduction (celui qui fixe la licence) . Le terme est donc impropre même en anglais.</translatorcomment>
+        <translation>Protection par le droit d'auteur</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation>Crée le: </translation>
+        <translation>Créé le :</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation>Modifié le: </translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation>Objectif(s)</translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation>Objectifs</translation>
+        <translation>Modifié le :</translation>
     </message>
     <message>
-        <source>Subjects:</source>
-        <translation>Discipline:</translation>
+        <source>Title page</source>
+        <translation>Page de titre</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation></translation>
+        <translation>Page: %0</translation>
     </message>
 </context>
 <context>
@@ -2075,7 +2100,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Triangle</source>
-        <translation>Equerre</translation>
+        <translation>Équerre</translation>
     </message>
     <message>
         <source>Magnifier</source>
@@ -2083,7 +2108,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source>Cache</source>
-        <translation>Cache</translation>
+        <translation>Spot</translation>
     </message>
 </context>
 <context>
@@ -2105,11 +2130,11 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     </message>
     <message>
         <source> files require an update.</source>
-        <translation>fichiers nécessitent une mise à jour.</translation>
+        <translation>fichiers nécessitant une mise à jour.</translation>
     </message>
     <message>
         <source>Backup path: </source>
-        <translation>Chemin de sauvegarde:</translation>
+        <translation>Chemin de sauvegarde : </translation>
     </message>
     <message>
         <source>Browse</source>
@@ -2126,7 +2151,7 @@ Voulez-vous ignorer les erreurs pour ce serveur?</translation>
     <message>
         <source>Files update successful!
 Please reboot the application to access the updated documents.</source>
-        <translation>Fichiers mis à jour correctement!
+        <translation>Fichiers mis à jour correctement !
 Veuillez redémarrer l'application pour accéder aux documents mis à jour.</translation>
     </message>
     <message>
@@ -2147,14 +2172,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Remind me later</source>
-        <translation></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Me le rappeler plus tard</translation>
     </message>
 </context>
 <context>
@@ -2168,7 +2186,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>UBWebPublisher</name>
     <message>
         <source>Publish Document on Sankore Web</source>
-        <translation>Publier le document sur Planète Sankoré</translation>
+        <translation>Publier un fichier Open-Sankoré sur Planète-Sankoré</translation>
     </message>
 </context>
 <context>
@@ -2186,11 +2204,19 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Error while uploading video to YouTube (%1)</source>
-        <translation>Erreur de téléchargement de la vidéo vers YouTube (%1)</translation>
+        <translation>Erreur lors du transfert de la vidéo vers YouTube (%1)</translation>
     </message>
     <message>
         <source>Upload to YouTube in progress %1 %</source>
-        <translation>Chargement vers YouTube en cours %1 %</translation>
+        <translation>Transfert vers YouTube en cours %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>Open-Sankoré</translation>
     </message>
 </context>
 <context>
@@ -2201,7 +2227,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation>Autos et Véhicules</translation>
+        <translation>Auto/Moto</translation>
     </message>
     <message>
         <source>Music</source>
@@ -2221,7 +2247,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Gaming</source>
-        <translation>Jeux</translation>
+        <translation>Jeux vidéo et autres</translation>
     </message>
     <message>
         <source>Comedy</source>
@@ -2229,7 +2255,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation>People</translation>
+        <translation>Personnalités et blogues</translation>
     </message>
     <message>
         <source>News & Politics</source>
@@ -2249,11 +2275,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation>Associations et organismes</translation>
+        <translation>Organisations à but non lucratif</translation>
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation>Science et technologie</translation>
+        <translation>Sciences et technologies</translation>
     </message>
 </context>
 <context>
@@ -2267,41 +2293,41 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation>Importer les anciens documents Uniboard/Sankoré</translation>
+        <translation>Importer des documents depuis le format Uniboard ou Sankoré</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation>Aucun document trouvé</translation>
+        <translation>Aucun document au format Uniboard n'a été trouvé</translation>
     </message>
 </context>
 <context>
     <name>WBClearButton</name>
     <message>
         <source>Clear</source>
-        <translation>Supprimer</translation>
+        <translation>Effacer</translation>
     </message>
 </context>
 <context>
     <name>WBDownloadItem</name>
     <message>
         <source>Save File</source>
-        <translation>Sauver le fichier</translation>
+        <translation>Enregistrer le fichier</translation>
     </message>
     <message>
         <source>Download canceled: %1</source>
-        <translation>Téléchargement annulé: %1</translation>
+        <translation>Téléchargement annulé : %1</translation>
     </message>
     <message>
         <source>Error opening saved file: %1</source>
-        <translation>Erreur durant l'ouverture du fichier: %1</translation>
+        <translation>Erreur durant l'ouverture du fichier : %1</translation>
     </message>
     <message>
         <source>Error saving: %1</source>
-        <translation>Erreur lors de la sauvegarde du fichier: %1</translation>
+        <translation>Erreur lors de la sauvegarde du fichier : %1</translation>
     </message>
     <message>
         <source>Network Error: %1</source>
-        <translation>Erreur réseau: %1</translation>
+        <translation>Erreur réseau : %1</translation>
     </message>
     <message>
         <source>seconds</source>
@@ -2313,7 +2339,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>- %4 %5 remaining</source>
-        <translation>- %4 %5 restante</translation>
+        <translation>- %4 %5 restante(s)</translation>
     </message>
     <message>
         <source>%1 of %2 (%3/sec) %4</source>
@@ -2322,7 +2348,8 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <message>
         <source>?</source>
         <comment>unknown file size</comment>
-        <translation>?</translation>
+        <translatorcomment>si je me fie aux commentaires des développeurs...</translatorcomment>
+        <translation>Taille de fichier inconnue</translation>
     </message>
     <message>
         <source>%1 of %2 - Stopped</source>
@@ -2334,7 +2361,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>KB</source>
-        <translation>ko</translation>
+        <translation>Ko</translation>
     </message>
     <message>
         <source>MB</source>
@@ -2344,14 +2371,14 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
 <context>
     <name>WBDownloadManager</name>
     <message>
+        <source>1 Download</source>
+        <translation>1 téléchargement(s)</translation>
+    </message>
+    <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
         <translation>%1 téléchargement(s)</translation>
     </message>
-    <message>
-        <source>1 Download</source>
-        <translation>1 Téléchargement</translation>
-    </message>
 </context>
 <context>
     <name>WBHistoryModel</name>
@@ -2390,19 +2417,19 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Clone Tab</source>
-        <translation>Dupliquer l'onglet</translation>
+        <translation>Dupliquer onglet</translation>
     </message>
     <message>
         <source>&Close Tab</source>
-        <translation>&Fermer l'onglet</translation>
+        <translation>&Fermer onglet</translation>
     </message>
     <message>
         <source>Close &Other Tabs</source>
-        <translation>Fermer les &autres onglets</translation>
+        <translation>Fermer &autres onglets</translation>
     </message>
     <message>
         <source>Reload Tab</source>
-        <translation>Recharger l'onglet</translation>
+        <translation>Recharger &onglet</translation>
     </message>
     <message>
         <source>Reload All Tabs</source>
@@ -2428,15 +2455,15 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>No Recent Searches</source>
-        <translation>Aucun historique de recherche</translation>
+        <translation>Aucune recherche récente</translation>
     </message>
     <message>
         <source>Recent Searches</source>
-        <translation>Historique de recherches</translation>
+        <translation>Historique des recherches</translation>
     </message>
     <message>
         <source>Clear Recent Searches</source>
-        <translation>Supprimer l'historique de recherches</translation>
+        <translation>Supprimer l'historique des recherches</translation>
     </message>
 </context>
 <context>
@@ -2455,11 +2482,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Error loading page: %1</source>
-        <translation>Erreur de chargement de la page: %1</translation>
+        <translation>Erreur de chargement de la page : %1</translation>
     </message>
     <message>
         <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
-        <translation>Téléchargement du PDF: préférez-vous téléchargemer le fichier PDF ou l'ajouter à votre document Sankoré actuellement ouvert ?</translation>
+        <translation>Téléchargement du PDF : préférez-vous télécharger le fichier PDF ou l'ajouter à votre document courant ?</translation>
     </message>
 </context>
 <context>
@@ -2473,11 +2500,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     <name>YouTubePublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Publier le Podcast sur YouTube</translation>
+        <translation>Publier le podcast sur YouTube</translation>
     </message>
     <message>
         <source>Title</source>
-        <translation>Titre</translation>
+        <translation>Titre du podcast</translation>
     </message>
     <message>
         <source>Description</source>
@@ -2489,7 +2516,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>Uniboard</source>
-        <translation>Sankoré</translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Category</source>
@@ -2497,11 +2524,11 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
     </message>
     <message>
         <source>YouTube Username</source>
-        <translation>Utilisateur YouTube</translation>
+        <translation>Nom d'utilisateur YouTube</translation>
     </message>
     <message>
         <source>YouTube Password</source>
-        <translation>Mot de passe</translation>
+        <translation>Mot de passe YouTube</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
@@ -2509,7 +2536,15 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour.
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
-        <translation></translation>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">En cliquant sur le bouton "Téléchargement", vous certifiez que vous respectez les conditions générales d'utilisation de YouTube </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation>Sauvegarder les paramètres de connexion. </translation>
     </message>
 </context>
 <context>
@@ -2528,19 +2563,19 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Line Width</source>
-        <translation>Epaisseur de ligne</translation>
+        <translation>Largeur de ligne</translation>
     </message>
     <message>
         <source>Medium</source>
-        <translation>Moyen</translation>
+        <translation>Moyenne</translation>
     </message>
     <message>
         <source>Strong</source>
-        <translation>Epais</translation>
+        <translation>Large</translation>
     </message>
     <message>
         <source>Fine</source>
-        <translation>Fin</translation>
+        <translation>Fine</translation>
     </message>
     <message>
         <source>Pen is Pressure Sensitive</source>
@@ -2559,7 +2594,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>E-mail</source>
-        <translation>E-mail</translation>
+        <translation>Courriel</translation>
     </message>
     <message>
         <source>Author</source>
@@ -2582,7 +2617,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>E-mail</source>
-        <translation>E-mail</translation>
+        <translation>Courriel</translation>
     </message>
     <message>
         <source>Author</source>
@@ -2594,15 +2629,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Attach Downloadable PDF Version</source>
-        <translation>Attacher la version PDF</translation>
+        <translation>Joindre la version PDF</translation>
     </message>
     <message>
         <source>Attach Downloadable Uniboard File (UBZ)</source>
-        <translation>Attacher le fichier Sankoré (UBZ)</translation>
+        <translation>Joindre le fichier Open-Sankoré (UBZ)</translation>
     </message>
     <message>
         <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation>Attention: Ce document contient une vidéo qui ne peut pas s'afficher correctement sur le Web</translation>
+        <translation>Attention : ce document contient une vidéo qui ne s'affichera pas correctement sur le Web</translation>
     </message>
 </context>
 <context>
@@ -2628,7 +2663,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Display</source>
-        <translation>Affichage</translation>
+        <translation>Afficher</translation>
     </message>
     <message>
         <source>Show Page with External Browser</source>
@@ -2644,11 +2679,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
-        <translation>Positionné en haut (recommandé pour les tablettes)</translation>
+        <translation>Positionnée en haut (recommandé pour les tablettes)</translation>
     </message>
     <message>
         <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation>Positionné en bas (recommandé pour les tableaux blancs)</translation>
+        <translation>Positionnée en bas (recommandé pour les tableaux interactifs)</translation>
     </message>
     <message>
         <source>Display Text Under Button</source>
@@ -2660,7 +2695,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Check software update at launch</source>
-        <translation>Vérifier la mise à jour logicielle au lancement</translation>
+        <translation>Vérifier la mise à jour au lancement</translation>
     </message>
     <message>
         <source>Internet</source>
@@ -2672,7 +2707,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>version : …</source>
-        <translation>version:...</translation>
+        <translation>version :...</translation>
     </message>
     <message>
         <source>Toolbar</source>
@@ -2680,7 +2715,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Stylus Palette</source>
-        <translation>Barre d'outils du stylet</translation>
+        <translation>Barre du stylet</translation>
     </message>
     <message>
         <source>Horizontal</source>
@@ -2696,7 +2731,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Marker</source>
-        <translation>Marqueur</translation>
+        <translation>Surligneur</translation>
     </message>
     <message>
         <source>About</source>
@@ -2732,15 +2767,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation>Afficher le contenu du navigateur web interne sur l'écran de projection</translation>
+        <translation>Afficher le contenu du navigateur Web interne sur l'écran de projection</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation>Multi-écran</translation>
+        <translation>Multi-écrans</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation>Inverser les écrans</translation>
+        <translation>Inverser la disposition des écrans</translation>
     </message>
     <message>
         <source>Mode</source>
@@ -2748,7 +2783,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation>Démarrer en mode:</translation>
+        <translation>Démarrer en mode :</translation>
     </message>
     <message>
         <source>Board</source>
@@ -2760,246 +2795,645 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy :</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Mot de passe :</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Identifiant Planète-Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nom d'utilisateur :</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Mot de passe :</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translatorcomment>non traduisible en l'état (sauf disponibilité d'une version non officielle introuvable sur le web)</translatorcomment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Crédits</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Les licences proposées ci-dessous sont rédigées en langue anglaise afin de respecter le cadre légal et officiel des traductions approuvées par les auteurs de ces textes.</span></p></td></tr></table></body></html></translation>
     </message>
-    <message>
+    <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translatorcomment>ATTENTION AU NUMERO DE VERSION MENTIONNÉ DANS LA VERSION ANGLAISE ! (RESTE EN 1.4)</translatorcomment>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 2.0 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
-    <message>
+    <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translatorcomment>attention ce texte est en français par défaut ce qui signifie qu'il devrait être traduit en anglais pour les utilisateurs non francophones !</translatorcomment>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation>Identifiant Planète Sankoré pour l'export de fichier</translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation>Sauvegarder les paramètres de connexion.</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Les licences sont en anglais pour respecter la traduction officielle et légale approuvée.</span></p></td></tr></table></body></html></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3007,23 +3441,63 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>Credits</source>
-        <translation>Crédits</translation>
-    </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -3039,7 +3513,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>about:blank</source>
-        <translation>about:blank</translation>
+        <translation>à propos : vide</translation>
     </message>
     <message>
         <source>Application name</source>
@@ -3047,7 +3521,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Create Application</source>
-        <translation>Créer une Application</translation>
+        <translation>Créer une application</translation>
     </message>
 </context>
 </TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_it.ts b/Sankore-3.1/resources/i18n/sankore_it.ts
index c8343a8..1db687f 100644
--- a/Sankore-3.1/resources/i18n/sankore_it.ts
+++ b/Sankore-3.1/resources/i18n/sankore_it.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="it" sourcelanguage="en">
+<TS version="2.0">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -12,7 +12,7 @@
     <name>DownloadDialog</name>
     <message>
         <source>Downloads</source>
-        <translation>Download</translation>
+        <translation>Scarica</translation>
     </message>
     <message>
         <source>Clean Up</source>
@@ -50,7 +50,7 @@
     <name>IntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Pubblica su youtube</translation>
+        <translation>Pubblica su YouTube</translation>
     </message>
     <message>
         <source>Title</source>
@@ -109,7 +109,7 @@
     </message>
     <message>
         <source>Redo</source>
-        <translation>Ripeti</translation>
+        <translation>Rifai</translation>
     </message>
     <message>
         <source>Ctrl+Y</source>
@@ -129,11 +129,11 @@
     </message>
     <message>
         <source>Next</source>
-        <translation>Prossimo</translation>
+        <translation>Successivo</translation>
     </message>
     <message>
         <source>Next Page</source>
-        <translation>Prossima pagina</translation>
+        <translation>Pagina successiva</translation>
     </message>
     <message>
         <source>PgDown</source>
@@ -141,7 +141,7 @@
     </message>
     <message>
         <source>Manage Documents</source>
-        <translation>Organizza documenti</translation>
+        <translation>Gestione documenti</translation>
     </message>
     <message>
         <source>Ctrl+D</source>
@@ -149,7 +149,7 @@
     </message>
     <message>
         <source>Web Browsing</source>
-        <translation>Browser web</translation>
+        <translation>Navigazione web</translation>
     </message>
     <message>
         <source>Ctrl+W</source>
@@ -273,7 +273,7 @@
     </message>
     <message>
         <source>Show Library</source>
-        <translation>Visualizza libreria</translation>
+        <translation>Visualizza biblioteca</translation>
     </message>
     <message>
         <source>Ctrl+L</source>
@@ -329,7 +329,7 @@
     </message>
     <message>
         <source>Create a New Document</source>
-        <translation>Crea nuovo documento</translation>
+        <translation>Crea un nuovo documento</translation>
     </message>
     <message>
         <source>Import</source>
@@ -349,11 +349,11 @@
     </message>
     <message>
         <source>Open in Board</source>
-        <translation>Apri nella scheda</translation>
+        <translation>Apri nella lavagna</translation>
     </message>
     <message>
         <source>Open Page in Board</source>
-        <translation>Apri la pagina nella scheda</translation>
+        <translation>Apri la pagina nella lavagna</translation>
     </message>
     <message>
         <source>Ctrl+O</source>
@@ -369,15 +369,15 @@
     </message>
     <message>
         <source>Delete</source>
-        <translation>Cancella</translation>
+        <translation>Elimina</translation>
     </message>
     <message>
         <source>Delete Selected Content</source>
-        <translation>Cancella il contenuto selezionato</translation>
+        <translation>Elimina il contenuto selezionato</translation>
     </message>
     <message>
         <source>Del</source>
-        <translation>Cancella</translation>
+        <translation>Elimina</translation>
     </message>
     <message>
         <source>Add to Working Document</source>
@@ -461,11 +461,11 @@
     </message>
     <message>
         <source>Sleep</source>
-        <translation>Sleep</translation>
+        <translation>Sospendi</translation>
     </message>
     <message>
         <source>Put Presentation to Sleep</source>
-        <translation>Metti la presentazione in modalità sleep</translation>
+        <translation>Sospendi la presentazione</translation>
     </message>
     <message>
         <source>Virtual Keyboard</source>
@@ -477,7 +477,7 @@
     </message>
     <message>
         <source>Plain Light Background</source>
-        <translation>Sfondo chiaro</translation>
+        <translation>Sfondo chiaro semplice</translation>
     </message>
     <message>
         <source>Light</source>
@@ -489,7 +489,7 @@
     </message>
     <message>
         <source>Plain Dark Background</source>
-        <translation>Sfondo scuro</translation>
+        <translation>Sfondo scuro semplice</translation>
     </message>
     <message>
         <source>Dark</source>
@@ -513,23 +513,23 @@
     </message>
     <message>
         <source>Start Screen Recording</source>
-        <translation>Inizia registrazione schermata</translation>
+        <translation>Inizia registrazione schermo</translation>
     </message>
     <message>
         <source>Erase Items</source>
-        <translation>Elimina oggetti</translation>
+        <translation>Cancella oggetti</translation>
     </message>
     <message>
         <source>Erase All Items</source>
-        <translation>Elimina tutti gli oggetti</translation>
+        <translation>Cancella tutti gli oggetti</translation>
     </message>
     <message>
         <source>Erase Annotations</source>
-        <translation>Elimina annotazioni</translation>
+        <translation>Cancella annotazioni</translation>
     </message>
     <message>
         <source>Erase All Annotations</source>
-        <translation>Elimina tutte le annotazioni</translation>
+        <translation>Cancella tutte le annotazioni</translation>
     </message>
     <message>
         <source>Clear Page</source>
@@ -537,7 +537,7 @@
     </message>
     <message>
         <source>Clear All Elements</source>
-        <translation>Cancella tutti gli elementi</translation>
+        <translation>Pulisci tutti gli elementi</translation>
     </message>
     <message>
         <source>Pen</source>
@@ -545,7 +545,7 @@
     </message>
     <message>
         <source>Annotate Document</source>
-        <translation>Commenta documento</translation>
+        <translation>Annota documento</translation>
     </message>
     <message>
         <source>Ctrl+I</source>
@@ -553,7 +553,7 @@
     </message>
     <message>
         <source>Erase Annotation</source>
-        <translation>Cancella annotazioni</translation>
+        <translation>Cancella l'annotazione</translation>
     </message>
     <message>
         <source>Ctrl+E</source>
@@ -565,7 +565,7 @@
     </message>
     <message>
         <source>Highlight </source>
-        <translation>Evidenzia</translation>
+        <translation>Evidenzia </translation>
     </message>
     <message>
         <source>Ctrl+M</source>
@@ -649,11 +649,11 @@
     </message>
     <message>
         <source>Add To Library</source>
-        <translation>Aggiungi alla libreria</translation>
+        <translation>Aggiungi alla biblioteca</translation>
     </message>
     <message>
         <source>Add Item To Library</source>
-        <translation>Aggiungi oggetto alla libreria</translation>
+        <translation>Aggiungi oggetto alla biblioteca</translation>
     </message>
     <message>
         <source>Pages</source>
@@ -713,7 +713,7 @@
     </message>
     <message>
         <source>Trap Web Content</source>
-        <translation>Cattura un contenuto web</translation>
+        <translation>Cattura contenuto web</translation>
     </message>
     <message>
         <source>Custom Capture</source>
@@ -777,11 +777,11 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation>Editore Open-Sankoré</translation>
+        <translation>Editor Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation>Mostra l'editore Open-Sankoré</translation>
+        <translation>Mostra l'editor dei Widgets Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
@@ -789,23 +789,39 @@
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation>Nascondi Open-Sankoré</translation>
+        <translation>Nascondi l'applicazione Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation>Importa i documenti Uniboard</translation>
+        <translation>Importa documenti Uniboard</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation>Importa i vecchi documenti Sankoré o Uniboard</translation>
+        <translation>Importa vecchi documenti Sankoré o Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Raggruppa oggetti</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Riproduci</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagisci con gli oggetti</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Cancella sfondo</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Rimuove lo sfondo</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Raggruppa</translation>
     </message>
 </context>
 <context>
@@ -816,7 +832,7 @@
     </message>
     <message>
         <source>Username:</source>
-        <translation>Nome utente</translation>
+        <translation>Nome utente:</translation>
     </message>
     <message>
         <source>Password:</source>
@@ -827,11 +843,11 @@
     <name>ProxyDialog</name>
     <message>
         <source>Proxy Authentication</source>
-        <translation>Autenticazione con Proxy</translation>
+        <translation>Autenticazione Proxy</translation>
     </message>
     <message>
         <source>Connect to Proxy</source>
-        <translation>Connessione con Proxy</translation>
+        <translation>Connessione al Proxy</translation>
     </message>
     <message>
         <source>Username:</source>
@@ -843,31 +859,26 @@
     </message>
     <message>
         <source>Save username and password for future use</source>
-        <translation>Salva username e password per usi futuri</translation>
+        <translation>Salva nome utente e password per usi futuri</translation>
     </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Cestino</translation>
+        <source>Element ID = </source>
+        <translation>Elemento ID =</translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Home</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Il contenuto non è supportato nel formato di destinazione.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Impossibile caricare il contenuto</translation>
+        <source>Remove Page</source>
+        <translation>Rimuovi pagina</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Caricamento in corso...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Sei sicuro di voler rimuovere 1 pagina dal documento selezionato '%0'?</translation>
     </message>
 </context>
 <context>
@@ -916,11 +927,11 @@
     </message>
     <message>
         <source>Unknown tool type %1</source>
-        <translation>Tipo di strumento sconosciuto %1</translation>
+        <translation>Tipo di strumento %1 sconosciuto</translation>
     </message>
     <message>
         <source>Unknown content type %1</source>
-        <translation>Contentuto sconosciuto %1</translation>
+        <translation>Tipo di contentuto %1 sconosciuto</translation>
     </message>
     <message>
         <source>Add Item</source>
@@ -930,12 +941,36 @@
         <source>All Supported (%1)</source>
         <translation>Tutto supportato (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Rimuovi pagina %1 dal documento</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Pagina %1 rimossa</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Operazione di aggiunta file fallita: errore nella copia file</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Raggruppa</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Separa</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
     <message>
         <source>Error Adding Image to Library</source>
-        <translation>Errore durante l'aggiunta dell'immagine alla libreria</translation>
+        <translation>Errore aggiungendo l'immagine alla biblioteca</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>ImmagineCatturata</translation>
     </message>
 </context>
 <context>
@@ -964,20 +999,16 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Mostra Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
-        <translation>Cattura parte della schermata</translation>
+        <translation>Cattura parte dello schermo</translation>
     </message>
     <message>
         <source>Capture the Screen</source>
-        <translation>Cattura la schermata</translation>
+        <translation>Cattura lo schermo</translation>
     </message>
     <message>
         <source>Show the stylus palette</source>
-        <translation>Mostra la palette stilo</translation>
+        <translation>Mostra la palette dello stilo</translation>
     </message>
     <message>
         <source>Show Board on Secondary Screen</source>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Mostra il desktop sullo schermo secondario</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Mostra Open Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1000,7 +1035,7 @@
     </message>
     <message>
         <source>Add Folder of Images</source>
-        <translation>Aggiungi una cartella di immagini</translation>
+        <translation>Aggiungi cartella di immagini</translation>
     </message>
     <message>
         <source>Add Images</source>
@@ -1012,7 +1047,7 @@
     </message>
     <message>
         <source>Duplicating Document %1</source>
-        <translation>Duplica il documento %1</translation>
+        <translation>Sto duplicando il documento %1</translation>
     </message>
     <message>
         <source>Document %1 copied</source>
@@ -1056,7 +1091,7 @@
     </message>
     <message>
         <source>No document selected!</source>
-        <translation>Nessun documento selezionato</translation>
+        <translation>Nessun documento selezionato!</translation>
     </message>
     <message>
         <source>Open Supported File</source>
@@ -1072,15 +1107,11 @@
     </message>
     <message>
         <source>Import all Images from Folder</source>
-        <translation>Importa tutte le immagini della cartella</translation>
-    </message>
-    <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>La cartella non contiene nessun file immagine!</translation>
+        <translation>Importa tutte le immagini dalla cartella</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation>Cancella</translation>
+        <translation>Elimina</translation>
     </message>
     <message>
         <source>Empty</source>
@@ -1112,11 +1143,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation>
-            <numerusform>Siete sicuri di voler rimouvere %n pagina(e) dal documento '%1'?</numerusform>
-            <numerusform></numerusform>
+        <translation type="unfinished">
+            <numerusform>Sei sicuro di voler rimuovere %n pagine dal documento '%1' selezionato?
+        </numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titolo pagina</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>La cartella non contiene alcun file immagine</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documenti senza titolo</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1145,12 +1188,20 @@
         <translation>File %1 salvato</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Sto importando pagina %1 di %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Inserimento di pagina %1 di %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Importazione riuscita.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Dati dell'immagine errati, salto il file %1</translation>
+        <source>Import of file %1 successful.</source>
+        <translation>Importazione del file %1 riuscita.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Sto importando il file %1</translation>
     </message>
 </context>
 <context>
@@ -1159,6 +1210,10 @@
         <source>Page %0</source>
         <translation>Pagina %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titolo pagina</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1168,7 +1223,7 @@
     </message>
     <message>
         <source>Export canceled ...</source>
-        <translation>Esportazione annullata ...</translation>
+        <translation>Esportazione annullata...</translation>
     </message>
     <message>
         <source>Converting page %1/%2 ...</source>
@@ -1180,15 +1235,15 @@
     </message>
     <message>
         <source>Uploading Sankore File on Web.</source>
-        <translation>L'upload in rete del file Sankore è in corso.</translation>
+        <translation>Caricamento nel web del file Sankore in corso.</translation>
     </message>
     <message>
         <source>Document uploaded correctly on the web.</source>
-        <translation>Documento caricato correttamente in rete.</translation>
+        <translation>Documento caricato correttamente nel web.</translation>
     </message>
     <message>
         <source>Failed to upload document on the web.</source>
-        <translation>L'upload del documento in rete è fallito.</translation>
+        <translation>Il caricamento del documento nel web è fallito.</translation>
     </message>
 </context>
 <context>
@@ -1203,9 +1258,9 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation>
-            <numerusform>%1 pagina copiata</numerusform>
-            <numerusform>%1 pagine copiate</numerusform>
+        <translation type="unfinished">
+            <numerusform>%1 pagine copiate
+        </numerusform>
         </translation>
     </message>
 </context>
@@ -1213,7 +1268,7 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Download in corso</translation>
     </message>
     <message>
         <source>Cancel</source>
@@ -1221,26 +1276,33 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>È apparso un avviso durante l'esportazione</translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Esporta in IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Esporta come file IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Esportazione documento in corso...</translation>
+        <translation>Esportazione documento in corso...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esportazione conclusa con successo.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Esportazione fallita.</translation>
+        <translation>Esportazione fallita.</translation>
     </message>
 </context>
 <context>
@@ -1301,7 +1363,7 @@
     </message>
     <message>
         <source>Export successful.</source>
-        <translation>Esportazione completata son successo.</translation>
+        <translation>Esportazione riuscita.</translation>
     </message>
     <message>
         <source>Exporting page %1 of %2</source>
@@ -1343,68 +1405,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Aggiungi alla pagina</translation>
+        <translation>Aggiungi alla pagina</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Imposta come sfondo</translation>
+        <translation>Imposta come sfondo</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Aggiungi alla libreria</translation>
+        <translation>Aggiungi alla Biblioteca</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Informazioni sull'oggetto</translation>
+        <translation>Informazioni sull'oggetto</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Aggiungi ai preferiti</translation>
+        <translation>Aggiungi ai preferiti</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Condividi</translation>
+        <translation>Condividi</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>Cerca</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Cancella</translation>
+        <translation>Elimina</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Torna alla cartella</translation>
+        <translation>Torna alla cartella</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Rimuovi dai preferiti</translation>
+        <translation>Rimuovi dai preferiti</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Crea nuova cartella</translation>
+        <translation>Crea nuova cartella</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Ripeti la scansione del file system</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Immagine importata</translation>
+        <translation>ImmagineImportata</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Audio</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmati</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Immagini</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animazioni</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interattività</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Applicazioni</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Forme</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Preferiti</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Ricerca web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Cestino</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Accetta</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Inserisci un nuovo nome di cartella</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Caricamento in corso </translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Bloccato</translation>
+        <translation>Bloccato</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Visibile sullo schermo esteso</translation>
+        <translation>Visibile sullo schermo esteso</translation>
     </message>
 </context>
 <context>
@@ -1437,7 +1565,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Modificabile</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Caricamento in corso...</translation>
     </message>
 </context>
 <context>
@@ -1448,7 +1590,7 @@
     </message>
     <message>
         <source>Transform as Tool </source>
-        <translation>Trasforma in strumento</translation>
+        <translation>Trasforma in strumento </translation>
     </message>
 </context>
 <context>
@@ -1486,7 +1628,7 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>L'importazione del file%1 è fallita.</translation>
+        <translation>L'importazione del file %1 è fallita.</translation>
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
@@ -1499,14 +1641,6 @@
         <source>Image Format (</source>
         <translation>Formato immagine (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Importazione immagine fallita.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Immagine importata con successo.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1522,20 +1656,16 @@
         <source>Importing page %1 of %2</source>
         <translation>Importazione della pagina %1 di %2 in corso</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importazione del PDF completata con successo.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
     <message>
         <source>Error while publishing video to intranet (%1)</source>
-        <translation>Errore nella pubblicazione del video in Intranet (%1)</translation>
+        <translation>Errore nella pubblicazione del video in intranet (%1)</translation>
     </message>
     <message>
         <source>Publishing to Intranet in progress %1 %</source>
-        <translation>Pubblicazione in Intranet in corso %1 %</translation>
+        <translation>Pubblicazione in intranet in corso %1 %</translation>
     </message>
 </context>
 <context>
@@ -1549,121 +1679,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Aggiungi ai preferiti</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Condividi</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Cerca</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Cancella</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Torna alla cartella</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Rimuovi dai preferiti</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Crea nuova cartella</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Aggiungi alla pagina</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Imposta come sfondo</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Aggiungi alla libreria</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Informazioni sull'oggetto</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>Aggiungi un'immagine alla libreria</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Audio</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Film</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Immagini</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Forme</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applicazioni</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Preferiti</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Generazione della miniatura di anteprima per %1 in corso.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>L'aggiunta alla pagina per l'elemento %1 è fallita.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interattività</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Immagine importata</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animazioni</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Invio</translation>
     </message>
 </context>
 <context>
@@ -1682,6 +1698,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Chiudi</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1717,37 +1740,41 @@ Vuoi ignorare gli errori per questo host?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Aggiungi nuova cartella</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nome nuova cartella:</translation>
+        <source>(copy)</source>
+        <translation>(copia)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Aggiungi</translation>
+        <source>Document Repository Loss</source>
+        <translation>Perdita archivio documenti</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Annulla</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore ha perso l'accesso all'archivio dei documenti '%1'. Purtroppo l'applicazione deve chiudersi per evitare la corruzione dei dati. Potrebbero essere andate perse anche le ultime modifiche.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copia)</translation>
+        <source>English</source>
+        <translation>Inglese</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Perdita archivio documenti</translation>
+        <source>Russian</source>
+        <translation>Russo</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore ha perso l'accesso all'archivio dei documenti '%1'. Purtroppo l'applicazione deve chiudere per evitare la corruzione dei dati. Potrebbero essere andate perse anche le ultime modifiche.</translation>
+        <source>German</source>
+        <translation>Tedesco</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francese</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Franco Svizzero</translation>
     </message>
 </context>
 <context>
@@ -1782,7 +1809,7 @@ Vuoi ignorare gli errori per questo host?</translation>
     </message>
     <message>
         <source>Default Audio Input</source>
-        <translation>Entrata audio predefinita</translation>
+        <translation>Ingresso audio predefinito</translation>
     </message>
     <message>
         <source>No Audio Recording</source>
@@ -1861,14 +1888,6 @@ Vuoi ignorare gli errori per questo host?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Documenti senza titolo</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Cestino</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>I miei film</translation>
     </message>
@@ -1877,33 +1896,34 @@ Vuoi ignorare gli errori per questo host?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Docente</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Studente</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui l'attività ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Trascina qui una
+risorsa multimediale ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui il titolo...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Inserisci qui il titolo del link...</translation>
     </message>
 </context>
 <context>
@@ -1917,142 +1937,144 @@ Vuoi ignorare gli errori per questo host?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui il titolo...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui un commento...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Aggiungi un'azione</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Aggiungi una risorsa multimediale</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Aggiungi un link</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui il titolo della sessione...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autore(i)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui gli autori...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Obiettivo(i)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Digita qui gli obiettivi...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Indicizzazione della risorsa</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Parole chiave:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Digita qui le parole chiave...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Livello:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Soggetto:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tipo:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licenza</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribuzione CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribuzione - Non opere derivate CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribuzione - Condividi allo stesso modo CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribuzione - Non Commerciale CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribuzione - Non opere derivate, Non commerciale CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribuzione - Non commerciale, Condividi allo stesso modo CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Pubblico dominio</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Copyright</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Creato il:
+</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Aggiornato il:
+</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Titolo pagina</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina: %0</translation>
     </message>
 </context>
 <context>
     <name>UBThumbnailAdaptor</name>
     <message>
         <source>Generating preview thumbnails ...</source>
-        <translation>Generazione della miniatura di anteprima in corso ...</translation>
+        <translation>Generazione della miniatura di anteprima in corso...</translation>
     </message>
     <message>
         <source>%1 thumbnails generated ...</source>
-        <translation>%1 miniatura generata ...</translation>
+        <translation>%1 miniature generate...</translation>
     </message>
 </context>
 <context>
@@ -2071,20 +2093,24 @@ Vuoi ignorare gli errori per questo host?</translation>
     </message>
     <message>
         <source>Protractor</source>
-        <translation>Gognometro</translation>
+        <translation>Goniometro</translation>
     </message>
     <message>
         <source>Triangle</source>
-        <translation>Triangolo</translation>
+        <translation>Squadra</translation>
     </message>
     <message>
         <source>Magnifier</source>
-        <translation>Lente di ingrandimento</translation>
+        <translation>Lente</translation>
     </message>
     <message>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Goniometro 2</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2101,11 +2127,11 @@ Vuoi ignorare gli errori per questo host?</translation>
     <name>UBUpdateDlg</name>
     <message>
         <source>Document updater</source>
-        <translation>Aggiornamento documento</translation>
+        <translation>Aggiorna documento</translation>
     </message>
     <message>
         <source> files require an update.</source>
-        <translation>I file necessitano di un aggiornamento.</translation>
+        <translation> i file necessitano di un aggiornamento.</translation>
     </message>
     <message>
         <source>Backup path: </source>
@@ -2131,7 +2157,7 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
     <message>
         <source>An error occured during the update. The files have not been affected.</source>
-        <translation>Si è verificato un errore durante l'aggiornamento. I file non sono stati intaccati.</translation>
+        <translation>Si è verificato un errore durante l'aggiornamento. I file non sono stati coinvolti.</translation>
     </message>
     <message>
         <source>Files update results</source>
@@ -2139,22 +2165,15 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
     <message>
         <source>Updating file </source>
-        <translation>Aggiornamento file in corso</translation>
+        <translation>Aggiornamento file in corso </translation>
     </message>
     <message>
         <source>Please wait the import process will start soon...</source>
-        <translation>Si prega di attendere. Il processo di importazione sta per iniziare...</translation>
+        <translation>Si prega di attendere. Il processo di importazione inizierà a breve...</translation>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Ricordamelo in seguito</translation>
     </message>
 </context>
 <context>
@@ -2168,7 +2187,7 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     <name>UBWebPublisher</name>
     <message>
         <source>Publish Document on Sankore Web</source>
-        <translation>Pubblica documento sulla rete Sankore</translation>
+        <translation>Pubblica documento sul web Sankore</translation>
     </message>
 </context>
 <context>
@@ -2190,18 +2209,26 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
     <message>
         <source>Upload to YouTube in progress %1 %</source>
-        <translation>Upload su YouTube in corso %1 %</translation>
+        <translation>Caricamento su YouTube in corso %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
     <message>
         <source>Upload</source>
-        <translation>Upload</translation>
+        <translation>Caricamento</translation>
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation>Auto & Veicoli</translation>
+        <translation>Auto e veicoli</translation>
     </message>
     <message>
         <source>Music</source>
@@ -2217,7 +2244,7 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
     <message>
         <source>Travel & Events</source>
-        <translation>Viaggi & Eventi</translation>
+        <translation>Viaggi ed eventi</translation>
     </message>
     <message>
         <source>Gaming</source>
@@ -2229,11 +2256,11 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation>Persone & Blog</translation>
+        <translation>Persone e blog</translation>
     </message>
     <message>
         <source>News & Politics</source>
-        <translation>Attualità & Politica</translation>
+        <translation>Attualità e politica</translation>
     </message>
     <message>
         <source>Entertainment</source>
@@ -2245,15 +2272,15 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     </message>
     <message>
         <source>Howto & Style</source>
-        <translation>Stile</translation>
+        <translation>Howto e stile</translation>
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation>Non profit & Attivismo</translation>
+        <translation>Non profit ed attivismo</translation>
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation>Scienza & Tecnologia</translation>
+        <translation>Scienza e tecnologia</translation>
     </message>
 </context>
 <context>
@@ -2267,11 +2294,11 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importa documenti Uniboard/Sankore dai formati precedenti</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Non ci sono documenti da importare</translation>
     </message>
 </context>
 <context>
@@ -2368,7 +2395,7 @@ Si prega di riavviare l'applicazione per accedere ai documenti aggiornati.<
     <name>WBHistoryTreeModel</name>
     <message>
         <source>Earlier Today</source>
-        <translation>Oggi</translation>
+        <translation>Oggi prima</translation>
     </message>
     <message>
         <source>%1 items</source>
@@ -2515,6 +2542,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Premendo 'Upload',  certifichi di possedere tutti i diritti sul contenuto o di essere stato autorizzato dal proprietario a rendere questi contenuti pubblici su Youtube, e che in ogni modo siano conformi ai termini di utilizzo di Youtube che puoi trovare all'indirizzo: </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2613,7 +2644,7 @@ p, li { white-space: pre-wrap; }
     <name>documents</name>
     <message>
         <source>Uniboard Documents</source>
-        <translation>Documento Uniboard</translation>
+        <translation>Documenti Uniboard</translation>
     </message>
 </context>
 <context>
@@ -2624,11 +2655,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>version : …</source>
-        <translation>versione: ...</translation>
+        <translation>versione : ...</translation>
     </message>
     <message>
         <source>Default Settings</source>
-        <translation>Settaggio predefinito</translation>
+        <translation>Impostazioni predefinite</translation>
     </message>
     <message>
         <source>Close</source>
@@ -2664,15 +2695,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
-        <translation>Posiziona in alto (consigliato per tablet)</translation>
+        <translation>Posizionata in alto (consigliato per tablet)</translation>
     </message>
     <message>
         <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation>Posiziona in basso (consigliato per lavagne)</translation>
+        <translation>Posizionata in basso (consigliato per lavagne)</translation>
     </message>
     <message>
         <source>Display Text Under Button</source>
-        <translation>Visualizza testo sotto al bottone</translation>
+        <translation>Visualizza testo sotto il pulsante</translation>
     </message>
     <message>
         <source>Stylus Palette</source>
@@ -2696,7 +2727,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>About</source>
-        <translation>A proposito di</translation>
+        <translation>Informazioni su</translation>
     </message>
     <message>
         <source>Software Update</source>
@@ -2736,274 +2767,543 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostra il contenuto interno della pagina web sullo schermo secondario o sul proiettore</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Multi schermo</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Scambia lo schermo di controllo con quello di visualizzazione</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Modalità</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Modalità di avvio:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Lavagna</translation>
+        <translation>Lavagna</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Desktop</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Utente proxy:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Password:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">ID Pianeta Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Utente:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Password: </translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Riconoscimenti</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Le licenze sono in inglese per rispettare le traduzioni ufficiali legalmente approvate.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3011,12 +3311,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3024,10 +3323,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_iw.ts b/Sankore-3.1/resources/i18n/sankore_iw.ts
index 1a93379..7005e79 100644
--- a/Sankore-3.1/resources/i18n/sankore_iw.ts
+++ b/Sankore-3.1/resources/i18n/sankore_iw.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="he_IL">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,60 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>הגרסה הפתוחה של Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>יציאה מהגרסה הפתוחה של  Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>העורך של הגרסה הפתוחה של Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>הצג את עורך הוויג'טים של הגרסה הפתוחה של Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>הסתר את הגרסה הפתוחה של Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>הסתר את היישום של הגרסה הפתוחה של Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>ייבא את מסמכי ה- Uniboard</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>ייבא מסמכים ישנים של Sankoré או של Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>פריטי קבוצה</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>נגן</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translatorcomment>There is no direct translation of this sentence- please provide contexte</translatorcomment>
+        <translation type="unfinished">לתפעל את הפריט</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>מחק רקע</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>הסר רקע</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>קבוצה</translation>
     </message>
 </context>
 <context>
@@ -849,25 +866,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/דף הבית</translation>
+        <source>Element ID = </source>
+        <translation>זהות הרכיב:</translation>
     </message>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>סל אשפה</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>התוכן אינו נתמך בפורמט היעד</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>לא ניתן לטעון תוכן</translation>
+        <source>Remove Page</source>
+        <translation>הסר את הדף</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>טוען...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>האם אתה בטוח שברצונך למחוק דף 1 מהמסמך שנבחר %0?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +942,26 @@
         <source>All Supported (%1)</source>
         <translation>הכל )%1(</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>מחק עמוד %1 מהמסמך</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>דף %1 נמחק</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>הוספת פעולת קובץ נכשלה: אירעה שגיאה בהעתקת הקובץ</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>קבץ</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>בטל קיבוץ</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +969,10 @@
         <source>Error Adding Image to Library</source>
         <translation>אירעה שגיאה בהוספת התמונה לספריה</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>תמונה שנלכדה</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +1000,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>הצג Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>לכד חלק מהמסך</translation>
     </message>
@@ -987,6 +1019,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>הצג את שולחן העבודה על מסך משני</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>הראה סאנקור פתוח</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1111,6 @@
         <translation>ייבא את כל התמונות מהתיקיה</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>התיקייה אינה מכילה כל קבצי !תמונות</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>מחק</translation>
     </message>
@@ -1112,10 +1144,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>האם אתה בטוח שברצונך להסיר %n עמוד(ים) מהמסמך שנבחר %1'?</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>דף כותרת</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>התיקיה אינה מכילה כל קבצי תמונות</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>מסמכים ללא שם</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1189,20 @@
         <translation>קובץ %1 נשמר</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>מייבא עמוד %1 מתוך %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>מכניס עמוד %1 מתוך %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>הייבוא בוצע בהצלחה.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>נותני תמונה שגויים, מדלג על הקובץ %1</translation>
+        <source>Import of file %1 successful.</source>
+        <translation>ייבוא קובץ %1 התבצע בהצלחה</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>מייבא קובץ %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1211,10 @@
         <source>Page %0</source>
         <translation>עמוד %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>עמוד כותרת</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,7 +1259,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 דפים הועתקו</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1211,34 +1269,42 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>מוריד קבצים</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">בטל</translation>
+        <translation>בטל</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translatorcomment>I don't understand this sentence</translatorcomment>
+        <translation></translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>ייצא ל-IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>ייצא כקובץ IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">מייצא מסמך...</translation>
+        <translation>מייצא מסמך...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">הייצוא בוצע בהצלחה.</translation>
+        <translation>הייצוא בוצע בהצלחה.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>פעולת הייצוא נכשלה</translation>
     </message>
 </context>
 <context>
@@ -1341,68 +1407,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">הוסף לדף</translation>
+        <translation>הוסף לדף</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">קבע כרקע</translation>
+        <translation>קבע כרקע</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">הוסף לספרייה</translation>
+        <translation>הוסף לספרייה</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">מידע על האובייקט</translation>
+        <translation>מידע על האובייקט</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">הוסף למועדפים</translation>
+        <translation>הוסף למועדפים</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">שתף</translation>
+        <translation>שתף</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>חיפוש</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">מחק</translation>
+        <translation>מחק</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">חזרה לקובץ</translation>
+        <translation>חזרה לקובץ</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">הסר מהמועדפים</translation>
+        <translation>הסר מהמועדפים</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">צור תיקייה חדשה</translation>
+        <translation>צור תיקייה חדשה</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>סרוק מחדש את מערכת הקבצים</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">תמונה מיובאת</translation>
+        <translation>תמונה מיובאת</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>קבצי שמע</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>סרטים</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>תמונות</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>אנימציות</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>אינטראקטיביות</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>יישומים</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>צורות</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>מועדפים</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>חיפוש באינטרנט</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>סל</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>קבל</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>בטל</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>הזן שם תיקיה חדש</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>טוען</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">נעול</translation>
+        <translation>נעול</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">ניתן לראותו במסך רחב</translation>
+        <translation>ניתן לראותו במסך רחב</translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1567,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>ניתן לעריכה</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>אינטרנט</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>טוען...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1634,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>פתיחת Sankoré (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1643,6 @@
         <source>Image Format (</source>
         <translation>פורמט התמונה )</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>ייבוא התמונה נכשל.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>ייבוא התמונה בוצע בהצלחה.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1658,6 @@
         <source>Importing page %1 of %2</source>
         <translation>מייבא עמוד %1 מתוך %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>ייבוא ה- PDF בוצע בהצלחה.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,121 +1681,8 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>הוסף למועדפים</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>שתף</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>חפש</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>מחק</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>חזרה לקובץ</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>הסר מהמועדפים</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>צור תיקייה חדשה</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>הוסף לדף</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>קבע כרקע</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>הוסף לספרייה</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>מידע על האובייקט</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>ImportedImage</source>
-        <translation>תמונה מיובאת</translation>
-    </message>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>תמונה 1 הוספה לספריה</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>קבצי שמע</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>סרטים</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>תמונות</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>צורות</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>יישומים</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>מועדף</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>אינטראקטיביות</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>אנימציות</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>יוצר תמונה ממוזערת עבור %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>ההוספה לדף נכשלה עבור פריט %1.</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translatorcomment>pour la touche Enter</translatorcomment>
+        <translation>מקש ה= ENTER</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1701,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>סגור</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1709,37 +1737,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>הוסף תיקיה חדשה</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>שם תיקייה חדשה:</translation>
+        <source>(copy)</source>
+        <translation>(העתק)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>הוסף</translation>
+        <source>Document Repository Loss</source>
+        <translation>אבד מקום האכסון של המסמך</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>בטל</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sakomeאיבד את הגישה למקום אכסון המסמך %1 : לצערנו היישום צריך להסגר כדי למנוע השחתת נתונים. ייתכן שגם השינויים האחרונים יאבדו.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(העתק)</translation>
+        <source>English</source>
+        <translation>אנגלית</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>אבד מקום האכסון של המסמך</translation>
+        <source>Russian</source>
+        <translation>רוסית</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sakomeאיבד את הגישה למקום אכסון המסמך %1 : לצערנו היישום צריך להסגר כדי למנוע השחתת נתונים. ייתכן שגם השינויים האחרונים יאבדו.</translation>
+        <source>German</source>
+        <translation>גרמנית</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>צרפתית</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>צרפתית של שוויץ</translation>
     </message>
 </context>
 <context>
@@ -1853,14 +1885,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>מסמכים ללא שם</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>סל אשפה</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>הסרטים שלי</translation>
     </message>
@@ -1869,33 +1893,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>מורה</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>סטודנט</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש מטלה כאן</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>עזוב את המדיה כאן</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש כותרת כאן</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>הכנס את כותרת הקישור כאן</translation>
     </message>
 </context>
 <context>
@@ -1909,74 +1933,82 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש כותרת כאן</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש הערה כאן</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>הוסף פעולה</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>הוסף מדיה</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>הוסף קישור</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>עמוד: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש את כותרת הפעולה כאן...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>מחבר(ים)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש שם מחבר כאן...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>יעד(ים)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>הקש יעדים כאן...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>מיפתוח משאבים</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>מילות מפתח:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש מילות מפתח כאן...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>דרגה:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>נושאים:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>הקש:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>רישיון</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>טקסט מקור</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
@@ -2000,40 +2032,32 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>נחלת הכלל</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>זכויות יוצרים</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>נוצר ב:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>עדכן את:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>דף כותרת</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>עמוד: %0</translation>
     </message>
 </context>
 <context>
@@ -2077,6 +2101,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>מטמון</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>אריסטו</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2139,14 +2167,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>אינטרנט</translation>
+        <translation> לי שוב מאוחר יות</translation>
     </message>
 </context>
 <context>
@@ -2184,6 +2205,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>מעלה ליוטיוב%1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2259,11 +2288,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>ייבא מסמכים ישנים של Sankoré / Uniboard</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>אין מסמכים שצריך לייבא</translation>
     </message>
 </context>
 <context>
@@ -2720,302 +2749,585 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>פתיחת Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>הצג את תוכן עמוד האינטרנט הפנימי על מסך משני או על מקרן</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>מצג מרובה</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>החלף מצג בקרה והצג מצג</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>מצב</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>מצב להתחלה:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">לוח</translation>
+        <translation>לוח</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>שולחן העבודה</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>משתמש פרוקסי:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>סיסמא:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>שם מזהה בפלנטת Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>משתמש: </translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>סיסמא:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>אשראי</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ja.ts b/Sankore-3.1/resources/i18n/sankore_ja.ts
index 30943a1..8d66fe5 100644
--- a/Sankore-3.1/resources/i18n/sankore_ja.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ja.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="ja_JP" sourcelanguage="en_US">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,42 +769,62 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoreを終了</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré発行者</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoréのウィジェット発行者を掲示する</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoréを隠す</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoréを隠す</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Uniboardの書類を移入する</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>古いSankore書類やUniboard書類を移入する</translation>
     </message>
     <message>
         <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">アイテムを纏める</translation>
     </message>
     <message>
         <source>Group items</source>
+        <translation>アイテムを纏める</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>始動する</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>アイテムを使う</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>背景を削除する</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>背景を削除する</translation>
+    </message>
+    <message>
+        <source>Group</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -851,23 +871,35 @@
     <message>
         <source>Trash</source>
         <comment>Pictures category element</comment>
-        <translation>ゴミ箱</translation>
+        <translation type="obsolete">ゴミ箱</translation>
     </message>
     <message>
         <source>/Home</source>
         <comment>Category list label on navigation tool bar</comment>
-        <translation>/ホーム</translation>
+        <translation type="obsolete">/ホーム</translation>
+    </message>
+    <message>
+        <source>Element ID = </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation type="unfinished">ページ削除</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>コンテンツをロードできません</translation>
-    </message>
-    <message>
         <source>Loading ...</source>
-        <translation>ローディング中… </translation>
+        <translation type="obsolete">ローディング中… </translation>
     </message>
 </context>
 <context>
@@ -930,6 +962,26 @@
         <source>All Supported (%1)</source>
         <translation>全てサポート(%1) </translation>
     </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +989,10 @@
         <source>Error Adding Image to Library</source>
         <translation>ライブラリに画像追加中にエラー</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>キャプチャされた画像</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -965,7 +1021,7 @@
     <name>UBDesktopPalette</name>
     <message>
         <source>Show Uniboard</source>
-        <translation>Uniboard表示 </translation>
+        <translation type="obsolete">Uniboard表示 </translation>
     </message>
     <message>
         <source>Capture Part of the Screen</source>
@@ -987,6 +1043,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>サブスクリーンにデスクトップを表示 </translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1076,7 +1136,7 @@
     </message>
     <message>
         <source>Folder does not contain any image files!</source>
-        <translation>フィルダーには画像ファイルが含まれていません! </translation>
+        <translation type="obsolete">フィルダーには画像ファイルが含まれていません! </translation>
     </message>
     <message>
         <source>Delete</source>
@@ -1112,10 +1172,22 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>選抜した資料から%nページを除けたいですか?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>タイトルページ</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished">タイトルなしドキュメント</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1145,11 +1217,27 @@
     </message>
     <message>
         <source>Importing page %1 of %2</source>
-        <translation> %1 / %2 ページをインポート</translation>
+        <translation type="obsolete"> %1 / %2 ページをインポート</translation>
     </message>
     <message>
         <source>Erronous image data, skipping file %1</source>
-        <translation>画像データエラー、ファイル%1をスキップ</translation>
+        <translation type="obsolete">画像データエラー、ファイル%1をスキップ</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation type="unfinished">インポートに成功。</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1246,10 @@
         <source>Page %0</source>
         <translation>%0ページ</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>タイトルページ</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,8 +1294,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>ページを%1枚をコピーしました</numerusform>
         </translation>
     </message>
 </context>
@@ -1211,34 +1303,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>ファイルをダウンロードしています</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">キャンセル</translation>
+        <translation>キャンセル</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>IWBへエクスポート</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>IWB ファイルとしてエクスポート</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">ドキュメントのエクスポート中... </translation>
+        <translation>ドキュメントのエクスポート中... </translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>エクスポートに成功 </translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>エクスポートに失敗 </translation>
     </message>
 </context>
 <context>
@@ -1341,57 +1440,123 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">ページに追加 </translation>
+        <translation>ページに追加 </translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">背景として設定</translation>
+        <translation>背景として設定</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">ライブラリに追加</translation>
+        <translation>ライブラリに追加</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">オブジェクトインフォーメーション</translation>
+        <translation>オブジェクトインフォーメーション</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">お気に入りに追加</translation>
+        <translation>お気に入りに追加</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">シェアする</translation>
+        <translation>シェアする</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">検索</translation>
+        <translation>検索</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">削除</translation>
+        <translation>削除</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">フォルダーに戻る</translation>
+        <translation>フォルダーに戻る</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">お気に入りから削除</translation>
+        <translation>お気に入りから削除</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">新規フォルダーを作成</translation>
+        <translation>新規フォルダーを作成</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>ファイルを更新する</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">インポートされた画像</translation>
+        <translation>インポートされた画像</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation type="unfinished">オーディオ</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation type="unfinished">ムービー</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation type="unfinished">写真</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation type="unfinished">å‹•ç”»</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation type="unfinished">インタラクティブ</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation type="unfinished">アプリケーション</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation type="unfinished">形状</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">ゴミ箱</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">キャンセル</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1600,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>編集できます</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">ウェブ</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation type="unfinished">ローディング中… </translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1667,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore(*ubz)</translation>
     </message>
 </context>
 <context>
@@ -1499,11 +1678,11 @@
     </message>
     <message>
         <source>Image import failed.</source>
-        <translation>画像インポートに失敗 </translation>
+        <translation type="obsolete">画像インポートに失敗 </translation>
     </message>
     <message>
         <source>Image import successful.</source>
-        <translation>画像インポートに成功 </translation>
+        <translation type="obsolete">画像インポートに成功 </translation>
     </message>
 </context>
 <context>
@@ -1522,7 +1701,7 @@
     </message>
     <message>
         <source>PDF import successful.</source>
-        <translation>PDFインポートに成功</translation>
+        <translation type="obsolete">PDFインポートに成功</translation>
     </message>
 </context>
 <context>
@@ -1547,121 +1726,121 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
     <name>UBLibActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation>お気に入りに追加</translation>
+        <translation type="obsolete">お気に入りに追加</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation>シェアする</translation>
+        <translation type="obsolete">シェアする</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation>検索</translation>
+        <translation type="obsolete">検索</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation>削除</translation>
+        <translation type="obsolete">削除</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation>フォルダーに戻る</translation>
+        <translation type="obsolete">フォルダーに戻る</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation>お気に入りから削除</translation>
+        <translation type="obsolete">お気に入りから削除</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation>新規フォルダーを作成</translation>
+        <translation type="obsolete">新規フォルダーを作成</translation>
     </message>
 </context>
 <context>
     <name>UBLibItemProperties</name>
     <message>
         <source>Add to page</source>
-        <translation>ページに追加 </translation>
+        <translation type="obsolete">ページに追加 </translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation>背景として設定</translation>
+        <translation type="obsolete">背景として設定</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation>ライブラリに追加</translation>
+        <translation type="obsolete">ライブラリに追加</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation>オブジェクトインフォーメーション</translation>
+        <translation type="obsolete">オブジェクトインフォーメーション</translation>
     </message>
 </context>
 <context>
     <name>UBLibraryController</name>
     <message>
         <source>Added 1 Image to Library</source>
-        <translation>ライブラリに1画像追加</translation>
+        <translation type="obsolete">ライブラリに1画像追加</translation>
     </message>
     <message>
         <source>Audios</source>
         <comment>Audio category element</comment>
-        <translation>オーディオ</translation>
+        <translation type="obsolete">オーディオ</translation>
     </message>
     <message>
         <source>Movies</source>
         <comment>Movies category element</comment>
-        <translation>ムービー</translation>
+        <translation type="obsolete">ムービー</translation>
     </message>
     <message>
         <source>Pictures</source>
         <comment>Pictures category element</comment>
-        <translation>写真</translation>
+        <translation type="obsolete">写真</translation>
     </message>
     <message>
         <source>Shapes</source>
         <comment>Shapes category element</comment>
-        <translation>形状</translation>
+        <translation type="obsolete">形状</translation>
     </message>
     <message>
         <source>Applications</source>
         <comment>Applications category element</comment>
-        <translation>アプリケーション</translation>
+        <translation type="obsolete">アプリケーション</translation>
     </message>
     <message>
         <source>Favorite</source>
         <comment>Favorite category element</comment>
-        <translation>お気に入り</translation>
+        <translation type="obsolete">お気に入り</translation>
     </message>
     <message>
         <source>Creating image thumbnail for %1.</source>
-        <translation>%1のサムネイル画像を作成</translation>
+        <translation type="obsolete">%1のサムネイル画像を作成</translation>
     </message>
     <message>
         <source>Adding to page failed for item %1.</source>
-        <translation>%1のページへの追加に失敗 </translation>
+        <translation type="obsolete">%1のページへの追加に失敗 </translation>
     </message>
     <message>
         <source>Interactivities</source>
         <comment>Interactives category element</comment>
-        <translation>インタラクティブ</translation>
+        <translation type="obsolete">インタラクティブ</translation>
     </message>
     <message>
         <source>ImportedImage</source>
-        <translation>インポートされた画像</translation>
+        <translation type="obsolete">インポートされた画像</translation>
     </message>
     <message>
         <source>Animations</source>
         <comment>Animations category element</comment>
-        <translation>å‹•ç”»</translation>
+        <translation type="obsolete">å‹•ç”»</translation>
     </message>
     <message>
         <source>Web Search</source>
         <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">ウエブに経験する</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1859,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">閉じる</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1719,19 +1905,19 @@ Do you want to ignore these errors for this host?</source>
     <name>UBNewFolderDlg</name>
     <message>
         <source>Add new folder</source>
-        <translation>新規フォルダー追加</translation>
+        <translation type="obsolete">新規フォルダー追加</translation>
     </message>
     <message>
         <source>New Folder name:</source>
-        <translation>新規フォルダー名: </translation>
+        <translation type="obsolete">新規フォルダー名: </translation>
     </message>
     <message>
         <source>Add</source>
-        <translation>追加</translation>
+        <translation type="obsolete">追加</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation>キャンセル</translation>
+        <translation type="obsolete">キャンセル</translation>
     </message>
 </context>
 <context>
@@ -1750,6 +1936,29 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>英語</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>ロシア語</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>フランス語</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>スイスのフランス語</translation>
+    </message>
+</context>
+<context>
     <name>UBPodcastController</name>
     <message>
         <source>Failed to start encoder ...</source>
@@ -1861,11 +2070,11 @@ Do you want to ignore these errors for this host?</source>
     <name>UBSettings</name>
     <message>
         <source>Untitled Documents</source>
-        <translation>タイトルなしドキュメント</translation>
+        <translation type="obsolete">タイトルなしドキュメント</translation>
     </message>
     <message>
         <source>Trash</source>
-        <translation>ゴミ箱</translation>
+        <translation type="obsolete">ゴミ箱</translation>
     </message>
     <message>
         <source>My Movies</source>
@@ -1876,33 +2085,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>先生</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>生徒</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへ用事を入力〉 </translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへメディアトを下ろす〉 </translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへタイトルを入力〉 </translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへリンクを入力〉 </translation>
     </message>
 </context>
 <context>
@@ -1916,131 +2125,131 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへタイトルを入力〉 </translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへコメントを入力〉 </translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>行為を追加</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>メディアを追加</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>リンクを追加</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>%0ページ</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへ会期のタイトルを入力〉 </translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>作成者</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへ作成者を入力〉 </translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>目標</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>〈ここへ目標を入力〉 </translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>資源を分類</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>キーワード:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>〈ここへキーワードを入力〉 </translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>レベル:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>題材:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>é¡žåž‹:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>ライセンス</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>使った時:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>更新した時:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>タイトルページ</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>%0ページ</translation>
     </message>
 </context>
 <context>
@@ -2146,14 +2355,14 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
+        <translation>あとで覚える</translation>
     </message>
 </context>
 <context>
     <name>UBW3CWidget</name>
     <message>
         <source>Web</source>
-        <translation>ウェブ</translation>
+        <translation type="obsolete">ウェブ</translation>
     </message>
 </context>
 <context>
@@ -2191,6 +2400,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>YouTubeへアップロード進行中%1 % </translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2266,11 +2483,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>古いSankore書類やUniboard書類を移入する</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>移入できる資料がありません</translation>
     </message>
 </context>
 <context>
@@ -2510,6 +2727,10 @@ p, li { white-space: pre-wrap; }
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
         <translation></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2727,278 +2948,529 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>映写機や二号スクリーンにウエブページを掲示する</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>複数表記</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>点検表記と視覚表記を逆にする</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>モード</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>最初モード:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">ボード</translation>
+        <translation>ボード</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>デスクトップ</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>プロキシ利用者:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>パスワード:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Planète SankoréのID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>利用者:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>パスワード:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation></translation>
     </message>
     <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+    <message>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3006,12 +3478,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3019,10 +3490,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ko.ts b/Sankore-3.1/resources/i18n/sankore_ko.ts
index d2ab151..2e2d5d8 100644
--- a/Sankore-3.1/resources/i18n/sankore_ko.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ko.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="ko_KR" sourcelanguage="en_US">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré 종료</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré 편집기</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré 위젯 편집기 표시</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré 숨기기</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré 응용 프로그램 숨기기</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">유니보드 문서 가져오기</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">기존 Sankore 또는 유니보드 문서 가져오기</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation type="unfinished">항목 그룹화</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation type="unfinished">재생</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation type="unfinished">항목과 상호 작용</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation type="unfinished">배경 지우기</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation type="unfinished">배경 제거</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished">그룹화</translation>
     </message>
 </context>
 <context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>휴지통</translation>
+        <source>Element ID = </source>
+        <translation type="unfinished">요소 ID = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/홈</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation type="unfinished">대상 형식으로 지원되지 않는 콘텐츠입니다.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>콘텐츠를 불러올 수 없습니다</translation>
+        <source>Remove Page</source>
+        <translation type="unfinished">페이지 제거</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>불러오는 중 ...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation type="unfinished">선택한 문서 '%0'에서 1페이지를 제거하시겠습니까?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>모든 지원 형식 (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished">문서에서 %1페이지 삭제</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished">%1페이지 삭제됨</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished">파일 추가 작업 실패: 파일을 복사하는 도중 오류 발생</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished">그룹화</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished">그룹 해제</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>이미지를 라이브러리에 추가하는 도중 오류가 발생했습니다</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation type="unfinished">캡처한 이미지</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>유니보드 보이기</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>화면 일부 캡처</translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>보조 화면에 바탕 화면 보이기</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished">Open-Sankore 표시</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation>폴더에서 모든 이미지 가져오기</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>폴더에 이미지 파일이 없습니다!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>삭제</translation>
     </message>
@@ -1113,9 +1144,21 @@
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform>선택한 문서 '%1'에서 %n페이지를 제거하시겠습니까?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished">제목 페이지</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished">폴더에 이미지 파일이 없습니다</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished">무제 문서</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1187,20 @@
         <translation>%1 파일 저장됨</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>%1/%2 페이지 가져오는 중</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished">%1/%2페이지 삽입 중</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>잘못된 이미지 데이터, %1 파일 건너뜀</translation>
+        <source>Import successful.</source>
+        <translation type="unfinished">가져오기 완료.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation type="unfinished">%1 파일 가져오기 완료.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation type="unfinished">%1 파일 가져오는 중</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1209,10 @@
         <source>Page %0</source>
         <translation>%0 페이지</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation type="unfinished">제목 페이지</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1203,7 +1258,10 @@
     <message numerus="yes">
         <source>%1 pages copied</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
+            <numerusform variants="yes">
+                <lengthvariant>%1 페이지 복사됨</lengthvariant>
+                <lengthvariant></lengthvariant>
+            </numerusform>
         </translation>
     </message>
 </context>
@@ -1211,7 +1269,7 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">파일 다운로드 중</translation>
     </message>
     <message>
         <source>Cancel</source>
@@ -1219,14 +1277,21 @@
     </message>
 </context>
 <context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished">내보내는 도중 경고가 나타났습니다</translation>
+    </message>
+</context>
+<context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">IWB로 내보내기</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">IWB 파일로 내보내기</translation>
     </message>
     <message>
         <source>Exporting document...</source>
@@ -1386,6 +1451,10 @@
         <source>Create new folder</source>
         <translation type="unfinished">새 폴더 만들기</translation>
     </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation type="unfinished">파일 시스템 다시 스캔</translation>
+    </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
@@ -1393,6 +1462,68 @@
         <source>ImportedImage</source>
         <translation type="unfinished">가져온 이미지</translation>
     </message>
+    <message>
+        <source>Audios</source>
+        <translation type="unfinished">오디오</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation type="unfinished">동영상</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation type="unfinished">사진</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation type="unfinished">애니메이션</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation type="unfinished">대화형 작업</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation type="unfinished">응용 프로그램</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation type="unfinished">도형</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation type="unfinished">즐겨찾기</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation type="unfinished">웹 검색</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">휴지통</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished">적용</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">취소</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation type="unfinished">새 폴더 이름 입력</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation type="unfinished">불러오는 중</translation>
+    </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
@@ -1435,7 +1566,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">편집 가능</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation type="unfinished">웹</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation type="unfinished">불러오는 중 ...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1633,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankore(*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1642,6 @@
         <source>Image Format (</source>
         <translation>이미지 형식 (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>이미지 가져오기 실패.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>이미지 가져오기 완료.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1657,6 @@
         <source>Importing page %1 of %2</source>
         <translation>%1/%2 페이지 가져오는 중</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>PDF 가져오기 완료.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,121 +1680,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>즐겨찾기에 추가</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>공유</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>검색</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>삭제</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>폴더로 돌아가기</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>즐겨찾기에서 제거</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>새 폴더 만들기</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>페이지에 추가</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>배경으로 지정</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>라이브러리에 추가</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>객체 정보</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>라이브러리에 이미지 1개 추가됨</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>오디오</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>동영상</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>사진</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>도형</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>응용 프로그램</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>즐겨찾기</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>%1의 이미지 썸네일 생성 중.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>%1 항목의 페이지 추가 실패.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>대화형 작업</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>가져온 이미지</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>애니메이션</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">ìž…ë ¥</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1699,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">닫기</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1715,37 +1741,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>새 폴더 추가</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>새 폴더 이름:</translation>
+        <source>(copy)</source>
+        <translation>(사본)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>추가</translation>
+        <source>Document Repository Loss</source>
+        <translation>문서 저장소 손실</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>취소</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore가 '%1' 문서 저장소에 액세스할 수 없습니다. 데이터 손상을 방지하기 위해 응용 프로그램을 종료해야 합니다. 최종 변경된 내용도 손실되었을 수 있습니다.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(사본)</translation>
+        <source>English</source>
+        <translation type="unfinished">영어</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>문서 저장소 손실</translation>
+        <source>Russian</source>
+        <translation type="unfinished">러시아어</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore가 '%1' 문서 저장소에 액세스할 수 없습니다. 데이터 손상을 방지하기 위해 응용 프로그램을 종료해야 합니다. 최종 변경된 내용도 손실되었을 수 있습니다.</translation>
+        <source>German</source>
+        <translation type="unfinished">독일어</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation type="unfinished">프랑스어</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation type="unfinished">스위스 프랑스어</translation>
     </message>
 </context>
 <context>
@@ -1764,7 +1794,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>on your desktop ...</source>
-        <translation>바탕 화면에</translation>
+        <translation type="unfinished">바탕 화면에 ...</translation>
     </message>
     <message>
         <source>in folder %1</source>
@@ -1815,7 +1845,7 @@ Do you want to ignore these errors for this host?</source>
     <name>UBPreferencesController</name>
     <message>
         <source>version: </source>
-        <translation>버전:</translation>
+        <translation type="unfinished">버전: </translation>
     </message>
     <message>
         <source>Marker is pressure sensitive</source>
@@ -1859,14 +1889,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>무제 문서</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>휴지통</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>내 동영상</translation>
     </message>
@@ -1875,33 +1897,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">교사</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">학생</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 작업 입력 ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 미디어 놓기 ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 제목 입력...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 링크 제목 삽입...</translation>
     </message>
 </context>
 <context>
@@ -1915,138 +1937,140 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 제목 입력 ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 주석 입력 ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">작업 추가</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">미디어 추가</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">링크 추가</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">페이지: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 세션 제목 입력 ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저자</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 저자 입력 ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation type="unfinished">목표</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation type="unfinished">여기에 목표 입력...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">리소스 인덱싱</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">키워드:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">여기에 키워드 입력 ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">레벨:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation type="unfinished">주제:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">유형:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">라이선스</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작자 표시 CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작자 표시-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작자 표시-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작자 표시-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작자 표시-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작자 표시-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">공용 도메인</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">저작권</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">만든 날짜:
+</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">업데이트한 날짜:
+</translation>
     </message>
     <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation type="unfinished">제목 페이지</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">페이지: %0</translation>
     </message>
 </context>
 <context>
     <name>UBThumbnailAdaptor</name>
     <message>
         <source>Generating preview thumbnails ...</source>
-        <translation>미리보기 썸네일 생성 중 ...</translation>
+        <translation type="unfinished">미리보기 썸네일 생성 중 ...</translation>
     </message>
     <message>
         <source>%1 thumbnails generated ...</source>
@@ -2083,6 +2107,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>캐시</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="unfinished">Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2107,7 +2135,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Backup path: </source>
-        <translation>백업 경로:</translation>
+        <translation type="unfinished">백업 경로: </translation>
     </message>
     <message>
         <source>Browse</source>
@@ -2145,14 +2173,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>웹</translation>
+        <translation type="unfinished">나중에 알림</translation>
     </message>
 </context>
 <context>
@@ -2190,6 +2211,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>YouTube 업로드 진행 중 %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished">Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished">OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2265,11 +2294,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">기존 유니보드/Sankore 문서 가져오기</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">가져와야 할 문서가 없습니다.</translation>
     </message>
 </context>
 <context>
@@ -2730,27 +2759,27 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">보조 화면 또는 프로젝터에 내부 웹 페이지 콘텐츠 표시</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">다중 디스플레이</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">컨트롤 디스플레이 스왑 및 디스플레이 보기</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">모드</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">시작할 모드:</translation>
     </message>
     <message>
         <source>Board</source>
@@ -2758,274 +2787,558 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">바탕 화면</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">프록시 사용자:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">패스:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Planète Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">사용자:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">패스:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translatorcomment>Translation needed</translatorcomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation type="unfinished">Credits</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_mg.ts b/Sankore-3.1/resources/i18n/sankore_mg.ts
new file mode 100644
index 0000000..db9b8e0
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_mg.ts
@@ -0,0 +1,3964 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_CH">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Tsindrio raha hiverina amin'ny rindran'asa</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>Nalaina</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Diovina</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>0 Zavatra</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Antonta-taratasy fenoina</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Anaran'ny rakitra</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Avereno indray</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Ajanony</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Sokafy</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Ametraka Podcat amin'ny Youtube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Lohateny</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Fanazavana</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Mpamorona</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>Solaitra</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Tranon-kala</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Rakitra</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Haingo</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl + T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Sary ambadika</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Lahabolana</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Fakana</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Ampiana amin'ny io pejy io</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Ampiana amin'ny pejy vaovao</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Ampiana amin'ny tahirim-boky</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Pejy</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Pejy vaovao</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Tsy atao indray</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Ovaina ny sary ambadika</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl + Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Atao indray</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl + Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Teo aloha</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Pejy teo aloha</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>PgUp</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Ao aorina</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Pejy ao aorina</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>PgDpwn</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Fikarakarana ny rakitra</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl + D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Mpizaha tranon-kala</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl + W</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Tsipika kely</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Tsipika salasala</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Tsipika lehibe</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Fafotse kely</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>Fafotse salasala</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Fafotse lehibe</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Avereno aseho io pejy io</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Aseho ny pejin'ny fandraisana</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Aseho ny tobin-drohy</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Ampiana ny tobin-drohy</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Aseho ny solaitra</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>Fafana ny mpiatiny</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Aseho ny safidy nofaritana</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Aseho ny tahirim-boky</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Aseho ny sehatr'asan'ny solosaina</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Mamorona fitoeran-drakitra vaovao</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Mamorona rakitra vaovao</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Manafatra rakitra</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Mandefa rakitra</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Manokatra pejy amin'ny solaitra</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Asina dikamitovy ny mpiatiny voafidy</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Fafana ny dikamitovy ny mpiatiny voafidy</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>Ampiana amin'ny rakitra ity mpiatiny ity</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>Soloina anarana ny mpiatiny</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Aseho ny fitaovana</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Ampiasana ny haben'ny antonta-tarasy malalaka (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Ampiasana ny haben'ny antonta-tarasy mahazatra (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Ampiasana ny haben'ny antonta-tarasy voasafidy manokana</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Ajanony ny fakana ny pejin'ny tranon-kala</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Ahato ny fampisehoana</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Asehoy ny fafan-teny virtoaly</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Raiketo ho horonan-tsary ny fampisehoana</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Fafana ilay zavatra</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Fafana ny zavatra rehetra</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Fafana ny fanamarihana</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Fafana ny fanamarihana rehetra</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Fafana ny zavatra rehetra</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>penina</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Manamarika rakitra</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Fafany ilay fanamarihana</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Penina lehibe</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Asongadina</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Mpifantinana</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>Mifantina sy manova zavatra</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>Tanana</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Maka ampahan'ny efijery</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Fakana manokana</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Maka ny fikandrana iray</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>Mpiatin'ny tranon-kala natsofoka</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>Fakana mpiatin'ny tranon-kala azo atsofoka</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>Aseho amin'ny efijery hita ny efijery ampiasana matetika</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Fafana ny fanamarihana rehetra</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>Hafarana ny fiasan'i eduMedia</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Sokafana ny fampianarana</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Jereo raha misy fanavaozana</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>Zòma mahalehibe</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Zòma mahakely</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Tsipika</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Hidio</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Fafotse</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Loko</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Miverina</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Havia</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Manaraka</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Havanana</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Averina alefa indray</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Fandraisana</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Tobin-drohy</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>Tobin-drohy</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Fafana ny pejy</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Safidy nofaritana</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Fampianarana</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Fafana</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Tahirim-boky</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Asehoy ny sehatr'asa</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>Lehibe kokoa</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>Kelikely kokoa</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Fitoeran-drakitra vaovao</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Rakitra vaovao</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>Manafatra</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Mandefa</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Sokafana amin'ny solaitra</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Asina dikamitovy</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Fafana</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Del</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Ampiana amn'ny rakitra iasana</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Ampiana amin'ny rakitra misokatra ny mpiatiny voasafidy</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>Ampiana</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Soloina ny anarana</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Tapahana</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Adika</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Apetaka</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Efamira-tsoramiafina ambadika mazava</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Efamira-tsoramiafina ambadika maizina</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Atomboka ny fandraiketana ny efijery</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Fampidinana sy fampiakarana ny pejy</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Tondro laser</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Tondro laser virtoaly</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Manoratra tsipika</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Manoratra lahabolana</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Ampiana amn'ny pejy ampiaisana ilay zavatra</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Ampiana amn'ny pejy vaovao ilay zavatra</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Ampiana amn'ny tahirim-boky ilay zavatra</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Mamorona pejy vaovao</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Manao dikamitovy ny pejy</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Manao dikamitovy an'ilay pejy ampiasana</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Manafatra pejy</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Manafatra pejy ivelany</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Ahato</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Ahato ny fandraiketana ny Podcast</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Fanefena ny Podcast</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Fanefena ny fandraiketana ny Podcast</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Alaina ny Flash</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>Alaina ny mpiatiny Flash</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Alaina ny tranon-kala</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Alaina ny mpiatin'ny tranon-kala</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Alaina ny fikandrana</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Asehoy amin'ny zavatra hita</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Ampatorina</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Fafan-teny virtoaly</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Faritra ambadika mazava</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Mazava</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Faritra ambadika maizina</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Maizina</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Raiketo</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Fitaovana</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Efijery maromaro</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>Habe lehibe (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Habe antonony (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Habe safidina manokana</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Ajanony ny fakana</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Sokafy Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Fanovanan'i Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Asehoy ny fanovanan'ny widget-n'i Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Afeno Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Afeno ny rindran'asan'i Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Hafaro ny rakitra Uniboard</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Hafaro ny rakitra Uniboard na ny rakitra Sankore taloha</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Atokony ny zavatra</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>Alefaso</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Ampiasana ny zavatra</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Fafana ny ao ambadika</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Esorina ny ao ambadika</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Atokony</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Famantarana ilaina</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Anaran'ny mpampiasa:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Teny fanalahidy:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Famantaranan'ny Proxy</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Mifandray amin'ny Proxy</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Anaran'ny mpampiasa:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Teny fanalahidy:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Raiketo ny anaran'ny mpampiasa sy ny teny fanalahidy ho an'ny fampiasana manaraka</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>Isa famantaranaan'ilay zavatra =</translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>Tsy zakan'ny andrefy tanjona ilay mpiatiny.</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Fafao ny pejy</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Tena te hamafa pejy iray avy amin'ilay rakitra '%0' voafidy ve ianao ?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>Haben'ny pejy</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Tranon-kala</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>Misy fanavaozana azo alaina, te hande amin'ny pejin'ilay tranonkala ve ianao ?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>Tsisy fanavaozana azo alaina</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>Fanavaozana azo alaina</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Avaozy</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>Fakana mpiatiny %1 tsy nety</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>Fakana mpiatiny vita</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Fitaovana tsy fantatra karazana %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Ampiana zavatra</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Zaka daholo (%1)</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Mpiatiny tsy fantatra karazana %1</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Fafao ny pejy %1 amin'ilay rakitra</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Pejy %1 voafafa</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Fanampiana rakitra tsy nety: nisy tsy fetezana tamin'ny fandikana ny rakitra</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Atokony</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Avaho</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>Fanampiana ny sary amin'ny tahirim-boky tsy nety</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Sary nalaina</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Toetoetran'ny tahiry</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Loko:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Bika:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>Habe:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Hidio</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Maka ampahan'ny efijery</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Maka ny efijery</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Aseho ny fanovana haingony</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Aseho ny solaitra amin'ny efijery faharoa</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Aseho ny sehatr'asa amin'ny efijery faharoa</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Aseho Open-Sankoré</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>Fiteoran-drakitra vaovao</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Pejy %1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Manampy fitoeran-drakitra misy sary</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Manampy sary </translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Manampy pejy an'ilay rakitra</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>Dikamitovy-na rakitra %1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>Rakitra %1 nadika</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Fafao ny pejy</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>Fafao ny rakitra</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>Tena te hamafa an'ilay rakitra '%1' ve ianao ?</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>Daba foana</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>Tena te hanafoana an'ilay daba ve ianao ?</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>Manafoana daba</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>Daba voafoana</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>Mamafa fitoeran-drakitra</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>Tena te hamafa an'ilay fitoeran-drakitra '%1' ve ianao sy ny mpiatiny rehetra ?</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>Tsisy fitoeran-drakitra voafidy!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Manokatra rakitra zaka</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Manafatra rakitra %1 ...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Nisy tsy fetezana ny fanafarana rakitra ...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Alaina daholo ny sary amin'ilay fitoeran-drakitra</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Fafao</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>Foana</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Daba</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Manokatra rakitra</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Ampiana amin'ilay rakitra ny sary rehetra</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Ny sary rehetra(%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>Tsy misy sary ilay fantina!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>Ny rakitra '%1' dia namboarina tamin'i Sankore vaovaozana (%2). Raha sokafanao dia mety ahavery mombamomban'ilay rakitra ianao. Tianao tohizana ve ?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>Tena te hamafa pejy %n avy amin'ilay rakitra '%1' voafidy ve ianao ?</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Lohatenin'ilay pejy</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Tsy misy sary ilay fitoeran-drakitra</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Rakitra tsy misy lohateny</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>sary</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>horonan-tsary</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>Zavatra</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>widgets</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Ny rakitra rehetra zaka (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>Rakitra %1 voaraikitra</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>Mampiditra pejy %1 amin'ny %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Fanafarana nety.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Fanafarana ny rakitra %1 nety.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Manafatra rakitra %1 </translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Pejy %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Lohatenin'ilay pejy</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fandefasana tsy nety.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>Fandefasana najanona ...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>Famadihana pejy %1/%2 ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>Mbola tsy ilaina fenoina ny famantarana aloha.</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Mandefa an'ilay rakitra Sankore amin'ny tranon-kala.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>Lasa soa aman-tsara amin'ny tranon-kala ilay rakitra.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Nisy tsy fetezana ny fandefasana an'ilay rakitra amin'ny tranon-kala .</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (fandikana)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Mandika pejy %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>%1 pejy voadika</numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>Maka rakitra</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Ajanony</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Nisy fitandremana niseho tamin'ny fandefasana ny rakitra</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>Alefa ho IWB</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>Alefa ho rakitra IWB</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Mandefa ny rakitra ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Fandefasana nety.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fandefasana tsy nety.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>Pejy</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>Alefa ho rakitra UBZ</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Mandefa rakitra ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Fandefasana nety.</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>Fandefasana %1 %2 amin'ny %3</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Alefa ho tahaka ny rakoitra Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Alefa ho rakitra PDF </translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Mandefa ny rakitra ...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Alefa ho PDF</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Fandefasana nety.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>Alefa ho rakitra PDF </translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>Mandefa ny pejy %1 amin'ny %2</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Fandefasana nety.</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Mandefa rakitra ...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>Alefa ho PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Pejy</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Alefa ho data an'ny tranon-kala</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Fandefasana rakitra ...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Fandefasana nety.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Fandefasana tsy nety.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Alefa any amin'ny mpitety ny tranon-kala</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>Ampiana amin'ilay pejy</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>Apetraka ambadika</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>Ampiana amin'ny tahirim-boky</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Mombamomban'ny zavatra</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Ampiana amin'ny  zavatra tena tiana</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>Zaraina</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Hikaroka</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Fafana</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Miverina any amn'ilay fitoeran-drakitra</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Fafana amin'ny  zavatra tena tiana</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Mamorona fitoeran-drakitra vaovao</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Avereno jerena ny rakitrin'ny rafitra</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>Sary Nafarana</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Feo</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Sarimietsika</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Sary</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Sary ahetsika</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Fifandraisana</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Rindran'asa</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Bika</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Tena tiana</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Fikarohana ny tranon-kala</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Daba</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Ekena</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Ajanony</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Ampidiro ny anaran'ilay fitoeran-drakitra vaovao</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Maka</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Voahidy</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Hita amin'ny efijery voavelatra</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Voahidy</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Hita amin'ny efijery voavelatra</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>Hande any amin'ny fototr'ilay mpiatiny</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><Type lahabolana eto></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Lokon'ilay lahabolana</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Azo ovaina</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Tranon-kala</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Maka ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>Nampagatsiahana</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Ovaina ho fitaovana</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Andrefin'ny rakitra mahazatra (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Manafatra rakitra %1 ...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Fanafarana ny rakitra %1 tsy nety.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Fanafarana nety.</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>Fanafarana tsy nety.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>Manafatra rakitra %1 ...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Fanafarana nety.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>Fanafarana ny rakitra %1 tsy nety.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Andrefin'ilay sary (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Portable Document Format (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>Fanafarana PDF tsy nety.</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>Manafatra pejy %1 amin'ny %2</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Nisy tsy fetezana tamin'ny fandefasana ny horonan-tsary amin'ny tranon-kala anatiny (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>Fandefasana amin'ny tranon-kala anatiny mandeha %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Alefa</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>Hiditra</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>Eny</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Tsia</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ekena</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Hidio</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt> Ampidiro ny anaran'ny mpampiasa sy ny teny fanalahidy ho an'ny "%1" amin'ny %2 </qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Tsy nety ny fidirana ami'ny Proxy</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>Tsy fetezana SSL
+
+%1
+
+%2
+
+Tena tsy te hiraharaha an'ireo tsy mety ho an'ilay milina ve ianao?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Eny</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Tsia</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(adika)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Haverezana ny fitehirizana ny rakitra </translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Verin'i Sankore ny fandraisana amin'ny fitehirizana ny rakitra '%1'. Tsy naintsy nikatona ny rindran'asa mba tsy ahasimba ny data. Mety tsy hihatra ny fanavaozana farany.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Anglisy</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rosiana</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Alemanina</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Frantsay</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Frantsay avy amin'ny Suisse</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Nisy tsy nety ny fandefasana ny encoder ...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Tsy misy Podcast encoder azo alaina ...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Ampahany %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>eo amin'ny sehatr'asanao ...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>ao anatin'ny fitoeran-drakitra %1</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Podcast voaforona %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Nisy tsy nety ny fandraiketana ny Podcast (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Fidirana feo tsotra</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Tsy misy ny fandraiketana ny feo</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Kely</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Salasala</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Feno</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>Alefa amin'ny tranon-kala anatiny</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>Alefa amin'ny Youtube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore Cast</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>kinova:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>Ny penina lehibe dia sarotiny amin'ny fitsindrina</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Fidirana Proxy</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Anaran'ny mpampiasa:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Teny fanalahidy:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Apetraka amin'ny tranon-kala ny rakitra</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Lohateny:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>Fanazavana:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Alefa</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Ny sarimietsiko</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Mpampianatra</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Mpianatra</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Sorato eto ny tokony atao ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>Esory eto ny haino aman-jery ...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Sorato eto ny lohateny ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Ampidiro eto ny rohin'ny lohateny ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Sorato eto ny lohateny ...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Sorato eto ny fanamarihana ...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Manampy fihetsika iray</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Manampy haino aman-jery iray</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Manampy rohy iray</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Pejy: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Sorato eto ny lohatenin'ny fifandraisana manokana ...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Mpamorona</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Sorato eto ny mpamorona ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Tanjona</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Sorato eto ny tanjona ...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Fanaovana indexation an'ny loharanon-drakitra</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Teny mahasarika:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Sorato eto ny teny mahasarika ...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Lenta:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Lohakevitra:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Karazana:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Licence</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Fanankinana CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Fanankinana NoDerivs CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Fanankinana ShareAlike CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Fanankinana NonCommercial CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Fanankinana NonCommercial NoDerivs CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Fanankinana NonCommercial ShareAlike  CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Domena abaribary</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Zon'ny mpamorona</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>Voaforona ny:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Noavoazana ny:</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Lohatenin'ilay pejy</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Pejy: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>Mamorona kisarisary ho hita aloha ...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>%1 ny  kisarisary no voaforona ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Compass</source>
+        <translation>Famantaranavaratra</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Fanipihana</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Rapporteur</translation>
+    </message>
+    <message>
+        <source>Mask</source>
+        <translation>Tasova</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Telolafy</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Fanita-jery</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Tahiry</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>Pejy iray manontolo</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Tranon-kala</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Mpanavaozana ny rakitra</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>Mila fanavaozana ny rakitra.</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Lalana ny dikamitovy:</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Hizaha</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Avaozy</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Safidio ny fitoeran-drakitra asiana dikamitovy</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>Nety ny fanavaozana ny rakitra!
+Avereno alefa ny rindr'asa ahafahana mampiasa ny rakitra novoazana azafady.</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Nisy tsy nety tamin'ny fanavaozana. Tsy niova ny rakitra.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Valin'ny fanavaozana ny rakitra</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>Manavao an'ilay rakitra</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Mba endraso kely azafady, anomboka tsy ho ela ny fanafarana ...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Ampatsiahivo ana amin'ny manaraka</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>Maka ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Apetraka amin'ny tranon-kala Sankore ny rakitra</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 voaantso ( paika = %1, fandehany=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Famantarana YouTube tsy nety.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>Nisy tsy fetezana tamin'ny fandefasana ny horonan-tsary amin'ny YouTube (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>Fandefasana ho an'ny YouTube am-pandehanana %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>Fandefasana</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Fiarakodia & fiara</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>Mozika</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Biby</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Fanatajahan-tena</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Dia & zava-miseho</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Filalaovana</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Mampiomehy</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Olona & Blogs</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Vaovao & politika</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>Kilalao</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>Fianarana</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Ahoana no manao azy & Haingo</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>Tsy misy tombony & Fandraisana andraikitra</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Siansa & Teknolojia</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Hafaro ny rakitra Uniboard na ny rakitra Sankore taloha</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>Tsy misy rakitra tokony hafarana</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Diovy</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>Raiketo ny rakitra</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>Fakana najanona: %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Nisy tsy nety tamin'ny fanokafana ny rakitra voatahiry: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Nisy tsy nety tamin'ny fandraiketana: %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Nisy tsy nety tamin'ny rezo: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>segondra</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>minitra</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>- %4 %5 sisa</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 amin'ny %2 (%3 isakin'ny segondra) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 amin'ny %2 - Najanona</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>bytes</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 Nalaina</translation>
+    </message>
+    <message>
+        <source>1 Download</source>
+        <translation>Nalaina 1</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Lohateny</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Adiresy</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>Talohaloha androany</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 Zavatra</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Hikaroka</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>Vaovao & Tab</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Asina dikamitovy ny Tab</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>&Idina ny Tab</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>Idina & ny Tab sasany</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Averina aseho ny Tab</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Averina aseho ny Tab rehetra</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Ny Tab nidina vao vetivety</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>( Tsy misy lohateny)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>Hikaroka</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>Tsy misy karoka vao natao vetivety</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Karoka vao natao vetivety</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Fafao ny karoka vao natao vetivety</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>Nalaina</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Ampiana amn'ny rakitra iasana</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>Nisy tsy nety tamin'ny fanafarana ny pejy: %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>Maka rakitra PDF: Inona no tianao : maka ny rakitra PDF sa manampy an'azy amin'ny rakitra Sankore iasanao izao ?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Sokafy amin'ny Tab vaovao</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Ametraka Podcast amin'ny Youtube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Lohateny</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Fanazavana</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Teny mahasarika</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Antoko</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>Anaran'ny mpampiasa Youtube</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>Teny fanalahidy Youtube</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Rehefa tsindrinao ny "Alefa" dia manamarina ianao fa manana ny alalana rehetra ami'ny mpiatiny na nomen'ny mpamorona alalana ianao andefa an'ilay rakitra amin'ny YouTube.</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>Hateviny</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>Amin'ny ambadika mazava</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>Amin'ny ambadika maizina</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Sakan'ny tsipika</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Salasala</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Matevina</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>Tsara</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>Ny penina dia sarotiny amin'ny fitsindrina</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Fifakalozan-kevitra</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Lohateny</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>Mailaka</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Mpamorona</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Fanazavana</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Fifakalozan-kevitra</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Lohateny</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>Mailaka</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Mpamorona</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Fanazavana</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Asina rakitra PDF azo alaina</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>Asina rakitra Uniboard (UBZ) azo alaina</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Tandremo: Misy horonan-tsary ao anatin'ireto rakitra ireto izay mety tsy hiseho araka ny tokony ho izy amin'ny tranon-kala</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Rakitra Uniboard</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Safidy nofaritana</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Famaritana tsotra</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Hidio</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Asehoy</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Asehoy ny pejy miaraka ami'ny mpizaha ivelany</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Fafan-teny virtoaly</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Haben'ny kitendrin'ny fafan-teny:</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Natao teo ambony (atoro ho an'ny tablets)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Natao teo ambany (atoro ho an'ny solaitra fotsy)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Asehoy ny lahateny eo ambanin'ny bokotra</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Fanovana haingony</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Matory</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Mijidina</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>Mombamomba</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Fanavaozana kirakira</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Jereo raha misy fanavaozana ny kirakira ami'ny fandefasana</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Aterineto</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>Pejin'ny fandraisana:</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Anjan'ny fitaovana</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Penina</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Penina lehibe</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>kinova: ...</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Licences</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSl</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>Rezo</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Asehoy nympiatin'ny pejin'ny tranon-kala anaty amin'ny efijery faharoa na amin'ny projecteur</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Fisehoana maromaro</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Ampifanakaloza ny fisehoana ny mpibaiko sy ny fisehoana ny hita</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Fiasany</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Fiasany amin'ny fandefasana an'azy:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Solaitra</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Sehatr'asa</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation> Mpampiasa ny Proxy:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Teny fanalahidy:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation type="obsolete">Planète Sankoré ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Mpampiasa:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Teny fanalahidy:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Voaka</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Ny licence dia amin'ny tena anglisy mba hanajana ny famadihan-teny manaran-dalana sy ofisialy.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Ity kirakira ity dia nomena ohatr'izao, tsy misy fiantohana.Tsy misy zava-miseho afaka anomezana tsiny an'ny mpamorona raha misy zavatra tsy mety amin'ny fampiasana an'ity kirakira ity.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Ny alalana mampiasa azy dia nomena an'ny olon-drehetra ho an'izay tiany, na rindran'asa mampidi-bola aza, afaka ovainy sy zarainy, fa manaraka ny didy hoe:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. Ny fiavian'ny kirakira dia tsy azo lotoina anarana, tsy mahazo miteny fa ianao no namorona an'ilay kirakira. Raha mampiasa azy ianao dia tokony asiana teny fisaorana amin'ilay mombamomba ny fampiasanao azy, na dia tsy voatery ary.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Ny kirakira novaina dia tsy maintsy marihana fa novaina ary tsy azo lazaina fa ilay kirakira orijinaly.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. Ity fanamarihana ity dia tsy azo esorina na ovaina mihitsy.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Alaina ny Flash</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Safidio ny Flash ho alaina</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>Mombamomba: foana</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Anaran'ny rindran'asa</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Mamorona rindran'asa</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_nb.ts b/Sankore-3.1/resources/i18n/sankore_nb.ts
index 1b34f8f..63c10b7 100644
--- a/Sankore-3.1/resources/i18n/sankore_nb.ts
+++ b/Sankore-3.1/resources/i18n/sankore_nb.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="nb_NO">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,61 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Avslutt Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>I have kept Editor, as it seems like a name...</translatorcomment>
+        <translation>Åpne-Sankoré Editor</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>I have kept Sankoré Widgets Editor as it seems like a name...</translatorcomment>
+        <translation>Vis Åpne-Sankoré Widgets Editor</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Skjul Åpne-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Skjul Åpne-Sankoré-applikasjon</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importer Uniboard-dokumenter</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importer gamle Sankore eller Uniboard-dokumenter</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Grupper enheter</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Spill av</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Samhandle med enheter</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Slett bakgrunn</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Fjern bakgrunn</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupper</translation>
     </message>
 </context>
 <context>
@@ -849,25 +867,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Søppel</translation>
+        <source>Element ID = </source>
+        <translation>Element-ID = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Hjem</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Innhold er ikke støttet i mottaksformat.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Kan ikke laste innhold</translation>
+        <source>Remove Page</source>
+        <translation>Fjern side</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Laster ...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Er du sikker på at du vil fjerne side 1 fra det valgte dokumentet '%0'?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +943,26 @@
         <source>All Supported (%1)</source>
         <translation>Alle støttede (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Slett side %1 fra dokument</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Side %1 slettet</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Tilføying av fil slo feil: filkopieringsfeil</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupper</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Dele opp</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +970,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Feil ved tilføying av bilde til bibliotek</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Tatt bilde</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +1001,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Vis Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Ta bilde av en del av skjermen</translation>
     </message>
@@ -987,6 +1020,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Vis skrivebord på annen skjerm</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Vis Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1076,10 +1113,6 @@
         <translation>Importer alle bilder fra mappe</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Mappe inneholder ingen bildefiler!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Tøm</translation>
     </message>
@@ -1113,10 +1146,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>Er du sikker på at du vil fjerne %n siden(e) fra det valgte dokumentet '%1'?</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Tittelside</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Mappe inneholder ikke noen bildefiler</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Dokumenter uten tittel</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1145,12 +1191,20 @@
         <translation>Fil %1 lagret</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importerer side %1 av %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Setter inn side %1 av %2</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Feil bildedata, ignorerer fil %1</translation>
+        <source>Import successful.</source>
+        <translation>Importering gjennomført.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importering av fil %1 gjennomført.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Importerer fil %1</translation>
     </message>
 </context>
 <context>
@@ -1159,6 +1213,10 @@
         <source>Page %0</source>
         <translation>Side %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Tittelside</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1203,7 +1261,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 sider kopiert</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1212,34 +1271,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Nedlasting av filer</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Kanseller</translation>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Advarsler under eksport ble vist</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Eksporter til IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Eksporter som IWB-fil</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Eksporterer dokument ...</translation>
+        <translation>Eksporterer dokument ...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Eksport gjennomført.</translation>
+        <translation>Eksport gjennomført.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Eksportering mislyktes.</translation>
+        <translation>Eksport mislyktes.</translation>
     </message>
 </context>
 <context>
@@ -1342,68 +1408,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Legg til side</translation>
+        <translation>Legg til side</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Bruk som bakgrunn</translation>
+        <translation>Bruk som bakgrunn</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Legg til bibliotek</translation>
+        <translation>Legg til bibliotek</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Objektopplysninger</translation>
+        <translation>Objektopplysninger</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Legg til favoritter</translation>
+        <translation>Legg til favoritter</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Del</translation>
+        <translation>Del</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Søk</translation>
+        <translation>Søk</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Slett</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Tilbake til mappe</translation>
+        <translation>Tilbake til mappe</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Fjern fra favoritter</translation>
+        <translation>Fjern fra favoritter</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Opprett ny mappe</translation>
+        <translation>Opprett ny mappe</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Skann filsystemet igjen</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Importert bilde</translation>
+        <translation>Importert bilde</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Lydfiler</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmer</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Bilder</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animasjoner</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interaktivitet</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Applikasjoner</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Former</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoritter</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Websøk</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Søppel</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Godta</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Oppgi et nytt mappenavn</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Laster </translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">LÃ¥st</translation>
+        <translation>LÃ¥st</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Synlig på utvidet skjerm</translation>
+        <translation>Synlig på utvidet skjerm</translation>
     </message>
 </context>
 <context>
@@ -1436,7 +1568,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Redigerbar</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Laster ...</translation>
     </message>
 </context>
 <context>
@@ -1489,7 +1635,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1498,14 +1644,6 @@
         <source>Image Format (</source>
         <translation>Bildeformat (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Importering av bilde mislyktes.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Importering av bilde gjennomført.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1521,10 +1659,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Importerer side %1 av %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importering av bilde gjennomført.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1548,121 +1682,8 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Legg til favoritter</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Del</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Søk</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Slett</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Tilbake til mappe</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Fjern fra favoritter</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Opprett ny mappe</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Legg til side</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Bruk som bakgrunn</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Legg til bibliotek</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Objektopplysninger</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>1 bilde lagt til i biblioteket</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Lydfiler</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Filmer</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Bilder</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Former</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applikasjoner</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favoritt</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Oppretter miniatyrbilde for %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Enhet %1 kunne ikke legges til bilde.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interaktivitet</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Importert bilde</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animasjoner</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Translation of the key on the keyboard - if it is "Enter the numer X" - It should be "Tast inn nummeret X"</translatorcomment>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1681,6 +1702,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Lukk</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1710,37 +1738,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Legg til ny mappe</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Ny mappes navn:</translation>
+        <source>(copy)</source>
+        <translation>(kopier)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Legg</translation>
+        <source>Document Repository Loss</source>
+        <translation>Tap av dokumentdatabase</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Kanseller</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore har mistet tilgangen til dokumentdatabasen "%1%. Dessverre må applikasjonen avsluttes for å unngå korrupte data. De siste endringene kan også gå tapt.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(kopier)</translation>
+        <source>English</source>
+        <translation>Engelsk</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Tap av dokumentdatabase</translation>
+        <source>Russian</source>
+        <translation>Russisk</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore har mistet tilgangen til dokumentdatabasen "%1%. Dessverre må applikasjonen avsluttes for å unngå korrupte data. De siste endringene kan også gå tapt.</translation>
+        <source>German</source>
+        <translation>Tysk</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Fransk</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Sveitsisk-fransk</translation>
     </message>
 </context>
 <context>
@@ -1854,14 +1886,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Dokumenter uten tittel</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Søppel</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mine filmer</translation>
     </message>
@@ -1870,33 +1894,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Lærer</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Student</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv oppgave her ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>plasser media her ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv tittel her ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Sett inn lenketittel her ...</translation>
     </message>
 </context>
 <context>
@@ -1910,131 +1934,131 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv tittel her ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv kommentar her ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Legg til en handling</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Legg til media</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Legg til en lenke</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Side: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv sesjonstittel her ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Forfatter(e)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv forfattere her ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>MÃ¥lsetning(er)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Skriv målsetninger her ...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Ressursindeksering</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Stikkord:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv stikkord her ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nivå:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Emner:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Type:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Lisens</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Navngivelse CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Navngivelse-IngenBearbeidelse CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Navngivelse-DelPåSammeVilkår CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Navngivelse-Ikkekommersiell CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Navngivelse-Ikkekommersiell-IngenBearbeidelse CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Navngivelse-Ikkekommersiell-DelPåSammeVilkår CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Offentlig domene</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Opphavsrett</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Opprettet den:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Oppdatert den:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Tittelside</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Side %0</translation>
     </message>
 </context>
 <context>
@@ -2078,6 +2102,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Skjul</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2139,14 +2167,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Minn meg på det senere</translation>
     </message>
 </context>
 <context>
@@ -2184,6 +2205,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Opplasting til YouTube pågår %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2259,11 +2288,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importer gamle Uniboard/Sankore-dokumenter</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Det er ingen dokumenter som skal importeres</translation>
     </message>
 </context>
 <context>
@@ -2477,7 +2506,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Keywords</source>
-        <translation>Nøkkelord</translation>
+        <translation>Stikkord</translation>
     </message>
     <message>
         <source>Uniboard</source>
@@ -2724,302 +2753,604 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Vis innhold fra internt nettsted på annen skjerm eller projektor</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Multidisplay</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>I have translated this as swap between cd and vd</translatorcomment>
+        <translation>Bytt mellom kontrolldisplay og se display</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Modus</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Modus å starte i:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Tavle</translation>
+        <translation>Tavle</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrivebord</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy-bruker</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Pass:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>Planet Sankoré-ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Bruker:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Pass:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translatorcomment>Translates as "thanks to"</translatorcomment>
+        <translation>Takk til</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Denne programvaren leveres "som den er" uten noen form for garanti, verken uttrykkelig eller underforstått. Forfatterne av programvaren skal ikke under noen omstendighet holdes ansvarlige for bruk av denne programvaren.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Det gis tillatelse til hvem som helst å bruke programvaren til ethvert formål, inkludert kommersielle formål, og til å endre den og distribuere den fritt, med følgende begrensninger:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. Opprinnelsen til denne programvaren skal ikke være feilrepresentert, du kan ikke hevde at du har skrevet den opprinnelige programvaren. Hvis du bruker denne programvaren i et produkt, er det fint om du nevner at du har brukt den i dokumentasjonen, men dette er ikke påkrevd.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. Kildeversjoner som er endret skal merkes som endret, og skal ikke oppfattes som den opprinnelige programvaren.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3. Denne merknaden skal ikke fjernes eller endres i noen kildedistribusjon.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html>
+</translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré versjon 1.4 , Copyright (C) 2010-2012 Public Interest Grouping for Digital Education in Africa  (GIP ENA)<br /><br />Open-Sankoré er fri programvare; du kan redistribuere det og/eller endre det etter betingelsene gitt i Lesser GNU general Public Licence (GNU LGPL) som publisert av Free Software Foundation, enten versjon 2 av lisensen, eller en nyere versjon.<br />Du kan finne kildekoden til denne programvaren på </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré distribueres i håp om at det skal være nyttig, men UTEN NOEN SOM HELST GARANTI, selv uten underforstått garanti om SALGBARHET eller EGNETHET TIL ET BESTEMT FORMÅL..<br />Se lisensen Lesser GNU General Public Licence i lisensrubrikken eller på nettstedet </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Kontakt : <br />Public Interest Grouping for Digital Education in Africa (GIP ENA)<br />Delegate for Digital Education in Africa<br />20 Avenue Ségur, F-75007 Paris<br />Tlf.: +33 1 43 17 68 08<br />e-post: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
+</translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_nl.ts b/Sankore-3.1/resources/i18n/sankore_nl.ts
index 25e05be..f216de7 100644
--- a/Sankore-3.1/resources/i18n/sankore_nl.ts
+++ b/Sankore-3.1/resources/i18n/sankore_nl.ts
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="nl_BE">
 <context>
     <name>BlackoutWidget</name>
     <message>
         <source>Click to Return to Application</source>
-        <translation>Klikken om weer terug naar de applicatie te gaan</translation>
+        <translation>Klik om terug te keren naar de toepassing</translation>
     </message>
 </context>
 <context>
@@ -27,15 +27,15 @@
     <name>DownloadItem</name>
     <message>
         <source>Form</source>
-        <translation>Form</translation>
+        <translation>Formulier</translation>
     </message>
     <message>
         <source>Filename</source>
-        <translation>Bestandnaam</translation>
+        <translation>Bestandsnaam</translation>
     </message>
     <message>
         <source>Try Again</source>
-        <translation>Probeer nog eens</translation>
+        <translation>Probeer opnieuw</translation>
     </message>
     <message>
         <source>Stop</source>
@@ -50,7 +50,7 @@
     <name>IntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Podcast via You Tube publiceren</translation>
+        <translation>Podcast via YouTube publiceren</translation>
     </message>
     <message>
         <source>Title</source>
@@ -58,7 +58,7 @@
     </message>
     <message>
         <source>Description</source>
-        <translation>Omschrijving</translation>
+        <translation>Beschrijving</translation>
     </message>
     <message>
         <source>Author</source>
@@ -69,7 +69,7 @@
     <name>MainWindow</name>
     <message>
         <source>Board</source>
-        <translation>Board</translation>
+        <translation>Bord</translation>
     </message>
     <message>
         <source>Web</source>
@@ -81,7 +81,7 @@
     </message>
     <message>
         <source>Tutorial</source>
-        <translation>Tutorial</translation>
+        <translation>Handleiding</translation>
     </message>
     <message>
         <source>Stylus</source>
@@ -101,7 +101,7 @@
     </message>
     <message>
         <source>Undo</source>
-        <translation>annuleren</translation>
+        <translation>Ongedaan maken</translation>
     </message>
     <message>
         <source>Ctrl+Z</source>
@@ -141,7 +141,7 @@
     </message>
     <message>
         <source>Manage Documents</source>
-        <translation>Documenten beheer</translation>
+        <translation>Document beheren</translation>
     </message>
     <message>
         <source>Ctrl+D</source>
@@ -149,7 +149,7 @@
     </message>
     <message>
         <source>Web Browsing</source>
-        <translation>Web browsing</translation>
+        <translation>Web surfen</translation>
     </message>
     <message>
         <source>Ctrl+W</source>
@@ -165,11 +165,11 @@
     </message>
     <message>
         <source>Medium Line</source>
-        <translation>Middellijn</translation>
+        <translation>Medium lijn</translation>
     </message>
     <message>
         <source>Large Line</source>
-        <translation>Brede lijn</translation>
+        <translation>Dikke lijn</translation>
     </message>
     <message>
         <source>Quit</source>
@@ -245,7 +245,7 @@
     </message>
     <message>
         <source>Display Board</source>
-        <translation>Board weergeven</translation>
+        <translation>Bord weergeven</translation>
     </message>
     <message>
         <source>Ctrl+B</source>
@@ -281,7 +281,7 @@
     </message>
     <message>
         <source>Show Desktop</source>
-        <translation>Desktop weergeven</translation>
+        <translation>Bureaublad weergeven</translation>
     </message>
     <message>
         <source>Show Computer Desktop</source>
@@ -349,11 +349,11 @@
     </message>
     <message>
         <source>Open in Board</source>
-        <translation>In board openen</translation>
+        <translation>In bord openen</translation>
     </message>
     <message>
         <source>Open Page in Board</source>
-        <translation>Pagina in board openen</translation>
+        <translation>Pagina in bord openen</translation>
     </message>
     <message>
         <source>Ctrl+O</source>
@@ -361,11 +361,11 @@
     </message>
     <message>
         <source>Duplicate</source>
-        <translation>Kopiëren</translation>
+        <translation>Dupliceren</translation>
     </message>
     <message>
         <source>Duplicate Selected Content</source>
-        <translation>De geselecteerde tekst  kopiëren</translation>
+        <translation>De geselecteerde inhoud dupliceren</translation>
     </message>
     <message>
         <source>Delete</source>
@@ -373,7 +373,7 @@
     </message>
     <message>
         <source>Delete Selected Content</source>
-        <translation>De geselecteerde tekst verwijderen</translation>
+        <translation>De geselecteerde inhoud verwijderen</translation>
     </message>
     <message>
         <source>Del</source>
@@ -393,7 +393,7 @@
     </message>
     <message>
         <source>Add Content to Document</source>
-        <translation>Tekst aan document toevoegen</translation>
+        <translation>Inhoud aan document toevoegen</translation>
     </message>
     <message>
         <source>Rename</source>
@@ -413,39 +413,39 @@
     </message>
     <message>
         <source>Multi Screen</source>
-        <translation>Multimonitor</translation>
+        <translation>Multi Scherm</translation>
     </message>
     <message>
         <source>Wide Size (16/9)</source>
-        <translation>Brede schermafmeting</translation>
+        <translation>Brede schermafmeting(16/9)</translation>
     </message>
     <message>
         <source>Use Document Wide Size (16/9)</source>
-        <translation>Document breedschermafmeting gebruiken</translation>
+        <translation>Document breedschermafmeting gebruiken(16/9)</translation>
     </message>
     <message>
         <source>Regular Size (4/3)</source>
-        <translation>Standaard schermafmeting</translation>
+        <translation>Standaard schermafmeting(4/3)</translation>
     </message>
     <message>
         <source>Use Document Regular Size (4/3)</source>
-        <translation>Document op standaard schermafmeting  gebruiken</translation>
+        <translation>Document op standaard schermafmeting gebruiken(4/3)</translation>
     </message>
     <message>
         <source>Custom Size</source>
-        <translation>Afmeting bijstellen</translation>
+        <translation>Aangepaste afmetingen</translation>
     </message>
     <message>
         <source>Use Custom Document Size</source>
-        <translation>Documentafmeting bijstellen</translation>
+        <translation>Gebruik aangepaste Documentafmeting</translation>
     </message>
     <message>
         <source>Stop Loading</source>
-        <translation>Laden stoppen</translation>
+        <translation>Stop laden</translation>
     </message>
     <message>
         <source>Stop Loading Web Page</source>
-        <translation>het opladen van de webpagina stoppen</translation>
+        <translation>Stop laden van de webpagina</translation>
     </message>
     <message>
         <source>Cut</source>
@@ -505,7 +505,7 @@
     </message>
     <message>
         <source>Record Presentation to Video</source>
-        <translation>Videopresentatie opnemen</translation>
+        <translation>Neem Presentatie op als Video</translation>
     </message>
     <message>
         <source>Record</source>
@@ -565,7 +565,7 @@
     </message>
     <message>
         <source>Highlight </source>
-        <translation>Onderstrepen</translation>
+        <translation>Markeren</translation>
     </message>
     <message>
         <source>Ctrl+M</source>
@@ -593,7 +593,7 @@
     </message>
     <message>
         <source>Laser Pointer</source>
-        <translation>laserpointer</translation>
+        <translation>Laserpointer</translation>
     </message>
     <message>
         <source>Virtual Laser Pointer</source>
@@ -605,7 +605,7 @@
     </message>
     <message>
         <source>Draw Lines</source>
-        <translation>Lijnen trekken</translation>
+        <translation>Lijnen tekenen</translation>
     </message>
     <message>
         <source>Ctrl+J</source>
@@ -625,11 +625,11 @@
     </message>
     <message>
         <source>Capture</source>
-        <translation>Afdruk</translation>
+        <translation>Opname</translation>
     </message>
     <message>
         <source>Capture Part of the Screen</source>
-        <translation>Deel van scherm afdrukken</translation>
+        <translation>Deel van scherm opnemen</translation>
     </message>
     <message>
         <source>Add To Current Page</source>
@@ -669,11 +669,11 @@
     </message>
     <message>
         <source>Duplicate Page</source>
-        <translation>Pagina kopiëren</translation>
+        <translation>Pagina Dupliceren</translation>
     </message>
     <message>
         <source>Duplicate the Current Page</source>
-        <translation>Huidige pagina kopiëren</translation>
+        <translation>Huidige pagina Dupliceren</translation>
     </message>
     <message>
         <source>Import Page</source>
@@ -717,23 +717,23 @@
     </message>
     <message>
         <source>Custom Capture</source>
-        <translation>Afbeelding instellen</translation>
+        <translation>Opname instellen</translation>
     </message>
     <message>
         <source>Window Capture</source>
-        <translation>Schermafbeelding</translation>
+        <translation>Vensteropname</translation>
     </message>
     <message>
         <source>Capture a Window</source>
-        <translation>Venster afdrukken</translation>
+        <translation>Venster opnemen</translation>
     </message>
     <message>
         <source>Embed Web Content</source>
-        <translation>Internetinhoud invoegen</translation>
+        <translation>Internetinhoud insluiten</translation>
     </message>
     <message>
         <source>Capture Embeddable Web Content</source>
-        <translation>Invoegbaar internetinhoud afdrukken</translation>
+        <translation>Opnemen insluitbare webinhoud</translation>
     </message>
     <message>
         <source>Show on Display</source>
@@ -757,7 +757,7 @@
     </message>
     <message>
         <source>Open the tutorial</source>
-        <translation>De tutorial openen</translation>
+        <translation>De handleiding openen</translation>
     </message>
     <message>
         <source>Check Update</source>
@@ -769,42 +769,58 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Sankoré openen</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Verlaat Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré Editor</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Toon Open-Sabnkoré Widget Editor</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Verberg Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Verberg Open-Sankoré Toepassing</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importeer Uniboard Document</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importeer oude Sankoré of Uniboarddocumenten</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>groep onderdelen</translation>
     </message>
     <message>
-        <source>Group items</source>
+        <source>Play</source>
+        <translation>Speel</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Aan de slag met onderdelen</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Achtergrond wissen</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Achtyergrond verwijderen</translation>
+    </message>
+    <message>
+        <source>Group</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Prullenbak</translation>
+        <source>Element ID = </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Homepage</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Kan inhoud niet laden</translation>
+        <source>Remove Page</source>
+        <translation type="unfinished">Pagina verwijderen</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Wordt geladen...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>Alle ondersteunden (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Error foto aan bibliotheek toevoegen</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Gegrepen afbeelding</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,16 +999,12 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Uniboard weergeven</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Afdruk deel van scherm</translation>
     </message>
     <message>
         <source>Capture the Screen</source>
-        <translation>scherm afdrukken</translation>
+        <translation>Scherm afdrukken</translation>
     </message>
     <message>
         <source>Show the stylus palette</source>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Desktop op bijscherm weergeven</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1012,7 +1047,7 @@
     </message>
     <message>
         <source>Duplicating Document %1</source>
-        <translation>Document %1 kopiëren</translation>
+        <translation>Document %1 dupliceren</translation>
     </message>
     <message>
         <source>Document %1 copied</source>
@@ -1075,16 +1110,12 @@
         <translation>Alle beelden uit map importeren</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>De map bevat geen beeldbestanden!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Verwijderen</translation>
     </message>
     <message>
         <source>Empty</source>
-        <translation>Legen</translation>
+        <translation>Leeg</translation>
     </message>
     <message>
         <source>Trash</source>
@@ -1112,10 +1143,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>Ben je zeker dat je %n pagina van geselecteerde document '%1' wilt verwijderen?</numerusform>
+            <numerusform>Ben je zeker dat je %n pagina(s) van geselecteerde document '%1' wilt verwijderen?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titel pagina</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation type="unfinished">Onbenoemde Documenten</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1188,20 @@
         <translation>Bestand %1 opgeslagen</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Pagina %1 op %2 wordt geïmporteerd</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Fout in beeldgegevens, bestand %1 wordt overgeslagen</translation>
+        <source>Import successful.</source>
+        <translation type="unfinished">Import gelukt.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1210,10 @@
         <source>Page %0</source>
         <translation>Pagina %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titel pagina</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,8 +1258,9 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 pagina gekopieerd</numerusform>
+            <numerusform>%1 pagina's gekopieerd</numerusform>
         </translation>
     </message>
 </context>
@@ -1211,34 +1268,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Bestanden downloaden</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Annuleren</translation>
+        <translation>Annuleren</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exporteer naar IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exporteer als IWB bestand</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Document wordt geëxporteerd...</translation>
+        <translation>Document wordt geëxporteerd...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Export gelukt.</translation>
+        <translation>Export gelukt.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Export mislukt.</translation>
     </message>
 </context>
 <context>
@@ -1341,57 +1405,123 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Aan pagina toevoegen</translation>
+        <translation>Aan pagina toevoegen</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Als achtergrond gebruiken</translation>
+        <translation>Als achtergrond gebruiken</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Aan bibliotheek toevoegen</translation>
+        <translation>Aan bibliotheek toevoegen</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Object informaties</translation>
+        <translation>Object informatie</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Aan favorieten toevoegen</translation>
+        <translation>Aan favorieten toevoegen</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Delen</translation>
+        <translation>Delen</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Zoeken</translation>
+        <translation>Zoeken</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Verwijderen</translation>
+        <translation>Verwijderen</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Terug naar map</translation>
+        <translation>Terug naar map</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Uit favorieten verwijderen</translation>
+        <translation>Uit favorieten verwijderen</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Nieuwe map maken</translation>
+        <translation>Nieuwe map maken</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Bestand systeem opnieuw scannen</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Geïmporteerd beeld</translation>
+        <translation>Geïmporteerd beeld</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation type="unfinished">Audio's</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation type="unfinished">Films</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation type="unfinished">Foto's</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation type="unfinished">Animaties</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation type="unfinished">Interactiviteiten</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation type="unfinished">Toepassingen</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation type="unfinished">Vormen</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation type="unfinished">Prullenbak</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished">Annuleren</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -1435,10 +1565,24 @@
     </message>
     <message>
         <source>Editable</source>
+        <translation>Bewerkbaar</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation type="unfinished">Wordt geladen...</translation>
+    </message>
+</context>
+<context>
     <name>UBGraphicsWidgetItemDelegate</name>
     <message>
         <source>Frozen</source>
@@ -1488,7 +1632,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1641,6 @@
         <source>Image Format (</source>
         <translation>Beeldformaat (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Beeld import mislukt.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Beeld import gelukt.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1656,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Importering van pagina %1 van %2 gelukt</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>PDF import gelukt.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1540,128 +1672,14 @@
     <name>UBIntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish</source>
-        <translation>Publicatie</translation>
+        <translation>Publiceer</translation>
     </message>
 </context>
 <context>
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Aan favorieten toevoegen</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Delen</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Zoeken</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Verwijderen</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Terug naar map</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Uit favorieten verwijderen</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Nieuwe map maken</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Aan pagina toevoegen</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Als achtergrond gebruiken</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Aan bibliotheek toevoegen</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Object informaties</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>1 beeld aan bibliotheek toegevoegd</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Audio's</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Films</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Foto's</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Vormen</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applicaties</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favoriet</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Miniatuur maken voor %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Item %1 is niet aan pagina toegevoegd.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interactiviteiten</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Geïmporteerd beeld</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animaties</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1698,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">Sluiten</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1709,37 +1734,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Nieuwe map toevoegen</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nieuwe mapnaam:</translation>
+        <source>(copy)</source>
+        <translation>(copy)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Toevoegen</translation>
+        <source>Document Repository Loss</source>
+        <translation>Documentopslag verloren</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Annuleren</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore geen toegang meer tot documentopslag "%1". De applicatie moet sluiten om data schade te voorkomen. De laatste wijzigingen kunnen eveneens verloren gaan.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copy)</translation>
+        <source>English</source>
+        <translation>Engels</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Documentopslag verloren</translation>
+        <source>Russian</source>
+        <translation>Russisch</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore geen toegang meer tot documentopslag "%1". De applicatie moet sluiten om data schade te voorkomen. De laatste wijzigingen kunnen eveneens verloren gaan.</translation>
+        <source>German</source>
+        <translation>Duits</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Frans</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Zwitsers Frans</translation>
     </message>
 </context>
 <context>
@@ -1758,7 +1787,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>on your desktop ...</source>
-        <translation>op uw desktop...</translation>
+        <translation>op uw bureaublad...</translation>
     </message>
     <message>
         <source>in folder %1</source>
@@ -1770,7 +1799,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Podcast recording error (%1)</source>
-        <translation>podcast opname foutmelding (%1)</translation>
+        <translation>Podcast opname foutmelding (%1)</translation>
     </message>
     <message>
         <source>Default Audio Input</source>
@@ -1786,7 +1815,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Medium</source>
-        <translation>gemiddeld</translation>
+        <translation>Gemiddeld</translation>
     </message>
     <message>
         <source>Full</source>
@@ -1813,7 +1842,7 @@ Do you want to ignore these errors for this host?</source>
     </message>
     <message>
         <source>Marker is pressure sensitive</source>
-        <translation>Merkstift is druk gevoelig</translation>
+        <translation>Markeerstift is druk gevoelig</translation>
     </message>
 </context>
 <context>
@@ -1853,14 +1882,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Documenten zonder titel</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Prullenbak</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mijn films</translation>
     </message>
@@ -1869,33 +1890,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Leerkracht</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Student</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ opdracht hier ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Plaats media hier ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ titel hier ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Voeg titel van de link hier toe ...</translation>
     </message>
 </context>
 <context>
@@ -1909,131 +1930,131 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ de titel hier ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ de commentaar hier ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Voeg de werkvorm toe</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Voeg de media toe</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Voeg een link toe</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ de lesfase hier ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Auteur</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ de auteurs hier ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Doelstelling(en)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Typ de doelstellingen hier ...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Oplijsting bronmateriaal</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Sleutelwoorden:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ hier de sleutelwoorden ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Niveau:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Onderwerpen:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Type:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licentie</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Naamsvermelding CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Naamsvermelding-GeenAfgeleideWerken CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Naamsvermelding-GelijkDelen CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Naamsvermelding-NietCommercieel CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Naamsvermelding-NietCommercieel-GeenAfgeleideWerken CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Naamsvermelding-NietCommercieel-GelijkDelen CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Publiek domein</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Copyright</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Aangemaakt op:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Bijgewerkt op:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Titel pagina</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina: %0</translation>
     </message>
 </context>
 <context>
@@ -2077,6 +2098,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2138,14 +2163,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Internet</translation>
+        <translation></translation>
     </message>
 </context>
 <context>
@@ -2183,6 +2201,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Wordt naar You Tube geüpload %1%</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2220,7 +2246,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation>Acterklap & Blogs</translation>
+        <translation>Mensen & Blogs</translation>
     </message>
     <message>
         <source>News & Politics</source>
@@ -2258,11 +2284,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importeer oude Uniboard/Sankoré documenten</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Er zijn geen documenten die geïmporteerd moeten worden</translation>
     </message>
 </context>
 <context>
@@ -2280,7 +2306,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Download canceled: %1</source>
-        <translation>Download geannuleerd: 1%</translation>
+        <translation>Download geannuleerd: %1</translation>
     </message>
     <message>
         <source>Error opening saved file: %1</source>
@@ -2500,7 +2526,11 @@ Please reboot the application to access the updated documents.</source>
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
-        <translation></translation>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Door op  'Upload,'te klikken bevestigt u dat u over alle inhoudsrechten beschikt of dat u de toelating hebt gekregen van de eigenaar om de inhoud publiek te maken op YouTube, en dat u anderzijds akkoord gaat met de YouTube Terms of Service zoals beschreven op </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
 </context>
 <context>
@@ -2515,11 +2545,11 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Opacity</source>
-        <translation>Opaciteit</translation>
+        <translation>lichtondoorlatendheid</translation>
     </message>
     <message>
         <source>Line Width</source>
-        <translation>Lijnbreedte</translation>
+        <translation>Lijndikte</translation>
     </message>
     <message>
         <source>Medium</source>
@@ -2593,7 +2623,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation>Pas op: Dit document bevat videomateriaal, dat niet goed op internet te zien zal zijn</translation>
+        <translation>Waarschuwing: Dit document bevat videomateriaal, dat niet goed op internet te zien zal zijn</translation>
     </message>
 </context>
 <context>
@@ -2647,15 +2677,15 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Toolbar</source>
-        <translation>Balk</translation>
+        <translation>Werkbalk</translation>
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
-        <translation>Bovenaan (aanbevolen voor tablets)</translation>
+        <translation>Bovenaan geplaatst (aanbevolen voor tablets)</translation>
     </message>
     <message>
         <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation>Onderaan (aanbevolen voor schrijfborden)</translation>
+        <translation>Onderaan geplaatst (aanbevolen voor schrijfborden)</translation>
     </message>
     <message>
         <source>Display Text Under Button</source>
@@ -2679,7 +2709,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Marker</source>
-        <translation>Merkstift</translation>
+        <translation>Markeerstift</translation>
     </message>
     <message>
         <source>About</source>
@@ -2691,7 +2721,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Check software update at launch</source>
-        <translation>Software update zoeken bij opstarten</translation>
+        <translation>Software update controleren bij opstarten</translation>
     </message>
     <message>
         <source>Licences</source>
@@ -2719,302 +2749,585 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Toon interne webpaginainhoud op tweede scherm of projector</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Multi display</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Wissel tussen control display en view display</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Manier</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Manier van starten:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Board</translation>
+        <translation>Bord</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Bureaublad</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy Gebruiker:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Wachtwoord:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>Planète Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruiker:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Wachtwoord:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Credits</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_pl.ts b/Sankore-3.1/resources/i18n/sankore_pl.ts
index 0dba7d5..320de7c 100644
--- a/Sankore-3.1/resources/i18n/sankore_pl.ts
+++ b/Sankore-3.1/resources/i18n/sankore_pl.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="pl_PL">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -770,43 +770,62 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation variants="yes">
+            <lengthvariant>Open-Sankoré</lengthvariant>
+            <lengthvariant></lengthvariant>
+        </translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Zamknij Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Edytor Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Pokaż edytor widgetów Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukryj Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukryj aplikację Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importuj dokumenty Uniboard</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importuj stare dokumenty Sankore lub Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Grupuj elementy</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Odtwarzaj</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interakcja z elementami</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Wymaż tło</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Usuń tło</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupuj</translation>
     </message>
 </context>
 <context>
@@ -850,25 +869,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Kosz</translation>
+        <source>Element ID = </source>
+        <translation>ID elementu =</translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Strona główna</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Zawartość nie jest obsługiwana w formacie docelowym.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Nie można wczytać zawartości</translation>
+        <source>Remove Page</source>
+        <translation>Usuń stronę</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Wczytywanie...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Czy na pewno chcesz usunąć 1 stronę z wybranego dokumentu „%0”?</translation>
     </message>
 </context>
 <context>
@@ -931,6 +945,26 @@
         <source>All Supported (%1)</source>
         <translation>Wszystkie obsługiwane (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Usuń stronę %1 z dokumentu</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Strona %1 usunięta</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Operacja dodania pliku nieudana: błąd kopiowania pliku</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupuj</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Rozgrupuj</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -938,6 +972,10 @@
         <source>Error Adding Image to Library</source>
         <translation>BÅ‚Ä…d dodawania obrazu do biblioteki</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>PrzechwyconyObraz</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -965,10 +1003,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Pokaż Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Przechwyć część ekranu</translation>
     </message>
@@ -988,6 +1022,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Pokaż pulpit na ekranie podrzędnym</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Pokaż Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1076,10 +1114,6 @@
         <translation>Importuj wszystkie obrazy z Foldera</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Folder nie zawiera żadnych plików obrazów!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Usuń</translation>
     </message>
@@ -1113,10 +1147,24 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>Czy na pewno chcesz usunąć %n stronę z wybranego dokumentu „%1”?</numerusform>
+            <numerusform>Czy na pewno chcesz usunąć %n strony z wybranego dokumentu „%1”?</numerusform>
+            <numerusform>Czy na pewno chcesz usunąć %n stron z wybranego dokumentu „%1”?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Strona tytułowa</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Folder nie zawiera żadnych plików obrazów</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Dokumenty niezatytułowane</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1145,12 +1193,20 @@
         <translation>Plik %1 zapisany</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importowanie strony %1 z %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Wstawianie strony %1 z %2</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Błędne dane obrazu. Pomijanie pliku %1</translation>
+        <source>Import successful.</source>
+        <translation>Importowanie zakończone powodzeniem.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importowanie pliku %1 zakończone powodzeniem.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Importowanie pliku %1</translation>
     </message>
 </context>
 <context>
@@ -1159,6 +1215,10 @@
         <source>Page %0</source>
         <translation>Strona %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Strona tytułowa</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1203,8 +1263,11 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translatorcomment>The first translation is the singular form</translatorcomment>
+        <translation>
+            <numerusform>Skopiowano %1 stronÄ™</numerusform>
+            <numerusform>Skopiowano %1 strony</numerusform>
+            <numerusform>Skopiowano %1 stron</numerusform>
         </translation>
     </message>
 </context>
@@ -1212,34 +1275,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Pobieranie plików</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Anuluj</translation>
+        <translation>Anuluj</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Podczas eksportowania pojawiły się ostrzeżenia</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Eksportowanie do IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Eksportuj jako plik IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Eksportowanie dokumentu...</translation>
+        <translation>Eksportowanie dokumentu...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Eksportowanie zakończone powodzeniem.</translation>
+        <translation>Eksportowanie zakończone powodzeniem.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Eksportowanie zakończone niepowodzeniem.</translation>
+        <translation>Eksportowanie zakończone niepowodzeniem.</translation>
     </message>
 </context>
 <context>
@@ -1342,68 +1412,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Dodaj do strony</translation>
+        <translation>Dodaj do strony</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Ustaw jako tło</translation>
+        <translation>Ustaw jako tło</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Dodaj do biblioteki</translation>
+        <translation>Dodaj do biblioteki</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Informacje o obiekcie</translation>
+        <translation>Informacje o obiekcie</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Dodaj do ulubionych</translation>
+        <translation>Dodaj do ulubionych</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Udostępniaj</translation>
+        <translation>Udostępniaj</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Szukaj</translation>
+        <translation>Szukaj</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Usuń</translation>
+        <translation>Usuń</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Powrót do folderu</translation>
+        <translation>Powrót do folderu</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Usuń z ulubionych</translation>
+        <translation>Usuń z ulubionych</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Utwórz nowy folder</translation>
+        <translation>Utwórz nowy folder</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Ponownie skanuj system plików</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">ImportowanyObraz</translation>
+        <translation>ImportowanyObraz</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Nagrania</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmy</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Obrazy</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animacje</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interakcje</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplikacje</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Kształty</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Ulubione</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Wyszukiwanie w sieci</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Kosz</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Akceptuj</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anuluj</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Wpisz nowÄ… nazwÄ™ folderu</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Wczytywanie</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Zablokowane</translation>
+        <translation>Zablokowane</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Widoczne na ekranie rozszerzonym</translation>
+        <translation>Widoczne na ekranie rozszerzonym</translation>
     </message>
 </context>
 <context>
@@ -1436,7 +1572,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Edytowalne</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Sieć Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Wczytywanie...</translation>
     </message>
 </context>
 <context>
@@ -1489,7 +1639,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1498,14 +1648,6 @@
         <source>Image Format (</source>
         <translation>Format obrazu (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Importowanie obrazu zakończone niepowodzeniem.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Importowanie obrazu zakończone powodzeniem.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1521,10 +1663,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Importowanie strony %1 z %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importowanie PDF zakończone powodzeniem.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1548,121 +1686,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Dodaj do ulubionych</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Udostępniaj</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Szukaj</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Usuń</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Powrót do folderu</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Usuń z ulubionych</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Utwórz nowy folder</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Dodaj do strony</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Ustaw jako tło</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Dodaj do biblioteki</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Informacje o obiekcie</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>Dodano 1 obraz do biblioteki</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Nagrania</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Filmy</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Obrazy</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Kształty</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Aplikacje</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Ulubione</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Tworzenie miniatury obrazu dla %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Dodawanie do strony zakończone niepowodzeniem dla elementu %1.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interakcje</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>ImportowanyObraz</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animacje</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1681,6 +1705,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Zamknij</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1716,37 +1747,41 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Dodaj nowy folder</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nazwa nowego folderu:</translation>
+        <source>(copy)</source>
+        <translation>(kopiuj)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Dodaj</translation>
+        <source>Document Repository Loss</source>
+        <translation>Utrata repozytorium dokumentów</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Anuluj</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore utraciło dostęp do repozytorium dokumentów „%1”. Niestety aplikacja musi zostać zamknięta, aby uniknąć uszkodzenia danych. Najnowsze zmiany mogą zostać utracone.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(kopiuj)</translation>
+        <source>English</source>
+        <translation>Angielski</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Utrata repozytorium dokumentów</translation>
+        <source>Russian</source>
+        <translation>Rosyjski</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore utraciło dostęp do repozytorium dokumentów „%1”. Niestety aplikacja musi zostać zamknięta, aby uniknąć uszkodzenia danych. Najnowsze zmiany mogą zostać utracone.</translation>
+        <source>German</source>
+        <translation>Niemiecki</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francuski</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francuski (odmiana szwajcarska)</translation>
     </message>
 </context>
 <context>
@@ -1860,14 +1895,6 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Dokumenty niezatytułowane</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Kosz</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Moje filmy</translation>
     </message>
@@ -1876,33 +1903,33 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Nauczyciel</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Uczeń</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz zadanie tutaj ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>upuść multimedia tutaj ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz tytuł tutaj...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wstaw tytuł łącza tutaj...</translation>
     </message>
 </context>
 <context>
@@ -1916,131 +1943,131 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz tytuł tutaj ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz komentarz tutaj ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Dodaj działanie</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Dodaj multimedia</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Dodaj Å‚Ä…cze</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Strona: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz tytuł sesji tutaj ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor/autorzy</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz autorów tutaj ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Cel(e)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Wpisz cele tutaj...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Indeksowanie zasobów</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>SÅ‚owa kluczowe:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Wpisz słowa kluczowe tutaj ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Poziom:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Tematy:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licencja</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Uznanie autorstwa CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Uznanie autorstwa–Bez utworów zależnych CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Uznanie autorstwa–Na tych samych warunkach CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Uznanie autorstwa–Użycie niekomercyjne CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Uznanie autorstwa–Użycie niekomercyjne–Bez utworów zależnych CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Uznanie autorstwa–Użycie niekomercyjne–Na tych samych warunkach CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domena publiczna</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Wszystkie prawa zastrzeżone</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Utworzone:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Zaktualizowane:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Strona tytułowa</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Strona: %0</translation>
     </message>
 </context>
 <context>
@@ -2084,6 +2111,10 @@ Czy chcesz ignorować te błędy dla tego hosta?</translation>
         <source>Cache</source>
         <translation>Pamięć podręczna</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2146,14 +2177,7 @@ Aby uzyskać dostęp do zaktualizowanych dokumentów, należy ponownie uruchomi
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Sieć Web</translation>
+        <translation>Przypomnij mi później</translation>
     </message>
 </context>
 <context>
@@ -2191,6 +2215,14 @@ Aby uzyskać dostęp do zaktualizowanych dokumentów, należy ponownie uruchomi
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Wysyłanie do serwisu YouTube w toku %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2266,11 +2298,11 @@ Aby uzyskać dostęp do zaktualizowanych dokumentów, należy ponownie uruchomi
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importuj stare dokumenty Uniboard/Sankore</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Brak dokumentów do importowania</translation>
     </message>
 </context>
 <context>
@@ -2732,302 +2764,600 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Pokaż wewnętrzną treść strony na podrzędnym ekranie lub projektorze</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Tryb wielu wyświetlaczy</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Zamień ekran sterowania z ekranem wyświetlania</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Tryb</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tryb poczÄ…tkowy:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Tablica</translation>
+        <translation>Tablica</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Pulpit</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Uzytkownik serwera proxy:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Hasło:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>Identyfikator Planète Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Użytkownik:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Hasło:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Podziękowania</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly i Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Oprogramowanie jest dostarczane na zasadzie „takie, jakie jest”, bez żadnych wyraźnych ani dorozumianych gwarancji. Autorzy w żadnym wypadku nie ponoszą odpowiedzialności za jakiekolwiek szkody wynikające z użytkowania oprogramowania.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Oprogramowanie może być wykorzystywane przez każdego i w dowolnym celu – również komercyjnie – a także dowolnie modyfikowane i udostępniane, przy czym warunkiem jest zastosowanie się do następujących ograniczeń:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. Zabrania się rozpowszechniania nieprawdziwych informacji na temat źródła oprogramowania; nie wolno przywłaszczać sobie autorstwa oryginalnego programu. Jeśli wykorzystujesz oprogramowanie w produkcie, notka o autorach w dokumentacji produktu byłaby mile widziana, niemniej nie jest wymagana.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. Zmodyfikowane wersje źródłowe muszą być wyraźnie oznaczone i nie mogą być przedstawiane jako oryginalne oprogramowanie.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3. Zabrania się usuwania tych informacji prawnych z jakichkolwiek dystrybucji źródłowych oraz ich modyfikowania.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré jest oprogramowaniem bezpłatnym: możesz je udostępniać i modyfikować na warunkach mniejszej ogólnej powszechnej licencji GNU wydanej przez Free Software Foundation, przy czym wersją obowiązującą licencji jest wersja 2 lub nowsza. Kod źródłowy oprogramowania znajdziesz pod adresem </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Oprogramowanie Open-Sankoré jest udostępniane z nadzieją, że okaże się przydatne, ale NIE JEST OBJĘTE ŻADNĄ GWARANCJĄ; nie ma zastosowania nawet dorozumiana gwarancja WARTOŚCI HANDLOWEJ lub PRZYDATNOŚCI DO OKREŚLONEGO CELU. Więcej informacji znajdziesz w mniejszej ogólnej powszechnej licencji GNU poniżej.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_pt.ts b/Sankore-3.1/resources/i18n/sankore_pt.ts
index f025f6d..9373d73 100644
--- a/Sankore-3.1/resources/i18n/sankore_pt.ts
+++ b/Sankore-3.1/resources/i18n/sankore_pt.ts
@@ -1,1208 +1,1267 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="pt_PT" sourcelanguage="en_GB">
 <context>
     <name>BlackoutWidget</name>
     <message>
         <source>Click to Return to Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Clicar para voltar para a Aplicação</translation>
     </message>
 </context>
 <context>
     <name>DownloadDialog</name>
     <message>
         <source>Downloads</source>
-        <translation type="unfinished"></translation>
+        <translation>Transferências</translation>
     </message>
     <message>
         <source>Clean Up</source>
-        <translation type="unfinished"></translation>
+        <translation>Limpar</translation>
     </message>
     <message>
         <source>0 Items</source>
-        <translation type="unfinished"></translation>
+        <translation>0 Itens</translation>
     </message>
 </context>
 <context>
     <name>DownloadItem</name>
     <message>
         <source>Form</source>
-        <translation type="unfinished"></translation>
+        <translation>Formulário</translation>
     </message>
     <message>
         <source>Filename</source>
-        <translation type="unfinished"></translation>
+        <translation>Nome do ficheiro</translation>
     </message>
     <message>
         <source>Try Again</source>
-        <translation type="unfinished"></translation>
+        <translation>Tentar novamente</translation>
     </message>
     <message>
         <source>Stop</source>
-        <translation type="unfinished"></translation>
+        <translation>Parar</translation>
     </message>
     <message>
         <source>Open</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir</translation>
     </message>
 </context>
 <context>
     <name>IntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar o Podcast no YouTube</translation>
     </message>
     <message>
         <source>Title</source>
-        <translation type="unfinished"></translation>
+        <translation>Título</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation type="unfinished"></translation>
+        <translation>Descrição</translation>
     </message>
     <message>
         <source>Author</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor</translation>
     </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
         <source>Board</source>
-        <translation type="unfinished"></translation>
+        <translation>Quadro</translation>
     </message>
     <message>
         <source>Web</source>
-        <translation type="unfinished"></translation>
+        <translation>Web</translation>
     </message>
     <message>
         <source>Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Documentos</translation>
     </message>
     <message>
         <source>Tutorial</source>
-        <translation type="unfinished"></translation>
+        <translation>Tutorial</translation>
     </message>
     <message>
         <source>Stylus</source>
-        <translation type="unfinished"></translation>
+        <translation>Paleta</translation>
     </message>
     <message>
         <source>Ctrl+T</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+T</translation>
     </message>
     <message>
         <source>Backgrounds</source>
-        <translation type="unfinished"></translation>
+        <translation>Fundo</translation>
     </message>
     <message>
         <source>Change Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Mudar Fundo</translation>
     </message>
     <message>
         <source>Undo</source>
-        <translation type="unfinished"></translation>
+        <translation>Desfazer</translation>
     </message>
     <message>
         <source>Ctrl+Z</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Z</translation>
     </message>
     <message>
         <source>Redo</source>
-        <translation type="unfinished"></translation>
+        <translation>Refazer</translation>
     </message>
     <message>
         <source>Ctrl+Y</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Y</translation>
     </message>
     <message>
         <source>Previous</source>
-        <translation type="unfinished"></translation>
+        <translation>Anterior</translation>
     </message>
     <message>
         <source>Previous Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Página anterior</translation>
     </message>
     <message>
         <source>PgUp</source>
-        <translation type="unfinished"></translation>
+        <translation>Subir na página</translation>
     </message>
     <message>
         <source>Next</source>
-        <translation type="unfinished"></translation>
+        <translation>Próximo</translation>
     </message>
     <message>
         <source>Next Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Próxima Página</translation>
     </message>
     <message>
         <source>PgDown</source>
-        <translation type="unfinished"></translation>
+        <translation>Descer na página</translation>
     </message>
     <message>
         <source>Manage Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Gerir Documentos</translation>
     </message>
     <message>
         <source>Ctrl+D</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+D</translation>
     </message>
     <message>
         <source>Web Browsing</source>
-        <translation type="unfinished"></translation>
+        <translation>Navegar na Web</translation>
     </message>
     <message>
         <source>Ctrl+W</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+W</translation>
     </message>
     <message>
         <source>Line</source>
-        <translation type="unfinished"></translation>
+        <translation>Linha</translation>
     </message>
     <message>
         <source>Small Line</source>
-        <translation type="unfinished"></translation>
+        <translation>Traço Fino</translation>
     </message>
     <message>
         <source>Medium Line</source>
-        <translation type="unfinished"></translation>
+        <translation>Traço Médio</translation>
     </message>
     <message>
         <source>Large Line</source>
-        <translation type="unfinished"></translation>
+        <translation>Traço Grosso</translation>
     </message>
     <message>
         <source>Quit</source>
-        <translation type="unfinished"></translation>
+        <translation>Sair</translation>
     </message>
     <message>
         <source>Eraser</source>
-        <translation type="unfinished"></translation>
+        <translation>Borracha</translation>
     </message>
     <message>
         <source>Smalle Eraser</source>
-        <translation type="unfinished"></translation>
+        <translation>Borracha Pequena</translation>
     </message>
     <message>
         <source>Medium Eraser</source>
-        <translation type="unfinished"></translation>
+        <translation>Borracha Média</translation>
     </message>
     <message>
         <source>Large Eraser</source>
-        <translation type="unfinished"></translation>
+        <translation>Borracha Grande</translation>
     </message>
     <message>
         <source>Color</source>
-        <translation type="unfinished"></translation>
+        <translation>Cores</translation>
     </message>
     <message>
         <source>Back</source>
-        <translation type="unfinished"></translation>
+        <translation>Recuar</translation>
     </message>
     <message>
         <source>Left</source>
-        <translation type="unfinished"></translation>
+        <translation>Esquerda</translation>
     </message>
     <message>
         <source>Forward</source>
-        <translation type="unfinished"></translation>
+        <translation>Avançar</translation>
     </message>
     <message>
         <source>Right</source>
-        <translation type="unfinished"></translation>
+        <translation>Direita</translation>
     </message>
     <message>
         <source>Reload</source>
-        <translation type="unfinished"></translation>
+        <translation>Recarregar</translation>
     </message>
     <message>
         <source>Reload Current Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Recarregar a página atual</translation>
     </message>
     <message>
         <source>Home</source>
-        <translation type="unfinished"></translation>
+        <translation>Página Inicial</translation>
     </message>
     <message>
         <source>Load Home Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Carregar a Página Inicial</translation>
     </message>
     <message>
         <source>Bookmarks</source>
-        <translation type="unfinished"></translation>
+        <translation>Favoritos</translation>
     </message>
     <message>
         <source>Show Bookmarks</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar os Favoritos</translation>
     </message>
     <message>
         <source>Bookmark</source>
-        <translation type="unfinished"></translation>
+        <translation>Favorito</translation>
     </message>
     <message>
         <source>Add Bookmark</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar aos Favoritos</translation>
     </message>
     <message>
         <source>Display Board</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar o Quadro</translation>
     </message>
     <message>
         <source>Ctrl+B</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+B</translation>
     </message>
     <message>
         <source>Erase</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Erase Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar Conteúdo</translation>
     </message>
     <message>
         <source>Preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>Preferências</translation>
     </message>
     <message>
         <source>Display Preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Preferências</translation>
     </message>
     <message>
         <source>Library</source>
-        <translation type="unfinished"></translation>
+        <translation>Biblioteca</translation>
     </message>
     <message>
         <source>Show Library</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Biblioteca</translation>
     </message>
     <message>
         <source>Ctrl+L</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+L</translation>
     </message>
     <message>
         <source>Show Desktop</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>"Mostrar Ambiente de Trabalho" (muito longo) - Mostrar a mesa</translatorcomment>
+        <translation>Ver mesa</translation>
     </message>
     <message>
         <source>Show Computer Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar o ambiente de trabalho do Computador</translation>
     </message>
     <message>
         <source>Ctrl+Shift+H</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Shift+H</translation>
     </message>
     <message>
         <source>Bigger</source>
-        <translation type="unfinished"></translation>
+        <translation>Ampliar</translation>
     </message>
     <message>
         <source>Zoom In</source>
-        <translation type="unfinished"></translation>
+        <translation>Aproximar</translation>
     </message>
     <message>
         <source>Ctrl++</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl++</translation>
     </message>
     <message>
         <source>Smaller</source>
-        <translation type="unfinished"></translation>
+        <translation>Reduzir</translation>
     </message>
     <message>
         <source>Zoom Out</source>
-        <translation type="unfinished"></translation>
+        <translation>Afastar</translation>
     </message>
     <message>
         <source>Ctrl+-</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+-</translation>
     </message>
     <message>
         <source>New Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Nova Pasta</translation>
     </message>
     <message>
         <source>Create a New Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Criar uma Nova Pasta</translation>
     </message>
     <message>
         <source>New Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Novo Documento</translation>
     </message>
     <message>
         <source>Create a New Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Criar um Novo Documento</translation>
     </message>
     <message>
         <source>Import</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar</translation>
     </message>
     <message>
         <source>Import a Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar um Documento</translation>
     </message>
     <message>
         <source>Export</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar</translation>
     </message>
     <message>
         <source>Export a Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar um Documento</translation>
     </message>
     <message>
         <source>Open in Board</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir no Quadro</translation>
     </message>
     <message>
         <source>Open Page in Board</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir Página no Quadro</translation>
     </message>
     <message>
         <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+O</translation>
     </message>
     <message>
         <source>Duplicate</source>
-        <translation type="unfinished"></translation>
+        <translation>Duplicar</translation>
     </message>
     <message>
         <source>Duplicate Selected Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Duplicar o Conteúdo Selecionado</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Delete Selected Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar o Conteúdo Selecionado</translation>
     </message>
     <message>
         <source>Del</source>
-        <translation type="unfinished"></translation>
+        <translation>Del</translation>
     </message>
     <message>
         <source>Add to Working Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar ao Documento de Trabalho</translation>
     </message>
     <message>
         <source>Add Selected Content to Open Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar o Conteúdo Selecionado ao Documento Aberto</translation>
     </message>
     <message>
         <source>Add</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar</translation>
     </message>
     <message>
         <source>Add Content to Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Conteúdo ao Documento</translation>
     </message>
     <message>
         <source>Rename</source>
-        <translation type="unfinished"></translation>
+        <translation>Mudar o Nome</translation>
     </message>
     <message>
         <source>Rename Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Mudar o Nome do Conteúdo</translation>
     </message>
     <message>
         <source>Tools</source>
-        <translation type="unfinished"></translation>
+        <translation>Ferramentas</translation>
     </message>
     <message>
         <source>Display Tools</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Ferramentas</translation>
     </message>
     <message>
         <source>Multi Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Écrans Múltiplos</translation>
     </message>
     <message>
         <source>Wide Size (16/9)</source>
-        <translation type="unfinished"></translation>
+        <translation>Formato Panorâmico (16/9)</translation>
     </message>
     <message>
         <source>Use Document Wide Size (16/9)</source>
-        <translation type="unfinished"></translation>
+        <translation>Usar documento no Formato Panorâmico (16/9)</translation>
     </message>
     <message>
         <source>Regular Size (4/3)</source>
-        <translation type="unfinished"></translation>
+        <translation>Formato Tradicional (4/3)</translation>
     </message>
     <message>
         <source>Use Document Regular Size (4/3)</source>
-        <translation type="unfinished"></translation>
+        <translation>Usar documento no Formato Tradicional (4/3)</translation>
     </message>
     <message>
         <source>Custom Size</source>
-        <translation type="unfinished"></translation>
+        <translation>Tamanho Personalizado</translation>
     </message>
     <message>
         <source>Use Custom Document Size</source>
-        <translation type="unfinished"></translation>
+        <translation>Usar documento no Tamanho Personalizado</translation>
     </message>
     <message>
         <source>Stop Loading</source>
-        <translation type="unfinished"></translation>
+        <translation>Parar de Carregar</translation>
     </message>
     <message>
         <source>Stop Loading Web Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Parar de Carregar a Página Web</translation>
     </message>
     <message>
         <source>Cut</source>
-        <translation type="unfinished"></translation>
+        <translation>Cortar</translation>
     </message>
     <message>
         <source>Copy</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar</translation>
     </message>
     <message>
         <source>Paste</source>
-        <translation type="unfinished"></translation>
+        <translation>Colar</translation>
     </message>
     <message>
         <source>Sleep</source>
-        <translation type="unfinished"></translation>
+        <translation>Modo "Espera"</translation>
     </message>
     <message>
         <source>Put Presentation to Sleep</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar a Apresentaçãao em modo "Espera"</translation>
     </message>
     <message>
         <source>Virtual Keyboard</source>
-        <translation type="unfinished"></translation>
+        <translation>Teclado Virtual</translation>
     </message>
     <message>
         <source>Display Virtual Keyboard</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar o Teclado Virtual</translation>
     </message>
     <message>
         <source>Plain Light Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Fundo Branco e Liso</translation>
     </message>
     <message>
         <source>Light</source>
-        <translation type="unfinished"></translation>
+        <translation>Claro</translation>
     </message>
     <message>
         <source>Grid Light Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Fundo Branco e Quadriculado</translation>
     </message>
     <message>
         <source>Plain Dark Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Fundo Preto e Liso</translation>
     </message>
     <message>
         <source>Dark</source>
-        <translation type="unfinished"></translation>
+        <translation>Escuro</translation>
     </message>
     <message>
         <source>Grid Dark Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Fundo Preto e Quadriculado</translation>
     </message>
     <message>
         <source>Podcast</source>
-        <translation type="unfinished"></translation>
+        <translation>Podcast</translation>
     </message>
     <message>
         <source>Record Presentation to Video</source>
-        <translation type="unfinished"></translation>
+        <translation>Gravar a Apresentação em Vídeo</translation>
     </message>
     <message>
         <source>Record</source>
-        <translation type="unfinished"></translation>
+        <translation>Gravar</translation>
     </message>
     <message>
         <source>Start Screen Recording</source>
-        <translation type="unfinished"></translation>
+        <translation>Iniciar a Gravação do Ecrã</translation>
     </message>
     <message>
         <source>Erase Items</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar Itens</translation>
     </message>
     <message>
         <source>Erase All Items</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar Todos os Itens</translation>
     </message>
     <message>
         <source>Erase Annotations</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar Anotações</translation>
     </message>
     <message>
         <source>Erase All Annotations</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar Todas as Anotações</translation>
     </message>
     <message>
         <source>Clear Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Limpar a Página</translation>
     </message>
     <message>
         <source>Clear All Elements</source>
-        <translation type="unfinished"></translation>
+        <translation>Limpar Todos os Elementos</translation>
     </message>
     <message>
         <source>Pen</source>
-        <translation type="unfinished"></translation>
+        <translation>Caneta</translation>
     </message>
     <message>
         <source>Annotate Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Escrever</translation>
     </message>
     <message>
         <source>Ctrl+I</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+I</translation>
     </message>
     <message>
         <source>Erase Annotation</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Ctrl+E</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+E</translation>
     </message>
     <message>
         <source>Marker</source>
-        <translation type="unfinished"></translation>
+        <translation>Marcador</translation>
     </message>
     <message>
         <source>Highlight </source>
-        <translation type="unfinished"></translation>
+        <translation>Marcador</translation>
     </message>
     <message>
         <source>Ctrl+M</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+M</translation>
     </message>
     <message>
         <source>Selector</source>
-        <translation type="unfinished"></translation>
+        <translation>Seletor</translation>
     </message>
     <message>
         <source>Select And Modify Objects</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecionar e Modificar Objetos</translation>
     </message>
     <message>
         <source>Ctrl+F</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+F</translation>
     </message>
     <message>
         <source>Hand</source>
-        <translation type="unfinished"></translation>
+        <translation>Mão</translation>
     </message>
     <message>
         <source>Scroll Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Desloca-se na página</translation>
     </message>
     <message>
         <source>Laser Pointer</source>
-        <translation type="unfinished"></translation>
+        <translation>Apontador Laser</translation>
     </message>
     <message>
         <source>Virtual Laser Pointer</source>
-        <translation type="unfinished"></translation>
+        <translation>Apontador Laser Virtual</translation>
     </message>
     <message>
         <source>Ctrl+G</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+G</translation>
     </message>
     <message>
         <source>Draw Lines</source>
-        <translation type="unfinished"></translation>
+        <translation>Desenhar Linhas</translation>
     </message>
     <message>
         <source>Ctrl+J</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+J</translation>
     </message>
     <message>
         <source>Text</source>
-        <translation type="unfinished"></translation>
+        <translation>Texto</translation>
     </message>
     <message>
         <source>Write Text</source>
-        <translation type="unfinished"></translation>
+        <translation>Escrever Texto</translation>
     </message>
     <message>
         <source>Ctrl+K</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+K</translation>
     </message>
     <message>
         <source>Capture</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar</translation>
     </message>
     <message>
         <source>Capture Part of the Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar uma Parte do Ecrã</translation>
     </message>
     <message>
         <source>Add To Current Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar à Página Atual</translation>
     </message>
     <message>
         <source>Add Item To Current Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Item à Página Atual</translation>
     </message>
     <message>
         <source>Add To New Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar a uma Página Nova</translation>
     </message>
     <message>
         <source>Add Item To New Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Item a uma Página Nova</translation>
     </message>
     <message>
         <source>Add To Library</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar à Biblioteca</translation>
     </message>
     <message>
         <source>Add Item To Library</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Item à Biblioteca</translation>
     </message>
     <message>
         <source>Pages</source>
-        <translation type="unfinished"></translation>
+        <translation>Páginas</translation>
     </message>
     <message>
         <source>Create a New Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Criar uma Nova Página</translation>
     </message>
     <message>
         <source>New Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Nova Página</translation>
     </message>
     <message>
         <source>Duplicate Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Duplicar Página</translation>
     </message>
     <message>
         <source>Duplicate the Current Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Duplicar a Página Atual</translation>
     </message>
     <message>
         <source>Import Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar Página</translation>
     </message>
     <message>
         <source>Import an External Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar uma Página Externa</translation>
     </message>
     <message>
         <source>Pause</source>
-        <translation type="unfinished"></translation>
+        <translation>Pausa</translation>
     </message>
     <message>
         <source>Pause Podcast Recording</source>
-        <translation type="unfinished"></translation>
+        <translation>Pausar a Gravação do Podcast</translation>
     </message>
     <message>
         <source>Podcast Config</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuração do Podcast</translation>
     </message>
     <message>
         <source>Configure Podcast Recording</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuração da Gravação de Podcast</translation>
     </message>
     <message>
         <source>Flash Trap</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura de Flash</translation>
     </message>
     <message>
         <source>Trap Flash Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura de Conteúdo Flash</translation>
     </message>
     <message>
         <source>Web Trap</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura de Web</translation>
     </message>
     <message>
         <source>Trap Web Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura de Conteúdo Web</translation>
     </message>
     <message>
         <source>Custom Capture</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura Personalizada</translation>
     </message>
     <message>
         <source>Window Capture</source>
-        <translation type="unfinished"></translation>
+        <translation>Captura da Janela</translation>
     </message>
     <message>
         <source>Capture a Window</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar uma Janela</translation>
     </message>
     <message>
         <source>Embed Web Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Conteúdo Web Embutido</translation>
     </message>
     <message>
         <source>Capture Embeddable Web Content</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar Conteúdo Web Embutido</translation>
     </message>
     <message>
         <source>Show on Display</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar no Ecrã</translation>
     </message>
     <message>
         <source>Show Main Screen on Display Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar a Tela Principal no Ecrã</translation>
     </message>
     <message>
         <source>Erase all Annotations</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar todas as notas</translation>
     </message>
     <message>
         <source>eduMedia</source>
-        <translation type="unfinished"></translation>
+        <translation>eduMedia</translation>
     </message>
     <message>
         <source>Import eduMedia simulation</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar uma simulação eduMedia</translation>
     </message>
     <message>
         <source>Open the tutorial</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir o Tutorial</translation>
     </message>
     <message>
         <source>Check Update</source>
-        <translation type="unfinished"></translation>
+        <translation>Verificar Atualização</translation>
     </message>
     <message>
         <source>Ctrl+H</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+H</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Sair do Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Editor Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar o Editor de Widgets do Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar o Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar a Aplicação Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar Documentos Uniboard</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar Antigas Versões de Documentos Uniboard ou Sankoré</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Agrupar itens</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translatorcomment>Começar(?)</translatorcomment>
+        <translation>Iniciar</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagir com itens</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Apagar o fundo</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Remover o fundo</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupo</translation>
     </message>
 </context>
 <context>
     <name>PasswordDialog</name>
     <message>
         <source>Authentication Required</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticação Necessária</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nome de Utilizador:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation type="unfinished"></translation>
+        <translation>Senha:</translation>
     </message>
 </context>
 <context>
     <name>ProxyDialog</name>
     <message>
         <source>Proxy Authentication</source>
-        <translation type="unfinished"></translation>
+        <translation>Autenticação do Proxy</translation>
     </message>
     <message>
         <source>Connect to Proxy</source>
-        <translation type="unfinished"></translation>
+        <translation>Conetar ao Proxy</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nome de Utilizador:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation type="unfinished"></translation>
+        <translation>Senha:</translation>
     </message>
     <message>
         <source>Save username and password for future use</source>
-        <translation type="unfinished"></translation>
+        <translation>Gravar "Nome de Utilizador" e "Senha" para futuras utilizações</translation>
     </message>
 </context>
 <context>
     <name>QObject</name>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation type="unfinished"></translation>
+        <source>Element ID = </source>
+        <translation>ID do Elemento</translation>
     </message>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished"></translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>O conteúdo não é suportado no formato de destino.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation type="unfinished"></translation>
+        <source>Remove Page</source>
+        <translation>Remover Página</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation type="unfinished"></translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Tem a certeza que quer remover 1 página do documento selecionado '%0'?</translation>
     </message>
 </context>
 <context>
     <name>UBApplication</name>
     <message>
         <source>Page Size</source>
-        <translation type="unfinished"></translation>
+        <translation>Tamanho da Página</translation>
     </message>
     <message>
         <source>Podcast</source>
-        <translation type="unfinished"></translation>
+        <translation>Podcast</translation>
     </message>
 </context>
 <context>
     <name>UBApplicationController</name>
     <message>
         <source>Web</source>
-        <translation type="unfinished"></translation>
+        <translation>Web</translation>
     </message>
     <message>
         <source>Update available</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualização disponível</translation>
     </message>
     <message>
         <source>New update available, would you go to the web page ?</source>
-        <translation type="unfinished"></translation>
+        <translation>Nova atualização disponível. Ir para a página web?</translation>
     </message>
     <message>
         <source>No update available</source>
-        <translation type="unfinished"></translation>
+        <translation>Nenhuma atualização disponível</translation>
     </message>
     <message>
         <source>Update</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualizar</translation>
     </message>
 </context>
 <context>
     <name>UBBoardController</name>
     <message>
         <source>Downloading content %1 failed</source>
-        <translation type="unfinished"></translation>
+        <translation>A transferência de conteúdos falhou %1</translation>
     </message>
     <message>
         <source>Download finished</source>
-        <translation type="unfinished"></translation>
+        <translation>Transferência Completa</translation>
     </message>
     <message>
         <source>Unknown tool type %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Tipo de ferramenta desconhecido %1</translation>
     </message>
     <message>
         <source>Unknown content type %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Tipo de conteúdo desconhecido %1</translation>
     </message>
     <message>
         <source>Add Item</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Item</translation>
     </message>
     <message>
         <source>All Supported (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Tudo Suportado (%1)</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Apagar a página %1 do documento</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Página %1 apagada</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Falha na operação de adição de ficheiro: erro na cópia do ficheiro</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Agrupar</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Desagrupar</translation>
     </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
     <message>
         <source>Error Adding Image to Library</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro ao Adicionar Imagem à Biblioteca</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Imagem capturada</translation>
     </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
     <message>
         <source>Cache Properties</source>
-        <translation type="unfinished"></translation>
+        <translation>Propriedades da Cache</translation>
     </message>
     <message>
         <source>Color:</source>
-        <translation type="unfinished"></translation>
+        <translation>Cor:</translation>
     </message>
     <message>
         <source>Shape:</source>
-        <translation type="unfinished"></translation>
+        <translation>Forma:</translation>
     </message>
     <message>
         <source>Size:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tamanho:</translation>
     </message>
     <message>
         <source>Close</source>
-        <translation type="unfinished"></translation>
+        <translation>Fechar</translation>
     </message>
 </context>
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar Parte do Ecrã</translation>
     </message>
     <message>
         <source>Capture the Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar Ecrã</translation>
     </message>
     <message>
         <source>Show the stylus palette</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Paleta</translation>
     </message>
     <message>
         <source>Show Board on Secondary Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar o Quadro num Ecrã Secundário</translation>
     </message>
     <message>
         <source>Show Desktop on Secondary Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Ambiente de Trabalho num Ecrã Secundário</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Mostrar Open-Sankore</translation>
     </message>
 </context>
 <context>
     <name>UBDocumentController</name>
     <message>
         <source>New Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Nova Pasta</translation>
     </message>
     <message>
         <source>Page %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Página %1</translation>
     </message>
     <message>
         <source>Add Folder of Images</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Pasta de Imagens</translation>
     </message>
     <message>
         <source>Add Images</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Imagens</translation>
     </message>
     <message>
         <source>Add Pages from File</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Páginas de um Ficheiro</translation>
     </message>
     <message>
         <source>Duplicating Document %1</source>
-        <translation type="unfinished"></translation>
+        <translation>A Duplicar Documento %1</translation>
     </message>
     <message>
         <source>Document %1 copied</source>
-        <translation type="unfinished"></translation>
+        <translation>Documento %1 Copiado</translation>
     </message>
     <message>
         <source>Remove Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Remover Página</translation>
     </message>
     <message>
         <source>Remove Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Remover Documento</translation>
     </message>
     <message>
         <source>Are you sure you want to remove the document '%1'?</source>
-        <translation type="unfinished"></translation>
+        <translation>Tem a certeza que quer remover o documento '%1'?</translation>
     </message>
     <message>
         <source>Empty Trash</source>
-        <translation type="unfinished"></translation>
+        <translation>Vazar Lixo</translation>
     </message>
     <message>
         <source>Are you sure you want to empty trash?</source>
-        <translation type="unfinished"></translation>
+        <translation>Tem a certeza que quer vazar a pasta Lixo? </translation>
     </message>
     <message>
         <source>Emptying trash</source>
-        <translation type="unfinished"></translation>
+        <translation>A vazar Lixo</translation>
     </message>
     <message>
         <source>Emptied trash</source>
-        <translation type="unfinished"></translation>
+        <translation>Pasta Lixo limpa</translation>
     </message>
     <message>
         <source>Remove Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar Pasta</translation>
     </message>
     <message>
         <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation type="unfinished"></translation>
+        <translation>Tem a certeza que quer apagar a pasta '%1' e todo o seu conteúdo?</translation>
     </message>
     <message>
         <source>No document selected!</source>
-        <translation type="unfinished"></translation>
+        <translation>Não há documentos selecionados!</translation>
     </message>
     <message>
         <source>Open Supported File</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir Ficheiro Suportado</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>A importar ficheiro %1...</translation>
     </message>
     <message>
         <source>Failed to import file ... </source>
-        <translation type="unfinished"></translation>
+        <translation>Falha ao importar ficheiro ...</translation>
     </message>
     <message>
         <source>Import all Images from Folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Folder does not contain any image files!</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar todas as Imagens de uma Pasta</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Empty</source>
-        <translation type="unfinished"></translation>
+        <translation>Vazio</translation>
     </message>
     <message>
         <source>Trash</source>
-        <translation type="unfinished"></translation>
+        <translation>Lixo</translation>
     </message>
     <message>
         <source>Open Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir Documento</translation>
     </message>
     <message>
         <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
-        <translation type="unfinished"></translation>
+        <translation>O documento '%1' foi criado com uma versão mais recente do Sankoré (%2). Ao abri-lo, poderá perder alguma da informação contida nele. Deseja continuar?</translation>
     </message>
     <message>
         <source>Add all Images to Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar todas as imagens ao Documento</translation>
     </message>
     <message>
         <source>All Images (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Todas as Imagens (%1)</translation>
     </message>
     <message>
         <source>Selection does not contain any image files!</source>
-        <translation type="unfinished"></translation>
+        <translation>A seleção não contém ficheiros de Imagem!</translation>
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>Tem a certeza que quer apagar %n página(s) do documento selecionado '%1'?</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Página de Título</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>O diretório não contém imagens</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documentos sem nome</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
     <message>
         <source>images</source>
-        <translation type="unfinished"></translation>
+        <translation>imagens</translation>
     </message>
     <message>
         <source>videos</source>
-        <translation type="unfinished"></translation>
+        <translation>vídeos</translation>
     </message>
     <message>
         <source>objects</source>
-        <translation type="unfinished"></translation>
+        <translation>objetos</translation>
     </message>
     <message>
         <source>widgets</source>
-        <translation type="unfinished"></translation>
+        <translation>widgets</translation>
     </message>
     <message>
         <source>All supported files (*.%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Todos os ficheiros suportados (*.%1)</translation>
     </message>
     <message>
         <source>File %1 saved</source>
-        <translation type="unfinished"></translation>
+        <translation>Ficheiro %1 gravado</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation type="unfinished"></translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>A inserir página %1 de %2</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation type="unfinished"></translation>
+        <source>Import successful.</source>
+        <translation>Importação bem sucedida.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importação do ficheiro %1 bem sucedida.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>A importar o ficheiro %1</translation>
     </message>
 </context>
 <context>
     <name>UBDocumentNavigator</name>
     <message>
         <source>Page %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Página %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Página de Título</translation>
     </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
     <message>
         <source>Credentials has to not been filled out yet.</source>
-        <translation type="unfinished"></translation>
+        <translation>Os créditos ainda não foram preenchidos.</translation>
     </message>
     <message>
         <source>Uploading Sankore File on Web.</source>
-        <translation type="unfinished"></translation>
+        <translation>A enviar o ficheiro Sankoré para a Web.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportação falhou.</translation>
     </message>
     <message>
         <source>Export canceled ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportação cancelada ...</translation>
     </message>
     <message>
         <source>Converting page %1/%2 ...</source>
-        <translation type="unfinished"></translation>
+        <translation>A converter página %1/%2 ...</translation>
     </message>
     <message>
         <source>Document uploaded correctly on the web.</source>
-        <translation type="unfinished"></translation>
+        <translation>O documento foi correctamente enviado para a web.</translation>
     </message>
     <message>
         <source>Failed to upload document on the web.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha no envio do documento para a web.</translation>
     </message>
 </context>
 <context>
     <name>UBDocumentTreeWidget</name>
     <message>
         <source>%1 (copy)</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 (cópia)</translation>
     </message>
     <message>
         <source>Copying page %1/%2</source>
-        <translation type="unfinished"></translation>
+        <translation>A copiar página %1/%2</translation>
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 de páginas copiadas</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1211,483 +1270,452 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>A descarregar ficheiro</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished"></translation>
+        <translation>Cancelar</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Surgiram alertas durante a exportação</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar para IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar como ficheiro IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportação bem sucedida.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha na Exportação.</translation>
     </message>
 </context>
 <context>
     <name>UBExportDocument</name>
     <message>
         <source>Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Página</translation>
     </message>
     <message>
         <source>Export as UBZ File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar como Ficheiro UBZ</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportação bem sucedida.</translation>
     </message>
     <message>
         <source>Exporting %1 %2 of %3</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar %1 %2 de %3</translation>
     </message>
     <message>
         <source>Export to Sankore Format</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar para o Formato Sankoré</translation>
     </message>
 </context>
 <context>
     <name>UBExportFullPDF</name>
     <message>
         <source>Export as PDF File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar como Ficheiro PDF</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportação bem sucedida.</translation>
     </message>
     <message>
         <source>Export to PDF</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar para PDF</translation>
     </message>
 </context>
 <context>
     <name>UBExportPDF</name>
     <message>
         <source>Export as PDF File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar como Ficheiro PDF</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportação bem sucedida.</translation>
     </message>
     <message>
         <source>Exporting page %1 of %2</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar página %1 de %2</translation>
     </message>
     <message>
         <source>Export to PDF</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar para PDF</translation>
     </message>
 </context>
 <context>
     <name>UBExportWeb</name>
     <message>
         <source>Page</source>
-        <translation type="unfinished"></translation>
+        <translation>Página</translation>
     </message>
     <message>
         <source>Export as Web data</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar para formato de Web</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>A exportar documento...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportação bem sucedida.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha na exportação.</translation>
     </message>
     <message>
         <source>Export to Web Browser</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportar para Explorador Web</translation>
     </message>
 </context>
 <context>
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar à página</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished"></translation>
+        <translation>Definir como fundo</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar à biblioteca</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished"></translation>
+        <translation>Informações do Objecto</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar aos favoritos</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished"></translation>
+        <translation>Partilhar</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>Procurar</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Apagar</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Voltar à pasta</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished"></translation>
+        <translation>Remover dos favoritos</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Criar uma nova pasta</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translatorcomment>"Procurar ficheiro de Sistema"(?)</translatorcomment>
+        <translation>Voltar a procurar ficheiro de Sistema</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished"></translation>
+        <translation>Imagem Importada</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Áudios</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Vídeos</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Imagens</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animações</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Atividades Interativas</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplicações</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Formas</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoritos</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Busca na web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Lixo</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Aceitar</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancelar</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Escrever um novo nome para o diretório</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>A carregar </translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished"></translation>
+        <translation>Bloqueado</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Visível em Ecrã Expandido</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished"></translation>
+        <translation>Bloqueado</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished"></translation>
+        <translation>Visível em Ecrã Expandido</translation>
     </message>
     <message>
         <source>Go to Content Source</source>
-        <translation type="unfinished"></translation>
+        <translation>Ir para a Fonte do Conteúdo</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsTextItem</name>
     <message>
         <source><Type Text Here></source>
-        <translation type="unfinished"></translation>
+        <translation><Introduzir o Texto Aqui></translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsTextItemDelegate</name>
     <message>
         <source>Text Color</source>
-        <translation type="unfinished"></translation>
+        <translation>Cor do Texto</translation>
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Editável</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>A carregar ...</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsWidgetItemDelegate</name>
     <message>
         <source>Frozen</source>
-        <translation type="unfinished"></translation>
+        <translation>Congelado</translation>
     </message>
     <message>
         <source>Transform as Tool </source>
-        <translation type="unfinished"></translation>
+        <translation>Transformar em Ferramenta</translation>
     </message>
 </context>
 <context>
     <name>UBImportCFF</name>
     <message>
         <source>Common File Format (</source>
-        <translation type="unfinished"></translation>
+        <translation>Formato de Ficheiro Frequente (</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>A importar ficheiro %1...</translation>
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha a importar ficheiro %1.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Importação bem sucedida.</translation>
     </message>
     <message>
         <source>Import failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha na importação.</translation>
     </message>
 </context>
 <context>
     <name>UBImportDocument</name>
     <message>
         <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
+        <translation>A importar ficheiro %1...</translation>
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha a importar ficheiro %1.</translation>
     </message>
     <message>
         <source>Import successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Importação bem sucedida.</translation>
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
     <name>UBImportImage</name>
     <message>
         <source>Image Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>Formato da Imagem (</translation>
     </message>
 </context>
 <context>
     <name>UBImportPDF</name>
     <message>
         <source>Portable Document Format (*.pdf)</source>
-        <translation type="unfinished"></translation>
+        <translation>Portable Document Format (*.pdf)</translation>
     </message>
     <message>
         <source>PDF import failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha na importação de PDF.</translation>
     </message>
     <message>
         <source>Importing page %1 of %2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation type="unfinished"></translation>
+        <translation>A importar a página %1 de %2</translation>
     </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
     <message>
         <source>Error while publishing video to intranet (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro durante a publicação do vídeo na intranet (%1)</translation>
     </message>
     <message>
         <source>Publishing to Intranet in progress %1 %</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicação na Intranet em progresso %1 %</translation>
     </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublishingDialog</name>
     <message>
         <source>Publish</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar</translation>
     </message>
 </context>
 <context>
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>ImportedImage</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
     <name>UBMainWindow</name>
     <message>
         <source>Yes</source>
-        <translation type="unfinished"></translation>
+        <translation>Sim</translation>
     </message>
     <message>
         <source>No</source>
-        <translation type="unfinished"></translation>
+        <translation>Não</translation>
     </message>
     <message>
         <source>Ok</source>
-        <translation type="unfinished"></translation>
+        <translation>Ok</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Fechar</translation>
     </message>
 </context>
 <context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
-        <translation type="unfinished"></translation>
+        <translation><qt>Introduzir o Nome de Utilizador e Senha "%1" em %2</qt></translation>
     </message>
     <message>
         <source>Failed to log to Proxy</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha ao entrar no Proxy</translation>
     </message>
     <message>
         <source>SSL Errors:
@@ -1697,802 +1725,809 @@
 %2
 
 Do you want to ignore these errors for this host?</source>
-        <translation type="unfinished"></translation>
+        <translation>Erros SSL:
+
+%1
+
+%2
+
+Quer ignorar estes erros, deste servidor?</translation>
     </message>
     <message>
         <source>Yes</source>
-        <translation type="unfinished"></translation>
+        <translation>Sim</translation>
     </message>
     <message>
         <source>No</source>
-        <translation type="unfinished"></translation>
+        <translation>Não</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation type="unfinished"></translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation type="unfinished"></translation>
+        <source>(copy)</source>
+        <translation>(cópia)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation type="unfinished"></translation>
+        <source>Document Repository Loss</source>
+        <translation>Repositório de Documentos perdido</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation type="unfinished"></translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>O Sanskoré perdeu o acesso ao repositório do documento '%1'. Infelizmente, o aplicativo vai ser encerrado para evitar a corrupção de dados. Também poderá perder as últimas alterações.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation type="unfinished"></translation>
+        <source>English</source>
+        <translation>Inglês</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation type="unfinished"></translation>
+        <source>Russian</source>
+        <translation>Russo</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation type="unfinished"></translation>
+        <source>German</source>
+        <translation>Alemão</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francês</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Francês (Suiço)</translation>
     </message>
 </context>
 <context>
     <name>UBPodcastController</name>
     <message>
         <source>Sankore Cast</source>
-        <translation type="unfinished"></translation>
+        <translation>Sankore Cast</translation>
     </message>
     <message>
         <source>Failed to start encoder ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Falha ao iniciar o codificador ...</translation>
     </message>
     <message>
         <source>No Podcast encoder available ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nenhum codificador de Podcast disponível ...</translation>
     </message>
     <message>
         <source>Part %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Parte %1</translation>
     </message>
     <message>
         <source>on your desktop ...</source>
-        <translation type="unfinished"></translation>
+        <translation>no seu ambiente de trabalho ...</translation>
     </message>
     <message>
         <source>in folder %1</source>
-        <translation type="unfinished"></translation>
+        <translation>na pasta %1</translation>
     </message>
     <message>
         <source>Podcast created %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Podcast criado %1</translation>
     </message>
     <message>
         <source>Podcast recording error (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro de gravação do Podcast (%1)</translation>
     </message>
     <message>
         <source>Default Audio Input</source>
-        <translation type="unfinished"></translation>
+        <translation>Entrada de áudio padrão</translation>
     </message>
     <message>
         <source>No Audio Recording</source>
-        <translation type="unfinished"></translation>
+        <translation>Sem gravação de áudio</translation>
     </message>
     <message>
         <source>Small</source>
-        <translation type="unfinished"></translation>
+        <translation>Pequeno</translation>
     </message>
     <message>
         <source>Medium</source>
-        <translation type="unfinished"></translation>
+        <translation>Médio</translation>
     </message>
     <message>
         <source>Full</source>
-        <translation type="unfinished"></translation>
+        <translation>Completo</translation>
     </message>
     <message>
         <source>Publish to Intranet</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar na Intranet</translation>
     </message>
     <message>
         <source>Publish to Youtube</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar no Youtube</translation>
     </message>
 </context>
 <context>
     <name>UBPreferencesController</name>
     <message>
         <source>version: </source>
-        <translation type="unfinished"></translation>
+        <translation>versão: </translation>
     </message>
     <message>
         <source>Marker is pressure sensitive</source>
-        <translation type="unfinished"></translation>
+        <translation>O marcador é sensível à pressão</translation>
     </message>
 </context>
 <context>
     <name>UBProxyLoginDlg</name>
     <message>
         <source>Proxy Login</source>
-        <translation type="unfinished"></translation>
+        <translation>Iniciar sessão no Proxy</translation>
     </message>
     <message>
         <source>Username:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nome de Utilizador:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation type="unfinished"></translation>
+        <translation>Senha:</translation>
     </message>
 </context>
 <context>
     <name>UBPublicationDlg</name>
     <message>
         <source>Publish document on the web</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar documentos na web</translation>
     </message>
     <message>
         <source>Title:</source>
-        <translation type="unfinished"></translation>
+        <translation>Título:</translation>
     </message>
     <message>
         <source>Description:</source>
-        <translation type="unfinished"></translation>
+        <translation>Descrição:</translation>
     </message>
     <message>
         <source>Publish</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar</translation>
     </message>
 </context>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>My Movies</source>
-        <translation type="unfinished"></translation>
+        <translation>Os meus filmes</translation>
     </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Professor</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Aluno</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar aqui a tarefa ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Largar o ficheiro media aqui ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar aqui o tíitulo...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTeacherBarWidget</name>
-    <message>
-        <source></source>
-        <translation></translation>
+        <translation>Colocar aqui o título do link...</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar o título aqui...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar aqui o comentário ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar uma ação</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>"Adicionar ficheiro multimédia"</translatorcomment>
+        <translation>Adicionar multimédia</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar um link</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Página: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar aqui tipo de sessão ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor(es)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar aqui os autores ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Objetivo(s)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Colocar aqui o tipo de objetivo...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>"Índice de recursos"?</translatorcomment>
+        <translation>Indexar recursos</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Palavra(s) Chave:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Colocar a(s) palavra(s) chave aqui ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nível:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Assunto:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tipo:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licença</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuição CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuição-SemDerivados CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuição-CompartilhaIgual CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuição - NãoComercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuição-NãoComercial-SemDerivados CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuição-NãoComercial-CompartilhaIgual CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domínio Público</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Copyright</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Criou:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Actualizou:</translation>
     </message>
     <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translatorcomment>Página Inicial</translatorcomment>
+        <translation>Página de Título</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Página: %0</translation>
     </message>
 </context>
 <context>
     <name>UBThumbnailAdaptor</name>
     <message>
         <source>Generating preview thumbnails ...</source>
-        <translation type="unfinished"></translation>
+        <translation>A gerar pré-visualização de miniaturas ...</translation>
     </message>
     <message>
         <source>%1 thumbnails generated ...</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 de miniaturas geradas ...</translation>
     </message>
 </context>
 <context>
     <name>UBToolsManager</name>
     <message>
         <source>Mask</source>
-        <translation type="unfinished"></translation>
+        <translation>Cortina</translation>
     </message>
     <message>
         <source>Ruler</source>
-        <translation type="unfinished"></translation>
+        <translation>Régua</translation>
     </message>
     <message>
         <source>Compass</source>
-        <translation type="unfinished"></translation>
+        <translation>Compasso</translation>
     </message>
     <message>
         <source>Protractor</source>
-        <translation type="unfinished"></translation>
+        <translation>Transferidor</translation>
     </message>
     <message>
         <source>Triangle</source>
-        <translation type="unfinished"></translation>
+        <translation>Esquadro</translation>
     </message>
     <message>
         <source>Magnifier</source>
-        <translation type="unfinished"></translation>
+        <translation>Lupa</translation>
     </message>
     <message>
         <source>Cache</source>
-        <translation type="unfinished"></translation>
+        <translation>Cache</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Aristo</translation>
     </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
     <message>
         <source>Whole page</source>
-        <translation type="unfinished"></translation>
+        <translation>Página completa</translation>
     </message>
     <message>
         <source>Web</source>
-        <translation type="unfinished"></translation>
+        <translation>Web</translation>
     </message>
 </context>
 <context>
     <name>UBUpdateDlg</name>
     <message>
         <source>Document updater</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualizador de documento</translation>
     </message>
     <message>
         <source> files require an update.</source>
-        <translation type="unfinished"></translation>
+        <translation> arquivos requerem uma atualização.</translation>
     </message>
     <message>
         <source>Backup path: </source>
-        <translation type="unfinished"></translation>
+        <translation>Localização da Cópia de Segurança:</translation>
     </message>
     <message>
         <source>Browse</source>
-        <translation type="unfinished"></translation>
+        <translation>Procurar</translation>
     </message>
     <message>
         <source>Update</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualizar</translation>
     </message>
     <message>
         <source>Select a backup folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecione uma pasta para a Cópia de Segurança</translation>
     </message>
     <message>
         <source>Please wait the import process will start soon...</source>
-        <translation type="unfinished"></translation>
+        <translation>Aguarde. O processo de importação vai começar em breve...</translation>
     </message>
     <message>
         <source>Files update successful!
 Please reboot the application to access the updated documents.</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualização de ficheiros bem sucedida!
+Por favor, reinicie o aplicativo para aceder aos documentos atualizados.</translation>
     </message>
     <message>
         <source>An error occured during the update. The files have not been affected.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocorreu um erro durante a atualização. Os ficheiros não foram afetados.</translation>
     </message>
     <message>
         <source>Files update results</source>
-        <translation type="unfinished"></translation>
+        <translation>Resultados da actualização de ficheiros</translation>
     </message>
     <message>
         <source>Updating file </source>
-        <translation type="unfinished"></translation>
+        <translation>A actualizar o ficheiro </translation>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
+        <translation>Lembrar-me depois</translation>
     </message>
 </context>
 <context>
     <name>UBWebPluginWidget</name>
     <message>
         <source>Loading...</source>
-        <translation type="unfinished"></translation>
+        <translation>Carregando...</translation>
     </message>
 </context>
 <context>
     <name>UBWebPublisher</name>
     <message>
         <source>Publish Document on Sankore Web</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar o documento no Sankoré Web</translation>
     </message>
 </context>
 <context>
     <name>UBWidgetUniboardAPI</name>
     <message>
         <source>%0 called (method=%1, status=%2)</source>
-        <translation type="unfinished"></translation>
+        <translation>%0 pedido (método=%1, estado=%2)</translation>
     </message>
 </context>
 <context>
     <name>UBYouTubePublisher</name>
     <message>
         <source>YouTube authentication failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro de autenticação no YouTube.</translation>
     </message>
     <message>
         <source>Error while uploading video to YouTube (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro no envio do vídeo para o YouTube (%1)</translation>
     </message>
     <message>
         <source>Upload to YouTube in progress %1 %</source>
-        <translation type="unfinished"></translation>
+        <translation>Envio para o YouTube em curso %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
     </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
     <message>
         <source>Upload</source>
-        <translation type="unfinished"></translation>
+        <translation>Enviar</translation>
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation type="unfinished"></translation>
+        <translation>Automóveis</translation>
     </message>
     <message>
         <source>Music</source>
-        <translation type="unfinished"></translation>
+        <translation>Música</translation>
     </message>
     <message>
         <source>Pets & Animals</source>
-        <translation type="unfinished"></translation>
+        <translation>Animais</translation>
     </message>
     <message>
         <source>Sports</source>
-        <translation type="unfinished"></translation>
+        <translation>Desporto</translation>
     </message>
     <message>
         <source>Travel & Events</source>
-        <translation type="unfinished"></translation>
+        <translation>Viagens e Eventos</translation>
     </message>
     <message>
         <source>Gaming</source>
-        <translation type="unfinished"></translation>
+        <translation>Jogos</translation>
     </message>
     <message>
         <source>Comedy</source>
-        <translation type="unfinished"></translation>
+        <translation>Humor</translation>
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation type="unfinished"></translation>
+        <translation>Pessoas e Blogues</translation>
     </message>
     <message>
         <source>News & Politics</source>
-        <translation type="unfinished"></translation>
+        <translation>Notícias e Política</translation>
     </message>
     <message>
         <source>Entertainment</source>
-        <translation type="unfinished"></translation>
+        <translation>Entretenimento</translation>
     </message>
     <message>
         <source>Education</source>
-        <translation type="unfinished"></translation>
+        <translation>Educação</translation>
     </message>
     <message>
         <source>Howto & Style</source>
-        <translation type="unfinished"></translation>
+        <translation>Guias e Estilo</translation>
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation type="unfinished"></translation>
+        <translation>Sem fins lucrativos e Ativismo</translation>
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation type="unfinished"></translation>
+        <translation>Ciência e Tecnologia</translation>
     </message>
 </context>
 <context>
     <name>UBZoomPalette</name>
     <message>
         <source>%1 x</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 x</translation>
     </message>
 </context>
 <context>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importar versões antigas de documentos Uniboard/Sankoré</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>"There are no documents that should be imported"</translatorcomment>
+        <translation>Não há documentos para importar</translation>
     </message>
 </context>
 <context>
     <name>WBClearButton</name>
     <message>
         <source>Clear</source>
-        <translation type="unfinished"></translation>
+        <translation>Limpar</translation>
     </message>
 </context>
 <context>
     <name>WBDownloadItem</name>
     <message>
         <source>Save File</source>
-        <translation type="unfinished"></translation>
+        <translation>Gravar ficheiro</translation>
     </message>
     <message>
         <source>Download canceled: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Download cancelado: %1</translation>
     </message>
     <message>
         <source>Error opening saved file: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro a abrir o ficheiro gravado: %1</translation>
     </message>
     <message>
         <source>Error saving: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro ao gravar: %1</translation>
     </message>
     <message>
         <source>Network Error: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro na Ligação: %1</translation>
     </message>
     <message>
         <source>seconds</source>
-        <translation type="unfinished"></translation>
+        <translation>Segundos</translation>
     </message>
     <message>
         <source>minutes</source>
-        <translation type="unfinished"></translation>
+        <translation>Minutos</translation>
     </message>
     <message>
         <source>- %4 %5 remaining</source>
-        <translation type="unfinished"></translation>
+        <translation>- %4 %5 de tempo restante</translation>
     </message>
     <message>
         <source>%1 of %2 (%3/sec) %4</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 de %2 (%3/seg) %4</translation>
     </message>
     <message>
         <source>?</source>
         <comment>unknown file size</comment>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Tamanho do ficheiro desconhecido</translatorcomment>
+        <translation>?</translation>
     </message>
     <message>
         <source>%1 of %2 - Stopped</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 de %2 - Parado</translation>
     </message>
     <message>
         <source>bytes</source>
-        <translation type="unfinished"></translation>
+        <translation>bytes</translation>
     </message>
     <message>
         <source>KB</source>
-        <translation type="unfinished"></translation>
+        <translation>KB</translation>
     </message>
     <message>
         <source>MB</source>
-        <translation type="unfinished"></translation>
+        <translation>MB</translation>
     </message>
 </context>
 <context>
     <name>WBDownloadManager</name>
     <message>
         <source>1 Download</source>
-        <translation type="unfinished"></translation>
+        <translation>1 ficheiro descarregado</translation>
     </message>
     <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Sempre >= 2</translatorcomment>
+        <translation>%1 ficheiros descarregados</translation>
     </message>
 </context>
 <context>
     <name>WBHistoryModel</name>
     <message>
         <source>Title</source>
-        <translation type="unfinished"></translation>
+        <translation>Título</translation>
     </message>
     <message>
         <source>Address</source>
-        <translation type="unfinished"></translation>
+        <translation>Endereço</translation>
     </message>
 </context>
 <context>
     <name>WBHistoryTreeModel</name>
     <message>
         <source>Earlier Today</source>
-        <translation type="unfinished"></translation>
+        <translation>Hoje</translation>
     </message>
     <message>
         <source>%1 items</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 item(s)</translation>
     </message>
 </context>
 <context>
     <name>WBSearchLineEdit</name>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>Pesquisar</translation>
     </message>
 </context>
 <context>
     <name>WBTabBar</name>
     <message>
         <source>New &Tab</source>
-        <translation type="unfinished"></translation>
+        <translation>Novo &Separador</translation>
     </message>
     <message>
         <source>Clone Tab</source>
-        <translation type="unfinished"></translation>
+        <translation>Duplicar Separador</translation>
     </message>
     <message>
         <source>&Close Tab</source>
-        <translation type="unfinished"></translation>
+        <translation>&Fechar Separador</translation>
     </message>
     <message>
         <source>Close &Other Tabs</source>
-        <translation type="unfinished"></translation>
+        <translation>Fechar os &Outros Separadores</translation>
     </message>
     <message>
         <source>Reload Tab</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualizar Separador</translation>
     </message>
     <message>
         <source>Reload All Tabs</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualizar todos os Separadores</translation>
     </message>
 </context>
 <context>
     <name>WBTabWidget</name>
     <message>
         <source>Recently Closed Tabs</source>
-        <translation type="unfinished"></translation>
+        <translation>Separadores recentemente fechados</translation>
     </message>
     <message>
         <source>(Untitled)</source>
-        <translation type="unfinished"></translation>
+        <translation>(Sem Título)</translation>
     </message>
 </context>
 <context>
     <name>WBToolbarSearch</name>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>Pesquisar</translation>
     </message>
     <message>
         <source>No Recent Searches</source>
-        <translation type="unfinished"></translation>
+        <translation>Sem pesquisas recentes</translation>
     </message>
     <message>
         <source>Recent Searches</source>
-        <translation type="unfinished"></translation>
+        <translation>Pesquisas recentes</translation>
     </message>
     <message>
         <source>Clear Recent Searches</source>
-        <translation type="unfinished"></translation>
+        <translation>Limpar as pesquisas recentes</translation>
     </message>
 </context>
 <context>
     <name>WBWebPage</name>
     <message>
         <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
-        <translation type="unfinished"></translation>
+        <translation>Descarregar o documento PDF: Prefere descarregar o ficheiro PDF ou adicioná-lo ao ficheiro Sankoré atual?</translation>
     </message>
     <message>
         <source>Download</source>
-        <translation type="unfinished"></translation>
+        <translation>Descarregar</translation>
     </message>
     <message>
         <source>Add to Current Document</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar ao documento atual</translation>
     </message>
     <message>
         <source>PDF</source>
-        <translation type="unfinished"></translation>
+        <translation>PDF</translation>
     </message>
     <message>
         <source>Error loading page: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Erro ao carregar a página: %1</translation>
     </message>
 </context>
 <context>
     <name>WBWebView</name>
     <message>
         <source>Open in New Tab</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir num Novo Separador</translation>
     </message>
 </context>
 <context>
     <name>YouTubePublishingDialog</name>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation type="unfinished"></translation>
+        <translation>Publicar Podcast no Youtube</translation>
     </message>
     <message>
         <source>Title</source>
-        <translation type="unfinished"></translation>
+        <translation>Título</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation type="unfinished"></translation>
+        <translation>Descrição</translation>
     </message>
     <message>
         <source>Keywords</source>
-        <translation type="unfinished"></translation>
+        <translation>Palavras chave</translation>
     </message>
     <message>
         <source>Uniboard</source>
-        <translation type="unfinished"></translation>
+        <translation>Uniboard</translation>
     </message>
     <message>
         <source>Category</source>
-        <translation type="unfinished"></translation>
+        <translation>Categoria</translation>
     </message>
     <message>
         <source>YouTube Username</source>
-        <translation type="unfinished"></translation>
+        <translation>Nome de utilizador do Youtube</translation>
     </message>
     <message>
         <source>YouTube Password</source>
-        <translation type="unfinished"></translation>
+        <translation>Senha do Youtube</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
@@ -2500,6 +2535,14 @@ Please reboot the application to access the updated documents.</source>
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Clicando em 'Enviar', você certifica que possui todos os direitos sobre o conteúdo ou que está autorizado pelo proprietário a tornar o conteúdo disponível publicamente no YouTube, e que esta de acordo com os Termos de Serviço do YouTube localizado em</span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2507,490 +2550,900 @@ p, li { white-space: pre-wrap; }
     <name>brushProperties</name>
     <message>
         <source>On Light Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Num fundo branco</translation>
     </message>
     <message>
         <source>On Dark Background</source>
-        <translation type="unfinished"></translation>
+        <translation>Num fundo preto</translation>
     </message>
     <message>
         <source>Opacity</source>
-        <translation type="unfinished"></translation>
+        <translation>Opacidade</translation>
     </message>
     <message>
         <source>Line Width</source>
-        <translation type="unfinished"></translation>
+        <translation>Largura da linha</translation>
     </message>
     <message>
         <source>Medium</source>
-        <translation type="unfinished"></translation>
+        <translation>Médio</translation>
     </message>
     <message>
         <source>Strong</source>
-        <translation type="unfinished"></translation>
+        <translation>Largo</translation>
     </message>
     <message>
         <source>Fine</source>
-        <translation type="unfinished"></translation>
+        <translation>Fino</translation>
     </message>
     <message>
         <source>Pen is Pressure Sensitive</source>
-        <translation type="unfinished"></translation>
+        <translation>Caneta sensível à pressão</translation>
     </message>
 </context>
 <context>
     <name>capturePublishingDialog</name>
     <message>
         <source>Dialog</source>
-        <translation type="unfinished"></translation>
+        <translation>Caixa de Diálogo</translation>
     </message>
     <message>
         <source>Title</source>
-        <translation type="unfinished"></translation>
+        <translation>Título</translation>
     </message>
     <message>
         <source>E-mail</source>
-        <translation type="unfinished"></translation>
+        <translation>E-mail</translation>
     </message>
     <message>
         <source>Author</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation type="unfinished"></translation>
+        <translation>Descrição</translation>
     </message>
 </context>
 <context>
     <name>documentPublishingDialog</name>
     <message>
         <source>Dialog</source>
-        <translation type="unfinished"></translation>
+        <translation>Caixa de Diálogo</translation>
     </message>
     <message>
         <source>Title</source>
-        <translation type="unfinished"></translation>
+        <translation>Título</translation>
     </message>
     <message>
         <source>E-mail</source>
-        <translation type="unfinished"></translation>
+        <translation>E-mail</translation>
     </message>
     <message>
         <source>Author</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation type="unfinished"></translation>
+        <translation>Descrição</translation>
     </message>
     <message>
         <source>Attach Downloadable PDF Version</source>
-        <translation type="unfinished"></translation>
+        <translation>Anexar um ficheiro PDF descarregável</translation>
     </message>
     <message>
         <source>Attach Downloadable Uniboard File (UBZ)</source>
-        <translation type="unfinished"></translation>
+        <translation>Anexar um ficheiro Uniboard (UBZ) descarregável</translation>
     </message>
     <message>
         <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation type="unfinished"></translation>
+        <translation>Aviso: Este documento contém um vídeo, que não vai ser corretamente apresentado na Web</translation>
     </message>
 </context>
 <context>
     <name>documents</name>
     <message>
         <source>Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Documentos Uniboard</translation>
     </message>
 </context>
 <context>
     <name>preferencesDialog</name>
     <message>
         <source>Preferences</source>
-        <translation type="unfinished"></translation>
+        <translation>Preferências</translation>
     </message>
     <message utf8="true">
         <source>version : …</source>
-        <translation type="unfinished"></translation>
+        <translation>versão : ...</translation>
     </message>
     <message>
         <source>Default Settings</source>
-        <translation type="unfinished"></translation>
+        <translation>Configuração por defeito</translation>
     </message>
     <message>
         <source>Close</source>
-        <translation type="unfinished"></translation>
+        <translation>Fechar</translation>
     </message>
     <message>
         <source>Display</source>
-        <translation type="unfinished"></translation>
+        <translation>Exibir</translation>
     </message>
     <message>
         <source>Internet</source>
-        <translation type="unfinished"></translation>
+        <translation>Internet</translation>
     </message>
     <message>
         <source>Show Page with External Browser</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar a página num Browser externo</translation>
     </message>
     <message>
         <source>Home Page:</source>
-        <translation type="unfinished"></translation>
+        <translation>Página de entrada:</translation>
     </message>
     <message>
         <source>Virtual Keyboard</source>
-        <translation type="unfinished"></translation>
+        <translation>Teclado virtual</translation>
     </message>
     <message>
         <source>Keyboard button size:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tamanho dos botões do teclado:</translation>
     </message>
     <message>
         <source>Toolbar</source>
-        <translation type="unfinished"></translation>
+        <translation>Barra de ferramentas</translation>
     </message>
     <message>
         <source>Positioned at the Top (recommended for tablets)</source>
-        <translation type="unfinished"></translation>
+        <translation>Posicionado no topo (recomendado para tablets)</translation>
     </message>
     <message>
         <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation type="unfinished"></translation>
+        <translation>Posicionado em baixo (recomendado para quadros brancos)</translation>
     </message>
     <message>
         <source>Display Text Under Button</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar o texto por debaixo dos botões</translation>
     </message>
     <message>
         <source>Stylus Palette</source>
-        <translation type="unfinished"></translation>
+        <translation>Paleta</translation>
     </message>
     <message>
         <source>Horizontal</source>
-        <translation type="unfinished"></translation>
+        <translation>Horizontal</translation>
     </message>
     <message>
         <source>Vertical</source>
-        <translation type="unfinished"></translation>
+        <translation>Vertical</translation>
     </message>
     <message>
         <source>Pen</source>
-        <translation type="unfinished"></translation>
+        <translation>Caneta</translation>
     </message>
     <message>
         <source>Marker</source>
-        <translation type="unfinished"></translation>
+        <translation>Marcador</translation>
     </message>
     <message>
         <source>Licences</source>
-        <translation type="unfinished"></translation>
+        <translation>Licenças</translation>
     </message>
     <message>
         <source>OpenSSl</source>
-        <translation type="unfinished"></translation>
+        <translation>OpenSSl</translation>
     </message>
     <message>
         <source>zlib</source>
-        <translation type="unfinished"></translation>
+        <translation>zlib</translation>
     </message>
     <message>
         <source>xpdf</source>
-        <translation type="unfinished"></translation>
+        <translation>xpdf</translation>
     </message>
     <message>
         <source>Quazip</source>
-        <translation type="unfinished"></translation>
+        <translation>Quazip</translation>
     </message>
     <message>
         <source>About</source>
-        <translation type="unfinished"></translation>
+        <translation>Sobre</translation>
     </message>
     <message>
         <source>Software Update</source>
-        <translation type="unfinished"></translation>
+        <translation>Atualização de Software</translation>
     </message>
     <message>
         <source>Check software update at launch</source>
-        <translation type="unfinished"></translation>
+        <translation>Verificar atualizações de software no arranque</translation>
     </message>
     <message>
         <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Rede</translation>
     </message>
     <message>
-        <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <source>Multi display</source>
+        <translation>Écrans Múltiplos</translation>
     </message>
     <message>
-        <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Mostrar o conteúdo interno da página web num ecrã ou projetor secundário</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Trocar entre o ecrã de controlo e apresentação?</translatorcomment>
+        <translation>Trocar entre o ecrã de controlo e visualização</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Modo</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>"Mode to start in:"</translatorcomment>
+        <translation>Modo iniciar:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished"></translation>
+        <translation>Quadro</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Área de Trabalho</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy User:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Senha:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>"Planète Sankoré ID"</translatorcomment>
+        <translation type="obsolete">Planète Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Utilizador:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Senha:</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Créditos</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">As licenças estão em Inglês para respeitar a tradução oficial e legalmente aprovada.</span></p></td></tr></table></body></html></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
     </message>
-    <message>
+    <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
-    <message>
+    <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
     </message>
     <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -2998,12 +3451,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3011,10 +3463,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -3022,23 +3515,23 @@ p, li { white-space: pre-wrap; }
     <name>trapFlashDialog</name>
     <message>
         <source>Trap flash</source>
-        <translation type="unfinished"></translation>
+        <translation>Capturar flash</translation>
     </message>
     <message>
         <source>Select a flash to trap</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecionar o flash a capturar</translation>
     </message>
     <message>
         <source>about:blank</source>
-        <translation type="unfinished"></translation>
+        <translation>Acerca:em branco</translation>
     </message>
     <message>
         <source>Application name</source>
-        <translation type="unfinished"></translation>
+        <translation>Nome da Aplicação</translation>
     </message>
     <message>
         <source>Create Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Criar Aplicação</translation>
     </message>
 </context>
 </TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_rm.ts b/Sankore-3.1/resources/i18n/sankore_rm.ts
deleted file mode 100644
index c6bb902..0000000
--- a/Sankore-3.1/resources/i18n/sankore_rm.ts
+++ /dev/null
@@ -1,3044 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
-    <name>BlackoutWidget</name>
-    <message>
-        <source>Click to Return to Application</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>DownloadDialog</name>
-    <message>
-        <source>Downloads</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Clean Up</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>0 Items</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>DownloadItem</name>
-    <message>
-        <source>Form</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Filename</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Try Again</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Stop</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>IntranetPodcastPublishingDialog</name>
-    <message>
-        <source>Publish Podcast to YouTube</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Title</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Description</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Author</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <source>Board</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Tutorial</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Stylus</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+T</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Backgrounds</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Change Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Undo</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+Z</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Redo</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+Y</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Previous</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Previous Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>PgUp</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Next</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Next Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>PgDown</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Manage Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+D</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Web Browsing</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+W</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Line</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Small Line</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Medium Line</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Large Line</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Quit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Eraser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Smalle Eraser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Medium Eraser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Large Eraser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Color</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Back</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Left</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Forward</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Right</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Reload</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Reload Current Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Home</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Load Home Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Bookmarks</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Bookmarks</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Display Board</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+B</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Preferences</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Display Preferences</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+L</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Desktop</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Computer Desktop</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+Shift+H</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Bigger</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Zoom In</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl++</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Smaller</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Zoom Out</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>New Folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create a New Folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>New Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create a New Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import a Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export a Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open in Board</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open Page in Board</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+O</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Duplicate</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Duplicate Selected Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Delete Selected Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Del</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add to Working Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Selected Content to Open Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Content to Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Rename</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Rename Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Tools</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Display Tools</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Multi Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Wide Size (16/9)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Use Document Wide Size (16/9)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Regular Size (4/3)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Use Document Regular Size (4/3)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Custom Size</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Use Custom Document Size</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Stop Loading</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Stop Loading Web Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Cut</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Copy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Paste</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Sleep</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Put Presentation to Sleep</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Virtual Keyboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Display Virtual Keyboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Plain Light Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Light</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Grid Light Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Plain Dark Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Dark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Grid Dark Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Podcast</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Record Presentation to Video</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Record</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Start Screen Recording</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase Items</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase All Items</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase Annotations</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase All Annotations</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Clear Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Clear All Elements</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Annotate Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+I</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase Annotation</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+E</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Marker</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Highlight </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+M</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Selector</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Select And Modify Objects</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+F</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Hand</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Scroll Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Laser Pointer</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Virtual Laser Pointer</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+G</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Draw Lines</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+J</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Write Text</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+K</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture Part of the Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add To Current Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Item To Current Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add To New Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Item To New Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add To Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Item To Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pages</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create a New Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>New Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Duplicate Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Duplicate the Current Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import an External Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pause</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pause Podcast Recording</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Podcast Config</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Configure Podcast Recording</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Flash Trap</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trap Flash Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Web Trap</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trap Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Custom Capture</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Window Capture</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture a Window</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Embed Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture Embeddable Web Content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show on Display</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Main Screen on Display Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erase all Annotations</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>eduMedia</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import eduMedia simulation</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open the tutorial</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Check Update</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ctrl+H</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>PasswordDialog</name>
-    <message>
-        <source>Authentication Required</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Password:</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>ProxyDialog</name>
-    <message>
-        <source>Proxy Authentication</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Connect to Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Password:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Save username and password for future use</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>QObject</name>
-    <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
-    <message>
-        <source>Cannot load content</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Loading ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBApplication</name>
-    <message>
-        <source>Page Size</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Podcast</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBApplicationController</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>New update available, would you go to the web page ?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No update available</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Update available</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Update</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBBoardController</name>
-    <message>
-        <source>Downloading content %1 failed</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Download finished</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Unknown tool type %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Unknown content type %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Item</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>All Supported (%1)</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBBoardPaletteManager</name>
-    <message>
-        <source>Error Adding Image to Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBCachePropertiesWidget</name>
-    <message>
-        <source>Cache Properties</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Color:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shape:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Size:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Close</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBDesktopPalette</name>
-    <message>
-        <source>Show Uniboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture Part of the Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Capture the Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show the stylus palette</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Board on Secondary Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Desktop on Secondary Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBDocumentController</name>
-    <message>
-        <source>New Folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Page %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Folder of Images</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Images</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add Pages from File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Duplicating Document %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Document %1 copied</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remove Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remove Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the document '%1'?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Empty Trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Are you sure you want to empty trash?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Emptying trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Emptied trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remove Folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No document selected!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open Supported File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Failed to import file ... </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import all Images from Folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Folder does not contain any image files!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Empty</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add all Images to Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>All Images (%1)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Selection does not contain any image files!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message numerus="yes">
-        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
-        </translation>
-    </message>
-</context>
-<context>
-    <name>UBDocumentManager</name>
-    <message>
-        <source>images</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>videos</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>objects</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>widgets</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>All supported files (*.%1)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>File %1 saved</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Importing page %1 of %2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBDocumentNavigator</name>
-    <message>
-        <source>Page %0</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBDocumentPublisher</name>
-    <message>
-        <source>Export failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export canceled ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Converting page %1/%2 ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credentials has to not been filled out yet.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Uploading Sankore File on Web.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Document uploaded correctly on the web.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Failed to upload document on the web.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBDocumentTreeWidget</name>
-    <message>
-        <source>%1 (copy)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Copying page %1/%2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message numerus="yes">
-        <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
-        </translation>
-    </message>
-</context>
-<context>
-    <name>UBDownloadWidget</name>
-    <message>
-        <source>Downloading files</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Cancel</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBExportCFF</name>
-    <message>
-        <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBExportDocument</name>
-    <message>
-        <source>Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export as UBZ File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting %1 %2 of %3</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export to Sankore Format</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBExportFullPDF</name>
-    <message>
-        <source>Export as PDF File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export to PDF</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBExportPDF</name>
-    <message>
-        <source>Export as PDF File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting page %1 of %2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export to PDF</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBExportWeb</name>
-    <message>
-        <source>Page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export as Web data</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Export to Web Browser</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBFeatureProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBFeaturesActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBFeaturesController</name>
-    <message>
-        <source>ImportedImage</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsGroupContainerItemDelegate</name>
-    <message>
-        <source>Locked</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Visible on Extended Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsItemDelegate</name>
-    <message>
-        <source>Locked</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Visible on Extended Screen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Go to Content Source</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsTextItem</name>
-    <message>
-        <source><Type Text Here></source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsTextItemDelegate</name>
-    <message>
-        <source>Text Color</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Editable</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBGraphicsWidgetItemDelegate</name>
-    <message>
-        <source>Frozen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Transform as Tool </source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBImportCFF</name>
-    <message>
-        <source>Common File Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import of file %1 failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBImportDocument</name>
-    <message>
-        <source>Importing file %1...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Import of file %1 failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBImportImage</name>
-    <message>
-        <source>Image Format (</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBImportPDF</name>
-    <message>
-        <source>Portable Document Format (*.pdf)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>PDF import failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Importing page %1 of %2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBIntranetPodcastPublisher</name>
-    <message>
-        <source>Error while publishing video to intranet (%1)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Publishing to Intranet in progress %1 %</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBIntranetPodcastPublishingDialog</name>
-    <message>
-        <source>Publish</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBKeyboardPalette</name>
-    <message>
-        <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBMainWindow</name>
-    <message>
-        <source>Yes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ok</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBNetworkAccessManager</name>
-    <message>
-        <source><qt>Enter username and password for "%1" at %2</qt></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Failed to log to Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>SSL Errors:
-
-%1
-
-%2
-
-Do you want to ignore these errors for this host?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Yes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>New Folder name:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Cancel</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBPersistenceManager</name>
-    <message>
-        <source>(copy)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Document Repository Loss</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBPodcastController</name>
-    <message>
-        <source>Failed to start encoder ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No Podcast encoder available ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Part %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>on your desktop ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>in folder %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Podcast created %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Podcast recording error (%1)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Default Audio Input</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No Audio Recording</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Small</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Medium</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Full</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Publish to Intranet</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Publish to Youtube</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Sankore Cast</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBPreferencesController</name>
-    <message>
-        <source>version: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Marker is pressure sensitive</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBProxyLoginDlg</name>
-    <message>
-        <source>Proxy Login</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Password:</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBPublicationDlg</name>
-    <message>
-        <source>Publish document on the web</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Title:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Description:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Publish</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBSettings</name>
-    <message>
-        <source>Untitled Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>My Movies</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTGActionWidget</name>
-    <message>
-        <source>Teacher</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Student</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTGMediaWidget</name>
-    <message>
-        <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type title here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTGUrlWidget</name>
-    <message>
-        <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTeacherBarWidget</name>
-    <message>
-        <source></source>
-        <translation></translation>
-    </message>
-</context>
-<context>
-    <name>UBTeacherGuideEditionWidget</name>
-    <message>
-        <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add an action</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add a media</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add a link</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Page: %0</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTeacherGuidePageZeroWidget</name>
-    <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Author(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Keywords:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Level:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Licence</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Public domain</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Copyright</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Created the:
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Updated the:
-</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTeacherGuidePresentationWidget</name>
-    <message>
-        <source>Page: %0</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBThumbnailAdaptor</name>
-    <message>
-        <source>Generating preview thumbnails ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>%1 thumbnails generated ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBToolsManager</name>
-    <message>
-        <source>Mask</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Ruler</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Compass</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Protractor</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Triangle</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Magnifier</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Cache</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBTrapFlashController</name>
-    <message>
-        <source>Whole page</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBUpdateDlg</name>
-    <message>
-        <source>Document updater</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source> files require an update.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Backup path: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Browse</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Update</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Select a backup folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Files update successful!
-Please reboot the application to access the updated documents.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>An error occured during the update. The files have not been affected.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Files update results</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Updating file </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Please wait the import process will start soon...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBWebPluginWidget</name>
-    <message>
-        <source>Loading...</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBWebPublisher</name>
-    <message>
-        <source>Publish Document on Sankore Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBWidgetUniboardAPI</name>
-    <message>
-        <source>%0 called (method=%1, status=%2)</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBYouTubePublisher</name>
-    <message>
-        <source>YouTube authentication failed.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Error while uploading video to YouTube (%1)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Upload to YouTube in progress %1 %</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBYouTubePublishingDialog</name>
-    <message>
-        <source>Upload</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Autos & Vehicles</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Music</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pets & Animals</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Sports</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Travel & Events</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Gaming</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Comedy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>People & Blogs</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>News & Politics</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Entertainment</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Education</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Howto & Style</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Nonprofits & Activism</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Science & Technology</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBZoomPalette</name>
-    <message>
-        <source>%1 x</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UniboardSankoreTransition</name>
-    <message>
-        <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBClearButton</name>
-    <message>
-        <source>Clear</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBDownloadItem</name>
-    <message>
-        <source>Save File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Download canceled: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Error opening saved file: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Error saving: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Network Error: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>seconds</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>minutes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>- %4 %5 remaining</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>%1 of %2 (%3/sec) %4</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>?</source>
-        <comment>unknown file size</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>%1 of %2 - Stopped</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>bytes</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>KB</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>MB</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBDownloadManager</name>
-    <message>
-        <source>1 Download</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>%1 Downloads</source>
-        <comment>always >= 2</comment>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBHistoryModel</name>
-    <message>
-        <source>Title</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Address</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBHistoryTreeModel</name>
-    <message>
-        <source>Earlier Today</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>%1 items</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBSearchLineEdit</name>
-    <message>
-        <source>Search</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBTabBar</name>
-    <message>
-        <source>New &Tab</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Clone Tab</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>&Close Tab</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Close &Other Tabs</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Reload Tab</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Reload All Tabs</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBTabWidget</name>
-    <message>
-        <source>Recently Closed Tabs</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>(Untitled)</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBToolbarSearch</name>
-    <message>
-        <source>Search</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>No Recent Searches</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Recent Searches</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Clear Recent Searches</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBWebPage</name>
-    <message>
-        <source>Download</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Add to Current Document</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>PDF</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Error loading page: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>WBWebView</name>
-    <message>
-        <source>Open in New Tab</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>YouTubePublishingDialog</name>
-    <message>
-        <source>Publish Podcast to YouTube</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Title</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Description</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Keywords</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Uniboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Category</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>YouTube Username</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>YouTube Password</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>brushProperties</name>
-    <message>
-        <source>On Light Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>On Dark Background</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Opacity</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Line Width</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Medium</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Strong</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Fine</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pen is Pressure Sensitive</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>capturePublishingDialog</name>
-    <message>
-        <source>Dialog</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Title</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>E-mail</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Author</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Description</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>documentPublishingDialog</name>
-    <message>
-        <source>Dialog</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Title</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>E-mail</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Author</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Description</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attach Downloadable PDF Version</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Attach Downloadable Uniboard File (UBZ)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>documents</name>
-    <message>
-        <source>Uniboard Documents</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>preferencesDialog</name>
-    <message>
-        <source>Preferences</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>version : …</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Default Settings</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Close</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Display</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Internet</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show Page with External Browser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Home Page:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Virtual Keyboard</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Keyboard button size:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Toolbar</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Positioned at the Top (recommended for tablets)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Positioned at the Bottom (recommended for white boards)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Display Text Under Button</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Stylus Palette</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Horizontal</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Vertical</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pen</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Marker</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>About</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Software Update</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Check software update at launch</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Licences</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>OpenSSl</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>zlib</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>xpdf</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Quazip</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Multi display</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Mode</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Board</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Desktop</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pass:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>User:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Pass: </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>trapFlashDialog</name>
-    <message>
-        <source>Trap flash</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Select a flash to trap</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>about:blank</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Application name</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Create Application</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_ro.ts b/Sankore-3.1/resources/i18n/sankore_ro.ts
index 6706ce6..47e9ea0 100644
--- a/Sankore-3.1/resources/i18n/sankore_ro.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ro.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="en_GB">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Ieşire din Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Editor Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Afişare Editor widget-uri Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Ascundere Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Ascundere aplicaţie Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importare documente Uniboard</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importare documente vechi Sankore sau Uniboard</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Grupare articole</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Redare</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interacțiune cu articolele</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Ștergere fundal</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Eliminare fundal</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupare</translation>
     </message>
 </context>
 <context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>CoÅŸ de gunoi</translation>
+        <source>Element ID = </source>
+        <translation>ID element =</translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Acasă</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Conținutul nu este suportat în formatul de destinație.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Conţinutul nu poate fi încărcat</translation>
+        <source>Remove Page</source>
+        <translation>Eliminare pagină</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Încărcare ...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Sunteți sigur că doriți să eliminați 1 pagină din documentul selectat '%0'?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>Tot ce se suportă (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Ștergere pagina %1 din document</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Pagina %1 ștearsă</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Operațiunea de adăugare fișier nu a reușit: eroare copiere fișier</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupare</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Degrupare</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Eroare adăugare imagine la bibliotecă</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>ImagineCapturată</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>AfiÅŸare Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Capturare parte de ecran</translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>AfiÅŸare desktop pe ecran secundar</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Afișare Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation>Importare toate imaginile din folder</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Folderul nu conţine nicio imagine!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Åžtergere</translation>
     </message>
@@ -1112,10 +1143,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>Sunteţi sigur că doriţi să eliminaţi %n pagină din documentul selectat '%1'?</numerusform>
+            <numerusform>Sunteţi sigur că doriţi să eliminaţi %n pagini din documentul selectat '%1'?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pagina cu titlu</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Folderul nu conține niciun fișier imagine</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Documente fără titlu</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1188,20 @@
         <translation>FiÅŸier %1 salvat</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importare pagina %1 din %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Inserare pagina %1 din %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Importare reuşită.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Importare fișier %1 reușită.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Dată imagine eronată, salt peste fişier %1</translation>
+        <source>Importing file %1</source>
+        <translation>Importare fișier %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1210,10 @@
         <source>Page %0</source>
         <translation>Pagina %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Pagina cu titlu</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,7 +1258,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 pagini copiate</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1211,34 +1268,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Descărcare fişiere</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Anulare</translation>
+        <translation>Anulare</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Au apărut atenționări în timpul exportului</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportare în IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportare ca fișier IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportare document...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Exportare reuşită.</translation>
+        <translation>Exportare reuşită.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Exportare nereuşită.</translation>
+        <translation>Exportare nereuşită.</translation>
     </message>
 </context>
 <context>
@@ -1341,68 +1405,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Adăugare la pagină</translation>
+        <translation>Adăugare la pagină</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Setare ca fundal</translation>
+        <translation>Setare ca fundal</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Adăugare la bibliotecă</translation>
+        <translation>Adăugare la bibliotecă</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Informaţii despre obiect</translation>
+        <translation>Informaţii despre obiect</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Adăugare la favorite</translation>
+        <translation>Adăugare la favorite</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Distribuire</translation>
+        <translation>Distribuire</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Căutare</translation>
+        <translation>Căutare</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Åžtergere</translation>
+        <translation>Åžtergere</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">ÃŽnapoi la folder</translation>
+        <translation>ÃŽnapoi la folder</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Eliminare din favorite</translation>
+        <translation>Eliminare din favorite</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Creare folder nou</translation>
+        <translation>Creare folder nou</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Rescanare sistem de fișiere</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">ImportedImage</translation>
+        <translation>ImagineImportată</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Înregistrări audio</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filme</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Imagini</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animaţii</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interactivităţi</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplicaţii</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Forme</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favorite</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Căutare web</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>CoÅŸ de gunoi</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Acceptare</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Anulare</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Introducere un nume de folder nou</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Încărcare</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Blocat</translation>
+        <translation>Blocat</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Vizibil pe ecran extins</translation>
+        <translation>Vizibil pe ecran extins</translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1565,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Editabil</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Încărcare ...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1632,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1641,6 @@
         <source>Image Format (</source>
         <translation>Format imagine (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Importare imagine nereuşită.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Importare imagine reuşită.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1656,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Importare pagina %1 din %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Importare PDF reuşită.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,121 +1679,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Adăugare la favorite</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Distribuire</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Căutare</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Åžtergere</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>ÃŽnapoi la folder</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Eliminare din favorite</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Creare folder nou</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Adăugare la pagină</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Setare ca fundal</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Adăugare la bibliotecă</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Informaţii despre obiect</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>S-a adăugat 1 imagine la bibliotecă</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Înregistrări audio</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Filme</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Imagini</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Forme</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Aplicaţii</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favorit</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Creare miniatură imagine pentru %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Adăugare la pagină nereuşită pentru articol %1.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interactivităţi</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>ImportedImage</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animaţii</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Intrare</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1698,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>ÃŽnchidere</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1715,37 +1740,41 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Adăugare fişier nou</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nume fiÅŸier nou:</translation>
+        <source>(copy)</source>
+        <translation>(copie)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Adăugare</translation>
+        <source>Document Repository Loss</source>
+        <translation>Pierdere depozit de documente</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Anulare</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore a pierdut accesul la depozitul de documente '%1'. Din păcate, aplicaţia trebuie închisă pentru a evita coruperea datelor. Este posibil şi ca ultimele modificări să fie pierdute.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(copie)</translation>
+        <source>English</source>
+        <translation>Engleză</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Pierdere depozit de documente</translation>
+        <source>Russian</source>
+        <translation>Rusă</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore a pierdut accesul la depozitul de documente '%1'. Din păcate, aplicaţia trebuie închisă pentru a evita coruperea datelor. Este posibil şi ca ultimele modificări să fie pierdute.</translation>
+        <source>German</source>
+        <translation>Germană</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Franceză</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Franceză elvețiană</translation>
     </message>
 </context>
 <context>
@@ -1859,14 +1888,6 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Documente fără titlu</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>CoÅŸ de gunoi</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Filmele mele</translation>
     </message>
@@ -1875,33 +1896,33 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Profesor</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Elev</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți sarcina aici ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>lăsați suportul media aici ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți titlul aici ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceși titlul linkului aici...</translation>
     </message>
 </context>
 <context>
@@ -1915,131 +1936,131 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți titlul aici ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți comentariul aici ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Adăugați o acțiune</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Adăugați un suport media</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Adăugați un link</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți titlul sesiunii aici ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autor(i)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți autorii aici ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Obiectiv(e)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Introduceți obiectivele aici ...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Indexare resursă</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Cuvinte cheie:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduceți cuvintele cheie aici ...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nivel:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Subiecte:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Tip:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licență</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuire CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuire-FărăDerivate CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuire-DistribuieIdentic CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuire-Necomercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuire-Necomercial-FărăDerivate CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Atribuire-Necomercial-DistribuieIdentic CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Domeniu public</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Drept de autor</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Creat la:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Actualizat la:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Pagina cu titlu</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Pagina: %0</translation>
     </message>
 </context>
 <context>
@@ -2083,6 +2104,10 @@ Doriţi să ignoraţi aceste erori pentru acest host?</translation>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2145,14 +2170,7 @@ Vă rugăm să reporniţi aplicaţia pentru a accesa documentele actualizate.</t
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Reaminteşte-mi mai târziu</translation>
     </message>
 </context>
 <context>
@@ -2190,6 +2208,14 @@ Vă rugăm să reporniţi aplicaţia pentru a accesa documentele actualizate.</t
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Încărcare pe YouTube în curs %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2265,11 +2291,11 @@ Vă rugăm să reporniţi aplicaţia pentru a accesa documentele actualizate.</t
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importare documente vechi Uniboard/Sankore</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Nu există documente care trebuie importate</translation>
     </message>
 </context>
 <context>
@@ -2730,303 +2756,601 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Afişare conţinut pagină de web intern pe ecranul secundar sau pe proiector</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Afişare multiplă</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Schimbare control afiÅŸare cu vizualizare afiÅŸare</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Mod</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Modul în care se porneşte: </translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Tablă</translation>
+        <translation>Tablă</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Desktop</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Utilizator Proxy:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Parolă:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>ID Planète Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Utilizator:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Parolă:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Credite</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Drept de autor (C) 1995-1998 Jean-loup Gailly și Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Acest software este furnizat 'ca atare', fără nicio garanție expresă sau implicită. Autorii nu vor fi ținuți responsabili, în niciun caz, pentru daunele rezultate din utilizarea acestui software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Este permis oricui să utilizeze acest, în orice scopuri, inclusiv aplicații comerciale și să îl modifice și redistribuie gratuit, sub rezerva următoarelor restricții:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. Originea acestui software nu trebuie denaturată; nu aveți voie să pretindeți că dumneavoastră ați scris software-ul original. Dacă folosiți acest software într-un produs, o declarație în documentația produsului ar fi apreciată, dar nu este obligatorie.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Versiunile modificate ale sursei trebuie precizate ca atare în mod clar și nu trebuie prezentate denaturat ca fiind software-ul original.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. Această înștiințare nu trebuie eliminată sau modificată din nicio distribuire a sursei.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré este un software gratuit: puteți să-l redistribuiți și/sau să-l modificați, respectând termenii Licenței Publice Generale Lesser GNU așa cum a fost publicată de Free Software Foundation, în versiunea 2 sau în orice versiune mai recentă. Puteți găsi codul sursă al acestui software pe </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré se distribuie în speranța că va fi util, dar FĂRĂ NICIO GARANȚIE; chiar și fără garanția implicită de COMERCIALIZARE sau de ADAPTARE PENTRU UN SCOP PARTICULAR. A se vedea Licența Publică Generală GNU de mai jos, pentru mai multe detalii.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact: <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation></translation>
     </message>
 </context>
 <context>
diff --git a/Sankore-3.1/resources/i18n/sankore_ru.ts b/Sankore-3.1/resources/i18n/sankore_ru.ts
index d37bb13..b3ac888 100644
--- a/Sankore-3.1/resources/i18n/sankore_ru.ts
+++ b/Sankore-3.1/resources/i18n/sankore_ru.ts
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Выйти из Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Редактор Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Показать редактор виджетов Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Свернуть Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Свернуть приложение Open-Sankoré</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Импортировать Uniboard документы</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Импортировать старые Sankore и Uniboard документы</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Сгруппировать</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Играть</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Взаимодействовать с элементами</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Очистить доску</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Удалить фон</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Сгруппировать</translation>
     </message>
 </context>
 <context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Корзина</translation>
+        <source>Element ID = </source>
+        <translation>ID элемента =</translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/Главная</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Не поддерживается в текущем формате.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Невозможно загрузить содержимое</translation>
+        <source>Remove Page</source>
+        <translation>Удалить Страницу</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Загрузка...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Вы уверены, что хотите удалить 1 страницу из документа '%0'?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>Все поддерживаемые типы (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Удалить страницу %1 из документа</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Страница %1 удалена</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Операции добавления файла завершена неудачей: ошибка копирования</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Сгруппировать</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Разгруппировать</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Ошибка добавления изображения в библиотеку</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Захватить изображение</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Показать Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Сделать снимок части экрана</translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Показать раб. стол на втором экране</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Показать Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation>Импортировать все изображения из папки</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>В папке нет изображений!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Удалить</translation>
     </message>
@@ -1113,10 +1144,22 @@
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
         <translation>
+            <numerusform>Вы уверены, что хотите удалить %n страницу из выбранного документа '%1'?</numerusform>
             <numerusform>Вы уверены, что хотите удалить %n страниц из выбранного документа '%1'?</numerusform>
-            <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Титульная страница</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Каталог не содержит файлов изображений</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Документы без Названия</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1145,12 +1188,20 @@
         <translation>Файл %1 сохранен</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Импорт страницы %1 из %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Добавление страницы %1 из %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Импорт успешно завершен.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Импорт файла %1 успешно завершен.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Неверные данные изображения, пропустить файл %1</translation>
+        <source>Importing file %1</source>
+        <translation>Импорт файла %1</translation>
     </message>
 </context>
 <context>
@@ -1159,6 +1210,10 @@
         <source>Page %0</source>
         <translation>Страница %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Титульная страница</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1203,9 +1258,9 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 страницы скопировано</numerusform>
+            <numerusform>%1 страниц скопировано</numerusform>
         </translation>
     </message>
 </context>
@@ -1213,34 +1268,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Загрузить файлы</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Отмена</translation>
+        <translation>Отмена</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Обнаружены предупреждения во время экспорта</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Экспорт в IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Экспортировать как IWB файл</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Экспорт документа...</translation>
+        <translation>Экспорт документа...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Экспорт успешно завершен.</translation>
+        <translation>Экспорт успешно завершен.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Ошибка экспорта.</translation>
+        <translation>Ошибка экспорта.</translation>
     </message>
 </context>
 <context>
@@ -1343,68 +1405,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Добавить на страницу</translation>
+        <translation>Добавить на страницу</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Сделать фоновым изображением</translation>
+        <translation>Сделать фоновым изображением</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Добавить в библиотеку</translation>
+        <translation>Добавить в библиотеку</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Информация об объекте</translation>
+        <translation>Информация об объекте</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Добавить в избранное</translation>
+        <translation>Добавить в избранное</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Совместный доступ</translation>
+        <translation>Совместный доступ</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Поиск</translation>
+        <translation>Поиск</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Удалить</translation>
+        <translation>Удалить</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Назад в папку</translation>
+        <translation>Назад в папку</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Удалить из избранного</translation>
+        <translation>Удалить из избранного</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Создать новую папку</translation>
+        <translation>Создать новую папку</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Пересканировать библиотеку</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Импортированные изображения</translation>
+        <translation>Импортированные изображения</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Аудио</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Видео</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Картинки</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Мультфильмы</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Интерактивные элементы</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Приложения</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Формы</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Избранное</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Веб поиск</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Корзина</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Принять</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Отмена</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Введите название новой папки</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Загрузка</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Заблокированный</translation>
+        <translation>Заблокированный</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Видимый на втором экране</translation>
+        <translation>Видимый на втором экране</translation>
     </message>
 </context>
 <context>
@@ -1437,7 +1565,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Редактируемый</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Веб</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Загрузка...</translation>
     </message>
 </context>
 <context>
@@ -1490,7 +1632,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1499,14 +1641,6 @@
         <source>Image Format (</source>
         <translation>Формат изображения (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Ошибка импорта изображения.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Импорт изображения успешно завершен.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1522,10 +1656,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Импорт страницы %1 из %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>Импорт PDF успешно завершен.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1549,121 +1679,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Добавить в избранное</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Совместный доступ</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Поиск</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Удалить</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Назад в папку</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Удалить из избранного</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Создать новую папку</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Добавить на страницу</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Сделать фоновым изображением</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Добавить в библиотеку</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Информация об объекте</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>В библиотеку добавлено 1 изображение</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Аудио</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Видео</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Картинки</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Формы</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Приложения</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Избранное</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Создать эскиз страницы для %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Ошибка добавления на страницу для элемента %1.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Интерактивные элементы</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Импортированные изображения</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Мультфильмы</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ввод</translation>
     </message>
 </context>
 <context>
@@ -1682,6 +1698,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Закрыть</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1717,37 +1740,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Добавить новую папку</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Имя новой папки:</translation>
+        <source>(copy)</source>
+        <translation>(копия)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Добавить</translation>
+        <source>Document Repository Loss</source>
+        <translation>Потеря соединения с репозиторием документов</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Отмена</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore потерял соединение с репозиторием документов '%1'. Приложение должно завершить работу, чтобы избежать повреждения данных. Также могут быть потеряны последние изменения.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(копия)</translation>
+        <source>English</source>
+        <translation>Английский</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Потеря соединения с репозиторием документов</translation>
+        <source>Russian</source>
+        <translation>Русский</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore потерял соединение с репозиторием документов '%1'. Приложение должно завершить работу, чтобы избежать повреждения данных. Также могут быть потеряны последние изменения.</translation>
+        <source>German</source>
+        <translation>Немецкий</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Французский</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Шв. французский</translation>
     </message>
 </context>
 <context>
@@ -1861,14 +1888,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Документы без названия</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Корзина</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Мои видеофайлы</translation>
     </message>
@@ -1877,33 +1896,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Учитель</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Студент</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите наименование задания сюда...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Перетащите медиа сюда...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите название сюда...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите имя ссылки сюда...</translation>
     </message>
 </context>
 <context>
@@ -1917,131 +1936,131 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите название сюда...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите комментарий сюда...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Добавить действие</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Добавить медиа</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Добавить ссылку</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Страница: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите название сессии сюда...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Автор(ы)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите авторов сюда...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Цель(и)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Введите цели сюда...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Индексирование ресурсов</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Ключи:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Введите ключи сюда...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Уровень:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Предметы:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Тип:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Лицензия</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Публичный домен</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Копирайт</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Создано:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Обновлено:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Титульная страница</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Страница: %0</translation>
     </message>
 </context>
 <context>
@@ -2085,6 +2104,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>Кэш</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Аристо</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2151,13 +2174,6 @@ Please reboot the application to access the updated documents.</source>
     </message>
 </context>
 <context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Веб</translation>
-    </message>
-</context>
-<context>
     <name>UBWebPluginWidget</name>
     <message>
         <source>Loading...</source>
@@ -2192,6 +2208,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Выполняется загрузка на YouTube %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2267,11 +2291,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Импорт старых Uniboard/Sankore документов</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Нет документов для импортирования</translation>
     </message>
 </context>
 <context>
@@ -2515,6 +2539,10 @@ p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">Нажав "Загрузить", вы подтверждаете, что обладаете всеми правами на данное содержимое, или что вы были уполномочены владельцем на публикацию данного содержимого на YouTube, или что иным образом удовлетворяете требованиям Условий предоставления услуг YouTube, размещенных по адресу </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>brushProperties</name>
@@ -2732,278 +2760,529 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Показать содежимое веб страницы на втором мониторе</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Несколько монитров</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Инвертировать первый и второй монитор</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Режим</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Режим при загрузке:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Доска</translation>
+        <translation>Доска</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Десктоп</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Прокси пользователь:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Пароль:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Планета Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Пользователь:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Пароль:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Содержание</translation>
     </message>
-    <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+        <source>Restore credentials on reboot  </source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
-    <message utf8="true">
+    <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3011,12 +3290,11 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
@@ -3024,10 +3302,51 @@ p, li { white-space: pre-wrap; }
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_sk.ts b/Sankore-3.1/resources/i18n/sankore_sk.ts
index 4dc5c10..f7225e1 100644
--- a/Sankore-3.1/resources/i18n/sankore_sk.ts
+++ b/Sankore-3.1/resources/i18n/sankore_sk.ts
@@ -12,7 +12,7 @@
     <name>DownloadDialog</name>
     <message>
         <source>0 Items</source>
-        <translation>0 objektov</translation>
+        <translation>0 položiek</translation>
     </message>
     <message>
         <source>Clean Up</source>
@@ -20,7 +20,7 @@
     </message>
     <message>
         <source>Downloads</source>
-        <translation>Stiahnutia</translation>
+        <translation>Na stiahnutie</translation>
     </message>
 </context>
 <context>
@@ -54,15 +54,15 @@
     </message>
     <message>
         <source>Author</source>
-        <translation>Auteur</translation>
+        <translation>Autor</translation>
     </message>
     <message>
         <source>Description</source>
-        <translation>Description</translation>
+        <translation>Popis</translation>
     </message>
     <message>
         <source>Publish Podcast to YouTube</source>
-        <translation>Publier le Podcast sur YouTube</translation>
+        <translation>Publikovať podcast na YouTube</translation>
     </message>
 </context>
 <context>
@@ -73,7 +73,7 @@
     </message>
     <message>
         <source>Del</source>
-        <translation>Del</translation>
+        <translation>Vymazať</translation>
     </message>
     <message>
         <source>Cut</source>
@@ -89,6 +89,7 @@
     </message>
     <message>
         <source>Back</source>
+        <translatorcomment>oproti reťazcu ďalšia strana</translatorcomment>
         <translation>Predošlá</translation>
     </message>
     <message>
@@ -117,6 +118,7 @@
     </message>
     <message>
         <source>Next</source>
+        <translatorcomment>strana</translatorcomment>
         <translation>Ďalšia</translation>
     </message>
     <message>
@@ -197,7 +199,7 @@
     </message>
     <message>
         <source>Put Presentation to Sleep</source>
-        <translation>Pozastaviť prezentáciu</translation>
+        <translation>Uspať prezentáciu</translation>
     </message>
     <message>
         <source>New Document</source>
@@ -205,7 +207,7 @@
     </message>
     <message>
         <source>Plain Dark Background</source>
-        <translation>Čisté tmavé pozadie</translation>
+        <translation>Úplne tmavé pozadie</translation>
     </message>
     <message>
         <source>Podcast Config</source>
@@ -261,7 +263,7 @@
     </message>
     <message>
         <source>Scroll Page</source>
-        <translation>Posunúť stránku</translation>
+        <translation>Posunúť sa po stránke</translation>
     </message>
     <message>
         <source>Small Line</source>
@@ -377,7 +379,7 @@
     </message>
     <message>
         <source>Trap Flash Content</source>
-        <translation>Označiť obsah Flashu</translation>
+        <translation>Označiť obsah vo Flashi</translation>
     </message>
     <message>
         <source>Import</source>
@@ -425,7 +427,7 @@
     </message>
     <message>
         <source>Laser Pointer</source>
-        <translation>Laserové ukazovadlko</translation>
+        <translation>Laserové ukazovadlo</translation>
     </message>
     <message>
         <source>Wide Size (16/9)</source>
@@ -441,7 +443,7 @@
     </message>
     <message>
         <source>Duplicate Selected Content</source>
-        <translation>Duplikovať vybrané</translation>
+        <translation>Duplikovať vybraný obsah</translation>
     </message>
     <message>
         <source>Bookmarks</source>
@@ -457,7 +459,7 @@
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation>Nahrať staré dokumenty Sankoré 3.1 alebo dokumenty Uniboard</translation>
+        <translation>Nahrať staré dokumenty Sankoré alebo Uniboard</translation>
     </message>
     <message>
         <source>Zoom Out</source>
@@ -497,7 +499,7 @@
     </message>
     <message>
         <source>Add Selected Content to Open Document</source>
-        <translation>Pridať vybrané do otvoreného dokumentu</translation>
+        <translation>Pridať vybraný obsah do otvoreného dokumentu</translation>
     </message>
     <message>
         <source>Virtual Keyboard</source>
@@ -581,7 +583,7 @@
     </message>
     <message>
         <source>Delete Selected Content</source>
-        <translation>Vymazať vybrané</translation>
+        <translation>Vymazať vybraný obsah</translation>
     </message>
     <message>
         <source>Add Item To New Page</source>
@@ -601,7 +603,7 @@
     </message>
     <message>
         <source>Capture Embeddable Web Content</source>
-        <translation>Zachytiť internetový obsah, ktorý sa dá vložiť</translation>
+        <translation>Označiť obsah z internetu, ktorý sa dá vložiť</translation>
     </message>
     <message>
         <source>Write Text</source>
@@ -745,7 +747,7 @@
     </message>
     <message>
         <source>Capture a Window</source>
-        <translation>Zachytiť okno</translation>
+        <translation>Označiť okno</translation>
     </message>
     <message>
         <source>Virtual Laser Pointer</source>
@@ -753,7 +755,7 @@
     </message>
     <message>
         <source>Plain Light Background</source>
-        <translation>Čisté svetlé pozadie</translation>
+        <translation>Úplne svetlé pozadie</translation>
     </message>
     <message>
         <source>Add Item To Library</source>
@@ -777,7 +779,7 @@
     </message>
     <message>
         <source>Add to Working Document</source>
-        <translation>Pridať do dokumentu, ktorý sa práve upravuje</translation>
+        <translation>Pridať do aktuálneho dokumentu</translation>
     </message>
     <message>
         <source>Highlight </source>
@@ -800,12 +802,28 @@
         <translation>Vymazať anotáciu</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Zoskupiť položky</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Prehrať</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Manikulovať s položkami</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Vygumovať pozadie</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Odstrániť pozadie</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Zoskupiť</translation>
     </message>
 </context>
 <context>
@@ -835,7 +853,7 @@
     </message>
     <message>
         <source>Proxy Authentication</source>
-        <translation>Prihlásenie sa na proxy</translation>
+        <translation>Prihlásenie na proxy</translation>
     </message>
     <message>
         <source>Password:</source>
@@ -849,25 +867,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation type="unfinished">/Home</translation>
+        <source>Element ID = </source>
+        <translation>ID prvku =</translation>
     </message>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished">Kôš</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Obsah nie je podporovaný v cieľovom formáte.</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Loading ...</source>
-        <translation>Nahráva sa...</translation>
+        <source>Remove Page</source>
+        <translation>Odstrániť stránku</translation>
     </message>
     <message>
-        <source>Cannot load content</source>
-        <translation>Súbor sa nedá spustiť</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Ste si istý, že chcete odstrániť 1 stránku z vybraného dokumentu '%0'?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +943,26 @@
         <source>Download finished</source>
         <translation>Sťahovanie bolo dokončené</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Vymazať stránku %1 z dokumentu</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Stránka %1 zmazaná</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Operácia pridať súbor  sa nepodarila: chyba kopírovania súboru</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Zoskupiť</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Oddeliť</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +970,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Chyba pri pridávaní obrázka do knižnice</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>Označený obrázok</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -969,7 +1006,7 @@
     </message>
     <message>
         <source>Capture the Screen</source>
-        <translation>Skopírovať obrazovku</translation>
+        <translation>Označiť obrazovku</translation>
     </message>
     <message>
         <source>Show the stylus palette</source>
@@ -977,24 +1014,20 @@
     </message>
     <message>
         <source>Capture Part of the Screen</source>
-        <translation>Skopírovať časť obrazovky</translation>
-    </message>
-    <message>
-        <source>Show Uniboard</source>
-        <translation>Zobraziť Uniboard</translation>
+        <translation>Označiť časť obrazovky</translation>
     </message>
     <message>
         <source>Show Board on Secondary Screen</source>
         <translation>Zobraziť tabuľu na druhej obrazovke</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Zobraziť Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>V priečinku nie je žiaden súbor obrázka!</translation>
-    </message>
-    <message>
         <source>Empty</source>
         <translation>Vyprázdniť</translation>
     </message>
@@ -1118,6 +1151,18 @@
         <source>Add Pages from File</source>
         <translation>Pridať stránky zo súboru</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titulná stránka</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Priečinok neobsahuje žiadne obrázkové súbory</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Dokumenty bez názvu</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1130,10 +1175,6 @@
         <translation>objekty</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Chybné údaje o obrázku, preskakuje sa súbor %1</translation>
-    </message>
-    <message>
         <source>images</source>
         <translation>obrázky</translation>
     </message>
@@ -1150,8 +1191,20 @@
         <translation>Súbor %1 bol uložený</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Nahráva sa stránka %1 z(o) %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Vloženie stránky %1 z %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Import bol úspešný.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Import súboru %1 bol úspešný.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>Import súboru %1</translation>
     </message>
 </context>
 <context>
@@ -1160,6 +1213,10 @@
         <source>Page %0</source>
         <translation>Stránka %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titulná stránka</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1215,34 +1272,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Sťahujú sa súbory</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Zrušiť</translation>
+        <translation>Zrušiť</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Počas exportu sa vyskytli varovania</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportovať do IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportovať ako súbor IWB</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Exportuje sa dokument...</translation>
+        <translation>Exportuje sa dokument...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Export bol úspešne dokončený.</translation>
+        <translation>Export bol úspešný.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Export sa nepodaril.</translation>
+        <translation>Export sa nepodaril.</translation>
     </message>
 </context>
 <context>
@@ -1345,68 +1409,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Pridať na stránku</translation>
+        <translation>Pridať na stránku</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Nastaviť ako pozadie</translation>
+        <translation>Nastaviť ako pozadie</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Pridať do knižnice</translation>
+        <translation>Pridať do knižnice</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Informácie o objekte</translation>
+        <translation>Informácie o objekte</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Ajouter au favoris</translation>
+        <translation>Pridať do obľúbených položiek</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Partager</translation>
+        <translation>Podeliť sa</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished"></translation>
+        <translation>Vyhľadať</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Vymazať</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Retour au répertoire</translation>
+        <translation>Späť do priečinka</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Supprimer des favoris</translation>
+        <translation>Odstrániť z obľúbených položiek</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Créer un nouveau dossier</translation>
+        <translation>Vytvoriť nový priečinok</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Znova prejsť systém súborov</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">NahranýObrázok</translation>
+        <translation>NahranýObrázok</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Audionahrávky</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmy</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Obrázky</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animácie</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interaktívne objekty</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Aplikácie</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Geometrické útvary</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Obľúbené</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Vyhľadávanie na webe</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Kôš</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Prijať</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Zrušiť</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Zadajte názov nového priečinka</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Nahrávanie</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">Zamknuté</translation>
+        <translation>Zamknuté</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Vidieť to na rozšírenej obrazovke</translation>
+        <translation>Vidieť to na rozšírenej obrazovke</translation>
     </message>
 </context>
 <context>
@@ -1439,7 +1569,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Dá sa upraviť</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Nahráva sa...</translation>
     </message>
 </context>
 <context>
@@ -1465,7 +1609,7 @@
     </message>
     <message>
         <source>Import of file %1 failed.</source>
-        <translation>Nahrávanie súborur %1 sa nepodarilo.</translation>
+        <translation>Nahrávanie súboru %1 sa nepodarilo.</translation>
     </message>
     <message>
         <source>Common File Format (</source>
@@ -1492,7 +1636,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1501,14 +1645,6 @@
         <source>Image Format (</source>
         <translation>Súbor obrázka (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Nepodarilo sa nahrať obrázok.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Obrázok bol úspešne nahraný.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1517,10 +1653,6 @@
         <translation>Nahrávanie do PDF zlyhalo.</translation>
     </message>
     <message>
-        <source>PDF import successful.</source>
-        <translation>Nahrávanie do PDF bolo úspešne dokončené.</translation>
-    </message>
-    <message>
         <source>Importing page %1 of %2</source>
         <translation>Nahráva sa stránka %1 z(o) %2</translation>
     </message>
@@ -1551,121 +1683,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Share</source>
-        <translation>Partager</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Retour au répertoire</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Supprimer des favoris</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Supprimer</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Rechercher</translation>
-    </message>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Ajouter au favoris</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Créer un nouveau dossier</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Object informations</source>
-        <translation>Informácie o objekte</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Pridať do knižnice</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Nastaviť ako pozadie</translation>
-    </message>
-    <message>
-        <source>Add to page</source>
-        <translation>Pridať na stránku</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Vytvára sa miniatúra obrázka %1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Na stránku sa nepodarilo pridať %1.</translation>
-    </message>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>Do knižnice bol pridaný 1 obrázok</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>NahranýObrázok</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation type="unfinished">Zvuky</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation type="unfinished">Filmy</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation type="unfinished">Obrázky</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation type="unfinished">Geometrické útvary</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation type="unfinished">Aplikácie</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation type="unfinished">Obľúbené</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation type="unfinished">Interaktívne</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation type="unfinished">Animácie</translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1684,6 +1702,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Zatvoriť</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source>No</source>
@@ -1719,25 +1744,6 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add</source>
-        <translation>Pridať</translation>
-    </message>
-    <message>
-        <source>New Folder name:</source>
-        <translation>Názov nového priečinka:</translation>
-    </message>
-    <message>
-        <source>Cancel</source>
-        <translation>Zrušiť</translation>
-    </message>
-    <message>
-        <source>Add new folder</source>
-        <translation>Pridať nový priečinok</translation>
-    </message>
-</context>
-<context>
     <name>UBPersistenceManager</name>
     <message>
         <source>(copy)</source>
@@ -1753,13 +1759,36 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     </message>
 </context>
 <context>
-    <name>UBPodcastController</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>Full</source>
-        <translation>Plná veľkosť</translation>
+        <source>English</source>
+        <translation>Angličtina</translation>
     </message>
     <message>
-        <source>Small</source>
+        <source>Russian</source>
+        <translation>Ruština</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Nemčina</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Francúzština</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Švajčiarská francúzština</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Full</source>
+        <translation>Plná veľkosť</translation>
+    </message>
+    <message>
+        <source>Small</source>
         <translation>Malá veľkosť</translation>
     </message>
     <message>
@@ -1819,7 +1848,7 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     <name>UBPreferencesController</name>
     <message>
         <source>version: </source>
-        <translation>Verzia: </translation>
+        <translation>verzia: </translation>
     </message>
     <message>
         <source>Marker is pressure sensitive</source>
@@ -1834,7 +1863,7 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     </message>
     <message>
         <source>Proxy Login</source>
-        <translation>Prihl. meno na proxy</translation>
+        <translation>Prihlásenie na proxy</translation>
     </message>
     <message>
         <source>Username:</source>
@@ -1863,49 +1892,41 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Trash</source>
-        <translation>Kôš</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Moje filmy</translation>
     </message>
-    <message>
-        <source>Untitled Documents</source>
-        <translation>Dokumenty bez názvu</translation>
-    </message>
 </context>
 <context>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Učiteľ</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Å tudent</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Úlohu napíšte sem...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>multimediálny obsah pustite tu...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nadpis napíšte sem...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nadpis odkazu vložte sem...</translation>
     </message>
 </context>
 <context>
@@ -1919,131 +1940,131 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nadpis napíšte sem...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Komentár napíšte sem...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Pridať akciu</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Pridajte médium</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Pridať odkaz</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Stránka: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nadpis session napíšte sem...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Autori(i)</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Mená autorov napíšte sem...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Ciele</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Ciele napíšte sem...</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Indexovanie zdrojov</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Kľúčové slová:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Kľúčové slová napíšte sem...</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Úroveň:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Predmety:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licencia</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Verejná doména</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Autorské práva</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Vytvorené dňa:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Aktualizované dňa:</translation>
     </message>
     <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Titulné stránka</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Stránka: %0</translation>
     </message>
 </context>
 <context>
@@ -2087,6 +2108,10 @@ Chcete ignorovať tieto chyby na tomto serveri?</translation>
         <source>Magnifier</source>
         <translation>Lupa</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2149,14 +2174,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Web</translation>
+        <translation>Pripomenúť mi neskôr</translation>
     </message>
 </context>
 <context>
@@ -2170,7 +2188,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     <name>UBWebPublisher</name>
     <message>
         <source>Publish Document on Sankore Web</source>
-        <translation>Publikovať dokumenty na stránku Sankoré</translation>
+        <translation>Publikovať dokument na webe Sankoré</translation>
     </message>
 </context>
 <context>
@@ -2194,6 +2212,14 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Prebieha nahrávanie na YouTube %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation type="unfinished">OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2203,11 +2229,11 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>People & Blogs</source>
-        <translation>Ľudia &a blogy</translation>
+        <translation>Ľudia a blogy</translation>
     </message>
     <message>
         <source>Nonprofits & Activism</source>
-        <translation>Neziskovky &a aktivisti</translation>
+        <translation>Neziskovky a aktivisti</translation>
     </message>
     <message>
         <source>Comedy</source>
@@ -2227,11 +2253,11 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Science & Technology</source>
-        <translation>Veda &a technika</translation>
+        <translation>Veda a technika</translation>
     </message>
     <message>
         <source>Howto & Style</source>
-        <translation>Návody &a štýl</translation>
+        <translation>Návody a štýl</translation>
     </message>
     <message>
         <source>Education</source>
@@ -2243,19 +2269,19 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Travel & Events</source>
-        <translation>Cestovanie &a udalosti</translation>
+        <translation>Cestovanie a udalosti</translation>
     </message>
     <message>
         <source>News & Politics</source>
-        <translation>Správy &a politika</translation>
+        <translation>Správy a politika</translation>
     </message>
     <message>
         <source>Pets & Animals</source>
-        <translation>Domáce &a iné zvieratá</translation>
+        <translation>Domáce a iné zvieratá</translation>
     </message>
     <message>
         <source>Autos & Vehicles</source>
-        <translation>Nákladné &a osobné autá</translation>
+        <translation>Nákladné a osobné autá</translation>
     </message>
 </context>
 <context>
@@ -2273,7 +2299,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation>Nahrať staré dokumenty vo formáte Uniboard alebo Sankoré</translation>
+        <translation>Nahrať staré dokumenty Uniboard/Sankoré</translation>
     </message>
 </context>
 <context>
@@ -2299,11 +2325,11 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>- %4 %5 remaining</source>
-        <translation>- zostáva %4 %5 </translation>
+        <translation>– zostáva %4 %5 </translation>
     </message>
     <message>
         <source>minutes</source>
-        <translation>minút</translation>
+        <translation>minút(y)</translation>
     </message>
     <message>
         <source>Error opening saved file: %1</source>
@@ -2323,7 +2349,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>%1 of %2 - Stopped</source>
-        <translation>%1 z(o) %2 - zastavené</translation>
+        <translation>%1 z(o) %2 – zastavené</translation>
     </message>
     <message>
         <source>Save File</source>
@@ -2340,7 +2366,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     <message>
         <source>?</source>
         <comment>unknown file size</comment>
-        <translation type="unfinished">?</translation>
+        <translation>?</translation>
     </message>
 </context>
 <context>
@@ -2352,7 +2378,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     <message>
         <source>%1 Downloads</source>
         <comment>always >= 2</comment>
-        <translation type="unfinished">%1 stiahnutie (stiahnutí)</translation>
+        <translation>%1 stiahnutí (-ia)</translation>
     </message>
 </context>
 <context>
@@ -2363,7 +2389,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Address</source>
-        <translation>Adresse</translation>
+        <translation>Adresa</translation>
     </message>
 </context>
 <context>
@@ -2374,7 +2400,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>Earlier Today</source>
-        <translation>na začiatku tohto dňa</translation>
+        <translation>dnes skoro ráno</translation>
     </message>
 </context>
 <context>
@@ -2408,7 +2434,7 @@ Znova spustite aplikáciu, aby ste mohli pracovať s aktualizovanými dokumentmi
     </message>
     <message>
         <source>New &Tab</source>
-        <translation>Novál &karta</translation>
+        <translation>Nová &karta</translation>
     </message>
 </context>
 <context>
@@ -2615,7 +2641,7 @@ p, li { white-space: pre-wrap; }
     <name>documents</name>
     <message>
         <source>Uniboard Documents</source>
-        <translation>Documenty Uniboard</translation>
+        <translation>Dokumenty Uniboard</translation>
     </message>
 </context>
 <context>
@@ -2694,7 +2720,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Home Page:</source>
-        <translation>Domovská stránka:</translation>
+        <translation>Úvodná stránka:</translation>
     </message>
     <message>
         <source>Check software update at launch</source>
@@ -2738,298 +2764,1033 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Viac obrazoviek</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Na druhej obrazovke alebo projektore zobraziť obsah internej webovej stránky</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Prehodiť ovládaciu obrazovku a zobrazovaciu obrazovku</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Režim</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Počiatočný režim:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Tabuľa</translation>
+        <translation>Tabuľa</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Pracovná plocha</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Použ. m. na proxy:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Heslo:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>ID na Planétu Sankoré</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Použ. m.:</translatorcomment>
+        <translation></translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Heslo:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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.
+
+                     KONIEC PODMIENOK</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Poďakovanie</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly a Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Tento softvér je poskytovaný „tak, ako je“, teda bez akejkoľvek výslovnej alebo predpokladanej záruky. V žiadnom prípade jeho autori nenesú zodpovednosť za akékoľvek škody vyplývajúce z používania tohto softvéru.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> Povolenie používať tento softvér sa udeľuje komukoľvek a na akýkoľvek účel, vrátane komerčných aplikácií, rovnako ako aj meniť ho a ďalej slobodne šíriť, okrem nasledujúcich obmedzení:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 1. Pôvod tohto softvéru nesmie byť skreslený; nesmiete tvrdiť, že ste naprogramovali originálny softvér. Ak tento softvér použijete v nejakom produkte, uznanie softvérui v dokumentácii k produktu by bolo vítané, avšak nie je nutné.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 2. Pozmenené zdrojové verzie sa musia jasne označiť ako pozmenené a nesmú sa vydávať za originálny softvér.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 3. Toto upozornenie sa nesmie odstrániť ani pozmeniť v žiadnej distribúcii zdroja.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré verzia 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankore je voľne šírený softvér: môžete ho šíriť a/alebo modifikovať podľa podmienok spoločnosti Lesser GNU General Public License, vydávaných nadáciou Free Software Foundation, a to buď verziu 2 tejto licencie, alebo ktorúkoľvek vyššiu verziu. Na tejto stránke môžete nájsť zdrojový kód tohto softvéru</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré sa rozširuje v nádeji, že bude užitočný, ale BEZ AKEJKOĽVEK ZÁRUKY; dokonca aj bez predpokladanej záruky PREDAJNOSTI alebo VHODNOSTI PRE URČITÝ ÚČEL. Viac podrobností nájdete v podmienkach spoločnosti Lesser GNU General Public License nižšie.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -3037,7 +3798,7 @@ p, li { white-space: pre-wrap; }
     <name>trapFlashDialog</name>
     <message>
         <source>Trap flash</source>
-        <translation>Skopírovať obsah flashu</translation>
+        <translation>Skopírovať obsah vo flashi</translation>
     </message>
     <message>
         <source>Select a flash to trap</source>
diff --git a/Sankore-3.1/resources/i18n/sankore_sv.ts b/Sankore-3.1/resources/i18n/sankore_sv.ts
index a6a7e8b..c776481 100644
--- a/Sankore-3.1/resources/i18n/sankore_sv.ts
+++ b/Sankore-3.1/resources/i18n/sankore_sv.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="sv_SE">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Öppna Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Lämna öppen Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Öppna Sankoré editor</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Visa öppne Sankoré widgets editor</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Göm öppen Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>Göm öppen Sankoré applikation</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importera Uniboard dokument</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importera gamla Sankoré eller Unibord dokument</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>Gruppobjekt</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>Spela</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Interagera med objekt</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Radera bakgrund</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Ta bort bakgrund</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grupp</translation>
     </message>
 </context>
 <context>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>Papperskorg</translation>
+        <source>Element ID = </source>
+        <translation>Element ID=</translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>Hem</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>Innehållet stöds inte i destinationsformatet</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>Kan inte ladda innehåll</translation>
+        <source>Remove Page</source>
+        <translation>Ta bort sida</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>Laddar ...</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Är du säker på att du vill ta bort 1 sida från det valda dokumentet '%0'?</translation>
     </message>
 </context>
 <context>
@@ -930,6 +941,27 @@
         <source>All Supported (%1)</source>
         <translation>Alla stöds (%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>Radera sida %1 från dokument</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>Sida %1 raderad</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Lägg till fil åtgärd misslyckad: filkopieringsfel</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translatorcomment>Verb our a noun? Next segement is Ungorup = verb. If "Group" is a verb it should be "Gruppera" in sv.</translatorcomment>
+        <translation>Grupp</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Avgruppera</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +969,10 @@
         <source>Error Adding Image to Library</source>
         <translation>Fel vid lägg bild bibliotek </translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>FÃ¥ngadBild</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -964,10 +1000,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>Visa Uniboard</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>Fånga en del av skärmen</translation>
     </message>
@@ -987,6 +1019,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>Visa skrivbordet på den sekundära skärmen</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Visa öppen-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1111,6 @@
         <translation>Importera amm bilder från mapp</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>Mappen innehåller inga bildfiler!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>Radera</translation>
     </message>
@@ -1112,10 +1144,23 @@
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>Är du säker på att du vill ta bort mapp %n sida/sidor från det makrerade dokumentet '%1'?</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titelsida</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Foldern innehåller inga bildfiler</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Namnlösa dokument</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1189,20 @@
         <translation>Fil %1 sparad</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>Importerar sida %1 av %2</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>Infoga sida %1 av %2</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>Import lyckades.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>Import av fil %1 lyckades.</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>Fel på bild data, hoppar över fil %1</translation>
+        <source>Importing file %1</source>
+        <translation>Importerar fil %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1211,10 @@
         <source>Page %0</source>
         <translation>Sida %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>Titelsida</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,7 +1259,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
+        <translation>
+            <numerusform>%1 sidor kopierade</numerusform>
             <numerusform></numerusform>
         </translation>
     </message>
@@ -1211,34 +1269,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>Hämtning av filer</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">Avsluta</translation>
+        <translation>Avsluta</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Varningar unde export dök upp</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>Exporter till IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>Exportera som IWB-fil</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">Exporterar dokument...</translation>
+        <translation>Exporterar dokument...</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">Export lyckades.</translation>
+        <translation>Export lyckades.</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">Export misslyckades.</translation>
+        <translation>Export misslyckades.</translation>
     </message>
 </context>
 <context>
@@ -1341,68 +1406,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">Lägg till sida</translation>
+        <translation>Lägg till sida</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">Infoga som bakgrund</translation>
+        <translation>Infoga som bakgrund</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">Lägg till bibliotek</translation>
+        <translation>Lägg till bibliotek</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">Objekt information</translation>
+        <translation>Objektinformation</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">Lägg till favoriter</translation>
+        <translation>Lägg till favoriter</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">Dela</translation>
+        <translation>Dela</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">Sök</translation>
+        <translation>Sök</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">Radera</translation>
+        <translation>Radera</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">Tillbaka till mapp</translation>
+        <translation>Tillbaka till mapp</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">Ta bort från favoriter</translation>
+        <translation>Ta bort från favoriter</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">Skapa ny mapp</translation>
+        <translation>Skapa ny mapp</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Scanna filsystemet igen</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">Importeradbild</translation>
+        <translation>ImporteradBild</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Ljudspår</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Filmer</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Foton</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animationer</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Interaktiviteter</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Applikationer</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Former</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Favoriter</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>webbsökning</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Papperskorg</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Acceptera</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avsluta</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Ange ett nytt mappnamn</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Laddar</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">LÃ¥st</translation>
+        <translation>LÃ¥st</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">Synlig på utvidgad skärm</translation>
+        <translation>Synlig på utvidgad skärm</translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1566,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>Redigerbar</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Nät</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Laddar ...</translation>
     </message>
 </context>
 <context>
@@ -1488,7 +1633,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Öppen Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1642,6 @@
         <source>Image Format (</source>
         <translation>Bild format (</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>Import av bild misslyckades.</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>Import av bild lyckades.</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,10 +1657,6 @@
         <source>Importing page %1 of %2</source>
         <translation>Importerar sida %1 av %2</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>PDF import lyckad.</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
@@ -1547,121 +1680,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>Lägg till favoriter</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>Dela</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>Sök</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>Radera</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>Tillbaka till mapp</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>Ta bort från favoriter</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>Skapa ny mapp</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>Lägg till sida</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>Infoga som bakgrund</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>Lägg till bibliotek</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>Objekt information</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>1 bild lades till bildbiblioteket</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>Ljudspår</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>Filmer</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>Foton</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>Former</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>Applikationer</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>Favorit</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>Skapar miniatyrbild för%1.</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>Lägga till sida för objekt  %1.</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>Interaktiviteter</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>Importeradbild</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>Animationer</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>Enter</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1699,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Stäng</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1715,37 +1741,41 @@ Vill du ignorera felen för den här värden?</translation>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>Lägg till ny mapp</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>Nytt foldernamn:</translation>
+        <source>(copy)</source>
+        <translation>(kopiera)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>Lägg till</translation>
+        <source>Document Repository Loss</source>
+        <translation>Dokumentarkiv förlust</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>Avsluta</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore har förlorat access till dokumentarkiv '%1'. Tyvärr måste programmet stängas ner för att undvika korruption av data. De senaste ändringarna kan gå förlorade.</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(kopiera)</translation>
+        <source>English</source>
+        <translation>Engelska</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>Dokumentarkiv förlust</translation>
+        <source>Russian</source>
+        <translation>Ryska</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore har förlorat access till dokumentarkiv '%1'. Tyvärr måste programmet stängas ner för att undvika korruption av data. De senaste ändringarna kan gå förlorade.</translation>
+        <source>German</source>
+        <translation>Tyska</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Franska</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>Schweizisk franska</translation>
     </message>
 </context>
 <context>
@@ -1859,14 +1889,6 @@ Vill du ignorera felen för den här värden?</translation>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>Namnlösa dokument</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>Papperskorg</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>Mina filmer</translation>
     </message>
@@ -1875,33 +1897,33 @@ Vill du ignorera felen för den här värden?</translation>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>Lärare</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>Student</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Ange uppgift här ...</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>släpp media här ...</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv titel här...</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>Infoga länktitel här...</translation>
     </message>
 </context>
 <context>
@@ -1915,131 +1937,131 @@ Vill du ignorera felen för den här värden?</translation>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv titel här ...</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv kommentar här ...</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>Lägg en åtgärd</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>Lägg till media</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>Lägg till en länk</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Sida: %0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Skriv sessionstyp här ...</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>Författare</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Ange författare här ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>MÃ¥l</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Ange målen här</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>Resursindexering</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nyckeord:</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Ange nyckelord här</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nivå:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Ämnen:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>Licens</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>Erkännande CC BY</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Erkännande-Inga bearbetningar CC BY-ND</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Erkännande-Dela lika CC BY-SA</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>Erkännande-NonCommercial CC BY-NC</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>Erkännande-Icke kommersiell-Inga bearbetningar CC BY-NC-ND</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>Erkännande-Icke kommersiell-Dela lika CC BY-NC-SA</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>Allmän egendom</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>Upphovsrätt</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Skapad den:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Uppdaterard den:</translation>
     </message>
     <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>Titelsida</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>Sida: %0</translation>
     </message>
 </context>
 <context>
@@ -2083,6 +2105,10 @@ Vill du ignorera felen för den här värden?</translation>
         <source>Cache</source>
         <translation>Cache</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2145,14 +2171,7 @@ Vänligen starta om programmet för att komma åt uppdaterade dokument.</transla
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>Nät</translation>
+        <translation>PÃ¥minn mig senare</translation>
     </message>
 </context>
 <context>
@@ -2190,6 +2209,14 @@ Vänligen starta om programmet för att komma åt uppdaterade dokument.</transla
         <source>Upload to YouTube in progress %1 %</source>
         <translation>Uppladdning till YouTube pågår %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Öppna-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>ÖppnaSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2265,11 +2292,11 @@ Vänligen starta om programmet för att komma åt uppdaterade dokument.</transla
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>Importera gamla Unibord/Sankoré dokument</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>Det finns inga dokument som skall importeras</translation>
     </message>
 </context>
 <context>
@@ -2730,302 +2757,585 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Öppna Sankoré</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>Visa innehåll för intern webbsida på den sekundära skärmen eller projektor</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>Visa flera</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>Byt kontrollskärm och visa skärm</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>Läge</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>Startläge</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">Tavla</translation>
+        <translation>Tavla</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrivbord</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy användare:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>Lösenord:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>Planet Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Användare:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>Lösenord:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>Poäng</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_tr.ts b/Sankore-3.1/resources/i18n/sankore_tr.ts
new file mode 100644
index 0000000..13c8d1b
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_tr.ts
@@ -0,0 +1,3966 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tr_TR">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>Uygylamaya Geri Dönmek için Tıklayın</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>Ä°ndirilenler</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>Temizle</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>Kalem</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>Gönderen</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Dosya Adı</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>Yeniden Dene</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>Durdur</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>Aç</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Kaydı YouTube'da Yayınla</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Başlık</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Açıklama</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Yazar</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>Tahta</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>Dökümanlar</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>Tanıtım</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>Kalem</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>Arkaplanlar</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>Arkaplanı Değiştir</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Geri Al</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Yeniden</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>Önceki</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>Önceki Sayfa</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>SyYukari</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Sonraki</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>Sonraki Sayfa</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>SyAşağı</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>Dökümanları Yönet</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>Web Gezintisi</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Çık</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>Geri</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Sol</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>Ä°leri</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>SaÄŸ</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>Yeniden Yükle</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>Ana Sayfa</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>Sık Kullanılanlar</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>Sık Kullanılan</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>Sil</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>Seçenekler</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>Kütüphane</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>Masaüstünü Göster</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>Daha Büyük</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>Daha Küçük</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>Yeni Klasör</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>Yeni Döküman</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>Dışarı Aktar</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>Tahta da Aç</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>Kopyala</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Sil</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Sil</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>Aktif Dökümana Ekle</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>Seçili İçeriği Aktif Dökümana Ekle</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>Ekle</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Yeniden Adlandır</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Araçlar</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>Çoklu Ekran</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>GeniÅŸ Ekran Boyutu (16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>Nprmal Ekran Boyutu (4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>Özel Ekran Boyutu</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>Yüklemeyi Durdur</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>Kes</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>Kopyala</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>Yapıştır</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>Uyut</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Sanal Klavye</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>Sade Açık Arkaplan</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Açık</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>Açık Izgara Arkaplan</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>Sade Kapalı Arkaplan</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Kapalı</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>Kapalı Izgara Arkaplan</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Ekran Kaydı</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>Kayıt</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>Ekran Kaydını Başlat</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>Kalemleri Sil</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>Açıklamaları Sil</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>Sayfayı Temizle</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Dolmakalem</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>Tanıtımı aç</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>Güncellemeleri Denetle</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>Silgi</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Fosforlu Kalem</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>Seçici</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>El</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>Yakınlaştır</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>Uzaklaştır</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Çizgi</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>Ufak Çizgi</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>Normal Çizgi</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>Kalın Çizgi</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>Küçük Silgi</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>Normal Silgi</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>Büyük Silgi</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Renkler</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>Mevcut Sayfayı Yeniden Yükle</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>Ana Sayfayı Yükle</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>Sık Kullanılanları Göster</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>Sık Kullanılana Ekle</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>Tahtayı Göster</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>İçeriği Sil</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>Seçenekleri Göster</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>Kütüphaneyi Göster</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>Bilgisayar Masaüstünü Göster</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>Yeni Klasör Oluştur</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>Yeni Döküman Oluştur</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>Dökümanı İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>Dökümanı Dışa Aktar</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>Sayfayı Tahtada Aç</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>Seçili İçeriği Çoğalt</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>Seçili İçeriği Sil</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>İçeriği Dökümana Ekle</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>İçeriği Yeniden Adlandır</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>Araçları Göster</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>Dökümanı Geniş Boy Olarak Kullan (16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>Dökümanı Normal Boy Olarak Kullan (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>Özel Döküman Boyutu Kullan</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>Web Sayfasını Yüklemeyi Durdur</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>Sunumu Uyku Moduna Al</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>Sanal Klavyeyi Göster</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>Sunumu Video Olarak Kaydet</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>Tüm  Kalemleri Sil</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>Tüm Açıklamaları Sil</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>Tüm Öğeleri Sil</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>Dökümana Açıklama Gir</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>Açıklamayı Sil</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>Vurgu</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>Objeyi Seç ve Değiştir</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>Sayfayı Kaydır</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>Lazer İşaretçi</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>Sanal Lazer İşaretçi</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>Çizgi Çiz</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Metin</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>Metin Yaz</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>Yakala</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>Mevcut Sayfaya Ekle</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>Kalemleri Mevut Sayfaya Ekle</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>Yeni Sayfaya Ekle</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>Kalemleri Yeni Sayfaya Ekle</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>Kütüphaneye Ekle</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>Kalemi Kütüphaneye Ekle</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>Sayfalar</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>Yeni Sayfa OluÅŸtur</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>Yeni Sayfa</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>Sayfayı Çoğalt</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>Mevcut Sayfayı Çoğalt</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>Sayfayı İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>Harici Sayfayı İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>Durdur</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>Ekran Kaydını Durdur</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Ekran Kayıt Ayarları</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Ekran Kaydını Ayarla</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Flash Tuzağı</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>Flash İçeriğini Yakala</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>Webi Tuzağı</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>Web İçeriğini Yakala</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Ekranın Bir Bölümünü Yakala</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>Özel Yakala</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>Bir Pencereyi Yakala</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>Web İçeriğini Göm</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>Gömülü Web İçeriğini Yakala</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>Görüntü Ekranında Ana Ekranı Göster</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>Tüm Açıklamaları Sil</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedya</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>eduMedya Simülasyon'u İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>Pencere Yakala</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>Ekranda Göster</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>Open-Sankpré'den Çık</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Open-Sankoré Düzenleyici</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>Open-Sankoré Widget Düzenleyici</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>Open-Sankoré'i Gizle</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>Open-Sankoré Uygulamasını Gizle</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>Uniboard Dökümanı İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>Eski Sankore yada Uniboard Dökümanı İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>Grup Parçaları</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>Oynat</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>Parçalar ile etkileşim</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>Arkaplanı Sil</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>Arkaplanı Kaldır</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grup</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>Kimlik Doğrulama Yapınız</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Kullanıcı Adı:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Åžifre:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Proxy DoÄŸrulama</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>Proxy'e BaÄŸlan</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Kullanıcı Adı:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Åžifre:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>Kullanıcı adı ve şifresini kaydet</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>Element ID = </translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>İçerik hedef içerik için uygun geğil.</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Sayfayı Kaldır</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>Seçili olan '%0' adlı dökümandan 1 sayfayı kaldırmak üzeresiniz. Bu işlemi yapmak istediğinizden eminmisiniz?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>Sayfa Boyutu</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Ekran Kaydı</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>Yeni güncellemeler var. Web sitesine giderek indirmek istermisiniz?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>Yeni güncelleme yok</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>Güncelleme var</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Güncelle</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>İçeriğin %1'i indirilemedi</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>İndirme tamamlandı</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>Bilinmeyen araç türü %1</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>Bilinmeyen içerik türü %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>Parça Ekle</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>Tümü Desteklenir (%1)</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>%1 Sayfayı dökümandan sil</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>%1 Sayfa silindi</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>Dosya ekleme işlemi başarısız oldu: dosya kopyalama hatası</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>Grup</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>Gurubu Ayır</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>Kütüphaneye Resim Eklerken Hata Oluştu</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>YakalananResim</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Gizleme Seçenekleri</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>Renk:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>Åžekil:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>Boyut:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Kapat</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>Ekranın Bir Bölümünü Yakala</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>Ekranı Yakala</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>Kalem paletini göster</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>Tahtayı İkincil Ekranda Göster</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>Masaüstünü İkincil Ekranda Göster</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>Open-Sankore'de Göster</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>Yeni Klasör</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>Sayfa %1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>Resim Klasörü Ekle</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>Resimleri Ekle</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>Dosyadan Sayfa Ekle</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>%1 Dökümanı Çoğalt</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>%1 Döküman kopyalandı</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>Sayfayı Kaldır</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>Dökümanı Kaldır</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>%1 adlı dökümanı kaldırmak istediğinizden eminmisiniz?</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>Çöpü Boşalt</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>Çöp kutusunu boşaltmak istediğinizden eminmisiniz?</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>Çöp Kutusu boşaltılıyor</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>Çöp kutusu boşaltıldı</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>Klasörü Kaldır</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>'%1' adlı klasörü ve içindeki tüm dosyaları kaldırmak istediğinizden eminmisiniz?</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>Seçili döküman yok!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>Desteklenen Dosyayı Aç</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>%1 adlı dosya içeriye aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>Dosya içeriye aktarılamadı ...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>Klasördeki Tüm Resimleri İçeri Aktar</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Sil</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>BoÅŸalt</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Çöp</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>Döküman Aç</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>Tüm Resimleri Dökümana Ekle</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>Tüm Resimler (%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>Seçilenlerin arasında hiç resim bulunmamaktadır!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>'%1' adlı döküman daha yeni bir Sankore versiyonu (%2) ile oluşturulmuş. Bu dökümanı açarsanız bazı bilgiler kaybolabilir. Devem etmek istermisiniz?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>Seçili '%1' adlı dökümandan %n sayfayı kaldırmak istediğinizden eminmisiniz?</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Baş sayfası</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>Klasör hiç resim dosyası içermiyor</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>Başlıksız Döküman</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>resimler</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>videolar</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>öğeler</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>widgetlar</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>Desteklenen tüm dosyalar (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>%1 adlı dosya kaydedildi</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>%1 / %2 Sayfa ekleniyor</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>İçe aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>%1 Adlı dosya içeriye aktarıldı.</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>İçe aktarılan dosya: %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>Sayfa %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>BaÅŸ sayfa</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>Dışa aktarma başarısız.</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>Dışa aktarma iptal edildi ...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>Dönüştürülen sayfa %1/%2 ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>Kimlik bilgileri doldurulmadı.</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Sankore dosyası Web'e yükleniyor.</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>Döküman doğru bir şekilde Web'e yüklendi.</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>Döküman Web'e aktarılamadı.</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (kopyala)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>Kopyalanan sayfa %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translatorcomment>The translation is correct but it is giving error message.</translatorcomment>
+        <translation>
+            <numerusform>%1 sayfa kopyalandı</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>Dosyalar indiriliyor</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Ä°ptal</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>Dışa aktarma sırasında bir uyarı mesajı göründü</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>IWB'e Aktar</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>IWB Dosyası Olarak Aktar</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Döküman dışa aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Dışa aktarma tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Dışa aktarma başarısız oldu.</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>Sayfa</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>UBZ Dosyası Olarak Aktar</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Döküman dışa aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Dışa aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>Dışa Aktarılan %1 %2 / %3</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>Sankora Dosyası Olarak Aktar</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>PDF Dosyası Olarak Dışa Aktar</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Döküman dışa aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Dışa aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>PDF Olarak Aktar</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>PDF Dosyası Olarak Dışa Aktar</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Döküman dışa aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Dışa aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>Dışa aktarılan sayfa: %1 / %2</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>PDF Olark Aktar</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>Sayfa</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>Web Verisi Olarak Dışa Aktar</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>Döküman dışa aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>Dışa aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>Dışa aktarım başarısız oldu.</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>Web Tarayıcısına Aktar</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>Sayfaya ekle</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>Arkaplan olarak tanımla</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>Kütüphaneye ekle</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>Nesne bilgisi</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>Sık kullanılanlara ekle</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>PaylaÅŸ</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Ara</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>Sil</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>Klasöre geri dön</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>Sık kullanılanlardan kaldır</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>Yeni klasör oluştur</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>Dosya sistemini yeniden tara</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>İçerAktarılanResim</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>Sesler</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>Videolar</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>Resimler</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>Animasyonlar</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>Ä°nteraktiviteler</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>Uygulamalar</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>Åžekiller</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>Sık Kullanılanlar</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>Web'de Ara</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>Çöp</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>Kabul Et</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Ä°ptal</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>Yeni klasör adı giriniz</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>Yükleniyor</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Kilitli</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Uzatılmış Ekranda Görünsün</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>Kilitli</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>Uzatılmış Ekranda Görünsün</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>İçerik Kaynağına Git</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>Metin Rengi</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>Düzenlenebilir</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>Yükleniyor ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>DonmuÅŸ</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>Araç Olarak Dönüştür</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>Genel Dosya Biçimi (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>İçe aktarılan dosya: %1...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>%1 adlı dosya içe aktarılamadı.</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>İçe aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>İçe aktarım tamamlanmadı.</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>%1 adlı dosya içe aktarılıyor...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>İçe aktarım tamamlandı.</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>%1 adlı dosyanın içe aktarımı başarısız oldu.</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>Resim Biçimi (</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Taşınabilir Döküman Biçimi (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>PDF dosya aktarımı başarısız oldu.</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>İçe aktarılan sayfa: %1 / %2</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>Videonun intranete yayını sırasında hata oluştu(%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>Internete durumu: %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>Yayınla</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>GiriÅŸ</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>Evet</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Hayır</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Tamam</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>Kapat</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt> %2 kısmında bulunan "%1" için kullanıcı adı ve şifre giriniz</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>Proxy'e giriş yapılamadı</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>SSL Hatası:
+
+%1
+
+%2
+Bu host için yukarıdaki hatalar yok sayılsın mı?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Evet</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Hayır</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(kopyala)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>Döküman Deposu Kaybedildi</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore '%1' adlı döküman deposına erişemiyor. Uygulama veri bozulmasını engellemek için kapatılacaktır. Son yapılan işlemler ve değişiklikler kaybolabilir.</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>Ä°ngilizce</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>Rusça</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>Almanca</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>Fıransızca</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>İsveç Fıransızcası</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>Enkoder başlatılamadı...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>Geçerli canlı yayın enkoderi bulunamadı ...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Bölüm %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>masa üstünüzde ...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>%1 adlı klasörün içinde</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Canlı yayın oluşturuldu %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Canlı yayın kayıt hatası (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>Varsayılan Ses Girişi</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>Hiç Ses Kaydı Yok</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>Küçük</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Normal</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>Tam</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>İnternette Yayınlar</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>YouTube'da Yayınla</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore Cast</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>versiyon:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>İşaretçi basınca duyarlıdır</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Proxy GiriÅŸi</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>Kullanıcı Adı:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>Åžifre:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>Dökümanı web üzerinde yayınla</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>Başlık:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>Açıklama:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>Yayınla</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>Filimlerim</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>Öğretmen</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>Öğrenci</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>Görevi buraya yazınız ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>medyayı buraya bırakınız ...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>Başlığı buraya yazınız ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>Bağlantı başlığını buraya giriniz ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>Başlığı buraya yazınız ...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>Yorumu buraya yazınız ...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>Bir eylem ekle</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>Bir medya ekle</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>Bir bağlantı ekle</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>Sayfa: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>Oturum başlığını buraya yazınız ...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>Yazar(lar)</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>Yazarları buraya yazınız ...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>Objektif(ler)</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>Objektifleri buraya yazınız ...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Kaynak indekslemesi</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>Anahtar Kelimeler:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>Anahtar kelimeleri buraya yazınız ...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>Seviyeler:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>Başlıklar:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>Tür:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>Lisans</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Attribution CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Kamu malı</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Telif Hakkı</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>OluÅŸturulan:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>Güncellenen:</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>Başlık sayfası</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>Sayfa: %0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>Önizleme resimleri oluşturuluyor ...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>%1 adet önizleme resmi oluşturuldu ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Mask</source>
+        <translation>Maske</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>Cetvel</translation>
+    </message>
+    <message>
+        <source>Compass</source>
+        <translation>Pusula</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>Ä°letki</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>Üçgen</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>Büyüteç</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Gizli Yer</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation type="obsolete">Aristo</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>Tüm sayfa</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>Web</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>Döküman güncelleyici</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>güncelleme için gerekli dosyalar.</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>Yedek yolu:</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Gözat</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Güncelle</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>Yedekleme klasörü seç</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>Dosyaların güncellenmesi tamamlandı!
+Güncellenen dökümanlara erişmek için uygulamayı yeniden başlatın.</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>Güncelleme sırasında bir hata oluştu. Dosyalar değişmedi yada etilenmedi.</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>Dosya güncelleme sonucu</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>Dosya güncelleniyor</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>Lütfen bekleyin! İçer aktarım işlemi birazdan başlayacak ...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>Sonra hatırlat</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>Yükleniyor ...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>Dökümanı Sankore Web Sitesinde Yayınla</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>%0 cağırıldı (metod=%1, durum=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>YouTube kimlik doğrulama başarısız oldu.</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>YouTube'a video yüklenirken hata oluştu (%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>YouTube'a video gönderim işlemi: %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>Yükle</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>Otomotiv & Arabalar</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>Müzik</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>Evcil Hayvanlar & Hayvanlar</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>Spor</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>Gezi & Turlar</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>Oyun</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>Komedi</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>Ä°nsanlar & Bloglar</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>Haberler & Politika</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>EÄŸlence</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>EÄŸitim</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>Nasıl Yapılır & Stil</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>Kar Amacı Gütmeyen & Aktivizm</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>Bilim & Teknoloji</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>Eski Uniboard/Sankore dökümanlarını içe aktar</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>İçeri aktarılacak hiç döküman bulunmamakta</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>Temizle</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>Dosyayı Kaydet</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>Ä°ndirme iptal edildi: %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>Kaydedilen dosya açılırken hata oluştu: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>Kaydedilirken hata oluÅŸtu: %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>Network hatası:%1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>saniye</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>dakika</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>- kalan: %4 / %5</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%1 / %2 (%3/saniye) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>Geçersiz dosya boyutu?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%1 / %2 - Durduruldu</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>byte</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation>1 Adet Ä°ndirilen</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1 Adet Ä°ndirilen</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>Başlık</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>Adres</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>Gürün Erken Saatleri</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 Madde</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>Ara</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>Yeni &Sekme</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>Sekmeyi Kolanla</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>&Sekmeyi Kapat</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>DiÄŸer &Sekmeleri Kapat</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>Sekmeyi Yeniden Yükle</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>Tüm Sekmeleri Yeniden Yükle</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>Recently Closed Tabs</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>(Başlıksız)</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>Ara</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>Son Zamanlarda Yapılan Arama Bulunmamakta</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>Son Yapılan Aramalar</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>Son Yapılan Aramaları Temizle</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>Ä°ndir</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>Mevcut Dökümana Ekle</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>Sayfa yüklenirken hata oluştu: %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>PDF Dökümanı İndir: PDF dosyasını indirmek mi istersiniz yada PDF dosyasını mevcut Sankore dökümanına mı eklensin?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>Yeni Sekmede Aç</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>Podcasti YouTube'da Yayınla</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Başlık</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Açıklama</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>Anahtar Kelimeler</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>Kategori</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>YouTube Kullanıcı Adı</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>YouTube Åžifresi</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>Saydamlık</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>Açık Arkaplan Üzerine</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>Kapalı Arkaplan Üzerine</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>Çizgi Genişliği</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>Normal</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>Kalın</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>Hassas</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>Kalem Basınca Duyarlıdır</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Diyalog</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Başlık</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Yazar</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Açıklama</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>Diyalog</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Başlık</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>Yazar</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Açıklama</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>Ä°ndirilebilir PDF Versiyonunu Ekle</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>İndirilebilir Uniboard Dsoyasını (UBZ) Ekle</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>Uyarı: Bu döküman Web üzerinde doğru bir şekilde görünemyecek şekilde video içermektedir</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Uniboard Dökümanları</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Tercihler</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>Geçerli Ayarlar</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Kapat</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Ekran</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>Sayfayı Harici Tarayıcıda Göster</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>Sanal Klavye</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>Klavye tuÅŸ boyutu:</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>Üstte konumlandır (tabletler için tavsiye edilir)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>Altta konumlandır (akıllı tahtalar için tavsiye edilir)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>Yazıyı Tuşun Altında Göster</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>Stylus Paleti</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Yatay</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>Dikey</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>Hakkında</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>Yazılım Güncellemesi</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>Başlangıçta yazılım güncellemeleri kontrol et</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>Internet</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>Ana Sayfa:</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>Araç Çubuğu</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>Dolma Kalem</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>Fosforlu Kalem</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>Versiyon: ...</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>Lisanslar</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSI</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>Network</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>Dahili web sayfa içeriğini ikince ekranda yada projektörde göster</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>Çoklu ekran</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>Kontrol ekranını ve görütü ekranını yer değiştir</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Mod</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>Başlangıç modu:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>Tahta</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>Masa Üstü</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Proxy Kullanıcısı:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>Åžifre:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation type="obsolete">Sankoré Gezegeni ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>Kullanıcı Adı:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>Åžifre:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>Künye</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID for exporting file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore credentials on reboot  </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Crédits police scolaire Open-Sankoré : </p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police Andika Basic dispose d'une licence Open Font License </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Sil international</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Court </p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier Ligne Court</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Ecolier lignes pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Écolier CP pointillés</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Autorisation pour un usage non commercial</p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Source : http://pointecole.free.fr/polices.html</p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>Flash'i tuzakla</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>Tuzağa almak için bir flash öğesi seçin</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>hakkında:boş</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>Uygulama adı</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>Uygulama OluÅŸtur</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_zh.ts b/Sankore-3.1/resources/i18n/sankore_zh.ts
index b3a7108..3159e1a 100644
--- a/Sankore-3.1/resources/i18n/sankore_zh.ts
+++ b/Sankore-3.1/resources/i18n/sankore_zh.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.0" language="zh_CN">
 <context>
     <name>BlackoutWidget</name>
     <message>
@@ -769,43 +769,59 @@
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Quit Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>关闭Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Open-Sankoré Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankoré编辑器</translation>
     </message>
     <message utf8="true">
         <source>Show Open-Sankoré Widgets Editor</source>
-        <translation type="unfinished"></translation>
+        <translation>显示Open-Sankoré小工具编辑器</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>隐藏Open-Sankoré</translation>
     </message>
     <message utf8="true">
         <source>Hide Open-Sankoré Application</source>
-        <translation type="unfinished"></translation>
+        <translation>隐藏Open-Sankoré应用程序</translation>
     </message>
     <message>
         <source>Import Uniboard Documents</source>
-        <translation type="unfinished"></translation>
+        <translation>导入Uniboard文件</translation>
     </message>
     <message>
         <source>Import old Sankore or Uniboard documents</source>
-        <translation type="unfinished"></translation>
+        <translation>导入以前的Sankore或Uniboard文件</translation>
     </message>
     <message>
-        <source>Group Items</source>
-        <translation type="unfinished"></translation>
+        <source>Group items</source>
+        <translation>组合项目</translation>
     </message>
     <message>
-        <source>Group items</source>
-        <translation type="unfinished"></translation>
+        <source>Play</source>
+        <translation>播放</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>与项目互动</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>删除背景</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>移除背景</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>组合</translation>
     </message>
 </context>
 <context>
@@ -816,11 +832,11 @@
     </message>
     <message>
         <source>Username:</source>
-        <translation>用户名:</translation>
+        <translation>用户名:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>密码:</translation>
+        <translation>密码:</translation>
     </message>
 </context>
 <context>
@@ -835,11 +851,11 @@
     </message>
     <message>
         <source>Username:</source>
-        <translation>用户名:</translation>
+        <translation>用户名:</translation>
     </message>
     <message>
         <source>Password:</source>
-        <translation>密码:</translation>
+        <translation>密码:</translation>
     </message>
     <message>
         <source>Save username and password for future use</source>
@@ -849,25 +865,20 @@
 <context>
     <name>QObject</name>
     <message>
-        <source>Trash</source>
-        <comment>Pictures category element</comment>
-        <translation>回收站</translation>
+        <source>Element ID = </source>
+        <translation>Element ID = </translation>
     </message>
     <message>
-        <source>/Home</source>
-        <comment>Category list label on navigation tool bar</comment>
-        <translation>/主页</translation>
+        <source>Content is not supported in destination format.</source>
+        <translation>目标格式不支持该内容。</translation>
     </message>
-</context>
-<context>
-    <name>UBAbstractWidget</name>
     <message>
-        <source>Cannot load content</source>
-        <translation>无法读取内容</translation>
+        <source>Remove Page</source>
+        <translation>删除页面</translation>
     </message>
     <message>
-        <source>Loading ...</source>
-        <translation>载入中……</translation>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>确定要删除选中文件“%0”中的1页?</translation>
     </message>
 </context>
 <context>
@@ -889,7 +900,7 @@
     </message>
     <message>
         <source>New update available, would you go to the web page ?</source>
-        <translation>有可用的更新,是否登陆更新页面?</translation>
+        <translation>有可用的更新,是否登陆更新页面?</translation>
     </message>
     <message>
         <source>No update available</source>
@@ -930,6 +941,26 @@
         <source>All Supported (%1)</source>
         <translation>所有支持的(%1)</translation>
     </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>删除文件的%1页</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>已删除%1页</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>增加操作失败文档:文件复制错误</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>组合</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>取消组合</translation>
+    </message>
 </context>
 <context>
     <name>UBBoardPaletteManager</name>
@@ -937,6 +968,10 @@
         <source>Error Adding Image to Library</source>
         <translation>添加图片至图书馆出错</translation>
     </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>图像截图</translation>
+    </message>
 </context>
 <context>
     <name>UBCachePropertiesWidget</name>
@@ -946,7 +981,7 @@
     </message>
     <message>
         <source>Color:</source>
-        <translation>颜色:</translation>
+        <translation>颜色:</translation>
     </message>
     <message>
         <source>Shape:</source>
@@ -964,10 +999,6 @@
 <context>
     <name>UBDesktopPalette</name>
     <message>
-        <source>Show Uniboard</source>
-        <translation>显示演示板</translation>
-    </message>
-    <message>
         <source>Capture Part of the Screen</source>
         <translation>部分截图</translation>
     </message>
@@ -987,6 +1018,10 @@
         <source>Show Desktop on Secondary Screen</source>
         <translation>在第二屏幕显示桌面</translation>
     </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>显示Open-Sankore</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentController</name>
@@ -1075,10 +1110,6 @@
         <translation>将所有图片导入文件夹</translation>
     </message>
     <message>
-        <source>Folder does not contain any image files!</source>
-        <translation>文件夹不包含图像文件!</translation>
-    </message>
-    <message>
         <source>Delete</source>
         <translation>删除</translation>
     </message>
@@ -1104,18 +1135,30 @@
     </message>
     <message>
         <source>Selection does not contain any image files!</source>
-        <translation>选中对象不包含任何图片文件!</translation>
+        <translation>选中对象不包含任何图片文件!</translation>
     </message>
     <message>
         <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
-        <translation>文档“%1”由一个更新版本的Sankore生成,打开该文档可能造成部分信息丢失,要继续吗?</translation>
+        <translation>文档“%1”由一个更新版本的Sankore (%2)生成,打开该文档可能造成部分信息丢失,要继续吗?</translation>
     </message>
     <message numerus="yes">
         <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>确定要删除选中文件“%1”中的%n页?</numerusform>
         </translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>标题页面</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>文件夹中无图像文件</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>未命名文档</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentManager</name>
@@ -1144,12 +1187,20 @@
         <translation>文件%1已保存</translation>
     </message>
     <message>
-        <source>Importing page %1 of %2</source>
-        <translation>导入%2的页面%1</translation>
+        <source>Inserting page %1 of %2</source>
+        <translation>正在插入%2的页面%1</translation>
     </message>
     <message>
-        <source>Erronous image data, skipping file %1</source>
-        <translation>图片数据错误,跳过文件%1</translation>
+        <source>Import successful.</source>
+        <translation>导入成功。</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>文件%1导入成功。</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>正在导入文件 %1</translation>
     </message>
 </context>
 <context>
@@ -1158,6 +1209,10 @@
         <source>Page %0</source>
         <translation>页面 %0</translation>
     </message>
+    <message>
+        <source>Title page</source>
+        <translation>标题页面</translation>
+    </message>
 </context>
 <context>
     <name>UBDocumentPublisher</name>
@@ -1202,8 +1257,8 @@
     </message>
     <message numerus="yes">
         <source>%1 pages copied</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>已复制页面%1</numerusform>
         </translation>
     </message>
 </context>
@@ -1211,34 +1266,41 @@
     <name>UBDownloadWidget</name>
     <message>
         <source>Downloading files</source>
-        <translation type="unfinished"></translation>
+        <translation>下载文件</translation>
     </message>
     <message>
         <source>Cancel</source>
-        <translation type="unfinished">取消</translation>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>导出过程中出现警告</translation>
     </message>
 </context>
 <context>
     <name>UBExportCFF</name>
     <message>
         <source>Export to IWB</source>
-        <translation type="unfinished"></translation>
+        <translation>导出至IWB</translation>
     </message>
     <message>
         <source>Export as IWB File</source>
-        <translation type="unfinished"></translation>
+        <translation>以 IWB文件格式导出</translation>
     </message>
     <message>
         <source>Exporting document...</source>
-        <translation type="unfinished">文档导出中……</translation>
+        <translation>文档导出中……</translation>
     </message>
     <message>
         <source>Export successful.</source>
-        <translation type="unfinished">导出成功</translation>
+        <translation>导出成功。</translation>
     </message>
     <message>
         <source>Export failed.</source>
-        <translation type="unfinished">导出失败</translation>
+        <translation>导出失败。</translation>
     </message>
 </context>
 <context>
@@ -1341,68 +1403,134 @@
     <name>UBFeatureProperties</name>
     <message>
         <source>Add to page</source>
-        <translation type="unfinished">添加至页面</translation>
+        <translation>添加至页面</translation>
     </message>
     <message>
         <source>Set as background</source>
-        <translation type="unfinished">设置为背景</translation>
+        <translation>设置为背景</translation>
     </message>
     <message>
         <source>Add to library</source>
-        <translation type="unfinished">添加至图书馆</translation>
+        <translation>添加至图书馆</translation>
     </message>
     <message>
         <source>Object informations</source>
-        <translation type="unfinished">素材信息</translation>
+        <translation>素材信息</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesActionBar</name>
     <message>
         <source>Add to favorites</source>
-        <translation type="unfinished">添加至收藏夹</translation>
+        <translation>添加至收藏夹</translation>
     </message>
     <message>
         <source>Share</source>
-        <translation type="unfinished">分享</translation>
+        <translation>分享</translation>
     </message>
     <message>
         <source>Search</source>
-        <translation type="unfinished">搜索</translation>
+        <translation>搜索</translation>
     </message>
     <message>
         <source>Delete</source>
-        <translation type="unfinished">删除</translation>
+        <translation>删除</translation>
     </message>
     <message>
         <source>Back to folder</source>
-        <translation type="unfinished">返回上级文件夹</translation>
+        <translation>返回上级文件夹</translation>
     </message>
     <message>
         <source>Remove from favorites</source>
-        <translation type="unfinished">从收藏夹中移除</translation>
+        <translation>从收藏夹中移除</translation>
     </message>
     <message>
         <source>Create new folder</source>
-        <translation type="unfinished">新建文件夹</translation>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>重新扫描文件系统</translation>
     </message>
 </context>
 <context>
     <name>UBFeaturesController</name>
     <message>
         <source>ImportedImage</source>
-        <translation type="unfinished">已导入图片</translation>
+        <translation>已导入图片</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>音频</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>视频</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>图片</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>动画</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>互动</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>应用程序</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>形状</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>收藏夹</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>搜索网络</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收站</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>接受</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>载入中</translation>
     </message>
 </context>
 <context>
     <name>UBGraphicsGroupContainerItemDelegate</name>
     <message>
         <source>Locked</source>
-        <translation type="unfinished">位置锁定</translation>
+        <translation>位置锁定</translation>
     </message>
     <message>
         <source>Visible on Extended Screen</source>
-        <translation type="unfinished">宽屏上可见</translation>
+        <translation>宽屏上可见</translation>
     </message>
 </context>
 <context>
@@ -1435,7 +1563,21 @@
     </message>
     <message>
         <source>Editable</source>
-        <translation type="unfinished"></translation>
+        <translation>可编辑</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>网页</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>载入中……</translation>
     </message>
 </context>
 <context>
@@ -1453,7 +1595,7 @@
     <name>UBImportCFF</name>
     <message>
         <source>Common File Format (</source>
-        <translation>常见文件格式</translation>
+        <translation>常见文件格式 (</translation>
     </message>
     <message>
         <source>Importing file %1...</source>
@@ -1488,7 +1630,7 @@
     </message>
     <message>
         <source>Open-Sankore (*.ubz)</source>
-        <translation type="unfinished"></translation>
+        <translation>Open-Sankore (*.ubz)</translation>
     </message>
 </context>
 <context>
@@ -1497,14 +1639,6 @@
         <source>Image Format (</source>
         <translation>图片格式</translation>
     </message>
-    <message>
-        <source>Image import failed.</source>
-        <translation>图片导入失败</translation>
-    </message>
-    <message>
-        <source>Image import successful.</source>
-        <translation>图片导入成功</translation>
-    </message>
 </context>
 <context>
     <name>UBImportPDF</name>
@@ -1520,16 +1654,12 @@
         <source>Importing page %1 of %2</source>
         <translation>正在导入%2的页面%1</translation>
     </message>
-    <message>
-        <source>PDF import successful.</source>
-        <translation>PDF导入成功</translation>
-    </message>
 </context>
 <context>
     <name>UBIntranetPodcastPublisher</name>
     <message>
         <source>Error while publishing video to intranet (%1)</source>
-        <translation>视频发布至内部网过程中发生错误</translation>
+        <translation>视频发布至内部网过程中发生错误 (%1)</translation>
     </message>
     <message>
         <source>Publishing to Intranet in progress %1 %</source>
@@ -1547,121 +1677,7 @@
     <name>UBKeyboardPalette</name>
     <message>
         <source>Enter</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBLibActionBar</name>
-    <message>
-        <source>Add to favorites</source>
-        <translation>添加至收藏夹</translation>
-    </message>
-    <message>
-        <source>Share</source>
-        <translation>分享</translation>
-    </message>
-    <message>
-        <source>Search</source>
-        <translation>搜索</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation>删除</translation>
-    </message>
-    <message>
-        <source>Back to folder</source>
-        <translation>返回上级文件夹</translation>
-    </message>
-    <message>
-        <source>Remove from favorites</source>
-        <translation>从收藏夹中移除</translation>
-    </message>
-    <message>
-        <source>Create new folder</source>
-        <translation>新建文件夹</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibItemProperties</name>
-    <message>
-        <source>Add to page</source>
-        <translation>添加至页面</translation>
-    </message>
-    <message>
-        <source>Set as background</source>
-        <translation>设置为背景</translation>
-    </message>
-    <message>
-        <source>Add to library</source>
-        <translation>添加至图书馆</translation>
-    </message>
-    <message>
-        <source>Object informations</source>
-        <translation>素材信息</translation>
-    </message>
-</context>
-<context>
-    <name>UBLibraryController</name>
-    <message>
-        <source>Added 1 Image to Library</source>
-        <translation>添加一个图片至图书馆</translation>
-    </message>
-    <message>
-        <source>Audios</source>
-        <comment>Audio category element</comment>
-        <translation>音频</translation>
-    </message>
-    <message>
-        <source>Movies</source>
-        <comment>Movies category element</comment>
-        <translation>视频</translation>
-    </message>
-    <message>
-        <source>Pictures</source>
-        <comment>Pictures category element</comment>
-        <translation>图片</translation>
-    </message>
-    <message>
-        <source>Shapes</source>
-        <comment>Shapes category element</comment>
-        <translation>形状</translation>
-    </message>
-    <message>
-        <source>Applications</source>
-        <comment>Applications category element</comment>
-        <translation>应用程序</translation>
-    </message>
-    <message>
-        <source>Favorite</source>
-        <comment>Favorite category element</comment>
-        <translation>收藏</translation>
-    </message>
-    <message>
-        <source>Creating image thumbnail for %1.</source>
-        <translation>为图像%1创建缩略图</translation>
-    </message>
-    <message>
-        <source>Adding to page failed for item %1.</source>
-        <translation>添加项目%1至页面失败</translation>
-    </message>
-    <message>
-        <source>Interactivities</source>
-        <comment>Interactives category element</comment>
-        <translation>互动</translation>
-    </message>
-    <message>
-        <source>ImportedImage</source>
-        <translation>已导入图片</translation>
-    </message>
-    <message>
-        <source>Animations</source>
-        <comment>Animations category element</comment>
-        <translation>动画</translation>
-    </message>
-    <message>
-        <source>Web Search</source>
-        <comment>Web search category element</comment>
-        <translation type="unfinished"></translation>
+        <translation>输入</translation>
     </message>
 </context>
 <context>
@@ -1680,6 +1696,13 @@
     </message>
 </context>
 <context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
     <name>UBNetworkAccessManager</name>
     <message>
         <source><qt>Enter username and password for "%1" at %2</qt></source>
@@ -1715,37 +1738,41 @@ Do you want to ignore these errors for this host?</source>
     </message>
 </context>
 <context>
-    <name>UBNewFolderDlg</name>
-    <message>
-        <source>Add new folder</source>
-        <translation>添加新文件夹</translation>
-    </message>
+    <name>UBPersistenceManager</name>
     <message>
-        <source>New Folder name:</source>
-        <translation>新文件夹名</translation>
+        <source>(copy)</source>
+        <translation>(复制)</translation>
     </message>
     <message>
-        <source>Add</source>
-        <translation>添加</translation>
+        <source>Document Repository Loss</source>
+        <translation>文档库丢失</translation>
     </message>
     <message>
-        <source>Cancel</source>
-        <translation>取消</translation>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore无法进入文档库“%1”。为避免数据出错,应用程序须立即关闭,最近所做的修改也可能丢失。</translation>
     </message>
 </context>
 <context>
-    <name>UBPersistenceManager</name>
+    <name>UBPlatformUtils</name>
     <message>
-        <source>(copy)</source>
-        <translation>(复制)</translation>
+        <source>English</source>
+        <translation>英语</translation>
     </message>
     <message>
-        <source>Document Repository Loss</source>
-        <translation>文档库丢失</translation>
+        <source>Russian</source>
+        <translation>俄语</translation>
     </message>
     <message>
-        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
-        <translation>Sankore无法进入文档库。为避免数据出错,应用程序须立即关闭,最近所做的修改也可能丢失。</translation>
+        <source>German</source>
+        <translation>德语</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>法语</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>瑞士法语</translation>
     </message>
 </context>
 <context>
@@ -1859,14 +1886,6 @@ Do you want to ignore these errors for this host?</source>
 <context>
     <name>UBSettings</name>
     <message>
-        <source>Untitled Documents</source>
-        <translation>未命名文档</translation>
-    </message>
-    <message>
-        <source>Trash</source>
-        <translation>回收站</translation>
-    </message>
-    <message>
         <source>My Movies</source>
         <translation>我的视频</translation>
     </message>
@@ -1875,33 +1894,33 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTGActionWidget</name>
     <message>
         <source>Teacher</source>
-        <translation type="unfinished"></translation>
+        <translation>教师</translation>
     </message>
     <message>
         <source>Student</source>
-        <translation type="unfinished"></translation>
+        <translation>学生</translation>
     </message>
     <message>
         <source>Type task here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入任务......</translation>
     </message>
 </context>
 <context>
     <name>UBTGMediaWidget</name>
     <message>
         <source>drop media here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此插入媒体......</translation>
     </message>
     <message>
         <source>Type title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入标题......</translation>
     </message>
 </context>
 <context>
     <name>UBTGUrlWidget</name>
     <message>
         <source>Insert link title here...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此插入链接标题......</translation>
     </message>
 </context>
 <context>
@@ -1915,131 +1934,131 @@ Do you want to ignore these errors for this host?</source>
     <name>UBTeacherGuideEditionWidget</name>
     <message>
         <source>Type title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入标题......</translation>
     </message>
     <message>
         <source>Type comment here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入评论.......</translation>
     </message>
     <message>
         <source>Add an action</source>
-        <translation type="unfinished"></translation>
+        <translation>添加指令</translation>
     </message>
     <message>
         <source>Add a media</source>
-        <translation type="unfinished"></translation>
+        <translation>添加媒体</translation>
     </message>
     <message>
         <source>Add a link</source>
-        <translation type="unfinished"></translation>
+        <translation>添加链接</translation>
     </message>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>页:%0</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePageZeroWidget</name>
     <message>
-        <source>Page 0</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Type session title here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入场次......</translation>
     </message>
     <message>
         <source>Author(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>作者</translation>
     </message>
     <message>
         <source>Type authors here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入作者姓名......</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>素材</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>在此键入素材......</translation>
     </message>
     <message>
         <source>Resource indexing</source>
-        <translation type="unfinished"></translation>
+        <translation>资源索引</translation>
     </message>
     <message>
         <source>Keywords:</source>
-        <translation type="unfinished"></translation>
+        <translation>关键词</translation>
     </message>
     <message>
         <source>Type keywords here ...</source>
-        <translation type="unfinished"></translation>
+        <translation>在此键入关键字......</translation>
     </message>
     <message>
         <source>Level:</source>
-        <translation type="unfinished"></translation>
+        <translation>级别:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>主题:</translation>
     </message>
     <message>
         <source>Type:</source>
-        <translation type="unfinished"></translation>
+        <translation>类别:</translation>
     </message>
     <message>
         <source>Licence</source>
-        <translation type="unfinished"></translation>
+        <translation>证书</translation>
     </message>
     <message>
         <source>Attribution CC BY</source>
-        <translation type="unfinished"></translation>
+        <translation>署名</translation>
     </message>
     <message>
         <source>Attribution-NoDerivs CC BY-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>禁止演绎</translation>
     </message>
     <message>
         <source>Attribution-ShareAlike CC BY-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>相同方式共享</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial CC BY-NC</source>
-        <translation type="unfinished"></translation>
+        <translation>非商业用途</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
-        <translation type="unfinished"></translation>
+        <translation>非商业用途-禁止演绎</translation>
     </message>
     <message>
         <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
-        <translation type="unfinished"></translation>
+        <translation>非商业用途-相同方式共享</translation>
     </message>
     <message>
         <source>Public domain</source>
-        <translation type="unfinished"></translation>
+        <translation>公共领域</translation>
     </message>
     <message>
         <source>Copyright</source>
-        <translation type="unfinished"></translation>
+        <translation>版权</translation>
     </message>
     <message>
         <source>Created the:
 </source>
-        <translation type="unfinished"></translation>
+        <translation>创建日期:</translation>
     </message>
     <message>
         <source>Updated the:
 </source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Objective(s)</source>
-        <translation type="unfinished"></translation>
+        <translation>更新日期:</translation>
     </message>
     <message>
-        <source>Type objectives here...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Subjects:</source>
-        <translation type="unfinished"></translation>
+        <source>Title page</source>
+        <translation>标题页面</translation>
     </message>
 </context>
 <context>
     <name>UBTeacherGuidePresentationWidget</name>
     <message>
         <source>Page: %0</source>
-        <translation type="unfinished"></translation>
+        <translation>页:%0</translation>
     </message>
 </context>
 <context>
@@ -2083,6 +2102,10 @@ Do you want to ignore these errors for this host?</source>
         <source>Cache</source>
         <translation>高级缓存</translation>
     </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
 </context>
 <context>
     <name>UBTrapFlashController</name>
@@ -2145,14 +2168,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>Remind me later</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>UBW3CWidget</name>
-    <message>
-        <source>Web</source>
-        <translation>网页</translation>
+        <translation>稍后再提醒我</translation>
     </message>
 </context>
 <context>
@@ -2173,7 +2189,7 @@ Please reboot the application to access the updated documents.</source>
     <name>UBWidgetUniboardAPI</name>
     <message>
         <source>%0 called (method=%1, status=%2)</source>
-        <translation type="unfinished"></translation>
+        <translation>被叫%0(方法=%1, 状态=%2)</translation>
     </message>
 </context>
 <context>
@@ -2190,6 +2206,14 @@ Please reboot the application to access the updated documents.</source>
         <source>Upload to YouTube in progress %1 %</source>
         <translation>正在上传至Youtube %1 %</translation>
     </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
 </context>
 <context>
     <name>UBYouTubePublishingDialog</name>
@@ -2265,11 +2289,11 @@ Please reboot the application to access the updated documents.</source>
     <name>UniboardSankoreTransition</name>
     <message>
         <source>Import old Uniboard/Sankore documents</source>
-        <translation type="unfinished"></translation>
+        <translation>导入以前的Sankore或Uniboard文档</translation>
     </message>
     <message>
         <source>There are no documents that should be imported</source>
-        <translation type="unfinished"></translation>
+        <translation>没有需要导入的文档</translation>
     </message>
 </context>
 <context>
@@ -2315,7 +2339,7 @@ Please reboot the application to access the updated documents.</source>
     </message>
     <message>
         <source>%1 of %2 (%3/sec) %4</source>
-        <translation type="unfinished">%2的%1(%3/秒)%4</translation>
+        <translation>%2的%1(%3/秒)%4</translation>
     </message>
     <message>
         <source>?</source>
@@ -2507,7 +2531,11 @@ Please reboot the application to access the updated documents.</source>
 p, li { white-space: pre-wrap; }
 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">点击“上传”表示您对上传内容拥有全部版权或得到版权所有人将上传内容公开发表在YouTube上的授权,否则此举违反YouTube服务条款 </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
     </message>
 </context>
 <context>
@@ -2642,7 +2670,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Home Page:</source>
-        <translation>主页:</translation>
+        <translation>主页:</translation>
     </message>
     <message>
         <source>Virtual Keyboard</source>
@@ -2726,302 +2754,601 @@ p, li { white-space: pre-wrap; }
     </message>
     <message utf8="true">
         <source>Open-Sankoré</source>
-        <translation type="unfinished"></translation>
+        <translation>打开的Sankoré页面</translation>
     </message>
     <message>
         <source>Show internal web page content on secondary screen or projector</source>
-        <translation type="unfinished"></translation>
+        <translation>在第二屏幕或播放器上显示内部网页内容</translation>
     </message>
     <message>
         <source>Multi display</source>
-        <translation type="unfinished"></translation>
+        <translation>多重显示</translation>
     </message>
     <message>
         <source>Swap control display and view display</source>
-        <translation type="unfinished"></translation>
+        <translation>交换控制显示和查看显示</translation>
     </message>
     <message>
         <source>Mode</source>
-        <translation type="unfinished"></translation>
+        <translation>模式</translation>
     </message>
     <message>
         <source>Mode to start in:</source>
-        <translation type="unfinished"></translation>
+        <translation>启动模式:</translation>
     </message>
     <message>
         <source>Board</source>
-        <translation type="unfinished">演示板</translation>
+        <translation>演示板</translation>
     </message>
     <message>
         <source>Desktop</source>
-        <translation type="unfinished"></translation>
+        <translation>桌面</translation>
     </message>
     <message>
         <source>Proxy User:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proxy用户:</translation>
     </message>
     <message>
         <source>Pass:</source>
-        <translation type="unfinished"></translation>
+        <translation>密码:</translation>
     </message>
     <message utf8="true">
         <source>Planète Sankoré ID</source>
-        <translation type="unfinished"></translation>
+        <translation>Planète Sankoré ID</translation>
     </message>
     <message>
         <source>User:</source>
-        <translation type="unfinished"></translation>
+        <translation>用户:</translation>
     </message>
     <message>
         <source>Pass: </source>
-        <translation type="unfinished"></translation>
+        <translation>密码:</translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit.</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact </span><a href="mailto:openssl-core at openssl.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">openssl-core at openssl.org</span></a><span style=" font-size:9pt; color:#1a1a1a;">.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-size:12pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
+        <source>Credits</source>
+        <translation>版权</translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#000000;">Xpdf is licensed under the GNU General Public License (GPL), version 2.</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">GNU Library or Lesser General Public License (LGPL), zlib/libpng License</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by  the Free Software Foundation, either version 3 of the License, or any later version. You can find the source code of this software at &lt;https://adullact.net/projects/sankore/&gt;</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Open-Sankoré is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public License below for more details.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                   GNU LESSER GENERAL PUBLIC LICENSE</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">                       Version 3, 29 June 2007</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> Everyone is permitted to copy and distribute verbatim copies</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> of this license document, but changing it is not allowed.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  This version of the GNU Lesser General Public License incorporates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the terms and conditions of version 3 of the GNU General Public</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, supplemented by the additional permissions listed below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  0. Additional Definitions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  As used herein, &quot;this License&quot; refers to version 3 of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, and the &quot;GNU GPL&quot; refers to version 3 of the GNU</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  &quot;The Library&quot; refers to a covered work governed by this License,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">other than an Application or a Combined Work as defined below.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  An &quot;Application&quot; is any work that makes use of an interface provided</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">by the Library, but which is not otherwise based on the Library.</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Defining a subclass of a class defined by the Library is deemed a mode</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of using an interface provided by the Library.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  A &quot;Combined Work&quot; is a work produced by combining or linking an</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application with the Library.  The particular version of the Library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">with which the Combined Work was made is also called the &quot;Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Version&quot;.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Minimal Corresponding Source&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Corresponding Source for the Combined Work, excluding any source code</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">for portions of the Combined Work that, considered in isolation, are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">based on the Application, and not on the Linked Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The &quot;Corresponding Application Code&quot; for a Combined Work means the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">object code and/or source code for the Application, including any data</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">and utility programs needed for reproducing the Combined Work from the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Application, but excluding the System Libraries of the Combined Work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  1. Exception to Section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a covered work under sections 3 and 4 of this License</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">without being bound by section 3 of the GNU GPL.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  2. Conveying Modified Versions.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If you modify a copy of the Library, and, in your modifications, a</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility refers to a function or data to be supplied by an Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">that uses the facility (other than as an argument passed when the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facility is invoked), then you may convey a copy of the modified</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">version:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) under this License, provided that you make a good faith effort to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   ensure that, in the event an Application does not supply the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   function or data, the facility still operates, and performs</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   whatever part of its purpose remains meaningful, or</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) under the GNU GPL, with none of the additional permissions of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   this License applicable to that copy.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  3. Object Code Incorporating Material from Library Header Files.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The object code form of an Application may incorporate material from</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">a header file that is part of the Library.  You may convey such object</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">code under terms of your choice, provided that, if the incorporated</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">material is not limited to numerical parameters, data structure</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">layouts and accessors, or small macros, inline functions and templates</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">(ten or fewer lines in length), you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the object code that the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the object code with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  4. Combined Works.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may convey a Combined Work under terms of your choice that,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">taken together, effectively do not restrict modification of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">portions of the Library contained in the Combined Work and reverse</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">engineering for debugging such modifications, if you also do each of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Give prominent notice with each copy of the Combined Work that</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Library is used in it and that the Library and its use are</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   covered by this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Accompany the Combined Work with a copy of the GNU GPL and this license</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   c) For a Combined Work that displays copyright notices during</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   execution, include the copyright notice for the Library among</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   these notices, as well as a reference directing the user to the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   copies of the GNU GPL and this license document.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   d) Do one of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       0) Convey the Minimal Corresponding Source under the terms of this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       License, and the Corresponding Application Code in a form</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       suitable for, and under terms that permit, the user to</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       recombine or relink the Application with a modified version of</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       the Linked Version to produce a modified Combined Work, in the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       manner specified by section 6 of the GNU GPL for conveying</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Corresponding Source.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       1) Use a suitable shared library mechanism for linking with the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Library.  A suitable mechanism is one that (a) uses at run time</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       a copy of the Library already present on the user's computer</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       system, and (b) will operate properly with a modified version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       of the Library that is interface-compatible with the Linked</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">       Version.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   e) Provide Installation Information, but only if you would otherwise</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   be required to provide such information under section 6 of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   GNU GPL, and only to the extent that such information is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   necessary to install and execute a modified version of the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Combined Work produced by recombining or relinking the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Application with a modified version of the Linked Version. (If</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   you use option 4d0, the Installation Information must accompany</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   the Minimal Corresponding Source and Corresponding Application</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Code. If you use option 4d1, you must provide the Installation</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   Information in the manner specified by section 6 of the GNU GPL</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   for conveying Corresponding Source.)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  5. Combined Libraries.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  You may place library facilities that are a work based on the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library side by side in a single library together with other library</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">facilities that are not Applications and are not covered by this</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">License, and convey such a combined library under terms of your</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">choice, if you do both of the following:</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   a) Accompany the combined library with a copy of the same work based</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   on the Library, uncombined with any other library facilities,</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   conveyed under the terms of this License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   b) Give prominent notice with the combined library that part of it</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   is a work based on the Library, and explaining where to find the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">   accompanying uncombined form of the same work.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  6. Revised Versions of the GNU Lesser General Public License.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  The Free Software Foundation may publish revised and/or new versions</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License from time to time. Such new</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">versions will be similar in spirit to the present version, but may</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">differ in detail to address new problems or concerns.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  Each version is given a distinguishing version number. If the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library as you received it specifies that a certain numbered version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">of the GNU Lesser General Public License &quot;or any later version&quot;</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">applies to it, you have the option of following the terms and</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">conditions either of that published version or of any later version</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">published by the Free Software Foundation. If the Library as you</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">received it does not specify a version number of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License, you may choose any version of the GNU Lesser</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">General Public License ever published by the Free Software Foundation.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">  If the Library as you received it specifies that a proxy can decide</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">whether future versions of the GNU Lesser General Public License shall</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">apply, that proxy's public statement of acceptance of any version is</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">permanent authorization for you to choose that version for the</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Library.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly及 Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 本软件“按原样”提供,不附带任何明示的或暗含的担保。无论在何种情况下,软件作者对于由于使用本软件所带来的任何损失概不负责。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  任何人都可将本软件用于任何目的(包括商业应用),并随意对软件进行更改或重新   发布,但是受以下条件的限制:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. 不得歪曲本软件的出处;您不得声称原始软件是自己编写的。如果您在某产品中使用了本软件,希望您可以在产品文档中提及,但并非必须。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. 同样,必须标明经过更改的源代码的版本,不得声称其为原创软件。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. 不得从任何源代码发布中将此说明去除或进行修改。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#1a1a1a;">Open-Sankoré  version , Copyright (C) 2010  Open-Sankoré comes with ABSOLUTELY NO WARRANTY.</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#35382a;">    </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">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.</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:9pt; color:#35382a;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#35382a;">You should have received a copy of the GNU General Public License along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message utf8="true">
-        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; color:#3c3c3c;">GIPENA</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Délégation Interministérielle à l'Education Numérique en Afrique</span><span style=" font-size:9pt;"><br /></span><span style=" font-size:9pt; color:#3c3c3c;">20 Avenue Ségur Paris 75007</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">Téléphone : 01 43 17 68 08</span><span style=" font-size:9pt;"><br /><br /></span><span style=" font-size:9pt; color:#3c3c3c;">email: </span><a href="mailto:contact at sankore.org"><span style=" font-size:9pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-size:9pt;"> </span></p></body></html></source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Credits</source>
-        <translation type="unfinished"></translation>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré 1.4版,Copyright (C) 2010-2012促进非洲数码教育公共利益共同体(Groupement d'Intérêt Public pour l'Education Numérique en Afrique,简称GIP ENA)<br /><br />Open-Sankoré为自由软件,您可根据自由软件基金会(Free Software Foundation)发表的第二版或最新版《GNU 通用公共授权》(Lesser GNU general Public Licence,简称GNU LGPL)条款规定,自由传播及/或修改本软件。<br />您可在该网站查询源代码或将源代码上载到该网站:</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré的发行宗旨在于希望该软件能发挥功能,但完全无法(明确或间接)保证其可用于商业用途或满足特殊需求。<br />请查询使用许可页面中的《GNU 通用公共授权》或查询网站 </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">。<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">联系方式 : <br />促进非洲数码教育公共利益共同体<br />非洲数码教育部位综合代表团<br />地址:20 Avenue Ségur Paris 75007<br />电话 : 01 43 17 68 08<br />电邮: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
+</translation>
     </message>
     <message utf8="true">
         <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 <html><head><meta name="qrichtext" content="1" /><style type="text/css">
 p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; font-size:12pt; font-weight:600;">Fonts</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Thanks to Henri ROGELET for Script-École 2, ScriptCase-École, Alphonetic (</span><a href="http://pointecole.free.fr/polices.html"><span style=" font-family:'Arial'; text-decoration: underline; color:#0000ff;">http://pointecole.free.fr/polices.html</span></a><span style=" font-family:'Arial';">).</span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial';">- Andika Copyright (c) 2004-2011, SIL International (http://www.sil.org/). Licensed under the SIL Open Font License, Version 1.1 (http://scripts.sil.org/OFL), with Reserved Font Names &quot;Andika&quot; and &quot;SIL&quot;.</span></p>
-<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Arial'; color:#000000;">- Ecolier CC BY-NC-ND 2.0 (JM Douteau)</span></p></body></html></source>
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/Sankore-3.1/resources/i18n/sankore_zh_CN.ts b/Sankore-3.1/resources/i18n/sankore_zh_CN.ts
new file mode 100644
index 0000000..3159e1a
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_zh_CN.ts
@@ -0,0 +1,3378 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_CN">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>点击回到应用程序</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>下载</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>清空</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>0个项目</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>形式</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>文件名</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>再试一次</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>打开</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>发布播客至Youtube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>标题</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>作者</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>演示板</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>网页</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>文档</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>课程</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>工具面板</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>背景</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>更换背景</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>撤销</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>重复</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>上一页</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>向上翻</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>下一页</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>下一页</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>向下翻</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>管理文档</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>浏览网页</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>粗细</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>细</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>ç²—</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>退出</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>橡皮擦</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>小</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>大</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>颜色</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>后退</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>向左</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>前进</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>向右</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>刷新</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>重新载入最近页</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>主页</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>载入主页</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>书签</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>显示书签</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>书签</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>添加书签</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>显示演示板</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>清除页面</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>清除内容</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>自定义</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>显示自定义</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>图书馆</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>显示图书馆</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>显示桌面</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>显示电脑桌面</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>缩小</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>缩小</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>新建文档</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>新建文档</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>导入</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>导入文档</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>导出</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>导出文件</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>在演示板上打开</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>在演示板上打开页面</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>复制</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>复制所选内容</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>删除所选内容</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Del</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>添加至工作文档</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>添加所选内容至打开文档</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>添加</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>添加内容至文档</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>重命名</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>重命名内容</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>工具</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>显示工具</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>多屏显示</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>宽屏尺寸(16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>宽屏显示文档(16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>标屏尺寸(4/3)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>标屏显示文档(4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>自定义尺寸</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>自定义尺寸显示文档</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>停止载入</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>停止载入网页</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>剪切</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>复制</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>粘贴</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>睡眠</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>使演示屏进入睡眠状态</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>软键盘</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>打开软键盘</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>白色背景</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>白色</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>白色网格背景</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>黑色背景</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>黑色</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>黑色网格背景</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>播客</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>为演讲录制视频</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>录制</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>开始屏幕录制</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>清除项目</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>清除所有项目</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>清除标注</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>清除所有标注</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>清空页面</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>清空所有内容</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>笔</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>标注文档</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>清除批注</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>记号笔</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>高亮</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>选择工具</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>选中并修改素材</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>手型工具</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>滚动页面</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>激光笔</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>模拟激光笔</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>直线</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>文本</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>输入文本</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>截图</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>部分截图</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>添加至最近打开页面</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>添加项目至最近打开页面</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>添加至新页面</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>添加项目至新页面</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>添加至图书馆</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>添加项目至图书馆</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>页面</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>新建页面</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>新页面</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>复制页面</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>复制最近打开页面</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>导入页面</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>导入外部页面</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>暂停</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>暂停录制播客</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>播客设置</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>播客录制设置</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>截取动画</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>截取动画内容</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>截取网页</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>截取网页内容</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>自定义截图</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>窗口截图</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>窗口截图</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>嵌入网页内容 </translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>截取可嵌入的网页内容 </translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>在屏幕上显示</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>在显示屏上显示主屏幕</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>清除所有标注</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>导入eduMedia模拟程序</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>打开课程</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>检查更新</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Quit Open-Sankoré</source>
+        <translation>关闭Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré Editor</source>
+        <translation>Open-Sankoré编辑器</translation>
+    </message>
+    <message utf8="true">
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>显示Open-Sankoré小工具编辑器</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré</source>
+        <translation>隐藏Open-Sankoré</translation>
+    </message>
+    <message utf8="true">
+        <source>Hide Open-Sankoré Application</source>
+        <translation>隐藏Open-Sankoré应用程序</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>导入Uniboard文件</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>导入以前的Sankore或Uniboard文件</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>组合项目</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>播放</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>与项目互动</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>删除背景</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>移除背景</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>组合</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>需要验证</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>用户名:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>密码:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>代理服务器验证</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>连接代理服务器</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>用户名:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>密码:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>保存用户名和密码</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>Element ID = </translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>目标格式不支持该内容。</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>删除页面</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>确定要删除选中文件“%0”中的1页?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>页面大小</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>播客</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>网页</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>有可用的更新,是否登陆更新页面?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>无可用的更新</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>有可用的更新</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>æ›´æ–°</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>下载内容%1失败</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>下载完成</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>未知工具类型%1</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>未知内容类型%1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>添加项目</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>所有支持的(%1)</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>删除文件的%1页</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>已删除%1页</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>增加操作失败文档:文件复制错误</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>组合</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>取消组合</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>添加图片至图书馆出错</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>图像截图</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>高级缓存属性</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>颜色:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>形状:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>大小:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>部分截图</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>全屏截图</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>显示工具面板</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>在第二屏幕显示演示板</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>在第二屏幕显示桌面</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>显示Open-Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>页面%1</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>添加图片文件夹</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>添加图片</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>添加页面来自于文件</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>复制文档%1</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>已复制文档%1</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>删除页面</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>删除文档</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>确定要删除文档“%1”?</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>清空回收站</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>确定要清空回收站?</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>正在清空回收站</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>已清空回收站</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>删除文件夹</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>确定要删除文件夹“%1”及其所有内容?</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>未选中任何文档!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>打开支持的文件</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>导入文件%1……</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>导入文件失败……</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>将所有图片导入文件夹</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>清空</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收站</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>打开文档</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>添加所有图片至文档</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>所有图片(%1)</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>选中对象不包含任何图片文件!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>文档“%1”由一个更新版本的Sankore (%2)生成,打开该文档可能造成部分信息丢失,要继续吗?</translation>
+    </message>
+    <message numerus="yes">
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>
+            <numerusform>确定要删除选中文件“%1”中的%n页?</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>标题页面</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>文件夹中无图像文件</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>未命名文档</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>图片</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>视频</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>素材</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>小工具</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>所有支持的文件(*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>文件%1已保存</translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>正在插入%2的页面%1</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>导入成功。</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>文件%1导入成功。</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>正在导入文件 %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>页面 %0</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>标题页面</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>导出失败</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>取消导出……</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>转化页面%1/%2……</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>尚未填写证书</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>正在上传Sankore文件至网上</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>文档上传成功</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>文档上传失败</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (复制)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>正在复制页面 %1/%2</translation>
+    </message>
+    <message numerus="yes">
+        <source>%1 pages copied</source>
+        <translation>
+            <numerusform>已复制页面%1</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>下载文件</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>导出过程中出现警告</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>导出至IWB</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>以 IWB文件格式导出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>导出成功。</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>导出失败。</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>页面</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>以UBZ文件格式导出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>导出成功</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation>正在导出的%3的%1 %2</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>以Sankore文件格式导出</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>以PDF文件格式导出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>导出成功</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>以PDF文件格式导出</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>以PDF文件格式导出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>导出成功</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>正在导出%2的页面%1</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>以PDF文件格式导出</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>页面</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>以网页数据导出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文档导出中……</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>导出成功</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>导出失败</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>导出到网页浏览器</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>添加至页面</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>设置为背景</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>添加至图书馆</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>素材信息</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>添加至收藏夹</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>分享</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>搜索</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>删除</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>返回上级文件夹</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>从收藏夹中移除</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>新建文件夹</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>重新扫描文件系统</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>已导入图片</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>音频</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>视频</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>图片</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>动画</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>互动</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>应用程序</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>形状</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>收藏夹</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>搜索网络</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收站</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>接受</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>载入中</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>位置锁定</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>宽屏上可见</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>位置锁定</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>宽屏上可见</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>访问内容来源</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><在此键入文本></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>文本颜色</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>可编辑</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>网页</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>载入中……</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>锁定</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>转换为工具</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>常见文件格式 (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>正在导入文件 %1……</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>文件%1导入失败</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>导入成功</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>导入失败</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>正在导入文件%1……</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>导入成功</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>文件%1导入失败</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>图片格式</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>可导入文档格式(*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>PDF导入失败</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>正在导入%2的页面%1</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>视频发布至内部网过程中发生错误 (%1)</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>正在发布至内部网 %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>发布</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>输入</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>确定</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>为在%2的%1输入用户名和密码</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>连接代理服务器失败</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+
+%1
+
+%2
+
+Do you want to ignore these errors for this host?</source>
+        <translation>SSL错误:
+
+%1
+
+%2
+
+是否忽略该服务器的这些问题?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(复制)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>文档库丢失</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore无法进入文档库“%1”。为避免数据出错,应用程序须立即关闭,最近所做的修改也可能丢失。</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>英语</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>俄语</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>德语</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>法语</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>瑞士法语</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>编码器启动失败……</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>没有可用的播客编码器……</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>部分%1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>在桌面上……</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>在文件夹%1中</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>已创建播客%1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>播客录制错误(%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>默认音频输入</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>无音频录制</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>小</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>大</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>发布到内部网</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>发布到Youtube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore视听文件</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>版本:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>使用压感记号笔</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>登录代理服务器</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>用户名:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>密码:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>发布文档至网上</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>标题:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>描述:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>发布</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>我的视频</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>教师</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>学生</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>在此键入任务......</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>在此插入媒体......</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>在此键入标题......</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>在此插入链接标题......</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherBarWidget</name>
+    <message>
+        <source></source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>在此键入标题......</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>在此键入评论.......</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>添加指令</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>添加媒体</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>添加链接</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>页:%0</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>在此键入场次......</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>作者</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>在此键入作者姓名......</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>素材</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>在此键入素材......</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>资源索引</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>关键词</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>在此键入关键字......</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>级别:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>主题:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>类别:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>证书</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>署名</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>禁止演绎</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>相同方式共享</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>非商业用途</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>非商业用途-禁止演绎</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>非商业用途-相同方式共享</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>公共领域</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>版权</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>创建日期:</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>更新日期:</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>标题页面</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>页:%0</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>正在生成缩略图预览……</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>已为%1生成缩略图……</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Mask</source>
+        <translation>幕布</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>ç›´å°º</translation>
+    </message>
+    <message>
+        <source>Compass</source>
+        <translation>圆规</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>量角器</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>三角尺</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>放大镜</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>高级缓存</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>整个页面</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>网页</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>文档更新器</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>文件需要更新</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>备份路径:</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>浏览</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>æ›´æ–°</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>选择备份文件夹</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>文件更新成功!
+请重新启动程序以打开已更新的文件。</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>更新过程中发生错误。文件未被改动。</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>文件更新结果</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>正在更新文件</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>请等待,导入过程即将开始……</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>稍后再提醒我</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>载入中……</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>发布文档至Sankore主页</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>被叫%0(方法=%1, 状态=%2)</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>Youtube验证失败</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>视频上传至Youtube过程中发生错误(%1)</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>正在上传至Youtube %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>上传</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>汽车</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>音乐</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>宠物和动物</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>体育与运动</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>旅游与活动</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>游戏</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>喜剧</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>人物与博客</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>新闻与政治</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>娱乐</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>教育</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>HowTo与时尚</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>非营利与行动主义</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>科学与技术</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>导入以前的Sankore或Uniboard文档</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>没有需要导入的文档</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>清空</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>保存文件</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>取消下载:%1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>打开已保存文件错误:%1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>保存文件错误:%1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>网络错误:%1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>秒</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>分</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>- 还剩下%4 %5</translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%2的%1(%3/秒)%4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <comment>unknown file size</comment>
+        <translation>未知文件大小</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%2的%1-已停止</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>字节</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>1 Download</source>
+        <translation>1个下载</translation>
+    </message>
+    <message>
+        <source>%1 Downloads</source>
+        <comment>always >= 2</comment>
+        <translation>%1个下载</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>标题</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>地址</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>今日早些时候</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1个项目</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>搜索</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>新建标签页</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>复制标签页</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>关闭标签页</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>关闭其它标签页</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>刷新标签页</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>刷新所有标签页</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>最近关闭的标签页</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>空白页</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>搜索</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>无近期搜索</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>近期搜索</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>清除近期搜索历史</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>下载</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>添加至最近打开的文档</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>载入页面错误:%1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>下载PDF文档:下载该PDF文件还是将其添加至最近打开的Sankore文档?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>在新标签页中打开</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>发布播客至Youtube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>标题</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>关键词</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>演示板</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>类别</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>Youtube用户名</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>Youtube密码</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">点击“上传”表示您对上传内容拥有全部版权或得到版权所有人将上传内容公开发表在YouTube上的授权,否则此举违反YouTube服务条款 </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>On Light Background</source>
+        <translation>白色背景</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>黑色背景</translation>
+    </message>
+    <message>
+        <source>Opacity</source>
+        <translation>透明度</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>线宽</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>ç²—</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>细</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>使用压感笔</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>对话</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>标题</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>电子邮箱</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>作者</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>对话</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>标题</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>电子邮箱</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>作者</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>附上可下载的PDF版本</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>附上可下载的Uniboard文件(UBZ)</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>警告:该文件包含视频,无法在网上正常显示</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Uniboard文件</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>自定义</translation>
+    </message>
+    <message utf8="true">
+        <source>version : …</source>
+        <translation>版本:……</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>默认设置</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>关闭</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>显示</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>网页浏览</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>使用外部浏览器</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>主页:</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>软键盘</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>键盘钮大小:</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>工具栏</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>总在最前(平板电脑推荐)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>总在底部(电子白板推荐)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>在按钮下显示文字</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>工具面板</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>横向</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>纵向</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>笔</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>记号笔</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>关于</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>软件更新</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>启动时检查更新</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>证书</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSL</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>网络连接</translation>
+    </message>
+    <message utf8="true">
+        <source>Open-Sankoré</source>
+        <translation>打开的Sankoré页面</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>在第二屏幕或播放器上显示内部网页内容</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>多重显示</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>交换控制显示和查看显示</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>模式</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>启动模式:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>演示板</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>桌面</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Proxy用户:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>密码:</translation>
+    </message>
+    <message utf8="true">
+        <source>Planète Sankoré ID</source>
+        <translation>Planète Sankoré ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>用户:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>密码:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 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.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>版权</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly及 Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;"> 本软件“按原样”提供,不附带任何明示的或暗含的担保。无论在何种情况下,软件作者对于由于使用本软件所带来的任何损失概不负责。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  任何人都可将本软件用于任何目的(包括商业应用),并随意对软件进行更改或重新   发布,但是受以下条件的限制:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. 不得歪曲本软件的出处;您不得声称原始软件是自己编写的。如果您在某产品中使用了本软件,希望您可以在产品文档中提及,但并非必须。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. 同样,必须标明经过更改的源代码的版本,不得声称其为原创软件。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. 不得从任何源代码发布中将此说明去除或进行修改。</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré 1.4版,Copyright (C) 2010-2012促进非洲数码教育公共利益共同体(Groupement d'Intérêt Public pour l'Education Numérique en Afrique,简称GIP ENA)<br /><br />Open-Sankoré为自由软件,您可根据自由软件基金会(Free Software Foundation)发表的第二版或最新版《GNU 通用公共授权》(Lesser GNU general Public Licence,简称GNU LGPL)条款规定,自由传播及/或修改本软件。<br />您可在该网站查询源代码或将源代码上载到该网站:</span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré的发行宗旨在于希望该软件能发挥功能,但完全无法(明确或间接)保证其可用于商业用途或满足特殊需求。<br />请查询使用许可页面中的《GNU 通用公共授权》或查询网站 </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">。<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">联系方式 : <br />促进非洲数码教育公共利益共同体<br />非洲数码教育部位综合代表团<br />地址:20 Avenue Ségur Paris 75007<br />电话 : 01 43 17 68 08<br />电邮: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html>
+</translation>
+    </message>
+    <message utf8="true">
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>截取动画</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>选择要截取的动画</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>空白页</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>应用程序名</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>创建应用程序</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/i18n/sankore_zh_TW.ts b/Sankore-3.1/resources/i18n/sankore_zh_TW.ts
new file mode 100644
index 0000000..069e799
--- /dev/null
+++ b/Sankore-3.1/resources/i18n/sankore_zh_TW.ts
@@ -0,0 +1,3712 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
+<context>
+    <name>BlackoutWidget</name>
+    <message>
+        <source>Click to Return to Application</source>
+        <translation>按滑鼠回到應用程式</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadDialog</name>
+    <message>
+        <source>Downloads</source>
+        <translation>下載</translation>
+    </message>
+    <message>
+        <source>Clean Up</source>
+        <translation>清理乾淨</translation>
+    </message>
+    <message>
+        <source>0 Items</source>
+        <translation>零個項目</translation>
+    </message>
+</context>
+<context>
+    <name>DownloadItem</name>
+    <message>
+        <source>Form</source>
+        <translation>表格</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>檔名</translation>
+    </message>
+    <message>
+        <source>Try Again</source>
+        <translation>再試一次</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <source>Open</source>
+        <translation>é–‹å•Ÿ</translation>
+    </message>
+</context>
+<context>
+    <name>IntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>發佈Podcast至YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>標題</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>作者</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <source>Board</source>
+        <translation>演示版</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>網頁</translation>
+    </message>
+    <message>
+        <source>Documents</source>
+        <translation>文件</translation>
+    </message>
+    <message>
+        <source>Stylus</source>
+        <translation>桌面工具</translation>
+    </message>
+    <message>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <source>Backgrounds</source>
+        <translation>背景</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>文字</translation>
+    </message>
+    <message>
+        <source>Capture</source>
+        <translation>擷取</translation>
+    </message>
+    <message>
+        <source>Add To Current Page</source>
+        <translation>新增至目前頁面</translation>
+    </message>
+    <message>
+        <source>Add To New Page</source>
+        <translation>新增至新頁面</translation>
+    </message>
+    <message>
+        <source>Add To Library</source>
+        <translation>新增至圖書館</translation>
+    </message>
+    <message>
+        <source>Pages</source>
+        <translation>頁面</translation>
+    </message>
+    <message>
+        <source>New Page</source>
+        <translation>新頁面</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>回復</translation>
+    </message>
+    <message>
+        <source>Change Background</source>
+        <translation>更換背景</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>重做</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <source>Previous</source>
+        <translation>上一頁</translation>
+    </message>
+    <message>
+        <source>Previous Page</source>
+        <translation>上一頁</translation>
+    </message>
+    <message>
+        <source>PgUp</source>
+        <translation>往上</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>下一頁</translation>
+    </message>
+    <message>
+        <source>Next Page</source>
+        <translation>下一頁</translation>
+    </message>
+    <message>
+        <source>PgDown</source>
+        <translation>往下</translation>
+    </message>
+    <message>
+        <source>Manage Documents</source>
+        <translation>文件管理</translation>
+    </message>
+    <message>
+        <source>Ctrl+D</source>
+        <translation>Ctrl+D</translation>
+    </message>
+    <message>
+        <source>Web Browsing</source>
+        <translation>網頁瀏覽</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <source>Small Line</source>
+        <translation>ç´°</translation>
+    </message>
+    <message>
+        <source>Medium Line</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Large Line</source>
+        <translation>ç²—</translation>
+    </message>
+    <message>
+        <source>Smalle Eraser</source>
+        <translation>ç´°</translation>
+    </message>
+    <message>
+        <source>Medium Eraser</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Large Eraser</source>
+        <translation>ç²—</translation>
+    </message>
+    <message>
+        <source>Reload Current Page</source>
+        <translation>重新載入目前頁面</translation>
+    </message>
+    <message>
+        <source>Load Home Page</source>
+        <translation>載入主頁</translation>
+    </message>
+    <message>
+        <source>Show Bookmarks</source>
+        <translation>顯示書籤</translation>
+    </message>
+    <message>
+        <source>Add Bookmark</source>
+        <translation>新增書籤</translation>
+    </message>
+    <message>
+        <source>Display Board</source>
+        <translation>顯示演示板</translation>
+    </message>
+    <message>
+        <source>Erase Content</source>
+        <translation>清除內容</translation>
+    </message>
+    <message>
+        <source>Display Preferences</source>
+        <translation>顯示偏好設定</translation>
+    </message>
+    <message>
+        <source>Show Library</source>
+        <translation>顯示圖書館</translation>
+    </message>
+    <message>
+        <source>Show Computer Desktop</source>
+        <translation>顯示本機桌面</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+    <message>
+        <source>Create a New Folder</source>
+        <translation>新建檔案夾</translation>
+    </message>
+    <message>
+        <source>Create a New Document</source>
+        <translation>建立新文件</translation>
+    </message>
+    <message>
+        <source>Import a Document</source>
+        <translation>匯入文件</translation>
+    </message>
+    <message>
+        <source>Export a Document</source>
+        <translation>匯出文件</translation>
+    </message>
+    <message>
+        <source>Open Page in Board</source>
+        <translation>於演示板開啟頁面</translation>
+    </message>
+    <message>
+        <source>Duplicate Selected Content</source>
+        <translation>複製所選內容</translation>
+    </message>
+    <message>
+        <source>Delete Selected Content</source>
+        <translation>刪除所選內容</translation>
+    </message>
+    <message>
+        <source>Add Content to Document</source>
+        <translation>新增內容至文件</translation>
+    </message>
+    <message>
+        <source>Rename Content</source>
+        <translation>重新命名內容</translation>
+    </message>
+    <message>
+        <source>Display Tools</source>
+        <translation>顯示工具</translation>
+    </message>
+    <message>
+        <source>Use Document Wide Size (16/9)</source>
+        <translation>採寬尺寸文件(16/9)</translation>
+    </message>
+    <message>
+        <source>Use Document Regular Size (4/3)</source>
+        <translation>採一般尺寸文件 (4/3)</translation>
+    </message>
+    <message>
+        <source>Use Custom Document Size</source>
+        <translation>自訂文件尺寸</translation>
+    </message>
+    <message>
+        <source>Stop Loading Web Page</source>
+        <translation>停止載入網頁</translation>
+    </message>
+    <message>
+        <source>Put Presentation to Sleep</source>
+        <translation>演示進入睡眠狀態</translation>
+    </message>
+    <message>
+        <source>Display Virtual Keyboard</source>
+        <translation>顯示虛擬鍵盤</translation>
+    </message>
+    <message>
+        <source>Record Presentation to Video</source>
+        <translation>錄製演示影片</translation>
+    </message>
+    <message>
+        <source>Erase Items</source>
+        <translation>清除項目</translation>
+    </message>
+    <message>
+        <source>Erase All Items</source>
+        <translation>清除所有項目</translation>
+    </message>
+    <message>
+        <source>Erase Annotations</source>
+        <translation>清除桌面標注</translation>
+    </message>
+    <message>
+        <source>Erase All Annotations</source>
+        <translation>清除所有桌面標注</translation>
+    </message>
+    <message>
+        <source>Clear All Elements</source>
+        <translation>清空所有元件</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>電子筆</translation>
+    </message>
+    <message>
+        <source>Annotate Document</source>
+        <translation>標注文件</translation>
+    </message>
+    <message>
+        <source>Ctrl+I</source>
+        <translation>Ctrl+I</translation>
+    </message>
+    <message>
+        <source>Erase Annotation</source>
+        <translation>清除桌面標注</translation>
+    </message>
+    <message>
+        <source>Ctrl+E</source>
+        <translation>Ctrl+E</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>提示筆</translation>
+    </message>
+    <message>
+        <source>Highlight </source>
+        <translation>亮點</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Selector</source>
+        <translation>選擇器</translation>
+    </message>
+    <message>
+        <source>Select And Modify Objects</source>
+        <translation>選擇並修改物件</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>Hand</source>
+        <translation>手型工具</translation>
+    </message>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>部份截圖</translation>
+    </message>
+    <message>
+        <source>Custom Capture</source>
+        <translation>自訂截圖範圍</translation>
+    </message>
+    <message>
+        <source>Capture a Window</source>
+        <translation>擷取視窗</translation>
+    </message>
+    <message>
+        <source>Embed Web Content</source>
+        <translation>嵌入網頁內容</translation>
+    </message>
+    <message>
+        <source>Capture Embeddable Web Content</source>
+        <translation>擷取可嵌入的網頁內容</translation>
+    </message>
+    <message>
+        <source>Show Main Screen on Display Screen</source>
+        <translation>在顯示器上顯示主螢幕</translation>
+    </message>
+    <message>
+        <source>Erase all Annotations</source>
+        <translation>清除所有桌面標注</translation>
+    </message>
+    <message>
+        <source>eduMedia</source>
+        <translation>eduMedia</translation>
+    </message>
+    <message>
+        <source>Import eduMedia simulation</source>
+        <translation>匯入eduMedia模擬程序</translation>
+    </message>
+    <message>
+        <source>Open the tutorial</source>
+        <translation>開啟教學檔</translation>
+    </message>
+    <message>
+        <source>Check Update</source>
+        <translation>更新檢查</translation>
+    </message>
+    <message>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <source>Zoom In</source>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <source>Zoom Out</source>
+        <translation>縮小</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>線條粗細</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>停止</translation>
+    </message>
+    <message>
+        <source>Eraser</source>
+        <translation>橡皮擦</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>顏色</translation>
+    </message>
+    <message>
+        <source>Back</source>
+        <translation>退回</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>向左</translation>
+    </message>
+    <message>
+        <source>Forward</source>
+        <translation>前進</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>向右</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation>重新載入</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation>主頁</translation>
+    </message>
+    <message>
+        <source>Bookmarks</source>
+        <translation>書籤</translation>
+    </message>
+    <message>
+        <source>Bookmark</source>
+        <translation>書籤</translation>
+    </message>
+    <message>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <source>Clear Page</source>
+        <translation>清空頁面</translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation>偏好設定</translation>
+    </message>
+    <message>
+        <source>Tutorial</source>
+        <translation>教學檔</translation>
+    </message>
+    <message>
+        <source>Erase</source>
+        <translation>清除</translation>
+    </message>
+    <message>
+        <source>Library</source>
+        <translation>圖書館</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <translation>Ctrl+L</translation>
+    </message>
+    <message>
+        <source>Show Desktop</source>
+        <translation>顯示桌面</translation>
+    </message>
+    <message>
+        <source>Bigger</source>
+        <translation>放大</translation>
+    </message>
+    <message>
+        <source>Ctrl++</source>
+        <translation>Ctrl++</translation>
+    </message>
+    <message>
+        <source>Smaller</source>
+        <translation>縮小</translation>
+    </message>
+    <message>
+        <source>Ctrl+-</source>
+        <translation>Ctrl+-</translation>
+    </message>
+    <message>
+        <source>New Folder</source>
+        <translation>新檔案夾</translation>
+    </message>
+    <message>
+        <source>New Document</source>
+        <translation>新文件</translation>
+    </message>
+    <message>
+        <source>Import</source>
+        <translation>匯入</translation>
+    </message>
+    <message>
+        <source>Export</source>
+        <translation>匯出</translation>
+    </message>
+    <message>
+        <source>Open in Board</source>
+        <translation>於演示板開啟</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Duplicate</source>
+        <translation>複製</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>刪除</translation>
+    </message>
+    <message>
+        <source>Del</source>
+        <translation>Del</translation>
+    </message>
+    <message>
+        <source>Add to Working Document</source>
+        <translation>新增至運作中文件</translation>
+    </message>
+    <message>
+        <source>Add Selected Content to Open Document</source>
+        <translation>新增所選內容至開啟的文件</translation>
+    </message>
+    <message>
+        <source>Add</source>
+        <translation>新增</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>重新命名</translation>
+    </message>
+    <message>
+        <source>Cut</source>
+        <translation>剪下</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation>複製</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation>貼上</translation>
+    </message>
+    <message>
+        <source>Grid Light Background</source>
+        <translation>淡色網格背景</translation>
+    </message>
+    <message>
+        <source>Grid Dark Background</source>
+        <translation>深色網格背景</translation>
+    </message>
+    <message>
+        <source>Start Screen Recording</source>
+        <translation>開始螢幕錄影</translation>
+    </message>
+    <message>
+        <source>Scroll Page</source>
+        <translation>捲動頁面</translation>
+    </message>
+    <message>
+        <source>Laser Pointer</source>
+        <translation>簡報筆</translation>
+    </message>
+    <message>
+        <source>Virtual Laser Pointer</source>
+        <translation>虛擬簡報筆</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Draw Lines</source>
+        <translation>繪線</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Write Text</source>
+        <translation>文字書寫</translation>
+    </message>
+    <message>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <source>Add Item To Current Page</source>
+        <translation>新增項目至目前頁面</translation>
+    </message>
+    <message>
+        <source>Add Item To New Page</source>
+        <translation>新增項目至新頁面</translation>
+    </message>
+    <message>
+        <source>Add Item To Library</source>
+        <translation>新增項目至圖書館</translation>
+    </message>
+    <message>
+        <source>Create a New Page</source>
+        <translation>建立新頁面</translation>
+    </message>
+    <message>
+        <source>Duplicate Page</source>
+        <translation>複製頁面</translation>
+    </message>
+    <message>
+        <source>Duplicate the Current Page</source>
+        <translation>複製目前頁面</translation>
+    </message>
+    <message>
+        <source>Import Page</source>
+        <translation>匯入頁面</translation>
+    </message>
+    <message>
+        <source>Import an External Page</source>
+        <translation>匯入外部頁面</translation>
+    </message>
+    <message>
+        <source>Pause</source>
+        <translation>暫停</translation>
+    </message>
+    <message>
+        <source>Pause Podcast Recording</source>
+        <translation>暫停錄製Podcast</translation>
+    </message>
+    <message>
+        <source>Podcast Config</source>
+        <translation>Podcast設定</translation>
+    </message>
+    <message>
+        <source>Configure Podcast Recording</source>
+        <translation>Podcast錄製設定</translation>
+    </message>
+    <message>
+        <source>Flash Trap</source>
+        <translation>Flash動畫擷取</translation>
+    </message>
+    <message>
+        <source>Trap Flash Content</source>
+        <translation>擷取Flash動畫內容</translation>
+    </message>
+    <message>
+        <source>Web Trap</source>
+        <translation>網頁擷取</translation>
+    </message>
+    <message>
+        <source>Trap Web Content</source>
+        <translation>擷取網頁內容</translation>
+    </message>
+    <message>
+        <source>Window Capture</source>
+        <translation>螢幕擷取</translation>
+    </message>
+    <message>
+        <source>Show on Display</source>
+        <translation>於顯示器上顯示</translation>
+    </message>
+    <message>
+        <source>Sleep</source>
+        <translation>睡眠狀態</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>虛擬鍵盤</translation>
+    </message>
+    <message>
+        <source>Plain Light Background</source>
+        <translation>淡色背景</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>淡色</translation>
+    </message>
+    <message>
+        <source>Plain Dark Background</source>
+        <translation>深色背景</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>深色</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+    <message>
+        <source>Record</source>
+        <translation>錄製</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>工具</translation>
+    </message>
+    <message>
+        <source>Multi Screen</source>
+        <translation>多螢幕顯示</translation>
+    </message>
+    <message>
+        <source>Wide Size (16/9)</source>
+        <translation>寬螢幕顯示(16/9)</translation>
+    </message>
+    <message>
+        <source>Regular Size (4/3)</source>
+        <translation>一般螢幕顯示(4/3)</translation>
+    </message>
+    <message>
+        <source>Custom Size</source>
+        <translation>自訂螢幕大小</translation>
+    </message>
+    <message>
+        <source>Stop Loading</source>
+        <translation>停止載入</translation>
+    </message>
+    <message>
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Quit Open-Sankoré</source>
+        <translation>退出Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Open-Sankoré Editor</source>
+        <translation>Open-Sankoré編輯器</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankoré Widgets Editor</source>
+        <translation>顯示Open-Sankoré小工具編輯器</translation>
+    </message>
+    <message>
+        <source>Hide Open-Sankoré</source>
+        <translation>隱藏Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Hide Open-Sankoré Application</source>
+        <translation>隱藏Open-Sankoré應用程式</translation>
+    </message>
+    <message>
+        <source>Import Uniboard Documents</source>
+        <translation>匯入Uniboard文件</translation>
+    </message>
+    <message>
+        <source>Import old Sankore or Uniboard documents</source>
+        <translation>匯入舊Sankore或Uniboard文件</translation>
+    </message>
+    <message>
+        <source>Group items</source>
+        <translation>群組</translation>
+    </message>
+    <message>
+        <source>Play</source>
+        <translation>播放</translation>
+    </message>
+    <message>
+        <source>Interact with items</source>
+        <translation>互動</translation>
+    </message>
+    <message>
+        <source>Erase Background</source>
+        <translation>清除背景</translation>
+    </message>
+    <message>
+        <source>Remove the backgound</source>
+        <translation>移除背景</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>群組</translation>
+    </message>
+</context>
+<context>
+    <name>PasswordDialog</name>
+    <message>
+        <source>Authentication Required</source>
+        <translation>需要驗證</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>帳號:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>密碼:</translation>
+    </message>
+</context>
+<context>
+    <name>ProxyDialog</name>
+    <message>
+        <source>Proxy Authentication</source>
+        <translation>Proxyé©—è­‰</translation>
+    </message>
+    <message>
+        <source>Connect to Proxy</source>
+        <translation>連接至Proxy</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>帳號:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>密碼:</translation>
+    </message>
+    <message>
+        <source>Save username and password for future use</source>
+        <translation>儲存帳號密碼</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <source>Element ID = </source>
+        <translation>元件ID =</translation>
+    </message>
+    <message>
+        <source>Content is not supported in destination format.</source>
+        <translation>內容格式不支援。</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>移除頁面</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove 1 page from the selected document '%0'?</source>
+        <translation>確定要移除所選文件 '%0' 的一個頁面 ?</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplication</name>
+    <message>
+        <source>Page Size</source>
+        <translation>頁面大小</translation>
+    </message>
+    <message>
+        <source>Podcast</source>
+        <translation>Podcast</translation>
+    </message>
+</context>
+<context>
+    <name>UBApplicationController</name>
+    <message>
+        <source>Web</source>
+        <translation>網頁</translation>
+    </message>
+    <message>
+        <source>New update available, would you go to the web page ?</source>
+        <translation>可更新,要上網頁嗎?</translation>
+    </message>
+    <message>
+        <source>No update available</source>
+        <translation>目前並無更新</translation>
+    </message>
+    <message>
+        <source>Update available</source>
+        <translation>目前可更新</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>æ›´æ–°</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardController</name>
+    <message>
+        <source>Downloading content %1 failed</source>
+        <translation>目前 %1 下載失敗</translation>
+    </message>
+    <message>
+        <source>Download finished</source>
+        <translation>下載完成</translation>
+    </message>
+    <message>
+        <source>Unknown tool type %1</source>
+        <translation>陌生工具型態 %1</translation>
+    </message>
+    <message>
+        <source>Add Item</source>
+        <translation>新增項目</translation>
+    </message>
+    <message>
+        <source>All Supported (%1)</source>
+        <translation>全部已支援(%1)</translation>
+    </message>
+    <message>
+        <source>Unknown content type %1</source>
+        <translation>陌生內容型態 %1</translation>
+    </message>
+    <message>
+        <source>Delete page %1 from document</source>
+        <translation>刪除文件的第 %1 頁</translation>
+    </message>
+    <message>
+        <source>Page %1 deleted</source>
+        <translation>已刪除第 %1 頁</translation>
+    </message>
+    <message>
+        <source>Add file operation failed: file copying error</source>
+        <translation>新增檔案失敗:檔案複製有錯誤</translation>
+    </message>
+    <message>
+        <source>Group</source>
+        <translation>群組</translation>
+    </message>
+    <message>
+        <source>Ungroup</source>
+        <translation>取消群組</translation>
+    </message>
+</context>
+<context>
+    <name>UBBoardPaletteManager</name>
+    <message>
+        <source>Error Adding Image to Library</source>
+        <translation>錯誤新增圖像至圖書館</translation>
+    </message>
+    <message>
+        <source>CapturedImage</source>
+        <translation>圖像擷取</translation>
+    </message>
+</context>
+<context>
+    <name>UBCachePropertiesWidget</name>
+    <message>
+        <source>Cache Properties</source>
+        <translation>Cache屬性</translation>
+    </message>
+    <message>
+        <source>Color:</source>
+        <translation>顏色:</translation>
+    </message>
+    <message>
+        <source>Shape:</source>
+        <translation>形狀:</translation>
+    </message>
+    <message>
+        <source>Size:</source>
+        <translation>大小:</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>關閉</translation>
+    </message>
+</context>
+<context>
+    <name>UBDesktopPalette</name>
+    <message>
+        <source>Capture Part of the Screen</source>
+        <translation>擷取部份螢幕</translation>
+    </message>
+    <message>
+        <source>Capture the Screen</source>
+        <translation>擷取螢幕</translation>
+    </message>
+    <message>
+        <source>Show the stylus palette</source>
+        <translation>顯示桌面工具</translation>
+    </message>
+    <message>
+        <source>Show Board on Secondary Screen</source>
+        <translation>於第二螢幕顯示演示板</translation>
+    </message>
+    <message>
+        <source>Show Desktop on Secondary Screen</source>
+        <translation>於第二螢幕顯示桌面</translation>
+    </message>
+    <message>
+        <source>Show Open-Sankore</source>
+        <translation>顯示Open-Sankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentController</name>
+    <message>
+        <source>New Folder</source>
+        <translation>新檔案夾</translation>
+    </message>
+    <message>
+        <source>Page %1</source>
+        <translation>第 %1 頁</translation>
+    </message>
+    <message>
+        <source>Add Folder of Images</source>
+        <translation>新增圖像檔案夾</translation>
+    </message>
+    <message>
+        <source>Add Images</source>
+        <translation>新增圖像</translation>
+    </message>
+    <message>
+        <source>Add Pages from File</source>
+        <translation>從檔案新增頁面</translation>
+    </message>
+    <message>
+        <source>Duplicating Document %1</source>
+        <translation>文件 %1 複製中</translation>
+    </message>
+    <message>
+        <source>Document %1 copied</source>
+        <translation>文件 %1 已複製</translation>
+    </message>
+    <message>
+        <source>Remove Page</source>
+        <translation>移除頁面</translation>
+    </message>
+    <message>
+        <source>Remove Document</source>
+        <translation>移除文件</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the document '%1'?</source>
+        <translation>確定要移除文件 '%1'?</translation>
+    </message>
+    <message>
+        <source>Empty Trash</source>
+        <translation>清空回收桶</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to empty trash?</source>
+        <translation>確定要清空回收桶?</translation>
+    </message>
+    <message>
+        <source>Emptying trash</source>
+        <translation>回收桶清空中</translation>
+    </message>
+    <message>
+        <source>Emptied trash</source>
+        <translation>回收桶已清空</translation>
+    </message>
+    <message>
+        <source>Remove Folder</source>
+        <translation>移除檔案夾</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove the folder '%1' and all its content?</source>
+        <translation>確定要移除檔案夾 '%1' 及其所有內容?</translation>
+    </message>
+    <message>
+        <source>No document selected!</source>
+        <translation>未選擇任何文件!</translation>
+    </message>
+    <message>
+        <source>Open Supported File</source>
+        <translation>開啟支援的檔案</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>檔案 %1 匯入中...</translation>
+    </message>
+    <message>
+        <source>Failed to import file ... </source>
+        <translation>匯入檔案失敗...</translation>
+    </message>
+    <message>
+        <source>Import all Images from Folder</source>
+        <translation>從檔案夾匯入所有圖像</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>刪除</translation>
+    </message>
+    <message>
+        <source>Empty</source>
+        <translation>清空</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收桶</translation>
+    </message>
+    <message>
+        <source>Open Document</source>
+        <translation>開啟文件</translation>
+    </message>
+    <message>
+        <source>Add all Images to Document</source>
+        <translation>新增所有圖像至文件</translation>
+    </message>
+    <message>
+        <source>All Images (%1)</source>
+        <translation>所有圖像( %1 )</translation>
+    </message>
+    <message>
+        <source>Selection does not contain any image files!</source>
+        <translation>所選內容並沒有圖像檔!</translation>
+    </message>
+    <message>
+        <source>The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source>
+        <translation>文件 '%1' 係由新版的Sankore (%2)所製作。若仍要開啟,可能會損失部份內容。確定要進行嗎?</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to remove %n page(s) from the selected document '%1'?</source>
+        <translation>確定要從所選文件 '%1' 移除 %n 個頁面?</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>標題頁面</translation>
+    </message>
+    <message>
+        <source>Folder does not contain any image files</source>
+        <translation>檔案夾並沒有圖像檔</translation>
+    </message>
+    <message>
+        <source>Untitled Documents</source>
+        <translation>未命名文件</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentManager</name>
+    <message>
+        <source>images</source>
+        <translation>圖像</translation>
+    </message>
+    <message>
+        <source>videos</source>
+        <translation>影片</translation>
+    </message>
+    <message>
+        <source>objects</source>
+        <translation>物件</translation>
+    </message>
+    <message>
+        <source>widgets</source>
+        <translation>小工具</translation>
+    </message>
+    <message>
+        <source>All supported files (*.%1)</source>
+        <translation>所有支援的檔案 (*.%1)</translation>
+    </message>
+    <message>
+        <source>File %1 saved</source>
+        <translation>已儲存檔案 %1 </translation>
+    </message>
+    <message>
+        <source>Inserting page %1 of %2</source>
+        <translation>頁面 %2 的 %1 插入中</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>匯入成功。</translation>
+    </message>
+    <message>
+        <source>Import of file %1 successful.</source>
+        <translation>檔案 %1 匯入成功。</translation>
+    </message>
+    <message>
+        <source>Importing file %1</source>
+        <translation>匯入檔案 %1</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentNavigator</name>
+    <message>
+        <source>Page %0</source>
+        <translation>第 %0 頁</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>標題頁</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentPublisher</name>
+    <message>
+        <source>Export failed.</source>
+        <translation>匯出失敗。</translation>
+    </message>
+    <message>
+        <source>Export canceled ...</source>
+        <translation>已取消匯出...</translation>
+    </message>
+    <message>
+        <source>Converting page %1/%2 ...</source>
+        <translation>轉換頁面 %1/%2 ...</translation>
+    </message>
+    <message>
+        <source>Credentials has to not been filled out yet.</source>
+        <translation>尚未處理驗證。</translation>
+    </message>
+    <message>
+        <source>Uploading Sankore File on Web.</source>
+        <translation>Sankore檔案上傳至網際網路中。</translation>
+    </message>
+    <message>
+        <source>Document uploaded correctly on the web.</source>
+        <translation>文件已正確上傳至網際網路。</translation>
+    </message>
+    <message>
+        <source>Failed to upload document on the web.</source>
+        <translation>文件上傳至網際網路失敗。</translation>
+    </message>
+</context>
+<context>
+    <name>UBDocumentTreeWidget</name>
+    <message>
+        <source>%1 (copy)</source>
+        <translation>%1 (copy)</translation>
+    </message>
+    <message>
+        <source>Copying page %1/%2</source>
+        <translation>頁面 %1/%2 複製中</translation>
+    </message>
+    <message>
+        <source>%1 pages copied</source>
+        <translation>已複製 %1 個頁面</translation>
+    </message>
+</context>
+<context>
+    <name>UBDownloadWidget</name>
+    <message>
+        <source>Downloading files</source>
+        <translation>檔案下載中</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportAdaptor</name>
+    <message>
+        <source>Warnings during export was appeared</source>
+        <translation>匯出過程出現警告</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportCFF</name>
+    <message>
+        <source>Export to IWB</source>
+        <translation>匯出至IWB</translation>
+    </message>
+    <message>
+        <source>Export as IWB File</source>
+        <translation>以IWB格式匯出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>匯出文件...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>成功匯出。</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>匯出失敗。</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportDocument</name>
+    <message>
+        <source>Page</source>
+        <translation>頁面</translation>
+    </message>
+    <message>
+        <source>Export as UBZ File</source>
+        <translation>以UBZ格式匯出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>文件匯出中...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>匯出成功。</translation>
+    </message>
+    <message>
+        <source>Exporting %1 %2 of %3</source>
+        <translation> %3 的 %1 %2 匯出中</translation>
+    </message>
+    <message>
+        <source>Export to Sankore Format</source>
+        <translation>匯出成Sankore格式</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportFullPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>以PDF格式匯出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>匯出文件中...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>匯出成PDF</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>匯出成功。</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportPDF</name>
+    <message>
+        <source>Export as PDF File</source>
+        <translation>以PDF格式匯出</translation>
+    </message>
+    <message>
+        <source>Exporting page %1 of %2</source>
+        <translation>頁面 %2 的 %1 匯出中</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>匯出成功。</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>匯出文件中...</translation>
+    </message>
+    <message>
+        <source>Export to PDF</source>
+        <translation>匯出成PDF</translation>
+    </message>
+</context>
+<context>
+    <name>UBExportWeb</name>
+    <message>
+        <source>Page</source>
+        <translation>頁面</translation>
+    </message>
+    <message>
+        <source>Export as Web data</source>
+        <translation>以網頁資料格式匯出</translation>
+    </message>
+    <message>
+        <source>Exporting document...</source>
+        <translation>匯出文件中...</translation>
+    </message>
+    <message>
+        <source>Export successful.</source>
+        <translation>匯出成功。</translation>
+    </message>
+    <message>
+        <source>Export failed.</source>
+        <translation>匯出失敗。</translation>
+    </message>
+    <message>
+        <source>Export to Web Browser</source>
+        <translation>匯出成網頁瀏覽</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeatureProperties</name>
+    <message>
+        <source>Add to page</source>
+        <translation>新增至頁面</translation>
+    </message>
+    <message>
+        <source>Set as background</source>
+        <translation>設定成背景</translation>
+    </message>
+    <message>
+        <source>Add to library</source>
+        <translation>新增至圖書館</translation>
+    </message>
+    <message>
+        <source>Object informations</source>
+        <translation>物件資訊</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesActionBar</name>
+    <message>
+        <source>Add to favorites</source>
+        <translation>新增至我的最愛</translation>
+    </message>
+    <message>
+        <source>Share</source>
+        <translation>分享</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>搜尋</translation>
+    </message>
+    <message>
+        <source>Delete</source>
+        <translation>刪除</translation>
+    </message>
+    <message>
+        <source>Back to folder</source>
+        <translation>回到檔案夾</translation>
+    </message>
+    <message>
+        <source>Remove from favorites</source>
+        <translation>從我的最愛移除</translation>
+    </message>
+    <message>
+        <source>Create new folder</source>
+        <translation>新建檔案夾</translation>
+    </message>
+    <message>
+        <source>Rescan file system</source>
+        <translation>重新掃描檔案系統</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesController</name>
+    <message>
+        <source>ImportedImage</source>
+        <translation>匯入的圖像</translation>
+    </message>
+    <message>
+        <source>Audios</source>
+        <translation>音訊</translation>
+    </message>
+    <message>
+        <source>Movies</source>
+        <translation>影片</translation>
+    </message>
+    <message>
+        <source>Pictures</source>
+        <translation>圖案</translation>
+    </message>
+    <message>
+        <source>Animations</source>
+        <translation>å‹•ç•«</translation>
+    </message>
+    <message>
+        <source>Interactivities</source>
+        <translation>互動</translation>
+    </message>
+    <message>
+        <source>Applications</source>
+        <translation>應用程式</translation>
+    </message>
+    <message>
+        <source>Shapes</source>
+        <translation>形狀</translation>
+    </message>
+    <message>
+        <source>Favorites</source>
+        <translation>我的最愛</translation>
+    </message>
+    <message>
+        <source>Web search</source>
+        <translation>網路搜尋</translation>
+    </message>
+    <message>
+        <source>Trash</source>
+        <translation>回收桶</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesNewFolderDialog</name>
+    <message>
+        <source>Accept</source>
+        <translation>接受</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>取消</translation>
+    </message>
+    <message>
+        <source>Enter a new folder name</source>
+        <translation>鍵入檔案名稱</translation>
+    </message>
+</context>
+<context>
+    <name>UBFeaturesProgressInfo</name>
+    <message>
+        <source>Loading </source>
+        <translation>載入中</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsGroupContainerItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>鎖定</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>於延伸螢幕可見</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsItemDelegate</name>
+    <message>
+        <source>Locked</source>
+        <translation>鎖定</translation>
+    </message>
+    <message>
+        <source>Visible on Extended Screen</source>
+        <translation>於延伸螢幕可見</translation>
+    </message>
+    <message>
+        <source>Go to Content Source</source>
+        <translation>至內容來源</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItem</name>
+    <message>
+        <source><Type Text Here></source>
+        <translation><此處鍵入文字></translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsTextItemDelegate</name>
+    <message>
+        <source>Text Color</source>
+        <translation>文字顏色</translation>
+    </message>
+    <message>
+        <source>Editable</source>
+        <translation>可編輯</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsW3CWidgetItem</name>
+    <message>
+        <source>Web</source>
+        <translation>網路</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItem</name>
+    <message>
+        <source>Loading ...</source>
+        <translation>載入中...</translation>
+    </message>
+</context>
+<context>
+    <name>UBGraphicsWidgetItemDelegate</name>
+    <message>
+        <source>Frozen</source>
+        <translation>凍結</translation>
+    </message>
+    <message>
+        <source>Transform as Tool </source>
+        <translation>轉換為工具</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportCFF</name>
+    <message>
+        <source>Common File Format (</source>
+        <translation>常見檔案格式 (</translation>
+    </message>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>檔案 %1 匯入中...</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>檔案 %1 匯入失敗。</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>匯入成功。</translation>
+    </message>
+    <message>
+        <source>Import failed.</source>
+        <translation>匯入失敗。</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportDocument</name>
+    <message>
+        <source>Importing file %1...</source>
+        <translation>檔案 %1 匯入中...</translation>
+    </message>
+    <message>
+        <source>Import successful.</source>
+        <translation>匯入成功。</translation>
+    </message>
+    <message>
+        <source>Import of file %1 failed.</source>
+        <translation>檔案 %1 匯入失敗。</translation>
+    </message>
+    <message>
+        <source>Open-Sankore (*.ubz)</source>
+        <translation>Open-Sankore (*.ubz)</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportImage</name>
+    <message>
+        <source>Image Format (</source>
+        <translation>圖像格式(</translation>
+    </message>
+</context>
+<context>
+    <name>UBImportPDF</name>
+    <message>
+        <source>Portable Document Format (*.pdf)</source>
+        <translation>Portable Document Format (*.pdf)</translation>
+    </message>
+    <message>
+        <source>PDF import failed.</source>
+        <translation>PDF匯入失敗。</translation>
+    </message>
+    <message>
+        <source>Importing page %1 of %2</source>
+        <translation>頁面 %2 的 %1 匯入中</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublisher</name>
+    <message>
+        <source>Error while publishing video to intranet (%1)</source>
+        <translation>影片發佈到內部網路 (%1) 時有錯誤</translation>
+    </message>
+    <message>
+        <source>Publishing to Intranet in progress %1 %</source>
+        <translation>發佈到內部網路中 %1 %</translation>
+    </message>
+</context>
+<context>
+    <name>UBIntranetPodcastPublishingDialog</name>
+    <message>
+        <source>Publish</source>
+        <translation>發佈</translation>
+    </message>
+</context>
+<context>
+    <name>UBKeyboardPalette</name>
+    <message>
+        <source>Enter</source>
+        <translation>鍵入</translation>
+    </message>
+</context>
+<context>
+    <name>UBMainWindow</name>
+    <message>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+</context>
+<context>
+    <name>UBMessagesDialog</name>
+    <message>
+        <source>Close</source>
+        <translation>關閉</translation>
+    </message>
+</context>
+<context>
+    <name>UBNetworkAccessManager</name>
+    <message>
+        <source><qt>Enter username and password for "%1" at %2</qt></source>
+        <translation><qt>輸入 "%1" 在 %2 的帳號密碼</qt></translation>
+    </message>
+    <message>
+        <source>Failed to log to Proxy</source>
+        <translation>登入Proxy失敗</translation>
+    </message>
+    <message>
+        <source>SSL Errors:
+%1
+%2
+Do you want to ignore these errors for this host?</source>
+        <translation>SSL Errors:
+%1
+%2
+ 要忽略這些訊息嗎?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>是</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>否</translation>
+    </message>
+</context>
+<context>
+    <name>UBPersistenceManager</name>
+    <message>
+        <source>(copy)</source>
+        <translation>(複製)</translation>
+    </message>
+    <message>
+        <source>Document Repository Loss</source>
+        <translation>文件資料庫遺失</translation>
+    </message>
+    <message>
+        <source>Sankore has lost access to the document repository '%1'. Unfortunately the application must shut down to avoid data corruption. Latest changes may be lost as well.</source>
+        <translation>Sankore已經與文件資料庫 '%1' 失去連繫. 很不幸本程式必須關閉以免資料毀損,相對的變動也將無效。</translation>
+    </message>
+</context>
+<context>
+    <name>UBPlatformUtils</name>
+    <message>
+        <source>English</source>
+        <translation>英文</translation>
+    </message>
+    <message>
+        <source>Russian</source>
+        <translation>ä¿„æ–‡</translation>
+    </message>
+    <message>
+        <source>German</source>
+        <translation>å¾·æ–‡</translation>
+    </message>
+    <message>
+        <source>French</source>
+        <translation>法文</translation>
+    </message>
+    <message>
+        <source>Swiss French</source>
+        <translation>法文(瑞士)</translation>
+    </message>
+</context>
+<context>
+    <name>UBPodcastController</name>
+    <message>
+        <source>Failed to start encoder ...</source>
+        <translation>編碼器(encoder)啟動失敗...</translation>
+    </message>
+    <message>
+        <source>No Podcast encoder available ...</source>
+        <translation>沒有可用的Podcast編碼器(encoder)...</translation>
+    </message>
+    <message>
+        <source>Part %1</source>
+        <translation>Part %1</translation>
+    </message>
+    <message>
+        <source>on your desktop ...</source>
+        <translation>在您的桌面...</translation>
+    </message>
+    <message>
+        <source>in folder %1</source>
+        <translation>在檔案夾 %1 中</translation>
+    </message>
+    <message>
+        <source>Podcast created %1</source>
+        <translation>Podcast 已建立 %1</translation>
+    </message>
+    <message>
+        <source>Podcast recording error (%1)</source>
+        <translation>Podcast錄製有錯誤 (%1)</translation>
+    </message>
+    <message>
+        <source>Default Audio Input</source>
+        <translation>預設的音頻輸入</translation>
+    </message>
+    <message>
+        <source>No Audio Recording</source>
+        <translation>無音頻錄製</translation>
+    </message>
+    <message>
+        <source>Small</source>
+        <translation>小</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Full</source>
+        <translation>大</translation>
+    </message>
+    <message>
+        <source>Publish to Intranet</source>
+        <translation>發佈到內部網路</translation>
+    </message>
+    <message>
+        <source>Publish to Youtube</source>
+        <translation>發佈至YouTube</translation>
+    </message>
+    <message>
+        <source>Sankore Cast</source>
+        <translation>Sankore Cast</translation>
+    </message>
+</context>
+<context>
+    <name>UBPreferencesController</name>
+    <message>
+        <source>version: </source>
+        <translation>版本:</translation>
+    </message>
+    <message>
+        <source>Marker is pressure sensitive</source>
+        <translation>感壓型提示筆</translation>
+    </message>
+</context>
+<context>
+    <name>UBProxyLoginDlg</name>
+    <message>
+        <source>Proxy Login</source>
+        <translation>Proxy登入</translation>
+    </message>
+    <message>
+        <source>Username:</source>
+        <translation>帳號:</translation>
+    </message>
+    <message>
+        <source>Password:</source>
+        <translation>密碼:</translation>
+    </message>
+</context>
+<context>
+    <name>UBPublicationDlg</name>
+    <message>
+        <source>Publish document on the web</source>
+        <translation>發佈文件至網路</translation>
+    </message>
+    <message>
+        <source>Title:</source>
+        <translation>標題:</translation>
+    </message>
+    <message>
+        <source>Description:</source>
+        <translation>描述:</translation>
+    </message>
+    <message>
+        <source>Publish</source>
+        <translation>發佈</translation>
+    </message>
+</context>
+<context>
+    <name>UBSettings</name>
+    <message>
+        <source>My Movies</source>
+        <translation>我的影片</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGActionWidget</name>
+    <message>
+        <source>Teacher</source>
+        <translation>教師</translation>
+    </message>
+    <message>
+        <source>Student</source>
+        <translation>學生</translation>
+    </message>
+    <message>
+        <source>Type task here ...</source>
+        <translation>此處鍵入任務...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGMediaWidget</name>
+    <message>
+        <source>drop media here ...</source>
+        <translation>此處放置媒體...</translation>
+    </message>
+    <message>
+        <source>Type title here...</source>
+        <translation>此處鍵入標題...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTGUrlWidget</name>
+    <message>
+        <source>Insert link title here...</source>
+        <translation>此處插入標題連結...</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuideEditionWidget</name>
+    <message>
+        <source>Type title here ...</source>
+        <translation>此處鍵入標題...</translation>
+    </message>
+    <message>
+        <source>Type comment here ...</source>
+        <translation>此處鍵入評語...</translation>
+    </message>
+    <message>
+        <source>Add an action</source>
+        <translation>新增動作</translation>
+    </message>
+    <message>
+        <source>Add a media</source>
+        <translation>新增媒體</translation>
+    </message>
+    <message>
+        <source>Add a link</source>
+        <translation>新增連結</translation>
+    </message>
+    <message>
+        <source>Page: %0</source>
+        <translation>第 %0 頁</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePageZeroWidget</name>
+    <message>
+        <source>Type session title here ...</source>
+        <translation>於此處輸入標題...</translation>
+    </message>
+    <message>
+        <source>Author(s)</source>
+        <translation>作者</translation>
+    </message>
+    <message>
+        <source>Type authors here ...</source>
+        <translation>此處鍵入作者...</translation>
+    </message>
+    <message>
+        <source>Objective(s)</source>
+        <translation>目標</translation>
+    </message>
+    <message>
+        <source>Type objectives here...</source>
+        <translation>此處鍵入目標內容...</translation>
+    </message>
+    <message>
+        <source>Resource indexing</source>
+        <translation>Resource indexing</translation>
+    </message>
+    <message>
+        <source>Keywords:</source>
+        <translation>關鍵字:</translation>
+    </message>
+    <message>
+        <source>Type keywords here ...</source>
+        <translation>此處鍵入關鍵字...</translation>
+    </message>
+    <message>
+        <source>Level:</source>
+        <translation>等級:</translation>
+    </message>
+    <message>
+        <source>Subjects:</source>
+        <translation>主題:</translation>
+    </message>
+    <message>
+        <source>Type:</source>
+        <translation>é¡žåž‹:</translation>
+    </message>
+    <message>
+        <source>Licence</source>
+        <translation>授權</translation>
+    </message>
+    <message>
+        <source>Attribution CC BY</source>
+        <translation>Attribution CC BY</translation>
+    </message>
+    <message>
+        <source>Attribution-NoDerivs CC BY-ND</source>
+        <translation>Attribution-NoDerivs CC BY-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-ShareAlike CC BY-SA</source>
+        <translation>Attribution-ShareAlike CC BY-SA</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial CC BY-NC</source>
+        <translation>Attribution-NonCommercial CC BY-NC</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
+        <translation>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</translation>
+    </message>
+    <message>
+        <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
+        <translation>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</translation>
+    </message>
+    <message>
+        <source>Public domain</source>
+        <translation>Public domain</translation>
+    </message>
+    <message>
+        <source>Copyright</source>
+        <translation>Copyright</translation>
+    </message>
+    <message>
+        <source>Created the:
+</source>
+        <translation>已建立:
+</translation>
+    </message>
+    <message>
+        <source>Updated the:
+</source>
+        <translation>已更新:
+</translation>
+    </message>
+    <message>
+        <source>Title page</source>
+        <translation>標題頁</translation>
+    </message>
+</context>
+<context>
+    <name>UBTeacherGuidePresentationWidget</name>
+    <message>
+        <source>Page: %0</source>
+        <translation>第 %0 頁</translation>
+    </message>
+</context>
+<context>
+    <name>UBThumbnailAdaptor</name>
+    <message>
+        <source>Generating preview thumbnails ...</source>
+        <translation>產生預覽縮圖中...</translation>
+    </message>
+    <message>
+        <source>%1 thumbnails generated ...</source>
+        <translation>已產生縮圖 %1...</translation>
+    </message>
+</context>
+<context>
+    <name>UBToolsManager</name>
+    <message>
+        <source>Compass</source>
+        <translation>圓規</translation>
+    </message>
+    <message>
+        <source>Ruler</source>
+        <translation>å°º</translation>
+    </message>
+    <message>
+        <source>Protractor</source>
+        <translation>量角器</translation>
+    </message>
+    <message>
+        <source>Mask</source>
+        <translation>遮罩</translation>
+    </message>
+    <message>
+        <source>Triangle</source>
+        <translation>三角形</translation>
+    </message>
+    <message>
+        <source>Magnifier</source>
+        <translation>放大鏡</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Cache</translation>
+    </message>
+    <message>
+        <source>Aristo</source>
+        <translation>Aristo</translation>
+    </message>
+</context>
+<context>
+    <name>UBTrapFlashController</name>
+    <message>
+        <source>Whole page</source>
+        <translation>整頁</translation>
+    </message>
+    <message>
+        <source>Web</source>
+        <translation>網路</translation>
+    </message>
+</context>
+<context>
+    <name>UBUpdateDlg</name>
+    <message>
+        <source>Document updater</source>
+        <translation>文件更新器</translation>
+    </message>
+    <message>
+        <source> files require an update.</source>
+        <translation>檔案需要更新。</translation>
+    </message>
+    <message>
+        <source>Backup path: </source>
+        <translation>備份檔案路徑:</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>瀏覽</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>æ›´æ–°</translation>
+    </message>
+    <message>
+        <source>Select a backup folder</source>
+        <translation>選擇備份檔案夾</translation>
+    </message>
+    <message>
+        <source>Files update successful!
+Please reboot the application to access the updated documents.</source>
+        <translation>成功更新檔案!
+請重新啟動程式使用該檔案。</translation>
+    </message>
+    <message>
+        <source>An error occured during the update. The files have not been affected.</source>
+        <translation>更新過程出現錯誤,原檔案並未更動。</translation>
+    </message>
+    <message>
+        <source>Files update results</source>
+        <translation>檔案更新結果</translation>
+    </message>
+    <message>
+        <source>Updating file </source>
+        <translation>更新檔案中</translation>
+    </message>
+    <message>
+        <source>Please wait the import process will start soon...</source>
+        <translation>即將開始匯入,請稍待...</translation>
+    </message>
+    <message>
+        <source>Remind me later</source>
+        <translation>稍候題提醒我</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPluginWidget</name>
+    <message>
+        <source>Loading...</source>
+        <translation>載入中...</translation>
+    </message>
+</context>
+<context>
+    <name>UBWebPublisher</name>
+    <message>
+        <source>Publish Document on Sankore Web</source>
+        <translation>發佈文件在Sankore網頁</translation>
+    </message>
+</context>
+<context>
+    <name>UBWidgetUniboardAPI</name>
+    <message>
+        <source>%0 called (method=%1, status=%2)</source>
+        <translation>已呼叫 %0 (方法= %1 , 狀態= %2 )</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublisher</name>
+    <message>
+        <source>YouTube authentication failed.</source>
+        <translation>YouTube驗證失敗。</translation>
+    </message>
+    <message>
+        <source>Error while uploading video to YouTube (%1)</source>
+        <translation>影片上傳至YouTube (%1)過程中有錯誤</translation>
+    </message>
+    <message>
+        <source>Upload to YouTube in progress %1 %</source>
+        <translation>上傳至YouTube中 %1 %</translation>
+    </message>
+    <message>
+        <source>Open-Sankore</source>
+        <translation>Open-Sankore</translation>
+    </message>
+    <message>
+        <source>OpenSankore</source>
+        <translation>OpenSankore</translation>
+    </message>
+</context>
+<context>
+    <name>UBYouTubePublishingDialog</name>
+    <message>
+        <source>Upload</source>
+        <translation>上傳</translation>
+    </message>
+    <message>
+        <source>Autos & Vehicles</source>
+        <translation>各類交通工具</translation>
+    </message>
+    <message>
+        <source>Music</source>
+        <translation>音樂</translation>
+    </message>
+    <message>
+        <source>Pets & Animals</source>
+        <translation>寵物與動物</translation>
+    </message>
+    <message>
+        <source>Sports</source>
+        <translation>運動</translation>
+    </message>
+    <message>
+        <source>Travel & Events</source>
+        <translation>旅遊與活動</translation>
+    </message>
+    <message>
+        <source>Gaming</source>
+        <translation>遊戲</translation>
+    </message>
+    <message>
+        <source>Comedy</source>
+        <translation>喜劇</translation>
+    </message>
+    <message>
+        <source>People & Blogs</source>
+        <translation>人物與網誌</translation>
+    </message>
+    <message>
+        <source>News & Politics</source>
+        <translation>新聞與政治</translation>
+    </message>
+    <message>
+        <source>Entertainment</source>
+        <translation>娛樂</translation>
+    </message>
+    <message>
+        <source>Education</source>
+        <translation>教育</translation>
+    </message>
+    <message>
+        <source>Howto & Style</source>
+        <translation>DIY 教學</translation>
+    </message>
+    <message>
+        <source>Nonprofits & Activism</source>
+        <translation>非營利組織與行動主義</translation>
+    </message>
+    <message>
+        <source>Science & Technology</source>
+        <translation>科學與技術</translation>
+    </message>
+</context>
+<context>
+    <name>UBZoomPalette</name>
+    <message>
+        <source>%1 x</source>
+        <translation>%1 x</translation>
+    </message>
+</context>
+<context>
+    <name>UniboardSankoreTransition</name>
+    <message>
+        <source>Import old Uniboard/Sankore documents</source>
+        <translation>匯入舊的Uniboard/Sankore文件</translation>
+    </message>
+    <message>
+        <source>There are no documents that should be imported</source>
+        <translation>沒有文件需要匯入</translation>
+    </message>
+</context>
+<context>
+    <name>WBClearButton</name>
+    <message>
+        <source>Clear</source>
+        <translation>清空</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadItem</name>
+    <message>
+        <source>Save File</source>
+        <translation>儲存檔案</translation>
+    </message>
+    <message>
+        <source>Download canceled: %1</source>
+        <translation>取消下載: %1</translation>
+    </message>
+    <message>
+        <source>Error opening saved file: %1</source>
+        <translation>已存檔案開啟時有錯誤: %1</translation>
+    </message>
+    <message>
+        <source>Error saving: %1</source>
+        <translation>儲存錯誤: %1</translation>
+    </message>
+    <message>
+        <source>Network Error: %1</source>
+        <translation>網路錯誤: %1</translation>
+    </message>
+    <message>
+        <source>seconds</source>
+        <translation>秒</translation>
+    </message>
+    <message>
+        <source>minutes</source>
+        <translation>分</translation>
+    </message>
+    <message>
+        <source>- %4 %5 remaining</source>
+        <translation>- 還剩下 %4 %5 </translation>
+    </message>
+    <message>
+        <source>%1 of %2 (%3/sec) %4</source>
+        <translation>%2 的 %1 (%3/秒) %4</translation>
+    </message>
+    <message>
+        <source>?</source>
+        <translation>?</translation>
+    </message>
+    <message>
+        <source>%1 of %2 - Stopped</source>
+        <translation>%2 的 %1 - 已停止</translation>
+    </message>
+    <message>
+        <source>bytes</source>
+        <translation>bytes</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+</context>
+<context>
+    <name>WBDownloadManager</name>
+    <message>
+        <source>%1 Downloads</source>
+        <translation>%1 個下載</translation>
+    </message>
+    <message>
+        <source>1 Download</source>
+        <translation>1 個下載</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryModel</name>
+    <message>
+        <source>Title</source>
+        <translation>標題</translation>
+    </message>
+    <message>
+        <source>Address</source>
+        <translation>地址</translation>
+    </message>
+</context>
+<context>
+    <name>WBHistoryTreeModel</name>
+    <message>
+        <source>Earlier Today</source>
+        <translation>今日稍早</translation>
+    </message>
+    <message>
+        <source>%1 items</source>
+        <translation>%1 個項目</translation>
+    </message>
+</context>
+<context>
+    <name>WBSearchLineEdit</name>
+    <message>
+        <source>Search</source>
+        <translation>搜尋</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabBar</name>
+    <message>
+        <source>New &Tab</source>
+        <translation>新建分頁(&T)</translation>
+    </message>
+    <message>
+        <source>Clone Tab</source>
+        <translation>複製分頁</translation>
+    </message>
+    <message>
+        <source>&Close Tab</source>
+        <translation>關閉分頁(&C)</translation>
+    </message>
+    <message>
+        <source>Close &Other Tabs</source>
+        <translation>關閉其他分頁 (&O)</translation>
+    </message>
+    <message>
+        <source>Reload Tab</source>
+        <translation>重新載入分頁</translation>
+    </message>
+    <message>
+        <source>Reload All Tabs</source>
+        <translation>重新載入所有分頁</translation>
+    </message>
+</context>
+<context>
+    <name>WBTabWidget</name>
+    <message>
+        <source>Recently Closed Tabs</source>
+        <translation>最近關閉的分頁</translation>
+    </message>
+    <message>
+        <source>(Untitled)</source>
+        <translation>空白頁</translation>
+    </message>
+</context>
+<context>
+    <name>WBToolbarSearch</name>
+    <message>
+        <source>Search</source>
+        <translation>搜尋</translation>
+    </message>
+    <message>
+        <source>No Recent Searches</source>
+        <translation>無近期搜尋</translation>
+    </message>
+    <message>
+        <source>Recent Searches</source>
+        <translation>近期搜尋</translation>
+    </message>
+    <message>
+        <source>Clear Recent Searches</source>
+        <translation>清除近期搜尋</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebPage</name>
+    <message>
+        <source>Download</source>
+        <translation>下載</translation>
+    </message>
+    <message>
+        <source>Add to Current Document</source>
+        <translation>新增至目前文件</translation>
+    </message>
+    <message>
+        <source>PDF</source>
+        <translation>PDF</translation>
+    </message>
+    <message>
+        <source>Error loading page: %1</source>
+        <translation>頁面載入錯誤: %1</translation>
+    </message>
+    <message>
+        <source>Download PDF Document: would you prefer to download the PDF file or add it to the current Sankore document?</source>
+        <translation>下載PDF文件: 您要下載成PDF檔或是新增至目前的Sankore文件?</translation>
+    </message>
+</context>
+<context>
+    <name>WBWebView</name>
+    <message>
+        <source>Open in New Tab</source>
+        <translation>於新分頁中開啟</translation>
+    </message>
+</context>
+<context>
+    <name>YouTubePublishingDialog</name>
+    <message>
+        <source>Publish Podcast to YouTube</source>
+        <translation>發佈Podcast至YouTube</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>標題</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+    <message>
+        <source>Keywords</source>
+        <translation>關鍵字</translation>
+    </message>
+    <message>
+        <source>Uniboard</source>
+        <translation>Uniboard</translation>
+    </message>
+    <message>
+        <source>Category</source>
+        <translation>類別</translation>
+    </message>
+    <message>
+        <source>YouTube Username</source>
+        <translation>YouTube帳號</translation>
+    </message>
+    <message>
+        <source>YouTube Password</source>
+        <translation>YouTube密碼</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Lucida Grande'; font-size:10pt;">By clicking 'Upload,' you certify that you own all rights to the content or that you are authorized by the owner to make the content publicly available on YouTube, and that it otherwise complies with the YouTube Terms of Service located at </span><a href="http://www.youtube.com/t/terms"><span style=" font-family:'Lucida Grande'; font-size:10pt; text-decoration: underline; color:#0000ff;">http://www.youtube.com/t/terms</span></a></p></body></html></translation>
+    </message>
+</context>
+<context>
+    <name>brushProperties</name>
+    <message>
+        <source>Opacity</source>
+        <translation>透明度</translation>
+    </message>
+    <message>
+        <source>On Light Background</source>
+        <translation>淡色背景</translation>
+    </message>
+    <message>
+        <source>On Dark Background</source>
+        <translation>深色背景</translation>
+    </message>
+    <message>
+        <source>Line Width</source>
+        <translation>線寬</translation>
+    </message>
+    <message>
+        <source>Medium</source>
+        <translation>中</translation>
+    </message>
+    <message>
+        <source>Strong</source>
+        <translation>ç²—</translation>
+    </message>
+    <message>
+        <source>Fine</source>
+        <translation>ç´°</translation>
+    </message>
+    <message>
+        <source>Pen is Pressure Sensitive</source>
+        <translation>感壓筆</translation>
+    </message>
+</context>
+<context>
+    <name>capturePublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>對話</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>標題</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>作者</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+</context>
+<context>
+    <name>documentPublishingDialog</name>
+    <message>
+        <source>Dialog</source>
+        <translation>對話</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>標題</translation>
+    </message>
+    <message>
+        <source>E-mail</source>
+        <translation>E-mail</translation>
+    </message>
+    <message>
+        <source>Author</source>
+        <translation>作者</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>描述</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable PDF Version</source>
+        <translation>附上可下載的PDF版本</translation>
+    </message>
+    <message>
+        <source>Attach Downloadable Uniboard File (UBZ)</source>
+        <translation>附上可下載的Uniboard(UBZ)版本</translation>
+    </message>
+    <message>
+        <source>Warning: This documents contains video, which will not be displayed properly on the Web</source>
+        <translation>警示: 本文件內含影片,但在網頁上不會正常播放</translation>
+    </message>
+</context>
+<context>
+    <name>documents</name>
+    <message>
+        <source>Uniboard Documents</source>
+        <translation>Uniboard文件</translation>
+    </message>
+</context>
+<context>
+    <name>preferencesDialog</name>
+    <message>
+        <source>Preferences</source>
+        <translation>偏好設定</translation>
+    </message>
+    <message>
+        <source>Default Settings</source>
+        <translation>預設</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>關閉</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>顯示</translation>
+    </message>
+    <message>
+        <source>Show Page with External Browser</source>
+        <translation>用外部瀏覽器顯示頁面</translation>
+    </message>
+    <message>
+        <source>Virtual Keyboard</source>
+        <translation>虛擬鍵盤</translation>
+    </message>
+    <message>
+        <source>Keyboard button size:</source>
+        <translation>按鍵大小:</translation>
+    </message>
+    <message>
+        <source>Positioned at the Top (recommended for tablets)</source>
+        <translation>置放在頂部(平板適用)</translation>
+    </message>
+    <message>
+        <source>Positioned at the Bottom (recommended for white boards)</source>
+        <translation>置放在頂底部(電子白板適用)</translation>
+    </message>
+    <message>
+        <source>Display Text Under Button</source>
+        <translation>在按鈕下顯示文字</translation>
+    </message>
+    <message>
+        <source>Stylus Palette</source>
+        <translation>桌面工具</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>橫向</translation>
+    </message>
+    <message>
+        <source>Vertical</source>
+        <translation>縱向</translation>
+    </message>
+    <message>
+        <source>About</source>
+        <translation>關於</translation>
+    </message>
+    <message>
+        <source>Software Update</source>
+        <translation>軟體更新</translation>
+    </message>
+    <message>
+        <source>Check software update at launch</source>
+        <translation>啟用時檢查更新</translation>
+    </message>
+    <message>
+        <source>Internet</source>
+        <translation>網際網路</translation>
+    </message>
+    <message>
+        <source>Home Page:</source>
+        <translation>主頁:</translation>
+    </message>
+    <message>
+        <source>Toolbar</source>
+        <translation>工具列</translation>
+    </message>
+    <message>
+        <source>Pen</source>
+        <translation>電子筆</translation>
+    </message>
+    <message>
+        <source>Marker</source>
+        <translation>提示筆</translation>
+    </message>
+    <message>
+        <source>version : …</source>
+        <translation>版本: …</translation>
+    </message>
+    <message>
+        <source>Licences</source>
+        <translation>授權條款</translation>
+    </message>
+    <message>
+        <source>OpenSSl</source>
+        <translation>OpenSSl</translation>
+    </message>
+    <message>
+        <source>zlib</source>
+        <translation>zlib</translation>
+    </message>
+    <message>
+        <source>xpdf</source>
+        <translation>xpdf</translation>
+    </message>
+    <message>
+        <source>Quazip</source>
+        <translation>Quazip</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <translation>網路</translation>
+    </message>
+    <message>
+        <source>Open-Sankoré</source>
+        <translation>Open-Sankoré</translation>
+    </message>
+    <message>
+        <source>Show internal web page content on secondary screen or projector</source>
+        <translation>於第二螢幕或投影機顯示內部網頁內容</translation>
+    </message>
+    <message>
+        <source>Multi display</source>
+        <translation>多重顯示</translation>
+    </message>
+    <message>
+        <source>Swap control display and view display</source>
+        <translation>控制螢幕與顯示螢幕之間切換</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>模式</translation>
+    </message>
+    <message>
+        <source>Mode to start in:</source>
+        <translation>啟動模式:</translation>
+    </message>
+    <message>
+        <source>Board</source>
+        <translation>演示板</translation>
+    </message>
+    <message>
+        <source>Desktop</source>
+        <translation>桌面</translation>
+    </message>
+    <message>
+        <source>Proxy User:</source>
+        <translation>Proxy User:</translation>
+    </message>
+    <message>
+        <source>Pass:</source>
+        <translation>密碼:</translation>
+    </message>
+    <message>
+        <source>Planète Sankoré ID</source>
+        <translation>Planète Sankoré ID</translation>
+    </message>
+    <message>
+        <source>User:</source>
+        <translation>使用者帳號:</translation>
+    </message>
+    <message>
+        <source>Pass: </source>
+        <translation>密碼:</translation>
+    </message>
+    <message>
+        <source>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+ Copyright (C) 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.
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+  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, while the latter only
+works together with the library.
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+    c) 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.
+    d) 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 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.
+  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 to
+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 Library 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
+</source>
+        <translation>                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+ Copyright (C) 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.
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+                            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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, 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 companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+  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, while the latter only
+works together with the library.
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+    c) 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.
+    d) 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 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.
+  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 to
+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 Library 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
+</translation>
+    </message>
+    <message>
+        <source>Credits</source>
+        <translation>貢獻</translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">The licences are in English to respect the official and legal approved translation.</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler</span><span style=" font-family:'Ubuntu'; font-size:12pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"><br /></span><span style=" font-family:'Ubuntu'; font-size:9pt; color:#1a1a1a;">  3. This notice may not be removed or altered from any source distribution.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> </span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br /><br />Open-Sankoré est un logiciel libre : vous pouvez le redistribuer et/ou le modifier en respectant les termes de la Lesser GNU general Public Licence (GNU LGPL) telle que publiée par la Free Software Foundation en version 2 ou une version plus récente.<br />Vous pouvez consulter et charger le code source du logiciel sur </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER.<br />Veuillez consulter la licence Lesser GNU General Public Licence située dans l'onglet Licences ou consulter le site </span><a href="http://www.gnu.org/licenses/"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;http://www.gnu.org/licenses/&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">.<br /><br />Open-Sankoré is free software: you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or any later version. You can find the source code of this software at </span><a href="https://github.com/Sankore"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">&lt;https://github.com/Sankore&gt;</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;"><br />Open-Sankoré is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public License below for more details.<br /><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">Contact : <br />Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA)<br />Délégation Interministérielle à l'Education Numérique en Afrique<br />20 Avenue Ségur Paris 75007<br />Téléphone : 01 43 17 68 08<br />email: </span><a href="mailto:contact at sankore.org"><span style=" font-family:'Ubuntu'; font-size:11pt; text-decoration: underline; color:#0000ff;">contact at sankore.org</span></a><span style=" font-family:'Ubuntu'; font-size:11pt;">&quot;</span></p></td></tr></table></body></html></translation>
+    </message>
+    <message>
+        <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></source>
+        <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Crédits police scolaire Open-Sankoré : </span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police Andika Basic dispose d'une licence Open Font License </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Sil international</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=andika</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence OFL : </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Court </span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier Ligne Court</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Ecolier suivantes sont l'oeuvre de Jean-Marie Douteau et disposent d'une licence Creative Commons BY NC ND :</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Ecolier lignes pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">- Écolier CP pointillés</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Jean-Marie Douteau (douteau.ecolier at sfr.fr)</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Cursive sont l'oeuvre d'Antoine Fetet (antoine.fetet at laposte.net) à partir d'une police proposée par Jean-Claude Gineau</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">L'auteur en autorise l'utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Les polices Script (Ecole et CaseEcole) sont l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCO.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/SCRIPTCA.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:10pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"><br /></span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">La police phonétique, Alphonet est l'oeuvre d'Henri Rogelet</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices/ALPHONET.zip</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;"> © Henri Rogelet &lt;h.rogelet at free.fr&gt;</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Autorisation pour un usage non commercial</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt;">Source : http://pointecole.free.fr/polices.html</span></p></body></html></translation>
+    </message>
+</context>
+<context>
+    <name>trapFlashDialog</name>
+    <message>
+        <source>Trap flash</source>
+        <translation>擷取flash</translation>
+    </message>
+    <message>
+        <source>Select a flash to trap</source>
+        <translation>選擇要擷取的flash動畫</translation>
+    </message>
+    <message>
+        <source>about:blank</source>
+        <translation>空白頁</translation>
+    </message>
+    <message>
+        <source>Application name</source>
+        <translation>應用程式名稱</translation>
+    </message>
+    <message>
+        <source>Create Application</source>
+        <translation>建立應用程式</translation>
+    </message>
+</context>
+</TS>
diff --git a/Sankore-3.1/resources/images/cursors/play.png b/Sankore-3.1/resources/images/cursors/play.png
new file mode 100644
index 0000000..25030dd
Binary files /dev/null and b/Sankore-3.1/resources/images/cursors/play.png differ
diff --git a/Sankore-3.1/resources/images/duplicateDisabled.svg b/Sankore-3.1/resources/images/duplicateDisabled.svg
new file mode 100644
index 0000000..be9083f
--- /dev/null
+++ b/Sankore-3.1/resources/images/duplicateDisabled.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="26px"
+   height="26px"
+   viewBox="0 0 26 26"
+   style="enable-background:new 0 0 26 26;"
+   xml:space="preserve"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="duplicateDisabled.svg"><metadata
+   id="metadata21"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+   id="defs19" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1283"
+   inkscape:window-height="762"
+   id="namedview17"
+   showgrid="false"
+   inkscape:zoom="9.0769231"
+   inkscape:cx="13"
+   inkscape:cy="13"
+   inkscape:window-x="65"
+   inkscape:window-y="24"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="Layer_1" />
+
+<circle
+   style="fill:#CCCCCC;opacity:0.5"
+   cx="13"
+   cy="13"
+   r="13"
+   id="circle3" />
+<circle
+   style="fill:#999999;opacity:0.5"
+   cx="13"
+   cy="13"
+   r="11"
+   id="circle5" />
+<rect
+   x="5"
+   y="6"
+   style="fill:#F2F2F2;opacity:0.5"
+   width="12"
+   height="10"
+   id="rect7" />
+<rect
+   x="8"
+   y="9"
+   style="fill:#999999;opacity:0.5"
+   width="12"
+   height="10"
+   id="rect9" />
+<rect
+   x="7"
+   y="8"
+   style="fill:#999999;opacity:0.5"
+   width="8"
+   height="6"
+   id="rect11" />
+<rect
+   x="9"
+   y="10"
+   style="fill:#FFFFFF;opacity:0.5"
+   width="12"
+   height="10"
+   id="rect13" />
+<path
+   style="fill:#FFA600;opacity:0.5"
+   d="M10,7c0,0,2,0,4,0s3,1,3,3s0,3,0,3h3l-5,5l-5-5h3c0,0,0-1,0-2s0-2-1-2C10.5,9,10,7,10,7z"
+   id="path15" />
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/images/erasePalette/eraseBackground.svg b/Sankore-3.1/resources/images/erasePalette/eraseBackground.svg
new file mode 100644
index 0000000..6bae399
--- /dev/null
+++ b/Sankore-3.1/resources/images/erasePalette/eraseBackground.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="128px" height="128px" viewBox="-7.587 -21.627 128 128" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="55.8784" y1="11.0928" x2="55.8784" y2="58.3739">
+	<stop  offset="0" style="stop-color:#FCFCFC"/>
+	<stop  offset="1" style="stop-color:#DCDCDC"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M47.254,29.812c15.881,0.814,41.542,8.928,61.864,32.165V13.994c0-6.261-5.094-11.354-11.357-11.354
+	H13.993C7.733,2.64,2.64,7.734,2.64,13.994v27.544C17.206,34.21,32.229,29.042,47.254,29.812z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="49.7065" y1="34.9453" x2="49.7065" y2="82.9507">
+	<stop  offset="0" style="stop-color:#FCFCFC"/>
+	<stop  offset="1" style="stop-color:#DCDCDC"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M2.64,50.422v19.419c0,6.26,5.094,11.356,11.354,11.356h82.781
+	C82.723,68.016,51.243,45.693,2.64,50.422z"/>
+<path fill="#FFFFFF" d="M5.28,40.236V13.995c0-4.805,3.908-8.715,8.715-8.715H97.76c4.807,0,8.717,3.91,8.717,8.715v45.077
+	c1.801,1.904,3.561,3.928,5.281,6.059V13.995C111.758,6.279,105.479,0,97.76,0H13.995C6.278,0,0,6.279,0,13.995v28.896
+	C1.753,41.976,3.514,41.088,5.28,40.236z"/>
+<path fill="#FFFFFF" d="M93.854,78.558H13.995c-4.805,0-8.715-3.91-8.715-8.719V50.195C3.543,50.332,1.782,50.504,0,50.711v19.128
+	c0,7.721,6.278,13.998,13.995,13.998H97.76c0.551,0,1.092-0.04,1.625-0.103C97.844,82.182,96.002,80.43,93.854,78.558z"/>
+<path fill="#B0B9C4" d="M3.521,41.098V13.995c0-5.776,4.698-10.475,10.475-10.475H97.76c5.777,0,10.477,4.7,10.479,10.475V61
+	c1.191,1.326,2.365,2.701,3.52,4.131V13.995C111.758,6.279,105.479,0,97.76,0H13.995C6.278,0,0,6.279,0,13.995v28.896
+	C1.171,42.28,2.344,41.682,3.521,41.098z"/>
+<path fill="#B0B9C4" d="M95.825,80.318h-81.83c-5.776,0-10.475-4.702-10.475-10.479V50.347C2.356,50.453,1.184,50.573,0,50.711
+	v19.128c0,7.721,6.278,13.998,13.995,13.998H97.76c0.551,0,1.092-0.04,1.625-0.103C98.338,82.68,97.151,81.533,95.825,80.318z"/>
+<path fill="#FFFFFF" d="M62.442,59.005H56.76v-2.218c-0.219-0.078-0.438-0.156-0.659-0.234v2.452H40.04v-6.86
+	c-0.221-0.044-0.438-0.09-0.66-0.133v6.993H22.44v-9.052c-0.221-0.012-0.438-0.027-0.66-0.038v9.09H9.68v0.66H21.78v18.26h0.66
+	v-18.26H39.38v18.26h0.66v-18.26h16.061v18.26h0.659v-18.26h7.221C63.473,59.442,62.959,59.223,62.442,59.005z"/>
+<path fill="#FFFFFF" d="M90.86,76.037v1.888h0.658v-1.349C91.301,76.396,91.083,76.217,90.86,76.037z"/>
+<path fill="#FFFFFF" d="M21.78,33.54c0.22-0.07,0.44-0.135,0.66-0.204v-7.991H39.38v4.593c0.22-0.018,0.44-0.038,0.66-0.053v-4.54
+	h16.061v5.557c0.219,0.041,0.438,0.082,0.659,0.125v-5.682H73.7v10.901c0.221,0.092,0.439,0.188,0.66,0.283V25.345h16.5v16.94
+	h-5.262c0.369,0.221,0.736,0.433,1.105,0.66h4.156v2.726c0.221,0.151,0.439,0.296,0.658,0.449v-3.175h11.662v-0.66H91.518v-16.94
+	h11.662v-0.66H91.518V7.745H90.86v16.94h-16.5V7.745H73.7v16.94H56.76V7.745h-0.659v16.94H40.04V7.745h-0.66v16.94H22.44V7.745
+	h-0.66v16.94H9.68v0.66H21.78V33.54z"/>
+<path fill="#FFFFFF" d="M73.7,64.463v13.462h0.66V64.832C74.141,64.709,73.922,64.585,73.7,64.463z"/>
+<image width="48" height="39" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAoCAYAAABXRRJPAAAACXBIWXMAAAsSAAALEgHS3X78AAAA
+GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQVJREFUeNrU2DEOwyAMBdAQlow9
+Qu9/qh4hI2NlyUg0wiWAY/y/ZCGxPdleHDb7vLhyTq7hhAWAt4AYxsTFAMrBfwcXJXlESAAVTHQC
+mMIEZ4Bayl2p7k1wDpBAP5gIBBBHLQIBJEzaAQGPLrY1gHbiQ29AB2h1YilAA7EcMItwAZhBuAGM
+IlwBRhDuAL0Il4AehFvAXYRrwB2Ee0ALAQH4h4ABSAgoAGUXEDCAGgIOcB0nyzFSA5QIWEBGQAOk
+xYYCUOhkk4rK5xAYQEZsDDj5PZQhjwJKxFZgNLvyOKCGuHZlBmMCkBAaGDNACzGKMQXcRfRgzAG9
+iBZmCUArSy7hZb4CDAA3l4ZOlZxXfQAAAABJRU5ErkJggg==" transform="matrix(1 0 0 1 63.3794 58.4092)">
+</image>
+<polygon fill="#FFA6E0" points="92.106,73.745 92.106,83.985 110.586,64.945 92.106,57.024 87.926,57.024 78.034,66.296 "/>
+<polygon fill="#24ABFF" points="93.352,82.618 93.938,73.673 78.034,66.296 67.465,76.386 63.506,86.578 80.667,95.525 "/>
+<path fill="#7ACCFF" d="M63.506,86.578l0.006-0.015l3.953-10.178c0,0,12.32,6.016,14.227,7.188c0,0,0.441,0.365,0.367,0.732
+	c-0.395,1.963-1.393,11.22-1.393,11.22L63.506,86.578z"/>
+<polygon fill="#2096E0" points="80.667,95.525 82.133,83.793 93.352,73.306 93.352,82.618 "/>
+<polygon fill="#FFD6F1" points="87.926,57.024 102.885,63.845 110.586,64.945 92.106,57.024 "/>
+<polygon fill="#ED82C8" points="93.352,82.618 93.278,73.38 103.032,64.065 110.586,64.945 "/>
+</svg>
diff --git a/Sankore-3.1/resources/images/toolbar/reload.png b/Sankore-3.1/resources/images/libpalette/loading.png
similarity index 100%
copy from Sankore-3.1/resources/images/toolbar/reload.png
copy to Sankore-3.1/resources/images/libpalette/loading.png
diff --git a/Sankore-3.1/resources/images/pencil.svg b/Sankore-3.1/resources/images/pencil.svg
deleted file mode 100644
index d5406ac..0000000
--- a/Sankore-3.1/resources/images/pencil.svg
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg version="1.2" baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
-	 y="0px" width="33px" height="33px" viewBox="0 0 33 33" xml:space="preserve">
-<g id="Arrière-plan">
-</g>
-<g id="Guides">
-</g>
-<g id="Premier_plan">
-	<path fill="#333333" stroke="#000000" d="M2.405,31.674c-0.002,0.013-0.659,0.669-0.659,0.669c-0.008,0.01-0.016,0.019-0.025,0.028
-		c-0.163,0.164-0.385,0.139-0.517,0.098c-0.147-0.046-0.292-0.141-0.412-0.261s-0.215-0.265-0.261-0.412
-		c-0.041-0.132-0.065-0.354,0.098-0.517l0.716-0.716c1.095-2.139,3.16-6.116,3.642-6.597L25.898,3.053
-		c0.215-0.215,0.49-0.335,0.786-0.378l1.864-1.864c0.61-0.61,1.92-0.298,2.929,0.711s1.321,2.319,0.711,2.929l-1.864,1.864
-		c-0.042,0.296-0.163,0.57-0.378,0.786L9.114,27.926c-0.025,0.031-0.052,0.06-0.081,0.089C8.55,28.499,4.532,30.583,2.405,31.674z"
-		/>
-	<path fill="#FF8B9B" d="M29.935,6.316c-0.061-0.713-0.487-1.513-1.104-2.129s-1.416-1.042-2.129-1.104l2.06-2.06
-		c0.42-0.42,1.527-0.283,2.521,0.711c0.995,0.994,1.131,2.101,0.712,2.521L29.935,6.316z"/>
-	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="19.4741" y1="17.4038" x2="15.7053" y2="13.635">
-		<stop  offset="0" style="stop-color:#FF5833"/>
-		<stop  offset="0.3861" style="stop-color:#FF9733"/>
-		<stop  offset="0.6782" style="stop-color:#FFFFFF"/>
-		<stop  offset="0.8069" style="stop-color:#FFB100"/>
-	</linearGradient>
-	<path fill="url(#SVGID_1_)" d="M28.706,7.945L8.835,27.815l-3.637-3.637L25.125,4.253l0.016-0.017
-		c0.612-0.612,1.924-0.293,2.929,0.711c1.005,1.005,1.324,2.317,0.711,2.929C28.757,7.901,28.732,7.924,28.706,7.945z"/>
-	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.4688" y1="26.6265" x2="5.7383" y2="28.6272">
-		<stop  offset="0" style="stop-color:#E6C59E"/>
-		<stop  offset="0.4802" style="stop-color:#FFFFFF"/>
-		<stop  offset="0.7426" style="stop-color:#E6C59E"/>
-		<stop  offset="1" style="stop-color:#B1835D"/>
-	</linearGradient>
-	<path fill-rule="evenodd" fill="url(#SVGID_2_)" d="M8.839,27.82c-0.442,0.442-4.396,2.5-6.562,3.61l-0.688-0.688
-		c1.11-2.166,3.167-6.12,3.609-6.562c0.612-0.612,1.924-0.294,2.929,0.711S9.451,27.208,8.839,27.82z"/>
-	<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="31.5435" y1="5.353" x2="27.9833" y2="1.7929">
-		<stop  offset="0" style="stop-color:#FF9AA9"/>
-		<stop  offset="1" style="stop-color:#FFFFFF"/>
-	</linearGradient>
-	<path fill="url(#SVGID_3_)" d="M28.464,4.554c-0.5-0.499-1.123-0.892-1.747-1.078l2.248-2.248c0.229-0.229,1.134-0.268,2.113,0.711
-		c0.979,0.979,0.941,1.884,0.711,2.113l-2.248,2.248C29.356,5.677,28.964,5.054,28.464,4.554z"/>
-	<path fill="#808080" d="M29.752,6.906l-1.902,1.902c0.605-0.615,0.285-1.921-0.717-2.923c-1.005-1.005-2.316-1.324-2.929-0.711
-		l1.907-1.908c0.612-0.612,1.924-0.293,2.929,0.712S30.365,6.294,29.752,6.906z"/>
-	<g>
-		<ellipse transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 25.2793 51.7028)" cx="1.932" cy="31.087" rx="0.253" ry="0.485"/>
-		<path d="M1.932,31.087"/>
-	</g>
-	<g>
-		<ellipse transform="matrix(-0.7066 0.7076 -0.7076 -0.7066 24.5461 53.4918)" cx="1.184" cy="31.834" rx="0.253" ry="0.484"/>
-		<path d="M1.184,31.834"/>
-	</g>
-	
-		<rect x="1.031" y="30.975" transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 24.9043 52.6023)" fill-rule="evenodd" width="1.054" height="0.967"/>
-</g>
-</svg>
diff --git a/Sankore-3.1/resources/images/stylusPalette/handPlay.png b/Sankore-3.1/resources/images/stylusPalette/handPlay.png
new file mode 100644
index 0000000..186c81d
Binary files /dev/null and b/Sankore-3.1/resources/images/stylusPalette/handPlay.png differ
diff --git a/Sankore-3.1/resources/images/stylusPalette/handPlayOn.png b/Sankore-3.1/resources/images/stylusPalette/handPlayOn.png
new file mode 100644
index 0000000..5b86d97
Binary files /dev/null and b/Sankore-3.1/resources/images/stylusPalette/handPlayOn.png differ
diff --git a/Sankore-3.1/resources/images/teacherGuide/audio.png b/Sankore-3.1/resources/images/teacherGuide/audio.png
deleted file mode 100644
index ffb8fbf..0000000
Binary files a/Sankore-3.1/resources/images/teacherGuide/audio.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/teacherGuide/audio_24x24.svg b/Sankore-3.1/resources/images/teacherGuide/audio_24x24.svg
new file mode 100644
index 0000000..fc5c229
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/audio_24x24.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
+	 height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g id="Layer_1">
+</g>
+<g id="Layer_2">
+	<g>
+		<path fill="#9FC23B" d="M9.808,5.383L5.454,9.122H2.271c-0.563,0-1.023,0.459-1.023,1.022v4.902c0,0.562,0.46,1.022,1.023,1.022
+			h2.858l4.68,4.02c0.298,0.257,0.543,0.145,0.543-0.248V5.632C10.352,5.238,10.106,5.126,9.808,5.383z"/>
+		
+			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="5.6592" y1="-66.8374" x2="5.6592" y2="-51.856" gradientTransform="matrix(1 0 0 -1 0.1401 -46.6113)">
+			<stop  offset="0" style="stop-color:#C8C8CB"/>
+			<stop  offset="0.0241" style="stop-color:#CBCBCF"/>
+			<stop  offset="0.1455" style="stop-color:#D6D6DB"/>
+			<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+			<stop  offset="1" style="stop-color:#E6E5E9"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M9.808,5.383L5.454,9.122H2.271c-0.563,0-1.023,0.459-1.023,1.022v4.902
+			c0,0.562,0.46,1.022,1.023,1.022h2.858l4.68,4.02c0.298,0.257,0.543,0.145,0.543-0.248V5.632
+			C10.352,5.238,10.106,5.126,9.808,5.383z"/>
+		
+			<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="16.5405" y1="-59.1802" x2="22.687" y2="-59.1802" gradientTransform="matrix(1 0 0 -1 0.1401 -46.6113)">
+			<stop  offset="0" style="stop-color:#C8C8CB"/>
+			<stop  offset="0.0241" style="stop-color:#CBCBCF"/>
+			<stop  offset="0.1455" style="stop-color:#D6D6DB"/>
+			<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+			<stop  offset="1" style="stop-color:#E6E5E9"/>
+		</linearGradient>
+		<path fill="url(#SVGID_2_)" d="M18.72,2.449c-0.076-0.076-0.177-0.121-0.285-0.121c-0.124-0.008-0.208,0.04-0.284,0.116
+			l-1.139,1.127c-0.157,0.156-0.159,0.408-0.004,0.565c2.202,2.23,3.414,5.185,3.414,8.316c0,3.239-1.286,6.264-3.62,8.516
+			c-0.158,0.154-0.164,0.407-0.01,0.567l1.113,1.152c0.074,0.078,0.176,0.122,0.282,0.122c0.003,0,0.005,0,0.007,0
+			c0.104,0,0.205-0.04,0.278-0.112c2.81-2.709,4.355-6.349,4.355-10.245C22.828,8.684,21.369,5.13,18.72,2.449z"/>
+		
+			<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="13.7134" y1="-59.147" x2="18.6138" y2="-59.147" gradientTransform="matrix(1 0 0 -1 0.1401 -46.6113)">
+			<stop  offset="0" style="stop-color:#C8C8CB"/>
+			<stop  offset="0.0241" style="stop-color:#CBCBCF"/>
+			<stop  offset="0.1455" style="stop-color:#D6D6DB"/>
+			<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+			<stop  offset="1" style="stop-color:#E6E5E9"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M15.821,5.311c-0.074-0.076-0.176-0.12-0.283-0.12c-0.09-0.004-0.208,0.04-0.284,0.116l-1.14,1.126
+			c-0.158,0.154-0.16,0.409-0.004,0.565c1.444,1.463,2.24,3.401,2.24,5.455c0,2.125-0.844,4.108-2.375,5.584
+			c-0.077,0.074-0.121,0.177-0.123,0.282c-0.003,0.106,0.039,0.209,0.112,0.285l1.112,1.152c0.073,0.078,0.174,0.12,0.281,0.124
+			c0.002,0,0.004,0,0.007,0c0.105,0,0.204-0.04,0.279-0.112c2.005-1.936,3.109-4.533,3.109-7.315
+			C18.755,9.76,17.712,7.225,15.821,5.311z"/>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="1.457" y1="10.8066" x2="10.4771" y2="10.8066">
+			<stop  offset="0" style="stop-color:#EBEBEC"/>
+			<stop  offset="1" style="stop-color:#FFFFFF"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M2.231,15.893V10.99c0-0.561,0.477-1.021,1.06-1.021h2.947l4.147-3.432l0.058-0.625
+			c0-0.393,0.205-0.64-0.395-0.383L5.532,9.269H2.518c-0.584,0-1.061,0.461-1.061,1.022v4.904c0,0.48,0.355,0.89,0.826,0.994
+			C2.252,16.093,2.231,15.997,2.231,15.893z"/>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="13.8989" y1="6.3721" x2="16.4521" y2="6.3721">
+			<stop  offset="0" style="stop-color:#EBEBEC"/>
+			<stop  offset="1" style="stop-color:#FFFFFF"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_5_)" points="14.678,7.68 16.452,6.012 15.55,5.064 13.899,6.607 		"/>
+		<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="16.9121" y1="3.4658" x2="19.4644" y2="3.4658">
+			<stop  offset="0" style="stop-color:#EBEBEC"/>
+			<stop  offset="1" style="stop-color:#FFFFFF"/>
+		</linearGradient>
+		<polygon fill="url(#SVGID_6_)" points="17.69,4.773 19.464,3.106 18.562,2.158 16.912,3.703 		"/>
+		
+			<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="0.5869" y1="-60.4321" x2="2.4624" y2="-62.3076" gradientTransform="matrix(1 0 0 -1 0.1401 -46.6113)">
+			<stop  offset="0" style="stop-color:#B9B7B8"/>
+			<stop  offset="1" style="stop-color:#D9D9DE"/>
+		</linearGradient>
+		<path fill="url(#SVGID_7_)" d="M1.328,13.889v-0.59h-0.08v1.748c0,0.549,0.44,0.996,0.984,1.019v-1.167
+			C1.725,14.839,1.328,14.409,1.328,13.889z"/>
+		<path fill="#B7B7B7" d="M9.888,18.931L5.207,14.91H2.35c-0.041,0-0.078-0.008-0.118-0.012v1.167c0.014,0,0.024,0.004,0.039,0.004
+			h2.858l4.68,4.02c0.298,0.257,0.543,0.145,0.543-0.248v-0.859C10.255,19.107,10.084,19.1,9.888,18.931z"/>
+		<polyline fill="#B7B7B7" points="14.54,17.492 16.224,19.031 15.367,19.881 13.68,18.277 14.54,17.492 		"/>
+		<polyline fill="#B7B7B7" points="17.369,20.428 19.052,21.967 18.196,22.817 16.51,21.216 17.369,20.428 		"/>
+		<path fill="none" stroke="#848685" stroke-width="0.75" stroke-miterlimit="10" d="M9.808,5.383L5.454,9.122H2.271
+			c-0.563,0-1.023,0.459-1.023,1.022v4.902c0,0.562,0.46,1.022,1.023,1.022h2.858l4.68,4.02c0.298,0.257,0.543,0.145,0.543-0.248
+			V5.632C10.352,5.238,10.106,5.126,9.808,5.383z"/>
+		<path fill="none" stroke="#848685" stroke-width="0.75" stroke-miterlimit="10" d="M18.72,2.449
+			c-0.076-0.076-0.177-0.121-0.285-0.121c-0.124-0.008-0.208,0.04-0.284,0.116l-1.139,1.127c-0.157,0.156-0.159,0.408-0.004,0.565
+			c2.202,2.23,3.414,5.185,3.414,8.316c0,3.239-1.286,6.264-3.62,8.516c-0.158,0.154-0.164,0.407-0.01,0.567l1.113,1.152
+			c0.074,0.078,0.176,0.122,0.282,0.122c0.003,0,0.005,0,0.007,0c0.104,0,0.205-0.04,0.278-0.112
+			c2.81-2.709,4.355-6.349,4.355-10.245C22.828,8.684,21.369,5.13,18.72,2.449z"/>
+		<path fill="none" stroke="#848685" stroke-width="0.75" stroke-miterlimit="10" d="M15.821,5.311
+			c-0.074-0.076-0.176-0.12-0.283-0.12c-0.09-0.004-0.208,0.04-0.284,0.116l-1.14,1.126c-0.158,0.154-0.16,0.409-0.004,0.565
+			c1.444,1.463,2.24,3.401,2.24,5.455c0,2.125-0.844,4.108-2.375,5.584c-0.077,0.074-0.121,0.177-0.123,0.282
+			c-0.003,0.106,0.039,0.209,0.112,0.285l1.112,1.152c0.073,0.078,0.174,0.12,0.281,0.124c0.002,0,0.004,0,0.007,0
+			c0.105,0,0.204-0.04,0.279-0.112c2.005-1.936,3.109-4.533,3.109-7.315C18.755,9.76,17.712,7.225,15.821,5.311z"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacherGuide/flash_24x24.svg b/Sankore-3.1/resources/images/teacherGuide/flash_24x24.svg
new file mode 100644
index 0000000..03c1545
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/flash_24x24.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
+	 height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g id="Layer_1">
+</g>
+<g id="Layer_2">
+	<g>
+		<path opacity="0.8" fill="#EDEDED" d="M14.326,3.343c-2.708,2.294-3.856,6.059-4.636,7.986c-1.056,2.616-1.699,3.993-2.983,5.6
+			c-1.287,1.517-3.811,1.424-3.811,1.424v4.224c0,0,3.627,0.229,6.335-2.065c2.111-1.791,3.305-4.5,4.085-6.52h5.095V9.77h-3.35
+			c0.505-1.057,1.057-1.93,1.79-2.848c1.286-1.515,3.81-1.422,3.81-1.422V1.275C20.662,1.275,17.036,1.046,14.326,3.343z"/>
+		<path fill="#A3A2A2" d="M14.184,4.97c-2.02,2.295-3.398,6.057-4.178,7.986c-1.056,2.615-1.837,4.315-3.443,5.602
+			c-1.331,1.054-3.81,0.964-3.81,0.964v3.305c0,0,3.626,0.228,6.335-2.067c2.112-1.789,3.304-4.498,4.086-6.518h5.096v-4.223h-3.352
+			c0.505-1.058,1.056-1.929,1.791-2.847c1.286-1.514,3.81-1.424,3.81-1.424V2.445C20.519,2.445,16.616,2.216,14.184,4.97z"/>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.5698" y1="12.1602" x2="20.3354" y2="12.1602">
+			<stop  offset="0" style="stop-color:#C8C8CB"/>
+			<stop  offset="0.0241" style="stop-color:#CBCBCF"/>
+			<stop  offset="0.1455" style="stop-color:#D6D6DB"/>
+			<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+			<stop  offset="1" style="stop-color:#E6E5E9"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M14,4.97c-2.02,2.295-3.396,6.057-4.178,7.986c-1.055,2.615-1.835,4.315-3.442,5.602
+			c-1.378,0.964-3.81,0.918-3.81,0.918v2.386c0,0,3.765,0.368,6.335-2.065c1.927-1.836,2.845-4.5,3.626-6.518h5.554V9.973
+			l-4.268,0.779c0.321-1.192,1.193-3.074,2.02-3.994c1.882-2.064,4.499-1.928,4.499-1.928V2.445C20.335,2.445,16.388,2.216,14,4.97z
+			"/>
+		<path fill="none" stroke="#848685" stroke-width="0.75" stroke-linejoin="round" stroke-miterlimit="10" d="M14.184,3.593
+			c-2.708,2.295-3.857,6.059-4.637,7.986c-1.056,2.615-1.698,3.992-2.984,5.6c-1.285,1.515-3.81,1.425-3.81,1.425v4.223
+			c0,0,3.626,0.228,6.335-2.067c2.112-1.789,3.304-4.498,4.086-6.518h5.096v-4.223h-3.352c0.505-1.058,1.056-1.929,1.791-2.847
+			c1.286-1.514,3.81-1.424,3.81-1.424V1.525C20.519,1.525,16.893,1.298,14.184,3.593z"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacherGuide/image.png b/Sankore-3.1/resources/images/teacherGuide/image.png
deleted file mode 100644
index d07dda6..0000000
Binary files a/Sankore-3.1/resources/images/teacherGuide/image.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/teacherGuide/image_24x24.svg b/Sankore-3.1/resources/images/teacherGuide/image_24x24.svg
new file mode 100644
index 0000000..5b19726
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/image_24x24.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
+	 height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g id="Layer_1">
+</g>
+<g id="Layer_2">
+	<g>
+		<g>
+			
+				<rect x="5.598" y="5.608" transform="matrix(0.9609 0.2769 -0.2769 0.9609 3.4789 -3.244)" fill="#DEDDDD" width="15.259" height="10.18"/>
+			<path fill="#CCCCCC" d="M20.64,12.147c-0.281-0.151-0.581-0.274-0.89-0.408c-0.37-0.159-0.757-0.385-1.17-0.483
+				c-0.29-0.069-0.604-0.093-0.938-0.217c-0.27-0.102-0.542-0.254-0.837-0.376c-0.576-0.235-1.17-0.47-1.757-0.696
+				c-0.306-0.116-0.637-0.196-0.903-0.33c-0.13-0.064-0.249-0.17-0.38-0.247c-0.678-0.4-1.468-0.687-2.325-0.979
+				c-0.312-0.108-0.708-0.357-0.995-0.357C10.281,8.05,10.073,8.371,9.93,8.581C9.762,8.826,9.633,9.113,9.562,9.293
+				C9.282,8.874,8.478,8.621,7.98,8.815C7.842,8.871,7.754,8.987,7.635,9.051C7.007,8.82,6.567,8.309,5.833,8.263
+				c-0.163,0.578-0.326,1.16-0.489,1.743c0.345,0.205,0.76,0.235,1.143,0.381c0.444,0.168,0.827,0.624,1.458,0.611
+				c0.018-0.031,0.015-0.109,0.046-0.113c-0.217-0.141-0.821-0.227-0.683-0.52c0.072-0.15,0.307-0.08,0.5-0.031
+				c0.595,0.151,1.315,0.35,1.83,0.497c0.096-0.363,0.632-0.11,0.993,0.012c1.262,0.427,2.492,0.783,3.891,1.106
+				c1.136,0.261,2.261,0.681,3.279,0.979c-0.123,0.13-0.245,0.342-0.413,0.419c-0.201,0.096-0.555,0.011-0.833-0.029
+				c-0.631-0.096-1.17-0.111-1.745-0.192c-0.225-0.032-0.451-0.047-0.646-0.056c-0.06-0.004-0.151-0.032-0.202,0.021
+				c-0.122,0.26,0.132,0.318,0.312,0.385c0.735,0.273,1.534,0.551,2.274,0.763c-0.014,0.339,0.429,0.444,0.783,0.565
+				c0.805,0.27,1.644,0.49,2.355,0.742L20.64,12.147z"/>
+			<path fill="#FFFFFF" d="M19.735,18.654L3.646,14.147L6.819,2.829l16.087,4.506L19.735,18.654z M4.98,13.396l14.005,3.927
+				l2.588-9.239L7.569,4.162L4.98,13.396z"/>
+			
+				<rect x="4.62" y="4.605" transform="matrix(-0.9629 -0.2698 0.2698 -0.9629 22.9006 24.6079)" fill="none" stroke="#848685" stroke-width="0.75" stroke-miterlimit="10" width="17.043" height="12.249"/>
+			
+				<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="28.1626" y1="-219.4263" x2="28.1626" y2="-209.5347" gradientTransform="matrix(0.9606 0.2779 0.2995 -1.0351 47.399 -220.3408)">
+				<stop  offset="0" style="stop-color:#FFFFFF;stop-opacity:0.4"/>
+				<stop  offset="0.8587" style="stop-color:#FFFFFF;stop-opacity:0.6576"/>
+				<stop  offset="1" style="stop-color:#FFFFFF;stop-opacity:0.7"/>
+			</linearGradient>
+			<path opacity="0.8" fill="url(#SVGID_1_)" d="M16.364,5.729L7.029,3.025L4.066,13.264l2.464,0.713
+				C8.191,9.364,12.098,6.222,16.364,5.729z"/>
+		</g>
+		<rect x="1.684" y="7.821" fill="#DEDDDD" width="15.732" height="11.498"/>
+		<path fill="#CCCCCC" d="M17.249,12.925c-0.311-0.073-0.632-0.111-0.966-0.159c-0.399-0.055-0.833-0.172-1.258-0.156
+			c-0.298,0.012-0.606,0.076-0.96,0.047c-0.288-0.024-0.59-0.101-0.907-0.138c-0.618-0.075-1.256-0.145-1.879-0.203
+			c-0.327-0.031-0.667-0.024-0.96-0.078c-0.14-0.027-0.282-0.099-0.433-0.138c-0.759-0.214-1.598-0.276-2.502-0.329
+			c-0.329-0.019-0.777-0.157-1.056-0.077c-0.156,0.044-0.27,0.42-0.352,0.666c-0.096,0.293-0.144,0.613-0.162,0.811
+			c-0.381-0.338-1.224-0.362-1.65-0.032c-0.119,0.095-0.172,0.234-0.271,0.327c-0.666-0.055-1.228-0.44-1.947-0.281
+			c0,0.625,0,1.245,0,1.867c0.39,0.11,0.797,0.026,1.205,0.062c0.473,0.044,0.962,0.392,1.569,0.2
+			c0.007-0.034-0.017-0.11,0.013-0.124c-0.248-0.078-0.852,0-0.798-0.325c0.028-0.171,0.273-0.166,0.474-0.171
+			c0.612-0.019,1.359-0.021,1.893-0.016c-0.004-0.384,0.581-0.288,0.961-0.265c1.331,0.073,2.611,0.087,4.043,0.016
+			c1.167-0.056,2.361,0.048,3.423,0.062c-0.082,0.163-0.145,0.405-0.284,0.527c-0.17,0.15-0.533,0.168-0.812,0.205
+			C13,15.303,12.476,15.441,11.9,15.517c-0.224,0.03-0.446,0.08-0.637,0.127c-0.058,0.012-0.153,0.007-0.188,0.074
+			c-0.046,0.293,0.215,0.281,0.406,0.298c0.779,0.062,1.623,0.119,2.394,0.126c0.08,0.337,0.535,0.318,0.908,0.339
+			c0.847,0.046,1.716,0.033,2.466,0.084V12.925L17.249,12.925z"/>
+		<path fill="#B2B3B3" d="M2.311,15.023c0,0.008,0,0.012,0,0.021c0.893,0.021,1.784,0.159,2.681,0.259
+			c0.432,0.046,0.865,0.036,1.294,0.08c0.841,0.084,1.667,0.159,2.478,0.3c0.396,0.067,0.798,0.178,1.184,0.22
+			c0.331,0.034,0.659,0.007,0.979,0.039c0.904,0.09,1.825,0.267,2.737,0.359c1.219,0.12,2.411,0.286,3.54,0.659
+			c0,0.563,0,1.128,0,1.695c-0.068,0.016-0.173-0.026-0.218,0.021c-5.196,0-9.845,0-15.043,0c0-1.221,0-2.436,0-3.653
+			C2.066,15.023,2.188,15.023,2.311,15.023z"/>
+		<path fill="#A3A2A2" d="M14.121,15.884c0.082,0.073,0.145,0.165,0.24,0.22c-0.279,0.375-0.836,0.679-0.674,1.315
+			c-0.15,0.247-0.667,0.259-0.637,0.606c0.206,0.084,0.489,0.08,0.646,0.222c-0.217,0.151-0.432,0.307-0.622,0.478h3.065
+			c0.327-0.2,0.688-0.372,1.078-0.515v-0.695c-0.18-0.062-0.325-0.163-0.42-0.34c0.105-0.071,0.269-0.062,0.42-0.066v-0.694
+			c-0.252-0.028-0.513-0.028-0.732-0.139c-0.214-0.545,0.381-0.88,0.644-1.233c-0.054-0.04-0.1-0.081-0.124-0.157
+			c-0.619-0.243-1.242-0.481-1.686-0.93c0.18-0.115,0.235-0.336,0.234-0.558c0.138,0.033,0.372,0.067,0.439-0.075
+			c-0.253-0.09-0.411-0.291-0.544-0.526c-0.117-0.021-0.19-0.081-0.324-0.138c-0.069-0.028-0.321-0.072-0.326-0.14
+			c-0.006-0.084,0.173-0.091,0.249-0.113c0.068-0.021,0.134-0.097,0.214-0.13c0.171-0.067,0.385-0.084,0.465-0.205
+			c-0.227-0.111-0.313-0.349-0.469-0.531c-0.097-0.118-0.231-0.208-0.339-0.323c-0.333-0.359-0.595-0.756-0.821-1.244
+			c-0.003-0.013-0.005-0.021-0.021-0.019c-0.135,0.077-0.113,0.203-0.122,0.324c-0.036,0.436-0.329,0.879-0.398,1.309
+			c0.214,0.08,0.379,0.011,0.496,0.161c-0.044,0.214-0.088,0.431-0.115,0.658c-0.232,0.26-0.409,0.567-0.598,0.863
+			c0.317,0.046,0.603,0.12,0.801,0.301c-0.169,0.163-0.261,0.396-0.398,0.589c-0.05,0.006-0.039-0.027-0.073,0.006
+			c-0.283,0.336-0.869,0.562-0.676,1.056c0.367-0.031,0.671-0.208,1.022-0.196c-0.415,0.271-0.884,0.493-1.231,0.825
+			C13.262,15.804,13.649,16.003,14.121,15.884z"/>
+		<path fill="#FFFFFF" d="M17.928,19.663H1.22V7.538h16.708V19.663L17.928,19.663z M2.302,18.549h14.544V8.656H2.302V18.549z"/>
+		
+			<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="7.0205" y1="-140.0913" x2="7.0205" y2="-130.2026" gradientTransform="matrix(1 0 0 -1 0.1401 -121.5469)">
+			<stop  offset="0" style="stop-color:#FFFFFF;stop-opacity:0.4"/>
+			<stop  offset="0.8587" style="stop-color:#FFFFFF;stop-opacity:0.6576"/>
+			<stop  offset="1" style="stop-color:#FFFFFF;stop-opacity:0.7"/>
+		</linearGradient>
+		<path opacity="0.8" fill="url(#SVGID_2_)" d="M12.019,8.656H2.302v9.889h2.562C5.18,14.005,8.06,10.197,12.019,8.656z"/>
+		
+			<rect x="1.03" y="7.35" fill="none" stroke="#848685" stroke-width="0.75" stroke-miterlimit="10" width="17.066" height="12.561"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacherGuide/link.png b/Sankore-3.1/resources/images/teacherGuide/link.png
deleted file mode 100644
index 893643d..0000000
Binary files a/Sankore-3.1/resources/images/teacherGuide/link.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/teacherGuide/link_24x24.svg b/Sankore-3.1/resources/images/teacherGuide/link_24x24.svg
new file mode 100644
index 0000000..a2c47cd
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/link_24x24.svg
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
+	 height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g id="Layer_1">
+</g>
+<g id="Layer_2">
+	<g>
+		
+			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="273.0679" y1="-528.8062" x2="293.4702" y2="-528.8062" gradientTransform="matrix(0.4316 -0.9021 0.9021 0.4316 366.9186 496.0778)">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.4811" style="stop-color:#C7C8CA"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<circle fill="url(#SVGID_1_)" cx="12.161" cy="12.317" r="10.201"/>
+		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="8.6484" y1="19.3447" x2="12.994" y2="1.8487">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.508" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.6057" style="stop-color:#C7C9CA"/>
+			<stop  offset="0.7601" style="stop-color:#C9CACC"/>
+			<stop  offset="0.7699" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.7963" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.829" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.8748" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_2_)" d="M11.387,16.715c-0.47-0.202-1.232-0.539-1.569-0.965c-0.247-0.293-0.225-0.293-0.606-0.426
+			c-0.314-0.09-0.516-0.27-0.875-0.314c-0.269-0.023-1.346-0.291-1.278,0.09l-0.023-0.09c-0.134,0.426-0.336,0.785-0.561,1.188
+			c-0.156,0.293-0.111,0.382-0.023,0.696c0.157,0.583,0.225,0.628,0.696,0.875c1.345,0.739-0.158,2.893,0.964,3.521
+			c0.18,0.113,0.403,0.181,0.583,0.247c0.224-0.313,0.336-0.517,0.65-0.718c0.202-0.112,0.336-0.157,0.471-0.358
+			c0.179-0.226,0.112-0.449,0.224-0.673c0.157-0.315,0.583-0.225,0.83-0.448c0.314-0.292,0.336-0.675,0.471-1.01
+			c0.157-0.36,0.627-0.538,0.763-0.875C12.263,17.006,11.725,16.849,11.387,16.715z"/>
+		<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="15.8818" y1="8.6055" x2="15.8818" y2="5.5281">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+			<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M15.738,8.079c0,0.225-0.268,0.358-0.155,0.562c0.224-0.271,0.381-0.404,0.74-0.45
+			c-0.09-0.269-0.382-0.447-0.449-0.718c-0.067-0.2,0-0.47-0.292-0.402l0.067,0.067c-0.337-0.067-0.18,0.357-0.112,0.515
+			C15.583,7.766,15.738,7.989,15.738,8.079z"/>
+		<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="15.1758" y1="8.9072" x2="15.1758" y2="5.8291">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+			<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_4_)" d="M15.251,7.728c-0.085,0.189-0.191,0.318-0.229,0.531C15.413,8.455,15.36,7.983,15.251,7.728z"/>
+		<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="14.0439" y1="6.876" x2="14.0439" y2="3.7988">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+			<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_5_)" d="M13.944,5.59l0.045-0.066c-0.089,0.021-0.246,0.021-0.358,0.044
+			c-0.157,0.492,0.358,0.562,0.65,0.336C14.774,5.523,14.259,5.343,13.944,5.59z"/>
+		<path fill="#FFFFFF" d="M14.842,12.161c-0.042-0.022-0.045-0.022-0.083-0.043c-0.002,0.007-0.029,0.021-0.029,0.021
+			c0.062,0.018,0.104,0.042,0.13,0.072c0.002-0.002,0.003-0.005,0.005-0.005L14.842,12.161z"/>
+		<path fill="#FFFFFF" d="M17.133,3.332c-0.036-0.038-0.073-0.077-0.116-0.119C17.054,3.257,17.092,3.295,17.133,3.332z"/>
+		<path fill="#FFFFFF" d="M18.251,6.084c0.002-0.018,0.006-0.032,0.009-0.049c-0.025,0.001-0.051,0.004-0.076,0.004L18.251,6.084z"
+			/>
+		<path fill="#FFFFFF" d="M14.752,12.116c0.002,0.001,0.003,0.002,0.006,0.002C14.758,12.117,14.757,12.116,14.752,12.116z"/>
+		<path fill="#FFFFFF" d="M14.839,12.229c0.012,0,0.023,0,0.035,0c-0.004-0.006-0.008-0.013-0.014-0.018
+			C14.847,12.219,14.812,12.232,14.839,12.229z"/>
+		<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="3.9849" y1="13.3643" x2="11.0251" y2="-2.2097">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.5185" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.9002" style="stop-color:#C9CACC"/>
+			<stop  offset="0.9043" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.9153" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.9289" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.9479" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_6_)" d="M6.588,15.032l0.09,0.09c0.067-0.067-0.336-0.27-0.427-0.382c-0.179-0.27-0.022-0.472,0.023-0.831
+			c-0.202,0.025-0.403,0.114-0.628,0.114c0.067-0.136,0.426-0.539,0.292-0.695c-0.18-0.158-0.651,0.425-0.852,0.425
+			c-0.112-0.38-0.225-1.032,0.067-1.347c0.18-0.2,0.605-0.335,0.852-0.245c0.337,0.111,0.315,0.338,0.382,0.628
+			c0.292-0.313,0.156-0.809,0.336-1.146c0.112-0.223,0.403-0.246,0.426-0.515l-0.045,0.045c0.359-0.357,0.673-0.74,1.077-1.053
+			c0.337-0.271,0.807-0.54,1.032-0.898C8.921,9.18,8.653,9.199,8.899,8.843c0.225-0.359,0.785-0.113,0.853-0.45
+			c0.068-0.313-0.449-0.671-0.538-0.94C9.124,7.228,9.034,6.936,8.989,6.688C8.876,6.8,8.809,6.958,8.697,7.07
+			C8.519,6.755,8.652,6.621,8.271,6.688C8.046,6.712,7.823,6.869,7.755,7.092c-0.089,0.27,0.09,0.561,0,0.83
+			c-0.067,0.224-0.313,0.562-0.516,0.65C7.172,8.326,7.375,8.079,7.307,7.833c-0.381,0.021-0.493-0.181-0.785-0.36l0.09-0.044
+			c-0.135,0.09-0.337-0.224-0.494-0.314c0.269-0.359,0.65-0.627,0.942-0.963c0.224,0.425,0.583-0.606,0.763-0.786
+			C7.957,5.208,8.45,5.051,8.586,5.276c0.156,0.269-0.225,0.561-0.359,0.739c0.246,0,0.516,0.044,0.718,0.181
+			c0.201-0.157,0.47-0.405,0.583-0.651c-0.18-0.111-0.337-0.224-0.471-0.381c0.134-0.269,0.104-0.619-0.175-0.56
+			c0.045-0.028,0.087-0.06,0.129-0.091C8.497,4.355,8.316,4.692,8.429,4.064c0.044-0.293,0.112-0.471,0.359-0.74L8.72,3.302
+			C8.854,3.168,8.967,2.988,9.057,2.83c-0.023,0-0.089,0-0.112,0c0.023-0.097,0.001-0.179-0.053-0.245
+			C5.05,3.877,2.235,7.4,1.982,11.612c0.643-0.203,1.032,0.918,1.243,1.443c-0.067-0.244-0.112-0.514-0.224-0.738
+			c0.313,0.358,0.672,0.561,0.717,1.055c0.045,0.313-0.089,0.291,0.269,0.425c0.27,0.089,0.561,0.068,0.807,0.18
+			C5.288,14.157,6.051,15.145,6.588,15.032z"/>
+		<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="11.1875" y1="6.168" x2="12.4674" y2="-2.8603">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+			<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_7_)" d="M13.407,4.021c0.045-0.09,0.403-0.157,0.516-0.18c-0.022-0.359-0.179-0.74-0.068-1.055
+			c0.054-0.161,0.18-0.37,0.326-0.521c-0.172-0.035-0.345-0.065-0.521-0.092l-0.188,0.023l0.177-0.024
+			c-0.496-0.074-1.001-0.113-1.517-0.113c-0.682,0-1.348,0.067-1.992,0.195c-0.076,0.192-0.188,0.443-0.188,0.443l0.06-0.01
+			c-0.218,0.37-0.868,0.392-0.89,0.839c0.336,0.045,0.695-0.089,1.033-0.022c0.268,0.427,0.38,0.763,0.134,1.234
+			c0.157,0.18,0.358,0.022,0.538,0.045c-0.045,0.381-0.404,0.672-0.246,1.097c0.044,0.159,0.157,0.517,0.224,0.652
+			c0.135,0.202,0.203,0.156,0.449,0.245c0.246-0.47,0.202-1.074,0.718-1.344c0.336-0.157,0.739-0.18,1.032-0.36
+			c0.201-0.134,0.561-0.401,0.561-0.673C13.563,4.244,13.338,4.199,13.407,4.021z"/>
+		<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="18.8745" y1="17.7041" x2="16.3146" y2="-1.3523">
+			<stop  offset="0" style="stop-color:#77787B"/>
+			<stop  offset="0.4865" style="stop-color:#C7C8CA"/>
+			<stop  offset="0.7121" style="stop-color:#C9CACC"/>
+			<stop  offset="0.7239" style="stop-color:#D0D1D3"/>
+			<stop  offset="0.7555" style="stop-color:#DEDFE0"/>
+			<stop  offset="0.7948" style="stop-color:#E8E8E9"/>
+			<stop  offset="0.8498" style="stop-color:#EDEEEF"/>
+			<stop  offset="1" style="stop-color:#EFEFF0"/>
+		</linearGradient>
+		<path fill="url(#SVGID_8_)" d="M17.368,3.506c0.011,0.016,0.021,0.03,0.031,0.043C17.362,3.52,17.325,3.49,17.29,3.461
+			c-0.028-0.016-0.055-0.033-0.083-0.049c0.237,0.27,0.327,0.485,0.327,0.922c-0.134-0.046-0.247-0.09-0.359-0.157
+			c-0.134,0.471-0.201,0.831,0.045,1.278c-0.066,0.22-0.26,0.503-0.206,0.744c-0.127,0.255-0.261,0.664-0.199,0.915
+			c0.539-0.448,0.494,0.023,0.853,0.314C17.78,7.228,17.87,7.003,18.004,6.8c0.067-0.088,0.201-0.022,0.224-0.224
+			c0-0.156-0.203-0.18-0.224-0.291c-0.045-0.226,0.113-1.167,0.381-1.234c-0.042,0.32-0.066,0.661-0.126,0.984
+			c0.081-0.007,0.163-0.022,0.245-0.039c0,0.138-0.103,0.347,0.032,0.496c0.236,0.258,0.594-0.048,0.838,0.195
+			c-0.119,0.197-0.183,0.099-0.356,0.135c-0.192,0.04-0.214,0.127-0.291,0.332c-0.085-0.203-0.286-0.426-0.433-0.13
+			c-0.104,0.211,0.028,0.561-0.184,0.714c-0.18,0.128-0.66,0.179-0.798-0.02c-0.13-0.187-0.015-0.473-0.178-0.647
+			c-0.034,0.185-0.145,0.354-0.123,0.535c0.02,0.172,0.162,0.302,0.091,0.469c-0.146,0-0.33,0.011-0.439,0.1
+			c-0.089,0.072-0.091,0.211-0.229,0.263c-0.122,0.049-0.312-0.021-0.412,0.09c-0.049,0.055-0.058,0.256-0.087,0.333
+			c-0.124,0.015-0.278,0.029-0.39,0.076c0.051,0.271,0.442,0.353,0.417,0.667c-0.015,0.192-0.09,0.187-0.27,0.158
+			C15.5,9.73,15.284,9.719,15.092,9.68c-0.006,0.399,0.229,0.658,0.023,1.062c0.071,0.033,0.132-0.02,0.193,0.005
+			c0.047,0.021,0.086,0.079,0.117,0.093c0.122,0.047,0.217,0.072,0.359,0.049c0.15-0.026,0.212-0.069,0.292-0.183
+			c0.029-0.041-0.008-0.116,0.038-0.164c0.042-0.048,0.114-0.042,0.163-0.081c0.195-0.15,0.186-0.52,0.386-0.649
+			c0.033-0.021,0.249-0.015,0.332-0.044c0.118-0.045,0.18-0.029,0.265-0.116c0.067,0.255,0.214,0.462,0.407,0.649
+			c0.192,0.187,0.438,0.382,0.025,0.452c0.132,0.178,0.172,0.241,0.328,0.035c0.115-0.151,0.182-0.302,0.323-0.42
+			c-0.257-0.242-0.482-0.539-0.667-0.85c0.269-0.264,0.877,0.6,0.889,0.827c0.013,0.248-0.125,0.354,0.128,0.469
+			c0.344,0.158,0.222-0.241,0.233-0.491c0.207,0.114,0.413-0.094,0.603-0.023c0.097,0.034,0.114,0.15,0.179,0.22
+			c0.102,0.11,0.066,0.085,0.178,0.117c0.228,0.064,0.335,0.003,0.405,0.293c0.043,0.176,0.103,0.407,0.028,0.582
+			c-0.109,0.259-0.464,0.601-0.72,0.691c-0.264,0.094-0.504-0.123-0.741-0.223c-0.38-0.157-0.762-0.297-1.133-0.497
+			c-0.362-0.197-0.288-0.059-0.556,0.078c-0.285,0.146-0.567,0.366-0.871,0.466c-0.408,0.136-0.983,0.202-1.424,0.202
+			c0.103,0.166-0.21,0.463-0.302,0.628c-0.359,0.56-0.56,0.873-0.381,1.547c0.09,0.336,0.201,0.628,0.381,0.919
+			c0.09,0.135,0.157,0.338,0.314,0.427c0.201,0.157,0.179,0.067,0.449-0.022c0.29-0.089,0.784-0.156,1.099-0.066
+			c0.112,0.021,0.157,0.135,0.269,0.156c0.044,0.021,0.358,0.045,0.381,0.067c0,0,0,0,0.022,0c0.067,0.292-0.09,0.515-0.09,0.785
+			c-0.022,0.291,0.045,0.245,0.157,0.517c0.202,0.47,0.044,1.053-0.112,1.501c-0.179,0.516-0.045,0.874,0,1.413
+			c0.026,0.303,0.185,0.584,0.285,0.863c1.223-0.73,2.279-1.71,3.098-2.869c-0.138-0.342-0.243-0.681-0.086-0.955
+			c0.337-0.604,1.077-0.874,1.233-1.592c0.046-0.246,0.024-0.492,0.113-0.719c0.059-0.196,0.188-0.293,0.351-0.355
+			c0.163-0.723,0.249-1.474,0.249-2.244C22.305,8.527,20.325,5.287,17.368,3.506z M18.475,5.903c0.013,0.016,0.021,0.029,0.024,0.05
+			L18.475,5.903z"/>
+		<circle fill="none" stroke="#838585" stroke-miterlimit="10" cx="12.133" cy="12.227" r="10.38"/>
+		<radialGradient id="SVGID_9_" cx="12.7031" cy="11.0762" r="4.9285" gradientUnits="userSpaceOnUse">
+			<stop  offset="0" style="stop-color:#FFFFFF;stop-opacity:0.5"/>
+			<stop  offset="1" style="stop-color:#EFEFF0;stop-opacity:0"/>
+		</radialGradient>
+		<circle fill="url(#SVGID_9_)" cx="12.703" cy="11.076" r="4.928"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacherGuide/movie.png b/Sankore-3.1/resources/images/teacherGuide/movie.png
deleted file mode 100644
index 9150c65..0000000
Binary files a/Sankore-3.1/resources/images/teacherGuide/movie.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/teacherGuide/movie_24x24.svg b/Sankore-3.1/resources/images/teacherGuide/movie_24x24.svg
new file mode 100644
index 0000000..d22e447
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/movie_24x24.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
+	 height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g id="Layer_1">
+</g>
+<g id="Layer_2">
+	<g>
+		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="6.0464" y1="11.2217" x2="17.2651" y2="11.2217">
+			<stop  offset="0" style="stop-color:#C8C8CB"/>
+			<stop  offset="0.0241" style="stop-color:#CBCBCF"/>
+			<stop  offset="0.1455" style="stop-color:#D6D6DB"/>
+			<stop  offset="0.2577" style="stop-color:#D9D9DE"/>
+			<stop  offset="1" style="stop-color:#E6E5E9"/>
+		</linearGradient>
+		<rect x="6.046" y="1.012" fill="url(#SVGID_1_)" width="11.219" height="20.42"/>
+		<path fill="#848685" d="M1.897,0.608v22.197h19.769V0.608H1.897z M5.358,21.376H3.327v-2.03h2.031V21.376z M5.358,17.915H3.327
+			v-2.033h2.031V17.915z M5.358,14.454H3.327v-2.032h2.031V14.454z M5.358,10.993H3.327V8.96h2.031V10.993z M5.358,7.532H3.327
+			V5.498h2.031V7.532z M5.358,4.069H3.327V2.034h2.031V4.069z M16.749,21.376H6.801v-8.954h9.948V21.376z M16.749,10.993H6.801
+			V2.034h9.948V10.993z M20.223,21.376h-2.031v-2.03h2.031V21.376z M20.223,17.915h-2.031v-2.033h2.031V17.915z M20.223,14.454
+			h-2.031v-2.032h2.031V14.454z M20.223,10.993h-2.031V8.96h2.031V10.993z M20.223,7.532h-2.031V5.498h2.031V7.532z M20.223,4.069
+			h-2.031V2.034h2.031V4.069z"/>
+		
+			<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="11.6348" y1="-55.4155" x2="11.6348" y2="-48.645" gradientTransform="matrix(1 0 0 -1 0.1401 -46.6113)">
+			<stop  offset="0" style="stop-color:#F6F5F7;stop-opacity:0.3"/>
+			<stop  offset="1" style="stop-color:#F6F5F7;stop-opacity:0.7"/>
+		</linearGradient>
+		<path fill="url(#SVGID_2_)" d="M16.186,3.572c0.188,0,0.376,0.006,0.563,0.016V2.034H6.801v6.771
+			C8.746,5.666,12.222,3.572,16.186,3.572z"/>
+		
+			<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="11.6348" y1="-66.0249" x2="11.6348" y2="-59.2573" gradientTransform="matrix(1 0 0 -1 0.1401 -46.6113)">
+			<stop  offset="0" style="stop-color:#F6F5F7;stop-opacity:0.3"/>
+			<stop  offset="1" style="stop-color:#F6F5F7;stop-opacity:0.7"/>
+		</linearGradient>
+		<path fill="url(#SVGID_3_)" d="M16.186,14.187c0.188,0,0.376,0.002,0.563,0.012v-1.552H6.801v6.768
+			C8.746,16.277,12.222,14.187,16.186,14.187z"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacherGuide/pencil.svg b/Sankore-3.1/resources/images/teacherGuide/pencil.svg
new file mode 100644
index 0000000..e7e6a2c
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/pencil.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="43.5px"
+	 height="42px" viewBox="0 0 43.5 42" enable-background="new 0 0 43.5 42" xml:space="preserve">
+<g id="Layer_1">
+	<g>
+		<polygon fill="#FEDBB8" points="13.961,35.194 3.228,39.065 7.028,28.349 9.419,25.986 16.538,33.188 		"/>
+		<path fill="#F7AB8D" d="M29.881,5.562L29.881,5.562c3.443-3.402,4.943-4.111,5.964-3.079c0.826,0.836,3.428,3.468,4.255,4.304
+			c1.021,1.033-0.035,2.71-3.219,5.857l0,0L29.881,5.562z"/>
+		
+			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="35.5254" y1="-103.0986" x2="12.9276" y2="-102.126" gradientTransform="matrix(0.574 0.5807 -0.7662 0.7573 -73.1595 82.9721)">
+			<stop  offset="0" style="stop-color:#F6CB59"/>
+			<stop  offset="0.5178" style="stop-color:#EFEA59"/>
+			<stop  offset="0.532" style="stop-color:#F1EC6C"/>
+			<stop  offset="0.5607" style="stop-color:#F5F088"/>
+			<stop  offset="0.5932" style="stop-color:#F8F39D"/>
+			<stop  offset="0.6298" style="stop-color:#FBF5AE"/>
+			<stop  offset="0.6724" style="stop-color:#FEF7BC"/>
+			<stop  offset="0.7251" style="stop-color:#FFF9C5"/>
+			<stop  offset="0.7987" style="stop-color:#FFFACA"/>
+			<stop  offset="1" style="stop-color:#FFFBCC"/>
+		</linearGradient>
+		<path fill="url(#SVGID_1_)" d="M14.505,35.048c0,0,1.091-1.469,0.202-2.42c-0.901-0.969-2.367-0.047-2.367-0.047
+			s0.776-1.717-0.08-2.582c-0.881-0.893-2.396-0.055-2.396-0.055s0.847-1.328,0.096-2.088c-0.763-0.772-1.844-0.476-2.578,0.25
+			L7.359,28L28.4,7.203l7.097,7.179L14.455,35.179L14.505,35.048z"/>
+		
+			<rect x="18.271" y="3.63" transform="matrix(0.703 0.7112 -0.7112 0.703 18.0232 -8.2049)" fill="#FFFFFF" width="1.128" height="27.692"/>
+		<path fill="#ECD616" d="M32.919,11.917l-20.741,20.5c0,0,1.678-0.664,2.348,0.09c0.669,0.756,0.023,1.902,0.023,1.902
+			L35.158,14.04L32.919,11.917z"/>
+		
+			<line fill="none" stroke="#DAB228" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="28.16" y1="11.837" x2="14.104" y2="25.731"/>
+		
+			<line fill="none" stroke="#DAB228" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="30.535" y1="14.241" x2="16.479" y2="28.135"/>
+		<path fill="#E8BE9C" d="M12.46,32.478l-9.065,6.33l11.176-3.959c0,0,0.488-1.588,0.071-2.035
+			C13.894,32.009,12.46,32.478,12.46,32.478z"/>
+		<polygon fill="#FFF3EA" points="9.106,27.868 4.137,38.312 3.696,37.999 7.306,27.924 		"/>
+		
+			<polyline fill="none" stroke="#D3A76C" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+			6.888,28.565 3.085,39.282 13.819,35.411 		"/>
+		
+			<path fill="none" stroke="#BE942E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+			M14.31,35.04c0,0,1.09-1.469,0.202-2.422c-0.902-0.967-2.368-0.045-2.368-0.045s0.776-1.717-0.079-2.584
+			c-0.881-0.891-2.396-0.053-2.396-0.053s0.846-1.328,0.095-2.088C9,27.076,7.919,27.372,7.186,28.098l-0.022-0.106L28.204,7.195
+			l7.096,7.179L14.259,35.171L14.31,35.04z"/>
+		<path fill="#FDDBCF" d="M30.146,5.564l0.864,0.861c0.329-0.289,1.351-1.265,2.108-1.744c0.761-0.481,1.4-0.81,2.012-0.624
+			c0.859,0.264,2.844,2.077,4.223,3.216c0.221,0.181-0.541-0.715-0.353-0.538c0,0-3.06-3.487-3.854-4.137
+			c-0.795-0.649-2.911,0.938-3.674,1.616C30.708,4.892,30.146,5.564,30.146,5.564z"/>
+		<path fill="#EF9073" d="M39.828,7.605c-0.272,0.424-1.103,1.46-1.842,2.096c-0.68,0.582-1.251,0.626-1.694,0.417
+			c-0.355-0.167-1.75-1.202-2.48-1.747c-0.181-0.137-1.221-1.046-1.221-1.046l4.291,4.877l2.674-3.018L39.828,7.605z"/>
+		
+			<path fill="none" stroke="#DD7652" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="
+			M29.853,5.625L29.853,5.625c3.443-3.403,4.944-4.112,5.964-3.08c0.827,0.836,3.429,3.468,4.254,4.304
+			c1.021,1.032-0.033,2.709-3.217,5.857l0,0L29.853,5.625z"/>
+		<polygon fill="#666766" stroke="#4C4C4D" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+			3.835,36.403 2.714,39.628 5.843,38.505 		"/>
+	</g>
+</g>
+<g id="Layer_2">
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/teacherGuide/w3c.png b/Sankore-3.1/resources/images/teacherGuide/w3c.png
deleted file mode 100644
index 028cd08..0000000
Binary files a/Sankore-3.1/resources/images/teacherGuide/w3c.png and /dev/null differ
diff --git a/Sankore-3.1/resources/images/teacherGuide/w3c_24x24.svg b/Sankore-3.1/resources/images/teacherGuide/w3c_24x24.svg
new file mode 100644
index 0000000..07a37ac
--- /dev/null
+++ b/Sankore-3.1/resources/images/teacherGuide/w3c_24x24.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px"
+	 height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<g id="Layer_1">
+</g>
+<g id="Layer_2">
+	<g>
+		<g>
+			
+				<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="9.9834" y1="-219.9985" x2="2.5369" y2="-212.552" gradientTransform="matrix(1 0 0 -1 0.1401 -198.4941)">
+				<stop  offset="0" style="stop-color:#77787B"/>
+				<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+				<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+				<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+				<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+				<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+				<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+				<stop  offset="1" style="stop-color:#EFEFF0"/>
+			</linearGradient>
+			<path fill="url(#SVGID_1_)" d="M10.779,19.928c0,1.229-1.005,2.232-2.234,2.232h-4.29c-1.23,0-2.235-1.003-2.235-2.232v-4.29
+				c0-1.229,1.005-2.236,2.235-2.236h4.29c1.229,0,2.234,1.007,2.234,2.236V19.928z"/>
+			<path fill="#C6C6C5" d="M9.903,19.499c0,0.981-0.805,1.785-1.787,1.785H4.684c-0.983,0-1.788-0.804-1.788-1.785v-3.433
+				c0-0.985,0.805-1.789,1.788-1.789h3.433c0.982,0,1.787,0.804,1.787,1.789V19.499z"/>
+		</g>
+		<g>
+			
+				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="9.9829" y1="-208.3926" x2="2.5364" y2="-200.946" gradientTransform="matrix(1 0 0 -1 0.1401 -198.4941)">
+				<stop  offset="0" style="stop-color:#77787B"/>
+				<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+				<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+				<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+				<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+				<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+				<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+				<stop  offset="1" style="stop-color:#EFEFF0"/>
+			</linearGradient>
+			<path fill="url(#SVGID_2_)" d="M10.779,8.321c0,1.229-1.005,2.232-2.234,2.232h-4.29c-1.23,0-2.235-1.003-2.235-2.232v-4.29
+				c0-1.229,1.005-2.236,2.235-2.236h4.29c1.229,0,2.234,1.007,2.234,2.236V8.321z"/>
+			<path fill="#C6C6C5" d="M9.903,7.893c0,0.981-0.805,1.785-1.787,1.785H4.684c-0.983,0-1.788-0.804-1.788-1.785V4.46
+				c0-0.983,0.805-1.789,1.788-1.789h3.433c0.982,0,1.787,0.806,1.787,1.789V7.893z"/>
+		</g>
+		<g>
+			
+				<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="21.2266" y1="-219.9995" x2="13.7793" y2="-212.5523" gradientTransform="matrix(1 0 0 -1 0.1401 -198.4941)">
+				<stop  offset="0" style="stop-color:#77787B"/>
+				<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+				<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+				<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+				<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+				<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+				<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+				<stop  offset="1" style="stop-color:#EFEFF0"/>
+			</linearGradient>
+			<path fill="url(#SVGID_3_)" d="M22.022,19.928c0,1.229-1.005,2.232-2.235,2.232h-4.291c-1.229,0-2.235-1.003-2.235-2.232v-4.29
+				c0-1.229,1.006-2.236,2.235-2.236h4.291c1.23,0,2.235,1.007,2.235,2.236V19.928z"/>
+			<path fill="#5DB7DF" d="M21.146,19.499c0,0.981-0.805,1.785-1.788,1.785h-3.433c-0.983,0-1.787-0.804-1.787-1.785v-3.433
+				c0-0.985,0.804-1.789,1.787-1.789h3.433c0.983,0,1.788,0.804,1.788,1.789V19.499z"/>
+		</g>
+		<g>
+			
+				<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="21.2266" y1="-208.3931" x2="13.7793" y2="-200.9458" gradientTransform="matrix(1 0 0 -1 0.1401 -198.4941)">
+				<stop  offset="0" style="stop-color:#77787B"/>
+				<stop  offset="0.3804" style="stop-color:#C7C8CA"/>
+				<stop  offset="0.4911" style="stop-color:#C9CACC"/>
+				<stop  offset="0.512" style="stop-color:#D0D1D3"/>
+				<stop  offset="0.5679" style="stop-color:#DEDFE0"/>
+				<stop  offset="0.6374" style="stop-color:#E8E8E9"/>
+				<stop  offset="0.7345" style="stop-color:#EDEEEF"/>
+				<stop  offset="1" style="stop-color:#EFEFF0"/>
+			</linearGradient>
+			<path fill="url(#SVGID_4_)" d="M22.022,8.321c0,1.229-1.005,2.232-2.235,2.232h-4.291c-1.229,0-2.235-1.003-2.235-2.232v-4.29
+				c0-1.229,1.006-2.236,2.235-2.236h4.291c1.23,0,2.235,1.007,2.235,2.236V8.321z"/>
+			<path fill="#C6C6C5" d="M21.146,7.893c0,0.981-0.805,1.785-1.788,1.785h-3.433c-0.983,0-1.787-0.804-1.787-1.785V4.46
+				c0-0.983,0.804-1.789,1.787-1.789h3.433c0.983,0,1.788,0.806,1.788,1.789V7.893z"/>
+		</g>
+		<circle fill="#CFCECE" stroke="#848484" stroke-width="0.75" stroke-miterlimit="10" cx="6.347" cy="6.222" r="1.856"/>
+		
+			<rect x="6.037" y="3.667" fill="#838585" stroke="#838585" stroke-width="0.75" stroke-linejoin="round" stroke-miterlimit="10" width="0.619" height="0.698"/>
+		
+			<line fill="none" stroke="#838585" stroke-width="0.75" stroke-linecap="round" stroke-miterlimit="10" x1="6.347" y1="6.22" x2="7.164" y2="5.867"/>
+		<path fill="none" stroke="#838585" stroke-width="0.75" stroke-linecap="round" stroke-miterlimit="10" d="M8.553,17.782
+			c0-0.832-0.493-1.509-1.104-1.509c-0.609,0-1.103,0.677-1.103,1.509c0,0.833-0.495,1.506-1.105,1.506
+			c-0.608,0-1.103-0.673-1.103-1.506"/>
+		<path fill="none" stroke="#838585" stroke-width="0.75" stroke-miterlimit="10" d="M10.779,8.321c0,1.229-1.005,2.232-2.234,2.232
+			h-4.29c-1.23,0-2.235-1.003-2.235-2.232v-4.29c0-1.229,1.005-2.236,2.235-2.236h4.29c1.229,0,2.234,1.007,2.234,2.236V8.321z"/>
+		<path fill="none" stroke="#838585" stroke-width="0.75" stroke-miterlimit="10" d="M22.022,8.321c0,1.229-1.005,2.232-2.235,2.232
+			h-4.291c-1.229,0-2.235-1.003-2.235-2.232v-4.29c0-1.229,1.006-2.236,2.235-2.236h4.291c1.23,0,2.235,1.007,2.235,2.236V8.321z"/>
+		<path fill="none" stroke="#838585" stroke-width="0.75" stroke-miterlimit="10" d="M10.779,19.928
+			c0,1.229-1.005,2.232-2.234,2.232h-4.29c-1.23,0-2.235-1.003-2.235-2.232v-4.29c0-1.229,1.005-2.236,2.235-2.236h4.29
+			c1.229,0,2.234,1.007,2.234,2.236V19.928z"/>
+		<g>
+			<path fill="#C6C6C5" d="M21.146,19.499c0,0.981-0.805,1.785-1.788,1.785h-3.433c-0.983,0-1.787-0.804-1.787-1.785v-3.433
+				c0-0.985,0.804-1.789,1.787-1.789h3.433c0.983,0,1.788,0.804,1.788,1.789V19.499z"/>
+			<path fill="none" stroke="#838585" stroke-width="0.75" stroke-miterlimit="10" d="M22.022,19.928
+				c0,1.229-1.005,2.232-2.235,2.232h-4.291c-1.229,0-2.235-1.003-2.235-2.232v-4.29c0-1.229,1.006-2.236,2.235-2.236h4.291
+				c1.23,0,2.235,1.007,2.235,2.236V19.928z"/>
+		</g>
+		
+			<line fill="none" stroke="#838585" stroke-width="0.75" stroke-linecap="round" stroke-miterlimit="10" x1="15.622" y1="16.765" x2="15.622" y2="18.569"/>
+		
+			<line fill="none" stroke="#838585" stroke-width="0.75" stroke-linecap="round" stroke-miterlimit="10" x1="16.969" y1="17.452" x2="16.969" y2="18.569"/>
+		
+			<line fill="none" stroke="#838585" stroke-width="0.75" stroke-linecap="round" stroke-miterlimit="10" x1="18.314" y1="16.765" x2="18.314" y2="18.569"/>
+		
+			<line fill="none" stroke="#838585" stroke-width="0.75" stroke-linecap="round" stroke-miterlimit="10" x1="19.661" y1="17.452" x2="19.661" y2="18.569"/>
+		
+			<rect x="16.071" y="4.19" fill="#CFCECE" stroke="#848484" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="3.216" height="3.888"/>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/toolPalette/protractorTool.png b/Sankore-3.1/resources/images/toolPalette/aristoTool.png
similarity index 100%
copy from Sankore-3.1/resources/images/toolPalette/protractorTool.png
copy to Sankore-3.1/resources/images/toolPalette/aristoTool.png
diff --git a/Sankore-3.1/resources/images/toolbar/group.png b/Sankore-3.1/resources/images/toolbar/group.png
new file mode 100644
index 0000000..bccfa0b
Binary files /dev/null and b/Sankore-3.1/resources/images/toolbar/group.png differ
diff --git a/Sankore-3.1/resources/images/toolbar/ungroup.png b/Sankore-3.1/resources/images/toolbar/ungroup.png
new file mode 100644
index 0000000..2a7b64b
Binary files /dev/null and b/Sankore-3.1/resources/images/toolbar/ungroup.png differ
diff --git a/Sankore-3.1/resources/images/toque.svg b/Sankore-3.1/resources/images/toque.svg
new file mode 100644
index 0000000..146cddc
--- /dev/null
+++ b/Sankore-3.1/resources/images/toque.svg
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="-17.174 -24.39 107 107"
+	 overflow="visible" enable-background="new -17.174 -24.39 107 107" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="12.2129" y1="39.3477" x2="59.75" y2="39.3477">
+		<stop  offset="0" style="stop-color:#898989"/>
+		<stop  offset="0.0798" style="stop-color:#58585A"/>
+		<stop  offset="0.4447" style="stop-color:#474749"/>
+		<stop  offset="0.7853" style="stop-color:#3D3D3F"/>
+		<stop  offset="0.8232" style="stop-color:#464648"/>
+		<stop  offset="0.8857" style="stop-color:#5F5F61"/>
+		<stop  offset="0.9646" style="stop-color:#87888A"/>
+		<stop  offset="1" style="stop-color:#9B9C9E"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M59.45,37.001l-1.48-9.818l-44.251,1.82l-1.206,7.998c-0.195,0.645-0.3,1.307-0.3,1.981
+		c0,6.921,10.642,12.53,23.769,12.53s23.769-5.609,23.769-12.53C59.75,38.308,59.646,37.646,59.45,37.001z"/>
+	<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="13.1631" y1="38.3486" x2="58.7988" y2="38.3486">
+		<stop  offset="0" style="stop-color:#898989"/>
+		<stop  offset="0.0859" style="stop-color:#676769"/>
+		<stop  offset="0.268" style="stop-color:#616163"/>
+		<stop  offset="0.4049" style="stop-color:#58585A"/>
+		<stop  offset="0.908" style="stop-color:#676769"/>
+		<stop  offset="0.9389" style="stop-color:#6D6D6F"/>
+		<stop  offset="0.9815" style="stop-color:#7F7F80"/>
+		<stop  offset="1" style="stop-color:#898989"/>
+	</linearGradient>
+	<path fill="url(#SVGID_2_)" d="M58.512,36.071l-1.422-9.523l-42.48,1.766l-1.158,7.758c-0.188,0.625-0.288,1.268-0.288,1.922
+		c0,6.713,10.217,12.155,22.818,12.155s22.817-5.442,22.817-12.155C58.799,37.339,58.699,36.696,58.512,36.071z"/>
+</g>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="13.3369" y1="31.8486" x2="58.6104" y2="31.8486">
+	<stop  offset="0" style="stop-color:#898989"/>
+	<stop  offset="0.0859" style="stop-color:#3D3D3F"/>
+	<stop  offset="0.39" style="stop-color:#434345"/>
+	<stop  offset="0.8089" style="stop-color:#555557"/>
+	<stop  offset="0.865" style="stop-color:#58585A"/>
+	<stop  offset="1" style="stop-color:#58585A"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M13.337,31.536c2,0.104,6.124,4.434,12.807,6.387c6.149,1.796,12.109,2.05,17.251,0
+	c8.431-3.361,13.344-8.442,15.216-6.49l-1-7.102H14.455L13.337,31.536z"/>
+<polygon fill="#4C4C4C" points="36.026,31.402 35.981,31.382 35.981,36.613 36.034,36.638 72.053,19.763 72.053,17.504 
+	67.232,17.504 "/>
+<polygon fill="#58585A" points="35.981,31.382 4.822,17.504 0,17.504 0,19.763 35.981,36.613 "/>
+<g>
+	<polygon fill="#B0B2B3" points="36.034,0.628 0,17.504 36.034,34.38 72.053,17.504 	"/>
+	<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="0" y1="17.5039" x2="72.0527" y2="17.5039">
+		<stop  offset="0" style="stop-color:#676769"/>
+		<stop  offset="0.3361" style="stop-color:#6D6D6F"/>
+		<stop  offset="0.799" style="stop-color:#7F7F80"/>
+		<stop  offset="1" style="stop-color:#898989"/>
+	</linearGradient>
+	<polygon fill="url(#SVGID_4_)" points="36.034,0.628 0,17.504 36.034,34.38 72.053,17.504 	"/>
+</g>
+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="0" y1="25.5254" x2="72.0527" y2="25.5254">
+	<stop  offset="0" style="stop-color:#58585A"/>
+	<stop  offset="0.2484" style="stop-color:#5B5B5D"/>
+	<stop  offset="0.4496" style="stop-color:#656567"/>
+	<stop  offset="0.6342" style="stop-color:#767678"/>
+	<stop  offset="0.8089" style="stop-color:#8D8E90"/>
+	<stop  offset="0.9752" style="stop-color:#ABADAE"/>
+	<stop  offset="1" style="stop-color:#B0B2B3"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="71.615,16.671 72.053,17.504 36.034,34.38 0,17.504 0.438,16.671 "/>
+<g>
+	<polygon fill="#B0B2B3" points="36.034,0 0.438,16.671 36.034,33.341 71.615,16.671 	"/>
+	<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="0.4375" y1="16.6704" x2="71.6152" y2="16.6704">
+		<stop  offset="0" style="stop-color:#3D3D3F"/>
+		<stop  offset="0.1996" style="stop-color:#434345"/>
+		<stop  offset="0.4751" style="stop-color:#555556"/>
+		<stop  offset="0.7934" style="stop-color:#727273"/>
+		<stop  offset="1" style="stop-color:#898989"/>
+	</linearGradient>
+	<polygon fill="url(#SVGID_6_)" points="36.034,0 0.438,16.671 36.034,33.341 71.615,16.671 	"/>
+</g>
+<polyline fill="none" stroke="#F4CC4D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="
+	37.981,15.245 17.606,24.812 17.606,40.544 "/>
+<g>
+	<path fill="#C2981E" d="M20.072,38.685H15.14l-2.854,15.502c0,0.743,2.381,2.803,5.32,2.803c2.938,0,5.32-2.06,5.32-2.803
+		L20.072,38.685z"/>
+	<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="16.2759" y1="47.8516" x2="20.8228" y2="47.5343">
+		<stop  offset="0.5031" style="stop-color:#F4CC4D"/>
+		<stop  offset="0.6585" style="stop-color:#EEC649"/>
+		<stop  offset="0.8725" style="stop-color:#DCB43E"/>
+		<stop  offset="1" style="stop-color:#CEA636"/>
+	</linearGradient>
+	<path fill="url(#SVGID_7_)" d="M20.072,38.685H15.14l-2.854,15.502c0,0.743,2.381,2.803,5.32,2.803c2.938,0,5.32-2.06,5.32-2.803
+		L20.072,38.685z"/>
+</g>
+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="18.2104" y1="44.4365" x2="20.937" y2="51.7485">
+	<stop  offset="0" style="stop-color:#EAC049"/>
+	<stop  offset="0.3765" style="stop-color:#E4BA45"/>
+	<stop  offset="0.8952" style="stop-color:#D2AA39"/>
+	<stop  offset="0.9877" style="stop-color:#CEA636"/>
+</linearGradient>
+<polygon fill="url(#SVGID_8_)" points="20.535,56.606 18.673,41.413 19.269,41.341 21.131,56.533 "/>
+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="19.7891" y1="45.0312" x2="22.4774" y2="51.315">
+	<stop  offset="0" style="stop-color:#CEA636"/>
+	<stop  offset="0.416" style="stop-color:#CBA230"/>
+	<stop  offset="0.9877" style="stop-color:#C2981E"/>
+</linearGradient>
+<polygon fill="url(#SVGID_9_)" points="22.019,55.55 19.634,40.843 20.226,40.747 22.61,55.454 "/>
+<path fill="#B79537" d="M20.384,40.379c-0.584,0.987-1.588,1.745-2.814,1.745c-1.229,0-2.188-0.593-2.771-1.58l0.172-1.494
+	l5.169-0.275L20.384,40.379z"/>
+<radialGradient id="SVGID_10_" cx="16.71" cy="36.7051" r="5.0908" gradientUnits="userSpaceOnUse">
+	<stop  offset="0.5031" style="stop-color:#F4CC4D"/>
+	<stop  offset="0.6585" style="stop-color:#EEC649"/>
+	<stop  offset="0.8725" style="stop-color:#DCB43E"/>
+	<stop  offset="1" style="stop-color:#CEA636"/>
+</radialGradient>
+<circle fill="url(#SVGID_10_)" cx="17.606" cy="38.685" r="2.923"/>
+<g>
+	<path fill="#B79537" d="M17.606,56.989c-2.939,0-5.32-2.06-5.32-2.803v0.799c0,0.742,2.381,2.803,5.32,2.803
+		c2.938,0,5.32-2.061,5.32-2.803v-0.799C22.927,54.93,20.545,56.989,17.606,56.989z"/>
+	<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="13.0371" y1="56.083" x2="22.2794" y2="55.6343">
+		<stop  offset="0" style="stop-color:#F4CC4D"/>
+		<stop  offset="0.2114" style="stop-color:#EEC647"/>
+		<stop  offset="0.5031" style="stop-color:#DDB437"/>
+		<stop  offset="0.8282" style="stop-color:#C2981E"/>
+		<stop  offset="0.9877" style="stop-color:#D3A522"/>
+	</linearGradient>
+	<path fill="url(#SVGID_11_)" d="M17.606,56.989c-2.939,0-5.32-2.06-5.32-2.803v0.799c0,0.742,2.381,2.803,5.32,2.803
+		c2.938,0,5.32-2.061,5.32-2.803v-0.799C22.927,54.93,20.545,56.989,17.606,56.989z"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/images/virtual.keyboard/29/capslock.png b/Sankore-3.1/resources/images/virtual.keyboard/29/capslock.png
index 8390e56..61c1a4b 100644
Binary files a/Sankore-3.1/resources/images/virtual.keyboard/29/capslock.png and b/Sankore-3.1/resources/images/virtual.keyboard/29/capslock.png differ
diff --git a/Sankore-3.1/resources/images/virtual.keyboard/29/capslock.png b/Sankore-3.1/resources/images/virtual.keyboard/29/shift.png
similarity index 100%
copy from Sankore-3.1/resources/images/virtual.keyboard/29/capslock.png
copy to Sankore-3.1/resources/images/virtual.keyboard/29/shift.png
diff --git a/Sankore-3.1/resources/images/virtual.keyboard/41/capslock.png b/Sankore-3.1/resources/images/virtual.keyboard/41/capslock.png
index 10b279d..4e1fd58 100644
Binary files a/Sankore-3.1/resources/images/virtual.keyboard/41/capslock.png and b/Sankore-3.1/resources/images/virtual.keyboard/41/capslock.png differ
diff --git a/Sankore-3.1/resources/images/virtual.keyboard/41/capslock.png b/Sankore-3.1/resources/images/virtual.keyboard/41/shift.png
similarity index 100%
copy from Sankore-3.1/resources/images/virtual.keyboard/41/capslock.png
copy to Sankore-3.1/resources/images/virtual.keyboard/41/shift.png
diff --git a/Sankore-3.1/resources/images/z_layer_down.svg b/Sankore-3.1/resources/images/z_layer_down.svg
new file mode 100644
index 0000000..0290843
--- /dev/null
+++ b/Sankore-3.1/resources/images/z_layer_down.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="27px" height="27px" viewBox="0 0 27 27" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<circle fill="#939393" stroke="#CECCCC" stroke-width="2" stroke-miterlimit="10" cx="13.5" cy="13.5" r="12.5"/>
+<rect x="6" y="8" fill="#FFFFFF" width="11" height="2"/>
+<rect x="6" y="12" fill="#FFFFFF" width="11" height="2"/>
+<rect x="6" y="16" fill="#FFFFFF" width="11" height="2"/>
+<rect x="13" y="6" fill="#EFA725" width="6" height="8"/>
+<polygon fill="#EFA725" points="16,21 16,21 22,14 10,14 "/>
+</svg>
diff --git a/Sankore-3.1/resources/images/z_layer_up.svg b/Sankore-3.1/resources/images/z_layer_up.svg
new file mode 100644
index 0000000..746b6c9
--- /dev/null
+++ b/Sankore-3.1/resources/images/z_layer_up.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="27px" height="27px" viewBox="0 0 27 27" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<circle fill="#939393" stroke="#CECCCC" stroke-width="2" stroke-miterlimit="10" cx="13.5" cy="13.5" r="12.5"/>
+<rect x="6" y="8" fill="#FFFFFF" width="11" height="2"/>
+<rect x="6" y="12" fill="#FFFFFF" width="11" height="2"/>
+<rect x="6" y="16" fill="#FFFFFF" width="11" height="2"/>
+<rect x="14" y="13" fill="#EFA725" width="6" height="8"/>
+<polygon fill="#EFA725" points="17,6 17,6 11,13 23,13 "/>
+</svg>
diff --git a/Sankore-3.1/resources/library/animations/Biologie/coeur.swf b/Sankore-3.1/resources/library/animations/Biologie/coeur.swf
new file mode 100644
index 0000000..bd81cae
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Biologie/coeur.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Biologie/os et muscles.swf b/Sankore-3.1/resources/library/animations/Biologie/os et muscles.swf
new file mode 100644
index 0000000..0f48493
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Biologie/os et muscles.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Biologie/systeme circulatoire.swf b/Sankore-3.1/resources/library/animations/Biologie/systeme circulatoire.swf
new file mode 100644
index 0000000..39fd98d
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Biologie/systeme circulatoire.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Biologie/systeme nerveux.swf b/Sankore-3.1/resources/library/animations/Biologie/systeme nerveux.swf
new file mode 100644
index 0000000..bc4fcd3
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Biologie/systeme nerveux.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Biologie/systeme sanguin.swf b/Sankore-3.1/resources/library/animations/Biologie/systeme sanguin.swf
new file mode 100644
index 0000000..4d6db18
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Biologie/systeme sanguin.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Biologie/systemes.swf b/Sankore-3.1/resources/library/animations/Biologie/systemes.swf
new file mode 100644
index 0000000..f602a1f
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Biologie/systemes.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Jeux/chat-noir.swf b/Sankore-3.1/resources/library/animations/Jeux/chat-noir.swf
new file mode 100644
index 0000000..2626ea9
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Jeux/chat-noir.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Jeux/echec IA.swf b/Sankore-3.1/resources/library/animations/Jeux/echec IA.swf
new file mode 100644
index 0000000..05db0d7
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Jeux/echec IA.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Jeux/echec simple.swf b/Sankore-3.1/resources/library/animations/Jeux/echec simple.swf
new file mode 100644
index 0000000..b7bf827
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Jeux/echec simple.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Jeux/line-rider.swf b/Sankore-3.1/resources/library/animations/Jeux/line-rider.swf
new file mode 100644
index 0000000..f86368d
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Jeux/line-rider.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Jeux/reversi.swf b/Sankore-3.1/resources/library/animations/Jeux/reversi.swf
new file mode 100644
index 0000000..0f063d3
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Jeux/reversi.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Maths/boulier_sesamath.swf b/Sankore-3.1/resources/library/animations/Maths/boulier_sesamath.swf
new file mode 100644
index 0000000..5530a11
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Maths/boulier_sesamath.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Maths/rapporteur-interactif.swf b/Sankore-3.1/resources/library/animations/Maths/rapporteur-interactif.swf
new file mode 100644
index 0000000..8d43b76
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Maths/rapporteur-interactif.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Sciences/horloge-interactive.swf b/Sankore-3.1/resources/library/animations/Sciences/horloge-interactive.swf
new file mode 100644
index 0000000..8a82734
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Sciences/horloge-interactive.swf differ
diff --git a/Sankore-3.1/resources/library/animations/Sciences/thermometre-interactif.swf b/Sankore-3.1/resources/library/animations/Sciences/thermometre-interactif.swf
new file mode 100644
index 0000000..0023fb4
Binary files /dev/null and b/Sankore-3.1/resources/library/animations/Sciences/thermometre-interactif.swf differ
diff --git a/Sankore-3.1/resources/library/applications/Calculatrice.wgt/config.xml b/Sankore-3.1/resources/library/applications/Calculatrice.wgt/config.xml
index 089be98..c186e7e 100644
--- a/Sankore-3.1/resources/library/applications/Calculatrice.wgt/config.xml
+++ b/Sankore-3.1/resources/library/applications/Calculatrice.wgt/config.xml
@@ -4,7 +4,7 @@
         id="http://uniboard.mnemis.com/widgets/calculator" 
         version="1.1"
         width="200"
-        height="295" 
+        height="300" 
 		ub:resizable="false">
   <name>Calculator</name>
   <content src="index.html"/>
diff --git a/Sankore-3.1/resources/library/applications/Calculatrice.wgt/js/ubw-main.js b/Sankore-3.1/resources/library/applications/Calculatrice.wgt/js/ubw-main.js
index 7bc4598..7075529 100644
--- a/Sankore-3.1/resources/library/applications/Calculatrice.wgt/js/ubw-main.js
+++ b/Sankore-3.1/resources/library/applications/Calculatrice.wgt/js/ubw-main.js
@@ -349,7 +349,20 @@ function init(){
     }
 
     function compute(){
-        var result = eval(calc)	
+        var result;
+        if(calc.length <= 1)
+            result = eval(calc);
+        else{
+            var fNumber, lNumber, operation = "", fMinus = "";
+            if(calc.charAt(0) == '-'){
+                fMinus = "-";
+                calc = calc.substr(1, calc.length);
+            }
+            operation = (calc.indexOf("+", 0) != -1)?calc.charAt(calc.indexOf("+", 0)):((calc.indexOf("*", 0) != -1)?calc.charAt(calc.indexOf("*", 0)):((calc.indexOf("/", 0) != -1)?calc.charAt(calc.indexOf("/", 0)):((calc.indexOf("-", 0) != -1)?calc.charAt(calc.indexOf("-", 0)):"")));
+            fNumber = fMinus + calc.substring(0, calc.indexOf(operation, 0));
+            lNumber = calc.substring(calc.indexOf(operation, 0)+1, calc.length);
+            result = calcIt(fNumber, operation, lNumber);
+        }
 
         $("#display").text(updateDisplay(result));
         lastResult = result;
@@ -365,14 +378,40 @@ function init(){
 	
         if(window.sankore){
             window.sankore.setPreference('historyTxt', $("#historyBox").val());
-        };
+        }
 	
         lastHistory = $("#historyBox").val();
     }
 
+    function calcIt(fNumber, operation, lNumber){
+        var result, fCount = "", lCount = "", length = 0;
+        fCount = (fNumber.indexOf(".", 0) != -1)?fNumber.substring(fNumber.indexOf(".", 0)+1, fNumber.length):"";
+        lCount = (lNumber.indexOf(".", 0) != -1)?lNumber.substring(lNumber.indexOf(".", 0)+1, lNumber.length):"";
+        length = (fCount.length >= lCount.length)?fCount.length:lCount.length;
+        length = Math.pow(10, length);
+        fNumber = Math.round(fNumber * length);
+        lNumber = Math.round(lNumber * length);
+        switch(operation){
+            case "+":
+                result = (fNumber + lNumber)/length;
+                break;
+            case "-":
+                result = (fNumber - lNumber)/length;
+                break;
+            case "*":
+                result = (fNumber * lNumber)/Math.pow(length, 2);
+                break;
+            case "/":
+                result = fNumber/lNumber;
+                break;
+        }
+        return result;
+    }
+
     function reset(){
         $("#display").text("0");
         calc="";
+        lastchar.type = "NaN";
         displayTrunk="";
         historyTrunk="";
         $("#historyBox").val(lastHistory);
@@ -475,10 +514,27 @@ function init(){
                 displayTrunk = displayTrunk.substr(0, displayTrunk.length-1);
             };
 
-            calc += String(char);
-            displayTrunk += String(char);
-            historyTrunk += String(char);
-            lastchar.type = "Number";
+            if(calc == "0"){
+                if(char != "0"){
+                    if(char != "."){
+                        calc = String(char);
+                        displayTrunk = String(char);
+                        historyTrunk = String(char);
+                        lastchar.type = "Number";
+                    } else{
+                        calc += String(char);
+                        displayTrunk += String(char);
+                        historyTrunk += String(char);
+                        lastchar.type = "Number";
+                    }
+                }
+            } else {
+                char = (char == ".")?((displayTrunk.indexOf(".", 0) != -1)?"":"."):char;
+                calc += String(char);
+                displayTrunk += String(char);
+                historyTrunk += String(char);
+                lastchar.type = "Number";
+            }
         }
         // char is an operator
         else {
diff --git a/Sankore-3.1/resources/library/applications/Cellule.wgt/js/textes_descriptifs.js b/Sankore-3.1/resources/library/applications/Cellule.wgt/js/textes_descriptifs.js
index 0533292..49a603b 100644
--- a/Sankore-3.1/resources/library/applications/Cellule.wgt/js/textes_descriptifs.js
+++ b/Sankore-3.1/resources/library/applications/Cellule.wgt/js/textes_descriptifs.js
@@ -146,65 +146,65 @@ switch(lang){
         "<h4>Процесс работы:</h4><span><p>Создание рибосомы: Транскрипция РНК и белков, необходимых (этот шаг выполняется в цитоплазму других рибосомы), которые входят в ядро, ассоциация молекул, образующихся в откровенной новые рибосомы, которая находится вне ядра, чтобы играть свою роль.</p></span>"
         break;
     case "fr":
-        txt_vesicule = 	"<h2>Vesicule<br/>Transporteurs</h2>"+
-        "<h4>Structure : </h4><span><p>Bicouche phospholipidique</p></span>"+
-        "<h4>Rôle : </h4><span><p>Transport de protéines ou d'autres éléments à l'intérieur de la cellule, vers l'extérieur (exocytose) ou vers l'intérieur (endocytose).</p></span>"+
-        '<h4>Fonctionnement : </h4><span><p>Transporteur "remorque" par des protéines prenant appui sur le cytosquelette.</p></span>'
+        txt_vesicule = 	"<h2>Vésicule<br/>Transporteurs</h2>"+
+        "<h4>Structure :</h4><span><p>Bicouche phospholipidique.</p></span>"+
+        "<h4>Role :</h4><span><p>Transport de protéines ou d'autres éléments à l'intérieur de la cellule, vers l'extérieur (exocytose) ou vers l'intérieur (endocytose).</p></span>"+
+        '<h4>Fonctionnement :</h4><span><p>Transporteur "remorqué" par des protéines prenant appui sur le cytosquelette.</p></span>'
 						
         txt_lysosome = "<h2>Lysosome<br/>Estomacs cellulaires</h2>"+
-        "<h4>Structure : </h4><span><p>Bicouche phospholipidique</p></span>"+
-        "<h4>Role : </h4><span><p>Digestion intracellulaire à l'aide d'enzymes</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Absorption de nutriments par endocytose ou d'éléments cellulaires abimés, digestion de ceux-ci, puis distribution des résultats de la réaction chimique dans la cellule et enfin expulsion des déchets par exocytose.</p></span>"
+        "<h4>Structure :</h4><span><p>Bicouche phospholipidique.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Digestion intra-cellulaire à l'aide d'enzymes.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Absorption de nutriments par endocytose ou d'éléments cellulaires abîmés, digestion de ceux-ci, puis distribution des résultats de la réaction chimique dans la cellule et enfin expulsion des déchets par exocytose.</p></span>"
  
         txt_mitoch = 	"<h2>Mitochondrie<br/>Piles</h2>"+
-        "<h4>Structure : </h4><span><p>Deux bicouches phospholipidiques appelées membranes mitochondriales, une externe et une interne. La mitochondrie contient des ribosomes, de l'ATP de l'ADN et bien d'autres molécules.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Centrale énergétique de la cellule.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>L'énergie - sous forme d'ATP (adénosine triphosphate) - est issue de différentes étapes de réactions chimiques partant d'une molécule de glucose.</p></span>"
+        "<h4>Structure :</h4><span><p>Deux bichouches phospholipidiques appelées membranes mitochondriales, une externe et une interne. La mitochondrie contient des ribosomes, de l'ATP de l'ADN et bien d'autres molécules.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Centrale énergétique de la cellule.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>L'énergie - sous forme d'ATP (adénosine triphosphate) - est issue de différentes étapes de réactions chimiques partant d'une molécule de glucose.</p></span>"
  
         txt_golgi =	"<h2>Appareil de Golgi<br/>Usines miniatures</h2>"+
-        "<h4>Structure : </h4><span><p>Forme d'un empilement de saccules membranaires aplatis.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Modification de certaines protéines au cours d'un cheminement au travers de ses saccules.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Suite de réactions chimiques, notamment par glycosilation.</p></span>"
+        "<h4>Structure :</h4><span><p>Formé d'un empilement de saccules membranaires applatis.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Modification de certaines protéines au cours d'un cheminement au travers de ses saccules.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Suite de réactions chimiques, notamment par glycosylation.</p></span>"
  
         txt_rer =	"<h2>Reticulum endoplasmique rugueux - Tunnel</h2>"+
-        "<h4>Structure : </h4><span><p>Composé d'une bicouche phospholipidique piquetée de ribosomes (d'un aspect <i>rugueux</i>) délimitant la lumière, un espace interne pouvant être comparé à un tunnel.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Plus spécialisé que le REL, il participe au transport et à la finalisation des protéines, qui sont synthétisées par les ribosomes.</p></span>"+
-        '<h4>Fonctionnement : </h4><span><p>Les protéines "tombent" dans la lumière du RER où elles sont modifiées et déplacées. Elles quittent le RER dans une vésicule issue de la membrane de ce dernier.</p></span>'
+        "<h4>Structure :</h4><span><p>Composé d'une bicouche phospholipidique piquetée de ribosomes (d'un aspect <i>rugueux</i>) délimitant la lumière, un espace interne pouvant être comparé à un tunnel.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Plus spécialisé que le REL, il participe au transport et à la finalisation des protéines, qui sont synthétisées par les ribosomes.</p></span>"+
+        '<h4>Fonctionnement :</h4><span><p>Les protéines "tombent" dans la lumière du RER où elles sont modifiées et déplacées. Elles quittent le RER dans une vésicule issue de la membrane de ce dernier.</p></span>'
  
         txt_noy = 	"<h2>Noyau - Le coffre-fort</h2>"+
-        "<h4>Structure : </h4><span><p>Entouré par une double membrane appelée enveloppe nucléaire en lien par endroits avec le RER. Ces deux membranes fusionnent à intervalles réguliers pour former les pores nucléaires. À l'intérieur se trouve le nucléole et l'ADN, sous forme de chromatine ou de chromosomes.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Stockage de la totalité des informations génétiques nécessaires à la vie de la cellule.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Site de la transcription (copie de l'information génétique sur des ARNm).</p></span>"
+        "<h4>Structure :</h4><span><p>Entouré par une double membrane appelée enveloppe nucléaire en lien par endroits avec le RER. Ces deux membranes fusionnent à intervalles réguliers pour former les pores nucléaires. À l'intérieur se trouvent le nucléole et l'ADN, sous forme de chromatine ou de chomosomes.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Stockage de la totalité des informations génétiques nécessaires à la vie de la cellule.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Site de la transcription (copie de l'information génétique sur des ARNm).</p></span>"
  
         txt_rel = 	"<h2>Reticulum endoplasmique lisse - REL</h2>"+
-        "<h4>Structure : </h4><span><p>Similaire à celle du RER, à la différence que sa membrane n'est pas parsemée de ribosomes, d'où son aspect <i>lisse</i>.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Synthèse des phospholipides, stockage du calcium, transformation de certaines molécules extérieures (médicament, alcool...). Dans certaines cellules, le REL remplit aussi des fonctions supplémentaires, telles que la production d'hormones, d'acides gastriques, etc.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Il est le siège de beaucoup de réactions chimiques complexes (ex : détoxification, différentes synthèses).</p></span>"
+        "<h4>Structure :</h4><span><p>Similaire à celle du RER, à la différence que sa membrane n'est pas parsemée de ribosomes, d'où son aspect <i>lisse</i>.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Synthèse des phospholipides, stockage du calcium, transformation de certaines molécules extérieures (médicament, alcool, ...). Dans certaines cellules, le REL remplit aussi des fonctions supplémentaires, telles la production d'hormones, d'acide gastrique, etc.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Il est le siège de nombreuses réactions chimiques complexes (ex: détoxification, différentes synthèses).</p></span>"
  
         txt_adn =	"<h2>ADN - Le livre de la vie</h2>"+
-        "<h4>Structure : </h4><span><p>échelle à la célèbre forme de double hélice composée de deux colonnes sucre-phosphate-sucre-phosphate-... et dont les échelons sont appelés bases azotées.</p></span>"+
-        "<h4>Rôle : </h4><span><p>L'ADN contient toutes les informations nécessaires à la vie.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Toutes les informations sont écrites à l'aide des quatre lettres A, T, G, et C. Grâce à ces combinaisons, il est possible d'écrire tout ce qui est utile à la cellule.</p></span>"
+        "<h4>Structure :</h4><span><p>Échelle à la célèbre forme de double hélice composée de deux colonnes sucre-phosphate-sucre-phosphate-... et dont les échelons sont appelés bases azotées.</p></span>"+
+        "<h4>Rôle :</h4><span><p>L'ADN contient toutes les informations nécessaires à la vie.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Toutes les informations sont écrites à l'aide des quatre lettres A, T, G, et C. Grâce à ces combinaisons, il est possible d'écrire tout ce qui est utile à la cellule.</p></span>"
 
         txt_centr=	"<h2>Centrioles - Remorqueurs de chromosomes</h2>"+
-        "<h4>Structure : </h4><span><p>Neuf triplets de microtubules entourent par un certain nombre de protéines.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Séparer les différents chromosomes durant la division cellulaire.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Les centrioles, une fois placés aux deux pôles de la cellule, déploient des microtubules vers les centromères des chromosomes et les tirent vers eux pour les séparer.</p></span>"
+        "<h4>Structure :</h4><span><p>Neuf triplets de microtubules entourés par un certain nombre de protéines.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Séparer les différents chromosomes durant la division cellulaire.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Les centrioles, une fois placés aux deux pôles de la cellule, déploient des microtubules vers les centromères des chromosomes et les tirent vers eux pour les séparer.</p></span>"
 				
         txt_rib =	"<h2>Ribosome - Décodeurs</h2>"+
-        "<h4>Structure : </h4><span><p>Formé par deux sous-unités composées d'ARN ribosomique et de protéines.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Le ribosome synthétise les protéines.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Un brin d'ARNm (messager) passe dans le ribosome et un ARNt (de transfert) entre dans la grande sous-unité si son codon (groupe de trois bases azotées) correspond à celui qui est en face sur l'ARNm. Cet ARNt porte avec lui un acide aminé spécifique qui est ajouté à la chaîne déjà assemblée.</p></span>"
+        "<h4>Structure :</h4><span><p>Formé par deux sous-unités composées d'ARN ribosomique et de protéines.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Le ribosome synthétise les protéines.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Un brin d'ARNm (messager) passe dans le ribosome et un ARNt (de transfert) entre dans la grande sous-unité si son codon (groupe de trois bases azotées) correspond à celui qui est en face sur l'ARNm. Cet ARNt porte avec lui un acide aminé spécifique qui est ajouté à la chaîne déja assemblée.</p></span>"
 
         txt_arn =	"<h2>ARN - Multifonction</h2>"+
-        "<h4>Structure : </h4><span><p>Très similaire à l'ADN à la différence qu'il ne possède qu'un brin et que la thymine (T) de l'ADN est remplacée par l'uracile (U). De plus, il est chimiquement plus instable que l'ADN, c'est pourquoi il n'est pas utilisé pour le stockage d'informations à long terme.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Multiples, il existe des ARN de transport, messagers, régulateurs, guides, satellites... </p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>La copie d'informations génétiques se fait grâce à l'ouverture de la double hélice d'ADN, puis la copie des codons sur l'ARN. Celui-ci peut alors sortir du noyau, ce que l'ADN ne peut pas faire.</p></span>"
+        "<h4>Structure :</h4><span><p>Très similaire à l'ADN à la différence qu'il ne possède qu'un brin et que la thymine (T) de l'ADN est remplacée par l'uracile (U). De plus, il est chimiquement plus instable que l'ADN, c'est pourquoi il n'est pas utilisé pour le stockage d'informations à long terme.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Multiples, il existe des ARN de transport, messagers, régulateurs, guides, satellites, ...</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>La copie d'informations génétiques se fait grâce à l'ouverture de la double-hélice d'ADN, puis la copie des codons sur l'ARN. Celui-ci peut alors sortir du noyau, ce que l'ADN ne peut pas faire.</p></span>"
 
         txt_nucl =	"<h2>Nucléole - Fabrique d'ARN</h2>"+
-        "<h4>Structure : </h4><span><p>Composé d'aucune membrane, c'est un agglomérat de protéines et d'ARN.</p></span>"+
-        "<h4>Rôle : </h4><span><p>Lieu de la transcription d'ARN, notamment d'ARNr (ribosomiques) qui, associés avec des protéines, vont former les deux sous-unités des ribosomes.</p></span>"+
-        "<h4>Fonctionnement : </h4><span><p>Création d'un ribosome: Transcription des ARNr ainsi que des protéines nécessaires (cette étape est effectuée dans le cytoplasme par d'autres ribosomes) qui rentrent dans le noyau, association des molécules franchement formées en un nouveau ribosome, qui sort du noyau pour jouer son rôle.</p></span>"
+        "<h4>Structure :</h4><span><p>Non entouré d'une membrane, c'est un agglomérat de protéines et d'ARN.</p></span>"+
+        "<h4>Rôle :</h4><span><p>Lieu de la transcription d'ARN, notamment d'ARNr (ribosomiques) qui, associés avec des protéines, vont former les deux sous-unités des ribosomes.</p></span>"+
+        "<h4>Fonctionnement :</h4><span><p>Création d'un ribosome : transcription des ARNr ainsi que des protéines nécessaires (cette étape est effectuée dans le cytoplasme par d'autres ribosomes) qui rentrent dans le noyau, association des molécules fraîchement formées en un nouveau ribosome, qui sort du noyau pour jouer son rôle.</p></span>"
         break;
     default:
         txt_vesicule = 	"<h2>Vesicle<br/>Transporter</h2>"+
@@ -269,4 +269,4 @@ switch(lang){
         break;
 }
 
-	
\ No newline at end of file
+	
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/languages.js b/Sankore-3.1/resources/library/applications/Edit Html.wgt/languages.js
deleted file mode 100644
index 4e45f2c..0000000
--- a/Sankore-3.1/resources/library/applications/Edit Html.wgt/languages.js	
+++ /dev/null
@@ -1,29 +0,0 @@
-var sankoreLang = {
-    "en":{
-        "enter_title": "Enter yuor title here...",
-        "welcome":"Welcome to HTML Editor",
-        "source":"Source",
-        "link":"Link",
-        "preview":"Preview",
-        "text_to_link":"Your text to link",
-        "alt_text":"Alternative text"
-    },
-    "ru":{
-        "enter_title": "Введите Ваш заголовок ...",
-        "welcome":"Добро пожаловать в HTML-редактор",
-        "source":"Источник",
-        "link":"Ссылка",
-        "preview":"Предпросмотр",
-        "text_to_link":"Текст ссылки",
-        "alt_text":"Альтернативный текст"
-    },
-    "fr":{
-        "enter_title": "Entrer le titre yuor ici ...",
-        "welcome":"Bienvenue à HTML Editor",
-        "source":"Source",
-        "link":"Link",
-        "preview":"Aperçu",
-        "text_to_link":"Votre texte à lier",
-        "alt_text":"Texte alternatif"
-    }
-};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/config.xml b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/config.xml
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/config.xml
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/config.xml
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/icon.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/icon.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/icon.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/icon.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/images/bts.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/images/bts.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/images/bts.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/images/bts.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/images/style.css b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/images/style.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/images/style.css
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/images/style.css
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/index.html b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/index.html
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/index.html
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/index.html
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/jquery.pack.js b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/jquery.pack.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/jquery.pack.js
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/jquery.pack.js
diff --git a/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/languages.js b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/languages.js
new file mode 100644
index 0000000..6f4000c
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/languages.js	
@@ -0,0 +1,29 @@
+var sankoreLang = {
+    "en":{
+        "enter_title": "Enter yuor title here...",
+        "welcome":"Welcome to HTML Editor",
+        "source":"Source",
+        "link":"Link",
+        "preview":"Preview",
+        "text_to_link":"Your text to link",
+        "alt_text":"Alternative text"
+    },
+    "ru":{
+        "enter_title": "Введите Ваш заголовок ...",
+        "welcome":"Добро пожаловать в HTML-редактор",
+        "source":"Источник",
+        "link":"Ссылка",
+        "preview":"Предпросмотр",
+        "text_to_link":"Текст ссылки",
+        "alt_text":"Альтернативный текст"
+    },
+    "fr":{
+        "enter_title": "Entrer le titre yuor ici ...",
+        "welcome":"Bienvenue sur HTML Editor",
+        "source":"Ajouter un lien vers une image",
+        "link":"Ajouter une URL",
+        "preview":"Aperçu",
+        "text_to_link":"Votre texte à lier",
+        "alt_text":"Texte alternatif"
+    }
+};
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/jquery.markitup.js b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/jquery.markitup.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/jquery.markitup.js
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/jquery.markitup.js
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/jquery.markitup.pack.js b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/jquery.markitup.pack.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/jquery.markitup.pack.js
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/jquery.markitup.pack.js
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/readme.txt b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/readme.txt
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/readme.txt
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/readme.txt
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/bold.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/bold.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/bold.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/bold.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/clean.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/clean.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/clean.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/clean.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/image.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/image.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/image.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/image.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/italic.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/italic.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/italic.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/italic.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/link.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/link.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/link.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/link.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/picture.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/picture.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/picture.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/picture.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/preview.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/preview.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/preview.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/preview.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/stroke.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/stroke.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/images/stroke.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/images/stroke.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/set.js b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/set.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/set.js
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/set.js
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/style.css b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/style.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/default/style.css
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/default/style.css
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/bold.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/bold.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/bold.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/bold.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/clean.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/clean.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/clean.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/clean.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h1.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h1.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h1.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h1.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h2.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h2.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h2.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h2.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h3.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h3.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h3.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h3.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h4.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h4.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h4.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h4.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h5.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h5.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h5.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h5.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h6.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h6.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/h6.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/h6.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/image.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/image.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/image.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/image.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/italic.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/italic.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/italic.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/italic.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/link.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/link.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/link.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/link.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/list-bullet.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/list-bullet.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/list-bullet.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/list-bullet.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/list-item.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/list-item.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/list-item.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/list-item.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/list-numeric.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/list-numeric.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/list-numeric.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/list-numeric.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/paragraph.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/paragraph.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/paragraph.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/paragraph.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/picture.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/picture.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/picture.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/picture.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/preview.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/preview.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/preview.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/preview.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/stroke.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/stroke.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/images/stroke.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/images/stroke.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/readme.txt b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/readme.txt
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/readme.txt
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/readme.txt
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/set.js b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/set.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/set.js
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/set.js
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/style.css b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/style.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/sets/html/style.css
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/sets/html/style.css
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-container-white.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-container-white.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-container-white.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-container-white.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-container.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-container.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-container.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-container.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-footer-white.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-footer-white.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-footer-white.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-footer-white.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-footer.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-footer.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-footer.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-footer.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-header-white.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-header-white.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-header-white.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-header-white.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-header.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-header.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/bg-header.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/bg-header.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/handle.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/handle.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/handle.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/handle.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/menu.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/menu.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/menu.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/menu.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/spacer.gif b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/spacer.gif
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/spacer.gif
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/spacer.gif
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/submenu.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/submenu.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/images/submenu.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/images/submenu.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/readme.txt b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/readme.txt
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/readme.txt
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/readme.txt
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/style.css b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/style.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/macosx/style.css
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/macosx/style.css
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-container.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-container.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-container.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-container.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-bbcode.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-bbcode.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-bbcode.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-bbcode.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-dotclear.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-dotclear.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-dotclear.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-dotclear.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-html.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-html.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-html.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-html.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-json.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-json.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-json.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-json.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-markdown.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-markdown.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-markdown.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-markdown.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-textile.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-textile.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-textile.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-textile.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-wiki.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-wiki.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-wiki.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-wiki.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-xml.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-xml.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor-xml.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor-xml.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/bg-editor.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/bg-editor.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/handle.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/handle.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/handle.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/handle.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/menu.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/menu.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/menu.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/menu.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/submenu.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/submenu.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/images/submenu.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/images/submenu.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/style.css b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/style.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/markitup/style.css
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/markitup/style.css
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/simple/images/handle.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/simple/images/handle.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/simple/images/handle.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/simple/images/handle.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/simple/images/menu.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/simple/images/menu.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/simple/images/menu.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/simple/images/menu.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/simple/images/submenu.png b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/simple/images/submenu.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/skins/simple/images/submenu.png
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/skins/simple/images/submenu.png
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/templates/preview.css b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/templates/preview.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/templates/preview.css
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/templates/preview.css
diff --git a/Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/templates/preview.html b/Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/templates/preview.html
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Edit Html.wgt/markitup/templates/preview.html
rename to Sankore-3.1/resources/library/applications/Editeur HTML.wgt/markitup/templates/preview.html
diff --git a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/GeoInfo.html b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/GeoInfo.html
index 77032cb..b4eeab7 100644
--- a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/GeoInfo.html
+++ b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/GeoInfo.html
@@ -31,7 +31,7 @@
         </script>
     </head>
 
-    <body onLoad="recevoirPays('')" onClick="coords = coords + (event.clientX-13) + ',' + (event.clientY-13) + ','">
+    <body onClick="coords = coords + (event.clientX-13) + ',' + (event.clientY-13) + ','">
 
         <!-- Div contenant le point d'interrogation pour les satistiques-->
         <div class="question">
@@ -2081,4 +2081,4 @@
         </div>
     </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/GeoInfo.js b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/GeoInfo.js
index c1c5c9c..c044b67 100644
--- a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/GeoInfo.js
+++ b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/GeoInfo.js
@@ -106,7 +106,8 @@ function popupInfo(text)
 // affiche le text de l'erreur en cas de problème
 function erreur(texteErreur) 
 {
-    alert(texteErreur);
+    //alert(texteErreur);
+    sankore.showMessage(texteErreur);
 }
 
 // permet d'appeller la fonction pour recevoir les statistiques du serveur	
@@ -136,7 +137,8 @@ function recevoirStatsReponse(resultat, soapResponse)
         + "\n"
         + "Version de l'application: " + objDomTree.getElements("env:Body")[0].getElements("ser:getInfosResponse")[0].getElements("GeoStats")[0].getElements("version")[0].getText());
 
-    alert(stats);
+    //alert(stats);
+    sankore.showMessage(stats);
 }
 
 // permet d'appeller la fonction pour recevoir les informations du pays
diff --git a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/languages.js b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/languages.js
index 04d86da..f0f042c 100644
--- a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/languages.js
+++ b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/languages.js
@@ -45,12 +45,12 @@ var sankoreLang = {
             "country":"Niger"
         },
         "TD":{
-            "city":"Ndjamena",
+            "city":"N'Djamena",
             "country":"Tchad"
         },
         "SD":{
             "city":"Khartoum",
-            "country":"Soudan"
+            "country":"Sudan"
         },
         "ER":{
             "city":"Asmara",
@@ -61,11 +61,11 @@ var sankoreLang = {
             "country":"Djibouti"
         },
         "ET":{
-            "city":"Addis Ababa",
+            "city":"Addis-Ababa",
             "country":"Ethiopia"
         },
         "SO":{
-            "city":"Mogadiscio",
+            "city":"Mogadishu",
             "country":"Somalia"
         },
         "KE":{
@@ -86,14 +86,14 @@ var sankoreLang = {
         },
         "CM":{
             "city":"Yaounde",
-            "country":"Cameroun"
+            "country":"Cameroon"
         },
         "NG":{
             "city":"Abuja",
             "country":"Nigeria"
         },
         "BJ":{
-            "city":"Porto Novo",
+            "city":"Porto-Novo",
             "country":"Benin"
         },
         "TG":{
@@ -106,14 +106,14 @@ var sankoreLang = {
         },
         "CI":{
             "city":"Yamoussoukro",
-            "country":"Cote d'Ivoire"
+            "country":"Côte d'Ivoire"
         },
         "BF":{
             "city":"Ouagadougou",
             "country":"Burkina Faso"
         },
         "LR":{
-            "city":"Monravia",
+            "city":"Monrovia",
             "country":"Liberia"
         },
         "SL":{
@@ -185,7 +185,7 @@ var sankoreLang = {
             "country":"Botswana"
         },
         "NA":{
-            "city":"Windhoec",
+            "city":"Windhoek",
             "country":"Namibia"
         },
         "ZA":{
@@ -206,11 +206,11 @@ var sankoreLang = {
         },
         "AR":{
             "city":"Buenos Aires",
-            "country":"Argentine"
+            "country":"Argentina"
         },
         "CL":{
             "city":"Santiago",
-            "country":"Chili"
+            "country":"Chile"
         },
         "UY":{
             "city":"Montevideo",
@@ -221,7 +221,7 @@ var sankoreLang = {
             "country":"Paraguay"
         },
         "BO":{
-            "city":"La Paz",
+            "city":"Sucre",
             "country":"Bolivia"
         },
         "BR":{
@@ -253,7 +253,7 @@ var sankoreLang = {
             "country":"Suriname"
         },
         "GF":{
-            "city":"Paris",
+            "city":"Cayenne",
             "country":"French Guyana"
         },
         "CA":{
@@ -269,7 +269,7 @@ var sankoreLang = {
             "country":"United States of America"
         },
         "MX":{
-            "city":"Mexico",
+            "city":"Mexico city",
             "country":"Mexico"
         },
         "CU":{
@@ -301,7 +301,7 @@ var sankoreLang = {
             "country":"Belize"
         },
         "SV":{
-            "city":"Salvador",
+            "city":"El Salvador",
             "country":"San Salvador"
         },
         "HN":{
@@ -314,7 +314,7 @@ var sankoreLang = {
         },
         "CR":{
             "city":"San Jose",
-            "country":"Costa-Rica"
+            "country":"Costa Rica"
         },
         "PA":{
             "city":"Panama",
@@ -345,7 +345,7 @@ var sankoreLang = {
             "country":"Vanuatu"
         },
         "NC":{
-            "city":"Paris",
+            "city":"Noumea",
             "country":"New Caledonia"
         },
         "AL":{
@@ -373,7 +373,7 @@ var sankoreLang = {
             "country":"Azerbaijan"
         },
         "BE":{
-            "city":"Bruxelles",
+            "city":"Brussels",
             "country":"Belgium"
         },
         "BY":{
@@ -382,7 +382,7 @@ var sankoreLang = {
         },
         "BA":{
             "city":"Sarajevo",
-            "country":"Bosnia"
+            "country":"Bosnia and Herzegovina"
         },
         "BG":{
             "city":"Sofia",
@@ -421,7 +421,7 @@ var sankoreLang = {
             "country":"Georgia"
         },
         "EL":{
-            "city":"Athenes",
+            "city":"Athens",
             "country":"Greece"
         },
         "HU":{
@@ -434,7 +434,7 @@ var sankoreLang = {
         },
         "IS":{
             "city":"Reykjavik",
-            "country":"Island"
+            "country":"Iceland"
         },
         "IT":{
             "city":"Rome",
@@ -458,15 +458,15 @@ var sankoreLang = {
         },
         "MK":{
             "city":"Skopje",
-            "country":"Macedoine"
+            "country":"Macedonia"
         },
         "MT":{
-            "city":"La Valetta",
+            "city":"Valetta",
             "country":"Malta"
         },
         "MD":{
             "city":"Chisinau",
-            "country":"Moldavia"
+            "country":"Moldova"
         },
         "MC":{
             "city":"Monaco",
@@ -505,8 +505,8 @@ var sankoreLang = {
             "country":"United Kingdom"
         },
         "SM":{
-            "city":"Saint-Marin",
-            "country":"Saint-Marin"
+            "city":"San Marino",
+            "country":"San Marino"
         },
         "RS":{
             "city":"Belgrade",
@@ -525,7 +525,7 @@ var sankoreLang = {
             "country":"Sweden"
         },
         "CH":{
-            "city":"Berne",
+            "city":"Bern",
             "country":"Switzerland"
         },
         "TR":{
@@ -537,7 +537,7 @@ var sankoreLang = {
             "country":"Ukraine"
         },
         "VA":{
-            "city":"Vatican",
+            "city":"Vatican city",
             "country":"Vatican"
         },
         "AF":{
@@ -550,7 +550,7 @@ var sankoreLang = {
         },
         "BH":{
             "city":"Manama",
-            "country":"Bahrein"
+            "country":"Bahrain"
         },
         "BD":{
             "city":"Dhaka",
@@ -561,7 +561,7 @@ var sankoreLang = {
             "country":"Bhutan"
         },
         "BN":{
-            "city":"andar Seri Begawan",
+            "city":"Bandar Seri Begawan",
             "country":"Brunei"
         },
         "KH":{
@@ -569,8 +569,8 @@ var sankoreLang = {
             "country":"Cambodia"
         },
         "CN":{
-            "city":"Pekin",
-            "country":"Chine"
+            "city":"Beijing",
+            "country":"China"
         },
         "KP":{
             "city":"Pyongyang",
@@ -581,19 +581,19 @@ var sankoreLang = {
             "country":"South Korea"
         },
         "AE":{
-            "city":"Abu Dhabi",
+            "city":"Abu Dabi",
             "country":"United Arab Emirates"
         },
         "IN":{
-            "city":"Delhi",
+            "city":"New Delhi",
             "country":"India"
         },
         "IR":{
-            "city":"Teheran",
+            "city":"Tehran",
             "country":"Iran"
         },
         "IQ":{
-            "city":"Bagdad",
+            "city":"Baghdad",
             "country":"Iraq"
         },
         "IL":{
@@ -617,15 +617,15 @@ var sankoreLang = {
             "country":"Kyrgyzstan"
         },
         "KW":{
-            "city":"Koweit",
-            "country":"Koweit"
+            "city":"Kuwait",
+            "country":"Kuwait"
         },
         "LA":{
-            "city":"Laos",
-            "country":"Vientiane"
+            "city":"Vientiane",
+            "country":"Laos"
         },
         "LB":{
-            "city":"Beyrouth",
+            "city":"Beirut",
             "country":"Lebanon"
         },
         "MY":{
@@ -637,15 +637,15 @@ var sankoreLang = {
             "country":"Maldives"
         },
         "MN":{
-            "city":"Ulan-Bator",
+            "city":"Ulaanbaatar",
             "country":"Mongolia"
         },
         "MM":{
-            "city":"Naypyidaw",
-            "country":"Myanmar"
+            "city":"Myanmar",
+            "country":"Burma"
         },
         "NP":{
-            "city":"Katmandu",
+            "city":"Kathmandu",
             "country":"Nepal"
         },
         "OM":{
@@ -661,7 +661,7 @@ var sankoreLang = {
             "country":"Pakistan"
         },
         "PH":{
-            "city":"Manille",
+            "city":"Manila",
             "country":"Philippines"
         },
         "QA":{
@@ -681,7 +681,7 @@ var sankoreLang = {
             "country":"Sri Lanka"
         },
         "SY":{
-            "city":"Damask",
+            "city":"Damascus",
             "country":"Syria"
         },
         "TJ":{
@@ -694,7 +694,7 @@ var sankoreLang = {
         },
         "TL":{
             "city":"Dili",
-            "country":"Timor-oriental"
+            "country":"East Timor"
         },
         "TM":{
             "city":"Ashgabat",
@@ -702,10 +702,10 @@ var sankoreLang = {
         },
         "VN":{
             "city":"Hanoi",
-            "country":"Viet Nam"
+            "country":"Vietnam"
         },
         "YE":{
-            "city":"Sana",
+            "city":"Sana'a",
             "country":"Yemen"
         }
     },
@@ -1510,7 +1510,7 @@ var sankoreLang = {
         },
         "NG":{
             "city":"Abuja",
-            "country":"Nigéria"
+            "country":"Nigeria"
         },
         "BJ":{
             "city":"Porto-Novo",
@@ -1917,7 +1917,7 @@ var sankoreLang = {
             "country":"République tchèque"
         },
         "RO":{
-            "city":"Bucharest",
+            "city":"Bucarest",
             "country":"Roumanie"
         },
         "UK":{
diff --git a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/soapclient.js b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/soapclient.js
index 3155546..66bc3d0 100644
--- a/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/soapclient.js
+++ b/Sankore-3.1/resources/library/applications/GeoInfo.wgt/js/soapclient.js
@@ -143,6 +143,7 @@ SOAPClient._loadWsdl = function(url, method, parameters, async, callback)
 		}
 	}
 	xmlHttp.send(null);
+
 	if (!async)
 		return SOAPClient._onLoadWsdl(url, method, parameters, async, callback, xmlHttp);
 }
@@ -154,6 +155,7 @@ SOAPClient._onLoadWsdl = function(url, method, parameters, async, callback, req)
 }
 SOAPClient._sendSoapRequest = function(url, method, parameters, async, callback, wsdl)
 {
+	//alert();
 	// get namespace
 	var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
 	// build SOAP request
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Grapheur.xhtml b/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Grapheur.xhtml
deleted file mode 100644
index 3a94a9d..0000000
--- a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Grapheur.xhtml	
+++ /dev/null
@@ -1,1590 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!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" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-        <meta name="description" content="Traceur de fonctions mathématiques en JavaScript"/>
-        <meta name="author" content="Yannick Vessaz"/>
-        <meta name="revised" content="2010/09/25"/>
-        <title>Graphics</title>
-        <link rel="stylesheet" type="text/css" href="Style/default.css"/>
-        <script type="text/javascript" src="JavaScript/ColorPicker.js"></script>        
-        <script type="text/javascript" src="JavaScript/Interface.js"></script>
-        <script type="text/javascript" src="JavaScript/Outils.js"></script>
-        <script type="text/javascript" src="JavaScript/AffichageStandard.js"></script>
-        <script type="text/javascript" src="JavaScript/Affichage3D.js"></script>
-        <script type="text/javascript" src="JavaScript/AffichageUniboard.js"></script>
-        <script type="text/javascript" src="JavaScript/AffichageXPM.js"></script>
-        <script type="text/javascript" src="JavaScript/languages.js"></script>
-        <script type="text/javascript" src="JavaScript/Etude.js"></script>
-        <script type="text/javascript" src="JavaScript/Sauvegardes.js"></script>
-        <script src="JavaScript/jquery-1.3.2.min.js" type="text/javascript"></script>
-        <script src="JavaScript/jquery.disable.text.select.js" type="text/javascript"></script>
-        <script type="text/javascript">
-// <![CDATA[
-        // --- Variables nécessaires au fonctionnement du widget ---
-                var lang = ""; //locale language
-                var loadingFlag = false
-                var largeur = 500
-                var hauteur = 400
-                var graphique = ""
-                var image = ""
-                var tableau = new Array()
-                var ligne = new Array()
-                var j = 0
-
-                var interdit = new Array(";", "interdit", "'", '"', "eval", "new", "sankore", "=", "document", "window", "alert")
-
-                var menuActuel = ""
-                var mouseDown = false
-                var outil = "point"
-
-                var pointX = new Array()
-                var pointY = new Array()
-                var pente = new Array()
-                var pente2 = new Array()
-                var precision = 0.02
-
-                var couleurFonction = "rgb(193,255,0)"
-                var r = 255
-                var g = 0
-                var b = 0
-                var couleurEchelle = "rgba(255,255,255,0.8)"
-                var couleurGrille = "rgba(255,255,255,0.1)"
-                var couleurAxes = "rgba(0,0,0,0.5)"
-
-                var decalageX = 0
-                var decalageY = 0
-
-                var lineWidth = 3
-                
-                if(window.sankore){
-                    try{
-                        lang = sankore.locale().substr(0,2);
-                        sankoreLang[lang].display;
-                    } catch(e){
-                        lang = "en";
-                    }
-                } else 
-                    lang = "en";
-                
-                $(document).ready(function(){
-                    
-                    if(window.sankore){
-                        
-                        $("#inputEq").val(sankore.preference("functionData", ""));
-                                                
-                        $("#inputTeinte").val(sankore.preference("functionColor",""));
-                        $("#inputValeur").val(sankore.preference("functionValue","0"));                        
-                        $("#inputSaturation").val(sankore.preference("functionSaturation","0"));
-                        $("#inputRouge").val(sankore.preference("functionRed","255"));
-                        $("#inputVert").val(sankore.preference("functionGreen","0"));
-                        $("#inputBleu").val(sankore.preference("functionBlue","0"));
-                        $("#inputOpacity").val(sankore.preference("functionOpacity","1"));
-                        idColor = sankore.preference("functionColorId","");                        
-                        actualiserGraph();
-                        
-                        if(sankore.preference("simplefx","0") == 1)
-                            $("#checkDerivee").attr("checked", "checked");
-                        else
-                            $("#checkDerivee").removeAttr('checked');
-                        if(sankore.preference("hardfx","0") == 1)
-                            $("#checkDerivee2").attr("checked", "checked");
-                        else
-                            $("#checkDerivee2").removeAttr('checked');
-                        actualiserGraph();
-                        
-                        $("#aireG").val(sankore.preference("squareUnderFrom","-5"));
-                        $("#aireD").val(sankore.preference("squareUnderTo","5"));
-                        calculerAire();
-                        
-                        $("#inputX").val(sankore.preference("calculateThePoint","0"));
-                        execute($("#inputEq").val());
-                        
-                        if(sankore.preference("checkboxDraw","0") == 1)
-                            $("#checkAire").attr("checked", "checked");
-                        else
-                            $("#checkAire").removeAttr('checked');
-                        actualiserGraph();
-                        
-                        $("#selectTheme").val(sankore.preference("selectedTheme","noir"));
-                        changerTheme($("#selectTheme").val());
-                        
-                        $("#selectMethodeAffichage").val(sankore.preference("graphicalMethodDisplaying", "canvas"));
-                        $("#zoomDefaut").val(sankore.preference("defaultZoom", "4"));
-                        reinitialiserZoom($("#zoomDefaut").val());
-                        
-                        if(sankore.preference("showGrid","1") == 1)
-                            $("#checkGrille").attr("checked", "checked");
-                        else
-                            $("#checkGrille").removeAttr('checked');
-                        if(sankore.preference("showAxis","1") == 1)
-                            $("#checkAxes").attr("checked", "checked");
-                        else
-                            $("#checkAxes").removeAttr('checked');
-                        if(sankore.preference("showScale","1") == 1)
-                            $("#checkEchelle").attr("checked", "checked");
-                        else
-                            $("#checkEchelle").removeAttr('checked');
-                        actualiserGraph();
-                        
-                        $("#inputTaille").val(sankore.preference("thickness", "3"));
-                        actualiserGraph();
-                        
-                        $("#inputDecalageX").val(sankore.preference("offsetDiagrammX", "0"));
-                        decalageX = parseFloat($("#inputDecalageX").val())
-                        $("#inputDecalageY").val(sankore.preference("offsetDiagrammY", "0"));
-                        decalageY = parseFloat($("#inputDecalageY").val())
-                        
-                        $("#inputPrecision").val(sankore.preference("accuracyGraph", "0.02"));
-                        precision = parseFloat($("#inputPrecision").val());
-                        
-                        $("#selectAffichage3D").val(sankore.preference("styleOf3DShow", "surfaces"));
-                        reinitialiserZoom(5);
-                        
-                        $("#inputPrecision3D").val(sankore.preference("accuracyFunction", "0.2"));
-                        precisionFonction3D = parseFloat($("#inputPrecision3D").val());
-                        
-                        $("#selectRouge3D").val(sankore.preference("redColor", "plus"));
-                        $("#selectVert3D").val(sankore.preference("greenColor", "moins"));
-                        $("#selectBleu3D").val(sankore.preference("blueColor", "tout"));
-                        checkCouleurs3D();
-                        
-                        $("#couleur3Dgenerale").val(sankore.preference("3DGeneralColor", "0"));       
-                        checkCouleurs3D();
-                        
-                        actualiserGraph();
-                        
-                        $("#borneXGauche").val(sankore.preference("xAxisFrom", "-5"));
-                        $("#borneXDroite").val(sankore.preference("xAxisTo", "5"));
-                        $("#borneYGauche").val(sankore.preference("yAxisFrom", "-5"));
-                        $("#borneYDroite").val(sankore.preference("yAxisTo", "5"));
-                        
-                        var tempArray;
-                        if(sankore.preference("graphmeHistory",""))
-                                tempArray = sankore.preference("graphmeHistory","").split(",");
-                        if(sankore.preference("graphmeHistory","")){
-                            for(i in tempArray)
-                                evaluer(tempArray[i]);                            
-                        }
-                        actualiserGraph();
-                        loadingFlag = true;
-                        
-                        ////////////////////////////////////// languages suppot
-                        
-                        document.getElementById("texteFonction").innerHTML = sankoreLang[lang].fnc;
-                        $("#xAxis").html(sankoreLang[lang].x_axis);
-                        $("#yAxis").html(sankoreLang[lang].y_axis);
-                        $("#scaleZoom").html(sankoreLang[lang].zoom);
-                        $("#graphColor").html(sankoreLang[lang].color);
-                        $("#menuCouleur .contenuMenu em").text(sankoreLang[lang].choosing_color);
-                        $("#colorValues tr").eq(0).find("td").eq(0).html(sankoreLang[lang].color + ":");
-                        $("#colorValues tr").eq(1).find("td").eq(0).html(sankoreLang[lang].value);
-                        $("#colorValues tr").eq(2).find("td").eq(0).html(sankoreLang[lang].saturation);
-                        $("#colorValues tr").eq(3).find("td").eq(0).html(sankoreLang[lang].red);
-                        $("#colorValues tr").eq(4).find("td").eq(0).html(sankoreLang[lang].green);
-                        $("#colorValues tr").eq(5).find("td").eq(0).html(sankoreLang[lang].blue);
-                        $("#colorValues tr").eq(6).find("td").eq(0).html(sankoreLang[lang].opacity);
-                        $("#menuOutils .contenuMenu h3").eq(0).text(sankoreLang[lang].tools);
-                        $("#menuOutils .contenuMenu span").each(function(){
-                            switch($(this).html()){
-                                case "Mouse events:":
-                                    $(this).html(sankoreLang[lang].mouse_events);
-                                    break;
-                                case "Derivative:":
-                                    $(this).html(sankoreLang[lang].derivative);
-                                    break;
-                                case "Square under function:":
-                                    $(this).html(sankoreLang[lang].square_under_func);
-                                    break;
-                                case "Calculate the point on the function:":
-                                    $(this).html(sankoreLang[lang].point_calculate);
-                                    break;
-                                case "Analysis of function:":
-                                    $(this).html(sankoreLang[lang].analysis_of_func);
-                                    break;
-                                case "Display test:":
-                                    $(this).html(sankoreLang[lang].display_test);
-                                    break;
-                                case "From":
-                                    $(this).html(sankoreLang[lang].from);
-                                    break;
-                                case "to":
-                                    $(this).html(sankoreLang[lang].to);
-                                    break;
-                                default:
-                                    break;
-                            }
-                            return true;
-                        });
-                        $("label[for*='checkAire']").text(sankoreLang[lang].draw);
-                        $("label[for*='checkMaJ']").text(sankoreLang[lang].auto_update);
-                        $("#menuOptions td").eq(0).html(sankoreLang[lang].widget);
-                        $("#menuOptions h3").eq(0).text(sankoreLang[lang].widget_options);
-                        $("#menuOptions2D h3").eq(0).text(sankoreLang[lang].options + " 2D");
-                        $("#menuOptions2D span").each(function(){
-                            switch($(this).html()){
-                                case "The graphical method displaying:":
-                                    $(this).html(sankoreLang[lang].the_graphical);
-                                    break;
-                                case "Zoom default:":
-                                    $(this).html(sankoreLang[lang].zoom_def);
-                                    break;
-                                case "Thickness:":
-                                    $(this).html(sankoreLang[lang].thickness);
-                                    break;
-                                case "Offset diagram:":
-                                    $(this).html(sankoreLang[lang].offset_diagram);
-                                    break;
-                                case "Accuracy graph:":
-                                    $(this).html(sankoreLang[lang].accuracy_graph);
-                                    break;
-                            }
-                            return true;
-                        });
-                        $("#selectMethodeAffichage option").eq(0).text("canvas (" + sankoreLang[lang].lines + ")")
-                        .next().text("canvas (" + sankoreLang[lang].points + ")")
-                        .next().next().text("svg (1 " + sankoreLang[lang].image + ")");
-                        $("label[for*='checkGrille']").text(sankoreLang[lang].show_grid);
-                        $("label[for*='checkAxes']").text(sankoreLang[lang].show_axis);
-                        $("label[for*='checkEchelle']").text(sankoreLang[lang].scale);
-                        $("#menuOptions3D h3").eq(0).text(sankoreLang[lang].options + " 3D");
-                        $("#menuOptions3D span").each(function(){
-                            switch($(this).html()){
-                                case "Show the style:":
-                                    $(this).html(sankoreLang[lang].show_the_style);
-                                    break;
-                                case "Accuracy function:":
-                                    $(this).html(sankoreLang[lang].accuracy_func);
-                                    break;
-                                case "Use the color":
-                                    $(this).html(sankoreLang[lang].use_the_color);
-                                    break;
-                                case "red:":
-                                    $(this).html(sankoreLang[lang].red);
-                                    break;
-                                case "green:":
-                                    $(this).html(sankoreLang[lang].green);
-                                    break;
-                                case "blue:":
-                                    $(this).html(sankoreLang[lang].blue);
-                                    break;
-                                case "General value:":
-                                    $(this).html(sankoreLang[lang].general_value);
-                                    break;
-                                case "from":
-                                    $(this).html(sankoreLang[lang].from);
-                                    break;
-                                case "to":
-                                    $(this).html(sankoreLang[lang].to);
-                                    break;
-                            }
-                            return true;
-                        });
-                        
-                        $("#selectAffichage3D option").eq(0).text(sankoreLang[lang].surfaces)
-                        .next().text(sankoreLang[lang].points);
-                        
-                        $("#selectRouge3D option").eq(0).text(sankoreLang[lang].positive_value)
-                        .next().text(sankoreLang[lang].negative_value)
-                        .next().text(sankoreLang[lang].general_value);
-                        
-                        $("#selectVert3D option").eq(0).text(sankoreLang[lang].negative_value)
-                        .next().text(sankoreLang[lang].positive_value)
-                        .next().text(sankoreLang[lang].general_value);
-                        
-                        $("#selectBleu3D option").eq(0).text(sankoreLang[lang].general_value)
-                        .next().text(sankoreLang[lang].positive_value)
-                        .next().text(sankoreLang[lang].negative_value);
-                        
-                        $("#menuAide .ongletMenu td, #menuAideExemples .ongletMenu td, #menuAideAutres .ongletMenu td").each(function(){
-                            switch($(this).html()){
-                                case "Using":
-                                    $(this).html(sankoreLang[lang].using);
-                                    break;
-                                case "Examples":
-                                    $(this).html(sankoreLang[lang].examples);
-                                    break;
-                                case "Other":
-                                    $(this).html(sankoreLang[lang].other);
-                                    break;
-                            }
-                        });
-                        
-                        $("#menuAide h1").each(function(){
-                            switch($(this).html()){
-                                case "How it work.":
-                                    $(this).html(sankoreLang[lang].how_it_work);
-                                    break;
-                                case "Constants":
-                                    $(this).html(sankoreLang[lang].consts);
-                                    break;
-                                case "Keyboard keys":
-                                    $(this).html(sankoreLang[lang].keys);
-                                    break;
-                            }
-                            return true;
-                        });
-                        
-                        $("#menuAide h2").each(function(){
-                            switch($(this).html()){
-                                case "Basic operations":
-                                    $(this).html(sankoreLang[lang].basic_operations);
-                                    break;
-                                case "Trigonometric functions":
-                                    $(this).html(sankoreLang[lang].trigonometric);
-                                    break;
-                                case "Hyperbolic functions":
-                                    $(this).html(sankoreLang[lang].hyperbolic_func);
-                                    break;
-                                case "Square roots and degrees":
-                                    $(this).html(sankoreLang[lang].square_roots_and_degrees);
-                                    break;
-                                case "Exponential and logarithm":
-                                    $(this).html(sankoreLang[lang].exponential);
-                                    break;
-                                case "Absolute number value":
-                                    $(this).html(sankoreLang[lang].abs);
-                                    break;
-                                case "Rounding":
-                                    $(this).html(sankoreLang[lang].rounding);
-                                    break;
-                            }
-                            return true;
-                        });
-                        
-                        $("#menuAide span").each(function(){
-                            switch($(this).html()){
-                                case "This widget allow to draw mathematical function. Enter function in the field in the top part of widget and press \"Show\".":
-                                    $(this).html(sankoreLang[lang].this_widget_allow);
-                                    break;
-                                case "You can enter following mathematical function:":
-                                    $(this).html(sankoreLang[lang].you_can_enter);
-                                    break;
-                                case "Plus":
-                                    $(this).html(sankoreLang[lang].plus);
-                                    break;
-                                case "Minus":
-                                    $(this).html(sankoreLang[lang].minus);
-                                    break;
-                                case "Multiplication":
-                                    $(this).html(sankoreLang[lang].multi);
-                                    break;
-                                case "Division":
-                                    $(this).html(sankoreLang[lang].division);
-                                    break;
-                                case "Mod":
-                                    $(this).html(sankoreLang[lang].mod);
-                                    break;
-                                case "Sine":
-                                    $(this).html(sankoreLang[lang].sine);
-                                    break;
-                                case "Cosine":
-                                    $(this).html(sankoreLang[lang].cosine);
-                                    break;
-                                case "Tangent":
-                                    $(this).html(sankoreLang[lang].tangent);
-                                    break;
-                                case "Cotangent":
-                                    $(this).html(sankoreLang[lang].cotangent);
-                                    break;
-                                case "Secant":
-                                    $(this).html(sankoreLang[lang].secant);
-                                    break;
-                                case "Cosecant":
-                                    $(this).html(sankoreLang[lang].cosecant);
-                                    break;
-                                case "Arc sine":
-                                    $(this).html(sankoreLang[lang].arc_sine);
-                                    break;
-                                case "Arc cosine":
-                                    $(this).html(sankoreLang[lang].arc_cosine);
-                                    break;
-                                case "Arc tangent":
-                                    $(this).html(sankoreLang[lang].arc_tangent);
-                                    break;
-                                case "Arc cotangent":
-                                    $(this).html(sankoreLang[lang].arc_cotangent);
-                                    break;
-                                case "Hyperbolic sine":
-                                    $(this).html(sankoreLang[lang].hyp_sine);
-                                    break;
-                                case "Hyperbolic cosine":
-                                    $(this).html(sankoreLang[lang].hyp_cosine);
-                                    break;
-                                case "Hyperbolic tangent":
-                                    $(this).html(sankoreLang[lang].hyp_tangent);
-                                    break;
-                                case "Hyperbolic cotangent":
-                                    $(this).html(sankoreLang[lang].hyp_cotangent);
-                                    break;
-                                case "Hyperbolic secant":
-                                    $(this).html(sankoreLang[lang].hyp_secant);
-                                    break;
-                                case "Hyperbolic cosecant":
-                                    $(this).html(sankoreLang[lang].hyp_cosecant);
-                                    break;
-                                case "Hyperbolic arc sine":
-                                    $(this).html(sankoreLang[lang].hyp_arc_sine);
-                                    break;
-                                case "Hyperbolic arc cosine":
-                                    $(this).html(sankoreLang[lang].hyp_arc_cosine);
-                                    break;
-                                case "Hyperbolic arc tangent":
-                                    $(this).html(sankoreLang[lang].hyp_arc_tangent);
-                                    break;
-                                case "Hyperbolic arc cotangent":
-                                    $(this).html(sankoreLang[lang].hyp_arc_cotangent);
-                                    break;
-                                case "Square root":
-                                    $(this).html(sankoreLang[lang].square_root);
-                                    break;
-                                case "Degree":
-                                    $(this).html(sankoreLang[lang].degree);
-                                    break;
-                                case "Root":
-                                    $(this).html(sankoreLang[lang].root);
-                                    break;
-                                case "Variable x to the power y":
-                                    $(this).html(sankoreLang[lang].variable_x);
-                                    break;
-                                case "Root y of x":
-                                    $(this).html(sankoreLang[lang].root_y);
-                                    break;
-                                case "Natural logarithm":
-                                    $(this).html(sankoreLang[lang].natural_log);
-                                    break;
-                                case "Decimal logarithm":
-                                    $(this).html(sankoreLang[lang].decimal_log);
-                                    break;
-                                case "rounding to the nearest whole number":
-                                    $(this).html(sankoreLang[lang].round_nearest);
-                                    break;
-                                case "rounding to the nearest whole number in a big way":
-                                    $(this).html(sankoreLang[lang].round_nearest_big);
-                                    break;
-                                case "rounding to the nearest whole number the smaller side":
-                                    $(this).html(sankoreLang[lang].round_nearest_small);
-                                    break;
-                                case "Also are available some constants:":
-                                    $(this).html(sankoreLang[lang].available_const);
-                                    break;
-                                case "reset widget":
-                                    $(this).html(sankoreLang[lang].reload_widget);
-                                    break;
-                                case "left arrow":
-                                    $(this).html(sankoreLang[lang].left_arrow);
-                                    break;
-                                case "top arrow":
-                                    $(this).html(sankoreLang[lang].top_arrow);
-                                    break;
-                                case "right arrow":
-                                    $(this).html(sankoreLang[lang].right_arrow);
-                                    break;
-                                case "bottom arrow":
-                                    $(this).html(sankoreLang[lang].bottom_arrow);
-                                    break;
-                                case "graph will be moved left":
-                                    $(this).html(sankoreLang[lang].moved_left);
-                                    break;
-                                case "graph will be moved top":
-                                    $(this).html(sankoreLang[lang].moved_top);
-                                    break;
-                                case "graph will be moved right":
-                                    $(this).html(sankoreLang[lang].moved_right);
-                                    break;
-                                case "graph will be moved bottom":
-                                    $(this).html(sankoreLang[lang].moved_bottom);
-                                    break;
-                                case "or":
-                                    $(this).html(sankoreLang[lang].or);
-                                    break;
-                            }
-                            return true;
-                        });
-                        
-                        $("#menuAideExemples h1").each(function(){
-                            if($(this).text() == "Functions 2D")
-                                $(this).text(sankoreLang[lang].funcs + " 2D");
-                            else
-                                $(this).text(sankoreLang[lang].funcs + " 3D");
-                        });
-                    
-                        $("#menuAideExemples span").eq(0).html("(" + sankoreLang[lang].you_can_view + ")");
-                        
-                        $("#menuAideAutres h4").eq(0).text(sankoreLang[lang].save_graph);
-                        $("#menuAideAutres h4").eq(1).text(sankoreLang[lang].offset);
-                        $("#menuAideAutres span").eq(0).text(sankoreLang[lang].in_some_browsers);
-                        $("#menuAideAutres span").eq(1).text(sankoreLang[lang].if_graph_isnt);
-                        $("#credits h3").eq(0).text(sankoreLang[lang].widget_is_developed);
-                        $("#menuCredits .texteSecondaire span").eq(0).html(sankoreLang[lang].if_you_want_to);
-                        $("#menuCredits .texteSecondaire span").eq(1).html(sankoreLang[lang].if_you_want_to_change);
-                        $("#menuFonctions td").eq(0).text(sankoreLang[lang].funcs);
-                        $("#menuFonctions td").eq(1).text(sankoreLang[lang].history);
-                        $("#menuFonctions em").eq(0).text(sankoreLang[lang].current);
-                        $("#menuFonctions em").eq(1).text(sankoreLang[lang].additional);
-                        $("#menuHistorique td").eq(0).text(sankoreLang[lang].funcs);
-                        $("#menuHistorique td").eq(1).text(sankoreLang[lang].history);
-                        
-                        $("#menuEtude h3").text(sankoreLang[lang].analysis_of_func);
-                        $("#menuEtude span").each(function(){
-                            switch($(this).html()){
-                                case "Set of definitions:":
-                                    $(this).html(sankoreLang[lang].set_of_def);
-                                    break;
-                                case "Parity:":
-                                    $(this).html(sankoreLang[lang].parity);
-                                    break;
-                                case "Zeros of functions:":
-                                    $(this).html(sankoreLang[lang].zeros);
-                                    break;
-                                case "Signe:":
-                                    $(this).html(sankoreLang[lang].signe);
-                                    break;
-                                case "Asymptotes":
-                                    $(this).html(sankoreLang[lang].asympt);
-                                    break;
-                                case "AH left:":
-                                    $(this).html(sankoreLang[lang].ah_left);
-                                    break;
-                                case "AH right:":
-                                    $(this).html(sankoreLang[lang].ah_right);
-                                    break;
-                                case "AV:":
-                                    $(this).html(sankoreLang[lang].av);
-                                    break;
-                                case "Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.":
-                                    $(this).html(sankoreLang[lang].tool_for);
-                                    break;
-                            }
-                            return true;
-                        });
-                        
-                        $("#infoSauvegarde h1").text(sankoreLang[lang].options_saved);
-                        $("#mAj h1").text(sankoreLang[lang].update);
-                        $("#mAj span").each(function(){
-                            switch($(this).html()){
-                                case "Current version:":
-                                    $(this).html(sankoreLang[lang].cur_version);
-                                    break;
-                                case "The last on-line version:":
-                                    $(this).html(sankoreLang[lang].last_version);
-                                    break;
-                                case "This widget is available to using on web-site:":
-                                    $(this).html(sankoreLang[lang].using_web);
-                                    break;
-                            }
-                        });
-                        
-                        $("#menuOptions span").each(function(){
-                            switch($(this).html()){
-                                case "Themes of widget:":
-                                    $(this).html(sankoreLang[lang].themes_of_widget);
-                                    break;
-                                case "Control options:":
-                                    $(this).html(sankoreLang[lang].control_options);
-                                    break;
-                                case "Save a widget options in cookies or load an options from cookies or delete a registered options.":
-                                    $(this).html(sankoreLang[lang].save_a_widget_options);
-                                    break;
-                            }
-                            return true;
-                        });
-                        $("#selectTheme option").eq(0).text(sankoreLang[lang].black).next().text(sankoreLang[lang].blue).next().text(sankoreLang[lang].white);
-                        $("input:button").each(function(){
-                            switch($(this).val()){
-                                case "Check":
-                                    $(this).val(sankoreLang[lang].check);
-                                    break;
-                                case "Cancel":
-                                    $(this).val(sankoreLang[lang].quit);
-                                    break;
-                                case "Tools":
-                                    $(this).val(sankoreLang[lang].tools);
-                                    break;
-                                case "Options":
-                                    $(this).val(sankoreLang[lang].options);
-                                    break;
-                                case "Help":
-                                    $(this).val(sankoreLang[lang].help);
-                                    break;
-                                case "About":
-                                    $(this).val(sankoreLang[lang].about);
-                                    break;
-                                case "Moving":
-                                    $(this).val(sankoreLang[lang].moving);
-                                    break;
-                                case "Tangente":
-                                    $(this).val(sankoreLang[lang].tangente);
-                                    break;
-                                case "Point":
-                                    $(this).val(sankoreLang[lang].point);
-                                    break;
-                                case "Calculate":
-                                    $(this).val(sankoreLang[lang].calculate);
-                                    break;
-                                case "Estimate":
-                                    $(this).val(sankoreLang[lang].estimate);
-                                    break;
-                                case "Start to analysis":
-                                    $(this).val(sankoreLang[lang].start_to_analysis);
-                                    break;
-                                case "Test XPM":
-                                    $(this).val(sankoreLang[lang].test + " XPM");
-                                    break;
-                                case "Test SVG":
-                                    $(this).val(sankoreLang[lang].test + " SVG");
-                                    break;
-                                case "Test Canvas":
-                                    $(this).val(sankoreLang[lang].test + " Canvas");
-                                    break;
-                                case "Save":
-                                    $(this).val(sankoreLang[lang].save);
-                                    break;
-                                case "Load":
-                                    $(this).val(sankoreLang[lang].load);
-                                    break;
-                                case "Delete":
-                                    $(this).val(sankoreLang[lang].del);
-                                    break;
-                                case "Display":
-                                    $(this).val(sankoreLang[lang].display);
-                                    break;
-                                case "Reload widget":
-                                    $(this).val(sankoreLang[lang].reload_widget);
-                                    break;
-                                case "Updated":
-                                    $(this).val(sankoreLang[lang].update);
-                                    break;
-                                case "Update zoom":
-                                    $(this).val(sankoreLang[lang].update_zoom);
-                                    break;
-                                case "Reset display":
-                                    $(this).val(sankoreLang[lang].reset_display);
-                                    break;
-                                case "User's guide":
-                                    $(this).val(sankoreLang[lang].guide);
-                                    break;
-                                default:
-                                    break;                                                                                                                                
-                            }
-                            return true;
-                        });
-                    }
-                    
-                    $(document).disableTextSelect();
-                   
-                    $("input, select").mouseover(function(){
-                        $(document).enableTextSelect(); 
-                    });
-                    
-                    $("input, select").mouseout(function(){
-                        $(document).disableTextSelect(); 
-                    });
-                    
-                    $("body").mouseout(function(){
-                        if(window.sankore && loadingFlag){
-                            sankore.setPreference("functionData",$("#inputEq").val());
-                            sankore.setPreference("xAxisFrom",$("#borneXGauche").val());
-                            sankore.setPreference("xAxisTo",$("#borneXDroite").val());
-                            sankore.setPreference("yAxisFrom",$("#borneYGauche").val());
-                            sankore.setPreference("yAxisTo",$("#borneYDroite").val());
-                            sankore.setPreference("functionColor",$("#inputTeinte").val());
-                            sankore.setPreference("functionValue",$("#inputValeur").val());
-                            sankore.setPreference("functionSaturation",$("#inputSaturation").val());
-                            sankore.setPreference("functionRed",$("#inputRouge").val());
-                            sankore.setPreference("functionGreen",$("#inputVert").val());
-                            sankore.setPreference("functionBlue",$("#inputBleu").val());
-                            sankore.setPreference("functionOpacity",$("#inputOpacity").val());
-                            sankore.setPreference("functionColorId", idColor);
-                            
-                            if ($('#checkDerivee').is(":checked"))
-                                sankore.setPreference("simplefx","1");
-                            else
-                                sankore.setPreference("simplefx","0");
-                            if ($('#checkDerivee2').is(":checked"))
-                                sankore.setPreference("hardfx","1");
-                            else
-                                sankore.setPreference("hardfx","0");
-                            
-                            sankore.setPreference("squareUnderFrom", $("#aireG").val());
-                            sankore.setPreference("squareUnderTo", $("#aireD").val());
-                            sankore.setPreference("calculateThePoint", $("#inputX").val());
-                            
-                            if ($('#checkAire').is(":checked"))
-                                sankore.setPreference("checkboxDraw","1");
-                            else
-                                sankore.setPreference("checkboxDraw","0");
-                                                        
-                            sankore.setPreference("selectedTheme", $("#selectTheme").val());
-                            sankore.setPreference("graphicalMethodDisplaying", $("#selectMethodeAffichage").val());
-                            sankore.setPreference("defaultZoom", $("#zoomDefaut").val());
-                            
-                            if ($('#checkGrille').is(":checked"))
-                                sankore.setPreference("showGrid","1");
-                            else
-                                sankore.setPreference("showGrid","0");
-                            if ($('#checkAxes').is(":checked"))
-                                sankore.setPreference("showAxis","1");
-                            else
-                                sankore.setPreference("showAxis","0");
-                            if ($('#checkEchelle').is(":checked"))
-                                sankore.setPreference("showScale","1");
-                            else
-                                sankore.setPreference("showScale","0");
-                            
-                            sankore.setPreference("styleOf3DShow", $("#selectAffichage3D").val());
-                            sankore.setPreference("accuracyFunction", $("#inputPrecision3D").val());
-                            sankore.setPreference("redColor", $("#selectRouge3D").val());
-                            sankore.setPreference("greenColor", $("#selectVert3D").val());
-                            sankore.setPreference("blueColor", $("#selectBleu3D").val());
-                            sankore.setPreference("3DGeneralColor", $("#couleur3Dgenerale").val());
-                            sankore.setPreference("thickness", $("#inputTaille").val());
-                            sankore.setPreference("offsetDiagrammX", $("#inputDecalageX").val());
-                            sankore.setPreference("offsetDiagrammY", $("#inputDecalageY").val());
-                            sankore.setPreference("accuracyGraph", $("#inputPrecision").val());
-                            
-                            if(historique.length)
-                                sankore.setPreference("graphmeHistory", historique.toString());
-                        }
-                    });
-                });
-                //alert(navigator.appName+" ; "+navigator.appVersion+" ; "+navigator.userAgent)
-
-        // ------------- Fonctions du widgets -------------
-        // Lance la procédure pour dessiner la fonction qui se trouve dans l'input en haut du widget.
-        // Permet aussi d'actualiser le graphique.
-                function actualiserGraph(){
-                        evaluer(document.getElementById("inputEq").value)
-                }
-
-        // Cette fonction détermine si la fonction entrée est valide ou non.
-        // Elle retourne "true" si la fonction ne comporte pas de caractères interdits et "false" dans le cas contraire.
-                function check(eq){
-                   for(var i=0; i<interdit.length; i++){
-                      var condition = ""
-                      for(var k=0; k<interdit[i].length; k++){
-                         if(k==0){
-                            condition = condition + "eq.charAt(j) == interdit[i].charAt(0)"
-                         }
-                         else{
-                            condition = condition + "&& eq.charAt(j+"+k+") == interdit[i].charAt("+k+")"
-                         }
-                      }
-                      //alert(interdit[i]+" ; "+condition)
-                      for(var j=0; j<eq.length; j++){
-                         if(eval(condition)){
-                                document.getElementById("spanFctInterdite").innerHTML = interdit[i]
-                                afficherMenu("fctInterdite")
-                            //alert("------- Erreur -------\nImpossible de dessiner la fonction ... \nExpression ou carractère invalide : "+interdit[i]+"")
-                            return false
-                         }
-                      }
-                   }
-                   return true
-                }
-
-        // Cette fonction permet de choisir la méthode d'affichage entre:
-        // 1) Image au format XPM
-        // 2) Affichage directe dans sankore
-        // 3) Autres Méthodes d'affichages (svg ou canvas)
-                function evaluer(eq){
-                        if(check(eq)){
-                                try{
-                                        if(historique[0]!=eq && eq!="1000"){
-                                                for(var i=0;i<historique.length;i++){
-                                                        if(historique[i]==eq){
-                                                                historique.splice(i, 1)
-                                                        }
-                                                }
-                                                historique.unshift(eq)
-                                                actualiserHistorique()
-                                        }
-                                        if(fonction3D){
-                                        dessiner3D(eq)
-                                        }
-                                        else if(document.getElementById("selectMethodeAffichage").value == "xpm"){
-                                        evaluerXPM(eq)
-                                        }
-                                        else if(document.getElementById("selectMethodeAffichage").value == "sankore"){
-                                        evaluerUniboard(eq)
-                                        }
-                                        else if(document.getElementById("selectMethodeAffichage").value == "canvas" || document.getElementById("selectMethodeAffichage").value == "canvas2"){
-                                                evaluerCanvas(eq)
-                                        }
-                                        else{
-                                                evaluerSVG(eq)
-                                        }
-                                }
-                                catch(err){
-                                        afficherMenu("erreurFct")
-                                }
-                        }
-                }
-
-        // ---- Fonctions Mathématiques et constantes ----
-        // (rempalce sin() par Math.sin(), cos() par Math.cos(), tan() par Math.tan(), etc.
-                var pi = 4 * atan(1)
-                var e = exp(1)
-
-                function sin(valeur){
-                   return Math.sin(valeur)
-                }
-                function cos(valeur){
-                   return Math.cos(valeur)
-                }
-                function tan(valeur){
-                   return Math.tan(valeur)
-                }
-                function cot(valeur){
-                   return 1/Math.tan(valeur)
-                }
-                function sec(valeur){
-                   return 1/cos(valeur)
-                }
-                function csc(valeur){
-                   return 1/sin(valeur)
-                }
-
-                function asin(valeur){
-                   return Math.asin(valeur)
-                }
-                function acos(valeur){
-                   return Math.acos(valeur)
-                }
-                function atan(valeur){
-                   return Math.atan(valeur)
-                }
-                function acot(valeur){
-                   return Math.atan(1/valeur)
-                }
-                function asec(valeur){
-                   return Math.acos(1/valeur)
-                }
-                function acsc(valeur){
-                   return Math.asin(1/valeur)
-                }
-
-                var arcsin = asin
-                var arccos = acos
-                var arctan = atan
-                var arccot = acot
-                var arcsec = asec
-                var arccsc = acsc
-
-                function sinh(valeur){
-                   return (Math.exp(valeur)-Math.exp(-valeur))/2
-                }
-                function cosh(valeur){
-                   return (Math.exp(valeur)+Math.exp(-valeur))/2
-                }
-                function tanh(valeur){
-                   return (Math.exp(valeur)-Math.exp(-valeur))/(Math.exp(valeur)+Math.exp(-valeur))
-                }
-                function coth(valeur){
-                   return (Math.exp(valeur)+Math.exp(-valeur))/(Math.exp(valeur)-Math.exp(-valeur))
-                }
-                function sech(valeur){
-                   return 1/cosh(valeur)
-                }
-                function csch(valeur){
-                   return 1/sinh(valeur)
-                }
-
-                function asinh(valeur){
-                   return Math.log(valeur+Math.sqrt(Math.pow(valeur,2)+1))
-                }
-                function acosh(valeur){
-                   return Math.log(valeur+Math.sqrt(Math.pow(valeur,2)-1))
-                }
-                function atanh(valeur){
-                   return Math.log((1+valeur)/(1-valeur))/2
-                }
-                function acoth(valeur){
-                   return Math.log((valeur+1)/(valeur-1))/2
-                }
-
-                var arcsinh = asinh
-                var arccosh = acosh
-                var arctanh = atanh
-                var arccoth = acoth
-
-                function sqrt(valeur){
-                   return Math.sqrt(valeur)
-                }
-                function pow(valeur1, valeur2){
-                   return Math.pow(valeur1, valeur2)
-                }
-                function root(valeur1, valeur2){
-                   if(valeur2%2==1 && valeur1<0){
-                      return -Math.pow(-valeur1, (1/valeur2))
-                   }
-                   else{
-                      return Math.pow(valeur1, (1/valeur2))
-                   }
-                }
-
-                function exp(valeur){
-                   return Math.exp(valeur)
-                }
-                function log(valeur){
-                   return Math.log(valeur)/Math.log(10)
-                }
-                function ln(valeur){
-                   return Math.log(valeur)
-                }
-
-                function abs(valeur){
-                   return Math.abs(valeur)
-                }
-                function sign(valeur){
-                        if(valeur<0){
-                                return -1
-                        }
-                        else if(valeur>0){
-                                return 1
-                        }
-                        else{
-                                return undefined
-                        }
-                }
-
-                function round(valeur){
-                   return Math.round(valeur)
-                }
-                function ceil(valeur){
-                   return Math.ceil(valeur)
-                }
-                function floor(valeur){
-                   return Math.floor(valeur)
-                }
-                function random(){
-                   return Math.random()
-                }
-// ]]>
-        </script>
-    </head>
-    <body onload="evaluer(1000);checkCouleurs3D();loadOptions();majAuto()" onkeypress="keyPress(event)">
-        <!-- ..... Haut du Widget ..... -->
-        <span id="haut">
-            <span id="texteFonction">Function: </span><input id="inputEq" onkeypress='if(event.keyCode==13) evaluer(this.value)' onkeyup="document.getElementById('fonctionActuelle').innerHTML = this.value"/> 
-            <input type="button" onclick='evaluer(document.getElementById("inputEq").value)' value="Display"/><input type="button" style="width:21px;" onclick="menuFonctions()" value="+"/>
-        </span>
-        <!--<div id="miniMax" onclick="miniMax()">-</div>  ▶▼ -->
-        <div id="boutonAgrandir" class="miniBouton" onclick="agrandirAffichage()">^</div>
-        <!--<div id="boutonFermer" class="miniBouton" onclick="close()"></div>-->
-        <br/>
-
-        <!-- ..... Millieu du Widget ..... -->
-        <!-- Zone d'affichage -->
-        <div id="affichage" onmousedown="sourisDown()" onmouseup="sourisUp()" onmousemove="sourisMove(event)" ondblclick="doubleClick(event.ctrlKey)"></div>
-        <!-- Zone de boutons gauche -->
-        <div id="gauche">
-            <span id="xAxis">X-axis:</span> <br/>
-            <input id="borneXGauche" class="smallInput" value="-5" onkeypress='if(event.keyCode==13) actualiserGraph()'/> ... <input id="borneXDroite" class="smallInput" value="5" onkeypress='if(event.keyCode==13) actualiserGraph()'/> <br/>
-            <span id="yAxis">Y-axis:</span> <br/>
-            <input id="borneYGauche" class="smallInput" value="-5" onkeypress='if(event.keyCode==13) actualiserGraph()'/> ... <input id="borneYDroite" class="smallInput" value="5" onkeypress='if(event.keyCode==13) actualiserGraph()'/>
-            <br/><span id="scaleZoom">Zoom:</span> <br/>
-            <input type="button" style="width:45%;" onclick='zoom(1.25)' value="-"/><input type="button" style="width:45%; position:relative; left: 9px;" onclick='zoom(0.8)' value="+"/><br/><br/>
-            <span id="graphColor">Color:</span> <br/>
-            <div id="buttonColor" title="couleurFonction" onclick="colorPicker(this.id); afficherMenu('menuCouleur')"></div>
-            <br/><br/>
-            <hr/>
-            <br/>
-            Menus:
-            <input type="button" class="boutonGauche" onclick='document.getElementById("etudeFct").innerHTML = document.getElementById("inputEq").value;afficherMenu("menuOutils")' value="Tools"/>
-            <input type="button" class="boutonGauche" onclick='afficherMenu("menuOptions")' value="Options"/>
-            <input type="button" class="boutonGauche" onclick='afficherMenu("menuAide")' value="Help"/>
-            <input type="button" class="boutonGauche" onclick='afficherMenu("menuCredits")' value="About"/>
-
-            <!-- ..... Menus ..... -->
-            <div id="menu" class="menu">
-                <div id="contenuMenu" class="contenuMenu"></div>
-                <div class="barreBasMenu">
-                    <input type="button" onclick='cacherMenu()' value="Cancel"/>
-                </div>
-            </div>
-        </div>
-        <div id="gauche3D">
-            <input type="button" class="boutonGauche3D" onclick='afficherMenu("menuCredits")' value="About"/>
-            <input type="button" class="boutonGauche3D" onclick='afficherMenu("menuAide")' value="Help"/>
-            <input type="button" class="boutonGauche3D" onclick='afficherMenu("menuOptions")' value="Options"/>
-            <input type="button" style="width:30px;" onclick='zoom3D(0.8)' value="-"/><input type="button" style="width:30px;" onclick='zoom3D(1.25)' value="+"/>
-        </div>
-
-        <!-- Options -->
-        <div id="menuOptions" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuOptions")'>Widget</td>
-                    <td onclick='afficherMenu("menuOptions2D")'>2D</td>
-                    <td onclick='afficherMenu("menuOptions3D")'>3D</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <h3>Widget options</h3>
-
-                <span>Themes of widget:</span> <select id="selectTheme" onchange="changerTheme(this.value)">
-                    <option value="noir">Black</option>
-                    <option value="bleu">Blue</option>
-                    <option value="blanc">White</option>
-                </select><br/>
-                <br/><br/><br/>
-                <span class="gras">Control options:</span><br/>
-                <input type="button" class="boutonSauvegarde" onclick="saveOptions()" value="Save"/><input type="button" class="boutonSauvegarde" onclick="loadOptions()" value="Load"/> <input class="boutonSauvegarde2" type="button" onclick="delOptions()" value="Delete"/><input class="boutonSauvegarde2" type="button" onclick="alertOptions()" value="Display"/><br/>
-                <span class="texteSecondaire">Save a widget options in cookies or load an options from cookies or delete a registered options.</span>
-                <br/><br/>
-                <label for="checkMaJ">Automatically update when a widget opening.</label> <input type="checkbox" id="checkMaJ" onclick="checkboxMaJ()"/>
-                <br/>
-                <div id="cacheCookies"><br/><br/><h1>Cookies are disabled. You cannot save an options...</h1></div>
-                <div id="cacheMaJ">You are using the last version of this widget.</div>
-                <input type="button" onclick='reset()' value="Reload widget" style="position:absolute; bottom:20px; width:140px; height:32px;"/>
-                <input type="button" onclick='miseAjour()' value="Updated" style="position:absolute; bottom:20px; left:160px; width:140px; height:32px;"/>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick="cacherMenu(); actualiserGraph()" value="Check"/></div>
-        </div>
-
-        <div id="menuOptions2D" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td onclick='afficherMenu("menuOptions")'>Widget</td>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuOptions2D")'>2D</td>
-                    <td onclick='afficherMenu("menuOptions3D")'>3D</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <h3>Options 2D</h3>
-                <span>The graphical method displaying:</span><select id="selectMethodeAffichage">
-                    <option value="canvas">canvas (lines)</option>
-                    <option value="canvas2">canvas (points)</option>
-                    <option value="svg">svg</option>
-                    <option value="svg2">svg (1 image)</option>
-                    <option value="xpm">xpm</option>
-                    <option value="sankore">sankore</option>
-                </select> <br/>
-                <span>Zoom default:</span> 
-                <input value="5" class="smallInput" id="zoomDefaut"/>
-                <input type="button" onclick='reinitialiserZoom(document.getElementById("zoomDefaut").value)' value="Update zoom"/> <br/>
-                <br/>
-                <input type="checkbox" id="checkGrille" checked="true" onclick="actualiserGraph()"/><label for="checkGrille">Show grid</label> <br/>
-                <input type="checkbox" id="checkAxes" checked="true" onclick="actualiserGraph()"/><label for="checkAxes">Show axis</label> <br/>
-                <input type="checkbox" id="checkEchelle" checked="true" onclick="actualiserGraph()"/><label for="checkEchelle">Scale</label> <br/>
-                <span>Thickness:</span> <input id="inputTaille" class="smallInput" value="3" onkeypress='if(event.keyCode==13) actualiserGraph()' style=""/>
-                <div class="boutonPlus" type="button" onclick="boutonPlus('inputTaille', 1); actualiserGraph()">+</div><div class="boutonMoins" type="button" onclick="boutonMoins('inputTaille', 1); actualiserGraph()">-</div> <br/>
-                <br/>
-                <span>Offset diagram:</span> 
-                x=<input value="0" class="smallInput" id="inputDecalageX" onkeyup="decalageX = parseFloat(this.value)"/>
-                y=<input value="0" class="smallInput" id="inputDecalageY" onkeyup="decalageY = parseFloat(this.value)"/>
-                <br/>
-                <span>Accuracy graph:</span>
-                <input value="0.02" class="smallInput" id="inputPrecision" onkeyup="precision = parseFloat(this.value)"/>
-                <div class="boutonPlus" type="button" onclick="boutonPlus('inputPrecision', 0.01); precision = parseFloat(document.getElementById('inputPrecision').value); actualiserGraph()">+</div><div class="boutonMoins" type="button" onclick="boutonMoins('inputPrecision', 0.01); precision = parseFloat(document.getElementById('inputPrecision').value); actualiserGraph()">-</div> <br/>
-                <br/>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu(); actualiserGraph()' value="Check"/></div>
-        </div>
-
-        <div id="menuOptions3D" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td onclick='afficherMenu("menuOptions")'>Widget</td>
-                    <td onclick='afficherMenu("menuOptions2D")'>2D</td>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuOptions3D")'>3D</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <h3>Options 3D</h3>
-                <span>Show the style:</span> 
-                <select id="selectAffichage3D">
-                    <option value="surfaces"> surfaces </option>
-                    <option value="points"> points </option>
-                </select> <input type="button" onclick='reinitialiserZoom(5)' value="Reset display"/> <br/>
-                <br/>
-                <span>Accuracy function:</span> <input value="0.2" class="smallInput" id="inputPrecision3D" onkeyup="precisionFonction3D = parseFloat(this.value)"/>
-                <div class="boutonPlus" type="button" onclick="boutonPlus('inputPrecision3D', 0.1); precisionFonction3D = parseFloat(document.getElementById('inputPrecision3D').value); actualiserGraph()">+</div><div class="boutonMoins" type="button" onclick="boutonMoins('inputPrecision3D', 0.1); precisionFonction3D = parseFloat(document.getElementById('inputPrecision3D').value); actualiserGraph()">-</div> <br/>
-                <br/>
-                <span>Use the color:</span><br/>
-                <span>red:</span>
-                <select onchange="checkCouleurs3D()" id="selectRouge3D">
-                    <option value="plus">positive value</option>
-                    <option value="moins">negative value</option>
-                    <option value="tout">general value</option>
-                </select>
-                <br/>
-                <span>green:</span>
-                <select onchange="checkCouleurs3D()" id="selectVert3D">
-                    <option value="moins">negative value</option>
-                    <option value="plus">positive value</option>					
-                    <option value="tout">general value</option>
-                </select>
-                <br/>
-                <span>blue:</span>
-                <select onchange="checkCouleurs3D()" id="selectBleu3D">
-                    <option value="tout">general value</option>
-                    <option value="plus">positive value</option>
-                    <option value="moins">negative value</option>					
-                </select>
-                <br/>
-                <span>General value:</span> <input class="smallInput" id="couleur3Dgenerale" type="texte" value="0" onkeyup="checkCouleurs3D()"/> (<span>from</span> 0 <span>to</span> 255)
-                <br/>
-                <span id="apercuCouleur3D"></span>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu(); actualiserGraph()' value="Check"/></div>
-        </div>
-
-        <!-- Aide -->
-        <div id="menuAide" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuAide")'>Using</td>
-                    <td onclick='afficherMenu("menuAideExemples")'>Examples</td>
-                    <td onclick='afficherMenu("menuAideAutres")'>Other</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <h1>How it work.</h1>
-                <p><span>This widget allow to draw mathematical function. Enter function in the field in the top part of widget and press "Show".</span></p>
-                <p><span>You can enter following mathematical function:</span><br/>
-                    <h2>Basic operations</h2>
-                    <ul>
-                        <li><span>Plus</span> -> <span class="gras">+</span></li>
-                        <li><span>Minus</span> -> <span class="gras">-</span></li>
-                        <li><span>Multiplication</span> -> <span class="gras">*</span></li>
-                        <li><span>Division</span> -> <span class="gras">/</span></li>
-                        <li><span>Mod</span> -> <span class="gras">%</span></li>
-                    </ul>
-                    <h2>Trigonometric functions</h2>
-                    <ul>
-                        <li><span>Sine</span> -> <span class="gras">sin(x)</span></li>
-                        <li><span>Cosine</span> -> <span class="gras">cos(x)</span></li>
-                        <li><span>Tangent</span> -> <span class="gras">tan(x)</span></li>
-                        <li><span>Cotangent</span> -> <span class="gras">cot(x)</span></li>
-                        <li><span>Secant</span> -> <span class="gras">sec(x)</span></li>
-                        <li><span>Cosecant</span> -> <span class="gras">csc(x)</span></li>
-                    </ul>
-                    <ul>
-                        <li><span>Arc sine</span> -> <span class="gras">arcsin(x)</span> <span>or</span> <span class="gras">asin(x)</span></li>
-                        <li><span>Arc cosine</span> -> <span class="gras">arccos(x)</span> <span>or</span> <span class="gras">acos(x)</span></li>
-                        <li><span>Arc tangent</span> -> <span class="gras">arctan(x)</span> <span>or</span> <span class="gras">atan(x)</span></li>
-                        <li><span>Arc cotangent</span> -> <span class="gras">arccot(x)</span> <span>or</span> <span class="gras">acot(x)</span></li>
-                    </ul>
-                    <h2>Hyperbolic functions</h2>
-                    <ul>
-                        <li><span>Hyperbolic sine</span> -> <span class="gras">sinh(x)</span></li>
-                        <li><span>Hyperbolic cosine</span> -> <span class="gras">cosh(x)</span></li>
-                        <li><span>Hyperbolic tangent</span> -> <span class="gras">tanh(x)</span></li>
-                        <li><span>Hyperbolic cotangent</span> -> <span class="gras">coth(x)</span></li>
-                        <li><span>Hyperbolic secant</span> -> <span class="gras">sech(x)</span></li>
-                        <li><span>Hyperbolic cosecant</span> -> <span class="gras">csch(x)</span></li>
-                    </ul>
-                    <ul>
-                        <li><span>Hyperbolic arc sine</span> -> <span class="gras">arcsinh(x)</span> <span>or</span> <span class="gras">asinh(x)</span></li>
-                        <li><span>Hyperbolic arc cosine</span> -> <span class="gras">arccosh(x)</span> <span>or</span> <span class="gras">acosh(x)</span></li>
-                        <li><span>Hyperbolic arc tangent</span> -> <span class="gras">arctanh(x)</span> <span>or</span> <span class="gras">atanh(x)</span></li>
-                        <li><span>Hyperbolic arc cotangent</span> -> <span class="gras">arccoth(x)</span> <span>or</span> <span class="gras">acoth(x)</span></li>
-                    </ul>
-                    <h2>Square roots and degrees</h2>
-                    <ul>
-                        <li><span>Square root</span> -> <span class="gras">sqrt(x)</span></li>
-                        <li><span>Degree</span> -> <span class="gras">pow(x, y)</span> <span class="texteSecondaire">Variable x to the power y</span></li>
-                        <li><span>Root</span> -> <span class="gras">root(x, y)</span> <span class="texteSecondaire">Root y of x</span></li>
-                    </ul>
-                    <h2>Exponential and logarithm</h2>
-                    <ul>
-                        <li>e<span style="vertical-align:super;">x</span> -> <span class="gras">exp(x)</span></li>
-                        <li><span>Natural logarithm</span> -> <span class="gras">ln(x)</span></li>
-                        <li><span>Decimal logarithm</span> -> <span class="gras">log(x)</span></li>
-                    </ul>
-                    <h2>Absolute number value</h2>
-                    <ul>
-                        <li>|x| -> <span class="gras">abs(x)</span></li>
-                    </ul>
-                    <h2>Rounding</h2>
-                    <ul>
-                        <li><span class="gras">round(x)</span> -> <span>rounding to the nearest whole number</span></li>
-                        <li><span class="gras">ceil(x)</span> -> <span>rounding to the nearest whole number in a big way</span></li>
-                        <li><span class="gras">floor(x)</span> -> <span>rounding to the nearest whole number the smaller side</span></li>
-                    </ul>					
-                </p> <br/>
-                <hr/>
-                <h1>Constants</h1>
-                <p><span>Also are available some constants:</span><br/>
-                    <ul>
-                        <li><span class="gras">pi</span> = 4 * atan(1) ≈  3,141592653589793</li>
-                        <li><span class="gras">e</span> = exp(1) ≈ 2.718281828459045</li>
-                    </ul>
-                </p>
-                <br/>
-                <hr/>
-                <h1>Keyboard keys</h1>
-                <p style="font-size:90%;">
-                    esc -> <span>reset widget</span> <br/>
-                    ctrl + <span>left arrow</span> -> <span>graph will be moved left</span><br/>
-                    ctrl + <span>top arrow</span> -> <span>graph will be moved top</span><br/>
-                    ctrl + <span>right arrow</span> -> <span>graph will be moved right</span><br/>
-                    ctrl + <span>bottom arrow</span> -> <span>graph will be moved bottom</span><br/>
-                    <br/>
-                </p>
-                <br/>
-                <input type="button" value="User's guide" onclick="navigateur('Guide_Utilisateur.html')" style="position:absolute;bottom:0px;left:0px;"/>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <div id="menuAideExemples" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td onclick='afficherMenu("menuAide")'>Using</td>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuAideExemples")'>Examples</td>
-                    <td onclick='afficherMenu("menuAideAutres")'>Other</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <span class="texteSecondaire">(You can view example. Do not forget to set accuracy in options if necessary.)</span>
-                <br/><br/>
-                <hr/>
-                <h1>Functions 2D</h1>
-                <p>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = '0.5*x+1' ; actualiserGraph()">0.5*x+1</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'pow(x,2)-3' ; actualiserGraph()">pow(x,2)-3</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = '1/x' ; actualiserGraph()">1/x</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'atan(x)' ; actualiserGraph()">atan(x)</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = '(x+1/x)/1.2' ; actualiserGraph()">(x+1/x)/1.2</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'sin(10*x*x)*0.5' ; actualiserGraph()">sin(10*x*x)*0.5</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'log(pow(x-2,2))' ; actualiserGraph()">log(pow(x-2,2))</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = '(x*x-5*x+5)*exp(x)/5' ; actualiserGraph()">(x*x-5*x+5)*exp(x)/5</span> <br/>
-
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'random()' ; evaluer('random()')">random()</span> <br/>
-                </p>
-                <br/><br/>
-                <hr/>
-                <h1>Functions 3D</h1>
-                <p>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'sin(x)+cos(y)' ; actualiserGraph()">sin(x)+cos(y)</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'sqrt(10-x*x)' ; actualiserGraph()">sqrt(10-x*x)</span> <br/>
-                    <span class="survol" onclick="document.getElementById('inputEq').value = 'atan(x)+atan(y)' ; actualiserGraph()">atan(x)+atan(y)</span> <br/>
-                </p>
-                <br/>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <div id="menuAideAutres" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td onclick='afficherMenu("menuAide")'>Using</td>
-                    <td onclick='afficherMenu("menuAideExemples")'>Examples</td>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuAideAutres")'>Other</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <h4>Save graph</h4>
-                <span>In some browsers when used display method "Canvas" you can save graph by clicking it with right mouse button and selecting "Save image". Also you can save 3D-graphs.</span>
-                <br/><br/>
-                <h4>Offset</h4>
-                <span>If graph isn't in the right place (larger than canvas) then can you set necessary parameters graph displaying in settings menu.</span> 
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <!-- Crédits -->
-        <div id="menuCredits" class="menu">
-            <div class="contenuMenu" style="text-align:justify;">
-                <br/>
-                <table id="credits">
-                    <tr>
-                        <td>
-                            <img src="icon.png"/>
-                            <h3>Widget is developed by</h3> 
-                            Yannick Vessaz <br/>
-                            <a href='mailto:yannick.vessaz at gmail.com'>yannick.vessaz at gmail.com</a>
-                        </td>
-                    </tr>
-                </table>
-                <span class="texteSecondaire">
-                    <br/><br/>
-                    <span>If you want to inform about bug, make a proposal or just ask some questions then you can  contact to me at the following e-mail:</span> <a href='mailto:yannick.vessaz at gmail.com'>e-mail</a>.
-                    <br/><br/>
-                    <span>If you want to change background design then you can contact at following address:</span> <a href="http://kde.org">KDE</a>.
-                </span>
-                <span id="version" class="texteSecondaire" style="position:absolute;bottom:10px;left:15px;">version 1.3</span>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <!-- Outils -->
-        <div id="menuOutils" class="menu">
-            <div class="contenuMenu">
-                <h3 style="margin-top:0px; margin-bottom:15px;">Tools</h3> 
-                <span>Mouse events:</span><br/>
-                <input type="button" class="choixOutil" onclick="choixOutil('deplacement');cacherMenu()" value="Moving"/>
-                <input type="button" class="choixOutil" onclick="choixOutil('tangente');cacherMenu()" value="Tangente"/>
-                <input type="button" class="choixOutil" onclick="choixOutil('point');cacherMenu()" value="Point"/>
-                <br/><br/>
-                <span>Derivative:</span><br/>
-                <label for="checkDerivee"> f'(x) </label><input type="checkbox" id="checkDerivee" onclick="actualiserGraph()"/><label for="checkDerivee2"> f''(x) </label><input type="checkbox" id="checkDerivee2" onclick="actualiserGraph()"/>
-                <br/><br/>
-                <span>Square under function:</span><br/>
-                <span>From</span> <input value="-5" class="smallInput" id="aireG"/> <span>to</span> <input value="5" class="smallInput" id="aireD"/> <input type="button" onclick='calculerAire()' value="Calculate"/> <span id="outputAire"></span>
-                <div style="float: right;"><label for="checkAire">Draw </label><input type="checkbox" id="checkAire" onclick="actualiserGraph()"/></div>
-                <br/><br/>
-                <span>Calculate the point on the function:</span><br/>
-                x=<input value="0" class="smallInput" id="inputX" onkeypress='if(event.keyCode==13) execute(document.getElementById("inputEq").value)'/>
-                <input type="button" onclick='execute(document.getElementById("inputEq").value)' value="Estimate"/>
-                <span id="outputX"></span>
-                <br/><br/>
-                <span>Analysis of function:</span> <br/>
-                f(x) = <span id="etudeFct"></span> <input type="button" value="Start to analysis" onclick='etudier(document.getElementById("inputEq").value);afficherMenu("menuEtude")'/>
-                <br/><br/>
-                <span>Display test:</span><br/>
-                <input type="button" onclick='cacherMenu(); testXPM()' value="Test XPM"/><input type="button" onclick='cacherMenu(); testSVG()' value="Test SVG"/><input type="button" onclick='cacherMenu(); testCanvas()' value="Test Canvas"/>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <!--Etude de fonction -->
-        <div id="menuEtude" class="menu">
-            <div class="contenuMenu">
-                <h3>Analysis of function</h3>
-                <span>Set of definitions:</span> <span id="etudeEDF">...</span> <br/>
-                <span>Parity:</span> <span id="etudeParite">...</span> <br/>
-                <span>Zeros of functions:</span> <span id="etudeZeros">...</span> <br/>
-                <table>
-                    <tr id="etudeSigne">
-                        <td>Sign : ...</td>
-                    </tr>
-                </table>
-                <span>Asymptotes</span> <br/>
-                <span>AH left:</span> : <span id="etudeAHG">...</span> <br/>
-                <span>AH right:</span> <span id="etudeAHD">...</span> <br/>
-                <span>AV:</span> <span id="etudeAV">...</span>
-                <span id="etudeMin">...</span>
-                <span id="etudeMax">...</span>
-                <span id="etudeI">...</span> <br/><br/>
-                <span class="texteSecondaire" style="font-size:10px;">Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.</span>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <!-- Fonctions multiples -->
-        <div id="menuFonctions" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuFonctions")'>Functions</td>
-                    <td onclick='afficherMenu("menuHistorique")'>History</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures">
-                <em>Current</em><br/>
-                f(x) = <span id="fonctionActuelle">x</span> <input type="button" value="+" onclick="ajouterFonction(document.getElementById('fonctionActuelle').innerHTML)"/>
-                <br/><br/>
-                <em>Additional</em><br/>
-                <span id="fonctionsSupp">n/a ...</span>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <!-- Historique -->
-        <div id="menuHistorique" class="menu">
-            <table class="ongletMenu">
-                <tr>
-                    <td onclick='afficherMenu("menuFonctions")'>Functions</td>
-                    <td class="ongletMenuActuel" onclick='afficherMenu("menuHistorique")'>History</td>
-                </tr>
-            </table>
-            <div class="contenuMenu avecBordures" id="divHistorique">
-                <span id="spanHistorique"></span>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
-        </div>
-
-        <!-- Couleur -->
-        <div id="menuCouleur" class="menu">
-            <div class="contenuMenu">
-                <em>Choosing the color:</em> <br/><br/>
-                <div id="colorSV" onmousemove="if(mouseDown==true){colorSV(event)}" onmousedown="colorSV(event); mouseDown = true" onmouseup="mouseDown = false">
-                    <svg:svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
-                        <svg:defs id="defs1">
-                            <svg:linearGradient id="linearGradient1" x1="0%" y1="0%" x2="100%" y2="0%">
-                                <svg:stop
-                                    style="stop-color:#000000;stop-opacity:1;"
-                                    offset="0%" />
-                                <svg:stop
-                                    style="stop-color:#000000;stop-opacity:0;"
-                                    offset="100%" />
-                            </svg:linearGradient>
-                            <svg:linearGradient id="linearGradient2" x1="0%" y1="0%" x2="0%" y2="100%">
-                                <svg:stop
-                                    style="stop-color:#ffffff;stop-opacity:0;"
-                                    offset="0%" />
-                                <svg:stop
-                                    style="stop-color:#ffffff;stop-opacity:1;"
-                                    offset="100%" />
-                            </svg:linearGradient>
-                        </svg:defs>
-                        <svg:rect
-                            style="fill:url(#linearGradient2);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
-                            width="255"
-                            height="255"
-                            x="0"
-                            y="0"
-                            ry="0" />
-                        <svg:rect
-                            style="fill:url(#linearGradient1);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
-                            width="255"
-                            height="255"
-                            x="0"
-                            y="0"
-                            ry="0" />
-                        <svg:line
-                            id="ligneValeur"
-                            x1="255"
-                            y1="0"
-                            x2="255"
-                            y2="255"
-                            style="stroke:rgb(0,0,0);stroke-width:2"/>
-                        <svg:line
-                            id="ligneSaturation"
-                            x1="0"
-                            y1="0"
-                            x2="255"
-                            y2="0"
-                            style="stroke:rgb(0,0,0);stroke-width:2"/>
-                    </svg:svg>
-                </div>
-                <div id="colorT" onmousemove="if(mouseDown==true){colorT(event)}" onmousedown="colorT(event); mouseDown = true" onmouseup="mouseDown = false">
-                    <svg:svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
-                        <svg:defs id="defs2">
-                            <svg:linearGradient id="linearGradient3" x1="0%" y1="100%" x2="0%" y2="0%">
-                                <svg:stop
-                                    style="stop-color:#ff0000;stop-opacity:1;"
-                                    offset="0%" />
-                                <svg:stop
-                                    style="stop-color:#ff00ff;stop-opacity:1;"
-                                    offset="16.66%" />
-                                <svg:stop
-                                    style="stop-color:#0000ff;stop-opacity:1;"
-                                    offset="33.33%" />
-                                <svg:stop
-                                    style="stop-color:#00ffff;stop-opacity:1;"
-                                    offset="50%" />
-                                <svg:stop
-                                    style="stop-color:#00ff00;stop-opacity:1;"
-                                    offset="66.66%" />
-                                <svg:stop
-                                    style="stop-color:#ffff00;stop-opacity:1;"
-                                    offset="83.33%" />
-                                <svg:stop
-                                    style="stop-color:#ff0000;stop-opacity:1;"
-                                    offset="100%" />
-                            </svg:linearGradient>
-                        </svg:defs>
-                        <svg:rect
-                            style="fill:url(#linearGradient3);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
-                            width="255"
-                            height="255"
-                            x="0"
-                            y="0"
-                            ry="0" />
-                        <svg:line
-                            id="ligneTeinte"
-                            x1="0"
-                            y1="0"
-                            x2="20"
-                            y2="0"
-                            style="stroke:rgb(0,0,0);stroke-width:2"/>
-                    </svg:svg>
-                </div>
-                <table id="colorValues">
-                    <tr>
-                        <td>Color: </td><td><input id="inputTeinte" class="smallInput" value="0" onkeypress=''/></td>
-                    </tr><tr>
-                        <td>Value: </td><td><input id="inputValeur" class="smallInput" value="0" onkeypress=''/></td>
-                    </tr><tr>
-                        <td>Saturation: </td><td><input id="inputSaturation" class="smallInput" value="0" onkeypress=''/></td>
-                    </tr><tr>
-                        <td>Red: </td><td><input id="inputRouge" class="smallInput" value="255" onkeypress=''/></td>
-                    </tr><tr>
-                        <td>Green: </td><td><input id="inputVert" class="smallInput" value="0" onkeypress=''/></td>
-                    </tr><tr>
-                        <td>Blue: </td><td><input id="inputBleu" class="smallInput" value="0" onkeypress=''/></td>
-                    </tr><tr>
-                        <td>Opacity: </td><td><input id="inputOpacity" class="smallInput" value="1" onkeypress=''/></td>
-                    </tr><!--<tr>
-                            <td><input id="inputCouleur" style="width: 70%" value="cyan" onkeypress='couleurFonction = this.value; if(event.keyCode==13) actualiserGraph()'/></td>
-                    </tr>-->
-                </table>
-                <div id="apercuCouleur" title="New Color"></div><div id="apercuCouleur2" title="Old Color"></div>
-            </div>
-            <div class="barreBasMenu"><input type="button" onclick="if(idColor=='buttonColor'){cacherMenu()}else{afficherMenu('menuFonctions')}; actualiserGraph()" value="Check"/></div>
-        </div>
-
-        <!-- Erreurs Fonctions interdites -->
-        <div id="fctInterdite" class="miniMenu">
-            <br/>
-            <h1>------- Error -------</h1>
-            <br/>
-            Impossible to draw the function ...
-            <br/><br/>
-            Error in expression or unexpected char: <br/>
-            <span id="spanFctInterdite" style="font-style:italic;"></span>
-            <br/><br/>
-            <input type="button" onclick="cacherMenu()" value="Ok"/>
-        </div>
-
-        <!-- Autres erreurs -->
-        <div id="erreurFct" class="miniMenu">
-            <h1>------- Error -------</h1>
-            Runtime error! Check your function and try to draw it again.
-            <br/>
-            Description and parameters various functions which are available to help.
-            <br/><br/>
-            <input type="button" onclick="afficherMenu('menuAide')" value="Help"/>
-            <input type="button" onclick="cacherMenu()" value="Ok"/>
-        </div>
-
-        <!-- Menu des mises à jour -->
-        <div id="mAj" class="menu">
-            <h1>Updated</h1>
-            <span>Current version:</span> <br/><span id="thisVersion"></span><br/>
-            <span>The last on-line version:</span> <br/><span id="newVersion"></span><br/>
-            <br/>
-            <span>This widget is available to using on web-site:</span> <em>http://gyb.educanet2.ch/tm-widgets/yannick</em><br/>
-            <br/>			
-        </div>
-
-        <!-- Erreur mise à jour -->
-        <div id="erreurMaJ" class="miniMenu">
-            <br/>
-            <h1>------- Error -------</h1>
-            <br/><br/>
-            Update to latest version is not available because you already use the latest version.
-            <br/><br/><br/>
-            <input type="button" onclick="cacherMenu()" value="Ok"/>
-        </div>
-
-        <!-- Info options sauvegardées -->
-        <div id="infoSauvegarde" class="alertMenu">
-            <br/>
-            <h1>Options saved!</h1>
-            <br/>
-            <input type="button" onclick="document.getElementById('infoSauvegarde').style.display = 'none'" value="Ok"/>
-        </div>
-
-        <!-- ..... Flèches de déplacement ..... -->
-        <div class="flecheDeplacement" id="flecheHaut" onclick="if(fonction3D){zoom3D(1.25)}else{deplacerY(1)}" onmousemove="sourisMove(event)">â–²</div>
-        <div class="flecheDeplacement" id="flecheGauche" onclick="deplacerX(-1)" onmousemove="sourisMove(event)">â—€</div>
-        <div class="flecheDeplacement" id="flecheBas" onclick="if(fonction3D){zoom3D(0.8)}else{deplacerY(-1)}" onmousemove="sourisMove(event)">â–¼</div>
-        <div class="flecheDeplacement" id="flecheDroite" onclick="deplacerX(1)" onmousemove="sourisMove(event)">â–¶</div>
-
-        <!-- ..... Bas du Widget ..... -->
-        <div class="info" id="info"></div>
-        <div id="point">o</div>
-        <div id="tangente"></div>
-
-        <!-- .... Autres .... -->
-        <div id="onglet3D" onclick="activer3D()">3D</div>
-    </body>
-    <!-- .............................. Widget réalisé par Yannick Vessaz .............................. -->
-    <!-- .............................. e-mail: yannick.vessaz at gmail.com  .............................. -->
-</html>
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/.directory b/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/.directory
deleted file mode 100644
index 9883dc6..0000000
--- a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/.directory	
+++ /dev/null
@@ -1,4 +0,0 @@
-[Dolphin]
-ShowPreview=true
-Timestamp=2010,9,5,0,30,37
-ViewMode=0
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/languages.js b/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/languages.js
deleted file mode 100644
index 9bb6a24..0000000
--- a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/languages.js	
+++ /dev/null
@@ -1,506 +0,0 @@
-var sankoreLang = {
-    "en":{
-        "fnc":"Function: ",
-        "display":"Display",
-        "x_axis":"X-axis",
-        "y_axis":"Y-axis",
-        "zoom":"Zoom",
-        "color":"Color:",
-        "menus":"Menu",
-        "tools":"Tools",
-        "options":"Options",
-        "help":"Help",
-        "about":"About",
-        "mouse_events":"Mouse events:",
-        "moving":"Moving",
-        "tangente":"Tangente",
-        "point":"Point",
-        "choosing_color":"Choosing the color:",
-        "value":"Value:",
-        "saturation":"Saturation:",
-        "red":"Red:",
-        "green":"Green:",
-        "blue":"Blue:",
-        "opacity":"Opacity:",
-        "check":"Check",
-        "derivative":"Derivative:",
-        "square_under_func":"Square under function:",
-        "from":"From",
-        "to":"To",
-        "calculate":"Calculate",
-        "draw":"Draw",
-        "point_calculate":"Calculate the point on the function:",
-        "estimate":"Estimate",
-        "analysis_of_func":"Analysis of function:",
-        "start_to_analysis":"Start to analysis",
-        "quit":"Quit",
-        "display_test":"Display the test:",
-        "test":"Test",
-        "widget":"Widget",
-        "widget_options":"Widget options",
-        "themes_of_widget":"Themes of the widget:",
-        "black":"Black",
-        "white":"White",
-        "control_options":"Control options:",
-        "save":"Save",
-        "load":"Load",
-        "del":"Delete",
-        "save_a_widget_options":"Save a widget options in cookies or load an options from cookies or delete a registered options.",
-        "auto_update":"Automatically update when a widget opening.",
-        "reload_widget":"Reload widget",
-        "update":"Update",
-        "the_graphical":"The graphical method displaying:",
-        "lines":"lines",
-        "points":"points",
-        "image":"image",
-        "zoom_def":"Zoom default:",
-        "update_zoom":"Update zoom",
-        "show_grid":"Show grid",
-        "show_axis":"Show axis",
-        "scale":"Scale",
-        "thickness":"Thickness:",
-        "offset_diagram":"Offset diagram:",
-        "accuracy_graph":"Accuracy graph:",
-        "show_the_style":"Show the style:",
-        "surfaces":"surfaces",
-        "points":"points",
-        "reset_display":"Reset display",
-        "accuracy_func":"Accuracy function:",
-        "use_the_color":"Use the color:",
-        "positive_value":"positive value",
-        "negative_value":"negative value",
-        "general_value":"general value",
-        "how_it_work":"How it works",
-        "this_widget_allow":"This widget allows to draw mathematical function. Enter function in the field in the top part of the widget and press\"Display\"",
-        "you_can_enter":"You can enter following mathematical functions:",
-        "basic_operations":"Basic operations",
-        "plus":"Plus",
-        "minus":"Minus",
-        "multi":"Multiplication",
-        "division":"Division",
-        "mod":"Mod",
-        "trigonometric":"Trigonometric functions",
-        "sine":"Sine",
-        "cosine":"Cosine",
-        "tangent":"Tangent",
-        "cotangent":"Cotangent",
-        "secant":"Secant",
-        "cosecant":"Cosecant",
-        "arc_sine":"Arc sine",
-        "arc_cosine":"Arc cosine",
-        "arc_tangent":"Arc tangent",
-        "arc_cotangent":"Arc cotangent",
-        "hyperbolic_func":"Hyperbolic functions",
-        "hyp_sine":"Hyperbolic sine",
-        "hyp_cosine":"Hyperbolic cosine",
-        "hyp_tangent":"Hyperbolic tangent",
-        "hyp_cotangent":"Hyperbolic cotangent",
-        "hyp_secant":"Hyperbolic secant",
-        "hyp_cosecant":"Hyperbolic cosecant",
-        "hyp_arc_sine":"Hyperbolic arc sine",
-        "hyp_arc_cosine":"Hyperbolic arc cosine",
-        "hyp_arc_tangent":"Hyperbolic arc tangent",
-        "hyp_arc_cotangent":"Hyperbolic arc cotangent",
-        "square_roots_and_degrees":"Square roots and degrees",
-        "square_root":"Square root",
-        "degree":"Degree",
-        "root":"Root",
-        "variable_x":"Variable x to the power y",
-        "root_y":"Root y of x",
-        "exponential":"Exponential and logarithm",
-        "natural_log":"Natural logarithm",
-        "decimal_log":"Decimal logarithm",
-        "abs":"Absolute number value",
-        "rounding":"Rounding",
-        "round_nearest":"Rounding to the nearest whole number",
-        "round_nearest_big":"Rounding to the nearest whole number in a big way",
-        "round_nearest_small":"Rounding to the nearest whole number the smaller side",
-        "consts":"Constants",
-        "available_const":"Also are some constants available:",
-        "keys":"Keyboard keys",
-        "moved_left":"Graph will be moved left",
-        "moved_top":"Graph will be moved top",
-        "moved_right":"Graph will be moved right",
-        "moved_botom":"Graph will be moved bottom",
-        "guide":"User's guide",
-        "using":"Using",
-        "examples":"Examples",
-        "other":"Other",
-        "you_can_view":"You can view example. Don't forget to set a accuracy in option if it will be necessary.",
-        "save_graph":"Save graph",
-        "in_some_browsers":"In some browsers when display method \"Canvas\" used you can save graph by clcking it with right mouse button and selecting \"Save image\". Also you can save 3D-graphs.",
-        "offset":"Offset",
-        "if_graph_isnt":"If graph isn't in the right plase (larger than canvas) then can you set necessary parameters graph displaying in settings menu.",
-        "history":"History",
-        "current":"Current",
-        "additional":"Additional",
-        "left_arrow":"left arrow",
-        "right_arrow":"right arrow",
-        "top_arrow":"top arrow",
-        "bottom_arrow":"bottom arrow",
-        "or":"or",
-        "funcs":"Functions",
-        "widget_is_developed":"Widget is developed by",
-        "if_you_want_to":"If you want to inform about a bug, make a proposal or just ask some questions. You can contact to me at the following e-mail:",
-        "if_you_want_to_change":"If you want to change background design then you can contact at following address:",
-        "set_of_def":"Set of definitions:",
-        "parity":"Parity:",
-        "zeros":"Zeros of function:",
-        "signe":"Sign:",
-        "asympt":"Asymptotes",
-        "min":"Min",
-        "ev":"even",
-        "unev":"uneven",
-        "na":"n/a",
-        "curve_lower":"curve is lower than a AH",
-        "curve_higher":"curve is higher than a AH",
-        "max":"Max",
-        "no_min":"No minimum",
-        "no_max":"No maximum",
-        "tool_for":"Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.",
-        "ah_left":"AH left:",
-        "ah_right":"AH right:",
-        "av":"AV:",
-        "options_saved":"Options saved!",
-        "cur_version":"Current version:",
-        "last_version":"The last on-line version:",
-        "using_web":"This widget is available to using on web-site:",
-        "show_saved":"Now parameters will be saved"
-    },
-    "ru":{
-        "fnc": "Функция: ",
-        "display":"Показать",
-        "x_axis":"ось X",
-        "y_axis":"ось Y",
-        "zoom":"Размер",
-        "color":"Цвет:",
-        "menus":"Меню",
-        "tools":"Инструменты",
-        "options":"Опции",
-        "help":"Помощь",
-        "about":"О программе",
-        "mouse_events":"События мыши:",
-        "moving":"Движение",
-        "tangente":"Касательная",
-        "point":"Точка",
-        "choosing_color":"Выбор цвета:",
-        "value":"Значение:",
-        "saturation":"Насыщенность:",
-        "red":"Красный:",
-        "green":"Зеленый:",
-        "blue":"Голубой:",
-        "opacity":"Прозрачность:",
-        "check":"Применить",
-        "derivative":"Производная:",
-        "square_under_func":"Область функции:",
-        "from":"От",
-        "to":"До",
-        "calculate":"Посчитать",
-        "draw":"Зарисовать",
-        "point_calculate":"Рассчитать точку функции:",
-        "estimate":"Оценить",
-        "analysis_of_func":"Анализ функции:",
-        "start_to_analysis":"Начать анализ",
-        "quit":"Выйти",
-        "display_test":"Показать тест:",
-        "test":"Тест",
-        "widget":"Виджет",
-        "widget_options":"Настройки виджета",
-        "themes_of_widget":"Темы виджета:",
-        "black":"Черный",
-        "white":"Белый",
-        "control_options":"Опции управления:",
-        "save":"Сохранить",
-        "load":"Загрузить",
-        "del":"Удалить",
-        "save_a_widget_options":"Сохранить или загрузить настройки виджета в/из куки-файлов, или же удалить выбранные опции",
-        "auto_update":"Автоматическое обновление виджета при загрузке",
-        "reload_widget":"Перегрузить виджет",
-        "update":"Обновить",
-        "the_graphical":"Графический метод отображения:",
-        "lines":"линии",
-        "points":"точки",
-        "image":"изображения",
-        "zoom_def":"Размер по-умолчанию:",
-        "update_zoom":"Изменить размер:",
-        "show_grid":"Показать таблицу",
-        "show_axis":"Показать оси",
-        "scale":"Масштаб",
-        "thickness":"Толщина",
-        "offset_diagram":"Смещение диаграммы:",
-        "accuracy_graph":"Точность графика:",
-        "show_the_style":"Показать стиль:",
-        "surfaces":"поверхности",
-        "points":"точки",
-        "reset_display":"Обновить отображение",
-        "accuracy_func":"Точность функции:",
-        "use_the_color":"Использовать цвет:",
-        "positive_value":"положительное значение",
-        "negative_value":"отрицательное значение",
-        "general_value":"основное значение",
-        "how_it_work":"Как это работает",
-        "this_widget_allow":"Этот виджет позволяет рисовать математические функции. Введите функцию в верхней части виджета и нажмите \"Показать\"",
-        "you_can_enter":"Вы можете использовать следующие математические функции:",
-        "basic_operations":"Основные операции",
-        "plus":"Сложение",
-        "minus":"Вычетание",
-        "multi":"Произведение",
-        "division":"Частное",
-        "mod":"Остаток от деления",
-        "trigonometric":"Тригонометрические функции",
-        "sine":"Синус",
-        "cosine":"Косинус",
-        "tangent":"Тангенс",
-        "cotangent":"Котангенс",
-        "secant":"Секанс",
-        "cosecant":"Косеканс",
-        "arc_sine":"Арксинус",
-        "arc_cosine":"Арккосинус",
-        "arc_tangent":"Арктангенс",
-        "arc_cotangent":"Арккотангенс",
-        "hyperbolic_func":"Гиперболические функции",
-        "hyp_sine":"Гиперболический синус",
-        "hyp_cosine":"Гиперболический косинус",
-        "hyp_tangent":"Гиперболический тангенс",
-        "hyp_cotangent":"Гиперболический котангенс",
-        "hyp_secant":"Гиперболический секанс",
-        "hyp_cosecant":"Гиперболический косеканс",
-        "hyp_arc_sine":"Гиперболический арксинус",
-        "hyp_arc_cosine":"Гиперболический арккосинус",
-        "hyp_arc_tangent":"Гиперболический арктангенс",
-        "hyp_arc_cotangent":"Гиперболический арккотангенс",
-        "square_roots_and_degrees":"Квардатные корни и степени",
-        "square_root":"Квадратный корень",
-        "degree":"Степень",
-        "root":"Корень",
-        "variable_x":"Переменная х в степени у",
-        "root_y":"Корень y степени x",
-        "exponential":"Экспоненты и логарифмы",
-        "natural_log":"Натуральный логарифм",
-        "decimal_log":"Десятичный логарифм",
-        "abs":"Абсолютное значение числа",
-        "rounding":"Округление",
-        "round_nearest":"Округление до ближайшего целого числа",
-        "round_nearest_big":"Округление до ближайшего целого числа в большую сторону",
-        "round_nearest_small":"Округление до ближайшего целого числа в меньую сторону",
-        "consts":"Константы",
-        "available_const":"Также доступны некоторые константы:",
-        "keys":"Горячие клавиши",
-        "moved_left":"График будет сдвинут влево",
-        "moved_top":"График будет сдвинут вверх",
-        "moved_right":"График будет сдвинут вправо",
-        "moved_bottom":"График будет сдвинут вниз",
-        "guide":"Руководство пользователя",
-        "using":"Использование",
-        "examples":"Примеры",
-        "other":"Другое",
-        "you_can_view":"Вы можете посмотреть примеры. Не забывайте выставить точность в настройках, если это необходимо.",
-        "save_graph":"Сохранить график",
-        "in_some_browsers":"В некоторых браузерах при выборе метода отоюражения \"Canvas\" вы можете сохранить гафик кликом ПКМ на нем и выбором пункта \"Сохранить изображение\". Таким же способом вы можете сохранять 3D-графики.",
-        "offset":"Смещение",
-        "if_graph_isnt":"Если график арсположен в неправильном месте (больше, чем холст), то Вы можете выставить необходимые параметры отображения графа в настройках виджета.",
-        "history":"История",
-        "current":"Текущие",
-        "additional":"Дополнительные",
-        "left_arrow":"стрелка влево",
-        "right_arrow":"стрелка вправо",
-        "top_arrow":"стрелка вверх",
-        "bottom_arrow":"стрелка вниз",
-        "or":"или",
-        "funcs":"Функции",
-        "widget_is_developed":"Виджет разработан ",
-        "if_you_want_to":"Если вы хотите сообщить о проблеме, внести предложение или задать некоторые вопросы, то можете связаться со мной через электронную почту:",
-        "if_you_want_to_change":"Если вы хотите изменить дизайн, обращайтесь по адресу:",
-        "set_of_def":"Набор определений:",
-        "parity":"Равенство:",
-        "zeros":"Нули функции:",
-        "signe":"Знак:",
-        "asympt":"Ассимптоты",
-        "min":"Мин",
-        "ev":"равны",
-        "unev":"не равны",
-        "na":"не определено",
-        "curve_lower":"кривая ниже, чем горизонтальная ассимптота",
-        "curve_higher":"кривая выше, чем горизонтальная ассимптота",
-        "max":"Макс",
-        "no_min":"Нет минимума",
-        "no_max":"Нет максимума",
-        "tool_for":"Анализ функции не надежен на 100%. Не забывайте проверить результат анализа перед их использованием.",
-        "ah_left":"ГА слева:",
-        "ah_right":"ГА справа:",
-        "av":"ВА:",
-        "options_saved":"Настройки сохранены!",
-        "cur_version":"Текущая версия:",
-        "last_version":"Последняя он-лайн версия:",
-        "using_web":"Этот виджет доступен для использования на сайте:",
-        "show_saved":"Теперь параметры будут сохранены"
-    },
-    "fr":{
-        "fnc":"Fonction: ",
-        "display":"Afficher",
-        "x_axis":"Axe des X de:",
-        "y_axis":"Axe des Y de:",
-        "zoom":"Zoom",
-        "color":"Couleur:",
-        "menus":"Menus",
-        "tools":"Outils",
-        "options":"Options",
-        "help":"Aide",
-        "about":"À propos",
-        "mouse_events":"Action de la souris:",
-        "moving":"Déplacement",
-        "tangente":"Tangente",
-        "point":"Point",
-        "choosing_color":"Choix de la couleur:",
-        "value":"Valeur:",
-        "saturation":"Saturation:",
-        "red":"Rouge:",
-        "green":"Vert:",
-        "blue":"Bleu:",
-        "opacity":"Opacité:",
-        "check":"Valider",
-        "derivative":"Dessiner la dérivée de la fonction:",
-        "square_under_func":"Aire sous la fonction:",
-        "from":"From",
-        "to":"To",
-        "calculate":"Calculer",
-        "draw":"Dessiner",
-        "point_calculate":"Calculer un point de la fonction:",
-        "estimate":"Évaluer",
-        "analysis_of_func":"Analysis of function:",
-        "start_to_analysis":"Démarrer l'étude",
-        "quit":"Fermer",
-        "display_test":"Display the test:",
-        "test":"Test",
-        "widget":"Widget",
-        "widget_options":"Options du widget",
-        "themes_of_widget":"Thème du widget:",
-        "black":"Noir",
-        "white":"Blanc",
-        "control_options":"Gèrer les options:",
-        "save":"Sauvegarder",
-        "load":"Charger",
-        "del":"Supprimer",
-        "save_a_widget_options":"Sauvegarder les options du widget dans les cookies, charger les options depuis les cookies ou supprimer les options actuellement enregistrées.",
-        "auto_update":"Mise à jour automatique à l'ouverture du widget.",
-        "reload_widget":"Recharger le widget",
-        "update":"Mise à jour",
-        "the_graphical":"Méthode d'affichage du graphique:",
-        "lines":"lignes",
-        "points":"points",
-        "image":"image",
-        "zoom_def":"Zoom par défau:",
-        "update_zoom":"Réinitialiser le zoom",
-        "show_grid":"Afficher la grille",
-        "show_axis":"Afficher les axes ",
-        "scale":"Afficher l'échelle ",
-        "thickness":"Épaisseur de la fonction:",
-        "offset_diagram":"Décalage du graphique:",
-        "accuracy_graph":"Précision des calculs du graphique:",
-        "show_the_style":"Style d'affichage:",
-        "surfaces":"surfaces",
-        "points":"points",
-        "reset_display":"Réinitialiser l'affichage",
-        "accuracy_func":"Précision de la fonction:",
-        "use_the_color":"Utilisation des couleurs:",
-        "positive_value":"valeur positive",
-        "negative_value":"valeur négative",
-        "general_value":"valeur générale",
-        "how_it_work":"Fonctionnement",
-        "this_widget_allow":"Ce widget vous permet de dessiner des fonctions mathématiques. Entrez une fonction dans le champ en haut du widget et cliquez sur le bouton \"Afficher\".",
-        "you_can_enter":"Vous pouvez saisir les fonctions mathématiques suivantes:",
-        "basic_operations":"Les opérations de base",
-        "plus":"Addition",
-        "minus":"Soustraction",
-        "multi":"Multiplication",
-        "division":"Division",
-        "mod":"Modulo",
-        "trigonometric":"Les fonctions trigonométriques",
-        "sine":"Sinus",
-        "cosine":"Cosinus",
-        "tangent":"Tangente",
-        "cotangent":"Cotangente",
-        "secant":"Secante",
-        "cosecant":"Cosecante",
-        "arc_sine":"Arcsinus",
-        "arc_cosine":"Arccosinus",
-        "arc_tangent":"Arctangente",
-        "arc_cotangent":"Arccotangente",
-        "hyperbolic_func":"Les fonctions hyperboliques",
-        "hyp_sine":"Sinus hyp",
-        "hyp_cosine":"Cosinus hyp",
-        "hyp_tangent":"Tangente hyp",
-        "hyp_cotangent":"Cotangente hyp",
-        "hyp_secant":"Secante hyp",
-        "hyp_cosecant":"Cosecante hyp",
-        "hyp_arc_sine":"Arcsinus hyp",
-        "hyp_arc_cosine":"Arccosinus hyp",
-        "hyp_arc_tangent":"Arctangente hyp",
-        "hyp_arc_cotangent":"Arccotangente hyp",
-        "square_roots_and_degrees":"Les racines et les puissances",
-        "square_root":"Racine carrée",
-        "degree":"Puissances",
-        "root":"Racines",
-        "variable_x":"Élève x à une puissance y",
-        "root_y":"Racine y d'un nombre x",
-        "exponential":"Les exponentielles et logarithmes",
-        "natural_log":"logarithme naturel",
-        "decimal_log":"logarithme de base",
-        "abs":"La valeur absolue d'un nombre",
-        "rounding":"Les arrondis",
-        "round_nearest":"arrondit à l'entier le plus proche",
-        "round_nearest_big":"arrondit à l'entier supérieur",
-        "round_nearest_small":"arrondit à l'entier inférieur",
-        "consts":"Constantes",
-        "available_const":"Quelques constantes sont aussi disponibles:",
-        "keys":"Touches clavier",
-        "moved_left":"déplacer le graphique à gauche",
-        "moved_top":"déplacer le graphique en haut",
-        "moved_right":"déplacer le graphique à droite",
-        "moved_botom":"déplacer le graphique en bas",
-        "guide":"Guide d'utilisation",
-        "using":"Utilisation",
-        "examples":"Exemples",
-        "other":"Autres",
-        "you_can_view":"Vous pouvez cliquer sur un exemple pour l'afficher. Pensez à ajuster la précision du graphique dans les options si nécessaire",
-        "save_graph":"Enregistrer le graphique",
-        "in_some_browsers":"Dans certains navigateurs, lorsque vous utilisez la méthode d'affichage \"Canvas\", vous pouvez sauvegarder le graphique en cliquant avec le bouton de droite de la souris sur celui-ci et en séléctionnant \"Enregistrer l'image\". Vous pouvez aussi sauvegarder le graphique 3D. ",
-        "offset":"Décalage",
-        "if_graph_isnt":"Si le graphique n'est pas à la bonne place (il dépasse de la zone prévue), ajustez le \"décalage du graphique\" dans le menu des options. Pour Konqueror, il faut utiliser un décalage de x=122 et y=48.",
-        "history":"Historique",
-        "current":"Actuelle",
-        "additional":"Supplémentaires",
-        "left_arrow":"flèche gauche",
-        "right_arrow":"flèche droite",
-        "top_arrow":"flèche haut",
-        "bottom_arrow":"flèche bas",
-        "or":"ou",
-        "funcs":"Fonction",
-        "widget_is_developed":"Widget réalisé par",
-        "if_you_want_to":"Si vous voulez rapporter un bug, avez une suggestion par rapport au widget ou voulez simplement poser une question, merci de me contacter par:",
-        "if_you_want_to_change":"Les images d'arrière-plan du widget on été tirées des thèmes du bureau \"plasma-desktop\" de l'environnement:",
-        "set_of_def":"Ensemble de définition:",
-        "parity":"Parité:",
-        "zeros":"Zéros de la fonction:",
-        "signe":"Signe:",
-        "asympt":"Asymptotes",
-        "min":"Min",
-        "ev":"paire",
-        "unev":"impaire",
-        "na":"aucune",
-        "curve_lower":"courbe au-dessus de l'AH",
-        "curve_higher":"courbe au-dessous de l'AH",
-        "max":"Max",
-        "no_min":"Aucun minimum",
-        "no_max":"Aucun maximum",
-        "tool_for":"L'outil permettant d'étudier les fonctions n'est pas fiable à 100%. Pensez à vérifier les résultats de l'étude avant d'en faire une quelconque utilisation.",
-        "ah_left":"AH gauche:",
-        "ah_right":"AH droite:",
-        "av":"AV:",
-        "options_saved":"Options sauvegardées!",
-        "cur_version":"Version en cours d'utilisation:",
-        "last_version":"Dernière version disponible en ligne:",
-        "using_web":"Ce widget est également utilisable dans un navigateur internet sur le site:",
-        "show_saved":"Options actuellement sauvegardées"
-    }
-};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/Grapheur.wgt/Grapheur.xhtml b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Grapheur.xhtml
new file mode 100644
index 0000000..bfca757
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Grapheur.xhtml
@@ -0,0 +1,1586 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+        <meta name="description" content="Traceur de fonctions mathématiques en JavaScript"/>
+        <meta name="author" content="Yannick Vessaz"/>
+        <meta name="revised" content="2010/09/25"/>
+        <title>Graphics</title>
+        <link rel="stylesheet" type="text/css" href="Style/default.css"/>
+        <script type="text/javascript" src="JavaScript/ColorPicker.js"></script>        
+        <script type="text/javascript" src="JavaScript/Interface.js"></script>
+        <script type="text/javascript" src="JavaScript/Outils.js"></script>
+        <script type="text/javascript" src="JavaScript/AffichageStandard.js"></script>
+        <script type="text/javascript" src="JavaScript/Affichage3D.js"></script>
+        <script type="text/javascript" src="JavaScript/AffichageUniboard.js"></script>
+        <script type="text/javascript" src="JavaScript/AffichageXPM.js"></script>
+        <script type="text/javascript" src="JavaScript/languages.js"></script>
+        <script type="text/javascript" src="JavaScript/Etude.js"></script>
+        <script type="text/javascript" src="JavaScript/Sauvegardes.js"></script>
+        <script src="JavaScript/jquery-1.3.2.min.js" type="text/javascript"></script>
+        <script src="JavaScript/jquery.disable.text.select.js" type="text/javascript"></script>
+        <script type="text/javascript">
+// <![CDATA[
+        // --- Variables nécessaires au fonctionnement du widget ---
+                var lang = ""; //locale language
+                var loadingFlag = false
+                var largeur = 500
+                var hauteur = 400
+                var graphique = ""
+                var image = ""
+                var tableau = new Array()
+                var ligne = new Array()
+                var j = 0
+
+                var interdit = new Array(";", "interdit", "'", '"', "eval", "new", "sankore", "=", "document", "window", "alert")
+
+                var menuActuel = ""
+                var mouseDown = false
+                var outil = "point"
+
+                var pointX = new Array()
+                var pointY = new Array()
+                var pente = new Array()
+                var pente2 = new Array()
+                var precision = 0.02
+
+                var couleurFonction = "rgb(193,255,0)"
+                var r = 255
+                var g = 0
+                var b = 0
+                var couleurEchelle = "rgba(255,255,255,0.8)"
+                var couleurGrille = "rgba(255,255,255,0.1)"
+                var couleurAxes = "rgba(0,0,0,0.5)"
+
+                var decalageX = 0
+                var decalageY = 0
+
+                var lineWidth = 3
+                
+                if(window.sankore){
+                    try{
+                        lang = sankore.locale().substr(0,2);
+                        sankoreLang[lang].display;
+                    } catch(e){
+                        lang = "en";
+                    }
+                } else 
+                    lang = "en";
+                
+                $(document).ready(function(){
+                    
+                    if(window.sankore){
+                        
+                        $("#inputEq").val(sankore.preference("functionData", ""));
+                                                
+                        $("#inputTeinte").val(sankore.preference("functionColor",""));
+                        $("#inputValeur").val(sankore.preference("functionValue","0"));                        
+                        $("#inputSaturation").val(sankore.preference("functionSaturation","0"));
+                        $("#inputRouge").val(sankore.preference("functionRed","255"));
+                        $("#inputVert").val(sankore.preference("functionGreen","0"));
+                        $("#inputBleu").val(sankore.preference("functionBlue","0"));
+                        $("#inputOpacity").val(sankore.preference("functionOpacity","1"));
+                        idColor = sankore.preference("functionColorId","");                        
+                        actualiserGraph();
+                        
+                        if(sankore.preference("simplefx","0") == 1)
+                            $("#checkDerivee").attr("checked", "checked");
+                        else
+                            $("#checkDerivee").removeAttr('checked');
+                        if(sankore.preference("hardfx","0") == 1)
+                            $("#checkDerivee2").attr("checked", "checked");
+                        else
+                            $("#checkDerivee2").removeAttr('checked');
+                        actualiserGraph();
+                        
+                        $("#aireG").val(sankore.preference("squareUnderFrom","-5"));
+                        $("#aireD").val(sankore.preference("squareUnderTo","5"));
+                        calculerAire();
+                        
+                        $("#inputX").val(sankore.preference("calculateThePoint","0"));
+                        execute($("#inputEq").val());
+                        
+                        if(sankore.preference("checkboxDraw","0") == 1)
+                            $("#checkAire").attr("checked", "checked");
+                        else
+                            $("#checkAire").removeAttr('checked');
+                        actualiserGraph();
+                        
+                        $("#selectTheme").val(sankore.preference("selectedTheme","noir"));
+                        changerTheme($("#selectTheme").val());
+                        
+                        $("#selectMethodeAffichage").val(sankore.preference("graphicalMethodDisplaying", "canvas"));
+                        $("#zoomDefaut").val(sankore.preference("defaultZoom", "4"));
+                        reinitialiserZoom($("#zoomDefaut").val());
+                        
+                        if(sankore.preference("showGrid","1") == 1)
+                            $("#checkGrille").attr("checked", "checked");
+                        else
+                            $("#checkGrille").removeAttr('checked');
+                        if(sankore.preference("showAxis","1") == 1)
+                            $("#checkAxes").attr("checked", "checked");
+                        else
+                            $("#checkAxes").removeAttr('checked');
+                        if(sankore.preference("showScale","1") == 1)
+                            $("#checkEchelle").attr("checked", "checked");
+                        else
+                            $("#checkEchelle").removeAttr('checked');
+                        actualiserGraph();
+                        
+                        $("#inputTaille").val(sankore.preference("thickness", "3"));
+                        actualiserGraph();
+                        
+                        $("#inputDecalageX").val(sankore.preference("offsetDiagrammX", "0"));
+                        decalageX = parseFloat($("#inputDecalageX").val())
+                        $("#inputDecalageY").val(sankore.preference("offsetDiagrammY", "0"));
+                        decalageY = parseFloat($("#inputDecalageY").val())
+                        
+                        $("#inputPrecision").val(sankore.preference("accuracyGraph", "0.02"));
+                        precision = parseFloat($("#inputPrecision").val());
+                        
+                        $("#selectAffichage3D").val(sankore.preference("styleOf3DShow", "surfaces"));
+                        reinitialiserZoom(5);
+                        
+                        $("#inputPrecision3D").val(sankore.preference("accuracyFunction", "0.2"));
+                        precisionFonction3D = parseFloat($("#inputPrecision3D").val());
+                        
+                        $("#selectRouge3D").val(sankore.preference("redColor", "plus"));
+                        $("#selectVert3D").val(sankore.preference("greenColor", "moins"));
+                        $("#selectBleu3D").val(sankore.preference("blueColor", "tout"));
+                        checkCouleurs3D();
+                        
+                        $("#couleur3Dgenerale").val(sankore.preference("3DGeneralColor", "0"));       
+                        checkCouleurs3D();
+                        
+                        actualiserGraph();
+                        
+                        $("#borneXGauche").val(sankore.preference("xAxisFrom", "-5"));
+                        $("#borneXDroite").val(sankore.preference("xAxisTo", "5"));
+                        $("#borneYGauche").val(sankore.preference("yAxisFrom", "-5"));
+                        $("#borneYDroite").val(sankore.preference("yAxisTo", "5"));
+                        
+                        var tempArray;
+                        if(sankore.preference("graphmeHistory",""))
+                                tempArray = sankore.preference("graphmeHistory","").split(",");
+                        if(sankore.preference("graphmeHistory","")){
+                            for(i in tempArray)
+                                evaluer(tempArray[i]);                            
+                        }
+                        actualiserGraph();
+                        loadingFlag = true;
+                        
+                        ////////////////////////////////////// languages suppot
+                        
+                        document.getElementById("texteFonction").innerHTML = sankoreLang[lang].fnc;
+                        $("#xAxis").html(sankoreLang[lang].x_axis);
+                        $("#yAxis").html(sankoreLang[lang].y_axis);
+                        $("#scaleZoom").html(sankoreLang[lang].zoom);
+                        $("#graphColor").html(sankoreLang[lang].color);
+                        $("#menuCouleur .contenuMenu em").text(sankoreLang[lang].choosing_color);
+                        $("#colorValues tr").eq(0).find("td").eq(0).html(sankoreLang[lang].color + ":");
+                        $("#colorValues tr").eq(1).find("td").eq(0).html(sankoreLang[lang].value);
+                        $("#colorValues tr").eq(2).find("td").eq(0).html(sankoreLang[lang].saturation);
+                        $("#colorValues tr").eq(3).find("td").eq(0).html(sankoreLang[lang].red);
+                        $("#colorValues tr").eq(4).find("td").eq(0).html(sankoreLang[lang].green);
+                        $("#colorValues tr").eq(5).find("td").eq(0).html(sankoreLang[lang].blue);
+                        $("#colorValues tr").eq(6).find("td").eq(0).html(sankoreLang[lang].opacity);
+                        $("#menuOutils .contenuMenu h3").eq(0).text(sankoreLang[lang].tools);
+                        $("#menuOutils .contenuMenu span").each(function(){
+                            switch($(this).html()){
+                                case "Mouse events:":
+                                    $(this).html(sankoreLang[lang].mouse_events);
+                                    break;
+                                case "Derivative:":
+                                    $(this).html(sankoreLang[lang].derivative);
+                                    break;
+                                case "Square under function:":
+                                    $(this).html(sankoreLang[lang].square_under_func);
+                                    break;
+                                case "Calculate the point on the function:":
+                                    $(this).html(sankoreLang[lang].point_calculate);
+                                    break;
+                                case "Analysis of function:":
+                                    $(this).html(sankoreLang[lang].analysis_of_func);
+                                    break;
+                                case "Display test:":
+                                    $(this).html(sankoreLang[lang].display_test);
+                                    break;
+                                case "From":
+                                    $(this).html(sankoreLang[lang].from);
+                                    break;
+                                case "to":
+                                    $(this).html(sankoreLang[lang].to);
+                                    break;
+                                default:
+                                    break;
+                            }
+                            return true;
+                        });
+                        $("label[for*='checkAire']").text(sankoreLang[lang].draw);
+                        $("#menuOptions td").eq(0).html(sankoreLang[lang].widget);
+                        $("#menuOptions h3").eq(0).text(sankoreLang[lang].widget_options);
+                        $("#menuOptions2D h3").eq(0).text(sankoreLang[lang].options + " 2D");
+                        $("#menuOptions2D span").each(function(){
+                            switch($(this).html()){
+                                case "The graphical method displaying:":
+                                    $(this).html(sankoreLang[lang].the_graphical);
+                                    break;
+                                case "Zoom default:":
+                                    $(this).html(sankoreLang[lang].zoom_def);
+                                    break;
+                                case "Thickness:":
+                                    $(this).html(sankoreLang[lang].thickness);
+                                    break;
+                                case "Offset diagram:":
+                                    $(this).html(sankoreLang[lang].offset_diagram);
+                                    break;
+                                case "Accuracy graph:":
+                                    $(this).html(sankoreLang[lang].accuracy_graph);
+                                    break;
+                            }
+                            return true;
+                        });
+                        $("#selectMethodeAffichage option").eq(0).text("canvas (" + sankoreLang[lang].lines + ")")
+                        .next().text("canvas (" + sankoreLang[lang].points + ")")
+                        .next().next().text("svg (1 " + sankoreLang[lang].image + ")");
+                        $("label[for*='checkGrille']").text(sankoreLang[lang].show_grid);
+                        $("label[for*='checkAxes']").text(sankoreLang[lang].show_axis);
+                        $("label[for*='checkEchelle']").text(sankoreLang[lang].scale);
+                        $("#menuOptions3D h3").eq(0).text(sankoreLang[lang].options + " 3D");
+                        $("#menuOptions3D span").each(function(){
+                            switch($(this).html()){
+                                case "Show the style:":
+                                    $(this).html(sankoreLang[lang].show_the_style);
+                                    break;
+                                case "Accuracy function:":
+                                    $(this).html(sankoreLang[lang].accuracy_func);
+                                    break;
+                                case "Use the color":
+                                    $(this).html(sankoreLang[lang].use_the_color);
+                                    break;
+                                case "red:":
+                                    $(this).html(sankoreLang[lang].red);
+                                    break;
+                                case "green:":
+                                    $(this).html(sankoreLang[lang].green);
+                                    break;
+                                case "blue:":
+                                    $(this).html(sankoreLang[lang].blue);
+                                    break;
+                                case "General value:":
+                                    $(this).html(sankoreLang[lang].general_value);
+                                    break;
+                                case "from":
+                                    $(this).html(sankoreLang[lang].from);
+                                    break;
+                                case "to":
+                                    $(this).html(sankoreLang[lang].to);
+                                    break;
+                            }
+                            return true;
+                        });
+                        
+                        $("#selectAffichage3D option").eq(0).text(sankoreLang[lang].surfaces)
+                        .next().text(sankoreLang[lang].points);
+                        
+                        $("#selectRouge3D option").eq(0).text(sankoreLang[lang].positive_value)
+                        .next().text(sankoreLang[lang].negative_value)
+                        .next().text(sankoreLang[lang].general_value);
+                        
+                        $("#selectVert3D option").eq(0).text(sankoreLang[lang].negative_value)
+                        .next().text(sankoreLang[lang].positive_value)
+                        .next().text(sankoreLang[lang].general_value);
+                        
+                        $("#selectBleu3D option").eq(0).text(sankoreLang[lang].general_value)
+                        .next().text(sankoreLang[lang].positive_value)
+                        .next().text(sankoreLang[lang].negative_value);
+                        
+                        $("#menuAide .ongletMenu td, #menuAideExemples .ongletMenu td, #menuAideAutres .ongletMenu td").each(function(){
+                            switch($(this).html()){
+                                case "Using":
+                                    $(this).html(sankoreLang[lang].using);
+                                    break;
+                                case "Examples":
+                                    $(this).html(sankoreLang[lang].examples);
+                                    break;
+                                case "Other":
+                                    $(this).html(sankoreLang[lang].other);
+                                    break;
+                            }
+                        });
+                        
+                        $("#menuAide h1").each(function(){
+                            switch($(this).html()){
+                                case "How it work.":
+                                    $(this).html(sankoreLang[lang].how_it_work);
+                                    break;
+                                case "Constants":
+                                    $(this).html(sankoreLang[lang].consts);
+                                    break;
+                                case "Keyboard keys":
+                                    $(this).html(sankoreLang[lang].keys);
+                                    break;
+                            }
+                            return true;
+                        });
+                        
+                        $("#menuAide h2").each(function(){
+                            switch($(this).html()){
+                                case "Basic operations":
+                                    $(this).html(sankoreLang[lang].basic_operations);
+                                    break;
+                                case "Trigonometric functions":
+                                    $(this).html(sankoreLang[lang].trigonometric);
+                                    break;
+                                case "Hyperbolic functions":
+                                    $(this).html(sankoreLang[lang].hyperbolic_func);
+                                    break;
+                                case "Square roots and degrees":
+                                    $(this).html(sankoreLang[lang].square_roots_and_degrees);
+                                    break;
+                                case "Exponential and logarithm":
+                                    $(this).html(sankoreLang[lang].exponential);
+                                    break;
+                                case "Absolute number value":
+                                    $(this).html(sankoreLang[lang].abs);
+                                    break;
+                                case "Rounding":
+                                    $(this).html(sankoreLang[lang].rounding);
+                                    break;
+                            }
+                            return true;
+                        });
+                        
+                        $("#menuAide span").each(function(){
+                            switch($(this).html()){
+                                case "This widget allow to draw mathematical function. Enter function in the field in the top part of widget and press \"Show\".":
+                                    $(this).html(sankoreLang[lang].this_widget_allow);
+                                    break;
+                                case "You can enter following mathematical function:":
+                                    $(this).html(sankoreLang[lang].you_can_enter);
+                                    break;
+                                case "Plus":
+                                    $(this).html(sankoreLang[lang].plus);
+                                    break;
+                                case "Minus":
+                                    $(this).html(sankoreLang[lang].minus);
+                                    break;
+                                case "Multiplication":
+                                    $(this).html(sankoreLang[lang].multi);
+                                    break;
+                                case "Division":
+                                    $(this).html(sankoreLang[lang].division);
+                                    break;
+                                case "Mod":
+                                    $(this).html(sankoreLang[lang].mod);
+                                    break;
+                                case "Sine":
+                                    $(this).html(sankoreLang[lang].sine);
+                                    break;
+                                case "Cosine":
+                                    $(this).html(sankoreLang[lang].cosine);
+                                    break;
+                                case "Tangent":
+                                    $(this).html(sankoreLang[lang].tangent);
+                                    break;
+                                case "Cotangent":
+                                    $(this).html(sankoreLang[lang].cotangent);
+                                    break;
+                                case "Secant":
+                                    $(this).html(sankoreLang[lang].secant);
+                                    break;
+                                case "Cosecant":
+                                    $(this).html(sankoreLang[lang].cosecant);
+                                    break;
+                                case "Arc sine":
+                                    $(this).html(sankoreLang[lang].arc_sine);
+                                    break;
+                                case "Arc cosine":
+                                    $(this).html(sankoreLang[lang].arc_cosine);
+                                    break;
+                                case "Arc tangent":
+                                    $(this).html(sankoreLang[lang].arc_tangent);
+                                    break;
+                                case "Arc cotangent":
+                                    $(this).html(sankoreLang[lang].arc_cotangent);
+                                    break;
+                                case "Hyperbolic sine":
+                                    $(this).html(sankoreLang[lang].hyp_sine);
+                                    break;
+                                case "Hyperbolic cosine":
+                                    $(this).html(sankoreLang[lang].hyp_cosine);
+                                    break;
+                                case "Hyperbolic tangent":
+                                    $(this).html(sankoreLang[lang].hyp_tangent);
+                                    break;
+                                case "Hyperbolic cotangent":
+                                    $(this).html(sankoreLang[lang].hyp_cotangent);
+                                    break;
+                                case "Hyperbolic secant":
+                                    $(this).html(sankoreLang[lang].hyp_secant);
+                                    break;
+                                case "Hyperbolic cosecant":
+                                    $(this).html(sankoreLang[lang].hyp_cosecant);
+                                    break;
+                                case "Hyperbolic arc sine":
+                                    $(this).html(sankoreLang[lang].hyp_arc_sine);
+                                    break;
+                                case "Hyperbolic arc cosine":
+                                    $(this).html(sankoreLang[lang].hyp_arc_cosine);
+                                    break;
+                                case "Hyperbolic arc tangent":
+                                    $(this).html(sankoreLang[lang].hyp_arc_tangent);
+                                    break;
+                                case "Hyperbolic arc cotangent":
+                                    $(this).html(sankoreLang[lang].hyp_arc_cotangent);
+                                    break;
+                                case "Square root":
+                                    $(this).html(sankoreLang[lang].square_root);
+                                    break;
+                                case "Degree":
+                                    $(this).html(sankoreLang[lang].degree);
+                                    break;
+                                case "Root":
+                                    $(this).html(sankoreLang[lang].root);
+                                    break;
+                                case "Variable x to the power y":
+                                    $(this).html(sankoreLang[lang].variable_x);
+                                    break;
+                                case "Root y of x":
+                                    $(this).html(sankoreLang[lang].root_y);
+                                    break;
+                                case "Natural logarithm":
+                                    $(this).html(sankoreLang[lang].natural_log);
+                                    break;
+                                case "Decimal logarithm":
+                                    $(this).html(sankoreLang[lang].decimal_log);
+                                    break;
+                                case "rounding to the nearest whole number":
+                                    $(this).html(sankoreLang[lang].round_nearest);
+                                    break;
+                                case "rounding to the nearest whole number in a big way":
+                                    $(this).html(sankoreLang[lang].round_nearest_big);
+                                    break;
+                                case "rounding to the nearest whole number the smaller side":
+                                    $(this).html(sankoreLang[lang].round_nearest_small);
+                                    break;
+                                case "Also are available some constants:":
+                                    $(this).html(sankoreLang[lang].available_const);
+                                    break;
+                                case "reset widget":
+                                    $(this).html(sankoreLang[lang].reload_widget);
+                                    break;
+                                case "left arrow":
+                                    $(this).html(sankoreLang[lang].left_arrow);
+                                    break;
+                                case "top arrow":
+                                    $(this).html(sankoreLang[lang].top_arrow);
+                                    break;
+                                case "right arrow":
+                                    $(this).html(sankoreLang[lang].right_arrow);
+                                    break;
+                                case "bottom arrow":
+                                    $(this).html(sankoreLang[lang].bottom_arrow);
+                                    break;
+                                case "graph will be moved left":
+                                    $(this).html(sankoreLang[lang].moved_left);
+                                    break;
+                                case "graph will be moved top":
+                                    $(this).html(sankoreLang[lang].moved_top);
+                                    break;
+                                case "graph will be moved right":
+                                    $(this).html(sankoreLang[lang].moved_right);
+                                    break;
+                                case "graph will be moved bottom":
+                                    $(this).html(sankoreLang[lang].moved_bottom);
+                                    break;
+                                case "or":
+                                    $(this).html(sankoreLang[lang].or);
+                                    break;
+                            }
+                            return true;
+                        });
+                        
+                        $("#menuAideExemples h1").each(function(){
+                            if($(this).text() == "Functions 2D")
+                                $(this).text(sankoreLang[lang].funcs + " 2D");
+                            else
+                                $(this).text(sankoreLang[lang].funcs + " 3D");
+                        });
+                    
+                        $("#menuAideExemples span").eq(0).html("(" + sankoreLang[lang].you_can_view + ")");
+                        
+                        $("#menuAideAutres h4").eq(0).text(sankoreLang[lang].save_graph);
+                        $("#menuAideAutres h4").eq(1).text(sankoreLang[lang].offset);
+                        $("#menuAideAutres span").eq(0).text(sankoreLang[lang].in_some_browsers);
+                        $("#menuAideAutres span").eq(1).text(sankoreLang[lang].if_graph_isnt);
+                        $("#credits h3").eq(0).text(sankoreLang[lang].widget_is_developed);
+                        $("#menuCredits .texteSecondaire span").eq(0).html(sankoreLang[lang].if_you_want_to);
+                        $("#menuCredits .texteSecondaire span").eq(1).html(sankoreLang[lang].if_you_want_to_change);
+                        $("#menuFonctions td").eq(0).text(sankoreLang[lang].funcs);
+                        $("#menuFonctions td").eq(1).text(sankoreLang[lang].history);
+                        $("#menuFonctions em").eq(0).text(sankoreLang[lang].current);
+                        $("#menuFonctions em").eq(1).text(sankoreLang[lang].additional);
+                        $("#menuHistorique td").eq(0).text(sankoreLang[lang].funcs);
+                        $("#menuHistorique td").eq(1).text(sankoreLang[lang].history);
+                        
+                        $("#menuEtude h3").text(sankoreLang[lang].analysis_of_func);
+                        $("#menuEtude span").each(function(){
+                            switch($(this).html()){
+                                case "Set of definitions:":
+                                    $(this).html(sankoreLang[lang].set_of_def);
+                                    break;
+                                case "Parity:":
+                                    $(this).html(sankoreLang[lang].parity);
+                                    break;
+                                case "Zeros of functions:":
+                                    $(this).html(sankoreLang[lang].zeros);
+                                    break;
+                                case "Signe:":
+                                    $(this).html(sankoreLang[lang].signe);
+                                    break;
+                                case "Asymptotes":
+                                    $(this).html(sankoreLang[lang].asympt);
+                                    break;
+                                case "AH left:":
+                                    $(this).html(sankoreLang[lang].ah_left);
+                                    break;
+                                case "AH right:":
+                                    $(this).html(sankoreLang[lang].ah_right);
+                                    break;
+                                case "AV:":
+                                    $(this).html(sankoreLang[lang].av);
+                                    break;
+                                case "Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.":
+                                    $(this).html(sankoreLang[lang].tool_for);
+                                    break;
+                            }
+                            return true;
+                        });
+                        
+                        $("#infoSauvegarde h1").text(sankoreLang[lang].options_saved);
+                        $("#mAj h1").text(sankoreLang[lang].update);
+                        $("#mAj span").each(function(){
+                            switch($(this).html()){
+                                case "Current version:":
+                                    $(this).html(sankoreLang[lang].cur_version);
+                                    break;
+                                case "The last on-line version:":
+                                    $(this).html(sankoreLang[lang].last_version);
+                                    break;
+                                case "This widget is available to using on web-site:":
+                                    $(this).html(sankoreLang[lang].using_web);
+                                    break;
+                            }
+                        });
+                        
+                        $("#menuOptions span").each(function(){
+                            switch($(this).html()){
+                                case "Themes of widget:":
+                                    $(this).html(sankoreLang[lang].themes_of_widget);
+                                    break;
+                                case "Control options:":
+                                    $(this).html(sankoreLang[lang].control_options);
+                                    break;
+                                case "Save a widget options in cookies or load an options from cookies or delete a registered options.":
+                                    $(this).html(sankoreLang[lang].save_a_widget_options);
+                                    break;
+                            }
+                            return true;
+                        });
+                        $("#selectTheme option").eq(0).text(sankoreLang[lang].black).next().text(sankoreLang[lang].blue).next().text(sankoreLang[lang].white);
+                        $("input:button").each(function(){
+                            switch($(this).val()){
+                                case "Check":
+                                    $(this).val(sankoreLang[lang].check);
+                                    break;
+                                case "Cancel":
+                                    $(this).val(sankoreLang[lang].quit);
+                                    break;
+                                case "Tools":
+                                    $(this).val(sankoreLang[lang].tools);
+                                    break;
+                                case "Options":
+                                    $(this).val(sankoreLang[lang].options);
+                                    break;
+                                case "Help":
+                                    $(this).val(sankoreLang[lang].help);
+                                    break;
+                                case "About":
+                                    $(this).val(sankoreLang[lang].about);
+                                    break;
+                                case "Moving":
+                                    $(this).val(sankoreLang[lang].moving);
+                                    break;
+                                case "Tangente":
+                                    $(this).val(sankoreLang[lang].tangente);
+                                    break;
+                                case "Point":
+                                    $(this).val(sankoreLang[lang].point);
+                                    break;
+                                case "Calculate":
+                                    $(this).val(sankoreLang[lang].calculate);
+                                    break;
+                                case "Estimate":
+                                    $(this).val(sankoreLang[lang].estimate);
+                                    break;
+                                case "Start to analysis":
+                                    $(this).val(sankoreLang[lang].start_to_analysis);
+                                    break;
+                                case "Test XPM":
+                                    $(this).val(sankoreLang[lang].test + " XPM");
+                                    break;
+                                case "Test SVG":
+                                    $(this).val(sankoreLang[lang].test + " SVG");
+                                    break;
+                                case "Test Canvas":
+                                    $(this).val(sankoreLang[lang].test + " Canvas");
+                                    break;
+                                case "Save":
+                                    $(this).val(sankoreLang[lang].save);
+                                    break;
+                                case "Load":
+                                    $(this).val(sankoreLang[lang].load);
+                                    break;
+                                case "Delete":
+                                    $(this).val(sankoreLang[lang].del);
+                                    break;
+                                case "Display":
+                                    $(this).val(sankoreLang[lang].display);
+                                    break;
+                                case "Reload widget":
+                                    $(this).val(sankoreLang[lang].reload_widget);
+                                    break;
+                                case "Updated":
+                                    $(this).val(sankoreLang[lang].update);
+                                    break;
+                                case "Update zoom":
+                                    $(this).val(sankoreLang[lang].update_zoom);
+                                    break;
+                                case "Reset display":
+                                    $(this).val(sankoreLang[lang].reset_display);
+                                    break;
+                                case "User's guide":
+                                    $(this).val(sankoreLang[lang].guide);
+                                    break;
+                                default:
+                                    break;                                                                                                                                
+                            }
+                            return true;
+                        });
+                    }
+                    
+                    $(document).disableTextSelect();
+                   
+                    $("input, select").mouseover(function(){
+                        $(document).enableTextSelect(); 
+                    });
+                    
+                    $("input, select").mouseout(function(){
+                        $(document).disableTextSelect(); 
+                    });
+                    
+                    $("body").mouseout(function(){
+                        if(window.sankore && loadingFlag){
+                            sankore.setPreference("functionData",$("#inputEq").val());
+                            sankore.setPreference("xAxisFrom",$("#borneXGauche").val());
+                            sankore.setPreference("xAxisTo",$("#borneXDroite").val());
+                            sankore.setPreference("yAxisFrom",$("#borneYGauche").val());
+                            sankore.setPreference("yAxisTo",$("#borneYDroite").val());
+                            sankore.setPreference("functionColor",$("#inputTeinte").val());
+                            sankore.setPreference("functionValue",$("#inputValeur").val());
+                            sankore.setPreference("functionSaturation",$("#inputSaturation").val());
+                            sankore.setPreference("functionRed",$("#inputRouge").val());
+                            sankore.setPreference("functionGreen",$("#inputVert").val());
+                            sankore.setPreference("functionBlue",$("#inputBleu").val());
+                            sankore.setPreference("functionOpacity",$("#inputOpacity").val());
+                            sankore.setPreference("functionColorId", idColor);
+                            
+                            if ($('#checkDerivee').is(":checked"))
+                                sankore.setPreference("simplefx","1");
+                            else
+                                sankore.setPreference("simplefx","0");
+                            if ($('#checkDerivee2').is(":checked"))
+                                sankore.setPreference("hardfx","1");
+                            else
+                                sankore.setPreference("hardfx","0");
+                            
+                            sankore.setPreference("squareUnderFrom", $("#aireG").val());
+                            sankore.setPreference("squareUnderTo", $("#aireD").val());
+                            sankore.setPreference("calculateThePoint", $("#inputX").val());
+                            
+                            if ($('#checkAire').is(":checked"))
+                                sankore.setPreference("checkboxDraw","1");
+                            else
+                                sankore.setPreference("checkboxDraw","0");
+                                                        
+                            sankore.setPreference("selectedTheme", $("#selectTheme").val());
+                            sankore.setPreference("graphicalMethodDisplaying", $("#selectMethodeAffichage").val());
+                            sankore.setPreference("defaultZoom", $("#zoomDefaut").val());
+                            
+                            if ($('#checkGrille').is(":checked"))
+                                sankore.setPreference("showGrid","1");
+                            else
+                                sankore.setPreference("showGrid","0");
+                            if ($('#checkAxes').is(":checked"))
+                                sankore.setPreference("showAxis","1");
+                            else
+                                sankore.setPreference("showAxis","0");
+                            if ($('#checkEchelle').is(":checked"))
+                                sankore.setPreference("showScale","1");
+                            else
+                                sankore.setPreference("showScale","0");
+                            
+                            sankore.setPreference("styleOf3DShow", $("#selectAffichage3D").val());
+                            sankore.setPreference("accuracyFunction", $("#inputPrecision3D").val());
+                            sankore.setPreference("redColor", $("#selectRouge3D").val());
+                            sankore.setPreference("greenColor", $("#selectVert3D").val());
+                            sankore.setPreference("blueColor", $("#selectBleu3D").val());
+                            sankore.setPreference("3DGeneralColor", $("#couleur3Dgenerale").val());
+                            sankore.setPreference("thickness", $("#inputTaille").val());
+                            sankore.setPreference("offsetDiagrammX", $("#inputDecalageX").val());
+                            sankore.setPreference("offsetDiagrammY", $("#inputDecalageY").val());
+                            sankore.setPreference("accuracyGraph", $("#inputPrecision").val());
+                            
+                            if(historique.length)
+                                sankore.setPreference("graphmeHistory", historique.toString());
+                        }
+                    });
+                });
+                //alert(navigator.appName+" ; "+navigator.appVersion+" ; "+navigator.userAgent)
+
+        // ------------- Fonctions du widgets -------------
+        // Lance la procédure pour dessiner la fonction qui se trouve dans l'input en haut du widget.
+        // Permet aussi d'actualiser le graphique.
+                function actualiserGraph(){
+                        evaluer(document.getElementById("inputEq").value)
+                }
+
+        // Cette fonction détermine si la fonction entrée est valide ou non.
+        // Elle retourne "true" si la fonction ne comporte pas de caractères interdits et "false" dans le cas contraire.
+                function check(eq){
+                   for(var i=0; i<interdit.length; i++){
+                      var condition = ""
+                      for(var k=0; k<interdit[i].length; k++){
+                         if(k==0){
+                            condition = condition + "eq.charAt(j) == interdit[i].charAt(0)"
+                         }
+                         else{
+                            condition = condition + "&& eq.charAt(j+"+k+") == interdit[i].charAt("+k+")"
+                         }
+                      }
+                      //alert(interdit[i]+" ; "+condition)
+                      for(var j=0; j<eq.length; j++){
+                         if(eval(condition)){
+                                document.getElementById("spanFctInterdite").innerHTML = interdit[i]
+                                afficherMenu("fctInterdite")
+                            //alert("------- Erreur -------\nImpossible de dessiner la fonction ... \nExpression ou carractère invalide : "+interdit[i]+"")
+                            return false
+                         }
+                      }
+                   }
+                   return true
+                }
+
+        // Cette fonction permet de choisir la méthode d'affichage entre:
+        // 1) Image au format XPM
+        // 2) Affichage directe dans sankore
+        // 3) Autres Méthodes d'affichages (svg ou canvas)
+                function evaluer(eq){
+                        if(check(eq)){
+                                try{
+                                        if(historique[0]!=eq && eq!="1000"){
+                                                for(var i=0;i<historique.length;i++){
+                                                        if(historique[i]==eq){
+                                                                historique.splice(i, 1)
+                                                        }
+                                                }
+                                                historique.unshift(eq)
+                                                actualiserHistorique()
+                                        }
+                                        if(fonction3D){
+                                        dessiner3D(eq)
+                                        }
+                                        else if(document.getElementById("selectMethodeAffichage").value == "xpm"){
+                                        evaluerXPM(eq)
+                                        }
+                                        else if(document.getElementById("selectMethodeAffichage").value == "sankore"){
+                                        evaluerUniboard(eq)
+                                        }
+                                        else if(document.getElementById("selectMethodeAffichage").value == "canvas" || document.getElementById("selectMethodeAffichage").value == "canvas2"){
+                                                evaluerCanvas(eq)
+                                        }
+                                        else{
+                                                evaluerSVG(eq)
+                                        }
+                                }
+                                catch(err){
+                                        afficherMenu("erreurFct")
+                                }
+                        }
+                }
+
+        // ---- Fonctions Mathématiques et constantes ----
+        // (rempalce sin() par Math.sin(), cos() par Math.cos(), tan() par Math.tan(), etc.
+                var pi = 4 * atan(1)
+                var e = exp(1)
+
+                function sin(valeur){
+                   return Math.sin(valeur)
+                }
+                function cos(valeur){
+                   return Math.cos(valeur)
+                }
+                function tan(valeur){
+                   return Math.tan(valeur)
+                }
+                function cot(valeur){
+                   return 1/Math.tan(valeur)
+                }
+                function sec(valeur){
+                   return 1/cos(valeur)
+                }
+                function csc(valeur){
+                   return 1/sin(valeur)
+                }
+
+                function asin(valeur){
+                   return Math.asin(valeur)
+                }
+                function acos(valeur){
+                   return Math.acos(valeur)
+                }
+                function atan(valeur){
+                   return Math.atan(valeur)
+                }
+                function acot(valeur){
+                   return Math.atan(1/valeur)
+                }
+                function asec(valeur){
+                   return Math.acos(1/valeur)
+                }
+                function acsc(valeur){
+                   return Math.asin(1/valeur)
+                }
+
+                var arcsin = asin
+                var arccos = acos
+                var arctan = atan
+                var arccot = acot
+                var arcsec = asec
+                var arccsc = acsc
+
+                function sinh(valeur){
+                   return (Math.exp(valeur)-Math.exp(-valeur))/2
+                }
+                function cosh(valeur){
+                   return (Math.exp(valeur)+Math.exp(-valeur))/2
+                }
+                function tanh(valeur){
+                   return (Math.exp(valeur)-Math.exp(-valeur))/(Math.exp(valeur)+Math.exp(-valeur))
+                }
+                function coth(valeur){
+                   return (Math.exp(valeur)+Math.exp(-valeur))/(Math.exp(valeur)-Math.exp(-valeur))
+                }
+                function sech(valeur){
+                   return 1/cosh(valeur)
+                }
+                function csch(valeur){
+                   return 1/sinh(valeur)
+                }
+
+                function asinh(valeur){
+                   return Math.log(valeur+Math.sqrt(Math.pow(valeur,2)+1))
+                }
+                function acosh(valeur){
+                   return Math.log(valeur+Math.sqrt(Math.pow(valeur,2)-1))
+                }
+                function atanh(valeur){
+                   return Math.log((1+valeur)/(1-valeur))/2
+                }
+                function acoth(valeur){
+                   return Math.log((valeur+1)/(valeur-1))/2
+                }
+
+                var arcsinh = asinh
+                var arccosh = acosh
+                var arctanh = atanh
+                var arccoth = acoth
+
+                function sqrt(valeur){
+                   return Math.sqrt(valeur)
+                }
+                function pow(valeur1, valeur2){
+                   return Math.pow(valeur1, valeur2)
+                }
+                function root(valeur1, valeur2){
+                   if(valeur2%2==1 && valeur1<0){
+                      return -Math.pow(-valeur1, (1/valeur2))
+                   }
+                   else{
+                      return Math.pow(valeur1, (1/valeur2))
+                   }
+                }
+
+                function exp(valeur){
+                   return Math.exp(valeur)
+                }
+                function log(valeur){
+                   return Math.log(valeur)/Math.log(10)
+                }
+                function ln(valeur){
+                   return Math.log(valeur)
+                }
+
+                function abs(valeur){
+                   return Math.abs(valeur)
+                }
+                function sign(valeur){
+                        if(valeur<0){
+                                return -1
+                        }
+                        else if(valeur>0){
+                                return 1
+                        }
+                        else{
+                                return undefined
+                        }
+                }
+
+                function round(valeur){
+                   return Math.round(valeur)
+                }
+                function ceil(valeur){
+                   return Math.ceil(valeur)
+                }
+                function floor(valeur){
+                   return Math.floor(valeur)
+                }
+                function random(){
+                   return Math.random()
+                }
+// ]]>
+        </script>
+    </head>
+    <body onload="evaluer(1000);checkCouleurs3D();loadOptions();majAuto()" onkeypress="keyPress(event)">
+        <!-- ..... Haut du Widget ..... -->
+        <span id="haut">
+            <span id="texteFonction">Function: </span><input id="inputEq" onkeypress='if(event.keyCode==13) evaluer(this.value)' onkeyup="document.getElementById('fonctionActuelle').innerHTML = this.value"/> 
+            <input type="button" onclick='evaluer(document.getElementById("inputEq").value)' value="Display"/><input type="button" style="width:21px;" onclick="menuFonctions()" value="+"/>
+        </span>
+        <!--<div id="miniMax" onclick="miniMax()">-</div>  ▶▼ -->
+        <div id="boutonAgrandir" class="miniBouton" onclick="agrandirAffichage()">^</div>
+        <!--<div id="boutonFermer" class="miniBouton" onclick="close()"></div>-->
+        <br/>
+
+        <!-- ..... Millieu du Widget ..... -->
+        <!-- Zone d'affichage -->
+        <div id="affichage" onmousedown="sourisDown()" onmouseup="sourisUp()" onmousemove="sourisMove(event)" ondblclick="doubleClick(event.ctrlKey)"></div>
+        <!-- Zone de boutons gauche -->
+        <div id="gauche">
+            <span id="xAxis">X-axis:</span> <br/>
+            <input id="borneXGauche" class="smallInput" value="-5" onkeypress='if(event.keyCode==13) actualiserGraph()'/> ... <input id="borneXDroite" class="smallInput" value="5" onkeypress='if(event.keyCode==13) actualiserGraph()'/> <br/>
+            <span id="yAxis">Y-axis:</span> <br/>
+            <input id="borneYGauche" class="smallInput" value="-5" onkeypress='if(event.keyCode==13) actualiserGraph()'/> ... <input id="borneYDroite" class="smallInput" value="5" onkeypress='if(event.keyCode==13) actualiserGraph()'/>
+            <br/><span id="scaleZoom">Zoom:</span> <br/>
+            <input type="button" style="width:45%;" onclick='zoom(1.25)' value="-"/><input type="button" style="width:45%; position:relative; left: 9px;" onclick='zoom(0.8)' value="+"/><br/><br/>
+            <span id="graphColor">Color:</span> <br/>
+            <div id="buttonColor" title="couleurFonction" onclick="colorPicker(this.id); afficherMenu('menuCouleur')"></div>
+            <br/><br/>
+            <hr/>
+            <br/>
+            Menus:
+            <input type="button" class="boutonGauche" onclick='document.getElementById("etudeFct").innerHTML = document.getElementById("inputEq").value;afficherMenu("menuOutils")' value="Tools"/>
+            <input type="button" class="boutonGauche" onclick='afficherMenu("menuOptions")' value="Options"/>
+            <input type="button" class="boutonGauche" onclick='afficherMenu("menuAide")' value="Help"/>
+            <input type="button" class="boutonGauche" onclick='afficherMenu("menuCredits")' value="About"/>
+
+            <!-- ..... Menus ..... -->
+            <div id="menu" class="menu">
+                <div id="contenuMenu" class="contenuMenu"></div>
+                <div class="barreBasMenu">
+                    <input type="button" onclick='cacherMenu()' value="Cancel"/>
+                </div>
+            </div>
+        </div>
+        <div id="gauche3D">
+            <input type="button" class="boutonGauche3D" onclick='afficherMenu("menuCredits")' value="About"/>
+            <input type="button" class="boutonGauche3D" onclick='afficherMenu("menuAide")' value="Help"/>
+            <input type="button" class="boutonGauche3D" onclick='afficherMenu("menuOptions")' value="Options"/>
+            <input type="button" style="width:30px;" onclick='zoom3D(0.8)' value="-"/><input type="button" style="width:30px;" onclick='zoom3D(1.25)' value="+"/>
+        </div>
+
+        <!-- Options -->
+        <div id="menuOptions" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuOptions")'>Widget</td>
+                    <td onclick='afficherMenu("menuOptions2D")'>2D</td>
+                    <td onclick='afficherMenu("menuOptions3D")'>3D</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <h3>Widget options</h3>
+
+                <span>Themes of widget:</span> <select id="selectTheme" onchange="changerTheme(this.value)">
+                    <option value="noir">Black</option>
+                    <option value="bleu">Blue</option>
+                    <option value="blanc">White</option>
+                </select><br/>
+                <br/><br/><br/>
+                <span class="gras">Control options:</span><br/>
+                <input type="button" class="boutonSauvegarde" onclick="saveOptions()" value="Save"/><input type="button" class="boutonSauvegarde" onclick="loadOptions()" value="Load"/> <input class="boutonSauvegarde2" type="button" onclick="delOptions()" value="Delete"/><input class="boutonSauvegarde2" type="button" onclick="alertOptions()" value="Display"/><br/>
+                <span class="texteSecondaire">Save a widget options in cookies or load an options from cookies or delete a registered options.</span>
+                <br/>
+                <div id="cacheCookies"><br/><br/><h1>Cookies are disabled. You cannot save an options...</h1></div>
+                <div id="cacheMaJ">You are using the last version of this widget.</div>
+                <input type="button" onclick='reset()' value="Reload widget" style="position:absolute; bottom:20px; width:140px; height:32px;"/>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick="cacherMenu(); actualiserGraph()" value="Check"/></div>
+        </div>
+
+        <div id="menuOptions2D" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td onclick='afficherMenu("menuOptions")'>Widget</td>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuOptions2D")'>2D</td>
+                    <td onclick='afficherMenu("menuOptions3D")'>3D</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <h3>Options 2D</h3>
+                <span>The graphical method displaying:</span><select id="selectMethodeAffichage">
+                    <option value="canvas">canvas (lines)</option>
+                    <option value="canvas2">canvas (points)</option>
+                    <option value="svg">svg</option>
+                    <option value="svg2">svg (1 image)</option>
+                    <option value="xpm">xpm</option>
+                    <option value="sankore">sankore</option>
+                </select> <br/>
+                <span>Zoom default:</span> 
+                <input value="5" class="smallInput" id="zoomDefaut"/>
+                <input type="button" onclick='reinitialiserZoom(document.getElementById("zoomDefaut").value)' value="Update zoom"/> <br/>
+                <br/>
+                <input type="checkbox" id="checkGrille" checked="true" onclick="actualiserGraph()"/><label for="checkGrille">Show grid</label> <br/>
+                <input type="checkbox" id="checkAxes" checked="true" onclick="actualiserGraph()"/><label for="checkAxes">Show axis</label> <br/>
+                <input type="checkbox" id="checkEchelle" checked="true" onclick="actualiserGraph()"/><label for="checkEchelle">Scale</label> <br/>
+                <span>Thickness:</span> <input id="inputTaille" class="smallInput" value="3" onkeypress='if(event.keyCode==13) actualiserGraph()' style=""/>
+                <div class="boutonPlus" type="button" onclick="boutonPlus('inputTaille', 1); actualiserGraph()">+</div><div class="boutonMoins" type="button" onclick="boutonMoins('inputTaille', 1); actualiserGraph()">-</div> <br/>
+                <br/>
+                <span>Offset diagram:</span> 
+                x=<input value="0" class="smallInput" id="inputDecalageX" onkeyup="decalageX = parseFloat(this.value)"/>
+                y=<input value="0" class="smallInput" id="inputDecalageY" onkeyup="decalageY = parseFloat(this.value)"/>
+                <br/>
+                <span>Accuracy graph:</span>
+                <input value="0.02" class="smallInput" id="inputPrecision" onkeyup="precision = parseFloat(this.value)"/>
+                <div class="boutonPlus" type="button" onclick="boutonPlus('inputPrecision', 0.01); precision = parseFloat(document.getElementById('inputPrecision').value); actualiserGraph()">+</div><div class="boutonMoins" type="button" onclick="boutonMoins('inputPrecision', 0.01); precision = parseFloat(document.getElementById('inputPrecision').value); actualiserGraph()">-</div> <br/>
+                <br/>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu(); actualiserGraph()' value="Check"/></div>
+        </div>
+
+        <div id="menuOptions3D" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td onclick='afficherMenu("menuOptions")'>Widget</td>
+                    <td onclick='afficherMenu("menuOptions2D")'>2D</td>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuOptions3D")'>3D</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <h3>Options 3D</h3>
+                <span>Show the style:</span> 
+                <select id="selectAffichage3D">
+                    <option value="surfaces"> surfaces </option>
+                    <option value="points"> points </option>
+                </select> <input type="button" onclick='reinitialiserZoom(5)' value="Reset display"/> <br/>
+                <br/>
+                <span>Accuracy function:</span> <input value="0.2" class="smallInput" id="inputPrecision3D" onkeyup="precisionFonction3D = parseFloat(this.value)"/>
+                <div class="boutonPlus" type="button" onclick="boutonPlus('inputPrecision3D', 0.1); precisionFonction3D = parseFloat(document.getElementById('inputPrecision3D').value); actualiserGraph()">+</div><div class="boutonMoins" type="button" onclick="boutonMoins('inputPrecision3D', 0.1); precisionFonction3D = parseFloat(document.getElementById('inputPrecision3D').value); actualiserGraph()">-</div> <br/>
+                <br/>
+                <span>Use the color:</span><br/>
+                <span>red:</span>
+                <select onchange="checkCouleurs3D()" id="selectRouge3D">
+                    <option value="plus">positive value</option>
+                    <option value="moins">negative value</option>
+                    <option value="tout">general value</option>
+                </select>
+                <br/>
+                <span>green:</span>
+                <select onchange="checkCouleurs3D()" id="selectVert3D">
+                    <option value="moins">negative value</option>
+                    <option value="plus">positive value</option>					
+                    <option value="tout">general value</option>
+                </select>
+                <br/>
+                <span>blue:</span>
+                <select onchange="checkCouleurs3D()" id="selectBleu3D">
+                    <option value="tout">general value</option>
+                    <option value="plus">positive value</option>
+                    <option value="moins">negative value</option>					
+                </select>
+                <br/>
+                <span>General value:</span> <input class="smallInput" id="couleur3Dgenerale" type="texte" value="0" onkeyup="checkCouleurs3D()"/> (<span>from</span> 0 <span>to</span> 255)
+                <br/>
+                <span id="apercuCouleur3D"></span>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu(); actualiserGraph()' value="Check"/></div>
+        </div>
+
+        <!-- Aide -->
+        <div id="menuAide" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuAide")'>Using</td>
+                    <td onclick='afficherMenu("menuAideExemples")'>Examples</td>
+                    <td onclick='afficherMenu("menuAideAutres")'>Other</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <h1>How it work.</h1>
+                <p><span>This widget allow to draw mathematical function. Enter function in the field in the top part of widget and press "Show".</span></p>
+                <p><span>You can enter following mathematical function:</span><br/>
+                    <h2>Basic operations</h2>
+                    <ul>
+                        <li><span>Plus</span> -> <span class="gras">+</span></li>
+                        <li><span>Minus</span> -> <span class="gras">-</span></li>
+                        <li><span>Multiplication</span> -> <span class="gras">*</span></li>
+                        <li><span>Division</span> -> <span class="gras">/</span></li>
+                        <li><span>Mod</span> -> <span class="gras">%</span></li>
+                    </ul>
+                    <h2>Trigonometric functions</h2>
+                    <ul>
+                        <li><span>Sine</span> -> <span class="gras">sin(x)</span></li>
+                        <li><span>Cosine</span> -> <span class="gras">cos(x)</span></li>
+                        <li><span>Tangent</span> -> <span class="gras">tan(x)</span></li>
+                        <li><span>Cotangent</span> -> <span class="gras">cot(x)</span></li>
+                        <li><span>Secant</span> -> <span class="gras">sec(x)</span></li>
+                        <li><span>Cosecant</span> -> <span class="gras">csc(x)</span></li>
+                    </ul>
+                    <ul>
+                        <li><span>Arc sine</span> -> <span class="gras">arcsin(x)</span> <span>or</span> <span class="gras">asin(x)</span></li>
+                        <li><span>Arc cosine</span> -> <span class="gras">arccos(x)</span> <span>or</span> <span class="gras">acos(x)</span></li>
+                        <li><span>Arc tangent</span> -> <span class="gras">arctan(x)</span> <span>or</span> <span class="gras">atan(x)</span></li>
+                        <li><span>Arc cotangent</span> -> <span class="gras">arccot(x)</span> <span>or</span> <span class="gras">acot(x)</span></li>
+                    </ul>
+                    <h2>Hyperbolic functions</h2>
+                    <ul>
+                        <li><span>Hyperbolic sine</span> -> <span class="gras">sinh(x)</span></li>
+                        <li><span>Hyperbolic cosine</span> -> <span class="gras">cosh(x)</span></li>
+                        <li><span>Hyperbolic tangent</span> -> <span class="gras">tanh(x)</span></li>
+                        <li><span>Hyperbolic cotangent</span> -> <span class="gras">coth(x)</span></li>
+                        <li><span>Hyperbolic secant</span> -> <span class="gras">sech(x)</span></li>
+                        <li><span>Hyperbolic cosecant</span> -> <span class="gras">csch(x)</span></li>
+                    </ul>
+                    <ul>
+                        <li><span>Hyperbolic arc sine</span> -> <span class="gras">arcsinh(x)</span> <span>or</span> <span class="gras">asinh(x)</span></li>
+                        <li><span>Hyperbolic arc cosine</span> -> <span class="gras">arccosh(x)</span> <span>or</span> <span class="gras">acosh(x)</span></li>
+                        <li><span>Hyperbolic arc tangent</span> -> <span class="gras">arctanh(x)</span> <span>or</span> <span class="gras">atanh(x)</span></li>
+                        <li><span>Hyperbolic arc cotangent</span> -> <span class="gras">arccoth(x)</span> <span>or</span> <span class="gras">acoth(x)</span></li>
+                    </ul>
+                    <h2>Square roots and degrees</h2>
+                    <ul>
+                        <li><span>Square root</span> -> <span class="gras">sqrt(x)</span></li>
+                        <li><span>Degree</span> -> <span class="gras">pow(x, y)</span> <span class="texteSecondaire">Variable x to the power y</span></li>
+                        <li><span>Root</span> -> <span class="gras">root(x, y)</span> <span class="texteSecondaire">Root y of x</span></li>
+                    </ul>
+                    <h2>Exponential and logarithm</h2>
+                    <ul>
+                        <li>e<span style="vertical-align:super;">x</span> -> <span class="gras">exp(x)</span></li>
+                        <li><span>Natural logarithm</span> -> <span class="gras">ln(x)</span></li>
+                        <li><span>Decimal logarithm</span> -> <span class="gras">log(x)</span></li>
+                    </ul>
+                    <h2>Absolute number value</h2>
+                    <ul>
+                        <li>|x| -> <span class="gras">abs(x)</span></li>
+                    </ul>
+                    <h2>Rounding</h2>
+                    <ul>
+                        <li><span class="gras">round(x)</span> -> <span>rounding to the nearest whole number</span></li>
+                        <li><span class="gras">ceil(x)</span> -> <span>rounding to the nearest whole number in a big way</span></li>
+                        <li><span class="gras">floor(x)</span> -> <span>rounding to the nearest whole number the smaller side</span></li>
+                    </ul>					
+                </p> <br/>
+                <hr/>
+                <h1>Constants</h1>
+                <p><span>Also are available some constants:</span><br/>
+                    <ul>
+                        <li><span class="gras">pi</span> = 4 * atan(1) ≈  3,141592653589793</li>
+                        <li><span class="gras">e</span> = exp(1) ≈ 2.718281828459045</li>
+                    </ul>
+                </p>
+                <br/>
+                <hr/>
+                <h1>Keyboard keys</h1>
+                <p style="font-size:90%;">
+                    esc -> <span>reset widget</span> <br/>
+                    ctrl + <span>left arrow</span> -> <span>graph will be moved left</span><br/>
+                    ctrl + <span>top arrow</span> -> <span>graph will be moved top</span><br/>
+                    ctrl + <span>right arrow</span> -> <span>graph will be moved right</span><br/>
+                    ctrl + <span>bottom arrow</span> -> <span>graph will be moved bottom</span><br/>
+                    <br/>
+                </p>
+                <br/>
+                <input type="button" value="User's guide" onclick="navigateur('Guide_Utilisateur.html')" style="position:absolute;bottom:0px;left:0px;"/>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <div id="menuAideExemples" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td onclick='afficherMenu("menuAide")'>Using</td>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuAideExemples")'>Examples</td>
+                    <td onclick='afficherMenu("menuAideAutres")'>Other</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <span class="texteSecondaire">(You can view example. Do not forget to set accuracy in options if necessary.)</span>
+                <br/><br/>
+                <hr/>
+                <h1>Functions 2D</h1>
+                <p>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = '0.5*x+1' ; actualiserGraph()">0.5*x+1</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'pow(x,2)-3' ; actualiserGraph()">pow(x,2)-3</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = '1/x' ; actualiserGraph()">1/x</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'atan(x)' ; actualiserGraph()">atan(x)</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = '(x+1/x)/1.2' ; actualiserGraph()">(x+1/x)/1.2</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'sin(10*x*x)*0.5' ; actualiserGraph()">sin(10*x*x)*0.5</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'log(pow(x-2,2))' ; actualiserGraph()">log(pow(x-2,2))</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = '(x*x-5*x+5)*exp(x)/5' ; actualiserGraph()">(x*x-5*x+5)*exp(x)/5</span> <br/>
+
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'random()' ; evaluer('random()')">random()</span> <br/>
+                </p>
+                <br/><br/>
+                <hr/>
+                <h1>Functions 3D</h1>
+                <p>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'sin(x)+cos(y)' ; actualiserGraph()">sin(x)+cos(y)</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'sqrt(10-x*x)' ; actualiserGraph()">sqrt(10-x*x)</span> <br/>
+                    <span class="survol" onclick="document.getElementById('inputEq').value = 'atan(x)+atan(y)' ; actualiserGraph()">atan(x)+atan(y)</span> <br/>
+                </p>
+                <br/>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <div id="menuAideAutres" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td onclick='afficherMenu("menuAide")'>Using</td>
+                    <td onclick='afficherMenu("menuAideExemples")'>Examples</td>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuAideAutres")'>Other</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <h4>Save graph</h4>
+                <span>In some browsers when used display method "Canvas" you can save graph by clicking it with right mouse button and selecting "Save image". Also you can save 3D-graphs.</span>
+                <br/><br/>
+                <h4>Offset</h4>
+                <span>If graph isn't in the right place (larger than canvas) then can you set necessary parameters graph displaying in settings menu.</span> 
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <!-- Crédits -->
+        <div id="menuCredits" class="menu">
+            <div class="contenuMenu" style="text-align:justify;">
+                <br/>
+                <table id="credits">
+                    <tr>
+                        <td>
+                            <img src="icon.png"/>
+                            <h3>Widget is developed by</h3> 
+                            Yannick Vessaz <br/>
+                            <a href='mailto:yannick.vessaz at gmail.com'>yannick.vessaz at gmail.com</a>
+                        </td>
+                    </tr>
+                </table>
+                <span class="texteSecondaire">
+                    <br/><br/>
+                    <span>If you want to inform about bug, make a proposal or just ask some questions then you can  contact to me at the following e-mail:</span> <a href='mailto:yannick.vessaz at gmail.com'>e-mail</a>.
+                    <br/><br/>
+                    <span>If you want to change background design then you can contact at following address:</span> <a href="http://kde.org">KDE</a>.
+                </span>
+                <span id="version" class="texteSecondaire" style="position:absolute;bottom:10px;left:15px;">version 1.3</span>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <!-- Outils -->
+        <div id="menuOutils" class="menu">
+            <div class="contenuMenu">
+                <h3 style="margin-top:0px; margin-bottom:15px;">Tools</h3> 
+                <span>Mouse events:</span><br/>
+                <input type="button" class="choixOutil" onclick="choixOutil('deplacement');cacherMenu()" value="Moving"/>
+                <input type="button" class="choixOutil" onclick="choixOutil('tangente');cacherMenu()" value="Tangente"/>
+                <input type="button" class="choixOutil" onclick="choixOutil('point');cacherMenu()" value="Point"/>
+                <br/><br/>
+                <span>Derivative:</span><br/>
+                <label for="checkDerivee"> f'(x) </label><input type="checkbox" id="checkDerivee" onclick="actualiserGraph()"/><label for="checkDerivee2"> f''(x) </label><input type="checkbox" id="checkDerivee2" onclick="actualiserGraph()"/>
+                <br/><br/>
+                <span>Square under function:</span><br/>
+                <span>From</span> <input value="-5" class="smallInput" id="aireG"/> <span>to</span> <input value="5" class="smallInput" id="aireD"/> <input type="button" onclick='calculerAire()' value="Calculate"/> <span id="outputAire"></span>
+                <div style="float: right;"><label for="checkAire">Draw </label><input type="checkbox" id="checkAire" onclick="actualiserGraph()"/></div>
+                <br/><br/>
+                <span>Calculate the point on the function:</span><br/>
+                x=<input value="0" class="smallInput" id="inputX" onkeypress='if(event.keyCode==13) execute(document.getElementById("inputEq").value)'/>
+                <input type="button" onclick='execute(document.getElementById("inputEq").value)' value="Estimate"/>
+                <span id="outputX"></span>
+                <br/><br/>
+                <span>Analysis of function:</span> <br/>
+                f(x) = <span id="etudeFct"></span> <input type="button" value="Start to analysis" onclick='etudier(document.getElementById("inputEq").value);afficherMenu("menuEtude")'/>
+                <br/><br/>
+                <span>Display test:</span><br/>
+                <input type="button" onclick='cacherMenu(); testXPM()' value="Test XPM"/><input type="button" onclick='cacherMenu(); testSVG()' value="Test SVG"/><input type="button" onclick='cacherMenu(); testCanvas()' value="Test Canvas"/>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <!--Etude de fonction -->
+        <div id="menuEtude" class="menu">
+            <div class="contenuMenu">
+                <h3>Analysis of function</h3>
+                <span>Set of definitions:</span> <span id="etudeEDF">...</span> <br/>
+                <span>Parity:</span> <span id="etudeParite">...</span> <br/>
+                <span>Zeros of functions:</span> <span id="etudeZeros">...</span> <br/>
+                <table>
+                    <tr id="etudeSigne">
+                        <td>Sign : ...</td>
+                    </tr>
+                </table>
+                <span>Asymptotes</span> <br/>
+                <span>AH left:</span> : <span id="etudeAHG">...</span> <br/>
+                <span>AH right:</span> <span id="etudeAHD">...</span> <br/>
+                <span>AV:</span> <span id="etudeAV">...</span>
+                <span id="etudeMin">...</span>
+                <span id="etudeMax">...</span>
+                <span id="etudeI">...</span> <br/><br/>
+                <span class="texteSecondaire" style="font-size:10px;">Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.</span>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <!-- Fonctions multiples -->
+        <div id="menuFonctions" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuFonctions")'>Functions</td>
+                    <td onclick='afficherMenu("menuHistorique")'>History</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures">
+                <em>Current</em><br/>
+                f(x) = <span id="fonctionActuelle">x</span> <input type="button" value="+" onclick="ajouterFonction(document.getElementById('fonctionActuelle').innerHTML)"/>
+                <br/><br/>
+                <em>Additional</em><br/>
+                <span id="fonctionsSupp">n/a ...</span>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <!-- Historique -->
+        <div id="menuHistorique" class="menu">
+            <table class="ongletMenu">
+                <tr>
+                    <td onclick='afficherMenu("menuFonctions")'>Functions</td>
+                    <td class="ongletMenuActuel" onclick='afficherMenu("menuHistorique")'>History</td>
+                </tr>
+            </table>
+            <div class="contenuMenu avecBordures" id="divHistorique">
+                <span id="spanHistorique"></span>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick='cacherMenu()' value="Cancel"/></div>
+        </div>
+
+        <!-- Couleur -->
+        <div id="menuCouleur" class="menu">
+            <div class="contenuMenu">
+                <em>Choosing the color:</em> <br/><br/>
+                <div id="colorSV" onmousemove="if(mouseDown==true){colorSV(event)}" onmousedown="colorSV(event); mouseDown = true" onmouseup="mouseDown = false">
+                    <svg:svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+                        <svg:defs id="defs1">
+                            <svg:linearGradient id="linearGradient1" x1="0%" y1="0%" x2="100%" y2="0%">
+                                <svg:stop
+                                    style="stop-color:#000000;stop-opacity:1;"
+                                    offset="0%" />
+                                <svg:stop
+                                    style="stop-color:#000000;stop-opacity:0;"
+                                    offset="100%" />
+                            </svg:linearGradient>
+                            <svg:linearGradient id="linearGradient2" x1="0%" y1="0%" x2="0%" y2="100%">
+                                <svg:stop
+                                    style="stop-color:#ffffff;stop-opacity:0;"
+                                    offset="0%" />
+                                <svg:stop
+                                    style="stop-color:#ffffff;stop-opacity:1;"
+                                    offset="100%" />
+                            </svg:linearGradient>
+                        </svg:defs>
+                        <svg:rect
+                            style="fill:url(#linearGradient2);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+                            width="255"
+                            height="255"
+                            x="0"
+                            y="0"
+                            ry="0" />
+                        <svg:rect
+                            style="fill:url(#linearGradient1);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+                            width="255"
+                            height="255"
+                            x="0"
+                            y="0"
+                            ry="0" />
+                        <svg:line
+                            id="ligneValeur"
+                            x1="255"
+                            y1="0"
+                            x2="255"
+                            y2="255"
+                            style="stroke:rgb(0,0,0);stroke-width:2"/>
+                        <svg:line
+                            id="ligneSaturation"
+                            x1="0"
+                            y1="0"
+                            x2="255"
+                            y2="0"
+                            style="stroke:rgb(0,0,0);stroke-width:2"/>
+                    </svg:svg>
+                </div>
+                <div id="colorT" onmousemove="if(mouseDown==true){colorT(event)}" onmousedown="colorT(event); mouseDown = true" onmouseup="mouseDown = false">
+                    <svg:svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+                        <svg:defs id="defs2">
+                            <svg:linearGradient id="linearGradient3" x1="0%" y1="100%" x2="0%" y2="0%">
+                                <svg:stop
+                                    style="stop-color:#ff0000;stop-opacity:1;"
+                                    offset="0%" />
+                                <svg:stop
+                                    style="stop-color:#ff00ff;stop-opacity:1;"
+                                    offset="16.66%" />
+                                <svg:stop
+                                    style="stop-color:#0000ff;stop-opacity:1;"
+                                    offset="33.33%" />
+                                <svg:stop
+                                    style="stop-color:#00ffff;stop-opacity:1;"
+                                    offset="50%" />
+                                <svg:stop
+                                    style="stop-color:#00ff00;stop-opacity:1;"
+                                    offset="66.66%" />
+                                <svg:stop
+                                    style="stop-color:#ffff00;stop-opacity:1;"
+                                    offset="83.33%" />
+                                <svg:stop
+                                    style="stop-color:#ff0000;stop-opacity:1;"
+                                    offset="100%" />
+                            </svg:linearGradient>
+                        </svg:defs>
+                        <svg:rect
+                            style="fill:url(#linearGradient3);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+                            width="255"
+                            height="255"
+                            x="0"
+                            y="0"
+                            ry="0" />
+                        <svg:line
+                            id="ligneTeinte"
+                            x1="0"
+                            y1="0"
+                            x2="20"
+                            y2="0"
+                            style="stroke:rgb(0,0,0);stroke-width:2"/>
+                    </svg:svg>
+                </div>
+                <table id="colorValues">
+                    <tr>
+                        <td>Color: </td><td><input id="inputTeinte" class="smallInput" value="0" onkeypress=''/></td>
+                    </tr><tr>
+                        <td>Value: </td><td><input id="inputValeur" class="smallInput" value="0" onkeypress=''/></td>
+                    </tr><tr>
+                        <td>Saturation: </td><td><input id="inputSaturation" class="smallInput" value="0" onkeypress=''/></td>
+                    </tr><tr>
+                        <td>Red: </td><td><input id="inputRouge" class="smallInput" value="255" onkeypress=''/></td>
+                    </tr><tr>
+                        <td>Green: </td><td><input id="inputVert" class="smallInput" value="0" onkeypress=''/></td>
+                    </tr><tr>
+                        <td>Blue: </td><td><input id="inputBleu" class="smallInput" value="0" onkeypress=''/></td>
+                    </tr><tr>
+                        <td>Opacity: </td><td><input id="inputOpacity" class="smallInput" value="1" onkeypress=''/></td>
+                    </tr><!--<tr>
+                            <td><input id="inputCouleur" style="width: 70%" value="cyan" onkeypress='couleurFonction = this.value; if(event.keyCode==13) actualiserGraph()'/></td>
+                    </tr>-->
+                </table>
+                <div id="apercuCouleur" title="New Color"></div><div id="apercuCouleur2" title="Old Color"></div>
+            </div>
+            <div class="barreBasMenu"><input type="button" onclick="if(idColor=='buttonColor'){cacherMenu()}else{afficherMenu('menuFonctions')}; actualiserGraph()" value="Check"/></div>
+        </div>
+
+        <!-- Erreurs Fonctions interdites -->
+        <div id="fctInterdite" class="miniMenu">
+            <br/>
+            <h1>------- Error -------</h1>
+            <br/>
+            Impossible to draw the function ...
+            <br/><br/>
+            Error in expression or unexpected char: <br/>
+            <span id="spanFctInterdite" style="font-style:italic;"></span>
+            <br/><br/>
+            <input type="button" onclick="cacherMenu()" value="Ok"/>
+        </div>
+
+        <!-- Autres erreurs -->
+        <div id="erreurFct" class="miniMenu">
+            <h1>------- Error -------</h1>
+            Runtime error! Check your function and try to draw it again.
+            <br/>
+            Description and parameters various functions which are available to help.
+            <br/><br/>
+            <input type="button" onclick="afficherMenu('menuAide')" value="Help"/>
+            <input type="button" onclick="cacherMenu()" value="Ok"/>
+        </div>
+
+        <!-- Menu des mises à jour -->
+        <div id="mAj" class="menu">
+            <h1>Updated</h1>
+            <span>Current version:</span> <br/><span id="thisVersion"></span><br/>
+            <span>The last on-line version:</span> <br/><span id="newVersion"></span><br/>
+            <br/>
+            <span>This widget is available to using on web-site:</span> <em>http://gyb.educanet2.ch/tm-widgets/yannick</em><br/>
+            <br/>			
+        </div>
+
+        <!-- Erreur mise à jour -->
+        <div id="erreurMaJ" class="miniMenu">
+            <br/>
+            <h1>------- Error -------</h1>
+            <br/><br/>
+            Update to latest version is not available because you already use the latest version.
+            <br/><br/><br/>
+            <input type="button" onclick="cacherMenu()" value="Ok"/>
+        </div>
+
+        <!-- Info options sauvegardées -->
+        <div id="infoSauvegarde" class="alertMenu">
+            <br/>
+            <h1>Options saved!</h1>
+            <br/>
+            <input type="button" onclick="document.getElementById('infoSauvegarde').style.display = 'none'" value="Ok"/>
+        </div>
+
+        <!-- ..... Flèches de déplacement ..... -->
+        <div class="flecheDeplacement" id="flecheHaut" onclick="if(fonction3D){zoom3D(1.25)}else{deplacerY(1)}" onmousemove="sourisMove(event)">â–²</div>
+        <div class="flecheDeplacement" id="flecheGauche" onclick="deplacerX(-1)" onmousemove="sourisMove(event)">â—€</div>
+        <div class="flecheDeplacement" id="flecheBas" onclick="if(fonction3D){zoom3D(0.8)}else{deplacerY(-1)}" onmousemove="sourisMove(event)">â–¼</div>
+        <div class="flecheDeplacement" id="flecheDroite" onclick="deplacerX(1)" onmousemove="sourisMove(event)">â–¶</div>
+
+        <!-- ..... Bas du Widget ..... -->
+        <div class="info" id="info"></div>
+        <div id="point">o</div>
+        <div id="tangente"></div>
+
+        <!-- .... Autres .... -->
+        <div id="onglet3D" onclick="activer3D()">3D</div>
+    </body>
+    <!-- .............................. Widget réalisé par Yannick Vessaz .............................. -->
+    <!-- .............................. e-mail: yannick.vessaz at gmail.com  .............................. -->
+</html>
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Guide_Utilisateur.html b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Guide_Utilisateur.html
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Guide_Utilisateur.html
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Guide_Utilisateur.html
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/GraphMe.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/GraphMe.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/GraphMe.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/GraphMe.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_AjouterWidget.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_AjouterWidget.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_AjouterWidget.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_AjouterWidget.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Deplacement.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Deplacement.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Deplacement.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Deplacement.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Navigateur.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Navigateur.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Navigateur.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Navigateur.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Options.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Options.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Options.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Options.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Plus.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Plus.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Plus.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Plus.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Presentation.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Presentation.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Presentation.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Presentation.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Uniboard.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Uniboard.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/Guide_Uniboard.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/Guide_Uniboard.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond1.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond1.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond1.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond1.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond2.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond2.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond2.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond2.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond3.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond3.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond3.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond3.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond4.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond4.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond4.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond4.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond5.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond5.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/fond5.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/fond5.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/gauche1.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/gauche1.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/gauche1.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/gauche1.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/gauche2.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/gauche2.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/gauche2.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/gauche2.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/gauche3.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/gauche3.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/gauche3.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/gauche3.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/onglet1.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/onglet1.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/onglet1.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/onglet1.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/onglet2.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/onglet2.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Images/onglet2.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Images/onglet2.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Affichage3D.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Affichage3D.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Affichage3D.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Affichage3D.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/AffichageStandard.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/AffichageStandard.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/AffichageStandard.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/AffichageStandard.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/AffichageUniboard.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/AffichageUniboard.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/AffichageUniboard.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/AffichageUniboard.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/AffichageXPM.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/AffichageXPM.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/AffichageXPM.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/AffichageXPM.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/ColorPicker.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/ColorPicker.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/ColorPicker.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/ColorPicker.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Etude.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Etude.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Etude.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Etude.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Interface.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Interface.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Interface.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Interface.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Outils.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Outils.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Outils.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Outils.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Sauvegardes.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Sauvegardes.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/Sauvegardes.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/Sauvegardes.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/jquery-1.3.2.min.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/jquery-1.3.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/jquery-1.3.2.min.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/jquery-1.3.2.min.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/jquery.disable.text.select.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/jquery.disable.text.select.js
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/JavaScript/jquery.disable.text.select.js
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/jquery.disable.text.select.js
diff --git a/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/languages.js b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/languages.js
new file mode 100644
index 0000000..261d119
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/Grapheur.wgt/JavaScript/languages.js
@@ -0,0 +1,506 @@
+var sankoreLang = {
+    "en":{
+        "fnc":"Function: ",
+        "display":"Display",
+        "x_axis":"X-axis",
+        "y_axis":"Y-axis",
+        "zoom":"Zoom",
+        "color":"Color:",
+        "menus":"Menu",
+        "tools":"Tools",
+        "options":"Options",
+        "help":"Help",
+        "about":"About",
+        "mouse_events":"Mouse events:",
+        "moving":"Moving",
+        "tangente":"Tangente",
+        "point":"Point",
+        "choosing_color":"Choosing the color:",
+        "value":"Value:",
+        "saturation":"Saturation:",
+        "red":"Red:",
+        "green":"Green:",
+        "blue":"Blue:",
+        "opacity":"Opacity:",
+        "check":"Check",
+        "derivative":"Derivative:",
+        "square_under_func":"Square under function:",
+        "from":"From",
+        "to":"To",
+        "calculate":"Calculate",
+        "draw":"Draw",
+        "point_calculate":"Calculate the point on the function:",
+        "estimate":"Estimate",
+        "analysis_of_func":"Analysis of function:",
+        "start_to_analysis":"Start to analysis",
+        "quit":"Quit",
+        "display_test":"Display the test:",
+        "test":"Test",
+        "widget":"Widget",
+        "widget_options":"Widget options",
+        "themes_of_widget":"Themes of the widget:",
+        "black":"Black",
+        "white":"White",
+        "control_options":"Control options:",
+        "save":"Save",
+        "load":"Load",
+        "del":"Delete",
+        "save_a_widget_options":"Save a widget options in cookies or load an options from cookies or delete a registered options.",
+        "auto_update":"Automatically update when a widget opening.",
+        "reload_widget":"Reload widget",
+        "update":"Update",
+        "the_graphical":"The graphical method displaying:",
+        "lines":"lines",
+        "points":"points",
+        "image":"image",
+        "zoom_def":"Zoom default:",
+        "update_zoom":"Update zoom",
+        "show_grid":"Show grid",
+        "show_axis":"Show axis",
+        "scale":"Scale",
+        "thickness":"Thickness:",
+        "offset_diagram":"Offset diagram:",
+        "accuracy_graph":"Accuracy graph:",
+        "show_the_style":"Show the style:",
+        "surfaces":"surfaces",
+        "points":"points",
+        "reset_display":"Reset display",
+        "accuracy_func":"Accuracy function:",
+        "use_the_color":"Use the color:",
+        "positive_value":"positive value",
+        "negative_value":"negative value",
+        "general_value":"general value",
+        "how_it_work":"How it works",
+        "this_widget_allow":"This widget allows to draw mathematical function. Enter function in the field in the top part of the widget and press\"Display\"",
+        "you_can_enter":"You can enter following mathematical functions:",
+        "basic_operations":"Basic operations",
+        "plus":"Plus",
+        "minus":"Minus",
+        "multi":"Multiplication",
+        "division":"Division",
+        "mod":"Mod",
+        "trigonometric":"Trigonometric functions",
+        "sine":"Sine",
+        "cosine":"Cosine",
+        "tangent":"Tangent",
+        "cotangent":"Cotangent",
+        "secant":"Secant",
+        "cosecant":"Cosecant",
+        "arc_sine":"Arc sine",
+        "arc_cosine":"Arc cosine",
+        "arc_tangent":"Arc tangent",
+        "arc_cotangent":"Arc cotangent",
+        "hyperbolic_func":"Hyperbolic functions",
+        "hyp_sine":"Hyperbolic sine",
+        "hyp_cosine":"Hyperbolic cosine",
+        "hyp_tangent":"Hyperbolic tangent",
+        "hyp_cotangent":"Hyperbolic cotangent",
+        "hyp_secant":"Hyperbolic secant",
+        "hyp_cosecant":"Hyperbolic cosecant",
+        "hyp_arc_sine":"Hyperbolic arc sine",
+        "hyp_arc_cosine":"Hyperbolic arc cosine",
+        "hyp_arc_tangent":"Hyperbolic arc tangent",
+        "hyp_arc_cotangent":"Hyperbolic arc cotangent",
+        "square_roots_and_degrees":"Square roots and degrees",
+        "square_root":"Square root",
+        "degree":"Degree",
+        "root":"Root",
+        "variable_x":"Variable x to the power y",
+        "root_y":"Root y of x",
+        "exponential":"Exponential and logarithm",
+        "natural_log":"Natural logarithm",
+        "decimal_log":"Decimal logarithm",
+        "abs":"Absolute number value",
+        "rounding":"Rounding",
+        "round_nearest":"Rounding to the nearest whole number",
+        "round_nearest_big":"Rounding to the nearest whole number in a big way",
+        "round_nearest_small":"Rounding to the nearest whole number the smaller side",
+        "consts":"Constants",
+        "available_const":"Also are some constants available:",
+        "keys":"Keyboard keys",
+        "moved_left":"Graph will be moved left",
+        "moved_top":"Graph will be moved top",
+        "moved_right":"Graph will be moved right",
+        "moved_botom":"Graph will be moved bottom",
+        "guide":"User's guide",
+        "using":"Using",
+        "examples":"Examples",
+        "other":"Other",
+        "you_can_view":"You can view example. Don't forget to set a accuracy in option if it will be necessary.",
+        "save_graph":"Save graph",
+        "in_some_browsers":"In some browsers when display method \"Canvas\" used you can save graph by clcking it with right mouse button and selecting \"Save image\". Also you can save 3D-graphs.",
+        "offset":"Offset",
+        "if_graph_isnt":"If graph isn't in the right plase (larger than canvas) then can you set necessary parameters graph displaying in settings menu.",
+        "history":"History",
+        "current":"Current",
+        "additional":"Additional",
+        "left_arrow":"left arrow",
+        "right_arrow":"right arrow",
+        "top_arrow":"top arrow",
+        "bottom_arrow":"bottom arrow",
+        "or":"or",
+        "funcs":"Functions",
+        "widget_is_developed":"Widget is developed by",
+        "if_you_want_to":"If you want to inform about a bug, make a proposal or just ask some questions. You can contact to me at the following e-mail:",
+        "if_you_want_to_change":"If you want to change background design then you can contact at following address:",
+        "set_of_def":"Set of definitions:",
+        "parity":"Parity:",
+        "zeros":"Zeros of function:",
+        "signe":"Sign:",
+        "asympt":"Asymptotes",
+        "min":"Min",
+        "ev":"even",
+        "unev":"uneven",
+        "na":"n/a",
+        "curve_lower":"curve is lower than a AH",
+        "curve_higher":"curve is higher than a AH",
+        "max":"Max",
+        "no_min":"No minimum",
+        "no_max":"No maximum",
+        "tool_for":"Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.",
+        "ah_left":"AH left:",
+        "ah_right":"AH right:",
+        "av":"AV:",
+        "options_saved":"Options saved!",
+        "cur_version":"Current version:",
+        "last_version":"The last on-line version:",
+        "using_web":"This widget is available to using on web-site:",
+        "show_saved":"Now parameters will be saved"
+    },
+    "ru":{
+        "fnc": "Функция: ",
+        "display":"Показать",
+        "x_axis":"ось X",
+        "y_axis":"ось Y",
+        "zoom":"Размер",
+        "color":"Цвет:",
+        "menus":"Меню",
+        "tools":"Инструменты",
+        "options":"Опции",
+        "help":"Помощь",
+        "about":"О программе",
+        "mouse_events":"События мыши:",
+        "moving":"Движение",
+        "tangente":"Касательная",
+        "point":"Точка",
+        "choosing_color":"Выбор цвета:",
+        "value":"Значение:",
+        "saturation":"Насыщенность:",
+        "red":"Красный:",
+        "green":"Зеленый:",
+        "blue":"Голубой:",
+        "opacity":"Прозрачность:",
+        "check":"Применить",
+        "derivative":"Производная:",
+        "square_under_func":"Область функции:",
+        "from":"От",
+        "to":"До",
+        "calculate":"Посчитать",
+        "draw":"Зарисовать",
+        "point_calculate":"Рассчитать точку функции:",
+        "estimate":"Оценить",
+        "analysis_of_func":"Анализ функции:",
+        "start_to_analysis":"Начать анализ",
+        "quit":"Выйти",
+        "display_test":"Показать тест:",
+        "test":"Тест",
+        "widget":"Виджет",
+        "widget_options":"Настройки виджета",
+        "themes_of_widget":"Темы виджета:",
+        "black":"Черный",
+        "white":"Белый",
+        "control_options":"Опции управления:",
+        "save":"Сохранить",
+        "load":"Загрузить",
+        "del":"Удалить",
+        "save_a_widget_options":"Сохранить или загрузить настройки виджета в/из куки-файлов, или же удалить выбранные опции",
+        "auto_update":"Автоматическое обновление виджета при загрузке",
+        "reload_widget":"Перегрузить виджет",
+        "update":"Обновить",
+        "the_graphical":"Графический метод отображения:",
+        "lines":"линии",
+        "points":"точки",
+        "image":"изображения",
+        "zoom_def":"Размер по-умолчанию:",
+        "update_zoom":"Изменить размер:",
+        "show_grid":"Показать таблицу",
+        "show_axis":"Показать оси",
+        "scale":"Масштаб",
+        "thickness":"Толщина",
+        "offset_diagram":"Смещение диаграммы:",
+        "accuracy_graph":"Точность графика:",
+        "show_the_style":"Показать стиль:",
+        "surfaces":"поверхности",
+        "points":"точки",
+        "reset_display":"Обновить отображение",
+        "accuracy_func":"Точность функции:",
+        "use_the_color":"Использовать цвет:",
+        "positive_value":"положительное значение",
+        "negative_value":"отрицательное значение",
+        "general_value":"основное значение",
+        "how_it_work":"Как это работает",
+        "this_widget_allow":"Этот виджет позволяет рисовать математические функции. Введите функцию в верхней части виджета и нажмите \"Показать\"",
+        "you_can_enter":"Вы можете использовать следующие математические функции:",
+        "basic_operations":"Основные операции",
+        "plus":"Сложение",
+        "minus":"Вычетание",
+        "multi":"Произведение",
+        "division":"Частное",
+        "mod":"Остаток от деления",
+        "trigonometric":"Тригонометрические функции",
+        "sine":"Синус",
+        "cosine":"Косинус",
+        "tangent":"Тангенс",
+        "cotangent":"Котангенс",
+        "secant":"Секанс",
+        "cosecant":"Косеканс",
+        "arc_sine":"Арксинус",
+        "arc_cosine":"Арккосинус",
+        "arc_tangent":"Арктангенс",
+        "arc_cotangent":"Арккотангенс",
+        "hyperbolic_func":"Гиперболические функции",
+        "hyp_sine":"Гиперболический синус",
+        "hyp_cosine":"Гиперболический косинус",
+        "hyp_tangent":"Гиперболический тангенс",
+        "hyp_cotangent":"Гиперболический котангенс",
+        "hyp_secant":"Гиперболический секанс",
+        "hyp_cosecant":"Гиперболический косеканс",
+        "hyp_arc_sine":"Гиперболический арксинус",
+        "hyp_arc_cosine":"Гиперболический арккосинус",
+        "hyp_arc_tangent":"Гиперболический арктангенс",
+        "hyp_arc_cotangent":"Гиперболический арккотангенс",
+        "square_roots_and_degrees":"Квардатные корни и степени",
+        "square_root":"Квадратный корень",
+        "degree":"Степень",
+        "root":"Корень",
+        "variable_x":"Переменная х в степени у",
+        "root_y":"Корень y степени x",
+        "exponential":"Экспоненты и логарифмы",
+        "natural_log":"Натуральный логарифм",
+        "decimal_log":"Десятичный логарифм",
+        "abs":"Абсолютное значение числа",
+        "rounding":"Округление",
+        "round_nearest":"Округление до ближайшего целого числа",
+        "round_nearest_big":"Округление до ближайшего целого числа в большую сторону",
+        "round_nearest_small":"Округление до ближайшего целого числа в меньую сторону",
+        "consts":"Константы",
+        "available_const":"Также доступны некоторые константы:",
+        "keys":"Горячие клавиши",
+        "moved_left":"График будет сдвинут влево",
+        "moved_top":"График будет сдвинут вверх",
+        "moved_right":"График будет сдвинут вправо",
+        "moved_bottom":"График будет сдвинут вниз",
+        "guide":"Руководство пользователя",
+        "using":"Использование",
+        "examples":"Примеры",
+        "other":"Другое",
+        "you_can_view":"Вы можете посмотреть примеры. Не забывайте выставить точность в настройках, если это необходимо.",
+        "save_graph":"Сохранить график",
+        "in_some_browsers":"В некоторых браузерах при выборе метода отоюражения \"Canvas\" вы можете сохранить гафик кликом ПКМ на нем и выбором пункта \"Сохранить изображение\". Таким же способом вы можете сохранять 3D-графики.",
+        "offset":"Смещение",
+        "if_graph_isnt":"Если график арсположен в неправильном месте (больше, чем холст), то Вы можете выставить необходимые параметры отображения графа в настройках виджета.",
+        "history":"История",
+        "current":"Текущие",
+        "additional":"Дополнительные",
+        "left_arrow":"стрелка влево",
+        "right_arrow":"стрелка вправо",
+        "top_arrow":"стрелка вверх",
+        "bottom_arrow":"стрелка вниз",
+        "or":"или",
+        "funcs":"Функции",
+        "widget_is_developed":"Виджет разработан ",
+        "if_you_want_to":"Если вы хотите сообщить о проблеме, внести предложение или задать некоторые вопросы, то можете связаться со мной через электронную почту:",
+        "if_you_want_to_change":"Если вы хотите изменить дизайн, обращайтесь по адресу:",
+        "set_of_def":"Набор определений:",
+        "parity":"Равенство:",
+        "zeros":"Нули функции:",
+        "signe":"Знак:",
+        "asympt":"Ассимптоты",
+        "min":"Мин",
+        "ev":"равны",
+        "unev":"не равны",
+        "na":"не определено",
+        "curve_lower":"кривая ниже, чем горизонтальная ассимптота",
+        "curve_higher":"кривая выше, чем горизонтальная ассимптота",
+        "max":"Макс",
+        "no_min":"Нет минимума",
+        "no_max":"Нет максимума",
+        "tool_for":"Анализ функции не надежен на 100%. Не забывайте проверить результат анализа перед их использованием.",
+        "ah_left":"ГА слева:",
+        "ah_right":"ГА справа:",
+        "av":"ВА:",
+        "options_saved":"Настройки сохранены!",
+        "cur_version":"Текущая версия:",
+        "last_version":"Последняя он-лайн версия:",
+        "using_web":"Этот виджет доступен для использования на сайте:",
+        "show_saved":"Теперь параметры будут сохранены"
+    },
+    "fr":{
+        "fnc":"Fonction: ",
+        "display":"Afficher",
+        "x_axis":"Axe des X de:",
+        "y_axis":"Axe des Y de:",
+        "zoom":"Zoom",
+        "color":"Couleur:",
+        "menus":"Menus",
+        "tools":"Outils",
+        "options":"Options",
+        "help":"Aide",
+        "about":"À propos",
+        "mouse_events":"Action de la souris:",
+        "moving":"Déplacement",
+        "tangente":"Tangente",
+        "point":"Point",
+        "choosing_color":"Choix de la couleur:",
+        "value":"Valeur:",
+        "saturation":"Saturation:",
+        "red":"Rouge:",
+        "green":"Vert:",
+        "blue":"Bleu:",
+        "opacity":"Opacité:",
+        "check":"Valider",
+        "derivative":"Dessiner la dérivée de la fonction:",
+        "square_under_func":"Aire sous la fonction:",
+        "from":"From",
+        "to":"To",
+        "calculate":"Calculer",
+        "draw":"Dessiner",
+        "point_calculate":"Calculer un point de la fonction:",
+        "estimate":"Évaluer",
+        "analysis_of_func":"Analyse de la fonction:",
+        "start_to_analysis":"Démarrer l'étude",
+        "quit":"Fermer",
+        "display_test":"Afficher les tests:",
+        "test":"Test",
+        "widget":"Widget",
+        "widget_options":"Options du widget",
+        "themes_of_widget":"Thème du widget:",
+        "black":"Noir",
+        "white":"Blanc",
+        "control_options":"Gèrer les options:",
+        "save":"Sauvegarder",
+        "load":"Charger",
+        "del":"Supprimer",
+        "save_a_widget_options":"Sauvegarder les options du widget dans les cookies, charger les options depuis les cookies ou supprimer les options actuellement enregistrées.",
+        "auto_update":"Mise à jour automatique à l'ouverture du widget.",
+        "reload_widget":"Recharger le widget",
+        "update":"Mise à jour",
+        "the_graphical":"Méthode d'affichage du graphique:",
+        "lines":"lignes",
+        "points":"points",
+        "image":"image",
+        "zoom_def":"Zoom par défaut:",
+        "update_zoom":"Réinitialiser le zoom",
+        "show_grid":"Afficher la grille",
+        "show_axis":"Afficher les axes ",
+        "scale":"Afficher l'échelle ",
+        "thickness":"Épaisseur de la fonction:",
+        "offset_diagram":"Décalage du graphique:",
+        "accuracy_graph":"Précision des calculs du graphique:",
+        "show_the_style":"Style d'affichage:",
+        "surfaces":"surfaces",
+        "points":"points",
+        "reset_display":"Réinitialiser l'affichage",
+        "accuracy_func":"Précision de la fonction:",
+        "use_the_color":"Utilisation des couleurs:",
+        "positive_value":"valeur positive",
+        "negative_value":"valeur négative",
+        "general_value":"valeur générale",
+        "how_it_work":"Fonctionnement",
+        "this_widget_allow":"Ce widget vous permet de dessiner des fonctions mathématiques. Entrez une fonction dans le champ en haut du widget et cliquez sur le bouton \"Afficher\".",
+        "you_can_enter":"Vous pouvez saisir les fonctions mathématiques suivantes:",
+        "basic_operations":"Les opérations de base",
+        "plus":"Addition",
+        "minus":"Soustraction",
+        "multi":"Multiplication",
+        "division":"Division",
+        "mod":"Modulo",
+        "trigonometric":"Les fonctions trigonométriques",
+        "sine":"Sinus",
+        "cosine":"Cosinus",
+        "tangent":"Tangente",
+        "cotangent":"Cotangente",
+        "secant":"Secante",
+        "cosecant":"Cosecante",
+        "arc_sine":"Arcsinus",
+        "arc_cosine":"Arccosinus",
+        "arc_tangent":"Arctangente",
+        "arc_cotangent":"Arccotangente",
+        "hyperbolic_func":"Les fonctions hyperboliques",
+        "hyp_sine":"Sinus hyp",
+        "hyp_cosine":"Cosinus hyp",
+        "hyp_tangent":"Tangente hyp",
+        "hyp_cotangent":"Cotangente hyp",
+        "hyp_secant":"Secante hyp",
+        "hyp_cosecant":"Cosecante hyp",
+        "hyp_arc_sine":"Arcsinus hyp",
+        "hyp_arc_cosine":"Arccosinus hyp",
+        "hyp_arc_tangent":"Arctangente hyp",
+        "hyp_arc_cotangent":"Arccotangente hyp",
+        "square_roots_and_degrees":"Les racines et les puissances",
+        "square_root":"Racine carrée",
+        "degree":"Puissances",
+        "root":"Racines",
+        "variable_x":"Élève x à une puissance y",
+        "root_y":"Racine y d'un nombre x",
+        "exponential":"Les exponentielles et logarithmes",
+        "natural_log":"logarithme naturel",
+        "decimal_log":"logarithme de base",
+        "abs":"La valeur absolue d'un nombre",
+        "rounding":"Les arrondis",
+        "round_nearest":"arrondit à l'entier le plus proche",
+        "round_nearest_big":"arrondit à l'entier supérieur",
+        "round_nearest_small":"arrondit à l'entier inférieur",
+        "consts":"Constantes",
+        "available_const":"Quelques constantes sont aussi disponibles:",
+        "keys":"Touches clavier",
+        "moved_left":"déplacer le graphique à gauche",
+        "moved_top":"déplacer le graphique en haut",
+        "moved_right":"déplacer le graphique à droite",
+        "moved_botom":"déplacer le graphique en bas",
+        "guide":"Guide d'utilisation",
+        "using":"Utilisation",
+        "examples":"Exemples",
+        "other":"Autres",
+        "you_can_view":"Vous pouvez cliquer sur un exemple pour l'afficher. Pensez à ajuster la précision du graphique dans les options si nécessaire",
+        "save_graph":"Enregistrer le graphique",
+        "in_some_browsers":"Dans certains navigateurs, lorsque vous utilisez la méthode d'affichage \"Canvas\", vous pouvez sauvegarder le graphique en cliquant avec le bouton de droite de la souris sur celui-ci et en séléctionnant \"Enregistrer l'image\". Vous pouvez aussi sauvegarder le graphique 3D. ",
+        "offset":"Décalage",
+        "if_graph_isnt":"Si le graphique n'est pas à la bonne place (il dépasse de la zone prévue), ajustez le \"décalage du graphique\" dans le menu des options. Pour Konqueror, il faut utiliser un décalage de x=122 et y=48.",
+        "history":"Historique",
+        "current":"Actuelle",
+        "additional":"Supplémentaires",
+        "left_arrow":"flèche gauche",
+        "right_arrow":"flèche droite",
+        "top_arrow":"flèche haut",
+        "bottom_arrow":"flèche bas",
+        "or":"ou",
+        "funcs":"Fonction",
+        "widget_is_developed":"Widget réalisé par",
+        "if_you_want_to":"Si vous voulez rapporter un bug, avez une suggestion par rapport au widget ou voulez simplement poser une question, merci de me contacter par:",
+        "if_you_want_to_change":"Les images d'arrière-plan du widget on été tirées des thèmes du bureau \"plasma-desktop\" de l'environnement:",
+        "set_of_def":"Ensemble de définition:",
+        "parity":"Parité:",
+        "zeros":"Zéros de la fonction:",
+        "signe":"Signe:",
+        "asympt":"Asymptotes",
+        "min":"Min",
+        "ev":"paire",
+        "unev":"impaire",
+        "na":"aucune",
+        "curve_lower":"courbe au-dessus de l'AH",
+        "curve_higher":"courbe au-dessous de l'AH",
+        "max":"Max",
+        "no_min":"Aucun minimum",
+        "no_max":"Aucun maximum",
+        "tool_for":"L'outil permettant d'étudier les fonctions n'est pas fiable à 100%. Pensez à vérifier les résultats de l'étude avant d'en faire une quelconque utilisation.",
+        "ah_left":"AH gauche:",
+        "ah_right":"AH droite:",
+        "av":"AV:",
+        "options_saved":"Options sauvegardées!",
+        "cur_version":"Version en cours d'utilisation:",
+        "last_version":"Dernière version disponible en ligne:",
+        "using_web":"Ce widget est également utilisable dans un navigateur internet sur le site:",
+        "show_saved":"Options actuellement sauvegardées"
+    }
+};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Style/Guide_Utilisateur.css b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Style/Guide_Utilisateur.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Style/Guide_Utilisateur.css
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Style/Guide_Utilisateur.css
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Style/default.css b/Sankore-3.1/resources/library/applications/Grapheur.wgt/Style/default.css
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/Style/default.css
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/Style/default.css
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/config.xml b/Sankore-3.1/resources/library/applications/Grapheur.wgt/config.xml
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/config.xml
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/config.xml
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/icon.png b/Sankore-3.1/resources/library/applications/Grapheur.wgt/icon.png
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/icon.png
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/icon.png
diff --git a/Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/version.html b/Sankore-3.1/resources/library/applications/Grapheur.wgt/version.html
similarity index 100%
rename from Sankore-3.1/resources/library/applications/Grapheur 3D.wgt/version.html
rename to Sankore-3.1/resources/library/applications/Grapheur.wgt/version.html
diff --git a/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/index.html b/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/index.html
index d477b26..a1ca93a 100644
--- a/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/index.html	
+++ b/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/index.html	
@@ -201,8 +201,7 @@
                     .attr("height", globalHeight - 120);
                 });
 							
-                function checkcontent(){
-														
+                function checkcontent(){								
                     if(window.sankore){
                         window.sankore.setPreference("url", $("#textbox").val());
                         window.sankore.setPreference("browserHistory", references.toString());
@@ -215,7 +214,6 @@
 			
                 function checkLoading(){
                     if(loadingState){
-
                         clearTimeout(resizer);
                         resizerIndex = 0;
                         $("#web-content")
@@ -227,10 +225,11 @@
                     };
                     if(resizerIndex > 80){
                         resizerIndex = 0;
+                        console.log("error on loading page");
                         $("#back-button").trigger("click");
-                        alert(sankoreLang[lang].alert);
-                        //$("#textbox").val("http://www.google.com/search?q=" + $("#textbox").val().replace("http://", ""));
-                        //$("#search-button").trigger("click");
+                        $("#textbox").val($("#textbox").val().replace("http://", ""));
+                        $("#textbox").val("http://www.metacrawler.com/search/web?&q=" + $("#textbox").val().replace("http://", "")+"&ql=");
+                        $("#search-button").trigger("click");
                     }else{
                         resizer = setTimeout(function(){checkLoading()}, 100);
                         resizerIndex++;
@@ -300,4 +299,4 @@
         </div>
     </body>
 
-</html>
\ No newline at end of file
+</html>
diff --git a/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/locales/fr/howto.html b/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/locales/fr/howto.html
index 7215b9a..2040d5d 100644
--- a/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/locales/fr/howto.html	
+++ b/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/locales/fr/howto.html	
@@ -6,6 +6,6 @@
 	<img src="imgs/info_ico.png" id="info-ico">
 	<div class="column">
 		<h1>Navigateur Web</h1>
-		<p class="spacer">Tapez une addresse URL dans le champ de texte pour l'afficher.</p>
+		<p class="spacer">Tapez une adresse URL dans le champ de texte pour l'afficher.</p>
 	</div>
 </div>
diff --git a/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/scripts/languages.js b/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/scripts/languages.js
index 70eb834..6bb314c 100644
--- a/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/scripts/languages.js	
+++ b/Sankore-3.1/resources/library/applications/Navigateur Web.wgt/scripts/languages.js	
@@ -19,7 +19,7 @@ var sankoreLang = {
     },
     "fr":{
         "previous":"Précédente",
-        "next":"Suivant",
+        "next":"Suivante",
         "show":"Voir",
         "prev_page":"Page précédente",
         "next_page":"Page suivante",
diff --git a/Sankore-3.1/resources/library/applications/Notes.wgt/config.xml b/Sankore-3.1/resources/library/applications/Notes.wgt/config.xml
index a95cee6..a39df2a 100644
--- a/Sankore-3.1/resources/library/applications/Notes.wgt/config.xml
+++ b/Sankore-3.1/resources/library/applications/Notes.wgt/config.xml
@@ -3,7 +3,7 @@
 		xmlns:ub="http://uniboard.mnemis.com/widgets"
         id="http://uniboard.mnemis.com/widgets/notes" 
         version="1.2"
-        width="302"
+        width="320"
         height="260" 
         ub:resizable="true">     
    
diff --git a/Sankore-3.1/resources/library/applications/Notes.wgt/css/ubwidget.css b/Sankore-3.1/resources/library/applications/Notes.wgt/css/ubwidget.css
index d0d5239..61fea95 100644
--- a/Sankore-3.1/resources/library/applications/Notes.wgt/css/ubwidget.css
+++ b/Sankore-3.1/resources/library/applications/Notes.wgt/css/ubwidget.css
@@ -1,215 +1,219 @@
 * {
-	margin: 0;
-	padding: 0;
+    margin: 0;
+    padding: 0;
 }
 
-body{
-	margin:0px;
+body, html{
+    margin:0px;
+    height: 96%;
 }
 
 .ubw-container{
-	text-overflow: ellipsis;
-	left:0px;
-	top:0px;
-	margin:0px;
-	/*background-color: #edf7c0;*/
-	background-image: url(../images/back.png);
-	overflow: hidden;
-	border-right: 1px solid rgb(252, 252, 220);
-	border-left: 1px solid rgb(232, 232, 220);
+    min-width: 280px;
+    min-height: 200px;
+    width: 99%;
+    height: 100%;
+    text-overflow: ellipsis;
+    left:0px;
+    top:0px;
+    margin:0px;
+    background-image: url(../images/back.png);
+    overflow: hidden;
+    border-right: 1px solid rgb(252, 252, 220);
+    border-left: 1px solid rgb(232, 232, 220);
 }
 
 .ubw-body{
 }
 
 .head{
-	border-top: 1px solid rgb(252, 252, 220);
-	position: relative;
-	background-color: transparent;
-	font-style: normal;
-	color: #263141;
-	font-size: 119%;
-	width: auto;
-	height: 20px;
-	font-family: Arial, Helvetica, sans-serif;
-	font-weight: normal;
-	outline: none;
-	border-bottom: rgb(252, 252, 220);	
-
-	
+    border-top: 1px solid rgb(252, 252, 220);
+    position: relative;
+    background-color: transparent;
+    font-style: normal;
+    color: #263141;
+    font-size: 119%;
+    width: auto;
+    height: 20px;
+    font-family: Arial, Helvetica, sans-serif;
+    font-weight: normal;
+    outline: none;
+    border-bottom: rgb(252, 252, 220);	
+
+
 }
 .stickytitle{
-	background-color: transparent;
-	min-width: 10px;
-	max-width: 70%;
-	width: 100%;
-	padding-top: 4px;
-	height: 20px;
-	float: left;
-	z-index: 3;
-	position: relative;
-	overflow:hidden;
-	margin-left: 10px;
-	margin-right: -2px;
-	font-style: normal;
-	color: #444444;
-	font-size: 88%;
-	border-style: none;
-	outline: none;
-	font-family: Arial, Helvetica, sans-serif;
-	font-weight: normal;
-	text-align: left;
-	resize: none;
+    background-color: transparent;
+    min-width: 10px;
+    max-width: 70%;
+    width: 100%;
+    padding-top: 4px;
+    height: 20px;
+    float: left;
+    z-index: 3;
+    position: relative;
+    overflow:hidden;
+    margin-left: 10px;
+    margin-right: -2px;
+    font-style: normal;
+    color: #444444;
+    font-size: 88%;
+    border-style: none;
+    outline: none;
+    font-family: Arial, Helvetica, sans-serif;
+    font-weight: normal;
+    text-align: left;
+    resize: none;
 }
 
 .textField{
-	min-height: 50px;
-	overflow-y: auto;
-	overflow-x: hidden;
-	height: auto;
-	width: auto;
-	margin: 5px;
-	padding-right: 4%;
-	background-position: 0;
-	border-left-style: none;
-	border-bottom-style: none;
-	border-right-style: none;
-	border-top-style: none;
-	text-align: left;
-	list-style-type: none;
-	outline: none;
-	word-wrap: break-word;
-	font-style: normal;
-	font-weight: normal;
-	font-family: Arial, Helvetica, sans-serif;
-	color:#444444;
+    min-height: 50px;
+    overflow-y: auto;
+    overflow-x: hidden;
+    height: auto;
+    width: auto;
+    margin: 5px;
+    padding-right: 4%;
+    background-position: 0;
+    border-left-style: none;
+    border-bottom-style: none;
+    border-right-style: none;
+    border-top-style: none;
+    text-align: left;
+    list-style-type: none;
+    outline: none;
+    word-wrap: break-word;
+    font-style: normal;
+    font-weight: normal;
+    font-family: Arial, Helvetica, sans-serif;
+    color:#444444;
 }
 
 .ubw-inspector{
-	position:absolute;
-	background-color:rgb(252, 252, 252);
-	border:1px solid #cccccc;	
-	line-height:20px;
-	font-family:Arial, Helvetica, sans-serif;
-	font-weight:normal;
-	font-size:20px;
-	color:#333333;
+    position:absolute;
+    background-color:rgb(252, 252, 252);
+    border:1px solid #cccccc;	
+    line-height:20px;
+    font-family:Arial, Helvetica, sans-serif;
+    font-weight:normal;
+    font-size:20px;
+    color:#333333;
 }
 
 .ubw-inpubox{
-	min-width:28px;
-	min-height:37px;
-	color:#333333;
-	background-image: url(../images/button_out.png);
-	border-left:1px solid rgb(231, 231, 231);
-	border-right:1px solid rgb(231, 231, 231);
-	border-bottom:1px solid rgb(221, 221, 221);
-	border-top:1px solid rgb(241, 241, 241);
+    min-width:28px;
+    min-height:37px;
+    color:#333333;
+    background-image: url(../images/button_out.png);
+    border-left:1px solid rgb(231, 231, 231);
+    border-right:1px solid rgb(231, 231, 231);
+    border-bottom:1px solid rgb(221, 221, 221);
+    border-top:1px solid rgb(241, 241, 241);
 }
 
 /*BUTTONS*/
 
 .ubw-button-wrapper{
-	float:left;
-	position:relative;
-	/*border:solid 1px yellow;*/
-	margin-right:-7px;
-	z-index:0;
-	font-family:Arial, Helvetica, sans-serif;
-	font-weight:normal;
-	font-size:30px;
-	overflow:visible;
+    float:left;
+    position:relative;
+    /*border:solid 1px yellow;*/
+    margin-right:-7px;
+    z-index:0;
+    font-family:Arial, Helvetica, sans-serif;
+    font-weight:normal;
+    font-size:30px;
+    overflow:visible;
 }
 
 .ubw-button-canvas{
-	width:auto;
-	float:left;
-	position:relative;
-	overflow:visible;
+    width:auto;
+    float:left;
+    position:relative;
+    overflow:visible;
 }
 
 table{
-	line-height:90%;
+    line-height:90%;
 }
 
 .ubw-dropdown{
-	margin: 0;
-	padding: 0;
-	font-size: 15px;
-	width:100px;
-	list-style: none;
-	cursor:pointer;
-	float:none;
-	margin-left:3px;
-}
-	
-	.ubw-dropdown li.out{
-		padding-left: 5px;
-		color:#444444;
-		border-left:1px solid rgb(231, 231, 233);
-		border-right:1px solid rgb(231, 231, 233);
-		background-image: url(../images/button_out.gif);
-	}
-	
-	.ubw-dropdown li.over{
-		padding-left: 5px;
-		color:#eeeeee;
-		border-left:1px solid rgb(140, 140, 140);
-		border-right:1px solid rgb(140, 140, 140);
-		background-image: url(../images/button_out_dark.png);
-	}
-	
-	.ubw-dropdown li.ubw-dropdown-top-corners{
-		border-top:1px solid rgb(241, 241, 244);
-	}
-	
-	.ubw-dropdown li.ubw-dropdown-bottom-corners{
-	    border-bottom:1px solid rgb(221, 221, 223);
-	}
+    margin: 0;
+    padding: 0;
+    font-size: 15px;
+    width:100px;
+    list-style: none;
+    cursor:pointer;
+    float:none;
+    margin-left:3px;
+}
+
+.ubw-dropdown li.out{
+    padding-left: 5px;
+    color:#444444;
+    border-left:1px solid rgb(231, 231, 233);
+    border-right:1px solid rgb(231, 231, 233);
+    background-image: url(../images/button_out.gif);
+}
+
+.ubw-dropdown li.over{
+    padding-left: 5px;
+    color:#eeeeee;
+    border-left:1px solid rgb(140, 140, 140);
+    border-right:1px solid rgb(140, 140, 140);
+    background-image: url(../images/button_out_dark.png);
+}
+
+.ubw-dropdown li.ubw-dropdown-top-corners{
+    border-top:1px solid rgb(241, 241, 244);
+}
+
+.ubw-dropdown li.ubw-dropdown-bottom-corners{
+    border-bottom:1px solid rgb(221, 221, 223);
+}
 
 .ubw-button-body{
-	position:relative;
-	float:left;
-	
-	width:auto;
-	height:auto;
-	overflow:visible
-	
-	text-align:center;
-	vertical-align:middle;		
-			
-	cursor:pointer;		
+    position:relative;
+    float:left;
+
+    width:auto;
+    height:auto;
+    overflow:visible
+
+        text-align:center;
+    vertical-align:middle;		
+
+    cursor:pointer;		
 }
 
 .ubw-button-content{
-	margin:2px;
-	height:auto;
-	width:auto;
-	text-align:center;
-	overflow:visible;
+    margin:2px;
+    height:auto;
+    width:auto;
+    text-align:center;
+    overflow:visible;
 }
 
 
 .ubw-button-over{
-	color:#444444;
-	background-image: url(../images/button_out.gif);
-	border-left:1px solid rgb(221, 221, 221);
-	border-right:1px solid rgb(221, 221, 221);
-	border-bottom:1px solid rgb(211, 211, 211);
-	border-top:1px solid rgb(231, 231, 231);
+    color:#444444;
+    background-image: url(../images/button_out.gif);
+    border-left:1px solid rgb(221, 221, 221);
+    border-right:1px solid rgb(221, 221, 221);
+    border-bottom:1px solid rgb(211, 211, 211);
+    border-top:1px solid rgb(231, 231, 231);
 }
 
 .ubw-button-out{
-	color:#555555;
-	background-image: url(../images/button_out.gif);
-	border-left:2px solid rgb(231, 231, 233);
-	border-right:2px solid rgb(231, 231, 233);
-	border-bottom:2px solid rgb(221, 221, 223);
-	border-top:2px solid rgb(241, 241, 244);
+    color:#555555;
+    background-image: url(../images/button_out.gif);
+    border-left:2px solid rgb(231, 231, 233);
+    border-right:2px solid rgb(231, 231, 233);
+    border-bottom:2px solid rgb(221, 221, 223);
+    border-top:2px solid rgb(241, 241, 244);
 }
 
 span.colored{
-	color: #0080ff;
+    color: #0080ff;
 }
 
 
@@ -217,8 +221,8 @@ span.colored{
 
 
 .menuElement{
-	position: relative;
-	float:right;
+    position: relative;
+    float:right;
 }
 
 
diff --git a/Sankore-3.1/resources/library/applications/Notes.wgt/js/jquery.ubwidget.js b/Sankore-3.1/resources/library/applications/Notes.wgt/js/jquery.ubwidget.js
index a4eba53..c27b5c1 100644
--- a/Sankore-3.1/resources/library/applications/Notes.wgt/js/jquery.ubwidget.js
+++ b/Sankore-3.1/resources/library/applications/Notes.wgt/js/jquery.ubwidget.js
@@ -29,8 +29,6 @@
 	// Default options
 	
 	jQuery.fn.ubwidget.defaults = {
-		width:250,
-		height:300
 	};
 	
 	// Shadows
diff --git a/Sankore-3.1/resources/library/applications/Notes.wgt/js/ubw-main.js b/Sankore-3.1/resources/library/applications/Notes.wgt/js/ubw-main.js
index de5c2ed..cf3af54 100644
--- a/Sankore-3.1/resources/library/applications/Notes.wgt/js/ubw-main.js
+++ b/Sankore-3.1/resources/library/applications/Notes.wgt/js/ubw-main.js
@@ -16,8 +16,8 @@
 function init(){
 	
     var ubwidget = $("#ubwidget").ubwidget({
-        width:360,
-        height:240
+//        width:360,
+//        height:240
     });
 	
     var checkMinimize = false;
@@ -77,10 +77,13 @@ function init(){
 				
             if(window.sankore){
                 window.sankore.setPreference("fontSize", newFontSize);
-            };
+            }
 				
             if(!checkMinimize)
                 textField.focus();
+            
+            var sel = window.getSelection();
+            sel.removeAllRanges();
         });
 			
     fontUp.click(
@@ -95,14 +98,17 @@ function init(){
 				
             if(window.sankore){
                 window.sankore.setPreference("fontSize", newFontSize);
-            };
+            }
 				
             if(!checkMinimize)
                 textField.focus();
+            var sel = window.getSelection();
+            sel.removeAllRanges();
         });
 			
     minimize.click(
         function(){
+            $('.ubw-container').css("min-height", "26px")
             $('.ubw-container').animate({
                 height:"26px"
             },500);
@@ -118,11 +124,11 @@ function init(){
         });
 			
     maximize.click(
-        function(){
+        function(){            
             var lastHeight = String(minimizedHeight)+'px';
             $('.ubw-container').animate({
                 height: lastHeight
-            },500);
+            },500, function(){$('.ubw-container').css("min-height", "200px").css("height","")});
 
             maximize.hide();
             minimize.show();
@@ -185,8 +191,8 @@ function init(){
         text = window.sankore.preference('noteText', text);
         currentFontSize = window.sankore.preference('fontSize', defaultFontSize);
         $('.ubw-container').css({
-            width:window.innerWidth - 2,
-            height:window.innerHeight - 20
+//            width:window.innerWidth - 2,
+//            height:window.innerHeight - 20
         });
 
         if(checkMinimize){
@@ -207,26 +213,32 @@ function init(){
         winwidth = window.innerWidth;
         winheight = window.innerHeight;
 		  	
-        if(winwidth <= 290)
-        {
-            window.resizeTo(290,winheight);
-        }
-        if(winheight <= 100)
-        {
-            window.resizeTo(winwidth,100);
-        }
-        if(winheight > 600)
-        {
-            window.resizeTo(winwidth,600);
-        }      		
+//        if(winwidth <= 290)
+//        {
+//            window.resizeTo(290,winheight);
+//        }
+//        if(winheight <= 100)
+//        {
+//            window.resizeTo(winwidth,100);
+//        }
+//        if(winheight > 600)
+//        {
+//            window.resizeTo(winwidth,600);
+//        }      		
 
-        $('.ubw-container').width(winwidth-2);
-			
+//        $('.ubw-container').width(winwidth-2);
+//			
         if(checkMinimize)					
             minimizedHeight = winheight-40; 
-        else
-            $('.ubw-container').height(winheight-40);
+
 
         controlTextField();  
     }
-}
\ No newline at end of file
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            window.sankore.setPreference("noteText", textField.html());
+            window.sankore.setPreference("fontSize", newFontSize);
+        }
+    }
+}
diff --git a/Sankore-3.1/resources/library/applications/Notes.wgt/ubw-main.js b/Sankore-3.1/resources/library/applications/Notes.wgt/ubw-main.js
deleted file mode 100644
index 1e86c2a..0000000
--- a/Sankore-3.1/resources/library/applications/Notes.wgt/ubw-main.js
+++ /dev/null
@@ -1,211 +0,0 @@
-function init(){
-	
-	var ubwidget = $("#ubwidget").ubwidget({
-			width:300,
-			height:240
-		});
-	
-	var text = "";
-	var winwidth;
-	var minimizedHeight;
-	var winheight;
-	var scroll = false;
-	var defaultFontSize = 35;
-	var currentFontSize = defaultFontSize;
-	var header = $('<div id="head"><input id="headtitle" class="stickytitle" readonly="readonly"></input></div>');
-	var fontUp = $('<img src="images/stick-but-aplus.png">');
-	var fontDown = $('<img src="images/stick-but-aminus.png">');
-	var minimize =  $('<img src="images/stick-but-minimize.png">');
-	var maximize = $('<img src="images/stick-but-maximize.png">');
-	var title = $('<div id="menu"></div>');
-	var textField = $('<div id="txt"></div>');
-	var shadow = $("<table width='100%' height='18' border='0' cellspacing='0' cellpadding='0'><tr><td id='sl' width='139'></td><td id='sc' style='background-image:url(images/shadowcenter.png)'> </td><td id='sr' width='139'></td></tr></table>")
-		.appendTo("body");
-	var shadowleft = $("<img src='images/shadowleft.png'>")
-		.appendTo($("#sl"));
-	var shadowright = $("<img src='images/shadowright.png'>")
-		.appendTo($("#sr"));
-		
-		$("#ubwidget")
-			.append(header)
-			.append(textField);
-		
-		fontUp.addClass('menuElement');
-		fontDown.addClass('menuElement');
-		minimize.addClass('menuElement');
-		maximize.addClass('menuElement')
-			.hide();
-		
-		header.append(maximize)
-			.append(minimize)
-			.append(fontUp)
-			.append(fontDown);
-	var titletext = header.find('textarea');
-		
-		titletext.click(
-			function(){
-			
-				titletext.focus();			
-				
-			});
-			
-		fontDown.click(
-			function(){
-				
-				var newFontSize = parseInt(currentFontSize) - 3;
-				
-				textField.css({
-					fontSize : newFontSize
-				})
-				
-				controlTextField();
-				
-				if(window.sankore){
-					window.sankore.setPreference("fontSize", newFontSize);
-				};
-				
-				//textField.focus();
-			});
-			
-		fontUp.click(
-			function(){
-				
-				var newFontSize = parseInt(currentFontSize) + 3;
-				
-				textField.css({
-					fontSize : newFontSize
-				})
-				
-				controlTextField();
-				
-				if(window.sankore){
-					window.sankore.setPreference("fontSize", newFontSize);
-				};
-				
-				//textField.focus();
-			});
-			
-		minimize.click(
-			function(){
-				$('.ubw-container').animate({height:"26px"},100);
-				minimizedHeight = $('.ubw-container').height() ; 
-				minimize.hide();
-				maximize.show();
-				$('#headtitle').show();
-				window.resizeTo($('.ubw-container').width(),0);
-				
-				if(window.sankore){
-					window.sankore.setPreference("minimized", "true");
-				};
-			});
-			
-		maximize.click(
-			function(){
-				var lastHeight = String(minimizedHeight)+'px';
-				$('.ubw-container').animate({height: lastHeight},100);
-
-				maximize.hide();
-				minimize.show();
-				$('#headtitle').hide();
-
-				window.resizeTo($('.ubw-container').width()+15,minimizedHeight+20);
-				
-				if(window.sankore){
-					window.sankore.setPreference("minimized", "false");
-				};
-			});			
-				
-		header
-			.append(title);
-		title
-			.addClass('menu');
-		header
-			.addClass('head');
-		textField
-			.addClass("textField")
-			.css("fontSize",currentFontSize)
-			.attr('contentEditable','true')
-			.keyup(function(){
-				if(window.sankore){
-					window.sankore.setPreference("text", textField.html());
-				}
-				controlTextField();
-				$('#headtitle').hide();
-			});
-		if(textField.html().length === 0){
-			textField.focus();
-		}
-		titletext
-			.attr('rows','1');
-			
-	function controlTextField(){	
-		if(textField.text().length < 25){
-			var titleStr =  textField.text() + '...';
-			$('#headtitle').val(titleStr);
-		}	
-		
-		textField.css({
-			height : $('.ubw-container').height()-28,
-		})
-		
-		if(textField.text().length == 0){
-			textField.css({	
-				fontSize: defaultFontSize,
-			});
-		}
-		
-		currentFontSize = textField.css('fontSize').replace('px','');
-	
-	}	
-	
-	textField.bind('paste', function(e) {	
-		controlTextField();			
-    });	
-	$('#headtitle').hide();
-	if(window.sankore){
-		text = window.sankore.preference('text', text);
-		currentFontSize = window.sankore.preference('fontSize', defaultFontSize);
-		
-		$('.ubw-container').css({
-			width:parseInt(window.sankore.preference('width', "300")),
-			height:parseInt(window.sankore.preference('height', "240"))
-		});
-
-		if(window.sankore.preference('minimized', "false") == "true"){
-			minimize.trigger("click");
-		};
-
-		textField.css({
-			fontSize : parseInt(currentFontSize)
-		})
-		textField.html(text);
-	}		
-				
-	  window.onresize = function(){
-		  winwidth = window.innerWidth;
-		  winheight = window.innerHeight;
-		  	
-		  	if(winwidth <= 290)
-		  	{
-		  		window.resizeTo(290,winheight);
-		  	}
-		  	if(winheight <= 100)
-		  	{
-		  		window.resizeTo(winwidth,100);
-		  	}
-		  	if(winheight > 600)
-		  	{
-		  		window.resizeTo(winwidth,600);
-		  	}
-      			
-      		$('.ubw-container').width(winwidth-2) ;
-      		$('.ubw-container').height(winheight-20) ; 
-
-			if(window.sankore){
-				window.sankore.setPreference("width", winwidth-2);
-				window.sankore.setPreference("height", winheight-20);
-			}
-
-      		controlTextField();  
-      }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/Nuancier.wgt/css/layout.css b/Sankore-3.1/resources/library/applications/Nuancier.wgt/css/layout.css
index f25d0c0..f81f88c 100644
--- a/Sankore-3.1/resources/library/applications/Nuancier.wgt/css/layout.css
+++ b/Sankore-3.1/resources/library/applications/Nuancier.wgt/css/layout.css
@@ -34,6 +34,8 @@ html, body {
 	font-size: 12px;
 	line-height: 18px;
 	color: #52697E;
+        width: 100%;
+        height: 100%;
 }
 body {
 	text-align: center;
diff --git a/Sankore-3.1/resources/library/applications/Nuancier.wgt/index.html b/Sankore-3.1/resources/library/applications/Nuancier.wgt/index.html
index 073a620..772d9e8 100644
--- a/Sankore-3.1/resources/library/applications/Nuancier.wgt/index.html
+++ b/Sankore-3.1/resources/library/applications/Nuancier.wgt/index.html
@@ -4,7 +4,7 @@
         <link rel="stylesheet" href="css/colorpicker.css" type="text/css" />
         <link rel="stylesheet" media="screen" type="text/css" href="css/layout.css" />
         <title>ColorPicker - jQuery plugin</title>
-        <script type="text/javascript" src="js/jquery.js"></script>
+        <script type="text/javascript" src="js/jquery-1.8.1.min.js"></script>
         <script type="text/javascript" src="js/colorpicker.js"></script>
         <script type="text/javascript" src="js/eye.js"></script>
         <script type="text/javascript" src="js/utils.js"></script>
diff --git a/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/colorpicker.js b/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/colorpicker.js
index 63bdb6d..b5ac79e 100644
--- a/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/colorpicker.js
+++ b/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/colorpicker.js
@@ -5,12 +5,16 @@
  * 
  * Dual licensed under the MIT and GPL licenses
  * 
- */
+ */                
 (function ($) {
     var ColorPicker = function () {
         var
         ids = {},
         penFlag = true,
+        tmpColor = {
+            a:"",
+            b:""
+        },
         inAction,
         charMin = 65,
         visible,
@@ -66,12 +70,12 @@
                 $("div.tools_change").removeClass("tools_compass");
                 window.sankore.setTool('pen');              
                 window.sankore.setPenColor('#' + HSBToHex(hsb));
-                sankore.returnStatus("PEN installed", penFlag);
+                //sankore.returnStatus("PEN installed", penFlag);
             } else {
                 $("div.tools_change").addClass("tools_compass");
                 window.sankore.setTool('compass');              
                 window.sankore.setPenColor('#' + HSBToHex(hsb));
-                sankore.returnStatus("Compass installed", penFlag);
+                //sankore.returnStatus("Compass installed", penFlag);
             }
         },
         keyDown = function (ev) {
@@ -108,7 +112,10 @@
             }				
             setSelector(col, cal.get(0));
             setHue(col, cal.get(0));
-            setNewColor(col, cal.get(0));
+            //setNewColor(col, cal.get(0));
+            $(cal.get(0)).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(col));
+            tmpColor.a = cal.get(0);
+            tmpColor.b = col;
             cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
         },
         blur = function (ev) {
@@ -174,14 +181,25 @@
             $(document).unbind('mousemove', moveHue);
             return false;
         },
-        downSelector = function (ev) {
+        downSelector = function (ev) {            
             var current = {
                 cal: $(this).parent(),
                 pos: $(this).offset()
             };
-            current.preview = current.cal.data('colorpicker').livePreview;
+            current.preview = current.cal.data('colorpicker').livePreview;            
             $(document).bind('mouseup', current, upSelector);
             $(document).bind('mousemove', current, moveSelector);
+            change.apply(
+                current.cal.data('colorpicker')
+                .fields
+                .eq(6)
+                .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - current.pos.top))))/150, 10))
+                .end()
+                .eq(5)
+                .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - current.pos.left))))/150, 10))
+                .get(0),
+                [current.preview]
+                );
         },
         moveSelector = function (ev) {
             change.apply(
@@ -202,6 +220,18 @@
             fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
             $(document).unbind('mouseup', upSelector);
             $(document).unbind('mousemove', moveSelector);
+            if(penFlag){
+                $("div.tools_change").removeClass("tools_compass");
+                window.sankore.setTool('pen');
+                window.sankore.setPenColor('#' + HSBToHex(tmpColor.b));
+                //sankore.returnStatus("PEN installed", penFlag);
+            } else {
+                $("div.tools_change").addClass("tools_compass");
+                window.sankore.setTool('compass');
+                window.sankore.setPenColor('#' + HSBToHex(tmpColor.b));
+                //sankore.returnStatus("Compass installed", penFlag);
+            }
+            //$(tmpColor.a).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(tmpColor.b));
             return false;
         },
         enterSubmit = function (ev) {
@@ -231,7 +261,7 @@
             cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
             penFlag = (penFlag)?false:true;
             setNewColor(col, cal.get(0));
-            sankore.returnStatus("startEditing()", penFlag);
+            //sankore.returnStatus("startEditing()", penFlag);
         },
         show = function (ev) {
             var cal = $('#' + $(this).data('colorpickerId'));
@@ -249,7 +279,7 @@
             cal.css({
                 left: left + 'px', 
                 top: top + 'px'
-                });
+            });
             if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
                 cal.show();
             }
@@ -325,7 +355,7 @@
                 r: hex >> 16, 
                 g: (hex & 0x00FF00) >> 8, 
                 b: (hex & 0x0000FF)
-                };
+            };
         },
         HexToHSB = function (hex) {
             return RGBToHSB(HexToRGB(hex));
@@ -379,43 +409,43 @@
                     rgb.r=t1;
                     rgb.b=t2;
                     rgb.g=t2+t3
-                    }
+                }
                 else if(h<120) {
                     rgb.g=t1;
                     rgb.b=t2;
                     rgb.r=t1-t3
-                    }
+                }
                 else if(h<180) {
                     rgb.g=t1;
                     rgb.r=t2;
                     rgb.b=t2+t3
-                    }
+                }
                 else if(h<240) {
                     rgb.b=t1;
                     rgb.r=t2;
                     rgb.g=t1-t3
-                    }
+                }
                 else if(h<300) {
                     rgb.b=t1;
                     rgb.g=t2;
                     rgb.r=t2+t3
-                    }
+                }
                 else if(h<360) {
                     rgb.r=t1;
                     rgb.g=t2;
                     rgb.b=t1-t3
-                    }
+                }
                 else {
                     rgb.r=0;
                     rgb.g=0;
                     rgb.b=0
-                    }
+                }
             }
             return {
                 r:Math.round(rgb.r), 
                 g:Math.round(rgb.g), 
                 b:Math.round(rgb.b)
-                };
+            };
         },
         RGBToHex = function (rgb) {
             var hex = [
@@ -433,6 +463,9 @@
         HSBToHex = function (hsb) {
             return RGBToHex(HSBToRGB(hsb));
         },
+        //        changeCursor = function (flag) {
+        //            alert(flag)
+        //        },
         restoreOriginal = function () {
             var cal = $(this).parent();
             var col = cal.data('colorpicker').origColor;
@@ -446,6 +479,15 @@
         };
         return {
             init: function (opt) {
+                if(window.sankore)
+                    sankore.setTool("arrow");              
+                //                $(document).mouseout(function(event){
+                //                    if(event.target.tagName == "DIV" && event.target.className == "colorpicker")
+                //                        changeCursor(true)
+                //                })
+                //                $("body").mouseleave(function(){
+                //                    changeCursor(true)
+                //                })
                 opt = $.extend({}, defaults, opt||{});
                 if (typeof opt.color == 'string') {
                     opt.color = HexToHSB(opt.color);
@@ -465,9 +507,13 @@
                         var cal = $(tpl).attr('id', id);
                         if (options.flat) {
                             cal.appendTo(this).show();
-                        } else {
+                        }
+                        else {
                             cal.appendTo(document.body);
                         }
+                        //                        cal.bind("mouseover", function(){
+                        //                            window.sankore.setTool('arrow');
+                        //                        })
                         options.fields = cal
                         .find('input')
                         .bind('keyup', keyDown)
@@ -558,4 +604,4 @@
         ColorPickerShow: ColorPicker.showPicker,
         ColorPickerSetColor: ColorPicker.setColor
     });
-})(jQuery)
\ No newline at end of file
+})(jQuery)
diff --git a/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js b/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js
new file mode 100644
index 0000000..ee68f35
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v at 1.8.1 jquery.com | jquery.org/license */
+(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bZ(c)&&(e[f]=p._data(c,"olddisplay",cc(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function ca(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bV[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bV[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bV[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bV[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bV[e]+"Width"))||0));return f}function cb(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?"border":"content"),e)+"px"}function cc(a){if(bS[a])return bS[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cA(a,c,d,e,"*",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,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(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(" ")?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":a.toString().replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.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=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||f.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e==="function"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!=="string"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")===0&&(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",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){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)d=p._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,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=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);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{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)~f.indexOf(" "+b[g]+" ")||(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._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,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.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,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.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,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.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):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.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;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,k,l,m,n=(p._data(this,"events")||{})[c.type]||[],o=n.delegateCount,q=[].slice.call(arguments),r=!c.exclusive&&!c.namespace,s=p.event.special[c.type]||{},t=[];q[0]=c,c.delegateTarget=this;if(s.preDispatch&&s.preDispatch.call(this,c)===!1)return;if(o&&(!c.button||c.type!=="click"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){h={},j=[];for(d=0;d<o;d++)k=n[d],l=k.selector,h[l]===b&&(h[l]=p(l,this).index(f)>=0),h[l]&&j.push(k);j.length&&t.push({elem:f,matches:j})}n.length>o&&t.push({elem:this,matches:n.slice(o)});for(d=0;d<t.length&&!c.isPropagationStopped();d++){i=t[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){k=i.matches[e];if(r||!c.namespace&&!k.namespace||c.namespace_re&&c.namespace_re.test(k.namespace))c.data=k.data,c.handleObj=k,g=((p.event.special[k.origType]||{}).handle||k.handler).apply(i.elem,q),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return s.postDispatch&&s.postDispatch.call(this,c),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){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(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(){return p.event.remove(this,"._change"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);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=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.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){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),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(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),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)}}),p.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){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function $(a,b,c,d){c=c||[],b=b||q;var e,f,g,j,k=b.nodeType;if(k!==1&&k!==9)return[];if(!a||typeof a!="string")return c;g=h(b);if(!g&&!d)if(e=L.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&i(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return u.apply(c,t.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&X&&b.getElementsByClassName)return u.apply(c,t.call(b.getElementsByClassName(j),0)),c}return bk(a,b,c,d,g)}function _(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function ba(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bb(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 bc(a,b,c,d){var e,g,h,i,j,k,l,m,n,p,r=!c&&b!==q,s=(r?"<s>":"")+a.replace(H,"$1<s>"),u=y[o][s];if(u)return d?0:t.call(u,0);j=a,k=[],m=0,n=f.preFilter,p=f.filter;while(j){if(!e||(g=I.exec(j)))g&&(j=j.slice(g[0].length),h.selector=l),k.push(h=[]),l="",r&&(j=" "+j);e=!1;if(g=J.exec(j))l+=g[0],j=j.slice(g[0].length),e=h.push({part:g.pop().replace(H," "),string:g[0],captures:g});for(i in p)(g=S[i].exec(j))&&(!n[i]||(g=n[i](g,b,c)))&&(l+=g[0],j=j.slice(g[0].length),e=h.push({part:i,string:g.shift(),captures:g}));if(!e)break}return l&&(h.selector=l),d?j.length:j?$.error(a):t.call(y(s,k),0)}function bd(a,b,e,f){var g=b.dir,h=s++;return a||(a=function(a){return a===e}),b.first?function(b){while(b=b[g])if(b.nodeType===1)return a(b)&&b}:f?function(b){while(b=b[g])if(b.nodeType===1&&a(b))return b}:function(b){var e,f=h+"."+c,i=f+"."+d;while(b=b[g])if(b.nodeType===1){if((e=b[o])===i)return b.sizset;if(typeof e=="string"&&e.indexOf(f)===0){if(b.sizset)return b}else{b[o]=i;if(a(b))return b.sizset=!0,b;b.sizset=!1}}}}function be(a,b){return a?function(c){var d=b(c);return d&&a(d===!0?c:d)}:b}function bf(a,b,c){var d,e,g=0;for(;d=a[g];g++)f.relative[d.part]?e=bd(e,f.relative[d.part],b,c):e=be(e,f.filter[d.part].apply(null,d.captures.concat(b,c)));return e}function bg(a){return function(b){var c,d=0;for(;c=a[d];d++)if(c(b))return!0;return!1}}function bh(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)$(a,b[e],c,d)}function bi(a,b,c,d,e,g){var h,i=f.setFilters[b.toLowerCase()];return i||$.error(b),(a||!(h=e))&&bh(a||"*",d,h=[],e),h.length>0?i(h,c,g):[]}function bj(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=0,t=a.length,v=S.POS,w=new RegExp("^"+v.source+"(?!"+A+")","i"),x=function(){var a=1,c=arguments.length-2;for(;a<c;a++)arguments[a]===b&&(n[a]=b)};for(;s<t;s++){f=a[s],g="",m=e;for(h=0,i=f.length;h<i;h++){j=f[h],k=j.string;if(j.part==="PSEUDO"){v.exec(""),l=0;while(n=v.exec(k)){o=!0,p=v.lastIndex=n.index+n[0].length;if(p>l){g+=k.slice(l,n.index),l=p,q=[c],J.test(g)&&(m&&(q=m),m=e);if(r=O.test(g))g=g.slice(0,-5).replace(J,"$&*"),l++;n.length>1&&n[0].replace(w,x),m=bi(g,n[1],n[2],q,m,r)}g=""}}o||(g+=k),o=!1}g?J.test(g)?bh(g,m||[c],d,e):$(g,c,d,e?e.concat(m):m):u.apply(d,m)}return t===1?d:$.uniqueSort(d)}function bk(a,b,e,g,h){a=a.replace(H,"$1");var i,k,l,m,n,o,p,q,r,s,v=bc(a,b,h),w=b.nodeType;if(S.POS.test(a))return bj(v,b,e,g);if(g)i=t.call(g,0);else if(v.length===1){if((o=t.call(v[0],0)).length>2&&(p=o[0]).part==="ID"&&w===9&&!h&&f.relative[o[1].part]){b=f.find.ID(p.captures[0].replace(R,""),b,h)[0];if(!b)return e;a=a.slice(o.shift().string.length)}r=(v=N.exec(o[0].string))&&!v.index&&b.parentNode||b,q="";for(n=o.length-1;n>=0;n--){p=o[n],s=p.part,q=p.string+q;if(f.relative[s])break;if(f.order.test(s)){i=f.find[s](p.captures[0].replace(R,""),r,h);if(i==null)continue;a=a.slice(0,a.length-q.length)+q.replace(S[s],""),a||u.apply(e,t.call(i,0));break}}}if(a){k=j(a,b,h),c=k.dirruns++,i==null&&(i=f.find.TAG("*",N.test(a)&&b.parentNode||b));for(n=0;m=i[n];n++)d=k.runs++,k(m)&&e.push(m)}return e}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=a.document,r=q.documentElement,s=0,t=[].slice,u=[].push,v=function(a,b){return a[o]=b||!0,a},w=function(){var a={},b=[];return v(function(c,d){return b.push(c)>f.cacheLength&&delete a[b.shift()],a[c]=d},a)},x=w(),y=w(),z=w(),A="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",C=B.replace("w","w#"),D="([*^$|!~]?=)",E="\\["+A+"*("+B+")"+A+"*(?:"+D+A+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)"+A+"*\\]",F=":("+B+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+E+")|[^:]|\\\\.)*|.*))\\)|)",G=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",H=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),I=new RegExp("^"+A+"*,"+A+"*"),J=new RegExp("^"+A+"*([\\x20\\t\\r\\n\\f>+~])"+A+"*"),K=new RegExp(F),L=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,M=/^:not/,N=/[\x20\t\r\n\f]*[+~]/,O=/:not\($/,P=/h\d/i,Q=/input|select|textarea|button/i,R=/\\(?!\\)/g,S={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),NAME:new RegExp("^\\[name=['\"]?("+B+")['\"]?\\]"),TAG:new RegExp("^("+B.replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),POS:new RegExp(G,"ig"),needsContext:new RegExp("^"+A+"*[>+~]|"+G,"i")},T=function(a){var b=q.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},U=T(function(a){return a.appendChild(q.createComment("")),!a.getElementsByTagName("*").length}),V=T(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),W=T(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),X=T(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),Y=T(function(a){a.id=o+0,a.innerHTML="<a name='"+o+"'></a><div name='"+o+"'></div>",r.insertBefore(a,r.firstChild);var b=q.getElementsByName&&q.getElementsByName(o).length===2+q.getElementsByName(o+0).length;return e=!q.getElementById(o),r.removeChild(a),b});try{t.call(r.childNodes,0)[0].nodeType}catch(Z){t=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}$.matches=function(a,b){return $(a,null,null,b)},$.matchesSelector=function(a,b){return $(b,null,null,[a]).length>0},g=$.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=g(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=g(b);return c},h=$.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},i=$.contains=r.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:r.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},$.attr=function(a,b){var c,d=h(a);return d||(b=b.toLowerCase()),f.attrHandle[b]?f.attrHandle[b](a):W||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},f=$.selectors={cacheLength:50,createPseudo:v,match:S,order:new RegExp("ID|TAG"+(Y?"|NAME":"")+(X?"|CLASS":"")),attrHandle:V?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:e?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:U?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(R,""),a[3]=(a[4]||a[5]||"").replace(R,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||$.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&$.error(a[0]),a},PSEUDO:function(a,b,c){var d,e;if(S.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(d=a[4])K.test(d)&&(e=bc(d,b,c,!0))&&(e=d.indexOf(")",d.length-e)-d.length)&&(d=d.slice(0,e),a[0]=a[0].slice(0,e)),a[2]=d;return a.slice(0,3)}},filter:{ID:e?function(a){return a=a.replace(R,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(R,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(R,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=x[o][a];return b||(b=x(a,new RegExp("(^|"+A+")"+a+"("+A+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=$.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return $.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=s++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[o]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[o]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e,g=f.pseudos[a]||f.pseudos[a.toLowerCase()];return g||$.error("unsupported pseudo: "+a),g[o]?g(b,c,d):g.length>1?(e=[a,a,"",b],function(a){return g(a,0,e)}):g}},pseudos:{not:v(function(a,b,c){var d=j(a.replace(H,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!f.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:v(function(a){return function(b){return(b.textContent||b.innerText||g(b)).indexOf(a)>-1}}),has:v(function(a){return function(b){return $(a,b).length>0}}),header:function(a){return P.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:_("radio"),checkbox:_("checkbox"),file:_("file"),password:_("password"),image:_("image"),submit:ba("submit"),reset:ba("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return Q.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},odd:function(a,b,c){var d=[],e=c?0:1,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},lt:function(a,b,c){return c?a.slice(+b):a.slice(0,+b)},gt:function(a,b,c){return c?a.slice(0,+b+1):a.slice(+b+1)},eq:function(a,b,c){var d=a.splice(+b,1);return c?a:d}}},k=r.compareDocumentPosition?function(a,b){return a===b?(l=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return l=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bb(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bb(e[j],f[j]);return j===c?bb(a,f[j],-1):bb(e[j],b,1)},[0,0].sort(k),m=!l,$.uniqueSort=function(a){var b,c=1;l=m,a.sort(k);if(l)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},$.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},j=$.compile=function(a,b,c){var d,e,f,g=z[o][a];if(g&&g.context===b)return g;d=bc(a,b,c);for(e=0,f=d.length;e<f;e++)d[e]=bf(d[e],b,c);return g=z(a,bg(d)),g.context=b,g.runs=g.dirruns=0,g},q.querySelectorAll&&function(){var a,b=bk,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[],f=[":active"],g=r.matchesSelector||r.mozMatchesSelector||r.webkitMatchesSelector||r.oMatchesSelector||r.msMatchesSelector;T(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+A+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+A+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'/>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bk=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return u.apply(f,t.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j,k,l,m=d.getAttribute("id"),n=m||o,p=N.test(a)&&d.parentNode||d;m?n=n.replace(c,"\\$&"):d.setAttribute("id",n),j=bc(a,d,h),n="[id='"+n+"']";for(k=0,l=j.length;k<l;k++)j[k]=n+j[k].selector;try{return u.apply(f,t.call(p.querySelectorAll(j.join(",")),0)),f}catch(i){}finally{m||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push(S.PSEUDO.source,S.POS.source,"!=")}catch(c){}}),f=new RegExp(f.join("|")),$.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!h(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=g.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return $(c,null,null,[b]).length>0})}(),f.setFilters.nth=f.setFilters.eq,f.filters=f.pseudos,$.attr=p.attr,p.find=$,p.expr=$.selectors,p.expr[":"]=p.expr.pseudos,p.unique=$.uniqueSort,p.text=$.getText,p.isXMLDoc=$.isXML,p.contains=$.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={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,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(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){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{cj=f.href}catch(cy){cj=e.createElement("a"),cj.href="",cj=cj.href}ck=ct.exec(cj.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:cj,isLocal:cn.test(ck[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,ck[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==ck[1]&&i[2]==ck[2]&&(i[3]||(i[1]==="http:"?80:443))==(ck[3]||(ck[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cQ.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$("show"),slideUp:c$("hide"),slideToggle:c$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j,k,l,m=this[0],n=m&&m.ownerDocument;if(!n)return;return(e=n.body)===m?p.offset.bodyOffset(m):(d=n.documentElement,p.contains(d,m)?(c=m.getBoundingClientRect(),f=da(n),g=d.clientTop||e.clientTop||0,h=d.clientLeft||e.clientLeft||0,i=f.pageYOffset||d.scrollTop,j=f.pageXOffset||d.scrollLeft,k=c.top+i-g,l=c.left+j-h,{top:k,left:l}):{top:0,left:0})},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/OpenLayers.js b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/OpenLayers.js
new file mode 100644
index 0000000..9523007
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/OpenLayers.js
@@ -0,0 +1,2885 @@
+/*
+
+  OpenLayers.js -- OpenLayers Map Viewer Library
+
+  Copyright 2005-2011 OpenLayers Contributors, released under the FreeBSD
+  license. Please see http://svn.openlayers.org/trunk/openlayers/license.txt
+  for the full text of the license.
+
+  Includes compressed code under the following licenses:
+
+  (For uncompressed versions of the code used please see the
+  OpenLayers SVN repository: <http://openlayers.org/>)
+
+*/
+
+/* Contains portions of Prototype.js:
+ *
+ * Prototype JavaScript framework, version 1.4.0
+ *  (c) 2005 Sam Stephenson <sam at conio.net>
+ *
+ *  Prototype is freely distributable under the terms of an MIT-style license.
+ *  For details, see the Prototype web site: http://prototype.conio.net/
+ *
+ *--------------------------------------------------------------------------*/
+
+/**  
+*  
+*  Contains portions of Rico <http://openrico.org/>
+* 
+*  Copyright 2005 Sabre Airline Solutions  
+*  
+*  Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0  
+*  
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+*  implied. See the License for the specific language governing
+*  permissions and limitations under the License. 
+*
+**/
+
+/**
+ * Contains XMLHttpRequest.js <http://code.google.com/p/xmlhttprequest/>
+ * Copyright 2007 Sergey Ilinsky (http://www.ilinsky.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ */
+
+/**
+ * Contains portions of Gears <http://code.google.com/apis/gears/>
+ *
+ * Copyright 2007, Google Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *  1. Redistributions of source code must retain the above copyright notice,
+ *     this list of conditions and the following disclaimer.
+ *  2. 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.
+ *  3. Neither the name of Google Inc. nor the names of its contributors may be
+ *     used to endorse or promote products derived from this software without
+ *     specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ *
+ * Sets up google.gears.*, which is *the only* supported way to access Gears.
+ *
+ * Circumvent this file at your own risk!
+ *
+ * In the future, Gears may automatically define google.gears.* without this
+ * file. Gears may use these objects to transparently fix bugs and compatibility
+ * issues. Applications that use the code below will continue to work seamlessly
+ * when that happens.
+ */
+
+/**
+ * OpenLayers.Util.pagePosition is based on Yahoo's getXY method, which is
+ * Copyright (c) 2006, 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.
+ */(function(){if(window.google&&google.gears){return;}
+var factory=null;if(typeof GearsFactory!='undefined'){factory=new GearsFactory();}else{try{factory=new ActiveXObject('Gears.Factory');if(factory.getBuildInfo().indexOf('ie_mobile')!=-1){factory.privateSetGlobalObject(this);}}catch(e){if((typeof navigator.mimeTypes!='undefined')&&navigator.mimeTypes["application/x-googlegears"]){factory=document.createElement("object");factory.style.display="none";factory.width=0;factory.height=0;factory.type="application/x-googlegears";document.documentElement.appendChild(factory);}}}
+if(!factory){return;}
+if(!window.google){google={};}
+if(!google.gears){google.gears={factory:factory};}})();var OpenLayers={VERSION_NUMBER:"Release 2.11",singleFile:true,_getScriptLocation:(function(){var r=new RegExp("(^|(.*?\\/))(OpenLayers\.js)(\\?|$)"),s=document.getElementsByTagName('script'),src,m,l="";for(var i=0,len=s.length;i<len;i++){src=s[i].getAttribute('src');if(src){var m=src.match(r);if(m){l=m[1];break;}}}
+return(function(){return l;});})()};OpenLayers.Class=function(){var len=arguments.length;var P=arguments[0];var F=arguments[len-1];var C=typeof F.initialize=="function"?F.initialize:function(){P.prototype.initialize.apply(this,arguments);};if(len>1){var newArgs=[C,P].concat(Array.prototype.slice.call(arguments).slice(1,len-1),F);OpenLayers.inherit.apply(null,newArgs);}else{C.prototype=F;}
+return C;};OpenLayers.Class.isPrototype=function(){};OpenLayers.Class.create=function(){return function(){if(arguments&&arguments[0]!=OpenLayers.Class.isPrototype){this.initialize.apply(this,arguments);}};};OpenLayers.Class.inherit=function(P){var C=function(){P.call(this);};var newArgs=[C].concat(Array.prototype.slice.call(arguments));OpenLayers.inherit.apply(null,newArgs);return C.prototype;};OpenLayers.inherit=function(C,P){var F=function(){};F.prototype=P.prototype;C.prototype=new F;var i,l,o;for(i=2,l=arguments.length;i<l;i++){o=arguments[i];if(typeof o==="function"){o=o.prototype;}
+OpenLayers.Util.extend(C.prototype,o);}};OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.extend=function(destination,source){destination=destination||{};if(source){for(var property in source){var value=source[property];if(value!==undefined){destination[property]=value;}}
+var sourceIsEvt=typeof window.Event=="function"&&source instanceof window.Event;if(!sourceIsEvt&&source.hasOwnProperty&&source.hasOwnProperty("toString")){destination.toString=source.toString;}}
+return destination;};OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:true,defaultFilter:null,initialize:function(options){options=options||{};OpenLayers.Util.extend(this,options);this.options=options;},mergeWithDefaultFilter:function(filter){var merged;if(filter&&this.defaultFilter){merged=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,filter]});}else{merged=filter||this.defaultFilter||undefined;}
+return merged;},destroy:function(){this.options=null;this.format=null;},read:function(options){options=options||{};options.filter=this.mergeWithDefaultFilter(options.filter);},create:function(){},update:function(){},"delete":function(){},commit:function(){},abort:function(response){},createCallback:function(method,response,options){return OpenLayers.Function.bind(function(){method.apply(this,[response,options]);},this);},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:true,features:null,reqFeatures:null,priv:null,error:null,initialize:function(options){OpenLayers.Util.extend(this,options);},success:function(){return this.code>0;},CLASS_NAME:"OpenLayers.Protocol.Response"});OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Protocol.SQL=OpenLayers.Class(OpenLayers.Protocol,{databaseName:'ol',tableName:"ol_vector_features",postReadFiltering:true,initialize:function(options){OpenLayers.Protocol.prototype.initialize.apply(this,[options]);},destroy:function(){OpenLayers.Protocol.prototype.destroy.apply(this);},supported:function(){return false;},evaluateFilter:function(feature,filter){return filter&&this.postReadFiltering?filter.evaluate(feature):true;},CLASS_NAME:"OpenLayers.Protocol.SQL"});OpenLayers.Console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){},userError:function(error){alert(error);},assert:function(){},dir:function(){},dirxml:function(){},trace:function(){},group:function(){},groupEnd:function(){},time:function(){},timeEnd:function(){},profile:function(){},profileEnd:function(){},count:function(){},CLASS_NAME:"OpenLayers.Console"};(function(){var scripts=document.getElementsByTagName("script");for(var i=0,len=scripts.length;i<len;++i){if(scripts[i].src.indexOf("firebug.js")!=-1){if(console){OpenLayers.Util.extend(OpenLayers.Console,console);break;}}}})();OpenLayers.Lang={code:null,defaultCode:"en",getCode:function(){if(!OpenLayers.Lang.code){OpenLayers.Lang.setCode();}
+return OpenLayers.Lang.code;},setCode:function(code){var lang;if(!code){code=(OpenLayers.BROWSER_NAME=="msie")?navigator.userLanguage:navigator.language;}
+var parts=code.split('-');parts[0]=parts[0].toLowerCase();if(typeof OpenLayers.Lang[parts[0]]=="object"){lang=parts[0];}
+if(parts[1]){var testLang=parts[0]+'-'+parts[1].toUpperCase();if(typeof OpenLayers.Lang[testLang]=="object"){lang=testLang;}}
+if(!lang){OpenLayers.Console.warn('Failed to find OpenLayers.Lang.'+parts.join("-")+' dictionary, falling back to default language');lang=OpenLayers.Lang.defaultCode;}
+OpenLayers.Lang.code=lang;},translate:function(key,context){var dictionary=OpenLayers.Lang[OpenLayers.Lang.getCode()];var message=dictionary&&dictionary[key];if(!message){message=key;}
+if(context){message=OpenLayers.String.format(message,context);}
+return message;}};OpenLayers.i18n=OpenLayers.Lang.translate;OpenLayers.String={startsWith:function(str,sub){return(str.indexOf(sub)==0);},contains:function(str,sub){return(str.indexOf(sub)!=-1);},trim:function(str){return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');},camelize:function(str){var oStringList=str.split('-');var camelizedString=oStringList[0];for(var i=1,len=oStringList.length;i<len;i++){var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1);}
+return camelizedString;},format:function(template,context,args){if(!context){context=window;}
+var replacer=function(str,match){var replacement;var subs=match.split(/\.+/);for(var i=0;i<subs.length;i++){if(i==0){replacement=context;}
+replacement=replacement[subs[i]];}
+if(typeof replacement=="function"){replacement=args?replacement.apply(null,args):replacement();}
+if(typeof replacement=='undefined'){return'undefined';}else{return replacement;}};return template.replace(OpenLayers.String.tokenRegEx,replacer);},tokenRegEx:/\$\{([\w.]+?)\}/g,numberRegEx:/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/,isNumeric:function(value){return OpenLayers.String.numberRegEx.test(value);},numericIf:function(value){return OpenLayers.String.isNumeric(value)?parseFloat(value):value;}};if(!String.prototype.startsWith){String.prototype.startsWith=function(sStart){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.startsWith'}));return OpenLayers.String.startsWith(this,sStart);};}
+if(!String.prototype.contains){String.prototype.contains=function(str){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.contains'}));return OpenLayers.String.contains(this,str);};}
+if(!String.prototype.trim){String.prototype.trim=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.trim'}));return OpenLayers.String.trim(this);};}
+if(!String.prototype.camelize){String.prototype.camelize=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.String.camelize'}));return OpenLayers.String.camelize(this);};}
+OpenLayers.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(num,sig){var fig=0;if(sig>0){fig=parseFloat(num.toPrecision(sig));}
+return fig;},format:function(num,dec,tsep,dsep){dec=(typeof dec!="undefined")?dec:0;tsep=(typeof tsep!="undefined")?tsep:OpenLayers.Number.thousandsSeparator;dsep=(typeof dsep!="undefined")?dsep:OpenLayers.Number.decimalSeparator;if(dec!=null){num=parseFloat(num.toFixed(dec));}
+var parts=num.toString().split(".");if(parts.length==1&&dec==null){dec=0;}
+var integer=parts[0];if(tsep){var thousands=/(-?[0-9]+)([0-9]{3})/;while(thousands.test(integer)){integer=integer.replace(thousands,"$1"+tsep+"$2");}}
+var str;if(dec==0){str=integer;}else{var rem=parts.length>1?parts[1]:"0";if(dec!=null){rem=rem+new Array(dec-rem.length+1).join("0");}
+str=integer+dsep+rem;}
+return str;}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(sig){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Number.limitSigDigs'}));return OpenLayers.Number.limitSigDigs(this,sig);};}
+OpenLayers.Function={bind:function(func,object){var args=Array.prototype.slice.apply(arguments,[2]);return function(){var newArgs=args.concat(Array.prototype.slice.apply(arguments,[0]));return func.apply(object,newArgs);};},bindAsEventListener:function(func,object){return function(event){return func.call(object,event||window.event);};},False:function(){return false;},True:function(){return true;},Void:function(){}};if(!Function.prototype.bind){Function.prototype.bind=function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Function.bind'}));Array.prototype.unshift.apply(arguments,[this]);return OpenLayers.Function.bind.apply(null,arguments);};}
+if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(object){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Function.bindAsEventListener'}));return OpenLayers.Function.bindAsEventListener(this,object);};}
+OpenLayers.Array={filter:function(array,callback,caller){var selected=[];if(Array.prototype.filter){selected=array.filter(callback,caller);}else{var len=array.length;if(typeof callback!="function"){throw new TypeError();}
+for(var i=0;i<len;i++){if(i in array){var val=array[i];if(callback.call(caller,val,i,array)){selected.push(val);}}}}
+return selected;}};OpenLayers.Bounds=OpenLayers.Class({left:null,bottom:null,right:null,top:null,centerLonLat:null,initialize:function(left,bottom,right,top){if(left!=null){this.left=OpenLayers.Util.toFloat(left);}
+if(bottom!=null){this.bottom=OpenLayers.Util.toFloat(bottom);}
+if(right!=null){this.right=OpenLayers.Util.toFloat(right);}
+if(top!=null){this.top=OpenLayers.Util.toFloat(top);}},clone:function(){return new OpenLayers.Bounds(this.left,this.bottom,this.right,this.top);},equals:function(bounds){var equals=false;if(bounds!=null){equals=((this.left==bounds.left)&&(this.right==bounds.right)&&(this.top==bounds.top)&&(this.bottom==bounds.bottom));}
+return equals;},toString:function(){return[this.left,this.bottom,this.right,this.top].join(",");},toArray:function(reverseAxisOrder){if(reverseAxisOrder===true){return[this.bottom,this.left,this.top,this.right];}else{return[this.left,this.bottom,this.right,this.top];}},toBBOX:function(decimal,reverseAxisOrder){if(decimal==null){decimal=6;}
+var mult=Math.pow(10,decimal);var xmin=Math.round(this.left*mult)/mult;var ymin=Math.round(this.bottom*mult)/mult;var xmax=Math.round(this.right*mult)/mult;var ymax=Math.round(this.top*mult)/mult;if(reverseAxisOrder===true){return ymin+","+xmin+","+ymax+","+xmax;}else{return xmin+","+ymin+","+xmax+","+ymax;}},toGeometry:function(){return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(this.left,this.bottom),new OpenLayers.Geometry.Point(this.right,this.bottom),new OpenLayers.Geometry.Point(this.right,this.top),new OpenLayers.Geometry.Point(this.left,this.top)])]);},getWidth:function(){return(this.right-this.left);},getHeight:function(){return(this.top-this.bottom);},getSize:function(){return new OpenLayers.Size(this.getWidth(),this.getHeight());},getCenterPixel:function(){return new OpenLayers.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2);},getCenterLonLat:function(){if(!this.centerLonLat){this.centerLonLat=new OpenLayers.LonLat((this.left+this.right)/2,(this.bottom+this.top)/2);}
+return this.centerLonLat;},scale:function(ratio,origin){if(origin==null){origin=this.getCenterLonLat();}
+var origx,origy;if(origin.CLASS_NAME=="OpenLayers.LonLat"){origx=origin.lon;origy=origin.lat;}else{origx=origin.x;origy=origin.y;}
+var left=(this.left-origx)*ratio+origx;var bottom=(this.bottom-origy)*ratio+origy;var right=(this.right-origx)*ratio+origx;var top=(this.top-origy)*ratio+origy;return new OpenLayers.Bounds(left,bottom,right,top);},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("boundsAddError");OpenLayers.Console.error(msg);return null;}
+return new OpenLayers.Bounds(this.left+x,this.bottom+y,this.right+x,this.top+y);},extend:function(object){var bounds=null;if(object){switch(object.CLASS_NAME){case"OpenLayers.LonLat":bounds=new OpenLayers.Bounds(object.lon,object.lat,object.lon,object.lat);break;case"OpenLayers.Geometry.Point":bounds=new OpenLayers.Bounds(object.x,object.y,object.x,object.y);break;case"OpenLayers.Bounds":bounds=object;break;}
+if(bounds){this.centerLonLat=null;if((this.left==null)||(bounds.left<this.left)){this.left=bounds.left;}
+if((this.bottom==null)||(bounds.bottom<this.bottom)){this.bottom=bounds.bottom;}
+if((this.right==null)||(bounds.right>this.right)){this.right=bounds.right;}
+if((this.top==null)||(bounds.top>this.top)){this.top=bounds.top;}}}},containsLonLat:function(ll,inclusive){return this.contains(ll.lon,ll.lat,inclusive);},containsPixel:function(px,inclusive){return this.contains(px.x,px.y,inclusive);},contains:function(x,y,inclusive){if(inclusive==null){inclusive=true;}
+if(x==null||y==null){return false;}
+x=OpenLayers.Util.toFloat(x);y=OpenLayers.Util.toFloat(y);var contains=false;if(inclusive){contains=((x>=this.left)&&(x<=this.right)&&(y>=this.bottom)&&(y<=this.top));}else{contains=((x>this.left)&&(x<this.right)&&(y>this.bottom)&&(y<this.top));}
+return contains;},intersectsBounds:function(bounds,inclusive){if(inclusive==null){inclusive=true;}
+var intersects=false;var mightTouch=(this.left==bounds.right||this.right==bounds.left||this.top==bounds.bottom||this.bottom==bounds.top);if(inclusive||!mightTouch){var inBottom=(((bounds.bottom>=this.bottom)&&(bounds.bottom<=this.top))||((this.bottom>=bounds.bottom)&&(this.bottom<=bounds.top)));var inTop=(((bounds.top>=this.bottom)&&(bounds.top<=this.top))||((this.top>bounds.bottom)&&(this.top<bounds.top)));var inLeft=(((bounds.left>=this.left)&&(bounds.left<=this.right))||((this.left>=bounds.left)&&(this.left<=bounds.right)));var inRight=(((bounds.right>=this.left)&&(bounds.right<=this.right))||((this.right>=bounds.left)&&(this.right<=bounds.right)));intersects=((inBottom||inTop)&&(inLeft||inRight));}
+return intersects;},containsBounds:function(bounds,partial,inclusive){if(partial==null){partial=false;}
+if(inclusive==null){inclusive=true;}
+var bottomLeft=this.contains(bounds.left,bounds.bottom,inclusive);var bottomRight=this.contains(bounds.right,bounds.bottom,inclusive);var topLeft=this.contains(bounds.left,bounds.top,inclusive);var topRight=this.contains(bounds.right,bounds.top,inclusive);return(partial)?(bottomLeft||bottomRight||topLeft||topRight):(bottomLeft&&bottomRight&&topLeft&&topRight);},determineQuadrant:function(lonlat){var quadrant="";var center=this.getCenterLonLat();quadrant+=(lonlat.lat<center.lat)?"b":"t";quadrant+=(lonlat.lon<center.lon)?"l":"r";return quadrant;},transform:function(source,dest){this.centerLonLat=null;var ll=OpenLayers.Projection.transform({'x':this.left,'y':this.bottom},source,dest);var lr=OpenLayers.Projection.transform({'x':this.right,'y':this.bottom},source,dest);var ul=OpenLayers.Projection.transform({'x':this.left,'y':this.top},source,dest);var ur=OpenLayers.Projection.transform({'x':this.right,'y':this.top},source,dest);this.left=Math.min(ll.x,ul.x);this.bottom=Math.min(ll.y,lr.y);this.right=Math.max(lr.x,ur.x);this.top=Math.max(ul.y,ur.y);return this;},wrapDateLine:function(maxExtent,options){options=options||{};var leftTolerance=options.leftTolerance||0;var rightTolerance=options.rightTolerance||0;var newBounds=this.clone();if(maxExtent){while(newBounds.left<maxExtent.left&&(newBounds.right-rightTolerance)<=maxExtent.left){newBounds=newBounds.add(maxExtent.getWidth(),0);}
+while((newBounds.left+leftTolerance)>=maxExtent.right&&newBounds.right>maxExtent.right){newBounds=newBounds.add(-maxExtent.getWidth(),0);}}
+return newBounds;},CLASS_NAME:"OpenLayers.Bounds"});OpenLayers.Bounds.fromString=function(str,reverseAxisOrder){var bounds=str.split(",");return OpenLayers.Bounds.fromArray(bounds,reverseAxisOrder);};OpenLayers.Bounds.fromArray=function(bbox,reverseAxisOrder){return reverseAxisOrder===true?new OpenLayers.Bounds(parseFloat(bbox[1]),parseFloat(bbox[0]),parseFloat(bbox[3]),parseFloat(bbox[2])):new OpenLayers.Bounds(parseFloat(bbox[0]),parseFloat(bbox[1]),parseFloat(bbox[2]),parseFloat(bbox[3]));};OpenLayers.Bounds.fromSize=function(size){return new OpenLayers.Bounds(0,size.h,size.w,0);};OpenLayers.Bounds.oppositeQuadrant=function(quadrant){var opp="";opp+=(quadrant.charAt(0)=='t')?'b':'t';opp+=(quadrant.charAt(1)=='l')?'r':'l';return opp;};OpenLayers.Element={visible:function(element){return OpenLayers.Util.getElement(element).style.display!='none';},toggle:function(){for(var i=0,len=arguments.length;i<len;i++){var element=OpenLayers.Util.getElement(arguments[i]);var display=OpenLayers.Element.visible(element)?'hide':'show';OpenLayers.Element[display](element);}},hide:function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{newMethod:"element.style.display = 'none';"}));for(var i=0,len=arguments.length;i<len;i++){var element=OpenLayers.Util.getElement(arguments[i]);if(element){element.style.display='none';}}},show:function(){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{newMethod:"element.style.display = '';"}));for(var i=0,len=arguments.length;i<len;i++){var element=OpenLayers.Util.getElement(arguments[i]);if(element){element.style.display='';}}},remove:function(element){element=OpenLayers.Util.getElement(element);element.parentNode.removeChild(element);},getHeight:function(element){element=OpenLayers.Util.getElement(element);return element.offsetHeight;},getDimensions:function(element){element=OpenLayers.Util.getElement(element);if(OpenLayers.Element.getStyle(element,'display')!='none'){return{width:element.offsetWidth,height:element.offsetHeight};}
+var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},hasClass:function(element,name){var names=element.className;return(!!names&&new RegExp("(^|\\s)"+name+"(\\s|$)").test(names));},addClass:function(element,name){if(!OpenLayers.Element.hasClass(element,name)){element.className+=(element.className?" ":"")+name;}
+return element;},removeClass:function(element,name){var names=element.className;if(names){element.className=OpenLayers.String.trim(names.replace(new RegExp("(^|\\s+)"+name+"(\\s+|$)")," "));}
+return element;},toggleClass:function(element,name){if(OpenLayers.Element.hasClass(element,name)){OpenLayers.Element.removeClass(element,name);}else{OpenLayers.Element.addClass(element,name);}
+return element;},getStyle:function(element,style){element=OpenLayers.Util.getElement(element);var value=null;if(element&&element.style){value=element.style[OpenLayers.String.camelize(style)];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(style):null;}else if(element.currentStyle){value=element.currentStyle[OpenLayers.String.camelize(style)];}}
+var positions=['left','top','right','bottom'];if(window.opera&&(OpenLayers.Util.indexOf(positions,style)!=-1)&&(OpenLayers.Element.getStyle(element,'position')=='static')){value='auto';}}
+return value=='auto'?null:value;}};OpenLayers.LonLat=OpenLayers.Class({lon:0.0,lat:0.0,initialize:function(lon,lat){this.lon=OpenLayers.Util.toFloat(lon);this.lat=OpenLayers.Util.toFloat(lat);},toString:function(){return("lon="+this.lon+",lat="+this.lat);},toShortString:function(){return(this.lon+", "+this.lat);},clone:function(){return new OpenLayers.LonLat(this.lon,this.lat);},add:function(lon,lat){if((lon==null)||(lat==null)){var msg=OpenLayers.i18n("lonlatAddError");OpenLayers.Console.error(msg);return null;}
+return new OpenLayers.LonLat(this.lon+OpenLayers.Util.toFloat(lon),this.lat+OpenLayers.Util.toFloat(lat));},equals:function(ll){var equals=false;if(ll!=null){equals=((this.lon==ll.lon&&this.lat==ll.lat)||(isNaN(this.lon)&&isNaN(this.lat)&&isNaN(ll.lon)&&isNaN(ll.lat)));}
+return equals;},transform:function(source,dest){var point=OpenLayers.Projection.transform({'x':this.lon,'y':this.lat},source,dest);this.lon=point.x;this.lat=point.y;return this;},wrapDateLine:function(maxExtent){var newLonLat=this.clone();if(maxExtent){while(newLonLat.lon<maxExtent.left){newLonLat.lon+=maxExtent.getWidth();}
+while(newLonLat.lon>maxExtent.right){newLonLat.lon-=maxExtent.getWidth();}}
+return newLonLat;},CLASS_NAME:"OpenLayers.LonLat"});OpenLayers.LonLat.fromString=function(str){var pair=str.split(",");return new OpenLayers.LonLat(pair[0],pair[1]);};OpenLayers.LonLat.fromArray=function(arr){var gotArr=OpenLayers.Util.isArray(arr),lon=gotArr&&arr[0],lat=gotArr&&arr[1];return new OpenLayers.LonLat(lon,lat);};OpenLayers.Pixel=OpenLayers.Class({x:0.0,y:0.0,initialize:function(x,y){this.x=parseFloat(x);this.y=parseFloat(y);},toString:function(){return("x="+this.x+",y="+this.y);},clone:function(){return new OpenLayers.Pixel(this.x,this.y);},equals:function(px){var equals=false;if(px!=null){equals=((this.x==px.x&&this.y==px.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(px.x)&&isNaN(px.y)));}
+return equals;},distanceTo:function(px){return Math.sqrt(Math.pow(this.x-px.x,2)+
+Math.pow(this.y-px.y,2));},add:function(x,y){if((x==null)||(y==null)){var msg=OpenLayers.i18n("pixelAddError");OpenLayers.Console.error(msg);return null;}
+return new OpenLayers.Pixel(this.x+x,this.y+y);},offset:function(px){var newPx=this.clone();if(px){newPx=this.add(px.x,px.y);}
+return newPx;},CLASS_NAME:"OpenLayers.Pixel"});OpenLayers.Size=OpenLayers.Class({w:0.0,h:0.0,initialize:function(w,h){this.w=parseFloat(w);this.h=parseFloat(h);},toString:function(){return("w="+this.w+",h="+this.h);},clone:function(){return new OpenLayers.Size(this.w,this.h);},equals:function(sz){var equals=false;if(sz!=null){equals=((this.w==sz.w&&this.h==sz.h)||(isNaN(this.w)&&isNaN(this.h)&&isNaN(sz.w)&&isNaN(sz.h)));}
+return equals;},CLASS_NAME:"OpenLayers.Size"});OpenLayers.Util=OpenLayers.Util||{};OpenLayers.Util.getElement=function(){var elements=[];for(var i=0,len=arguments.length;i<len;i++){var element=arguments[i];if(typeof element=='string'){element=document.getElementById(element);}
+if(arguments.length==1){return element;}
+elements.push(element);}
+return elements;};OpenLayers.Util.isElement=function(o){return!!(o&&o.nodeType===1);};OpenLayers.Util.isArray=function(a){return(Object.prototype.toString.call(a)==='[object Array]');};if(typeof window.$==="undefined"){window.$=OpenLayers.Util.getElement;}
+OpenLayers.Util.removeItem=function(array,item){for(var i=array.length-1;i>=0;i--){if(array[i]==item){array.splice(i,1);}}
+return array;};OpenLayers.Util.clearArray=function(array){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'array = []'}));array.length=0;};OpenLayers.Util.indexOf=function(array,obj){if(typeof array.indexOf=="function"){return array.indexOf(obj);}else{for(var i=0,len=array.length;i<len;i++){if(array[i]==obj){return i;}}
+return-1;}};OpenLayers.Util.modifyDOMElement=function(element,id,px,sz,position,border,overflow,opacity){if(id){element.id=id;}
+if(px){element.style.left=px.x+"px";element.style.top=px.y+"px";}
+if(sz){element.style.width=sz.w+"px";element.style.height=sz.h+"px";}
+if(position){element.style.position=position;}
+if(border){element.style.border=border;}
+if(overflow){element.style.overflow=overflow;}
+if(parseFloat(opacity)>=0.0&&parseFloat(opacity)<1.0){element.style.filter='alpha(opacity='+(opacity*100)+')';element.style.opacity=opacity;}else if(parseFloat(opacity)==1.0){element.style.filter='';element.style.opacity='';}};OpenLayers.Util.createDiv=function(id,px,sz,imgURL,position,border,overflow,opacity){var dom=document.createElement('div');if(imgURL){dom.style.backgroundImage='url('+imgURL+')';}
+if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");}
+if(!position){position="absolute";}
+OpenLayers.Util.modifyDOMElement(dom,id,px,sz,position,border,overflow,opacity);return dom;};OpenLayers.Util.createImage=function(id,px,sz,imgURL,position,border,opacity,delayDisplay){var image=document.createElement("img");if(!id){id=OpenLayers.Util.createUniqueID("OpenLayersDiv");}
+if(!position){position="relative";}
+OpenLayers.Util.modifyDOMElement(image,id,px,sz,position,border,null,opacity);if(delayDisplay){image.style.display="none";OpenLayers.Event.observe(image,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,image));OpenLayers.Event.observe(image,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,image));}
+image.style.alt=id;image.galleryImg="no";if(imgURL){image.src=imgURL;}
+return image;};OpenLayers.Util.setOpacity=function(element,opacity){OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);};OpenLayers.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.display="";}
+OpenLayers.Element.removeClass(this,"olImageLoadError");};OpenLayers.IMAGE_RELOAD_ATTEMPTS=0;OpenLayers.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;if(this._attempts<=OpenLayers.IMAGE_RELOAD_ATTEMPTS){var urls=this.urls;if(urls&&OpenLayers.Util.isArray(urls)&&urls.length>1){var src=this.src.toString();var current_url,k;for(k=0;current_url=urls[k];k++){if(src.indexOf(current_url)!=-1){break;}}
+var guess=Math.floor(urls.length*Math.random());var new_url=urls[guess];k=0;while(new_url==current_url&&k++<4){guess=Math.floor(urls.length*Math.random());new_url=urls[guess];}
+this.src=src.replace(current_url,new_url);}else{this.src=this.src;}}else{OpenLayers.Element.addClass(this,"olImageLoadError");}
+this.style.display="";};OpenLayers.Util.alphaHackNeeded=null;OpenLayers.Util.alphaHack=function(){if(OpenLayers.Util.alphaHackNeeded==null){var arVersion=navigator.appVersion.split("MSIE");var version=parseFloat(arVersion[1]);var filter=false;try{filter=!!(document.body.filters);}catch(e){}
+OpenLayers.Util.alphaHackNeeded=(filter&&(version>=5.5)&&(version<7));}
+return OpenLayers.Util.alphaHackNeeded;};OpenLayers.Util.modifyAlphaImageDiv=function(div,id,px,sz,imgURL,position,border,sizing,opacity){OpenLayers.Util.modifyDOMElement(div,id,px,sz,position,null,null,opacity);var img=div.childNodes[0];if(imgURL){img.src=imgURL;}
+OpenLayers.Util.modifyDOMElement(img,div.id+"_innerImage",null,sz,"relative",border);if(OpenLayers.Util.alphaHack()){if(div.style.display!="none"){div.style.display="inline-block";}
+if(sizing==null){sizing="scale";}
+div.style.filter="progid:DXImageTransform.Microsoft"+".AlphaImageLoader(src='"+img.src+"', "+"sizingMethod='"+sizing+"')";if(parseFloat(div.style.opacity)>=0.0&&parseFloat(div.style.opacity)<1.0){div.style.filter+=" alpha(opacity="+div.style.opacity*100+")";}
+img.style.filter="alpha(opacity=0)";}};OpenLayers.Util.createAlphaImageDiv=function(id,px,sz,imgURL,position,border,sizing,opacity,delayDisplay){var div=OpenLayers.Util.createDiv();var img=OpenLayers.Util.createImage(null,null,null,null,null,null,null,false);div.appendChild(img);if(delayDisplay){img.style.display="none";OpenLayers.Event.observe(img,"load",OpenLayers.Function.bind(OpenLayers.Util.onImageLoad,div));OpenLayers.Event.observe(img,"error",OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError,div));}
+OpenLayers.Util.modifyAlphaImageDiv(div,id,px,sz,imgURL,position,border,sizing,opacity);return div;};OpenLayers.Util.upperCaseObject=function(object){var uObject={};for(var key in object){uObject[key.toUpperCase()]=object[key];}
+return uObject;};OpenLayers.Util.applyDefaults=function(to,from){to=to||{};var fromIsEvt=typeof window.Event=="function"&&from instanceof window.Event;for(var key in from){if(to[key]===undefined||(!fromIsEvt&&from.hasOwnProperty&&from.hasOwnProperty(key)&&!to.hasOwnProperty(key))){to[key]=from[key];}}
+if(!fromIsEvt&&from&&from.hasOwnProperty&&from.hasOwnProperty('toString')&&!to.hasOwnProperty('toString')){to.toString=from.toString;}
+return to;};OpenLayers.Util.getParameterString=function(params){var paramsArray=[];for(var key in params){var value=params[key];if((value!=null)&&(typeof value!='function')){var encodedValue;if(typeof value=='object'&&value.constructor==Array){var encodedItemArray=[];var item;for(var itemIndex=0,len=value.length;itemIndex<len;itemIndex++){item=value[itemIndex];encodedItemArray.push(encodeURIComponent((item===null||item===undefined)?"":item));}
+encodedValue=encodedItemArray.join(",");}
+else{encodedValue=encodeURIComponent(value);}
+paramsArray.push(encodeURIComponent(key)+"="+encodedValue);}}
+return paramsArray.join("&");};OpenLayers.Util.urlAppend=function(url,paramStr){var newUrl=url;if(paramStr){var parts=(url+" ").split(/[?&]/);newUrl+=(parts.pop()===" "?paramStr:parts.length?"&"+paramStr:"?"+paramStr);}
+return newUrl;};OpenLayers.ImgPath='';OpenLayers.Util.getImagesLocation=function(){return OpenLayers.ImgPath||(OpenLayers._getScriptLocation()+"img/");};OpenLayers.Util.Try=function(){var returnValue=null;for(var i=0,len=arguments.length;i<len;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
+return returnValue;};OpenLayers.Util.getXmlNodeValue=function(node){var val=null;OpenLayers.Util.Try(function(){val=node.text;if(!val){val=node.textContent;}
+if(!val){val=node.firstChild.nodeValue;}},function(){val=node.textContent;});return val;};OpenLayers.Util.mouseLeft=function(evt,div){var target=(evt.relatedTarget)?evt.relatedTarget:evt.toElement;while(target!=div&&target!=null){target=target.parentNode;}
+return(target!=div);};OpenLayers.Util.DEFAULT_PRECISION=14;OpenLayers.Util.toFloat=function(number,precision){if(precision==null){precision=OpenLayers.Util.DEFAULT_PRECISION;}
+if(typeof number!=="number"){number=parseFloat(number);}
+return precision===0?number:parseFloat(number.toPrecision(precision));};OpenLayers.Util.rad=function(x){return x*Math.PI/180;};OpenLayers.Util.deg=function(x){return x*180/Math.PI;};OpenLayers.Util.VincentyConstants={a:6378137,b:6356752.3142,f:1/298.257223563};OpenLayers.Util.distVincenty=function(p1,p2){var ct=OpenLayers.Util.VincentyConstants;var a=ct.a,b=ct.b,f=ct.f;var L=OpenLayers.Util.rad(p2.lon-p1.lon);var U1=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p1.lat)));var U2=Math.atan((1-f)*Math.tan(OpenLayers.Util.rad(p2.lat)));var sinU1=Math.sin(U1),cosU1=Math.cos(U1);var sinU2=Math.sin(U2),cosU2=Math.cos(U2);var lambda=L,lambdaP=2*Math.PI;var iterLimit=20;while(Math.abs(lambda-lambdaP)>1e-12&&--iterLimit>0){var sinLambda=Math.sin(lambda),cosLambda=Math.cos(lambda);var sinSigma=Math.sqrt((cosU2*sinLambda)*(cosU2*sinLambda)+
+(cosU1*sinU2-sinU1*cosU2*cosLambda)*(cosU1*sinU2-sinU1*cosU2*cosLambda));if(sinSigma==0){return 0;}
+var cosSigma=sinU1*sinU2+cosU1*cosU2*cosLambda;var sigma=Math.atan2(sinSigma,cosSigma);var alpha=Math.asin(cosU1*cosU2*sinLambda/sinSigma);var cosSqAlpha=Math.cos(alpha)*Math.cos(alpha);var cos2SigmaM=cosSigma-2*sinU1*sinU2/cosSqAlpha;var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));lambdaP=lambda;lambda=L+(1-C)*f*Math.sin(alpha)*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));}
+if(iterLimit==0){return NaN;}
+var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)-
+B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));var s=b*A*(sigma-deltaSigma);var d=s.toFixed(3)/1000;return d;};OpenLayers.Util.destinationVincenty=function(lonlat,brng,dist){var u=OpenLayers.Util;var ct=u.VincentyConstants;var a=ct.a,b=ct.b,f=ct.f;var lon1=lonlat.lon;var lat1=lonlat.lat;var s=dist;var alpha1=u.rad(brng);var sinAlpha1=Math.sin(alpha1);var cosAlpha1=Math.cos(alpha1);var tanU1=(1-f)*Math.tan(u.rad(lat1));var cosU1=1/Math.sqrt((1+tanU1*tanU1)),sinU1=tanU1*cosU1;var sigma1=Math.atan2(tanU1,cosAlpha1);var sinAlpha=cosU1*sinAlpha1;var cosSqAlpha=1-sinAlpha*sinAlpha;var uSq=cosSqAlpha*(a*a-b*b)/(b*b);var A=1+uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));var B=uSq/1024*(256+uSq*(-128+uSq*(74-47*uSq)));var sigma=s/(b*A),sigmaP=2*Math.PI;while(Math.abs(sigma-sigmaP)>1e-12){var cos2SigmaM=Math.cos(2*sigma1+sigma);var sinSigma=Math.sin(sigma);var cosSigma=Math.cos(sigma);var deltaSigma=B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)-
+B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));sigmaP=sigma;sigma=s/(b*A)+deltaSigma;}
+var tmp=sinU1*sinSigma-cosU1*cosSigma*cosAlpha1;var lat2=Math.atan2(sinU1*cosSigma+cosU1*sinSigma*cosAlpha1,(1-f)*Math.sqrt(sinAlpha*sinAlpha+tmp*tmp));var lambda=Math.atan2(sinSigma*sinAlpha1,cosU1*cosSigma-sinU1*sinSigma*cosAlpha1);var C=f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));var L=lambda-(1-C)*f*sinAlpha*(sigma+C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));var revAz=Math.atan2(sinAlpha,-tmp);return new OpenLayers.LonLat(lon1+u.deg(L),u.deg(lat2));};OpenLayers.Util.getParameters=function(url){url=(url===null||url===undefined)?window.location.href:url;var paramsString="";if(OpenLayers.String.contains(url,'?')){var start=url.indexOf('?')+1;var end=OpenLayers.String.contains(url,"#")?url.indexOf('#'):url.length;paramsString=url.substring(start,end);}
+var parameters={};var pairs=paramsString.split(/[&;]/);for(var i=0,len=pairs.length;i<len;++i){var keyValue=pairs[i].split('=');if(keyValue[0]){var key=keyValue[0];try{key=decodeURIComponent(key);}catch(err){key=unescape(key);}
+var value=(keyValue[1]||'').replace(/\+/g," ");try{value=decodeURIComponent(value);}catch(err){value=unescape(value);}
+value=value.split(",");if(value.length==1){value=value[0];}
+parameters[key]=value;}}
+return parameters;};OpenLayers.Util.getArgs=function(url){OpenLayers.Console.warn(OpenLayers.i18n("methodDeprecated",{'newMethod':'OpenLayers.Util.getParameters'}));return OpenLayers.Util.getParameters(url);};OpenLayers.Util.lastSeqID=0;OpenLayers.Util.createUniqueID=function(prefix){if(prefix==null){prefix="id_";}
+OpenLayers.Util.lastSeqID+=1;return prefix+OpenLayers.Util.lastSeqID;};OpenLayers.INCHES_PER_UNIT={'inches':1.0,'ft':12.0,'mi':63360.0,'m':39.3701,'km':39370.1,'dd':4374754,'yd':36};OpenLayers.INCHES_PER_UNIT["in"]=OpenLayers.INCHES_PER_UNIT.inches;OpenLayers.INCHES_PER_UNIT["degrees"]=OpenLayers.INCHES_PER_UNIT.dd;OpenLayers.INCHES_PER_UNIT["nmi"]=1852*OpenLayers.INCHES_PER_UNIT.m;OpenLayers.METERS_PER_INCH=0.02540005080010160020;OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{"Inch":OpenLayers.INCHES_PER_UNIT.inches,"Meter":1.0/OpenLayers.METERS_PER_INCH,"Foot":0.30480060960121920243/OpenLayers.METERS_PER_INCH,"IFoot":0.30480000000000000000/OpenLayers.METERS_PER_INCH,"ClarkeFoot":0.3047972651151/OpenLayers.METERS_PER_INCH,"SearsFoot":0.30479947153867624624/OpenLayers.METERS_PER_INCH,"GoldCoastFoot":0.30479971018150881758/OpenLayers.METERS_PER_INCH,"IInch":0.02540000000000000000/OpenLayers.METERS_PER_INCH,"MicroInch":0.00002540000000000000/OpenLayers.METERS_PER_INCH,"Mil":0.00000002540000000000/OpenLayers.METERS_PER_INCH,"Centimeter":0.01000000000000000000/OpenLayers.METERS_PER_INCH,"Kilometer":1000.00000000000000000000/OpenLayers.METERS_PER_INCH,"Yard":0.91440182880365760731/OpenLayers.METERS_PER_INCH,"SearsYard":0.914398414616029/OpenLayers.METERS_PER_INCH,"IndianYard":0.91439853074444079983/OpenLayers.METERS_PER_INCH,"IndianYd37":0.91439523/OpenLayers.METERS_PER_INCH,"IndianYd62":0.9143988/OpenLayers.METERS_PER_INCH,"IndianYd75":0.9143985/OpenLayers.METERS_PER_INCH,"IndianFoot":0.30479951/OpenLayers.METERS_PER_INCH,"IndianFt37":0.30479841/OpenLayers.METERS_PER_INCH,"IndianFt62":0.3047996/OpenLayers.METERS_PER_INCH,"IndianFt75":0.3047995/OpenLayers.METERS_PER_INCH,"Mile":1609.34721869443738887477/OpenLayers.METERS_PER_INCH,"IYard":0.91440000000000000000/OpenLayers.METERS_PER_INCH,"IMile":1609.34400000000000000000/OpenLayers.METERS_PER_INCH,"NautM":1852.00000000000000000000/OpenLayers.METERS_PER_INCH,"Lat-66":110943.316488932731/OpenLayers.METERS_PER_INCH,"Lat-83":110946.25736872234125/OpenLayers.METERS_PER_INCH,"Decimeter":0.10000000000000000000/OpenLayers.METERS_PER_INCH,"Millimeter":0.00100000000000000000/OpenLayers.METERS_PER_INCH,"Dekameter":10.00000000000000000000/OpenLayers.METERS_PER_INCH,"Decameter":10.00000000000000000000/OpenLayers.METERS_PER_INCH,"Hectometer":100.00000000000000000000/OpenLayers.METERS_PER_INCH,"GermanMeter":1.0000135965/OpenLayers.METERS_PER_INCH,"CaGrid":0.999738/OpenLayers.METERS_PER_INCH,"ClarkeChain":20.1166194976/OpenLayers.METERS_PER_INCH,"GunterChain":20.11684023368047/OpenLayers.METERS_PER_INCH,"BenoitChain":20.116782494375872/OpenLayers.METERS_PER_INCH,"SearsChain":20.11676512155/OpenLayers.METERS_PER_INCH,"ClarkeLink":0.201166194976/OpenLayers.METERS_PER_INCH,"GunterLink":0.2011684023368047/OpenLayers.METERS_PER_INCH,"BenoitLink":0.20116782494375872/OpenLayers.METERS_PER_INCH,"SearsLink":0.2011676512155/OpenLayers.METERS_PER_INCH,"Rod":5.02921005842012/OpenLayers.METERS_PER_INCH,"IntnlChain":20.1168/OpenLayers.METERS_PER_INCH,"IntnlLink":0.201168/OpenLayers.METERS_PER_INCH,"Perch":5.02921005842012/OpenLayers.METERS_PER_INCH,"Pole":5.02921005842012/OpenLayers.METERS_PER_INCH,"Furlong":201.1684023368046/OpenLayers.METERS_PER_INCH,"Rood":3.778266898/OpenLayers.METERS_PER_INCH,"CapeFoot":0.3047972615/OpenLayers.METERS_PER_INCH,"Brealey":375.00000000000000000000/OpenLayers.METERS_PER_INCH,"ModAmFt":0.304812252984505969011938/OpenLayers.METERS_PER_INCH,"Fathom":1.8288/OpenLayers.METERS_PER_INCH,"NautM-UK":1853.184/OpenLayers.METERS_PER_INCH,"50kilometers":50000.0/OpenLayers.METERS_PER_INCH,"150kilometers":150000.0/OpenLayers.METERS_PER_INCH});OpenLayers.Util.extend(OpenLayers.INCHES_PER_UNIT,{"mm":OpenLayers.INCHES_PER_UNIT["Meter"]/1000.0,"cm":OpenLayers.INCHES_PER_UNIT["Meter"]/100.0,"dm":OpenLayers.INCHES_PER_UNIT["Meter"]*100.0,"km":OpenLayers.INCHES_PER_UNIT["Meter"]*1000.0,"kmi":OpenLayers.INCHES_PER_UNIT["nmi"],"fath":OpenLayers.INCHES_PER_UNIT["Fathom"],"ch":OpenLayers.INCHES_PER_UNIT["IntnlChain"],"link":OpenLayers.INCHES_PER_UNIT["IntnlLink"],"us-in":OpenLayers.INCHES_PER_UNIT["inches"],"us-ft":OpenLayers.INCHES_PER_UNIT["Foot"],"us-yd":OpenLayers.INCHES_PER_UNIT["Yard"],"us-ch":OpenLayers.INCHES_PER_UNIT["GunterChain"],"us-mi":OpenLayers.INCHES_PER_UNIT["Mile"],"ind-yd":OpenLayers.INCHES_PER_UNIT["IndianYd37"],"ind-ft":OpenLayers.INCHES_PER_UNIT["IndianFt37"],"ind-ch":20.11669506/OpenLayers.METERS_PER_INCH});OpenLayers.DOTS_PER_INCH=72;OpenLayers.Util.normalizeScale=function(scale){var normScale=(scale>1.0)?(1.0/scale):scale;return normScale;};OpenLayers.Util.getResolutionFromScale=function(scale,units){var resolution;if(scale){if(units==null){units="degrees";}
+var normScale=OpenLayers.Util.normalizeScale(scale);resolution=1/(normScale*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH);}
+return resolution;};OpenLayers.Util.getScaleFromResolution=function(resolution,units){if(units==null){units="degrees";}
+var scale=resolution*OpenLayers.INCHES_PER_UNIT[units]*OpenLayers.DOTS_PER_INCH;return scale;};OpenLayers.Util.safeStopPropagation=function(evt){OpenLayers.Event.stop(evt,true);};OpenLayers.Util.pagePosition=function(forElement){var pos=[0,0];var viewportElement=OpenLayers.Util.getViewportElement();if(!forElement||forElement==window||forElement==viewportElement){return pos;}
+var BUGGY_GECKO_BOX_OBJECT=OpenLayers.IS_GECKO&&document.getBoxObjectFor&&OpenLayers.Element.getStyle(forElement,'position')=='absolute'&&(forElement.style.top==''||forElement.style.left=='');var parent=null;var box;if(forElement.getBoundingClientRect){box=forElement.getBoundingClientRect();var scrollTop=viewportElement.scrollTop;var scrollLeft=viewportElement.scrollLeft;pos[0]=box.left+scrollLeft;pos[1]=box.top+scrollTop;}else if(document.getBoxObjectFor&&!BUGGY_GECKO_BOX_OBJECT){box=document.getBoxObjectFor(forElement);var vpBox=document.getBoxObjectFor(viewportElement);pos[0]=box.screenX-vpBox.screenX;pos[1]=box.screenY-vpBox.screenY;}else{pos[0]=forElement.offsetLeft;pos[1]=forElement.offsetTop;parent=forElement.offsetParent;if(parent!=forElement){while(parent){pos[0]+=parent.offsetLeft;pos[1]+=parent.offsetTop;parent=parent.offsetParent;}}
+var browser=OpenLayers.BROWSER_NAME;if(browser=="opera"||(browser=="safari"&&OpenLayers.Element.getStyle(forElement,'position')=='absolute')){pos[1]-=document.body.offsetTop;}
+parent=forElement.offsetParent;while(parent&&parent!=document.body){pos[0]-=parent.scrollLeft;if(browser!="opera"||parent.tagName!='TR'){pos[1]-=parent.scrollTop;}
+parent=parent.offsetParent;}}
+return pos;};OpenLayers.Util.getViewportElement=function(){var viewportElement=arguments.callee.viewportElement;if(viewportElement==undefined){viewportElement=(OpenLayers.BROWSER_NAME=="msie"&&document.compatMode!='CSS1Compat')?document.body:document.documentElement;arguments.callee.viewportElement=viewportElement;}
+return viewportElement;};OpenLayers.Util.isEquivalentUrl=function(url1,url2,options){options=options||{};OpenLayers.Util.applyDefaults(options,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var urlObj1=OpenLayers.Util.createUrlObject(url1,options);var urlObj2=OpenLayers.Util.createUrlObject(url2,options);for(var key in urlObj1){if(key!=="args"){if(urlObj1[key]!=urlObj2[key]){return false;}}}
+for(var key in urlObj1.args){if(urlObj1.args[key]!=urlObj2.args[key]){return false;}
+delete urlObj2.args[key];}
+for(var key in urlObj2.args){return false;}
+return true;};OpenLayers.Util.createUrlObject=function(url,options){options=options||{};if(!(/^\w+:\/\//).test(url)){var loc=window.location;var port=loc.port?":"+loc.port:"";var fullUrl=loc.protocol+"//"+loc.host.split(":").shift()+port;if(url.indexOf("/")===0){url=fullUrl+url;}else{var parts=loc.pathname.split("/");parts.pop();url=fullUrl+parts.join("/")+"/"+url;}}
+if(options.ignoreCase){url=url.toLowerCase();}
+var a=document.createElement('a');a.href=url;var urlObject={};urlObject.host=a.host.split(":").shift();urlObject.protocol=a.protocol;if(options.ignorePort80){urlObject.port=(a.port=="80"||a.port=="0")?"":a.port;}else{urlObject.port=(a.port==""||a.port=="0")?"80":a.port;}
+urlObject.hash=(options.ignoreHash||a.hash==="#")?"":a.hash;var queryString=a.search;if(!queryString){var qMark=url.indexOf("?");queryString=(qMark!=-1)?url.substr(qMark):"";}
+urlObject.args=OpenLayers.Util.getParameters(queryString);urlObject.pathname=(a.pathname.charAt(0)=="/")?a.pathname:"/"+a.pathname;return urlObject;};OpenLayers.Util.removeTail=function(url){var head=null;var qMark=url.indexOf("?");var hashMark=url.indexOf("#");if(qMark==-1){head=(hashMark!=-1)?url.substr(0,hashMark):url;}else{head=(hashMark!=-1)?url.substr(0,Math.min(qMark,hashMark)):url.substr(0,qMark);}
+return head;};OpenLayers.IS_GECKO=(function(){var ua=navigator.userAgent.toLowerCase();return ua.indexOf("webkit")==-1&&ua.indexOf("gecko")!=-1;})();OpenLayers.BROWSER_NAME=(function(){var name="";var ua=navigator.userAgent.toLowerCase();if(ua.indexOf("opera")!=-1){name="opera";}else if(ua.indexOf("msie")!=-1){name="msie";}else if(ua.indexOf("safari")!=-1){name="safari";}else if(ua.indexOf("mozilla")!=-1){if(ua.indexOf("firefox")!=-1){name="firefox";}else{name="mozilla";}}
+return name;})();OpenLayers.Util.getBrowserName=function(){return OpenLayers.BROWSER_NAME;};OpenLayers.Util.getRenderedDimensions=function(contentHTML,size,options){var w,h;var container=document.createElement("div");container.style.visibility="hidden";var containerElement=(options&&options.containerElement)?options.containerElement:document.body;if(size){if(size.w){w=size.w;container.style.width=w+"px";}else if(size.h){h=size.h;container.style.height=h+"px";}}
+if(options&&options.displayClass){container.className=options.displayClass;}
+var content=document.createElement("div");content.innerHTML=contentHTML;content.style.overflow="visible";if(content.childNodes){for(var i=0,l=content.childNodes.length;i<l;i++){if(!content.childNodes[i].style)continue;content.childNodes[i].style.overflow="visible";}}
+container.appendChild(content);containerElement.appendChild(container);var parentHasPositionAbsolute=false;var parent=container.parentNode;while(parent&&parent.tagName.toLowerCase()!="body"){var parentPosition=OpenLayers.Element.getStyle(parent,"position");if(parentPosition=="absolute"){parentHasPositionAbsolute=true;break;}else if(parentPosition&&parentPosition!="static"){break;}
+parent=parent.parentNode;}
+if(!parentHasPositionAbsolute){container.style.position="absolute";}
+if(!w){w=parseInt(content.scrollWidth);container.style.width=w+"px";}
+if(!h){h=parseInt(content.scrollHeight);}
+container.removeChild(content);containerElement.removeChild(container);return new OpenLayers.Size(w,h);};OpenLayers.Util.getScrollbarWidth=function(){var scrollbarWidth=OpenLayers.Util._scrollbarWidth;if(scrollbarWidth==null){var scr=null;var inn=null;var wNoScroll=0;var wScroll=0;scr=document.createElement('div');scr.style.position='absolute';scr.style.top='-1000px';scr.style.left='-1000px';scr.style.width='100px';scr.style.height='50px';scr.style.overflow='hidden';inn=document.createElement('div');inn.style.width='100%';inn.style.height='200px';scr.appendChild(inn);document.body.appendChild(scr);wNoScroll=inn.offsetWidth;scr.style.overflow='scroll';wScroll=inn.offsetWidth;document.body.removeChild(document.body.lastChild);OpenLayers.Util._scrollbarWidth=(wNoScroll-wScroll);scrollbarWidth=OpenLayers.Util._scrollbarWidth;}
+return scrollbarWidth;};OpenLayers.Util.getFormattedLonLat=function(coordinate,axis,dmsOption){if(!dmsOption){dmsOption='dms';}
+coordinate=(coordinate+540)%360-180;var abscoordinate=Math.abs(coordinate);var coordinatedegrees=Math.floor(abscoordinate);var coordinateminutes=(abscoordinate-coordinatedegrees)/(1/60);var tempcoordinateminutes=coordinateminutes;coordinateminutes=Math.floor(coordinateminutes);var coordinateseconds=(tempcoordinateminutes-coordinateminutes)/(1/60);coordinateseconds=Math.round(coordinateseconds*10);coordinateseconds/=10;if(coordinateseconds>=60){coordinateseconds-=60;coordinateminutes+=1;if(coordinateminutes>=60){coordinateminutes-=60;coordinatedegrees+=1;}}
+if(coordinatedegrees<10){coordinatedegrees="0"+coordinatedegrees;}
+var str=coordinatedegrees+"\u00B0";if(dmsOption.indexOf('dm')>=0){if(coordinateminutes<10){coordinateminutes="0"+coordinateminutes;}
+str+=coordinateminutes+"'";if(dmsOption.indexOf('dms')>=0){if(coordinateseconds<10){coordinateseconds="0"+coordinateseconds;}
+str+=coordinateseconds+'"';}}
+if(axis=="lon"){str+=coordinate<0?OpenLayers.i18n("W"):OpenLayers.i18n("E");}else{str+=coordinate<0?OpenLayers.i18n("S"):OpenLayers.i18n("N");}
+return str;};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:false,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},destroy:function(){},read:function(data){OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented"));},write:function(object){OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:"    ",space:" ",newline:"\n",level:0,pretty:false,nativeJSON:(function(){return!!(window.JSON&&typeof JSON.parse=="function"&&typeof JSON.stringify=="function");})(),read:function(json,filter){var object;if(this.nativeJSON){object=JSON.parse(json,filter);}else try{if(/^[\],:{}\s]*$/.test(json.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){object=eval('('+json+')');if(typeof filter==='function'){function walk(k,v){if(v&&typeof v==='object'){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}}
+return filter(k,v);}
+object=walk('',object);}}}catch(e){}
+if(this.keepData){this.data=object;}
+return object;},write:function(value,pretty){this.pretty=!!pretty;var json=null;var type=typeof value;if(this.serialize[type]){try{json=(!this.pretty&&this.nativeJSON)?JSON.stringify(value):this.serialize[type].apply(this,[value]);}catch(err){OpenLayers.Console.error("Trouble serializing: "+err);}}
+return json;},writeIndent:function(){var pieces=[];if(this.pretty){for(var i=0;i<this.level;++i){pieces.push(this.indent);}}
+return pieces.join('');},writeNewline:function(){return(this.pretty)?this.newline:'';},writeSpace:function(){return(this.pretty)?this.space:'';},serialize:{'object':function(object){if(object==null){return"null";}
+if(object.constructor==Date){return this.serialize.date.apply(this,[object]);}
+if(object.constructor==Array){return this.serialize.array.apply(this,[object]);}
+var pieces=['{'];this.level+=1;var key,keyJSON,valueJSON;var addComma=false;for(key in object){if(object.hasOwnProperty(key)){keyJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[key,this.pretty]);valueJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[object[key],this.pretty]);if(keyJSON!=null&&valueJSON!=null){if(addComma){pieces.push(',');}
+pieces.push(this.writeNewline(),this.writeIndent(),keyJSON,':',this.writeSpace(),valueJSON);addComma=true;}}}
+this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),'}');return pieces.join('');},'array':function(array){var json;var pieces=['['];this.level+=1;for(var i=0,len=array.length;i<len;++i){json=OpenLayers.Format.JSON.prototype.write.apply(this,[array[i],this.pretty]);if(json!=null){if(i>0){pieces.push(',');}
+pieces.push(this.writeNewline(),this.writeIndent(),json);}}
+this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),']');return pieces.join('');},'string':function(string){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};if(/["\\\x00-\x1f]/.test(string)){return'"'+string.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;}
+c=b.charCodeAt();return'\\u00'+
+Math.floor(c/16).toString(16)+
+(c%16).toString(16);})+'"';}
+return'"'+string+'"';},'number':function(number){return isFinite(number)?String(number):"null";},'boolean':function(bool){return String(bool);},'date':function(date){function format(number){return(number<10)?'0'+number:number;}
+return'"'+date.getFullYear()+'-'+
+format(date.getMonth()+1)+'-'+
+format(date.getDate())+'T'+
+format(date.getHours())+':'+
+format(date.getMinutes())+':'+
+format(date.getSeconds())+'"';}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}}
+if(this.layer!=null&&this.marker!=null){this.layer.removeMarker(this.marker);}
+this.layer=null;this.id=null;this.lonlat=null;this.data=null;if(this.marker!=null){this.destroyMarker(this.marker);this.marker=null;}
+if(this.popup!=null){this.destroyPopup(this.popup);this.popup=null;}},onScreen:function(){var onScreen=false;if((this.layer!=null)&&(this.layer.map!=null)){var screenBounds=this.layer.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);}
+return onScreen;},createMarker:function(){if(this.lonlat!=null){this.marker=new OpenLayers.Marker(this.lonlat,this.data.icon);}
+return this.marker;},destroyMarker:function(){this.marker.destroy();},createPopup:function(closeBox){if(this.lonlat!=null){if(!this.popup){var anchor=(this.marker)?this.marker.icon:null;var popupClass=this.popupClass?this.popupClass:OpenLayers.Popup.AnchoredBubble;this.popup=new popupClass(this.id+"_popup",this.lonlat,this.data.popupSize,this.data.popupContentHTML,anchor,closeBox);}
+if(this.data.overflow!=null){this.popup.contentDiv.style.overflow=this.data.overflow;}
+this.popup.feature=this;}
+return this.popup;},destroyPopup:function(){if(this.popup){this.popup.feature=null;this.popup.destroy();this.popup=null;}},CLASS_NAME:"OpenLayers.Feature"});OpenLayers.State={UNKNOWN:'Unknown',INSERT:'Insert',UPDATE:'Update',DELETE:'Delete'};OpenLayers.Feature.Vector=OpenLayers.Class(OpenLayers.Feature,{fid:null,geometry:null,attributes:null,bounds:null,state:null,style:null,url:null,renderIntent:"default",modified:null,initialize:function(geometry,attributes,style){OpenLayers.Feature.prototype.initialize.apply(this,[null,null,attributes]);this.lonlat=null;this.geometry=geometry?geometry:null;this.state=null;this.attributes={};if(attributes){this.attributes=OpenLayers.Util.extend(this.attributes,attributes);}
+this.style=style?style:null;},destroy:function(){if(this.layer){this.layer.removeFeatures(this);this.layer=null;}
+this.geometry=null;this.modified=null;OpenLayers.Feature.prototype.destroy.apply(this,arguments);},clone:function(){return new OpenLayers.Feature.Vector(this.geometry?this.geometry.clone():null,this.attributes,this.style);},onScreen:function(boundsOnly){var onScreen=false;if(this.layer&&this.layer.map){var screenBounds=this.layer.map.getExtent();if(boundsOnly){var featureBounds=this.geometry.getBounds();onScreen=screenBounds.intersectsBounds(featureBounds);}else{var screenPoly=screenBounds.toGeometry();onScreen=screenPoly.intersects(this.geometry);}}
+return onScreen;},getVisibility:function(){return!(this.style&&this.style.display=='none'||!this.layer||this.layer&&this.layer.styleMap&&this.layer.styleMap.createSymbolizer(this,this.renderIntent).display=='none'||this.layer&&!this.layer.getVisibility());},createMarker:function(){return null;},destroyMarker:function(){},createPopup:function(){return null;},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;if(this.geometry){atPoint=this.geometry.atPoint(lonlat,toleranceLon,toleranceLat);}
+return atPoint;},destroyPopup:function(){},move:function(location){if(!this.layer||!this.geometry.move){return undefined;}
+var pixel;if(location.CLASS_NAME=="OpenLayers.LonLat"){pixel=this.layer.getViewPortPxFromLonLat(location);}else{pixel=location;}
+var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){this.regExes={'typeStr':/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,'spaces':/\s+/,'parenComma':/\)\s*,\s*\(/,'doubleParenComma':/\)\s*\)\s*,\s*\(\s*\(/,'trimParens':/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(wkt){var features,type,str;wkt=wkt.replace(/[\n\r]/g," ");var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);}
+if(this.internalProjection&&this.externalProjection){if(features&&features.CLASS_NAME=="OpenLayers.Feature.Vector"){features.geometry.transform(this.externalProjection,this.internalProjection);}else if(features&&type!="geometrycollection"&&typeof features=="object"){for(var i=0,len=features.length;i<len;i++){var component=features[i];component.geometry.transform(this.externalProjection,this.internalProjection);}}}}
+return features;},write:function(features){var collection,geometry,type,data,isCollection;if(features.constructor==Array){collection=features;isCollection=true;}else{collection=[features];isCollection=false;}
+var pieces=[];if(isCollection){pieces.push('GEOMETRYCOLLECTION(');}
+for(var i=0,len=collection.length;i<len;++i){if(isCollection&&i>0){pieces.push(',');}
+geometry=collection[i].geometry;pieces.push(this.extractGeometry(geometry));}
+if(isCollection){pieces.push(')');}
+return pieces.join('');},extractGeometry:function(geometry){var type=geometry.CLASS_NAME.split('.')[2].toLowerCase();if(!this.extract[type]){return null;}
+if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);}
+var wktType=type=='collection'?'GEOMETRYCOLLECTION':type.toUpperCase();var data=wktType+'('+this.extract[type].apply(this,[geometry])+')';return data;},extract:{'point':function(point){return point.x+' '+point.y;},'multipoint':function(multipoint){var array=[];for(var i=0,len=multipoint.components.length;i<len;++i){array.push('('+
+this.extract.point.apply(this,[multipoint.components[i]])+')');}
+return array.join(',');},'linestring':function(linestring){var array=[];for(var i=0,len=linestring.components.length;i<len;++i){array.push(this.extract.point.apply(this,[linestring.components[i]]));}
+return array.join(',');},'multilinestring':function(multilinestring){var array=[];for(var i=0,len=multilinestring.components.length;i<len;++i){array.push('('+
+this.extract.linestring.apply(this,[multilinestring.components[i]])+')');}
+return array.join(',');},'polygon':function(polygon){var array=[];for(var i=0,len=polygon.components.length;i<len;++i){array.push('('+
+this.extract.linestring.apply(this,[polygon.components[i]])+')');}
+return array.join(',');},'multipolygon':function(multipolygon){var array=[];for(var i=0,len=multipolygon.components.length;i<len;++i){array.push('('+
+this.extract.polygon.apply(this,[multipolygon.components[i]])+')');}
+return array.join(',');},'collection':function(collection){var array=[];for(var i=0,len=collection.components.length;i<len;++i){array.push(this.extractGeometry.apply(this,[collection.components[i]]));}
+return array.join(',');}},parse:{'point':function(str){var coords=OpenLayers.String.trim(str).split(this.regExes.spaces);return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(coords[0],coords[1]));},'multipoint':function(str){var point;var points=OpenLayers.String.trim(str).split(',');var components=[];for(var i=0,len=points.length;i<len;++i){point=points[i].replace(this.regExes.trimParens,'$1');components.push(this.parse.point.apply(this,[point]).geometry);}
+return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPoint(components));},'linestring':function(str){var points=OpenLayers.String.trim(str).split(',');var components=[];for(var i=0,len=points.length;i<len;++i){components.push(this.parse.point.apply(this,[points[i]]).geometry);}
+return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(components));},'multilinestring':function(str){var line;var lines=OpenLayers.String.trim(str).split(this.regExes.parenComma);var components=[];for(var i=0,len=lines.length;i<len;++i){line=lines[i].replace(this.regExes.trimParens,'$1');components.push(this.parse.linestring.apply(this,[line]).geometry);}
+return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiLineString(components));},'polygon':function(str){var ring,linestring,linearring;var rings=OpenLayers.String.trim(str).split(this.regExes.parenComma);var components=[];for(var i=0,len=rings.length;i<len;++i){ring=rings[i].replace(this.regExes.trimParens,'$1');linestring=this.parse.linestring.apply(this,[ring]).geometry;linearring=new OpenLayers.Geometry.LinearRing(linestring.components);components.push(linearring);}
+return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(components));},'multipolygon':function(str){var polygon;var polygons=OpenLayers.String.trim(str).split(this.regExes.doubleParenComma);var components=[];for(var i=0,len=polygons.length;i<len;++i){polygon=polygons[i].replace(this.regExes.trimParens,'$1');components.push(this.parse.polygon.apply(this,[polygon]).geometry);}
+return new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon(components));},'geometrycollection':function(str){str=str.replace(/,\s*([A-Za-z])/g,'|$1');var wktArray=OpenLayers.String.trim(str).split('|');var components=[];for(var i=0,len=wktArray.length;i<len;++i){components.push(OpenLayers.Format.WKT.prototype.read.apply(this,[wktArray[i]]));}
+return components;}},CLASS_NAME:"OpenLayers.Format.WKT"});OpenLayers.Protocol.SQL.Gears=OpenLayers.Class(OpenLayers.Protocol.SQL,{FID_PREFIX:'__gears_fid__',NULL_GEOMETRY:'__gears_null_geometry__',NULL_FEATURE_STATE:'__gears_null_feature_state__',jsonParser:null,wktParser:null,fidRegExp:null,saveFeatureState:true,typeOfFid:"string",db:null,initialize:function(options){if(!this.supported()){return;}
+OpenLayers.Protocol.SQL.prototype.initialize.apply(this,[options]);this.jsonParser=new OpenLayers.Format.JSON();this.wktParser=new OpenLayers.Format.WKT();this.fidRegExp=new RegExp('^'+this.FID_PREFIX);this.initializeDatabase();},initializeDatabase:function(){this.db=google.gears.factory.create('beta.database');this.db.open(this.databaseName);this.db.execute("CREATE TABLE IF NOT EXISTS "+this.tableName+" (fid TEXT UNIQUE, geometry TEXT, properties TEXT,"+"  state TEXT)");},destroy:function(){this.db.close();this.db=null;this.jsonParser=null;this.wktParser=null;OpenLayers.Protocol.SQL.prototype.destroy.apply(this);},supported:function(){return!!(window.google&&google.gears);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=OpenLayers.Util.applyDefaults(options,this.options);var feature,features=[];var rs=this.db.execute("SELECT * FROM "+this.tableName);while(rs.isValidRow()){feature=this.unfreezeFeature(rs);if(this.evaluateFilter(feature,options.filter)){if(!options.noFeatureStateReset){feature.state=null;}
+features.push(feature);}
+rs.next();}
+rs.close();var resp=new OpenLayers.Protocol.Response({code:OpenLayers.Protocol.Response.SUCCESS,requestType:"read",features:features});if(options&&options.callback){options.callback.call(options.scope,resp);}
+return resp;},unfreezeFeature:function(row){var feature;var wkt=row.fieldByName('geometry');if(wkt==this.NULL_GEOMETRY){feature=new OpenLayers.Feature.Vector();}else{feature=this.wktParser.read(wkt);}
+feature.attributes=this.jsonParser.read(row.fieldByName('properties'));feature.fid=this.extractFidFromField(row.fieldByName('fid'));var state=row.fieldByName('state');if(state==this.NULL_FEATURE_STATE){state=null;}
+feature.state=state;return feature;},extractFidFromField:function(field){if(!field.match(this.fidRegExp)&&this.typeOfFid=="number"){field=parseFloat(field);}
+return field;},create:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=this.createOrUpdate(features);resp.requestType="create";if(options&&options.callback){options.callback.call(options.scope,resp);}
+return resp;},update:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=this.createOrUpdate(features);resp.requestType="update";if(options&&options.callback){options.callback.call(options.scope,resp);}
+return resp;},createOrUpdate:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+var i,len=features.length,feature;var insertedFeatures=new Array(len);for(i=0;i<len;i++){feature=features[i];var params=this.freezeFeature(feature);this.db.execute("REPLACE INTO "+this.tableName+" (fid, geometry, properties, state)"+" VALUES (?, ?, ?, ?)",params);var clone=feature.clone();clone.fid=this.extractFidFromField(params[0]);insertedFeatures[i]=clone;}
+return new OpenLayers.Protocol.Response({code:OpenLayers.Protocol.Response.SUCCESS,features:insertedFeatures,reqFeatures:features});},freezeFeature:function(feature){feature.fid=feature.fid!=null?""+feature.fid:OpenLayers.Util.createUniqueID(this.FID_PREFIX);var geometry=feature.geometry!=null?feature.geometry.toString():this.NULL_GEOMETRY;var properties=this.jsonParser.write(feature.attributes);var state=this.getFeatureStateForFreeze(feature);return[feature.fid,geometry,properties,state];},getFeatureStateForFreeze:function(feature){var state;if(!this.saveFeatureState){state=this.NULL_FEATURE_STATE;}else if(this.createdOffline(feature)){state=OpenLayers.State.INSERT;}else{state=feature.state;}
+return state;},"delete":function(features,options){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+options=OpenLayers.Util.applyDefaults(options,this.options);var i,len,feature;for(i=0,len=features.length;i<len;i++){feature=features[i];if(this.saveFeatureState&&!this.createdOffline(feature)){var toDelete=feature.clone();toDelete.fid=feature.fid;if(toDelete.geometry){toDelete.geometry.destroy();toDelete.geometry=null;}
+toDelete.state=feature.state;this.createOrUpdate(toDelete);}else{this.db.execute("DELETE FROM "+this.tableName+" WHERE fid = ?",[feature.fid]);}}
+var resp=new OpenLayers.Protocol.Response({code:OpenLayers.Protocol.Response.SUCCESS,requestType:"delete",reqFeatures:features});if(options&&options.callback){options.callback.call(options.scope,resp);}
+return resp;},createdOffline:function(feature){return(typeof feature.fid=="string"&&!!(feature.fid.match(this.fidRegExp)));},commit:function(features,options){var opt,resp=[],nRequests=0,nResponses=0;function callback(resp){if(++nResponses<nRequests){resp.last=false;}
+this.callUserCallback(options,resp);}
+var feature,toCreate=[],toUpdate=[],toDelete=[];for(var i=features.length-1;i>=0;i--){feature=features[i];switch(feature.state){case OpenLayers.State.INSERT:toCreate.push(feature);break;case OpenLayers.State.UPDATE:toUpdate.push(feature);break;case OpenLayers.State.DELETE:toDelete.push(feature);break;}}
+if(toCreate.length>0){nRequests++;opt=OpenLayers.Util.applyDefaults({"callback":callback,"scope":this},options.create);resp.push(this.create(toCreate,opt));}
+if(toUpdate.length>0){nRequests++;opt=OpenLayers.Util.applyDefaults({"callback":callback,"scope":this},options.update);resp.push(this.update(toUpdate,opt));}
+if(toDelete.length>0){nRequests++;opt=OpenLayers.Util.applyDefaults({"callback":callback,"scope":this},options["delete"]);resp.push(this["delete"](toDelete,opt));}
+return resp;},clear:function(){this.db.execute("DELETE FROM "+this.tableName);},callUserCallback:function(options,resp){var opt=options[resp.requestType];if(opt&&opt.callback){opt.callback.call(opt.scope,resp);}
+if(resp.last&&options.callback){options.callback.call(options.scope);}},CLASS_NAME:"OpenLayers.Protocol.SQL.Gears"});OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isSingleTouch:function(event){return event.touches&&event.touches.length==1;},isMultiTouch:function(event){return event.touches&&event.touches.length>1;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}}
+if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))){element=element.parentNode;}
+return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';}
+if(!this.observers){this.observers={};}
+if(!element._eventCacheID){var idPrefix="eventCacheID_";if(element.id){idPrefix=element.id+"_"+idPrefix;}
+element._eventCacheID=OpenLayers.Util.createUniqueID(idPrefix);}
+var cacheID=element._eventCacheID;if(!this.observers[cacheID]){this.observers[cacheID]=[];}
+this.observers[cacheID].push({'element':element,'name':name,'observer':observer,'useCapture':useCapture});if(element.addEventListener){element.addEventListener(name,observer,useCapture);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}},stopObservingElement:function(elementParam){var element=OpenLayers.Util.getElement(elementParam);var cacheID=element._eventCacheID;this._removeElementObservers(OpenLayers.Event.observers[cacheID]);},_removeElementObservers:function(elementObservers){if(elementObservers){for(var i=elementObservers.length-1;i>=0;i--){var entry=elementObservers[i];var args=new Array(entry.element,entry.name,entry.observer,entry.useCapture);var removed=OpenLayers.Event.stopObserving.apply(this,args);}}},stopObserving:function(elementParam,name,observer,useCapture){useCapture=useCapture||false;var element=OpenLayers.Util.getElement(elementParam);var cacheID=element._eventCacheID;if(name=='keypress'){if(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent){name='keydown';}}
+var foundEntry=false;var elementObservers=OpenLayers.Event.observers[cacheID];if(elementObservers){var i=0;while(!foundEntry&&i<elementObservers.length){var cacheEntry=elementObservers[i];if((cacheEntry.name==name)&&(cacheEntry.observer==observer)&&(cacheEntry.useCapture==useCapture)){elementObservers.splice(i,1);if(elementObservers.length==0){delete OpenLayers.Event.observers[cacheID];}
+foundEntry=true;break;}
+i++;}}
+if(foundEntry){if(element.removeEventListener){element.removeEventListener(name,observer,useCapture);}else if(element&&element.detachEvent){element.detachEvent('on'+name,observer);}}
+return foundEntry;},unloadCache:function(){if(OpenLayers.Event&&OpenLayers.Event.observers){for(var cacheID in OpenLayers.Event.observers){var elementObservers=OpenLayers.Event.observers[cacheID];OpenLayers.Event._removeElementObservers.apply(this,[elementObservers]);}
+OpenLayers.Event.observers=false;}},CLASS_NAME:"OpenLayers.Event"};OpenLayers.Event.observe(window,'unload',OpenLayers.Event.unloadCache,false);if(window.Event){OpenLayers.Util.applyDefaults(window.Event,OpenLayers.Event);}else{var Event=OpenLayers.Event;}
+OpenLayers.Events=OpenLayers.Class({BROWSER_EVENTS:["mouseover","mouseout","mousedown","mouseup","mousemove","click","dblclick","rightclick","dblrightclick","resize","focus","blur","touchstart","touchmove","touchend"],listeners:null,object:null,element:null,eventTypes:null,eventHandler:null,fallThrough:null,includeXY:false,clearMouseListener:null,initialize:function(object,element,eventTypes,fallThrough,options){OpenLayers.Util.extend(this,options);this.object=object;this.fallThrough=fallThrough;this.listeners={};this.eventHandler=OpenLayers.Function.bindAsEventListener(this.handleBrowserEvent,this);this.clearMouseListener=OpenLayers.Function.bind(this.clearMouseCache,this);this.eventTypes=[];if(eventTypes!=null){for(var i=0,len=eventTypes.length;i<len;i++){this.addEventType(eventTypes[i]);}}
+if(element!=null){this.attachToElement(element);}},destroy:function(){if(this.element){OpenLayers.Event.stopObservingElement(this.element);if(this.element.hasScrollEvent){OpenLayers.Event.stopObserving(window,"scroll",this.clearMouseListener);}}
+this.element=null;this.listeners=null;this.object=null;this.eventTypes=null;this.fallThrough=null;this.eventHandler=null;},addEventType:function(eventName){if(!this.listeners[eventName]){this.eventTypes.push(eventName);this.listeners[eventName]=[];}},attachToElement:function(element){if(this.element){OpenLayers.Event.stopObservingElement(this.element);}
+this.element=element;for(var i=0,len=this.BROWSER_EVENTS.length;i<len;i++){var eventType=this.BROWSER_EVENTS[i];this.addEventType(eventType);OpenLayers.Event.observe(element,eventType,this.eventHandler);}
+OpenLayers.Event.observe(element,"dragstart",OpenLayers.Event.stop);},on:function(object){for(var type in object){if(type!="scope"){this.register(type,object.scope,object[type]);}}},register:function(type,obj,func){if((func!=null)&&(OpenLayers.Util.indexOf(this.eventTypes,type)!=-1)){if(obj==null){obj=this.object;}
+var listeners=this.listeners[type];listeners.push({obj:obj,func:func});}},registerPriority:function(type,obj,func){if(func!=null){if(obj==null){obj=this.object;}
+var listeners=this.listeners[type];if(listeners!=null){listeners.unshift({obj:obj,func:func});}}},un:function(object){for(var type in object){if(type!="scope"){this.unregister(type,object.scope,object[type]);}}},unregister:function(type,obj,func){if(obj==null){obj=this.object;}
+var listeners=this.listeners[type];if(listeners!=null){for(var i=0,len=listeners.length;i<len;i++){if(listeners[i].obj==obj&&listeners[i].func==func){listeners.splice(i,1);break;}}}},remove:function(type){if(this.listeners[type]!=null){this.listeners[type]=[];}},triggerEvent:function(type,evt){var listeners=this.listeners[type];if(!listeners||listeners.length==0){return undefined;}
+if(evt==null){evt={};}
+evt.object=this.object;evt.element=this.element;if(!evt.type){evt.type=type;}
+listeners=listeners.slice();var continueChain;for(var i=0,len=listeners.length;i<len;i++){var callback=listeners[i];continueChain=callback.func.apply(callback.obj,[evt]);if((continueChain!=undefined)&&(continueChain==false)){break;}}
+if(!this.fallThrough){OpenLayers.Event.stop(evt,true);}
+return continueChain;},handleBrowserEvent:function(evt){var type=evt.type,listeners=this.listeners[type];if(!listeners||listeners.length==0){return;}
+var touches=evt.touches;if(touches&&touches[0]){var x=0;var y=0;var num=touches.length;var touch;for(var i=0;i<num;++i){touch=touches[i];x+=touch.clientX;y+=touch.clientY;}
+evt.clientX=x/num;evt.clientY=y/num;}
+if(this.includeXY){evt.xy=this.getMousePosition(evt);}
+this.triggerEvent(type,evt);},clearMouseCache:function(){this.element.scrolls=null;this.element.lefttop=null;var body=document.body;if(body&&!((body.scrollTop!=0||body.scrollLeft!=0)&&navigator.userAgent.match(/iPhone/i))){this.element.offsets=null;}},getMousePosition:function(evt){if(!this.includeXY){this.clearMouseCache();}else if(!this.element.hasScrollEvent){OpenLayers.Event.observe(window,"scroll",this.clearMouseListener);this.element.hasScrollEvent=true;}
+if(!this.element.scrolls){var viewportElement=OpenLayers.Util.getViewportElement();this.element.scrolls=[viewportElement.scrollLeft,viewportElement.scrollTop];}
+if(!this.element.lefttop){this.element.lefttop=[(document.documentElement.clientLeft||0),(document.documentElement.clientTop||0)];}
+if(!this.element.offsets){this.element.offsets=OpenLayers.Util.pagePosition(this.element);}
+return new OpenLayers.Pixel((evt.clientX+this.element.scrolls[0])-this.element.offsets[0]
+-this.element.lefttop[0],(evt.clientY+this.element.scrolls[1])-this.element.offsets[1]
+-this.element.lefttop[1]);},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Tween=OpenLayers.Class({INTERVAL:10,easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,interval:null,playing:false,initialize:function(easing){this.easing=(easing)?easing:OpenLayers.Easing.Expo.easeOut;},start:function(begin,finish,duration,options){this.playing=true;this.begin=begin;this.finish=finish;this.duration=duration;this.callbacks=options.callbacks;this.time=0;if(this.interval){window.clearInterval(this.interval);this.interval=null;}
+if(this.callbacks&&this.callbacks.start){this.callbacks.start.call(this,this.begin);}
+this.interval=window.setInterval(OpenLayers.Function.bind(this.play,this),this.INTERVAL);},stop:function(){if(!this.playing){return;}
+if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);}
+window.clearInterval(this.interval);this.interval=null;this.playing=false;},play:function(){var value={};for(var i in this.begin){var b=this.begin[i];var f=this.finish[i];if(b==null||f==null||isNaN(b)||isNaN(f)){OpenLayers.Console.error('invalid value for Tween');}
+var c=f-b;value[i]=this.easing.apply(this,[this.time,b,c,this.duration]);}
+this.time++;if(this.callbacks&&this.callbacks.eachStep){this.callbacks.eachStep.call(this,value);}
+if(this.time>this.duration){this.stop();}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1000},EVENT_TYPES:["preaddlayer","addlayer","preremovelayer","removelayer","changelayer","movestart","move","moveend","zoomend","popupopen","popupclose","addmarker","removemarker","clearmarkers","mouseover","mouseout","mousemove","dragstart","drag","dragend","changebaselayer"],id:null,fractionalZoom:false,events:null,allOverlays:false,div:null,dragging:false,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,viewRequestID:0,tileSize:null,projection:"EPSG:4326",units:'degrees',resolutions:null,maxResolution:1.40625,minResolution:null,maxScale:null,minScale:null,maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:true,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(div,options){if(arguments.length===1&&typeof div==="object"){options=div;div=options&&options.div;}
+this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+'theme/default/style.css';OpenLayers.Util.extend(this,options);this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(div);if(!this.div){this.div=document.createElement("div");this.div.style.height="1px";this.div.style.width="1px";}
+OpenLayers.Element.addClass(this.div,'olMap');var id=this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(id,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);var eventsDiv=document.createElement("div");eventsDiv.id=this.id+"_events";eventsDiv.style.position="absolute";eventsDiv.style.width="100%";eventsDiv.style.height="100%";eventsDiv.style.zIndex=this.Z_INDEX_BASE.Control-1;this.viewPortDiv.appendChild(eventsDiv);this.eventsDiv=eventsDiv;this.events=new OpenLayers.Events(this,this.eventsDiv,this.EVENT_TYPES,this.fallThrough,{includeXY:true});id=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(id);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;this.eventsDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}
+this.events.register("movestart",this,this.updateSize);if(OpenLayers.String.contains(navigator.appName,"Microsoft")){this.events.register("resize",this,this.updateSize);}else{this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this);OpenLayers.Event.observe(window,'resize',this.updateSizeDestroy);}
+if(this.theme){var addNode=true;var nodes=document.getElementsByTagName('link');for(var i=0,len=nodes.length;i<len;++i){if(OpenLayers.Util.isEquivalentUrl(nodes.item(i).href,this.theme)){addNode=false;break;}}
+if(addNode){var cssNode=document.createElement('link');cssNode.setAttribute('rel','stylesheet');cssNode.setAttribute('type','text/css');cssNode.setAttribute('href',this.theme);document.getElementsByTagName('head')[0].appendChild(cssNode);}}
+if(this.controls==null){if(OpenLayers.Control!=null){this.controls=[new OpenLayers.Control.Navigation(),new OpenLayers.Control.PanZoom(),new OpenLayers.Control.ArgParser(),new OpenLayers.Control.Attribution()];}else{this.controls=[];}}
+for(var i=0,len=this.controls.length;i<len;i++){this.addControlToMap(this.controls[i]);}
+this.popups=[];this.unloadDestroy=OpenLayers.Function.bind(this.destroy,this);OpenLayers.Event.observe(window,'unload',this.unloadDestroy);if(options&&options.layers){delete this.center;this.addLayers(options.layers);if(options.center){this.setCenter(options.center,options.zoom);}}},render:function(div){this.div=OpenLayers.Util.getElement(div);OpenLayers.Element.addClass(this.div,'olMap');this.viewPortDiv.parentNode.removeChild(this.viewPortDiv);this.div.appendChild(this.viewPortDiv);this.updateSize();},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy){return false;}
+if(this.panTween){this.panTween.stop();this.panTween=null;}
+OpenLayers.Event.stopObserving(window,'unload',this.unloadDestroy);this.unloadDestroy=null;if(this.updateSizeDestroy){OpenLayers.Event.stopObserving(window,'resize',this.updateSizeDestroy);}else{this.events.unregister("resize",this,this.updateSize);}
+this.paddingForPopups=null;if(this.controls!=null){for(var i=this.controls.length-1;i>=0;--i){this.controls[i].destroy();}
+this.controls=null;}
+if(this.layers!=null){for(var i=this.layers.length-1;i>=0;--i){this.layers[i].destroy(false);}
+this.layers=null;}
+if(this.viewPortDiv){this.div.removeChild(this.viewPortDiv);}
+this.viewPortDiv=null;if(this.eventListeners){this.events.un(this.eventListeners);this.eventListeners=null;}
+this.events.destroy();this.events=null;},setOptions:function(options){var updatePxExtent=this.minPx&&options.restrictedExtent!=this.restrictedExtent;OpenLayers.Util.extend(this,options);updatePxExtent&&this.moveTo(this.getCachedCenter(),this.zoom,{forceZoomChange:true});},getTileSize:function(){return this.tileSize;},getBy:function(array,property,match){var test=(typeof match.test=="function");var found=OpenLayers.Array.filter(this[array],function(item){return item[property]==match||(test&&match.test(item[property]));});return found;},getLayersBy:function(property,match){return this.getBy("layers",property,match);},getLayersByName:function(match){return this.getLayersBy("name",match);},getLayersByClass:function(match){return this.getLayersBy("CLASS_NAME",match);},getControlsBy:function(property,match){return this.getBy("controls",property,match);},getControlsByClass:function(match){return this.getControlsBy("CLASS_NAME",match);},getLayer:function(id){var foundLayer=null;for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];if(layer.id==id){foundLayer=layer;break;}}
+return foundLayer;},setLayerZIndex:function(layer,zIdx){layer.setZIndex(this.Z_INDEX_BASE[layer.isBaseLayer?'BaseLayer':'Overlay']
++zIdx*5);},resetLayersZIndex:function(){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];this.setLayerZIndex(layer,i);}},addLayer:function(layer){for(var i=0,len=this.layers.length;i<len;i++){if(this.layers[i]==layer){var msg=OpenLayers.i18n('layerAlreadyAdded',{'layerName':layer.name});OpenLayers.Console.warn(msg);return false;}}
+if(this.events.triggerEvent("preaddlayer",{layer:layer})===false){return;}
+if(this.allOverlays){layer.isBaseLayer=false;}
+layer.div.className="olLayerDiv";layer.div.style.overflow="";this.setLayerZIndex(layer,this.layers.length);if(layer.isFixed){this.viewPortDiv.appendChild(layer.div);}else{this.layerContainerDiv.appendChild(layer.div);}
+this.layers.push(layer);layer.setMap(this);if(layer.isBaseLayer||(this.allOverlays&&!this.baseLayer)){if(this.baseLayer==null){this.setBaseLayer(layer);}else{layer.setVisibility(false);}}else{layer.redraw();}
+this.events.triggerEvent("addlayer",{layer:layer});layer.events.triggerEvent("added",{map:this,layer:layer});layer.afterAdd();},addLayers:function(layers){for(var i=0,len=layers.length;i<len;i++){this.addLayer(layers[i]);}},removeLayer:function(layer,setNewBaseLayer){if(this.events.triggerEvent("preremovelayer",{layer:layer})===false){return;}
+if(setNewBaseLayer==null){setNewBaseLayer=true;}
+if(layer.isFixed){this.viewPortDiv.removeChild(layer.div);}else{this.layerContainerDiv.removeChild(layer.div);}
+OpenLayers.Util.removeItem(this.layers,layer);layer.removeMap(this);layer.map=null;if(this.baseLayer==layer){this.baseLayer=null;if(setNewBaseLayer){for(var i=0,len=this.layers.length;i<len;i++){var iLayer=this.layers[i];if(iLayer.isBaseLayer||this.allOverlays){this.setBaseLayer(iLayer);break;}}}}
+this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:layer});layer.events.triggerEvent("removed",{map:this,layer:layer});},getNumLayers:function(){return this.layers.length;},getLayerIndex:function(layer){return OpenLayers.Util.indexOf(this.layers,layer);},setLayerIndex:function(layer,idx){var base=this.getLayerIndex(layer);if(idx<0){idx=0;}else if(idx>this.layers.length){idx=this.layers.length;}
+if(base!=idx){this.layers.splice(base,1);this.layers.splice(idx,0,layer);for(var i=0,len=this.layers.length;i<len;i++){this.setLayerZIndex(this.layers[i],i);}
+this.events.triggerEvent("changelayer",{layer:layer,property:"order"});if(this.allOverlays){if(idx===0){this.setBaseLayer(layer);}else if(this.baseLayer!==this.layers[0]){this.setBaseLayer(this.layers[0]);}}}},raiseLayer:function(layer,delta){var idx=this.getLayerIndex(layer)+delta;this.setLayerIndex(layer,idx);},setBaseLayer:function(newBaseLayer){if(newBaseLayer!=this.baseLayer){if(OpenLayers.Util.indexOf(this.layers,newBaseLayer)!=-1){var center=this.getCachedCenter();var newResolution=OpenLayers.Util.getResolutionFromScale(this.getScale(),newBaseLayer.units);if(this.baseLayer!=null&&!this.allOverlays){this.baseLayer.setVisibility(false);}
+this.baseLayer=newBaseLayer;this.viewRequestID++;if(!this.allOverlays||this.baseLayer.visibility){this.baseLayer.setVisibility(true);}
+if(center!=null){var newZoom=this.getZoomForResolution(newResolution||this.resolution,true);this.setCenter(center,newZoom,false,true);}
+this.events.triggerEvent("changebaselayer",{layer:this.baseLayer});}}},addControl:function(control,px){this.controls.push(control);this.addControlToMap(control,px);},addControls:function(controls,pixels){var pxs=(arguments.length===1)?[]:pixels;for(var i=0,len=controls.length;i<len;i++){var ctrl=controls[i];var px=(pxs[i])?pxs[i]:null;this.addControl(ctrl,px);}},addControlToMap:function(control,px){control.outsideViewport=(control.div!=null);if(this.displayProjection&&!control.displayProjection){control.displayProjection=this.displayProjection;}
+control.setMap(this);var div=control.draw(px);if(div){if(!control.outsideViewport){div.style.zIndex=this.Z_INDEX_BASE['Control']+
+this.controls.length;this.viewPortDiv.appendChild(div);}}
+if(control.autoActivate){control.activate();}},getControl:function(id){var returnControl=null;for(var i=0,len=this.controls.length;i<len;i++){var control=this.controls[i];if(control.id==id){returnControl=control;break;}}
+return returnControl;},removeControl:function(control){if((control)&&(control==this.getControl(control.id))){if(control.div&&(control.div.parentNode==this.viewPortDiv)){this.viewPortDiv.removeChild(control.div);}
+OpenLayers.Util.removeItem(this.controls,control);}},addPopup:function(popup,exclusive){if(exclusive){for(var i=this.popups.length-1;i>=0;--i){this.removePopup(this.popups[i]);}}
+popup.map=this;this.popups.push(popup);var popupDiv=popup.draw();if(popupDiv){popupDiv.style.zIndex=this.Z_INDEX_BASE['Popup']+
+this.popups.length;this.layerContainerDiv.appendChild(popupDiv);}},removePopup:function(popup){OpenLayers.Util.removeItem(this.popups,popup);if(popup.div){try{this.layerContainerDiv.removeChild(popup.div);}
+catch(e){}}
+popup.map=null;},getSize:function(){var size=null;if(this.size!=null){size=this.size.clone();}
+return size;},updateSize:function(){var newSize=this.getCurrentSize();if(newSize&&!isNaN(newSize.h)&&!isNaN(newSize.w)){this.events.clearMouseCache();var oldSize=this.getSize();if(oldSize==null){this.size=oldSize=newSize;}
+if(!newSize.equals(oldSize)){this.size=newSize;for(var i=0,len=this.layers.length;i<len;i++){this.layers[i].onMapResize();}
+var center=this.getCachedCenter();if(this.baseLayer!=null&&center!=null){var zoom=this.getZoom();this.zoom=null;this.setCenter(center,zoom);}}}},getCurrentSize:function(){var size=new OpenLayers.Size(this.div.clientWidth,this.div.clientHeight);if(size.w==0&&size.h==0||isNaN(size.w)&&isNaN(size.h)){size.w=this.div.offsetWidth;size.h=this.div.offsetHeight;}
+if(size.w==0&&size.h==0||isNaN(size.w)&&isNaN(size.h)){size.w=parseInt(this.div.style.width);size.h=parseInt(this.div.style.height);}
+return size;},calculateBounds:function(center,resolution){var extent=null;if(center==null){center=this.getCachedCenter();}
+if(resolution==null){resolution=this.getResolution();}
+if((center!=null)&&(resolution!=null)){var size=this.getSize();var w_deg=size.w*resolution;var h_deg=size.h*resolution;extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);}
+return extent;},getCenter:function(){var center=null;var cachedCenter=this.getCachedCenter();if(cachedCenter){center=cachedCenter.clone();}
+return center;},getCachedCenter:function(){if(!this.center&&this.size){this.center=this.getLonLatFromViewPortPx(new OpenLayers.Pixel(this.size.w/2,this.size.h/2));}
+return this.center;},getZoom:function(){return this.zoom;},pan:function(dx,dy,options){options=OpenLayers.Util.applyDefaults(options,{animate:true,dragging:false});if(options.dragging){if(dx!=0||dy!=0){this.moveByPx(dx,dy);}}else{var centerPx=this.getViewPortPxFromLonLat(this.getCachedCenter());var newCenterPx=centerPx.add(dx,dy);if(this.dragging||!newCenterPx.equals(centerPx)){var newCenterLonLat=this.getLonLatFromViewPortPx(newCenterPx);if(options.animate){this.panTo(newCenterLonLat);}else{this.moveTo(newCenterLonLat);this.dragging=false;this.events.triggerEvent("moveend");}}}},panTo:function(lonlat){if(this.panMethod&&this.getExtent().scale(this.panRatio).containsLonLat(lonlat)){if(!this.panTween){this.panTween=new OpenLayers.Tween(this.panMethod);}
+var center=this.getCachedCenter();if(lonlat.equals(center)){return;}
+var from=this.getPixelFromLonLat(center);var to=this.getPixelFromLonLat(lonlat);var vector={x:to.x-from.x,y:to.y-from.y};var last={x:0,y:0};this.panTween.start({x:0,y:0},vector,this.panDuration,{callbacks:{eachStep:OpenLayers.Function.bind(function(px){var x=px.x-last.x,y=px.y-last.y;this.moveByPx(x,y);last.x=Math.round(px.x);last.y=Math.round(px.y);},this),done:OpenLayers.Function.bind(function(px){this.moveTo(lonlat);this.dragging=false;this.events.triggerEvent("moveend");},this)}});}else{this.setCenter(lonlat);}},setCenter:function(lonlat,zoom,dragging,forceZoomChange){this.panTween&&this.panTween.stop();this.moveTo(lonlat,zoom,{'dragging':dragging,'forceZoomChange':forceZoomChange});},moveByPx:function(dx,dy){var hw=this.size.w/2;var hh=this.size.h/2;var x=hw+dx;var y=hh+dy;var wrapDateLine=this.baseLayer.wrapDateLine;var xRestriction=0;var yRestriction=0;if(this.restrictedExtent){xRestriction=hw;yRestriction=hh;wrapDateLine=false;}
+dx=wrapDateLine||x<=this.maxPx.x-xRestriction&&x>=this.minPx.x+xRestriction?Math.round(dx):0;dy=y<=this.maxPx.y-yRestriction&&y>=this.minPx.y+yRestriction?Math.round(dy):0;var minX=this.minPx.x,maxX=this.maxPx.x;if(dx||dy){if(!this.dragging){this.dragging=true;this.events.triggerEvent("movestart");}
+this.center=null;if(dx){this.layerContainerDiv.style.left=parseInt(this.layerContainerDiv.style.left)-dx+"px";this.minPx.x-=dx;this.maxPx.x-=dx;if(wrapDateLine){if(this.maxPx.x>maxX){this.maxPx.x-=(maxX-minX);}
+if(this.minPx.x<minX){this.minPx.x+=(maxX-minX);}}}
+if(dy){this.layerContainerDiv.style.top=parseInt(this.layerContainerDiv.style.top)-dy+"px";this.minPx.y-=dy;this.maxPx.y-=dy;}
+var layer,i,len;for(i=0,len=this.layers.length;i<len;++i){layer=this.layers[i];if(layer.visibility&&(layer===this.baseLayer||layer.inRange)){layer.moveByPx(dx,dy);layer.events.triggerEvent("move");}}
+this.events.triggerEvent("move");}},moveTo:function(lonlat,zoom,options){if(!options){options={};}
+if(zoom!=null){zoom=parseFloat(zoom);if(!this.fractionalZoom){zoom=Math.round(zoom);}}
+var dragging=options.dragging||this.dragging;var forceZoomChange=options.forceZoomChange;if(!this.getCachedCenter()&&!this.isValidLonLat(lonlat)){lonlat=this.maxExtent.getCenterLonLat();this.center=lonlat.clone();}
+if(this.restrictedExtent!=null){if(lonlat==null){lonlat=this.center;}
+if(zoom==null){zoom=this.getZoom();}
+var resolution=this.getResolutionForZoom(zoom);var extent=this.calculateBounds(lonlat,resolution);if(!this.restrictedExtent.containsBounds(extent)){var maxCenter=this.restrictedExtent.getCenterLonLat();if(extent.getWidth()>this.restrictedExtent.getWidth()){lonlat=new OpenLayers.LonLat(maxCenter.lon,lonlat.lat);}else if(extent.left<this.restrictedExtent.left){lonlat=lonlat.add(this.restrictedExtent.left-
+extent.left,0);}else if(extent.right>this.restrictedExtent.right){lonlat=lonlat.add(this.restrictedExtent.right-
+extent.right,0);}
+if(extent.getHeight()>this.restrictedExtent.getHeight()){lonlat=new OpenLayers.LonLat(lonlat.lon,maxCenter.lat);}else if(extent.bottom<this.restrictedExtent.bottom){lonlat=lonlat.add(0,this.restrictedExtent.bottom-
+extent.bottom);}
+else if(extent.top>this.restrictedExtent.top){lonlat=lonlat.add(0,this.restrictedExtent.top-
+extent.top);}}}
+var zoomChanged=forceZoomChange||((this.isValidZoomLevel(zoom))&&(zoom!=this.getZoom()));var centerChanged=(this.isValidLonLat(lonlat))&&(!lonlat.equals(this.center));if(zoomChanged||centerChanged||dragging){dragging||this.events.triggerEvent("movestart");if(centerChanged){if(!zoomChanged&&this.center){this.centerLayerContainer(lonlat);}
+this.center=lonlat.clone();}
+var res=zoomChanged?this.getResolutionForZoom(zoom):this.getResolution();if(zoomChanged||this.layerContainerOrigin==null){this.layerContainerOrigin=this.getCachedCenter();this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px";var maxExtent=this.getMaxExtent({restricted:true});var maxExtentCenter=maxExtent.getCenterLonLat();var lonDelta=this.center.lon-maxExtentCenter.lon;var latDelta=maxExtentCenter.lat-this.center.lat;var extentWidth=Math.round(maxExtent.getWidth()/res);var extentHeight=Math.round(maxExtent.getHeight()/res);var left=(this.size.w-extentWidth)/2-lonDelta/res;var top=(this.size.h-extentHeight)/2-latDelta/res;this.minPx=new OpenLayers.Pixel(left,top);this.maxPx=new OpenLayers.Pixel(left+extentWidth,top+extentHeight);}
+if(zoomChanged){this.zoom=zoom;this.resolution=res;this.viewRequestID++;}
+var bounds=this.getExtent();if(this.baseLayer.visibility){this.baseLayer.moveTo(bounds,zoomChanged,options.dragging);options.dragging||this.baseLayer.events.triggerEvent("moveend",{zoomChanged:zoomChanged});}
+bounds=this.baseLayer.getExtent();for(var i=this.layers.length-1;i>=0;--i){var layer=this.layers[i];if(layer!==this.baseLayer&&!layer.isBaseLayer){var inRange=layer.calculateInRange();if(layer.inRange!=inRange){layer.inRange=inRange;if(!inRange){layer.display(false);}
+this.events.triggerEvent("changelayer",{layer:layer,property:"visibility"});}
+if(inRange&&layer.visibility){layer.moveTo(bounds,zoomChanged,options.dragging);options.dragging||layer.events.triggerEvent("moveend",{zoomChanged:zoomChanged});}}}
+this.events.triggerEvent("move");dragging||this.events.triggerEvent("moveend");if(zoomChanged){for(var i=0,len=this.popups.length;i<len;i++){this.popups[i].updatePosition();}
+this.events.triggerEvent("zoomend");}}},centerLayerContainer:function(lonlat){var originPx=this.getViewPortPxFromLonLat(this.layerContainerOrigin);var newPx=this.getViewPortPxFromLonLat(lonlat);if((originPx!=null)&&(newPx!=null)){var oldLeft=parseInt(this.layerContainerDiv.style.left);var oldTop=parseInt(this.layerContainerDiv.style.top);var newLeft=Math.round(originPx.x-newPx.x);var newTop=Math.round(originPx.y-newPx.y);this.layerContainerDiv.style.left=newLeft+"px";this.layerContainerDiv.style.top=newTop+"px";var dx=oldLeft-newLeft;var dy=oldTop-newTop;this.minPx.x-=dx;this.maxPx.x-=dx;this.minPx.y-=dy;this.maxPx.y-=dy;}},isValidZoomLevel:function(zoomLevel){return((zoomLevel!=null)&&(zoomLevel>=0)&&(zoomLevel<this.getNumZoomLevels()));},isValidLonLat:function(lonlat){var valid=false;if(lonlat!=null){var maxExtent=this.getMaxExtent();valid=maxExtent.containsLonLat(lonlat);}
+return valid;},getProjection:function(){var projection=this.getProjectionObject();return projection?projection.getCode():null;},getProjectionObject:function(){var projection=null;if(this.baseLayer!=null){projection=this.baseLayer.projection;}
+return projection;},getMaxResolution:function(){var maxResolution=null;if(this.baseLayer!=null){maxResolution=this.baseLayer.maxResolution;}
+return maxResolution;},getMaxExtent:function(options){var maxExtent=null;if(options&&options.restricted&&this.restrictedExtent){maxExtent=this.restrictedExtent;}else if(this.baseLayer!=null){maxExtent=this.baseLayer.maxExtent;}
+return maxExtent;},getNumZoomLevels:function(){var numZoomLevels=null;if(this.baseLayer!=null){numZoomLevels=this.baseLayer.numZoomLevels;}
+return numZoomLevels;},getExtent:function(){var extent=null;if(this.baseLayer!=null){extent=this.baseLayer.getExtent();}
+return extent;},getResolution:function(){var resolution=null;if(this.baseLayer!=null){resolution=this.baseLayer.getResolution();}else if(this.allOverlays===true&&this.layers.length>0){resolution=this.layers[0].getResolution();}
+return resolution;},getUnits:function(){var units=null;if(this.baseLayer!=null){units=this.baseLayer.units;}
+return units;},getScale:function(){var scale=null;if(this.baseLayer!=null){var res=this.getResolution();var units=this.baseLayer.units;scale=OpenLayers.Util.getScaleFromResolution(res,units);}
+return scale;},getZoomForExtent:function(bounds,closest){var zoom=null;if(this.baseLayer!=null){zoom=this.baseLayer.getZoomForExtent(bounds,closest);}
+return zoom;},getResolutionForZoom:function(zoom){var resolution=null;if(this.baseLayer){resolution=this.baseLayer.getResolutionForZoom(zoom);}
+return resolution;},getZoomForResolution:function(resolution,closest){var zoom=null;if(this.baseLayer!=null){zoom=this.baseLayer.getZoomForResolution(resolution,closest);}
+return zoom;},zoomTo:function(zoom){if(this.isValidZoomLevel(zoom)){this.setCenter(null,zoom);}},zoomIn:function(){this.zoomTo(this.getZoom()+1);},zoomOut:function(){this.zoomTo(this.getZoom()-1);},zoomToExtent:function(bounds,closest){var center=bounds.getCenterLonLat();if(this.baseLayer.wrapDateLine){var maxExtent=this.getMaxExtent();bounds=bounds.clone();while(bounds.right<bounds.left){bounds.right+=maxExtent.getWidth();}
+center=bounds.getCenterLonLat().wrapDateLine(maxExtent);}
+this.setCenter(center,this.getZoomForExtent(bounds,closest));},zoomToMaxExtent:function(options){var restricted=(options)?options.restricted:true;var maxExtent=this.getMaxExtent({'restricted':restricted});this.zoomToExtent(maxExtent);},zoomToScale:function(scale,closest){var res=OpenLayers.Util.getResolutionFromScale(scale,this.baseLayer.units);var size=this.getSize();var w_deg=size.w*res;var h_deg=size.h*res;var center=this.getCachedCenter();var extent=new OpenLayers.Bounds(center.lon-w_deg/2,center.lat-h_deg/2,center.lon+w_deg/2,center.lat+h_deg/2);this.zoomToExtent(extent,closest);},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;if(this.baseLayer!=null){lonlat=this.baseLayer.getLonLatFromViewPortPx(viewPortPx);}
+return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(this.baseLayer!=null){px=this.baseLayer.getViewPortPxFromLonLat(lonlat);}
+return px;},getLonLatFromPixel:function(px){return this.getLonLatFromViewPortPx(px);},getPixelFromLonLat:function(lonlat){var px=this.getViewPortPxFromLonLat(lonlat);px.x=Math.round(px.x);px.y=Math.round(px.y);return px;},getGeodesicPixelSize:function(px){var lonlat=px?this.getLonLatFromPixel(px):(this.getCachedCenter()||new OpenLayers.LonLat(0,0));var res=this.getResolution();var left=lonlat.add(-res/2,0);var right=lonlat.add(res/2,0);var bottom=lonlat.add(0,-res/2);var top=lonlat.add(0,res/2);var dest=new OpenLayers.Projection("EPSG:4326");var source=this.getProjectionObject()||dest;if(!source.equals(dest)){left.transform(source,dest);right.transform(source,dest);bottom.transform(source,dest);top.transform(source,dest);}
+return new OpenLayers.Size(OpenLayers.Util.distVincenty(left,right),OpenLayers.Util.distVincenty(bottom,top));},getViewPortPxFromLayerPx:function(layerPx){var viewPortPx=null;if(layerPx!=null){var dX=parseInt(this.layerContainerDiv.style.left);var dY=parseInt(this.layerContainerDiv.style.top);viewPortPx=layerPx.add(dX,dY);}
+return viewPortPx;},getLayerPxFromViewPortPx:function(viewPortPx){var layerPx=null;if(viewPortPx!=null){var dX=-parseInt(this.layerContainerDiv.style.left);var dY=-parseInt(this.layerContainerDiv.style.top);layerPx=viewPortPx.add(dX,dY);if(isNaN(layerPx.x)||isNaN(layerPx.y)){layerPx=null;}}
+return layerPx;},getLonLatFromLayerPx:function(px){px=this.getViewPortPxFromLayerPx(px);return this.getLonLatFromViewPortPx(px);},getLayerPxFromLonLat:function(lonlat){var px=this.getPixelFromLonLat(lonlat);return this.getLayerPxFromViewPortPx(px);},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode;},getUnits:function(){return this.proj?this.proj.units:null;},toString:function(){return this.getCode();},equals:function(projection){var p=projection,equals=false;if(p){if(window.Proj4js&&this.proj.defData&&p.proj.defData){equals=this.proj.defData.replace(this.titleRegEx,"")==p.proj.defData.replace(this.titleRegEx,"");}else if(p.getCode){var source=this.getCode(),target=p.getCode();equals=source==target||!!OpenLayers.Projection.transforms[source]&&OpenLayers.Projection.transforms[source][target]===OpenLayers.Projection.nullTransform;}}
+return equals;},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};}
+OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);}
+return point;};OpenLayers.Projection.nullTransform=function(point){return point;};OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend","added","removed"],RESOLUTION_PROPERTIES:['scales','resolutions','maxScale','minScale','maxResolution','minResolution','numZoomLevels','maxZoomLevel'],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],metadata:{},initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}}
+if(this.wrapDateLine){this.displayOutsideMaxExtent=true;}},destroy:function(setNewBaseLayer){if(setNewBaseLayer==null){setNewBaseLayer=true;}
+if(this.map!=null){this.map.removeLayer(this,setNewBaseLayer);}
+this.projection=null;this.map=null;this.name=null;this.div=null;this.options=null;if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);}
+this.events.destroy();}
+this.eventListeners=null;this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer(this.name,this.getOptions());}
+OpenLayers.Util.applyDefaults(obj,this);obj.map=null;return obj;},getOptions:function(){var options={};for(var o in this.options){options[o]=this[o];}
+return options;},setName:function(newName){if(newName!=this.name){this.name=newName;if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"name"});}}},addOptions:function(newOptions,reinitialize){if(this.options==null){this.options={};}
+OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);}
+if(this.projection&&this.projection.getUnits()){this.units=this.projection.getUnits();}
+if(this.map){var resolution=this.map.getResolution();var properties=this.RESOLUTION_PROPERTIES.concat(["projection","units","minExtent","maxExtent"]);for(var o in newOptions){if(newOptions.hasOwnProperty(o)&&OpenLayers.Util.indexOf(properties,o)>=0){this.initResolutions();if(reinitialize&&this.map.baseLayer===this){this.map.setCenter(this.map.getCenter(),this.map.getZoomForResolution(resolution),false,true);this.map.events.triggerEvent("changebaselayer",{layer:this});}
+break;}}}},onMapResize:function(){},redraw:function(){var redrawn=false;if(this.map){this.inRange=this.calculateInRange();var extent=this.getExtent();if(extent&&this.inRange&&this.visibility){var zoomChanged=true;this.moveTo(extent,zoomChanged,false);this.events.triggerEvent("moveend",{"zoomChanged":zoomChanged});redrawn=true;}}
+return redrawn;},moveTo:function(bounds,zoomChanged,dragging){var display=this.visibility;if(!this.isBaseLayer){display=display&&this.inRange;}
+this.display(display);},moveByPx:function(dx,dy){},setMap:function(map){if(this.map==null){this.map=map;this.maxExtent=this.maxExtent||this.map.maxExtent;this.minExtent=this.minExtent||this.map.minExtent;this.projection=this.projection||this.map.projection;if(typeof this.projection=="string"){this.projection=new OpenLayers.Projection(this.projection);}
+this.units=this.projection.getUnits()||this.units||this.map.units;this.initResolutions();if(!this.isBaseLayer){this.inRange=this.calculateInRange();var show=((this.visibility)&&(this.inRange));this.div.style.display=show?"":"none";}
+this.setTileSize();}},afterAdd:function(){},removeMap:function(map){},getImageSize:function(bounds){return(this.imageSize||this.tileSize);},setTileSize:function(size){var tileSize=(size)?size:((this.tileSize)?this.tileSize:this.map.getTileSize());this.tileSize=tileSize;if(this.gutter){this.imageOffset=new OpenLayers.Pixel(-this.gutter,-this.gutter);this.imageSize=new OpenLayers.Size(tileSize.w+(2*this.gutter),tileSize.h+(2*this.gutter));}},getVisibility:function(){return this.visibility;},setVisibility:function(visibility){if(visibility!=this.visibility){this.visibility=visibility;this.display(visibility);this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"});}
+this.events.triggerEvent("visibilitychanged");}},display:function(display){if(display!=(this.div.style.display!="none")){this.div.style.display=(display&&this.calculateInRange())?"block":"none";}},calculateInRange:function(){var inRange=false;if(this.alwaysInRange){inRange=true;}else{if(this.map){var resolution=this.map.getResolution();inRange=((resolution>=this.minResolution)&&(resolution<=this.maxResolution));}}
+return inRange;},setIsBaseLayer:function(isBaseLayer){if(isBaseLayer!=this.isBaseLayer){this.isBaseLayer=isBaseLayer;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this});}}},initResolutions:function(){var i,len,p;var props={},alwaysInRange=true;for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){p=this.RESOLUTION_PROPERTIES[i];props[p]=this.options[p];if(alwaysInRange&&this.options[p]){alwaysInRange=false;}}
+if(this.alwaysInRange==null){this.alwaysInRange=alwaysInRange;}
+if(props.resolutions==null){props.resolutions=this.resolutionsFromScales(props.scales);}
+if(props.resolutions==null){props.resolutions=this.calculateResolutions(props);}
+if(props.resolutions==null){for(i=0,len=this.RESOLUTION_PROPERTIES.length;i<len;i++){p=this.RESOLUTION_PROPERTIES[i];props[p]=this.options[p]!=null?this.options[p]:this.map[p];}
+if(props.resolutions==null){props.resolutions=this.resolutionsFromScales(props.scales);}
+if(props.resolutions==null){props.resolutions=this.calculateResolutions(props);}}
+var maxResolution;if(this.options.maxResolution&&this.options.maxResolution!=="auto"){maxResolution=this.options.maxResolution;}
+if(this.options.minScale){maxResolution=OpenLayers.Util.getResolutionFromScale(this.options.minScale,this.units);}
+var minResolution;if(this.options.minResolution&&this.options.minResolution!=="auto"){minResolution=this.options.minResolution;}
+if(this.options.maxScale){minResolution=OpenLayers.Util.getResolutionFromScale(this.options.maxScale,this.units);}
+if(props.resolutions){props.resolutions.sort(function(a,b){return(b-a);});if(!maxResolution){maxResolution=props.resolutions[0];}
+if(!minResolution){var lastIdx=props.resolutions.length-1;minResolution=props.resolutions[lastIdx];}}
+this.resolutions=props.resolutions;if(this.resolutions){len=this.resolutions.length;this.scales=new Array(len);for(i=0;i<len;i++){this.scales[i]=OpenLayers.Util.getScaleFromResolution(this.resolutions[i],this.units);}
+this.numZoomLevels=len;}
+this.minResolution=minResolution;if(minResolution){this.maxScale=OpenLayers.Util.getScaleFromResolution(minResolution,this.units);}
+this.maxResolution=maxResolution;if(maxResolution){this.minScale=OpenLayers.Util.getScaleFromResolution(maxResolution,this.units);}},resolutionsFromScales:function(scales){if(scales==null){return;}
+var resolutions,i,len;len=scales.length;resolutions=new Array(len);for(i=0;i<len;i++){resolutions[i]=OpenLayers.Util.getResolutionFromScale(scales[i],this.units);}
+return resolutions;},calculateResolutions:function(props){var viewSize,wRes,hRes;var maxResolution=props.maxResolution;if(props.minScale!=null){maxResolution=OpenLayers.Util.getResolutionFromScale(props.minScale,this.units);}else if(maxResolution=="auto"&&this.maxExtent!=null){viewSize=this.map.getSize();wRes=this.maxExtent.getWidth()/viewSize.w;hRes=this.maxExtent.getHeight()/viewSize.h;maxResolution=Math.max(wRes,hRes);}
+var minResolution=props.minResolution;if(props.maxScale!=null){minResolution=OpenLayers.Util.getResolutionFromScale(props.maxScale,this.units);}else if(props.minResolution=="auto"&&this.minExtent!=null){viewSize=this.map.getSize();wRes=this.minExtent.getWidth()/viewSize.w;hRes=this.minExtent.getHeight()/viewSize.h;minResolution=Math.max(wRes,hRes);}
+var maxZoomLevel=props.maxZoomLevel;var numZoomLevels=props.numZoomLevels;if(typeof minResolution==="number"&&typeof maxResolution==="number"&&numZoomLevels===undefined){var ratio=maxResolution/minResolution;numZoomLevels=Math.floor(Math.log(ratio)/Math.log(2))+1;}else if(numZoomLevels===undefined&&maxZoomLevel!=null){numZoomLevels=maxZoomLevel+1;}
+if(typeof numZoomLevels!=="number"||numZoomLevels<=0||(typeof maxResolution!=="number"&&typeof minResolution!=="number")){return;}
+var resolutions=new Array(numZoomLevels);var base=2;if(typeof minResolution=="number"&&typeof maxResolution=="number"){base=Math.pow((maxResolution/minResolution),(1/(numZoomLevels-1)));}
+var i;if(typeof maxResolution==="number"){for(i=0;i<numZoomLevels;i++){resolutions[i]=maxResolution/Math.pow(base,i);}}else{for(i=0;i<numZoomLevels;i++){resolutions[numZoomLevels-1-i]=minResolution*Math.pow(base,i);}}
+return resolutions;},getResolution:function(){var zoom=this.map.getZoom();return this.getResolutionForZoom(zoom);},getExtent:function(){return this.map.calculateBounds();},getZoomForExtent:function(extent,closest){var viewSize=this.map.getSize();var idealResolution=Math.max(extent.getWidth()/viewSize.w,extent.getHeight()/viewSize.h);return this.getZoomForResolution(idealResolution,closest);},getDataExtent:function(){},getResolutionForZoom:function(zoom){zoom=Math.max(0,Math.min(zoom,this.resolutions.length-1));var resolution;if(this.map.fractionalZoom){var low=Math.floor(zoom);var high=Math.ceil(zoom);resolution=this.resolutions[low]-
+((zoom-low)*(this.resolutions[low]-this.resolutions[high]));}else{resolution=this.resolutions[Math.round(zoom)];}
+return resolution;},getZoomForResolution:function(resolution,closest){var zoom,i,len;if(this.map.fractionalZoom){var lowZoom=0;var highZoom=this.resolutions.length-1;var highRes=this.resolutions[lowZoom];var lowRes=this.resolutions[highZoom];var res;for(i=0,len=this.resolutions.length;i<len;++i){res=this.resolutions[i];if(res>=resolution){highRes=res;lowZoom=i;}
+if(res<=resolution){lowRes=res;highZoom=i;break;}}
+var dRes=highRes-lowRes;if(dRes>0){zoom=lowZoom+((highRes-resolution)/dRes);}else{zoom=lowZoom;}}else{var diff;var minDiff=Number.POSITIVE_INFINITY;for(i=0,len=this.resolutions.length;i<len;i++){if(closest){diff=Math.abs(this.resolutions[i]-resolution);if(diff>minDiff){break;}
+minDiff=diff;}else{if(this.resolutions[i]<resolution){break;}}}
+zoom=Math.max(0,i-1);}
+return zoom;},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;var map=this.map;if(viewPortPx!=null&&map.minPx){var res=map.getResolution();var maxExtent=map.getMaxExtent({restricted:true});var lon=(viewPortPx.x-map.minPx.x)*res+maxExtent.left;var lat=(map.minPx.y-viewPortPx.y)*res+maxExtent.top;lonlat=new OpenLayers.LonLat(lon,lat);if(this.wrapDateLine){lonlat=lonlat.wrapDateLine(this.maxExtent);}}
+return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(lonlat!=null){var resolution=this.map.getResolution();var extent=this.map.getExtent();px=new OpenLayers.Pixel((1/resolution*(lonlat.lon-extent.left)),(1/resolution*(extent.top-lonlat.lat)));}
+return px;},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.div.childNodes.length;i<len;++i){var element=this.div.childNodes[i].firstChild;OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);}
+if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"});}}},getZIndex:function(){return this.div.style.zIndex;},setZIndex:function(zIndex){this.div.style.zIndex=zIndex;},adjustBounds:function(bounds){if(this.gutter){var mapGutter=this.gutter*this.map.getResolution();bounds=new OpenLayers.Bounds(bounds.left-mapGutter,bounds.bottom-mapGutter,bounds.right+mapGutter,bounds.top+mapGutter);}
+if(this.wrapDateLine){var wrappingOptions={'rightTolerance':this.getResolution(),'leftTolerance':this.getResolution()};bounds=bounds.wrapDateLine(this.maxExtent,wrappingOptions);}
+return bounds;},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var extent=null;if(this.sphericalMercator){extent=this.map.calculateBounds();}else{extent=OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this);}
+return extent;},getLonLatFromViewPortPx:function(viewPortPx){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments);},getViewPortPxFromLonLat:function(lonlat){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments);},initMercatorParameters:function(){this.RESOLUTIONS=[];var maxResolution=156543.03390625;for(var zoom=0;zoom<=this.MAX_ZOOM_LEVEL;++zoom){this.RESOLUTIONS[zoom]=maxResolution/Math.pow(2,zoom);}
+this.units="m";this.projection=this.projection||"EPSG:900913";},forwardMercator:function(lon,lat){var x=lon*20037508.34/180;var y=Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);y=y*20037508.34/180;return new OpenLayers.LonLat(x,y);},inverseMercator:function(x,y){var lon=(x/20037508.34)*180;var lat=(y/20037508.34)*180;lat=180/Math.PI*(2*Math.atan(Math.exp(lat*Math.PI/180))-Math.PI/2);return new OpenLayers.LonLat(lon,lat);},projectForward:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.forwardMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;},projectInverse:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;}};(function(){var codes=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"];var add=OpenLayers.Projection.addTransform;var merc=OpenLayers.Layer.SphericalMercator;var same=OpenLayers.Projection.nullTransform;var i,len,code,other,j;for(i=0,len=codes.length;i<len;++i){code=codes[i];add("EPSG:4326",code,merc.projectForward);add(code,"EPSG:4326",merc.projectInverse);for(j=i+1;j<len;++j){other=codes[j];add(code,other,same);add(other,code,same);}}})();OpenLayers.Layer.EventPane=OpenLayers.Class(OpenLayers.Layer,{smoothDragPan:true,isBaseLayer:true,isFixed:true,pane:null,mapObject:null,initialize:function(name,options){OpenLayers.Layer.prototype.initialize.apply(this,arguments);if(this.pane==null){this.pane=OpenLayers.Util.createDiv(this.div.id+"_EventPane");}},destroy:function(){this.mapObject=null;this.pane=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Layer.prototype.setMap.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1;this.pane.style.display=this.div.style.display;this.pane.style.width="100%";this.pane.style.height="100%";if(OpenLayers.BROWSER_NAME=="msie"){this.pane.style.background="url("+OpenLayers.Util.getImagesLocation()+"blank.gif)";}
+if(this.isFixed){this.map.eventsDiv.appendChild(this.pane);}else{this.map.layerContainerDiv.appendChild(this.pane);}
+this.loadMapObject();if(this.mapObject==null){this.loadWarningMessage();}},removeMap:function(map){if(this.pane&&this.pane.parentNode){this.pane.parentNode.removeChild(this.pane);}
+OpenLayers.Layer.prototype.removeMap.apply(this,arguments);},loadWarningMessage:function(){this.div.style.backgroundColor="darkblue";var viewSize=this.map.getSize();var msgW=Math.min(viewSize.w,300);var msgH=Math.min(viewSize.h,200);var size=new OpenLayers.Size(msgW,msgH);var centerPx=new OpenLayers.Pixel(viewSize.w/2,viewSize.h/2);var topLeft=centerPx.add(-size.w/2,-size.h/2);var div=OpenLayers.Util.createDiv(this.name+"_warning",topLeft,size,null,null,null,"auto");div.style.padding="7px";div.style.backgroundColor="yellow";div.innerHTML=this.getWarningHTML();this.div.appendChild(div);},getWarningHTML:function(){return"";},display:function(display){OpenLayers.Layer.prototype.display.apply(this,arguments);this.pane.style.display=this.div.style.display;},setZIndex:function(zIndex){OpenLayers.Layer.prototype.setZIndex.apply(this,arguments);this.pane.style.zIndex=parseInt(this.div.style.zIndex)+1;},moveByPx:function(dx,dy){OpenLayers.Layer.prototype.moveByPx.apply(this,arguments);if(this.dragPanMapObject){this.dragPanMapObject(dx,-dy);}else{this.moveTo(this.map.getCachedCenter());}},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);if(this.mapObject!=null){var newCenter=this.map.getCenter();var newZoom=this.map.getZoom();if(newCenter!=null){var moOldCenter=this.getMapObjectCenter();var oldCenter=this.getOLLonLatFromMapObjectLonLat(moOldCenter);var moOldZoom=this.getMapObjectZoom();var oldZoom=this.getOLZoomFromMapObjectZoom(moOldZoom);if(!(newCenter.equals(oldCenter))||!(newZoom==oldZoom)){if(!zoomChanged&&oldCenter&&this.dragPanMapObject&&this.smoothDragPan){var oldPx=this.map.getViewPortPxFromLonLat(oldCenter);var newPx=this.map.getViewPortPxFromLonLat(newCenter);this.dragPanMapObject(newPx.x-oldPx.x,oldPx.y-newPx.y);}else{var center=this.getMapObjectLonLatFromOLLonLat(newCenter);var zoom=this.getMapObjectZoomFromOLZoom(newZoom);this.setMapObjectCenter(center,zoom,dragging);}}}}},getLonLatFromViewPortPx:function(viewPortPx){var lonlat=null;if((this.mapObject!=null)&&(this.getMapObjectCenter()!=null)){var moPixel=this.getMapObjectPixelFromOLPixel(viewPortPx);var moLonLat=this.getMapObjectLonLatFromMapObjectPixel(moPixel);lonlat=this.getOLLonLatFromMapObjectLonLat(moLonLat);}
+return lonlat;},getViewPortPxFromLonLat:function(lonlat){var viewPortPx=null;if((this.mapObject!=null)&&(this.getMapObjectCenter()!=null)){var moLonLat=this.getMapObjectLonLatFromOLLonLat(lonlat);var moPixel=this.getMapObjectPixelFromMapObjectLonLat(moLonLat);viewPortPx=this.getOLPixelFromMapObjectPixel(moPixel);}
+return viewPortPx;},getOLLonLatFromMapObjectLonLat:function(moLonLat){var olLonLat=null;if(moLonLat!=null){var lon=this.getLongitudeFromMapObjectLonLat(moLonLat);var lat=this.getLatitudeFromMapObjectLonLat(moLonLat);olLonLat=new OpenLayers.LonLat(lon,lat);}
+return olLonLat;},getMapObjectLonLatFromOLLonLat:function(olLonLat){var moLatLng=null;if(olLonLat!=null){moLatLng=this.getMapObjectLonLatFromLonLat(olLonLat.lon,olLonLat.lat);}
+return moLatLng;},getOLPixelFromMapObjectPixel:function(moPixel){var olPixel=null;if(moPixel!=null){var x=this.getXFromMapObjectPixel(moPixel);var y=this.getYFromMapObjectPixel(moPixel);olPixel=new OpenLayers.Pixel(x,y);}
+return olPixel;},getMapObjectPixelFromOLPixel:function(olPixel){var moPixel=null;if(olPixel!=null){moPixel=this.getMapObjectPixelFromXY(olPixel.x,olPixel.y);}
+return moPixel;},CLASS_NAME:"OpenLayers.Layer.EventPane"});OpenLayers.Layer.FixedZoomLevels=OpenLayers.Class({initialize:function(){},initResolutions:function(){var props=new Array('minZoomLevel','maxZoomLevel','numZoomLevels');for(var i=0,len=props.length;i<len;i++){var property=props[i];this[property]=(this.options[property]!=null)?this.options[property]:this.map[property];}
+if((this.minZoomLevel==null)||(this.minZoomLevel<this.MIN_ZOOM_LEVEL)){this.minZoomLevel=this.MIN_ZOOM_LEVEL;}
+var desiredZoomLevels;var limitZoomLevels=this.MAX_ZOOM_LEVEL-this.minZoomLevel+1;if(((this.options.numZoomLevels==null)&&(this.options.maxZoomLevel!=null))||((this.numZoomLevels==null)&&(this.maxZoomLevel!=null))){desiredZoomLevels=this.maxZoomLevel-this.minZoomLevel+1;}else{desiredZoomLevels=this.numZoomLevels;}
+if(desiredZoomLevels!=null){this.numZoomLevels=Math.min(desiredZoomLevels,limitZoomLevels);}else{this.numZoomLevels=limitZoomLevels;}
+this.maxZoomLevel=this.minZoomLevel+this.numZoomLevels-1;if(this.RESOLUTIONS!=null){var resolutionsIndex=0;this.resolutions=[];for(var i=this.minZoomLevel;i<=this.maxZoomLevel;i++){this.resolutions[resolutionsIndex++]=this.RESOLUTIONS[i];}
+this.maxResolution=this.resolutions[0];this.minResolution=this.resolutions[this.resolutions.length-1];}},getResolution:function(){if(this.resolutions!=null){return OpenLayers.Layer.prototype.getResolution.apply(this,arguments);}else{var resolution=null;var viewSize=this.map.getSize();var extent=this.getExtent();if((viewSize!=null)&&(extent!=null)){resolution=Math.max(extent.getWidth()/viewSize.w,extent.getHeight()/viewSize.h);}
+return resolution;}},getExtent:function(){var extent=null;var size=this.map.getSize();var tlPx=new OpenLayers.Pixel(0,0);var tlLL=this.getLonLatFromViewPortPx(tlPx);var brPx=new OpenLayers.Pixel(size.w,size.h);var brLL=this.getLonLatFromViewPortPx(brPx);if((tlLL!=null)&&(brLL!=null)){extent=new OpenLayers.Bounds(tlLL.lon,brLL.lat,brLL.lon,tlLL.lat);}
+return extent;},getZoomForResolution:function(resolution){if(this.resolutions!=null){return OpenLayers.Layer.prototype.getZoomForResolution.apply(this,arguments);}else{var extent=OpenLayers.Layer.prototype.getExtent.apply(this,[]);return this.getZoomForExtent(extent);}},getOLZoomFromMapObjectZoom:function(moZoom){var zoom=null;if(moZoom!=null){zoom=moZoom-this.minZoomLevel;if(this.map.baseLayer!==this){zoom=this.map.baseLayer.getZoomForResolution(this.getResolutionForZoom(zoom))}}
+return zoom;},getMapObjectZoomFromOLZoom:function(olZoom){var zoom=null;if(olZoom!=null){zoom=olZoom+this.minZoomLevel;if(this.map.baseLayer!==this){zoom=this.getZoomForResolution(this.map.baseLayer.getResolutionForZoom(zoom));}}
+return zoom;},CLASS_NAME:"OpenLayers.Layer.FixedZoomLevels"});OpenLayers.Layer.VirtualEarth=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:19,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515],type:null,wrapDateLine:true,sphericalMercator:false,animationEnabled:true,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){var veDiv=OpenLayers.Util.createDiv(this.name);var sz=this.map.getSize();veDiv.style.width=sz.w+"px";veDiv.style.height=sz.h+"px";this.div.appendChild(veDiv);try{this.mapObject=new VEMap(this.name);}catch(e){}
+if(this.mapObject!=null){try{this.mapObject.LoadMap(null,null,this.type,true);this.mapObject.AttachEvent("onmousedown",OpenLayers.Function.True);}catch(e){}
+this.mapObject.HideDashboard();if(typeof this.mapObject.SetAnimationEnabled=="function"){this.mapObject.SetAnimationEnabled(this.animationEnabled);}}
+if(!this.mapObject||!this.mapObject.vemapcontrol||!this.mapObject.vemapcontrol.PanMap||(typeof this.mapObject.vemapcontrol.PanMap!="function")){this.dragPanMapObject=null;}},onMapResize:function(){this.mapObject.Resize(this.map.size.w,this.map.size.h);},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'VE','layerLib':'VirtualEarth'});},setMapObjectCenter:function(center,zoom){this.mapObject.SetCenterAndZoom(center,zoom);},getMapObjectCenter:function(){return this.mapObject.GetCenter();},dragPanMapObject:function(dX,dY){this.mapObject.vemapcontrol.PanMap(dX,-dY);},getMapObjectZoom:function(){return this.mapObject.GetZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return(typeof VEPixel!='undefined')?this.mapObject.PixelToLatLong(moPixel):this.mapObject.PixelToLatLong(moPixel.x,moPixel.y);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.LatLongToPixel(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lon:moLonLat.Longitude;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Longitude,moLonLat.Latitude).lat:moLonLat.Latitude;},getMapObjectLonLatFromLonLat:function(lon,lat){var veLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);veLatLong=new VELatLong(lonlat.lat,lonlat.lon);}else{veLatLong=new VELatLong(lat,lon);}
+return veLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return(typeof VEPixel!='undefined')?new VEPixel(x,y):new Msn.VE.Pixel(x,y);},CLASS_NAME:"OpenLayers.Layer.VirtualEarth"});OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:false,displayClass:"",title:"",autoActivate:false,active:null,handler:null,eventListeners:null,events:null,EVENT_TYPES:["activate","deactivate"],initialize:function(options){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,options);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}
+if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}},destroy:function(){if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);}
+this.events.destroy();this.events=null;}
+this.eventListeners=null;if(this.handler){this.handler.destroy();this.handler=null;}
+if(this.handlers){for(var key in this.handlers){if(this.handlers.hasOwnProperty(key)&&typeof this.handlers[key].destroy=="function"){this.handlers[key].destroy();}}
+this.handlers=null;}
+if(this.map){this.map.removeControl(this);this.map=null;}
+this.div=null;},setMap:function(map){this.map=map;if(this.handler){this.handler.setMap(map);}},draw:function(px){if(this.div==null){this.div=OpenLayers.Util.createDiv(this.id);this.div.className=this.displayClass;if(!this.allowSelection){this.div.className+=" olControlNoSelect";this.div.setAttribute("unselectable","on",0);this.div.onselectstart=OpenLayers.Function.False;}
+if(this.title!=""){this.div.title=this.title;}}
+if(px!=null){this.position=px.clone();}
+this.moveTo(this.position);return this.div;},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},activate:function(){if(this.active){return false;}
+if(this.handler){this.handler.activate();}
+this.active=true;if(this.map){OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");}
+this.events.triggerEvent("activate");return true;},deactivate:function(){if(this.active){if(this.handler){this.handler.deactivate();}
+this.active=false;if(this.map){OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");}
+this.events.triggerEvent("deactivate");return true;}
+return false;},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Control.OverviewMap=OpenLayers.Class(OpenLayers.Control,{element:null,ovmap:null,size:new OpenLayers.Size(180,90),layers:null,minRectSize:15,minRectDisplayClass:"RectReplacement",minRatio:8,maxRatio:32,mapOptions:null,autoPan:false,handlers:null,resolutionFactor:1,maximized:false,initialize:function(options){this.layers=[];this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,[options]);},destroy:function(){if(!this.mapDiv){return;}
+if(this.handlers.click){this.handlers.click.destroy();}
+if(this.handlers.drag){this.handlers.drag.destroy();}
+this.ovmap&&this.ovmap.eventsDiv.removeChild(this.extentRectangle);this.extentRectangle=null;if(this.rectEvents){this.rectEvents.destroy();this.rectEvents=null;}
+if(this.ovmap){this.ovmap.destroy();this.ovmap=null;}
+this.element.removeChild(this.mapDiv);this.mapDiv=null;this.div.removeChild(this.element);this.element=null;if(this.maximizeDiv){OpenLayers.Event.stopObservingElement(this.maximizeDiv);this.div.removeChild(this.maximizeDiv);this.maximizeDiv=null;}
+if(this.minimizeDiv){OpenLayers.Event.stopObservingElement(this.minimizeDiv);this.div.removeChild(this.minimizeDiv);this.minimizeDiv=null;}
+this.map.events.un({"moveend":this.update,"changebaselayer":this.baseLayerDraw,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!(this.layers.length>0)){if(this.map.baseLayer){var layer=this.map.baseLayer.clone();this.layers=[layer];}else{this.map.events.register("changebaselayer",this,this.baseLayerDraw);return this.div;}}
+this.element=document.createElement('div');this.element.className=this.displayClass+'Element';this.element.style.display='none';this.mapDiv=document.createElement('div');this.mapDiv.style.width=this.size.w+'px';this.mapDiv.style.height=this.size.h+'px';this.mapDiv.style.position='relative';this.mapDiv.style.overflow='hidden';this.mapDiv.id=OpenLayers.Util.createUniqueID('overviewMap');this.extentRectangle=document.createElement('div');this.extentRectangle.style.position='absolute';this.extentRectangle.style.zIndex=1000;this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.element.appendChild(this.mapDiv);this.div.appendChild(this.element);if(!this.outsideViewport){this.div.className+=" "+this.displayClass+'Container';var imgLocation=OpenLayers.Util.getImagesLocation();var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv(this.displayClass+'MaximizeButton',null,new OpenLayers.Size(18,18),img,'absolute');this.maximizeDiv.style.display='none';this.maximizeDiv.className=this.displayClass+'MaximizeButton';OpenLayers.Event.observe(this.maximizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv('OpenLayers_Control_minimizeDiv',null,new OpenLayers.Size(18,18),img,'absolute');this.minimizeDiv.style.display='none';this.minimizeDiv.className=this.displayClass+'MinimizeButton';OpenLayers.Event.observe(this.minimizeDiv,'click',OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);var eventsToStop=['dblclick','mousedown'];for(var i=0,len=eventsToStop.length;i<len;i++){OpenLayers.Event.observe(this.maximizeDiv,eventsToStop[i],OpenLayers.Event.stop);OpenLayers.Event.observe(this.minimizeDiv,eventsToStop[i],OpenLayers.Event.stop);}
+this.minimizeControl();}else{this.element.style.display='';}
+if(this.map.getExtent()){this.update();}
+this.map.events.register('moveend',this,this.update);if(this.maximized){this.maximizeControl();}
+return this.div;},baseLayerDraw:function(){this.draw();this.map.events.unregister("changebaselayer",this,this.baseLayerDraw);},rectDrag:function(px){var deltaX=this.handlers.drag.last.x-px.x;var deltaY=this.handlers.drag.last.y-px.y;if(deltaX!=0||deltaY!=0){var rectTop=this.rectPxBounds.top;var rectLeft=this.rectPxBounds.left;var rectHeight=Math.abs(this.rectPxBounds.getHeight());var rectWidth=this.rectPxBounds.getWidth();var newTop=Math.max(0,(rectTop-deltaY));newTop=Math.min(newTop,this.ovmap.size.h-this.hComp-rectHeight);var newLeft=Math.max(0,(rectLeft-deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-this.wComp-rectWidth);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+rectHeight,newLeft+rectWidth,newTop));}},mapDivClick:function(evt){var pxCenter=this.rectPxBounds.getCenterPixel();var deltaX=evt.xy.x-pxCenter.x;var deltaY=evt.xy.y-pxCenter.y;var top=this.rectPxBounds.top;var left=this.rectPxBounds.left;var height=Math.abs(this.rectPxBounds.getHeight());var width=this.rectPxBounds.getWidth();var newTop=Math.max(0,(top+deltaY));newTop=Math.min(newTop,this.ovmap.size.h-height);var newLeft=Math.max(0,(left+deltaX));newLeft=Math.min(newLeft,this.ovmap.size.w-width);this.setRectPxBounds(new OpenLayers.Bounds(newLeft,newTop+height,newLeft+width,newTop));this.updateMapToRect();},maximizeControl:function(e){this.element.style.display='';this.showToggle(false);if(e!=null){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.element.style.display='none';this.showToggle(true);if(e!=null){OpenLayers.Event.stop(e);}},showToggle:function(minimize){this.maximizeDiv.style.display=minimize?'':'none';this.minimizeDiv.style.display=minimize?'none':'';},update:function(){if(this.ovmap==null){this.createMap();}
+if(this.autoPan||!this.isSuitableOverview()){this.updateOverview();}
+this.updateRectToMap();},isSuitableOverview:function(){var mapExtent=this.map.getExtent();var maxExtent=this.map.maxExtent;var testExtent=new OpenLayers.Bounds(Math.max(mapExtent.left,maxExtent.left),Math.max(mapExtent.bottom,maxExtent.bottom),Math.min(mapExtent.right,maxExtent.right),Math.min(mapExtent.top,maxExtent.top));if(this.ovmap.getProjection()!=this.map.getProjection()){testExtent=testExtent.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}
+var resRatio=this.ovmap.getResolution()/this.map.getResolution();return((resRatio>this.minRatio)&&(resRatio<=this.maxRatio)&&(this.ovmap.getExtent().containsBounds(testExtent)));},updateOverview:function(){var mapRes=this.map.getResolution();var targetRes=this.ovmap.getResolution();var resRatio=targetRes/mapRes;if(resRatio>this.maxRatio){targetRes=this.minRatio*mapRes;}else if(resRatio<=this.minRatio){targetRes=this.maxRatio*mapRes;}
+var center;if(this.ovmap.getProjection()!=this.map.getProjection()){center=this.map.center.clone();center.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}else{center=this.map.center;}
+this.ovmap.setCenter(center,this.ovmap.getZoomForResolution(targetRes*this.resolutionFactor));this.updateRectToMap();},createMap:function(){var options=OpenLayers.Util.extend({controls:[],maxResolution:'auto',fallThrough:false},this.mapOptions);this.ovmap=new OpenLayers.Map(this.mapDiv,options);this.ovmap.eventsDiv.appendChild(this.extentRectangle);OpenLayers.Event.stopObserving(window,'unload',this.ovmap.unloadDestroy);this.ovmap.addLayers(this.layers);this.ovmap.zoomToMaxExtent();this.wComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-left-width'))+
+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-right-width'));this.wComp=(this.wComp)?this.wComp:2;this.hComp=parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-top-width'))+
+parseInt(OpenLayers.Element.getStyle(this.extentRectangle,'border-bottom-width'));this.hComp=(this.hComp)?this.hComp:2;this.handlers.drag=new OpenLayers.Handler.Drag(this,{move:this.rectDrag,done:this.updateMapToRect},{map:this.ovmap});this.handlers.click=new OpenLayers.Handler.Click(this,{"click":this.mapDivClick},{"single":true,"double":false,"stopSingle":true,"stopDouble":true,"pixelTolerance":1,map:this.ovmap});this.handlers.click.activate();this.rectEvents=new OpenLayers.Events(this,this.extentRectangle,null,true);this.rectEvents.register("mouseover",this,function(e){if(!this.handlers.drag.active&&!this.map.dragging){this.handlers.drag.activate();}});this.rectEvents.register("mouseout",this,function(e){if(!this.handlers.drag.dragging){this.handlers.drag.deactivate();}});if(this.ovmap.getProjection()!=this.map.getProjection()){var sourceUnits=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;var targetUnits=this.ovmap.getProjectionObject().getUnits()||this.ovmap.units||this.ovmap.baseLayer.units;this.resolutionFactor=sourceUnits&&targetUnits?OpenLayers.INCHES_PER_UNIT[sourceUnits]/OpenLayers.INCHES_PER_UNIT[targetUnits]:1;}},updateRectToMap:function(){var bounds;if(this.ovmap.getProjection()!=this.map.getProjection()){bounds=this.map.getExtent().transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject());}else{bounds=this.map.getExtent();}
+var pxBounds=this.getRectBoundsFromMapBounds(bounds);if(pxBounds){this.setRectPxBounds(pxBounds);}},updateMapToRect:function(){var lonLatBounds=this.getMapBoundsFromRectBounds(this.rectPxBounds);if(this.ovmap.getProjection()!=this.map.getProjection()){lonLatBounds=lonLatBounds.transform(this.ovmap.getProjectionObject(),this.map.getProjectionObject());}
+this.map.panTo(lonLatBounds.getCenterLonLat());},setRectPxBounds:function(pxBounds){var top=Math.max(pxBounds.top,0);var left=Math.max(pxBounds.left,0);var bottom=Math.min(pxBounds.top+Math.abs(pxBounds.getHeight()),this.ovmap.size.h-this.hComp);var right=Math.min(pxBounds.left+pxBounds.getWidth(),this.ovmap.size.w-this.wComp);var width=Math.max(right-left,0);var height=Math.max(bottom-top,0);if(width<this.minRectSize||height<this.minRectSize){this.extentRectangle.className=this.displayClass+
+this.minRectDisplayClass;var rLeft=left+(width/2)-(this.minRectSize/2);var rTop=top+(height/2)-(this.minRectSize/2);this.extentRectangle.style.top=Math.round(rTop)+'px';this.extentRectangle.style.left=Math.round(rLeft)+'px';this.extentRectangle.style.height=this.minRectSize+'px';this.extentRectangle.style.width=this.minRectSize+'px';}else{this.extentRectangle.className=this.displayClass+'ExtentRectangle';this.extentRectangle.style.top=Math.round(top)+'px';this.extentRectangle.style.left=Math.round(left)+'px';this.extentRectangle.style.height=Math.round(height)+'px';this.extentRectangle.style.width=Math.round(width)+'px';}
+this.rectPxBounds=new OpenLayers.Bounds(Math.round(left),Math.round(bottom),Math.round(right),Math.round(top));},getRectBoundsFromMapBounds:function(lonLatBounds){var leftBottomLonLat=new OpenLayers.LonLat(lonLatBounds.left,lonLatBounds.bottom);var rightTopLonLat=new OpenLayers.LonLat(lonLatBounds.right,lonLatBounds.top);var leftBottomPx=this.getOverviewPxFromLonLat(leftBottomLonLat);var rightTopPx=this.getOverviewPxFromLonLat(rightTopLonLat);var bounds=null;if(leftBottomPx&&rightTopPx){bounds=new OpenLayers.Bounds(leftBottomPx.x,leftBottomPx.y,rightTopPx.x,rightTopPx.y);}
+return bounds;},getMapBoundsFromRectBounds:function(pxBounds){var leftBottomPx=new OpenLayers.Pixel(pxBounds.left,pxBounds.bottom);var rightTopPx=new OpenLayers.Pixel(pxBounds.right,pxBounds.top);var leftBottomLonLat=this.getLonLatFromOverviewPx(leftBottomPx);var rightTopLonLat=this.getLonLatFromOverviewPx(rightTopPx);return new OpenLayers.Bounds(leftBottomLonLat.lon,leftBottomLonLat.lat,rightTopLonLat.lon,rightTopLonLat.lat);},getLonLatFromOverviewPx:function(overviewMapPx){var size=this.ovmap.size;var res=this.ovmap.getResolution();var center=this.ovmap.getExtent().getCenterLonLat();var delta_x=overviewMapPx.x-(size.w/2);var delta_y=overviewMapPx.y-(size.h/2);return new OpenLayers.LonLat(center.lon+delta_x*res,center.lat-delta_y*res);},getOverviewPxFromLonLat:function(lonlat){var res=this.ovmap.getResolution();var extent=this.ovmap.getExtent();var px=null;if(extent){px=new OpenLayers.Pixel(Math.round(1/res*(lonlat.lon-extent.left)),Math.round(1/res*(extent.top-lonlat.lat)));}
+return px;},CLASS_NAME:'OpenLayers.Control.OverviewMap'});OpenLayers.Layer.Google=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:21,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031,0.00000536441802978515,0.00000268220901489257,0.0000013411045074462891,0.00000067055225372314453],type:null,wrapDateLine:true,sphericalMercator:false,version:null,initialize:function(name,options){options=options||{};if(!options.version){options.version=typeof GMap2==="function"?"2":"3";}
+var mixin=OpenLayers.Layer.Google["v"+
+options.version.replace(/\./g,"_")];if(mixin){OpenLayers.Util.applyDefaults(options,mixin);}else{throw"Unsupported Google Maps API version: "+options.version;}
+OpenLayers.Util.applyDefaults(options,mixin.DEFAULTS);if(options.maxExtent){options.maxExtent=options.maxExtent.clone();}
+OpenLayers.Layer.EventPane.prototype.initialize.apply(this,[name,options]);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,[name,options]);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},clone:function(){return new OpenLayers.Layer.Google(this.name,this.getOptions());},setVisibility:function(visible){var opacity=this.opacity==null?1:this.opacity;OpenLayers.Layer.EventPane.prototype.setVisibility.apply(this,arguments);this.setOpacity(opacity);},display:function(visible){if(!this._dragging){this.setGMapVisibility(visible);}
+OpenLayers.Layer.EventPane.prototype.display.apply(this,arguments);},moveTo:function(bounds,zoomChanged,dragging){this._dragging=dragging;OpenLayers.Layer.EventPane.prototype.moveTo.apply(this,arguments);delete this._dragging;},setOpacity:function(opacity){if(opacity!==this.opacity){if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"});}
+this.opacity=opacity;}
+if(this.getVisibility()){var container=this.getMapContainer();OpenLayers.Util.modifyDOMElement(container,null,null,null,null,null,null,opacity);}},destroy:function(){if(this.map){this.setGMapVisibility(false);var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache&&cache.count<=1){this.removeGMapElements();}}
+OpenLayers.Layer.EventPane.prototype.destroy.apply(this,arguments);},removeGMapElements:function(){var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){var container=this.mapObject&&this.getMapContainer();if(container&&container.parentNode){container.parentNode.removeChild(container);}
+var termsOfUse=cache.termsOfUse;if(termsOfUse&&termsOfUse.parentNode){termsOfUse.parentNode.removeChild(termsOfUse);}
+var poweredBy=cache.poweredBy;if(poweredBy&&poweredBy.parentNode){poweredBy.parentNode.removeChild(poweredBy);}}},removeMap:function(map){if(this.visibility&&this.mapObject){this.setGMapVisibility(false);}
+var cache=OpenLayers.Layer.Google.cache[map.id];if(cache){if(cache.count<=1){this.removeGMapElements();delete OpenLayers.Layer.Google.cache[map.id];}else{--cache.count;}}
+delete this.termsOfUse;delete this.poweredBy;delete this.mapObject;delete this.dragObject;OpenLayers.Layer.EventPane.prototype.removeMap.apply(this,arguments);},getOLBoundsFromMapObjectBounds:function(moBounds){var olBounds=null;if(moBounds!=null){var sw=moBounds.getSouthWest();var ne=moBounds.getNorthEast();if(this.sphericalMercator){sw=this.forwardMercator(sw.lng(),sw.lat());ne=this.forwardMercator(ne.lng(),ne.lat());}else{sw=new OpenLayers.LonLat(sw.lng(),sw.lat());ne=new OpenLayers.LonLat(ne.lng(),ne.lat());}
+olBounds=new OpenLayers.Bounds(sw.lon,sw.lat,ne.lon,ne.lat);}
+return olBounds;},getWarningHTML:function(){return OpenLayers.i18n("googleWarning");},getMapObjectCenter:function(){return this.mapObject.getCenter();},getMapObjectZoom:function(){return this.mapObject.getZoom();},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lng(),moLonLat.lat()).lon:moLonLat.lng();},getLatitudeFromMapObjectLonLat:function(moLonLat){var lat=this.sphericalMercator?this.forwardMercator(moLonLat.lng(),moLonLat.lat()).lat:moLonLat.lat();return lat;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},CLASS_NAME:"OpenLayers.Layer.Google"});OpenLayers.Layer.Google.cache={};OpenLayers.Layer.Google.v2={termsOfUse:null,poweredBy:null,dragObject:null,loadMapObject:function(){if(!this.type){this.type=G_NORMAL_MAP;}
+var mapObject,termsOfUse,poweredBy;var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){mapObject=cache.mapObject;termsOfUse=cache.termsOfUse;poweredBy=cache.poweredBy;++cache.count;}else{var container=this.map.viewPortDiv;var div=document.createElement("div");div.id=this.map.id+"_GMap2Container";div.style.position="absolute";div.style.width="100%";div.style.height="100%";container.appendChild(div);try{mapObject=new GMap2(div);termsOfUse=div.lastChild;container.appendChild(termsOfUse);termsOfUse.style.zIndex="1100";termsOfUse.style.right="";termsOfUse.style.bottom="";termsOfUse.className="olLayerGoogleCopyright";poweredBy=div.lastChild;container.appendChild(poweredBy);poweredBy.style.zIndex="1100";poweredBy.style.right="";poweredBy.style.bottom="";poweredBy.className="olLayerGooglePoweredBy gmnoprint";}catch(e){throw(e);}
+OpenLayers.Layer.Google.cache[this.map.id]={mapObject:mapObject,termsOfUse:termsOfUse,poweredBy:poweredBy,count:1};}
+this.mapObject=mapObject;this.termsOfUse=termsOfUse;this.poweredBy=poweredBy;if(OpenLayers.Util.indexOf(this.mapObject.getMapTypes(),this.type)===-1){this.mapObject.addMapType(this.type);}
+if(typeof mapObject.getDragObject=="function"){this.dragObject=mapObject.getDragObject();}else{this.dragPanMapObject=null;}
+if(this.isBaseLayer===false){this.setGMapVisibility(this.div.style.display!=="none");}},onMapResize:function(){if(this.visibility&&this.mapObject.isLoaded()){this.mapObject.checkResize();}else{if(!this._resized){var layer=this;var handle=GEvent.addListener(this.mapObject,"load",function(){GEvent.removeListener(handle);delete layer._resized;layer.mapObject.checkResize();layer.moveTo(layer.map.getCenter(),layer.map.getZoom());});}
+this._resized=true;}},setGMapVisibility:function(visible){var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){var container=this.mapObject.getContainer();if(visible===true){this.mapObject.setMapType(this.type);container.style.display="";this.termsOfUse.style.left="";this.termsOfUse.style.display="";this.poweredBy.style.display="";cache.displayed=this.id;}else{if(cache.displayed===this.id){delete cache.displayed;}
+if(!cache.displayed){container.style.display="none";this.termsOfUse.style.display="none";this.termsOfUse.style.left="-9999px";this.poweredBy.style.display="none";}}}},getMapContainer:function(){return this.mapObject.getContainer();},getMapObjectBoundsFromOLBounds:function(olBounds){var moBounds=null;if(olBounds!=null){var sw=this.sphericalMercator?this.inverseMercator(olBounds.bottom,olBounds.left):new OpenLayers.LonLat(olBounds.bottom,olBounds.left);var ne=this.sphericalMercator?this.inverseMercator(olBounds.top,olBounds.right):new OpenLayers.LonLat(olBounds.top,olBounds.right);moBounds=new GLatLngBounds(new GLatLng(sw.lat,sw.lon),new GLatLng(ne.lat,ne.lon));}
+return moBounds;},setMapObjectCenter:function(center,zoom){this.mapObject.setCenter(center,zoom);},dragPanMapObject:function(dX,dY){this.dragObject.moveBy(new GSize(-dX,dY));},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.fromContainerPixelToLatLng(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.fromLatLngToContainerPixel(moLonLat);},getMapObjectZoomFromMapObjectBounds:function(moBounds){return this.mapObject.getBoundsZoomLevel(moBounds);},getMapObjectLonLatFromLonLat:function(lon,lat){var gLatLng;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);gLatLng=new GLatLng(lonlat.lat,lonlat.lon);}else{gLatLng=new GLatLng(lat,lon);}
+return gLatLng;},getMapObjectPixelFromXY:function(x,y){return new GPoint(x,y);}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(options){if(window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");}
+OpenLayers.Format.prototype.initialize.apply(this,[options]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var alias in this.namespaces){this.namespaceAlias[this.namespaces[alias]]=alias;}},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,arguments);},setNamespace:function(alias,uri){this.namespaces[alias]=uri;this.namespaceAlias[uri]=alias;},read:function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);}
+var node=OpenLayers.Util.Try(OpenLayers.Function.bind((function(){var xmldom;if(window.ActiveXObject&&!this.xmldom){xmldom=new ActiveXObject("Microsoft.XMLDOM");}else{xmldom=this.xmldom;}
+xmldom.loadXML(text);return xmldom;}),this),function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");}
+req.send(null);return req.responseXML;});if(this.keepData){this.data=node;}
+return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);}
+doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}}
+return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);}
+return element;},createTextNode:function(text){var node;if(typeof text!=="string"){text=String(text);}
+if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);}
+return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0,len=allNodes.length;i<len;++i){potentialNode=allNodes[i];fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if((name=="*")||(fullName==potentialNode.nodeName)){if((uri=="*")||(uri==potentialNode.namespaceURI)){elements.push(potentialNode);}}}}
+return elements;},getAttributeNodeNS:function(node,uri,name){var attributeNode=null;if(node.getAttributeNodeNS){attributeNode=node.getAttributeNodeNS(uri,name);}else{var attributes=node.attributes;var potentialNode,fullName;for(var i=0,len=attributes.length;i<len;++i){potentialNode=attributes[i];if(potentialNode.namespaceURI==uri){fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if(fullName==potentialNode.nodeName){attributeNode=potentialNode;break;}}}}
+return attributeNode;},getAttributeNS:function(node,uri,name){var attributeValue="";if(node.getAttributeNS){attributeValue=node.getAttributeNS(uri,name)||"";}else{var attributeNode=this.getAttributeNodeNS(node,uri,name);if(attributeNode){attributeValue=attributeNode.nodeValue;}}
+return attributeValue;},getChildValue:function(node,def){var value=def||"";if(node){for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 3:case 4:value+=child.nodeValue;}}}
+return value;},concatChildValues:function(node,def){var value="";var child=node.firstChild;var childValue;while(child){childValue=child.nodeValue;if(childValue){value+=childValue;}
+child=child.nextSibling;}
+if(value==""&&def!=undefined){value=def;}
+return value;},isSimpleContent:function(node){var simple=true;for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===1){simple=false;break;}}
+return simple;},contentType:function(node){var simple=false,complex=false;var type=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 1:complex=true;break;case 8:break;default:simple=true;}
+if(complex&&simple){break;}}
+if(complex&&simple){type=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;}else if(complex){return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;}else if(simple){return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE;}
+return type;},hasAttributeNS:function(node,uri,name){var found=false;if(node.hasAttributeNS){found=node.hasAttributeNS(uri,name);}else{found=!!this.getAttributeNodeNS(node,uri,name);}
+return found;},setAttributeNS:function(node,uri,name,value){if(node.setAttributeNS){node.setAttributeNS(uri,name,value);}else{if(this.xmldom){if(uri){var attribute=node.ownerDocument.createNode(2,name,uri);attribute.nodeValue=value;node.setAttributeNode(attribute);}else{node.setAttribute(name,value);}}else{throw"setAttributeNS not implemented";}}},createElementNSPlus:function(name,options){options=options||{};var uri=options.uri||this.namespaces[options.prefix];if(!uri){var loc=name.indexOf(":");uri=this.namespaces[name.substring(0,loc)];}
+if(!uri){uri=this.namespaces[this.defaultPrefix];}
+var node=this.createElementNS(uri,name);if(options.attributes){this.setAttributes(node,options.attributes);}
+var value=options.value;if(value!=null){node.appendChild(this.createTextNode(value));}
+return node;},setAttributes:function(node,obj){var value,uri;for(var name in obj){if(obj[name]!=null&&obj[name].toString){value=obj[name].toString();uri=this.namespaces[name.substring(0,name.indexOf(":"))]||null;this.setAttributeNS(node,uri,name,value);}}},readNode:function(node,obj){if(!obj){obj={};}
+var group=this.readers[node.namespaceURI?this.namespaceAlias[node.namespaceURI]:this.defaultPrefix];if(group){var local=node.localName||node.nodeName.split(":").pop();var reader=group[local]||group["*"];if(reader){reader.apply(this,[node,obj]);}}
+return obj;},readChildNodes:function(node,obj){if(!obj){obj={};}
+var children=node.childNodes;var child;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){this.readNode(child,obj);}}
+return obj;},writeNode:function(name,obj,parent){var prefix,local;var split=name.indexOf(":");if(split>0){prefix=name.substring(0,split);local=name.substring(split+1);}else{if(parent){prefix=this.namespaceAlias[parent.namespaceURI];}else{prefix=this.defaultPrefix;}
+local=name;}
+var child=this.writers[prefix][local].apply(this,[obj]);if(parent){parent.appendChild(child);}
+return child;},getChildEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.firstChild,name,uri);},getNextEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.nextSibling,name,uri);},getThisOrNextEl:function(node,name,uri){outer:for(var sibling=node;sibling;sibling=sibling.nextSibling){switch(sibling.nodeType){case 1:if((!name||name===(sibling.localName||sibling.nodeName.split(":").pop()))&&(!uri||uri===sibling.namespaceURI)){break outer;}
+sibling=null;break outer;case 3:if(/^\s*$/.test(sibling.nodeValue)){break;}
+case 4:case 6:case 12:case 10:case 11:sibling=null;break outer;}}
+return sibling||null;},lookupNamespaceURI:function(node,prefix){var uri=null;if(node){if(node.lookupNamespaceURI){uri=node.lookupNamespaceURI(prefix);}else{outer:switch(node.nodeType){case 1:if(node.namespaceURI!==null&&node.prefix===prefix){uri=node.namespaceURI;break outer;}
+var len=node.attributes.length;if(len){var attr;for(var i=0;i<len;++i){attr=node.attributes[i];if(attr.prefix==="xmlns"&&attr.name==="xmlns:"+prefix){uri=attr.value||null;break outer;}else if(attr.name==="xmlns"&&prefix===null){uri=attr.value||null;break outer;}}}
+uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;case 2:uri=this.lookupNamespaceURI(node.ownerElement,prefix);break outer;case 9:uri=this.lookupNamespaceURI(node.documentElement,prefix);break outer;case 6:case 12:case 10:case 11:break outer;default:uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;}}}
+return uri;},getXMLDoc:function(){if(!OpenLayers.Format.XML.document&&!this.xmldom){if(document.implementation&&document.implementation.createDocument){OpenLayers.Format.XML.document=document.implementation.createDocument("","",null);}else if(!this.xmldom&&window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");}}
+return OpenLayers.Format.XML.document||this.xmldom;},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Format.WFST=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.WFST.DEFAULTS);var cls=OpenLayers.Format.WFST["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported WFST version: "+options.version;}
+return new cls(options);};OpenLayers.Format.WFST.DEFAULTS={"version":"1.0.0"};OpenLayers.Format.WFST.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs",gml:"http://www.opengis.net/gml",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows"},defaultPrefix:"wfs",version:null,schemaLocations:null,srsName:null,extractAttributes:true,xy:true,stateName:null,initialize:function(options){this.stateName={};this.stateName[OpenLayers.State.INSERT]="wfs:Insert";this.stateName[OpenLayers.State.UPDATE]="wfs:Update";this.stateName[OpenLayers.State.DELETE]="wfs:Delete";OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},getSrsName:function(feature,options){var srsName=options&&options.srsName;if(!srsName){if(feature&&feature.layer){srsName=feature.layer.projection.getCode();}else{srsName=this.srsName;}}
+return srsName;},read:function(data,options){options=options||{};OpenLayers.Util.applyDefaults(options,{output:"features"});if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var obj={};if(data){this.readNode(data,obj,true);}
+if(obj.features&&options.output==="features"){obj=obj.features;}
+return obj;},readers:{"wfs":{"FeatureCollection":function(node,obj){obj.features=[];this.readChildNodes(node,obj);}}},write:function(features,options){var node=this.writeNode("wfs:Transaction",{features:features,options:options});var value=this.schemaLocationAttr();if(value){this.setAttributeNS(node,this.namespaces["xsi"],"xsi:schemaLocation",value);}
+return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"wfs":{"GetFeature":function(options){var node=this.createElementNSPlus("wfs:GetFeature",{attributes:{service:"WFS",version:this.version,handle:options&&options.handle,outputFormat:options&&options.outputFormat,maxFeatures:options&&options.maxFeatures,"xsi:schemaLocation":this.schemaLocationAttr(options)}});if(typeof this.featureType=="string"){this.writeNode("Query",options,node);}else{for(var i=0,len=this.featureType.length;i<len;i++){options.featureType=this.featureType[i];this.writeNode("Query",options,node);}}
+return node;},"Transaction":function(obj){obj=obj||{};var options=obj.options||{};var node=this.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version,handle:options.handle}});var i,len;var features=obj.features;if(features){if(options.multi===true){OpenLayers.Util.extend(this.geometryTypes,{"OpenLayers.Geometry.Point":"MultiPoint","OpenLayers.Geometry.LineString":(this.multiCurve===true)?"MultiCurve":"MultiLineString","OpenLayers.Geometry.Polygon":(this.multiSurface===true)?"MultiSurface":"MultiPolygon"});}
+var name,feature;for(i=0,len=features.length;i<len;++i){feature=features[i];name=this.stateName[feature.state];if(name){this.writeNode(name,{feature:feature,options:options},node);}}
+if(options.multi===true){this.setGeometryTypes();}}
+if(options.nativeElements){for(i=0,len=options.nativeElements.length;i<len;++i){this.writeNode("wfs:Native",options.nativeElements[i],node);}}
+return node;},"Native":function(nativeElement){var node=this.createElementNSPlus("wfs:Native",{attributes:{vendorId:nativeElement.vendorId,safeToIgnore:nativeElement.safeToIgnore},value:nativeElement.value});return node;},"Insert":function(obj){var feature=obj.feature;var options=obj.options;var node=this.createElementNSPlus("wfs:Insert",{attributes:{handle:options&&options.handle}});this.srsName=this.getSrsName(feature);this.writeNode("feature:_typeName",feature,node);return node;},"Update":function(obj){var feature=obj.feature;var options=obj.options;var node=this.createElementNSPlus("wfs:Update",{attributes:{handle:options&&options.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+
+this.featureType}});if(this.featureNS){node.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);}
+var modified=feature.modified;if(this.geometryName!==null&&(!modified||modified.geometry!==undefined)){this.srsName=this.getSrsName(feature);this.writeNode("Property",{name:this.geometryName,value:feature.geometry},node);}
+for(var key in feature.attributes){if(feature.attributes[key]!==undefined&&(!modified||!modified.attributes||(modified.attributes&&modified.attributes[key]!==undefined))){this.writeNode("Property",{name:key,value:feature.attributes[key]},node);}}
+this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[feature.fid]}),node);return node;},"Property":function(obj){var node=this.createElementNSPlus("wfs:Property");this.writeNode("Name",obj.name,node);if(obj.value!==null){this.writeNode("Value",obj.value,node);}
+return node;},"Name":function(name){return this.createElementNSPlus("wfs:Name",{value:name});},"Value":function(obj){var node;if(obj instanceof OpenLayers.Geometry){node=this.createElementNSPlus("wfs:Value");var geom=this.writeNode("feature:_geometry",obj).firstChild;node.appendChild(geom);}else{node=this.createElementNSPlus("wfs:Value",{value:obj});}
+return node;},"Delete":function(obj){var feature=obj.feature;var options=obj.options;var node=this.createElementNSPlus("wfs:Delete",{attributes:{handle:options&&options.handle,typeName:(this.featureNS?this.featurePrefix+":":"")+
+this.featureType}});if(this.featureNS){node.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);}
+this.writeNode("ogc:Filter",new OpenLayers.Filter.FeatureId({fids:[feature.fid]}),node);return node;}}},schemaLocationAttr:function(options){options=OpenLayers.Util.extend({featurePrefix:this.featurePrefix,schema:this.schema},options);var schemaLocations=OpenLayers.Util.extend({},this.schemaLocations);if(options.schema){schemaLocations[options.featurePrefix]=options.schema;}
+var parts=[];var uri;for(var key in schemaLocations){uri=this.namespaces[key];if(uri){parts.push(uri+" "+schemaLocations[key]);}}
+var value=parts.join(" ")||undefined;return value;},setFilterProperty:function(filter){if(filter.filters){for(var i=0,len=filter.filters.length;i<len;++i){this.setFilterProperty(filter.filters[i]);}}else{if(filter instanceof OpenLayers.Filter.Spatial){filter.property=this.geometryName;}}},CLASS_NAME:"OpenLayers.Format.WFST.v1"});OpenLayers.Format.OGCExceptionReport=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},defaultPrefix:"ogc",read:function(data){var result;if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var root=data.documentElement;var exceptionInfo={exceptionReport:null};if(root){this.readChildNodes(data,exceptionInfo);if(exceptionInfo.exceptionReport===null){exceptionInfo=new OpenLayers.Format.OWSCommon().read(data);}}
+return exceptionInfo;},readers:{"ogc":{"ServiceExceptionReport":function(node,obj){obj.exceptionReport={exceptions:[]};this.readChildNodes(node,obj.exceptionReport);},"ServiceException":function(node,exceptionReport){var exception={code:node.getAttribute("code"),locator:node.getAttribute("locator"),text:this.getChildValue(node)};exceptionReport.exceptions.push(exception);}}},CLASS_NAME:"OpenLayers.Format.OGCExceptionReport"});OpenLayers.Format.XML.VersionedOGC=OpenLayers.Class(OpenLayers.Format.XML,{defaultVersion:null,version:null,profile:null,errorProperty:null,name:null,stringifyOutput:false,parser:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);var className=this.CLASS_NAME;this.name=className.substring(className.lastIndexOf(".")+1);},getVersion:function(root,options){var version;if(root){version=this.version;if(!version){version=root.getAttribute("version");if(!version){version=this.defaultVersion;}}}else{version=(options&&options.version)||this.version||this.defaultVersion;}
+return version;},getParser:function(version){version=version||this.defaultVersion;var profile=this.profile?"_"+this.profile:"";if(!this.parser||this.parser.VERSION!=version){var format=OpenLayers.Format[this.name]["v"+version.replace(/\./g,"_")+profile];if(!format){throw"Can't find a "+this.name+" parser for version "+
+version+profile;}
+this.parser=new format(this.options);}
+return this.parser;},write:function(obj,options){var version=this.getVersion(null,options);this.parser=this.getParser(version);var root=this.parser.write(obj,options);if(this.stringifyOutput===false){return root;}else{return OpenLayers.Format.XML.prototype.write.apply(this,[root]);}},read:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var root=data.documentElement;var version=this.getVersion(root);this.parser=this.getParser(version);var obj=this.parser.read(data,options);if(this.errorProperty!==null&&obj[this.errorProperty]===undefined){var format=new OpenLayers.Format.OGCExceptionReport();obj.error=format.read(data);}
+obj.version=version;return obj;},CLASS_NAME:"OpenLayers.Format.XML.VersionedOGC"});OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:false,propertyStyles:null,initialize:function(style,options){OpenLayers.Util.extend(this,options);this.rules=[];if(options&&options.rules){this.addRules(options.rules);}
+this.setDefaultStyle(style||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i=0,len=this.rules.length;i<len;i++){this.rules[i].destroy();this.rules[i]=null;}
+this.rules=null;this.defaultStyle=null;},createSymbolizer:function(feature){var style=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),feature);var rules=this.rules;var rule,context;var elseRules=[];var appliedRules=false;for(var i=0,len=rules.length;i<len;i++){rule=rules[i];var applies=rule.evaluate(feature);if(applies){if(rule instanceof OpenLayers.Rule&&rule.elseFilter){elseRules.push(rule);}else{appliedRules=true;this.applySymbolizer(rule,style,feature);}}}
+if(appliedRules==false&&elseRules.length>0){appliedRules=true;for(var i=0,len=elseRules.length;i<len;i++){this.applySymbolizer(elseRules[i],style,feature);}}
+if(rules.length>0&&appliedRules==false){style.display="none";}
+if(style.label&&typeof style.label!=="string"){style.label=String(style.label);}
+return style;},applySymbolizer:function(rule,style,feature){var symbolizerPrefix=feature.geometry?this.getSymbolizerPrefix(feature.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];var symbolizer=rule.symbolizer[symbolizerPrefix]||rule.symbolizer;if(this.defaultsPerSymbolizer===true){var defaults=this.defaultStyle;OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:defaults.pointRadius});if(symbolizer.stroke===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{strokeWidth:defaults.strokeWidth,strokeColor:defaults.strokeColor,strokeOpacity:defaults.strokeOpacity,strokeDashstyle:defaults.strokeDashstyle,strokeLinecap:defaults.strokeLinecap});}
+if(symbolizer.fill===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{fillColor:defaults.fillColor,fillOpacity:defaults.fillOpacity});}
+if(symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset});}}
+return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=OpenLayers.Util.extend({},feature.attributes||feature.data);OpenLayers.Util.extend(context,this.context);for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature,i);}
+return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0,len=rules.length;i<len;i++){symbolizer=rules[i].symbolizer;for(var key in symbolizer){value=symbolizer[key];if(typeof value=="object"){this.addPropertyStyles(propertyStyles,value);}else{this.addPropertyStyles(propertyStyles,symbolizer);break;}}}
+return propertyStyles;},addPropertyStyles:function(propertyStyles,symbolizer){var property;for(var key in symbolizer){property=symbolizer[key];if(typeof property=="string"&&property.match(/\$\{\w+\}/)){propertyStyles[key]=true;}}
+return propertyStyles;},addRules:function(rules){Array.prototype.push.apply(this.rules,rules);this.propertyStyles=this.findPropertyStyles();},setDefaultStyle:function(style){this.defaultStyle=style;this.propertyStyles=this.findPropertyStyles();},getSymbolizerPrefix:function(geometry){var prefixes=OpenLayers.Style.SYMBOLIZER_PREFIXES;for(var i=0,len=prefixes.length;i<len;i++){if(geometry.CLASS_NAME.indexOf(prefixes[i])!=-1){return prefixes[i];}}},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.rules){options.rules=[];for(var i=0,len=this.rules.length;i<len;++i){options.rules.push(this.rules[i].clone());}}
+options.context=this.context&&OpenLayers.Util.extend({},this.context);var defaultStyle=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(defaultStyle,options);},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(value,context,feature,property){if(typeof value=="string"&&value.indexOf("${")!=-1){value=OpenLayers.String.format(value,context,[feature,property]);value=(isNaN(value)||!value)?value:parseFloat(value);}
+return value;};OpenLayers.Style.SYMBOLIZER_PREFIXES=['Point','Line','Polygon','Text','Raster'];OpenLayers.Filter=OpenLayers.Class({initialize:function(options){OpenLayers.Util.extend(this,options);},destroy:function(){},evaluate:function(context){return true;},clone:function(){return null;},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.FeatureId=OpenLayers.Class(OpenLayers.Filter,{fids:null,type:"FID",initialize:function(options){this.fids=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){for(var i=0,len=this.fids.length;i<len;i++){var fid=feature.fid||feature.id;if(fid==this.fids[i]){return true;}}
+return false;},clone:function(){var filter=new OpenLayers.Filter.FeatureId();OpenLayers.Util.extend(filter,this);filter.fids=this.fids.slice();return filter;},CLASS_NAME:"OpenLayers.Filter.FeatureId"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(options){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this);},evaluate:function(context){var i,len;switch(this.type){case OpenLayers.Filter.Logical.AND:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==false){return false;}}
+return true;case OpenLayers.Filter.Logical.OR:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==true){return true;}}
+return false;case OpenLayers.Filter.Logical.NOT:return(!this.filters[0].evaluate(context));}
+return undefined;},clone:function(){var filters=[];for(var i=0,len=this.filters.length;i<len;++i){filters.push(this.filters[i].clone());}
+return new OpenLayers.Filter.Logical({type:this.type,filters:filters});},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:true,lowerBoundary:null,upperBoundary:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);if(this.type===OpenLayers.Filter.Comparison.LIKE&&options.matchCase===undefined){this.matchCase=null;}},evaluate:function(context){if(context instanceof OpenLayers.Feature.Vector){context=context.attributes;}
+var result=false;var got=context[this.property];var exp;switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:exp=this.value;if(!this.matchCase&&typeof got=="string"&&typeof exp=="string"){result=(got.toUpperCase()==exp.toUpperCase());}else{result=(got==exp);}
+break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:exp=this.value;if(!this.matchCase&&typeof got=="string"&&typeof exp=="string"){result=(got.toUpperCase()!=exp.toUpperCase());}else{result=(got!=exp);}
+break;case OpenLayers.Filter.Comparison.LESS_THAN:result=got<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:result=got>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:result=got<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:result=got>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:result=(got>=this.lowerBoundary)&&(got<=this.upperBoundary);break;case OpenLayers.Filter.Comparison.LIKE:var regexp=new RegExp(this.value,"gi");result=regexp.test(got);break;}
+return result;},value2regex:function(wildCard,singleChar,escapeChar){if(wildCard=="."){var msg="'.' is an unsupported wildCard character for "+"OpenLayers.Filter.Comparison";OpenLayers.Console.error(msg);return null;}
+wildCard=wildCard?wildCard:"*";singleChar=singleChar?singleChar:".";escapeChar=escapeChar?escapeChar:"!";this.value=this.value.replace(new RegExp("\\"+escapeChar+"(.|$)","g"),"\\$1");this.value=this.value.replace(new RegExp("\\"+singleChar,"g"),".");this.value=this.value.replace(new RegExp("\\"+wildCard,"g"),".*");this.value=this.value.replace(new RegExp("\\\\.\\*","g"),"\\"+wildCard);this.value=this.value.replace(new RegExp("\\\\\\.","g"),"\\"+singleChar);return this.value;},regex2value:function(){var value=this.value;value=value.replace(/!/g,"!!");value=value.replace(/(\\)?\\\./g,function($0,$1){return $1?$0:"!.";});value=value.replace(/(\\)?\\\*/g,function($0,$1){return $1?$0:"!*";});value=value.replace(/\\\\/g,"\\");value=value.replace(/\.\*/g,"*");return value;},clone:function(){return OpenLayers.Util.extend(new OpenLayers.Filter.Comparison(),this);},CLASS_NAME:"OpenLayers.Filter.Comparison"});OpenLayers.Filter.Comparison.EQUAL_TO="==";OpenLayers.Filter.Comparison.NOT_EQUAL_TO="!=";OpenLayers.Filter.Comparison.LESS_THAN="<";OpenLayers.Filter.Comparison.GREATER_THAN=">";OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO="<=";OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO=">=";OpenLayers.Filter.Comparison.BETWEEN="..";OpenLayers.Filter.Comparison.LIKE="~";OpenLayers.Format.Filter=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.Filter"});OpenLayers.Filter.Function=OpenLayers.Class(OpenLayers.Filter,{name:null,params:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);},CLASS_NAME:"OpenLayers.Filter.Function"});OpenLayers.Format.Filter.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"ogc",schemaLocation:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){var obj={};this.readers.ogc["Filter"].apply(this,[data,obj]);return obj.filter;},readers:{"ogc":{"Filter":function(node,parent){var obj={fids:[],filters:[]};this.readChildNodes(node,obj);if(obj.fids.length>0){parent.filter=new OpenLayers.Filter.FeatureId({fids:obj.fids});}else if(obj.filters.length>0){parent.filter=obj.filters[0];}},"FeatureId":function(node,obj){var fid=node.getAttribute("fid");if(fid){obj.fids.push(fid);}},"And":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND});this.readChildNodes(node,filter);obj.filters.push(filter);},"Or":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR});this.readChildNodes(node,filter);obj.filters.push(filter);},"Not":function(node,obj){var filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.NOT});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLessThan":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsGreaterThan":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLessThanOrEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsGreaterThanOrEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsBetween":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.BETWEEN});this.readChildNodes(node,filter);obj.filters.push(filter);},"Literal":function(node,obj){obj.value=OpenLayers.String.numericIf(this.getChildValue(node));},"PropertyName":function(node,filter){filter.property=this.getChildValue(node);},"LowerBoundary":function(node,filter){filter.lowerBoundary=OpenLayers.String.numericIf(this.readOgcExpression(node));},"UpperBoundary":function(node,filter){filter.upperBoundary=OpenLayers.String.numericIf(this.readOgcExpression(node));},"Intersects":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.INTERSECTS);},"Within":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.WITHIN);},"Contains":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.CONTAINS);},"DWithin":function(node,obj){this.readSpatial(node,obj,OpenLayers.Filter.Spatial.DWITHIN);},"Distance":function(node,obj){obj.distance=parseInt(this.getChildValue(node));obj.distanceUnits=node.getAttribute("units");},"Function":function(node,obj){return;}}},readSpatial:function(node,obj,type){var filter=new OpenLayers.Filter.Spatial({type:type});this.readChildNodes(node,filter);filter.value=filter.components[0];delete filter.components;obj.filters.push(filter);},readOgcExpression:function(node){var obj={};this.readChildNodes(node,obj);var value=obj.value;if(value===undefined){value=this.getChildValue(node);}
+return value;},writeOgcExpression:function(value,node){if(value instanceof OpenLayers.Filter.Function){var child=this.writeNode("Function",value,node);node.appendChild(child);}else{this.writeNode("Literal",value,node);}
+return node;},write:function(filter){return this.writers.ogc["Filter"].apply(this,[filter]);},writeFeatureIdNodes:function(filter,node){for(var i=0,ii=filter.fids.length;i<ii;++i){this.writeNode("FeatureId",filter.fids[i],node);}},writers:{"ogc":{"Filter":function(filter){var node=this.createElementNSPlus("ogc:Filter");if(filter.type==="FID"){this.writeFeatureIdNodes(filter,node);}else{this.writeNode(this.getFilterType(filter),filter,node);}
+return node;},"FeatureId":function(fid){return this.createElementNSPlus("ogc:FeatureId",{attributes:{fid:fid}});},"And":function(filter){var node=this.createElementNSPlus("ogc:And");var childFilter;for(var i=0,ii=filter.filters.length;i<ii;++i){childFilter=filter.filters[i];if(childFilter.type==="FID"){this.writeFeatureIdNodes(childFilter,node);}else{this.writeNode(this.getFilterType(childFilter),childFilter,node);}}
+return node;},"Or":function(filter){var node=this.createElementNSPlus("ogc:Or");var childFilter;for(var i=0,ii=filter.filters.length;i<ii;++i){childFilter=filter.filters[i];if(childFilter.type==="FID"){this.writeFeatureIdNodes(childFilter,node);}else{this.writeNode(this.getFilterType(childFilter),childFilter,node);}}
+return node;},"Not":function(filter){var node=this.createElementNSPlus("ogc:Not");var childFilter=filter.filters[0];if(childFilter.type==="FID"){this.writeFeatureIdNodes(childFilter,node);}else{this.writeNode(this.getFilterType(childFilter),childFilter,node);}
+return node;},"PropertyIsLessThan":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLessThan");this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsGreaterThan":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsGreaterThan");this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsLessThanOrEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLessThanOrEqualTo");this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsGreaterThanOrEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsGreaterThanOrEqualTo");this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsBetween":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsBetween");this.writeNode("PropertyName",filter,node);this.writeNode("LowerBoundary",filter,node);this.writeNode("UpperBoundary",filter,node);return node;},"PropertyName":function(filter){return this.createElementNSPlus("ogc:PropertyName",{value:filter.property});},"Literal":function(value){return this.createElementNSPlus("ogc:Literal",{value:value});},"LowerBoundary":function(filter){var node=this.createElementNSPlus("ogc:LowerBoundary");this.writeOgcExpression(filter.lowerBoundary,node);return node;},"UpperBoundary":function(filter){var node=this.createElementNSPlus("ogc:UpperBoundary");this.writeNode("Literal",filter.upperBoundary,node);return node;},"INTERSECTS":function(filter){return this.writeSpatial(filter,"Intersects");},"WITHIN":function(filter){return this.writeSpatial(filter,"Within");},"CONTAINS":function(filter){return this.writeSpatial(filter,"Contains");},"DWITHIN":function(filter){var node=this.writeSpatial(filter,"DWithin");this.writeNode("Distance",filter,node);return node;},"Distance":function(filter){return this.createElementNSPlus("ogc:Distance",{attributes:{units:filter.distanceUnits},value:filter.distance});},"Function":function(filter){var node=this.createElementNSPlus("ogc:Function",{attributes:{name:filter.name}});var params=filter.params;for(var i=0,len=params.length;i<len;i++){this.writeOgcExpression(params[i],node);}
+return node;}}},getFilterType:function(filter){var filterType=this.filterMap[filter.type];if(!filterType){throw"Filter writing not supported for rule type: "+filter.type;}
+return filterType;},filterMap:{"&&":"And","||":"Or","!":"Not","==":"PropertyIsEqualTo","!=":"PropertyIsNotEqualTo","<":"PropertyIsLessThan",">":"PropertyIsGreaterThan","<=":"PropertyIsLessThanOrEqualTo",">=":"PropertyIsGreaterThanOrEqualTo","..":"PropertyIsBetween","~":"PropertyIsLike","BBOX":"BBOX","DWITHIN":"DWITHIN","WITHIN":"WITHIN","CONTAINS":"CONTAINS","INTERSECTS":"INTERSECTS","FID":"FeatureId"},CLASS_NAME:"OpenLayers.Format.Filter.v1"});OpenLayers.Geometry=OpenLayers.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){this.id=null;this.bounds=null;},clone:function(){return new OpenLayers.Geometry();},setBounds:function(bounds){if(bounds){this.bounds=bounds.clone();}},clearBounds:function(){this.bounds=null;if(this.parent){this.parent.clearBounds();}},extendBounds:function(newBounds){var bounds=this.getBounds();if(!bounds){this.setBounds(newBounds);}else{this.bounds.extend(newBounds);}},getBounds:function(){if(this.bounds==null){this.calculateBounds();}
+return this.bounds;},calculateBounds:function(){},distanceTo:function(geometry,options){},getVertices:function(nodes){},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;var bounds=this.getBounds();if((bounds!=null)&&(lonlat!=null)){var dX=(toleranceLon!=null)?toleranceLon:0;var dY=(toleranceLat!=null)?toleranceLat:0;var toleranceBounds=new OpenLayers.Bounds(this.bounds.left-dX,this.bounds.bottom-dY,this.bounds.right+dX,this.bounds.top+dY);atPoint=toleranceBounds.containsLonLat(lonlat);}
+return atPoint;},getLength:function(){return 0.0;},getArea:function(){return 0.0;},getCentroid:function(){return null;},toString:function(){return OpenLayers.Format.WKT.prototype.write(new OpenLayers.Feature.Vector(this));},CLASS_NAME:"OpenLayers.Geometry"});OpenLayers.Geometry.fromWKT=function(wkt){var format=arguments.callee.format;if(!format){format=new OpenLayers.Format.WKT();arguments.callee.format=format;}
+var geom;var result=format.read(wkt);if(result instanceof OpenLayers.Feature.Vector){geom=result.geometry;}else if(OpenLayers.Util.isArray(result)){var len=result.length;var components=new Array(len);for(var i=0;i<len;++i){components[i]=result[i].geometry;}
+geom=new OpenLayers.Geometry.Collection(components);}
+return geom;};OpenLayers.Geometry.segmentsIntersect=function(seg1,seg2,options){var point=options&&options.point;var tolerance=options&&options.tolerance;var intersection=false;var x11_21=seg1.x1-seg2.x1;var y11_21=seg1.y1-seg2.y1;var x12_11=seg1.x2-seg1.x1;var y12_11=seg1.y2-seg1.y1;var y22_21=seg2.y2-seg2.y1;var x22_21=seg2.x2-seg2.x1;var d=(y22_21*x12_11)-(x22_21*y12_11);var n1=(x22_21*y11_21)-(y22_21*x11_21);var n2=(x12_11*y11_21)-(y12_11*x11_21);if(d==0){if(n1==0&&n2==0){intersection=true;}}else{var along1=n1/d;var along2=n2/d;if(along1>=0&&along1<=1&&along2>=0&&along2<=1){if(!point){intersection=true;}else{var x=seg1.x1+(along1*x12_11);var y=seg1.y1+(along1*y12_11);intersection=new OpenLayers.Geometry.Point(x,y);}}}
+if(tolerance){var dist;if(intersection){if(point){var segs=[seg1,seg2];var seg,x,y;outer:for(var i=0;i<2;++i){seg=segs[i];for(var j=1;j<3;++j){x=seg["x"+j];y=seg["y"+j];dist=Math.sqrt(Math.pow(x-intersection.x,2)+
+Math.pow(y-intersection.y,2));if(dist<tolerance){intersection.x=x;intersection.y=y;break outer;}}}}}else{var segs=[seg1,seg2];var source,target,x,y,p,result;outer:for(var i=0;i<2;++i){source=segs[i];target=segs[(i+1)%2];for(var j=1;j<3;++j){p={x:source["x"+j],y:source["y"+j]};result=OpenLayers.Geometry.distanceToSegment(p,target);if(result.distance<tolerance){if(point){intersection=new OpenLayers.Geometry.Point(p.x,p.y);}else{intersection=true;}
+break outer;}}}}}
+return intersection;};OpenLayers.Geometry.distanceToSegment=function(point,segment){var x0=point.x;var y0=point.y;var x1=segment.x1;var y1=segment.y1;var x2=segment.x2;var y2=segment.y2;var dx=x2-x1;var dy=y2-y1;var along=((dx*(x0-x1))+(dy*(y0-y1)))/(Math.pow(dx,2)+Math.pow(dy,2));var x,y;if(along<=0.0){x=x1;y=y1;}else if(along>=1.0){x=x2;y=y2;}else{x=x1+along*dx;y=y1+along*dy;}
+return{distance:Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2)),x:x,y:y};};OpenLayers.Geometry.Point=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,initialize:function(x,y){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(x);this.y=parseFloat(y);},clone:function(obj){if(obj==null){obj=new OpenLayers.Geometry.Point(this.x,this.y);}
+OpenLayers.Util.applyDefaults(obj,this);return obj;},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x,this.y);},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var distance,x0,y0,x1,y1,result;if(geometry instanceof OpenLayers.Geometry.Point){x0=this.x;y0=this.y;x1=geometry.x;y1=geometry.y;distance=Math.sqrt(Math.pow(x0-x1,2)+Math.pow(y0-y1,2));result=!details?distance:{x0:x0,y0:y0,x1:x1,y1:y1,distance:distance};}else{result=geometry.distanceTo(this,options);if(details){result={x0:result.x1,y0:result.y1,x1:result.x0,y1:result.y0,distance:result.distance};}}
+return result;},equals:function(geom){var equals=false;if(geom!=null){equals=((this.x==geom.x&&this.y==geom.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(geom.x)&&isNaN(geom.y)));}
+return equals;},toShortString:function(){return(this.x+", "+this.y);},move:function(x,y){this.x=this.x+x;this.y=this.y+y;this.clearBounds();},rotate:function(angle,origin){angle*=Math.PI/180;var radius=this.distanceTo(origin);var theta=angle+Math.atan2(this.y-origin.y,this.x-origin.x);this.x=origin.x+(radius*Math.cos(theta));this.y=origin.y+(radius*Math.sin(theta));this.clearBounds();},getCentroid:function(){return new OpenLayers.Geometry.Point(this.x,this.y);},resize:function(scale,origin,ratio){ratio=(ratio==undefined)?1:ratio;this.x=origin.x+(scale*ratio*(this.x-origin.x));this.y=origin.y+(scale*(this.y-origin.y));this.clearBounds();return this;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.equals(geometry);}else{intersect=geometry.intersects(this);}
+return intersect;},transform:function(source,dest){if((source&&dest)){OpenLayers.Projection.transform(this,source,dest);this.bounds=null;}
+return this;},getVertices:function(nodes){return[this];},CLASS_NAME:"OpenLayers.Geometry.Point"});OpenLayers.Geometry.Collection=OpenLayers.Class(OpenLayers.Geometry,{components:null,componentTypes:null,initialize:function(components){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.components=[];if(components!=null){this.addComponents(components);}},destroy:function(){this.components.length=0;this.components=null;OpenLayers.Geometry.prototype.destroy.apply(this,arguments);},clone:function(){var geometry=eval("new "+this.CLASS_NAME+"()");for(var i=0,len=this.components.length;i<len;i++){geometry.addComponent(this.components[i].clone());}
+OpenLayers.Util.applyDefaults(geometry,this);return geometry;},getComponentsString:function(){var strings=[];for(var i=0,len=this.components.length;i<len;i++){strings.push(this.components[i].toShortString());}
+return strings.join(",");},calculateBounds:function(){this.bounds=null;var bounds=new OpenLayers.Bounds();var components=this.components;if(components){for(var i=0,len=components.length;i<len;i++){bounds.extend(components[i].getBounds());}}
+if(bounds.left!=null&&bounds.bottom!=null&&bounds.right!=null&&bounds.top!=null){this.setBounds(bounds);}},addComponents:function(components){if(!(OpenLayers.Util.isArray(components))){components=[components];}
+for(var i=0,len=components.length;i<len;i++){this.addComponent(components[i]);}},addComponent:function(component,index){var added=false;if(component){if(this.componentTypes==null||(OpenLayers.Util.indexOf(this.componentTypes,component.CLASS_NAME)>-1)){if(index!=null&&(index<this.components.length)){var components1=this.components.slice(0,index);var components2=this.components.slice(index,this.components.length);components1.push(component);this.components=components1.concat(components2);}else{this.components.push(component);}
+component.parent=this;this.clearBounds();added=true;}}
+return added;},removeComponents:function(components){var removed=false;if(!(OpenLayers.Util.isArray(components))){components=[components];}
+for(var i=components.length-1;i>=0;--i){removed=this.removeComponent(components[i])||removed;}
+return removed;},removeComponent:function(component){OpenLayers.Util.removeItem(this.components,component);this.clearBounds();return true;},getLength:function(){var length=0.0;for(var i=0,len=this.components.length;i<len;i++){length+=this.components[i].getLength();}
+return length;},getArea:function(){var area=0.0;for(var i=0,len=this.components.length;i<len;i++){area+=this.components[i].getArea();}
+return area;},getGeodesicArea:function(projection){var area=0.0;for(var i=0,len=this.components.length;i<len;i++){area+=this.components[i].getGeodesicArea(projection);}
+return area;},getCentroid:function(weighted){if(!weighted){return this.components.length&&this.components[0].getCentroid();}
+var len=this.components.length;if(!len){return false;}
+var areas=[];var centroids=[];var areaSum=0;var minArea=Number.MAX_VALUE;var component;for(var i=0;i<len;++i){component=this.components[i];var area=component.getArea();var centroid=component.getCentroid(true);if(isNaN(area)||isNaN(centroid.x)||isNaN(centroid.y)){continue;}
+areas.push(area);areaSum+=area;minArea=(area<minArea&&area>0)?area:minArea;centroids.push(centroid);}
+len=areas.length;if(areaSum===0){for(var i=0;i<len;++i){areas[i]=1;}
+areaSum=areas.length;}else{for(var i=0;i<len;++i){areas[i]/=minArea;}
+areaSum/=minArea;}
+var xSum=0,ySum=0,centroid,area;for(var i=0;i<len;++i){centroid=centroids[i];area=areas[i];xSum+=centroid.x*area;ySum+=centroid.y*area;}
+return new OpenLayers.Geometry.Point(xSum/areaSum,ySum/areaSum);},getGeodesicLength:function(projection){var length=0.0;for(var i=0,len=this.components.length;i<len;i++){length+=this.components[i].getGeodesicLength(projection);}
+return length;},move:function(x,y){for(var i=0,len=this.components.length;i<len;i++){this.components[i].move(x,y);}},rotate:function(angle,origin){for(var i=0,len=this.components.length;i<len;++i){this.components[i].rotate(angle,origin);}},resize:function(scale,origin,ratio){for(var i=0;i<this.components.length;++i){this.components[i].resize(scale,origin,ratio);}
+return this;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var result,best,distance;var min=Number.POSITIVE_INFINITY;for(var i=0,len=this.components.length;i<len;++i){result=this.components[i].distanceTo(geometry,options);distance=details?result.distance:result;if(distance<min){min=distance;best=result;if(min==0){break;}}}
+return best;},equals:function(geometry){var equivalent=true;if(!geometry||!geometry.CLASS_NAME||(this.CLASS_NAME!=geometry.CLASS_NAME)){equivalent=false;}else if(!(OpenLayers.Util.isArray(geometry.components))||(geometry.components.length!=this.components.length)){equivalent=false;}else{for(var i=0,len=this.components.length;i<len;++i){if(!this.components[i].equals(geometry.components[i])){equivalent=false;break;}}}
+return equivalent;},transform:function(source,dest){if(source&&dest){for(var i=0,len=this.components.length;i<len;i++){var component=this.components[i];component.transform(source,dest);}
+this.bounds=null;}
+return this;},intersects:function(geometry){var intersect=false;for(var i=0,len=this.components.length;i<len;++i){intersect=geometry.intersects(this.components[i]);if(intersect){break;}}
+return intersect;},getVertices:function(nodes){var vertices=[];for(var i=0,len=this.components.length;i<len;++i){Array.prototype.push.apply(vertices,this.components[i].getVertices(nodes));}
+return vertices;},CLASS_NAME:"OpenLayers.Geometry.Collection"});OpenLayers.Geometry.MultiPoint=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},addPoint:function(point,index){this.addComponent(point,index);},removePoint:function(point){this.removeComponent(point);},CLASS_NAME:"OpenLayers.Geometry.MultiPoint"});OpenLayers.Geometry.Curve=OpenLayers.Class(OpenLayers.Geometry.MultiPoint,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.MultiPoint.prototype.initialize.apply(this,arguments);},getLength:function(){var length=0.0;if(this.components&&(this.components.length>1)){for(var i=1,len=this.components.length;i<len;i++){length+=this.components[i-1].distanceTo(this.components[i]);}}
+return length;},getGeodesicLength:function(projection){var geom=this;if(projection){var gg=new OpenLayers.Projection("EPSG:4326");if(!gg.equals(projection)){geom=this.clone().transform(projection,gg);}}
+var length=0.0;if(geom.components&&(geom.components.length>1)){var p1,p2;for(var i=1,len=geom.components.length;i<len;i++){p1=geom.components[i-1];p2=geom.components[i];length+=OpenLayers.Util.distVincenty({lon:p1.x,lat:p1.y},{lon:p2.x,lat:p2.y});}}
+return length*1000;},CLASS_NAME:"OpenLayers.Geometry.Curve"});OpenLayers.Geometry.LineString=OpenLayers.Class(OpenLayers.Geometry.Curve,{initialize:function(points){OpenLayers.Geometry.Curve.prototype.initialize.apply(this,arguments);},removeComponent:function(point){var removed=this.components&&(this.components.length>2);if(removed){OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);}
+return removed;},intersects:function(geometry){var intersect=false;var type=geometry.CLASS_NAME;if(type=="OpenLayers.Geometry.LineString"||type=="OpenLayers.Geometry.LinearRing"||type=="OpenLayers.Geometry.Point"){var segs1=this.getSortedSegments();var segs2;if(type=="OpenLayers.Geometry.Point"){segs2=[{x1:geometry.x,y1:geometry.y,x2:geometry.x,y2:geometry.y}];}else{segs2=geometry.getSortedSegments();}
+var seg1,seg1x1,seg1x2,seg1y1,seg1y2,seg2,seg2y1,seg2y2;outer:for(var i=0,len=segs1.length;i<len;++i){seg1=segs1[i];seg1x1=seg1.x1;seg1x2=seg1.x2;seg1y1=seg1.y1;seg1y2=seg1.y2;inner:for(var j=0,jlen=segs2.length;j<jlen;++j){seg2=segs2[j];if(seg2.x1>seg1x2){break;}
+if(seg2.x2<seg1x1){continue;}
+seg2y1=seg2.y1;seg2y2=seg2.y2;if(Math.min(seg2y1,seg2y2)>Math.max(seg1y1,seg1y2)){continue;}
+if(Math.max(seg2y1,seg2y2)<Math.min(seg1y1,seg1y2)){continue;}
+if(OpenLayers.Geometry.segmentsIntersect(seg1,seg2)){intersect=true;break outer;}}}}else{intersect=geometry.intersects(this);}
+return intersect;},getSortedSegments:function(){var numSeg=this.components.length-1;var segments=new Array(numSeg),point1,point2;for(var i=0;i<numSeg;++i){point1=this.components[i];point2=this.components[i+1];if(point1.x<point2.x){segments[i]={x1:point1.x,y1:point1.y,x2:point2.x,y2:point2.y};}else{segments[i]={x1:point2.x,y1:point2.y,x2:point1.x,y2:point1.y};}}
+function byX1(seg1,seg2){return seg1.x1-seg2.x1;}
+return segments.sort(byX1);},splitWithSegment:function(seg,options){var edge=!(options&&options.edge===false);var tolerance=options&&options.tolerance;var lines=[];var verts=this.getVertices();var points=[];var intersections=[];var split=false;var vert1,vert2,point;var node,vertex,target;var interOptions={point:true,tolerance:tolerance};var result=null;for(var i=0,stop=verts.length-2;i<=stop;++i){vert1=verts[i];points.push(vert1.clone());vert2=verts[i+1];target={x1:vert1.x,y1:vert1.y,x2:vert2.x,y2:vert2.y};point=OpenLayers.Geometry.segmentsIntersect(seg,target,interOptions);if(point instanceof OpenLayers.Geometry.Point){if((point.x===seg.x1&&point.y===seg.y1)||(point.x===seg.x2&&point.y===seg.y2)||point.equals(vert1)||point.equals(vert2)){vertex=true;}else{vertex=false;}
+if(vertex||edge){if(!point.equals(intersections[intersections.length-1])){intersections.push(point.clone());}
+if(i===0){if(point.equals(vert1)){continue;}}
+if(point.equals(vert2)){continue;}
+split=true;if(!point.equals(vert1)){points.push(point);}
+lines.push(new OpenLayers.Geometry.LineString(points));points=[point.clone()];}}}
+if(split){points.push(vert2.clone());lines.push(new OpenLayers.Geometry.LineString(points));}
+if(intersections.length>0){var xDir=seg.x1<seg.x2?1:-1;var yDir=seg.y1<seg.y2?1:-1;result={lines:lines,points:intersections.sort(function(p1,p2){return(xDir*p1.x-xDir*p2.x)||(yDir*p1.y-yDir*p2.y);})};}
+return result;},split:function(target,options){var results=null;var mutual=options&&options.mutual;var sourceSplit,targetSplit,sourceParts,targetParts;if(target instanceof OpenLayers.Geometry.LineString){var verts=this.getVertices();var vert1,vert2,seg,splits,lines,point;var points=[];sourceParts=[];for(var i=0,stop=verts.length-2;i<=stop;++i){vert1=verts[i];vert2=verts[i+1];seg={x1:vert1.x,y1:vert1.y,x2:vert2.x,y2:vert2.y};targetParts=targetParts||[target];if(mutual){points.push(vert1.clone());}
+for(var j=0;j<targetParts.length;++j){splits=targetParts[j].splitWithSegment(seg,options);if(splits){lines=splits.lines;if(lines.length>0){lines.unshift(j,1);Array.prototype.splice.apply(targetParts,lines);j+=lines.length-2;}
+if(mutual){for(var k=0,len=splits.points.length;k<len;++k){point=splits.points[k];if(!point.equals(vert1)){points.push(point);sourceParts.push(new OpenLayers.Geometry.LineString(points));if(point.equals(vert2)){points=[];}else{points=[point.clone()];}}}}}}}
+if(mutual&&sourceParts.length>0&&points.length>0){points.push(vert2.clone());sourceParts.push(new OpenLayers.Geometry.LineString(points));}}else{results=target.splitWith(this,options);}
+if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];}
+if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];}
+if(targetSplit||sourceSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}}
+return results;},splitWith:function(geometry,options){return geometry.split(this,options);},getVertices:function(nodes){var vertices;if(nodes===true){vertices=[this.components[0],this.components[this.components.length-1]];}else if(nodes===false){vertices=this.components.slice(1,this.components.length-1);}else{vertices=this.components.slice();}
+return vertices;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var details=edge&&options&&options.details;var result,best={};var min=Number.POSITIVE_INFINITY;if(geometry instanceof OpenLayers.Geometry.Point){var segs=this.getSortedSegments();var x=geometry.x;var y=geometry.y;var seg;for(var i=0,len=segs.length;i<len;++i){seg=segs[i];result=OpenLayers.Geometry.distanceToSegment(geometry,seg);if(result.distance<min){min=result.distance;best=result;if(min===0){break;}}else{if(seg.x2>x&&((y>seg.y1&&y<seg.y2)||(y<seg.y1&&y>seg.y2))){break;}}}
+if(details){best={distance:best.distance,x0:best.x,y0:best.y,x1:x,y1:y};}else{best=best.distance;}}else if(geometry instanceof OpenLayers.Geometry.LineString){var segs0=this.getSortedSegments();var segs1=geometry.getSortedSegments();var seg0,seg1,intersection,x0,y0;var len1=segs1.length;var interOptions={point:true};outer:for(var i=0,len=segs0.length;i<len;++i){seg0=segs0[i];x0=seg0.x1;y0=seg0.y1;for(var j=0;j<len1;++j){seg1=segs1[j];intersection=OpenLayers.Geometry.segmentsIntersect(seg0,seg1,interOptions);if(intersection){min=0;best={distance:0,x0:intersection.x,y0:intersection.y,x1:intersection.x,y1:intersection.y};break outer;}else{result=OpenLayers.Geometry.distanceToSegment({x:x0,y:y0},seg1);if(result.distance<min){min=result.distance;best={distance:min,x0:x0,y0:y0,x1:result.x,y1:result.y};}}}}
+if(!details){best=best.distance;}
+if(min!==0){if(seg0){result=geometry.distanceTo(new OpenLayers.Geometry.Point(seg0.x2,seg0.y2),options);var dist=details?result.distance:result;if(dist<min){if(details){best={distance:min,x0:result.x1,y0:result.y1,x1:result.x0,y1:result.y0};}else{best=dist;}}}}}else{best=geometry.distanceTo(this,options);if(details){best={distance:best.distance,x0:best.x1,y0:best.y1,x1:best.x0,y1:best.y0};}}
+return best;},simplify:function(tolerance){if(this&&this!==null){var points=this.getVertices();if(points.length<3){return this;}
+var compareNumbers=function(a,b){return(a-b);};var douglasPeuckerReduction=function(points,firstPoint,lastPoint,tolerance){var maxDistance=0;var indexFarthest=0;for(var index=firstPoint,distance;index<lastPoint;index++){distance=perpendicularDistance(points[firstPoint],points[lastPoint],points[index]);if(distance>maxDistance){maxDistance=distance;indexFarthest=index;}}
+if(maxDistance>tolerance&&indexFarthest!=firstPoint){pointIndexsToKeep.push(indexFarthest);douglasPeuckerReduction(points,firstPoint,indexFarthest,tolerance);douglasPeuckerReduction(points,indexFarthest,lastPoint,tolerance);}};var perpendicularDistance=function(point1,point2,point){var area=Math.abs(0.5*(point1.x*point2.y+point2.x*point.y+point.x*point1.y-point2.x*point1.y-point.x*point2.y-point1.x*point.y));var bottom=Math.sqrt(Math.pow(point1.x-point2.x,2)+Math.pow(point1.y-point2.y,2));var height=area/bottom*2;return height;};var firstPoint=0;var lastPoint=points.length-1;var pointIndexsToKeep=[];pointIndexsToKeep.push(firstPoint);pointIndexsToKeep.push(lastPoint);while(points[firstPoint].equals(points[lastPoint])){lastPoint--;pointIndexsToKeep.push(lastPoint);}
+douglasPeuckerReduction(points,firstPoint,lastPoint,tolerance);var returnPoints=[];pointIndexsToKeep.sort(compareNumbers);for(var index=0;index<pointIndexsToKeep.length;index++){returnPoints.push(points[pointIndexsToKeep[index]]);}
+return new OpenLayers.Geometry.LineString(returnPoints);}
+else{return this;}},CLASS_NAME:"OpenLayers.Geometry.LineString"});OpenLayers.Geometry.MultiLineString=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LineString"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},split:function(geometry,options){var results=null;var mutual=options&&options.mutual;var splits,sourceLine,sourceLines,sourceSplit,targetSplit;var sourceParts=[];var targetParts=[geometry];for(var i=0,len=this.components.length;i<len;++i){sourceLine=this.components[i];sourceSplit=false;for(var j=0;j<targetParts.length;++j){splits=sourceLine.split(targetParts[j],options);if(splits){if(mutual){sourceLines=splits[0];for(var k=0,klen=sourceLines.length;k<klen;++k){if(k===0&&sourceParts.length){sourceParts[sourceParts.length-1].addComponent(sourceLines[k]);}else{sourceParts.push(new OpenLayers.Geometry.MultiLineString([sourceLines[k]]));}}
+sourceSplit=true;splits=splits[1];}
+if(splits.length){splits.unshift(j,1);Array.prototype.splice.apply(targetParts,splits);break;}}}
+if(!sourceSplit){if(sourceParts.length){sourceParts[sourceParts.length-1].addComponent(sourceLine.clone());}else{sourceParts=[new OpenLayers.Geometry.MultiLineString(sourceLine.clone())];}}}
+if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];}
+if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];}
+if(sourceSplit||targetSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}}
+return results;},splitWith:function(geometry,options){var results=null;var mutual=options&&options.mutual;var splits,targetLine,sourceLines,sourceSplit,targetSplit,sourceParts,targetParts;if(geometry instanceof OpenLayers.Geometry.LineString){targetParts=[];sourceParts=[geometry];for(var i=0,len=this.components.length;i<len;++i){targetSplit=false;targetLine=this.components[i];for(var j=0;j<sourceParts.length;++j){splits=sourceParts[j].split(targetLine,options);if(splits){if(mutual){sourceLines=splits[0];if(sourceLines.length){sourceLines.unshift(j,1);Array.prototype.splice.apply(sourceParts,sourceLines);j+=sourceLines.length-2;}
+splits=splits[1];if(splits.length===0){splits=[targetLine.clone()];}}
+for(var k=0,klen=splits.length;k<klen;++k){if(k===0&&targetParts.length){targetParts[targetParts.length-1].addComponent(splits[k]);}else{targetParts.push(new OpenLayers.Geometry.MultiLineString([splits[k]]));}}
+targetSplit=true;}}
+if(!targetSplit){if(targetParts.length){targetParts[targetParts.length-1].addComponent(targetLine.clone());}else{targetParts=[new OpenLayers.Geometry.MultiLineString([targetLine.clone()])];}}}}else{results=geometry.split(this);}
+if(sourceParts&&sourceParts.length>1){sourceSplit=true;}else{sourceParts=[];}
+if(targetParts&&targetParts.length>1){targetSplit=true;}else{targetParts=[];}
+if(sourceSplit||targetSplit){if(mutual){results=[sourceParts,targetParts];}else{results=targetParts;}}
+return results;},CLASS_NAME:"OpenLayers.Geometry.MultiLineString"});OpenLayers.Geometry.LinearRing=OpenLayers.Class(OpenLayers.Geometry.LineString,{componentTypes:["OpenLayers.Geometry.Point"],initialize:function(points){OpenLayers.Geometry.LineString.prototype.initialize.apply(this,arguments);},addComponent:function(point,index){var added=false;var lastPoint=this.components.pop();if(index!=null||!point.equals(lastPoint)){added=OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,arguments);}
+var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);return added;},removeComponent:function(point){var removed=this.components&&(this.components.length>3);if(removed){this.components.pop();OpenLayers.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var firstPoint=this.components[0];OpenLayers.Geometry.Collection.prototype.addComponent.apply(this,[firstPoint]);}
+return removed;},move:function(x,y){for(var i=0,len=this.components.length;i<len-1;i++){this.components[i].move(x,y);}},rotate:function(angle,origin){for(var i=0,len=this.components.length;i<len-1;++i){this.components[i].rotate(angle,origin);}},resize:function(scale,origin,ratio){for(var i=0,len=this.components.length;i<len-1;++i){this.components[i].resize(scale,origin,ratio);}
+return this;},transform:function(source,dest){if(source&&dest){for(var i=0,len=this.components.length;i<len-1;i++){var component=this.components[i];component.transform(source,dest);}
+this.bounds=null;}
+return this;},getCentroid:function(){if(this.components&&(this.components.length>2)){var sumX=0.0;var sumY=0.0;for(var i=0;i<this.components.length-1;i++){var b=this.components[i];var c=this.components[i+1];sumX+=(b.x+c.x)*(b.x*c.y-c.x*b.y);sumY+=(b.y+c.y)*(b.x*c.y-c.x*b.y);}
+var area=-1*this.getArea();var x=sumX/(6*area);var y=sumY/(6*area);return new OpenLayers.Geometry.Point(x,y);}else{return null;}},getArea:function(){var area=0.0;if(this.components&&(this.components.length>2)){var sum=0.0;for(var i=0,len=this.components.length;i<len-1;i++){var b=this.components[i];var c=this.components[i+1];sum+=(b.x+c.x)*(c.y-b.y);}
+area=-sum/2.0;}
+return area;},getGeodesicArea:function(projection){var ring=this;if(projection){var gg=new OpenLayers.Projection("EPSG:4326");if(!gg.equals(projection)){ring=this.clone().transform(projection,gg);}}
+var area=0.0;var len=ring.components&&ring.components.length;if(len>2){var p1,p2;for(var i=0;i<len-1;i++){p1=ring.components[i];p2=ring.components[i+1];area+=OpenLayers.Util.rad(p2.x-p1.x)*(2+Math.sin(OpenLayers.Util.rad(p1.y))+
+Math.sin(OpenLayers.Util.rad(p2.y)));}
+area=area*6378137.0*6378137.0/2.0;}
+return area;},containsPoint:function(point){var approx=OpenLayers.Number.limitSigDigs;var digs=14;var px=approx(point.x,digs);var py=approx(point.y,digs);function getX(y,x1,y1,x2,y2){return(((x1-x2)*y)+((x2*y1)-(x1*y2)))/(y1-y2);}
+var numSeg=this.components.length-1;var start,end,x1,y1,x2,y2,cx,cy;var crosses=0;for(var i=0;i<numSeg;++i){start=this.components[i];x1=approx(start.x,digs);y1=approx(start.y,digs);end=this.components[i+1];x2=approx(end.x,digs);y2=approx(end.y,digs);if(y1==y2){if(py==y1){if(x1<=x2&&(px>=x1&&px<=x2)||x1>=x2&&(px<=x1&&px>=x2)){crosses=-1;break;}}
+continue;}
+cx=approx(getX(py,x1,y1,x2,y2),digs);if(cx==px){if(y1<y2&&(py>=y1&&py<=y2)||y1>y2&&(py<=y1&&py>=y2)){crosses=-1;break;}}
+if(cx<=px){continue;}
+if(x1!=x2&&(cx<Math.min(x1,x2)||cx>Math.max(x1,x2))){continue;}
+if(y1<y2&&(py>=y1&&py<y2)||y1>y2&&(py<y1&&py>=y2)){++crosses;}}
+var contained=(crosses==-1)?1:!!(crosses&1);return contained;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){intersect=geometry.intersects(this);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){intersect=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[geometry]);}else{for(var i=0,len=geometry.components.length;i<len;++i){intersect=geometry.components[i].intersects(this);if(intersect){break;}}}
+return intersect;},getVertices:function(nodes){return(nodes===true)?[]:this.components.slice(0,this.components.length-1);},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},getArea:function(){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getArea());for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getArea());}}
+return area;},getGeodesicArea:function(projection){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getGeodesicArea(projection));for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getGeodesicArea(projection));}}
+return area;},containsPoint:function(point){var numRings=this.components.length;var contained=false;if(numRings>0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i<numRings;++i){hole=this.components[i].containsPoint(point);if(hole){if(hole===1){contained=1;}else{contained=false;}
+break;}}}}}
+return contained;},intersects:function(geometry){var intersect=false;var i,len;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"||geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){for(i=0,len=this.components.length;i<len;++i){intersect=geometry.intersects(this.components[i]);if(intersect){break;}}
+if(!intersect){for(i=0,len=geometry.components.length;i<len;++i){intersect=this.containsPoint(geometry.components[i]);if(intersect){break;}}}}else{for(i=0,len=geometry.components.length;i<len;++i){intersect=this.intersects(geometry.components[i]);if(intersect){break;}}}
+if(!intersect&&geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){var ring=this.components[0];for(i=0,len=ring.components.length;i<len;++i){intersect=geometry.containsPoint(ring.components[i]);if(intersect){break;}}}
+return intersect;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var result;if(!edge&&this.intersects(geometry)){result=0;}else{result=OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,[geometry,options]);}
+return result;},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(origin,radius,sides,rotation){var angle=Math.PI*((1/sides)-(1/2));if(rotation){angle+=(rotation/180)*Math.PI;}
+var rotatedAngle,x,y;var points=[];for(var i=0;i<sides;++i){rotatedAngle=angle+(i*2*Math.PI/sides);x=origin.x+(radius*Math.cos(rotatedAngle));y=origin.y+(radius*Math.sin(rotatedAngle));points.push(new OpenLayers.Geometry.Point(x,y));}
+var ring=new OpenLayers.Geometry.LinearRing(points);return new OpenLayers.Geometry.Polygon([ring]);};OpenLayers.Geometry.MultiPolygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.Polygon"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Geometry.MultiPolygon"});OpenLayers.Format.GML=OpenLayers.Class(OpenLayers.Format.XML,{featureNS:"http://mapserver.gis.umn.edu/mapserver",featurePrefix:"feature",featureName:"featureMember",layerName:"features",geometryName:"geometry",collectionName:"FeatureCollection",gmlns:"http://www.opengis.net/gml",extractAttributes:true,xy:true,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)};OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var featureNodes=this.getElementsByTagNameNS(data.documentElement,this.gmlns,this.featureName);var features=[];for(var i=0;i<featureNodes.length;i++){var feature=this.parseFeature(featureNodes[i]);if(feature){features.push(feature);}}
+return features;},parseFeature:function(node){var order=["MultiPolygon","Polygon","MultiLineString","LineString","MultiPoint","Point","Envelope"];var type,nodeList,geometry,parser;for(var i=0;i<order.length;++i){type=order[i];nodeList=this.getElementsByTagNameNS(node,this.gmlns,type);if(nodeList.length>0){parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));}
+break;}}
+var bounds;var boxNodes=this.getElementsByTagNameNS(node,this.gmlns,"Box");for(i=0;i<boxNodes.length;++i){var boxNode=boxNodes[i];var box=this.parseGeometry["box"].apply(this,[boxNode]);var parentNode=boxNode.parentNode;var parentName=parentNode.localName||parentNode.nodeName.split(":").pop();if(parentName==="boundedBy"){bounds=box;}else{geometry=box.toGeometry();}}
+var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);}
+var feature=new OpenLayers.Feature.Vector(geometry,attributes);feature.bounds=bounds;feature.gml={featureType:node.firstChild.nodeName.split(":")[1],featureNS:node.firstChild.namespaceURI,featureNSPrefix:node.firstChild.prefix};var childNode=node.firstChild;var fid;while(childNode){if(childNode.nodeType==1){fid=childNode.getAttribute("fid")||childNode.getAttribute("id");if(fid){break;}}
+childNode=childNode.nextSibling;}
+feature.fid=fid;return feature;},parseGeometry:{point:function(node){var nodeList,coordString;var coords=[];var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"pos");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);}
+if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");}}
+if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coord");if(nodeList.length>0){var xList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"X");var yList=this.getElementsByTagNameNS(nodeList[0],this.gmlns,"Y");if(xList.length>0&&yList.length>0){coords=[xList[0].firstChild.nodeValue,yList[0].firstChild.nodeValue];}}}
+if(coords.length==2){coords[2]=null;}
+if(this.xy){return new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}
+else{return new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}},multipoint:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"Point");var components=[];if(nodeList.length>0){var point;for(var i=0;i<nodeList.length;++i){point=this.parseGeometry.point.apply(this,[nodeList[i]]);if(point){components.push(point);}}}
+return new OpenLayers.Geometry.MultiPoint(components);},linestring:function(node,ring){var nodeList,coordString;var coords=[];var points=[];nodeList=this.getElementsByTagNameNS(node,this.gmlns,"posList");if(nodeList.length>0){coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);var dim=parseInt(nodeList[0].getAttribute("dimension"));var j,x,y,z;for(var i=0;i<coords.length/dim;++i){j=i*dim;x=coords[j];y=coords[j+1];z=(dim==2)?null:coords[j+2];if(this.xy){points.push(new OpenLayers.Geometry.Point(x,y,z));}else{points.push(new OpenLayers.Geometry.Point(y,x,z));}}}
+if(coords.length==0){nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");if(nodeList.length>0){coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);for(var i=0;i<pointList.length;++i){coords=pointList[i].split(",");if(coords.length==2){coords[2]=null;}
+if(this.xy){points.push(new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]));}else{points.push(new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]));}}}}
+var line=null;if(points.length!=0){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}
+return line;},multilinestring:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"LineString");var components=[];if(nodeList.length>0){var line;for(var i=0;i<nodeList.length;++i){line=this.parseGeometry.linestring.apply(this,[nodeList[i]]);if(line){components.push(line);}}}
+return new OpenLayers.Geometry.MultiLineString(components);},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"LinearRing");var components=[];if(nodeList.length>0){var ring;for(var i=0;i<nodeList.length;++i){ring=this.parseGeometry.linestring.apply(this,[nodeList[i],true]);if(ring){components.push(ring);}}}
+return new OpenLayers.Geometry.Polygon(components);},multipolygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"Polygon");var components=[];if(nodeList.length>0){var polygon;for(var i=0;i<nodeList.length;++i){polygon=this.parseGeometry.polygon.apply(this,[nodeList[i]]);if(polygon){components.push(polygon);}}}
+return new OpenLayers.Geometry.MultiPolygon(components);},envelope:function(node){var components=[];var coordString;var envelope;var lpoint=this.getElementsByTagNameNS(node,this.gmlns,"lowerCorner");if(lpoint.length>0){var coords=[];if(lpoint.length>0){coordString=lpoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);}
+if(coords.length==2){coords[2]=null;}
+if(this.xy){var lowerPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var lowerPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}}
+var upoint=this.getElementsByTagNameNS(node,this.gmlns,"upperCorner");if(upoint.length>0){var coords=[];if(upoint.length>0){coordString=upoint[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.trimSpace,"");coords=coordString.split(this.regExes.splitSpace);}
+if(coords.length==2){coords[2]=null;}
+if(this.xy){var upperPoint=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{var upperPoint=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}}
+if(lowerPoint&&upperPoint){components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,lowerPoint.y));components.push(new OpenLayers.Geometry.Point(upperPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,upperPoint.y));components.push(new OpenLayers.Geometry.Point(lowerPoint.x,lowerPoint.y));var ring=new OpenLayers.Geometry.LinearRing(components);envelope=new OpenLayers.Geometry.Polygon([ring]);}
+return envelope;},box:function(node){var nodeList=this.getElementsByTagNameNS(node,this.gmlns,"coordinates");var coordString;var coords,beginPoint=null,endPoint=null;if(nodeList.length>0){coordString=nodeList[0].firstChild.nodeValue;coords=coordString.split(" ");if(coords.length==2){beginPoint=coords[0].split(",");endPoint=coords[1].split(",");}}
+if(beginPoint!==null&&endPoint!==null){return new OpenLayers.Bounds(parseFloat(beginPoint[0]),parseFloat(beginPoint[1]),parseFloat(endPoint[0]),parseFloat(endPoint[1]));}}},parseAttributes:function(node){var attributes={};var childNode=node.firstChild;var children,i,child,grandchildren,grandchild,name,value;while(childNode){if(childNode.nodeType==1){children=childNode.childNodes;for(i=0;i<children.length;++i){child=children[i];if(child.nodeType==1){grandchildren=child.childNodes;if(grandchildren.length==1){grandchild=grandchildren[0];if(grandchild.nodeType==3||grandchild.nodeType==4){name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;value=grandchild.nodeValue.replace(this.regExes.trimSpace,"");attributes[name]=value;}}else{attributes[child.nodeName.split(":").pop()]=null;}}}
+break;}
+childNode=childNode.nextSibling;}
+return attributes;},write:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+var gml=this.createElementNS("http://www.opengis.net/wfs","wfs:"+this.collectionName);for(var i=0;i<features.length;i++){gml.appendChild(this.createFeatureXML(features[i]));}
+return OpenLayers.Format.XML.prototype.write.apply(this,[gml]);},createFeatureXML:function(feature){var geometry=feature.geometry;var geometryNode=this.buildGeometryNode(geometry);var geomContainer=this.createElementNS(this.featureNS,this.featurePrefix+":"+
+this.geometryName);geomContainer.appendChild(geometryNode);var featureNode=this.createElementNS(this.gmlns,"gml:"+this.featureName);var featureContainer=this.createElementNS(this.featureNS,this.featurePrefix+":"+
+this.layerName);var fid=feature.fid||feature.id;featureContainer.setAttribute("fid",fid);featureContainer.appendChild(geomContainer);for(var attr in feature.attributes){var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr.substring(attr.lastIndexOf(":")+1);var attrContainer=this.createElementNS(this.featureNS,this.featurePrefix+":"+
+nodename);attrContainer.appendChild(attrText);featureContainer.appendChild(attrContainer);}
+featureNode.appendChild(featureContainer);return featureNode;},buildGeometryNode:function(geometry){if(this.externalProjection&&this.internalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);}
+var className=geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);var builder=this.buildGeometry[type.toLowerCase()];return builder.apply(this,[geometry]);},buildGeometry:{point:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:Point");gml.appendChild(this.buildCoordinatesNode(geometry));return gml;},multipoint:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:MultiPoint");var points=geometry.components;var pointMember,pointGeom;for(var i=0;i<points.length;i++){pointMember=this.createElementNS(this.gmlns,"gml:pointMember");pointGeom=this.buildGeometry.point.apply(this,[points[i]]);pointMember.appendChild(pointGeom);gml.appendChild(pointMember);}
+return gml;},linestring:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:LineString");gml.appendChild(this.buildCoordinatesNode(geometry));return gml;},multilinestring:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:MultiLineString");var lines=geometry.components;var lineMember,lineGeom;for(var i=0;i<lines.length;++i){lineMember=this.createElementNS(this.gmlns,"gml:lineStringMember");lineGeom=this.buildGeometry.linestring.apply(this,[lines[i]]);lineMember.appendChild(lineGeom);gml.appendChild(lineMember);}
+return gml;},linearring:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:LinearRing");gml.appendChild(this.buildCoordinatesNode(geometry));return gml;},polygon:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:Polygon");var rings=geometry.components;var ringMember,ringGeom,type;for(var i=0;i<rings.length;++i){type=(i==0)?"outerBoundaryIs":"innerBoundaryIs";ringMember=this.createElementNS(this.gmlns,"gml:"+type);ringGeom=this.buildGeometry.linearring.apply(this,[rings[i]]);ringMember.appendChild(ringGeom);gml.appendChild(ringMember);}
+return gml;},multipolygon:function(geometry){var gml=this.createElementNS(this.gmlns,"gml:MultiPolygon");var polys=geometry.components;var polyMember,polyGeom;for(var i=0;i<polys.length;++i){polyMember=this.createElementNS(this.gmlns,"gml:polygonMember");polyGeom=this.buildGeometry.polygon.apply(this,[polys[i]]);polyMember.appendChild(polyGeom);gml.appendChild(polyMember);}
+return gml;},bounds:function(bounds){var gml=this.createElementNS(this.gmlns,"gml:Box");gml.appendChild(this.buildCoordinatesNode(bounds));return gml;}},buildCoordinatesNode:function(geometry){var coordinatesNode=this.createElementNS(this.gmlns,"gml:coordinates");coordinatesNode.setAttribute("decimal",".");coordinatesNode.setAttribute("cs",",");coordinatesNode.setAttribute("ts"," ");var parts=[];if(geometry instanceof OpenLayers.Bounds){parts.push(geometry.left+","+geometry.bottom);parts.push(geometry.right+","+geometry.top);}else{var points=(geometry.components)?geometry.components:[geometry];for(var i=0;i<points.length;i++){parts.push(points[i].x+","+points[i].y);}}
+var txtNode=this.createTextNode(parts.join(" "));coordinatesNode.appendChild(txtNode);return coordinatesNode;},CLASS_NAME:"OpenLayers.Format.GML"});if(!OpenLayers.Format.GML){OpenLayers.Format.GML={};}
+OpenLayers.Format.GML.Base=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",wfs:"http://www.opengis.net/wfs"},defaultPrefix:"gml",schemaLocation:null,featureType:null,featureNS:null,geometryName:"geometry",extractAttributes:true,srsName:null,xy:true,geometryTypes:null,singleFeatureType:null,regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g),featureMember:(/^(.*:)?featureMembers?$/)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.setGeometryTypes();if(options&&options.featureNS){this.setNamespace("feature",options.featureNS);}
+this.singleFeatureType=!options||(typeof options.featureType==="string");},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var features=[];this.readNode(data,{features:features},true);if(features.length==0){var elements=this.getElementsByTagNameNS(data,this.namespaces.gml,"featureMember");if(elements.length){for(var i=0,len=elements.length;i<len;++i){this.readNode(elements[i],{features:features},true);}}else{var elements=this.getElementsByTagNameNS(data,this.namespaces.gml,"featureMembers");if(elements.length){this.readNode(elements[0],{features:features},true);}}}
+return features;},readNode:function(node,obj,first){if(first===true&&this.autoConfig===true){this.featureType=null;delete this.namespaceAlias[this.featureNS];delete this.namespaces["feature"];this.featureNS=null;}
+if(!this.featureNS&&(!(node.prefix in this.namespaces)&&node.parentNode.namespaceURI==this.namespaces["gml"]&&this.regExes.featureMember.test(node.parentNode.nodeName))){this.featureType=node.nodeName.split(":").pop();this.setNamespace("feature",node.namespaceURI);this.featureNS=node.namespaceURI;this.autoConfig=true;}
+return OpenLayers.Format.XML.prototype.readNode.apply(this,[node,obj]);},readers:{"gml":{"featureMember":function(node,obj){this.readChildNodes(node,obj);},"featureMembers":function(node,obj){this.readChildNodes(node,obj);},"name":function(node,obj){obj.name=this.getChildValue(node);},"boundedBy":function(node,obj){var container={};this.readChildNodes(node,container);if(container.components&&container.components.length>0){obj.bounds=container.components[0];}},"Point":function(node,container){var obj={points:[]};this.readChildNodes(node,obj);if(!container.components){container.components=[];}
+container.components.push(obj.points[0]);},"coordinates":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);var coords;var numPoints=pointList.length;var points=new Array(numPoints);for(var i=0;i<numPoints;++i){coords=pointList[i].split(",");if(this.xy){points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{points[i]=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}}
+obj.points=points;},"coord":function(node,obj){var coord={};this.readChildNodes(node,coord);if(!obj.points){obj.points=[];}
+obj.points.push(new OpenLayers.Geometry.Point(coord.x,coord.y,coord.z));},"X":function(node,coord){coord.x=this.getChildValue(node);},"Y":function(node,coord){coord.y=this.getChildValue(node);},"Z":function(node,coord){coord.z=this.getChildValue(node);},"MultiPoint":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.MultiPoint(obj.components)];},"pointMember":function(node,obj){this.readChildNodes(node,obj);},"LineString":function(node,container){var obj={};this.readChildNodes(node,obj);if(!container.components){container.components=[];}
+container.components.push(new OpenLayers.Geometry.LineString(obj.points));},"MultiLineString":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.MultiLineString(obj.components)];},"lineStringMember":function(node,obj){this.readChildNodes(node,obj);},"Polygon":function(node,container){var obj={outer:null,inner:[]};this.readChildNodes(node,obj);obj.inner.unshift(obj.outer);if(!container.components){container.components=[];}
+container.components.push(new OpenLayers.Geometry.Polygon(obj.inner));},"LinearRing":function(node,obj){var container={};this.readChildNodes(node,container);obj.components=[new OpenLayers.Geometry.LinearRing(container.points)];},"MultiPolygon":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.MultiPolygon(obj.components)];},"polygonMember":function(node,obj){this.readChildNodes(node,obj);},"GeometryCollection":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);container.components=[new OpenLayers.Geometry.Collection(obj.components)];},"geometryMember":function(node,obj){this.readChildNodes(node,obj);}},"feature":{"*":function(node,obj){var name;var local=node.localName||node.nodeName.split(":").pop();if(obj.features){if(!this.singleFeatureType&&(OpenLayers.Util.indexOf(this.featureType,local)!==-1)){name="_typeName";}else if(local===this.featureType){name="_typeName";}}else{if(node.childNodes.length==0||(node.childNodes.length==1&&node.firstChild.nodeType==3)){if(this.extractAttributes){name="_attribute";}}else{name="_geometry";}}
+if(name){this.readers.feature[name].apply(this,[node,obj]);}},"_typeName":function(node,obj){var container={components:[],attributes:{}};this.readChildNodes(node,container);if(container.name){container.attributes.name=container.name;}
+var feature=new OpenLayers.Feature.Vector(container.components[0],container.attributes);if(!this.singleFeatureType){feature.type=node.nodeName.split(":").pop();feature.namespace=node.namespaceURI;}
+var fid=node.getAttribute("fid")||this.getAttributeNS(node,this.namespaces["gml"],"id");if(fid){feature.fid=fid;}
+if(this.internalProjection&&this.externalProjection&&feature.geometry){feature.geometry.transform(this.externalProjection,this.internalProjection);}
+if(container.bounds){feature.bounds=container.bounds;}
+obj.features.push(feature);},"_geometry":function(node,obj){if(!this.geometryName){this.geometryName=node.nodeName.split(":").pop();}
+this.readChildNodes(node,obj);},"_attribute":function(node,obj){var local=node.localName||node.nodeName.split(":").pop();var value=this.getChildValue(node);obj.attributes[local]=value;}},"wfs":{"FeatureCollection":function(node,obj){this.readChildNodes(node,obj);}}},write:function(features){var name;if(OpenLayers.Util.isArray(features)){name="featureMembers";}else{name="featureMember";}
+var root=this.writeNode("gml:"+name,features);this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},writers:{"gml":{"featureMember":function(feature){var node=this.createElementNSPlus("gml:featureMember");this.writeNode("feature:_typeName",feature,node);return node;},"MultiPoint":function(geometry){var node=this.createElementNSPlus("gml:MultiPoint");var components=geometry.components||[geometry];for(var i=0,ii=components.length;i<ii;++i){this.writeNode("pointMember",components[i],node);}
+return node;},"pointMember":function(geometry){var node=this.createElementNSPlus("gml:pointMember");this.writeNode("Point",geometry,node);return node;},"MultiLineString":function(geometry){var node=this.createElementNSPlus("gml:MultiLineString");var components=geometry.components||[geometry];for(var i=0,ii=components.length;i<ii;++i){this.writeNode("lineStringMember",components[i],node);}
+return node;},"lineStringMember":function(geometry){var node=this.createElementNSPlus("gml:lineStringMember");this.writeNode("LineString",geometry,node);return node;},"MultiPolygon":function(geometry){var node=this.createElementNSPlus("gml:MultiPolygon");var components=geometry.components||[geometry];for(var i=0,ii=components.length;i<ii;++i){this.writeNode("polygonMember",components[i],node);}
+return node;},"polygonMember":function(geometry){var node=this.createElementNSPlus("gml:polygonMember");this.writeNode("Polygon",geometry,node);return node;},"GeometryCollection":function(geometry){var node=this.createElementNSPlus("gml:GeometryCollection");for(var i=0,len=geometry.components.length;i<len;++i){this.writeNode("geometryMember",geometry.components[i],node);}
+return node;},"geometryMember":function(geometry){var node=this.createElementNSPlus("gml:geometryMember");var child=this.writeNode("feature:_geometry",geometry);node.appendChild(child.firstChild);return node;}},"feature":{"_typeName":function(feature){var node=this.createElementNSPlus("feature:"+this.featureType,{attributes:{fid:feature.fid}});if(feature.geometry){this.writeNode("feature:_geometry",feature.geometry,node);}
+for(var name in feature.attributes){var value=feature.attributes[name];if(value!=null){this.writeNode("feature:_attribute",{name:name,value:value},node);}}
+return node;},"_geometry":function(geometry){if(this.externalProjection&&this.internalProjection){geometry=geometry.clone().transform(this.internalProjection,this.externalProjection);}
+var node=this.createElementNSPlus("feature:"+this.geometryName);var type=this.geometryTypes[geometry.CLASS_NAME];var child=this.writeNode("gml:"+type,geometry,node);if(this.srsName){child.setAttribute("srsName",this.srsName);}
+return node;},"_attribute":function(obj){return this.createElementNSPlus("feature:"+obj.name,{value:obj.value});}},"wfs":{"FeatureCollection":function(features){var node=this.createElementNSPlus("wfs:FeatureCollection");for(var i=0,len=features.length;i<len;++i){this.writeNode("gml:featureMember",features[i],node);}
+return node;}}},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":"LineString","OpenLayers.Geometry.MultiLineString":"MultiLineString","OpenLayers.Geometry.Polygon":"Polygon","OpenLayers.Geometry.MultiPolygon":"MultiPolygon","OpenLayers.Geometry.Collection":"GeometryCollection"};},CLASS_NAME:"OpenLayers.Format.GML.Base"});OpenLayers.Format.GML.v3=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd",curve:false,multiCurve:true,surface:false,multiSurface:true,initialize:function(options){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[options]);},readers:{"gml":OpenLayers.Util.applyDefaults({"featureMembers":function(node,obj){this.readChildNodes(node,obj);},"Curve":function(node,container){var obj={points:[]};this.readChildNodes(node,obj);if(!container.components){container.components=[];}
+container.components.push(new OpenLayers.Geometry.LineString(obj.points));},"segments":function(node,obj){this.readChildNodes(node,obj);},"LineStringSegment":function(node,container){var obj={};this.readChildNodes(node,obj);if(obj.points){Array.prototype.push.apply(container.points,obj.points);}},"pos":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");var coords=str.split(this.regExes.splitSpace);var point;if(this.xy){point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{point=new OpenLayers.Geometry.Point(coords[1],coords[0],coords[2]);}
+obj.points=[point];},"posList":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");var coords=str.split(this.regExes.splitSpace);var dim=parseInt(node.getAttribute("dimension"))||2;var j,x,y,z;var numPoints=coords.length/dim;var points=new Array(numPoints);for(var i=0,len=coords.length;i<len;i+=dim){x=coords[i];y=coords[i+1];z=(dim==2)?undefined:coords[i+2];if(this.xy){points[i/dim]=new OpenLayers.Geometry.Point(x,y,z);}else{points[i/dim]=new OpenLayers.Geometry.Point(y,x,z);}}
+obj.points=points;},"Surface":function(node,obj){this.readChildNodes(node,obj);},"patches":function(node,obj){this.readChildNodes(node,obj);},"PolygonPatch":function(node,obj){this.readers.gml.Polygon.apply(this,[node,obj]);},"exterior":function(node,container){var obj={};this.readChildNodes(node,obj);container.outer=obj.components[0];},"interior":function(node,container){var obj={};this.readChildNodes(node,obj);container.inner.push(obj.components[0]);},"MultiCurve":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);if(obj.components.length>0){container.components=[new OpenLayers.Geometry.MultiLineString(obj.components)];}},"curveMember":function(node,obj){this.readChildNodes(node,obj);},"MultiSurface":function(node,container){var obj={components:[]};this.readChildNodes(node,obj);if(obj.components.length>0){container.components=[new OpenLayers.Geometry.MultiPolygon(obj.components)];}},"surfaceMember":function(node,obj){this.readChildNodes(node,obj);},"surfaceMembers":function(node,obj){this.readChildNodes(node,obj);},"pointMembers":function(node,obj){this.readChildNodes(node,obj);},"lineStringMembers":function(node,obj){this.readChildNodes(node,obj);},"polygonMembers":function(node,obj){this.readChildNodes(node,obj);},"geometryMembers":function(node,obj){this.readChildNodes(node,obj);},"Envelope":function(node,container){var obj={points:new Array(2)};this.readChildNodes(node,obj);if(!container.components){container.components=[];}
+var min=obj.points[0];var max=obj.points[1];container.components.push(new OpenLayers.Bounds(min.x,min.y,max.x,max.y));},"lowerCorner":function(node,container){var obj={};this.readers.gml.pos.apply(this,[node,obj]);container.points[0]=obj.points[0];},"upperCorner":function(node,container){var obj={};this.readers.gml.pos.apply(this,[node,obj]);container.points[1]=obj.points[0];}},OpenLayers.Format.GML.Base.prototype.readers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.readers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.readers["wfs"]},write:function(features){var name;if(OpenLayers.Util.isArray(features)){name="featureMembers";}else{name="featureMember";}
+var root=this.writeNode("gml:"+name,features);this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},writers:{"gml":OpenLayers.Util.applyDefaults({"featureMembers":function(features){var node=this.createElementNSPlus("gml:featureMembers");for(var i=0,len=features.length;i<len;++i){this.writeNode("feature:_typeName",features[i],node);}
+return node;},"Point":function(geometry){var node=this.createElementNSPlus("gml:Point");this.writeNode("pos",geometry,node);return node;},"pos":function(point){var pos=(this.xy)?(point.x+" "+point.y):(point.y+" "+point.x);return this.createElementNSPlus("gml:pos",{value:pos});},"LineString":function(geometry){var node=this.createElementNSPlus("gml:LineString");this.writeNode("posList",geometry.components,node);return node;},"Curve":function(geometry){var node=this.createElementNSPlus("gml:Curve");this.writeNode("segments",geometry,node);return node;},"segments":function(geometry){var node=this.createElementNSPlus("gml:segments");this.writeNode("LineStringSegment",geometry,node);return node;},"LineStringSegment":function(geometry){var node=this.createElementNSPlus("gml:LineStringSegment");this.writeNode("posList",geometry.components,node);return node;},"posList":function(points){var len=points.length;var parts=new Array(len);var point;for(var i=0;i<len;++i){point=points[i];if(this.xy){parts[i]=point.x+" "+point.y;}else{parts[i]=point.y+" "+point.x;}}
+return this.createElementNSPlus("gml:posList",{value:parts.join(" ")});},"Surface":function(geometry){var node=this.createElementNSPlus("gml:Surface");this.writeNode("patches",geometry,node);return node;},"patches":function(geometry){var node=this.createElementNSPlus("gml:patches");this.writeNode("PolygonPatch",geometry,node);return node;},"PolygonPatch":function(geometry){var node=this.createElementNSPlus("gml:PolygonPatch",{attributes:{interpolation:"planar"}});this.writeNode("exterior",geometry.components[0],node);for(var i=1,len=geometry.components.length;i<len;++i){this.writeNode("interior",geometry.components[i],node);}
+return node;},"Polygon":function(geometry){var node=this.createElementNSPlus("gml:Polygon");this.writeNode("exterior",geometry.components[0],node);for(var i=1,len=geometry.components.length;i<len;++i){this.writeNode("interior",geometry.components[i],node);}
+return node;},"exterior":function(ring){var node=this.createElementNSPlus("gml:exterior");this.writeNode("LinearRing",ring,node);return node;},"interior":function(ring){var node=this.createElementNSPlus("gml:interior");this.writeNode("LinearRing",ring,node);return node;},"LinearRing":function(ring){var node=this.createElementNSPlus("gml:LinearRing");this.writeNode("posList",ring.components,node);return node;},"MultiCurve":function(geometry){var node=this.createElementNSPlus("gml:MultiCurve");var components=geometry.components||[geometry];for(var i=0,len=components.length;i<len;++i){this.writeNode("curveMember",components[i],node);}
+return node;},"curveMember":function(geometry){var node=this.createElementNSPlus("gml:curveMember");if(this.curve){this.writeNode("Curve",geometry,node);}else{this.writeNode("LineString",geometry,node);}
+return node;},"MultiSurface":function(geometry){var node=this.createElementNSPlus("gml:MultiSurface");var components=geometry.components||[geometry];for(var i=0,len=components.length;i<len;++i){this.writeNode("surfaceMember",components[i],node);}
+return node;},"surfaceMember":function(polygon){var node=this.createElementNSPlus("gml:surfaceMember");if(this.surface){this.writeNode("Surface",polygon,node);}else{this.writeNode("Polygon",polygon,node);}
+return node;},"Envelope":function(bounds){var node=this.createElementNSPlus("gml:Envelope");this.writeNode("lowerCorner",bounds,node);this.writeNode("upperCorner",bounds,node);if(this.srsName){node.setAttribute("srsName",this.srsName);}
+return node;},"lowerCorner":function(bounds){var pos=(this.xy)?(bounds.left+" "+bounds.bottom):(bounds.bottom+" "+bounds.left);return this.createElementNSPlus("gml:lowerCorner",{value:pos});},"upperCorner":function(bounds){var pos=(this.xy)?(bounds.right+" "+bounds.top):(bounds.top+" "+bounds.right);return this.createElementNSPlus("gml:upperCorner",{value:pos});}},OpenLayers.Format.GML.Base.prototype.writers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.writers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.writers["wfs"]},setGeometryTypes:function(){this.geometryTypes={"OpenLayers.Geometry.Point":"Point","OpenLayers.Geometry.MultiPoint":"MultiPoint","OpenLayers.Geometry.LineString":(this.curve===true)?"Curve":"LineString","OpenLayers.Geometry.MultiLineString":(this.multiCurve===false)?"MultiLineString":"MultiCurve","OpenLayers.Geometry.Polygon":(this.surface===true)?"Surface":"Polygon","OpenLayers.Geometry.MultiPolygon":(this.multiSurface===false)?"MultiPolygon":"MultiSurface","OpenLayers.Geometry.Collection":"GeometryCollection"};},CLASS_NAME:"OpenLayers.Format.GML.v3"});OpenLayers.Format.Filter.v1_1_0=OpenLayers.Class(OpenLayers.Format.GML.v3,OpenLayers.Format.Filter.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.1.0/filter.xsd",initialize:function(options){OpenLayers.Format.GML.v3.prototype.initialize.apply(this,[options]);},readers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(node,obj){var matchCase=node.getAttribute("matchCase");var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,matchCase:!(matchCase==="false"||matchCase==="0")});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsNotEqualTo":function(node,obj){var matchCase=node.getAttribute("matchCase");var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,matchCase:!(matchCase==="false"||matchCase==="0")});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLike":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(node,filter);var wildCard=node.getAttribute("wildCard");var singleChar=node.getAttribute("singleChar");var esc=node.getAttribute("escapeChar");filter.value2regex(wildCard,singleChar,esc);obj.filters.push(filter);}},OpenLayers.Format.Filter.v1.prototype.readers["ogc"]),"gml":OpenLayers.Format.GML.v3.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.readers["feature"]},writers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsEqualTo",{attributes:{matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsNotEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsNotEqualTo",{attributes:{matchCase:filter.matchCase}});this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsLike":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{matchCase:filter.matchCase,wildCard:"*",singleChar:".",escapeChar:"!"}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.regex2value(),node);return node;},"BBOX":function(filter){var node=this.createElementNSPlus("ogc:BBOX");filter.property&&this.writeNode("PropertyName",filter,node);var box=this.writeNode("gml:Envelope",filter.value);if(filter.projection){box.setAttribute("srsName",filter.projection);}
+node.appendChild(box);return node;},"SortBy":function(sortProperties){var node=this.createElementNSPlus("ogc:SortBy");for(var i=0,l=sortProperties.length;i<l;i++){this.writeNode("ogc:SortProperty",sortProperties[i],node);}
+return node;},"SortProperty":function(sortProperty){var node=this.createElementNSPlus("ogc:SortProperty");this.writeNode("ogc:PropertyName",sortProperty,node);this.writeNode("ogc:SortOrder",(sortProperty.order=='DESC')?'DESC':'ASC',node);return node;},"SortOrder":function(value){var node=this.createElementNSPlus("ogc:SortOrder",{value:value});return node;}},OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),"gml":OpenLayers.Format.GML.v3.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.writers["feature"]},writeSpatial:function(filter,name){var node=this.createElementNSPlus("ogc:"+name);this.writeNode("PropertyName",filter,node);if(filter.value instanceof OpenLayers.Filter.Function){this.writeNode("Function",filter.value,node);}else{var child;if(filter.value instanceof OpenLayers.Geometry){child=this.writeNode("feature:_geometry",filter.value).firstChild;}else{child=this.writeNode("gml:Envelope",filter.value);}
+if(filter.projection){child.setAttribute("srsName",filter.projection);}
+node.appendChild(child);}
+return node;},CLASS_NAME:"OpenLayers.Format.Filter.v1_1_0"});OpenLayers.Format.OWSCommon=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",getVersion:function(root,options){var version=this.version;if(!version){var uri=root.getAttribute("xmlns:ows");if(uri&&uri.substring(uri.lastIndexOf("/")+1)==="1.1"){version="1.1.0";}
+if(!version){version=this.defaultVersion;}}
+return version;},CLASS_NAME:"OpenLayers.Format.OWSCommon"});OpenLayers.Format.OWSCommon.v1=OpenLayers.Class(OpenLayers.Format.XML,{regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},read:function(data,options){options=OpenLayers.Util.applyDefaults(options,this.options);var ows={};this.readChildNodes(data,ows);return ows;},readers:{"ows":{"Exception":function(node,exceptionReport){var exception={code:node.getAttribute('exceptionCode'),locator:node.getAttribute('locator'),texts:[]};exceptionReport.exceptions.push(exception);this.readChildNodes(node,exception);},"ExceptionText":function(node,exception){var text=this.getChildValue(node);exception.texts.push(text);},"ServiceIdentification":function(node,obj){obj.serviceIdentification={};this.readChildNodes(node,obj.serviceIdentification);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,serviceIdentification){serviceIdentification["abstract"]=this.getChildValue(node);},"Keywords":function(node,serviceIdentification){serviceIdentification.keywords={};this.readChildNodes(node,serviceIdentification.keywords);},"Keyword":function(node,keywords){keywords[this.getChildValue(node)]=true;},"ServiceType":function(node,serviceIdentification){serviceIdentification.serviceType={codeSpace:node.getAttribute('codeSpace'),value:this.getChildValue(node)};},"ServiceTypeVersion":function(node,serviceIdentification){serviceIdentification.serviceTypeVersion=this.getChildValue(node);},"Fees":function(node,serviceIdentification){serviceIdentification.fees=this.getChildValue(node);},"AccessConstraints":function(node,serviceIdentification){serviceIdentification.accessConstraints=this.getChildValue(node);},"ServiceProvider":function(node,obj){obj.serviceProvider={};this.readChildNodes(node,obj.serviceProvider);},"ProviderName":function(node,serviceProvider){serviceProvider.providerName=this.getChildValue(node);},"ProviderSite":function(node,serviceProvider){serviceProvider.providerSite=this.getAttributeNS(node,this.namespaces.xlink,"href");},"ServiceContact":function(node,serviceProvider){serviceProvider.serviceContact={};this.readChildNodes(node,serviceProvider.serviceContact);},"IndividualName":function(node,serviceContact){serviceContact.individualName=this.getChildValue(node);},"PositionName":function(node,serviceContact){serviceContact.positionName=this.getChildValue(node);},"ContactInfo":function(node,serviceContact){serviceContact.contactInfo={};this.readChildNodes(node,serviceContact.contactInfo);},"Phone":function(node,contactInfo){contactInfo.phone={};this.readChildNodes(node,contactInfo.phone);},"Voice":function(node,phone){phone.voice=this.getChildValue(node);},"Address":function(node,contactInfo){contactInfo.address={};this.readChildNodes(node,contactInfo.address);},"DeliveryPoint":function(node,address){address.deliveryPoint=this.getChildValue(node);},"City":function(node,address){address.city=this.getChildValue(node);},"AdministrativeArea":function(node,address){address.administrativeArea=this.getChildValue(node);},"PostalCode":function(node,address){address.postalCode=this.getChildValue(node);},"Country":function(node,address){address.country=this.getChildValue(node);},"ElectronicMailAddress":function(node,address){address.electronicMailAddress=this.getChildValue(node);},"Role":function(node,serviceContact){serviceContact.role=this.getChildValue(node);},"OperationsMetadata":function(node,obj){obj.operationsMetadata={};this.readChildNodes(node,obj.operationsMetadata);},"Operation":function(node,operationsMetadata){var name=node.getAttribute("name");operationsMetadata[name]={};this.readChildNodes(node,operationsMetadata[name]);},"DCP":function(node,operation){operation.dcp={};this.readChildNodes(node,operation.dcp);},"HTTP":function(node,dcp){dcp.http={};this.readChildNodes(node,dcp.http);},"Get":function(node,http){http.get=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Post":function(node,http){http.post=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Parameter":function(node,operation){if(!operation.parameters){operation.parameters={};}
+var name=node.getAttribute("name");operation.parameters[name]={};this.readChildNodes(node,operation.parameters[name]);},"Value":function(node,allowedValues){allowedValues[this.getChildValue(node)]=true;},"OutputFormat":function(node,obj){obj.formats.push({value:this.getChildValue(node)});this.readChildNodes(node,obj);},"WGS84BoundingBox":function(node,obj){var boundingBox={};boundingBox.crs=node.getAttribute("crs");if(obj.BoundingBox){obj.BoundingBox.push(boundingBox);}else{obj.projection=boundingBox.crs;boundingBox=obj;}
+this.readChildNodes(node,boundingBox);},"BoundingBox":function(node,obj){this.readers['ows']['WGS84BoundingBox'].apply(this,[node,obj]);},"LowerCorner":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);obj.left=pointList[0];obj.bottom=pointList[1];},"UpperCorner":function(node,obj){var str=this.getChildValue(node).replace(this.regExes.trimSpace,"");str=str.replace(this.regExes.trimComma,",");var pointList=str.split(this.regExes.splitSpace);obj.right=pointList[0];obj.top=pointList[1];obj.bounds=new OpenLayers.Bounds(obj.left,obj.bottom,obj.right,obj.top);delete obj.left;delete obj.bottom;delete obj.right;delete obj.top;},"Language":function(node,obj){obj.language=this.getChildValue(node);}}},writers:{"ows":{"BoundingBox":function(options){var node=this.createElementNSPlus("ows:BoundingBox",{attributes:{crs:options.projection}});this.writeNode("ows:LowerCorner",options,node);this.writeNode("ows:UpperCorner",options,node);return node;},"LowerCorner":function(options){var node=this.createElementNSPlus("ows:LowerCorner",{value:options.bounds.left+" "+options.bounds.bottom});return node;},"UpperCorner":function(options){var node=this.createElementNSPlus("ows:UpperCorner",{value:options.bounds.right+" "+options.bounds.top});return node;},"Identifier":function(identifier){var node=this.createElementNSPlus("ows:Identifier",{value:identifier});return node;},"Title":function(title){var node=this.createElementNSPlus("ows:Title",{value:title});return node;},"Abstract":function(abstractValue){var node=this.createElementNSPlus("ows:Abstract",{value:abstractValue});return node;},"OutputFormat":function(format){var node=this.createElementNSPlus("ows:OutputFormat",{value:format});return node;}}},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1"});OpenLayers.Format.OWSCommon.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink"},readers:{"ows":OpenLayers.Util.applyDefaults({"ExceptionReport":function(node,obj){obj.success=false;obj.exceptionReport={version:node.getAttribute('version'),language:node.getAttribute('language'),exceptions:[]};this.readChildNodes(node,obj.exceptionReport);}},OpenLayers.Format.OWSCommon.v1.prototype.readers.ows)},writers:{"ows":OpenLayers.Format.OWSCommon.v1.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_0_0"});OpenLayers.Format.WFST.v1_1_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_1_0,OpenLayers.Format.WFST.v1,{version:"1.1.0",schemaLocations:{"wfs":"http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"},initialize:function(options){OpenLayers.Format.Filter.v1_1_0.prototype.initialize.apply(this,[options]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[options]);},readNode:function(node,obj,first){return OpenLayers.Format.GML.v3.prototype.readNode.apply(this,[node,obj]);},readers:{"wfs":OpenLayers.Util.applyDefaults({"FeatureCollection":function(node,obj){obj.numberOfFeatures=parseInt(node.getAttribute("numberOfFeatures"));OpenLayers.Format.WFST.v1.prototype.readers["wfs"]["FeatureCollection"].apply(this,arguments);},"TransactionResponse":function(node,obj){obj.insertIds=[];obj.success=false;this.readChildNodes(node,obj);},"TransactionSummary":function(node,obj){obj.success=true;},"InsertResults":function(node,obj){this.readChildNodes(node,obj);},"Feature":function(node,container){var obj={fids:[]};this.readChildNodes(node,obj);container.insertIds.push(obj.fids[0]);}},OpenLayers.Format.WFST.v1.prototype.readers["wfs"]),"gml":OpenLayers.Format.GML.v3.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.readers["feature"],"ogc":OpenLayers.Format.Filter.v1_1_0.prototype.readers["ogc"],"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers["ows"]},writers:{"wfs":OpenLayers.Util.applyDefaults({"GetFeature":function(options){var node=OpenLayers.Format.WFST.v1.prototype.writers["wfs"]["GetFeature"].apply(this,arguments);options&&this.setAttributes(node,{resultType:options.resultType,startIndex:options.startIndex,count:options.count});return node;},"Query":function(options){options=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName},options);var prefix=options.featurePrefix;var node=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(prefix?prefix+":":"")+
+options.featureType,srsName:options.srsName}});if(options.featureNS){node.setAttribute("xmlns:"+prefix,options.featureNS);}
+if(options.propertyNames){for(var i=0,len=options.propertyNames.length;i<len;i++){this.writeNode("wfs:PropertyName",{property:options.propertyNames[i]},node);}}
+if(options.filter){this.setFilterProperty(options.filter);this.writeNode("ogc:Filter",options.filter,node);}
+return node;},"PropertyName":function(obj){return this.createElementNSPlus("wfs:PropertyName",{value:obj.property});}},OpenLayers.Format.WFST.v1.prototype.writers["wfs"]),"gml":OpenLayers.Format.GML.v3.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v3.prototype.writers["feature"],"ogc":OpenLayers.Format.Filter.v1_1_0.prototype.writers["ogc"]},CLASS_NAME:"OpenLayers.Format.WFST.v1_1_0"});OpenLayers.Format.GeoJSON=OpenLayers.Class(OpenLayers.Format.JSON,{ignoreExtraDims:false,read:function(json,type,filter){type=(type)?type:"FeatureCollection";var results=null;var obj=null;if(typeof json=="string"){obj=OpenLayers.Format.JSON.prototype.read.apply(this,[json,filter]);}else{obj=json;}
+if(!obj){OpenLayers.Console.error("Bad JSON: "+json);}else if(typeof(obj.type)!="string"){OpenLayers.Console.error("Bad GeoJSON - no type: "+json);}else if(this.isValidType(obj,type)){switch(type){case"Geometry":try{results=this.parseGeometry(obj);}catch(err){OpenLayers.Console.error(err);}
+break;case"Feature":try{results=this.parseFeature(obj);results.type="Feature";}catch(err){OpenLayers.Console.error(err);}
+break;case"FeatureCollection":results=[];switch(obj.type){case"Feature":try{results.push(this.parseFeature(obj));}catch(err){results=null;OpenLayers.Console.error(err);}
+break;case"FeatureCollection":for(var i=0,len=obj.features.length;i<len;++i){try{results.push(this.parseFeature(obj.features[i]));}catch(err){results=null;OpenLayers.Console.error(err);}}
+break;default:try{var geom=this.parseGeometry(obj);results.push(new OpenLayers.Feature.Vector(geom));}catch(err){results=null;OpenLayers.Console.error(err);}}
+break;}}
+return results;},isValidType:function(obj,type){var valid=false;switch(type){case"Geometry":if(OpenLayers.Util.indexOf(["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","Box","GeometryCollection"],obj.type)==-1){OpenLayers.Console.error("Unsupported geometry type: "+
+obj.type);}else{valid=true;}
+break;case"FeatureCollection":valid=true;break;default:if(obj.type==type){valid=true;}else{OpenLayers.Console.error("Cannot convert types from "+
+obj.type+" to "+type);}}
+return valid;},parseFeature:function(obj){var feature,geometry,attributes,bbox;attributes=(obj.properties)?obj.properties:{};bbox=(obj.geometry&&obj.geometry.bbox)||obj.bbox;try{geometry=this.parseGeometry(obj.geometry);}catch(err){throw err;}
+feature=new OpenLayers.Feature.Vector(geometry,attributes);if(bbox){feature.bounds=OpenLayers.Bounds.fromArray(bbox);}
+if(obj.id){feature.fid=obj.id;}
+return feature;},parseGeometry:function(obj){if(obj==null){return null;}
+var geometry,collection=false;if(obj.type=="GeometryCollection"){if(!(OpenLayers.Util.isArray(obj.geometries))){throw"GeometryCollection must have geometries array: "+obj;}
+var numGeom=obj.geometries.length;var components=new Array(numGeom);for(var i=0;i<numGeom;++i){components[i]=this.parseGeometry.apply(this,[obj.geometries[i]]);}
+geometry=new OpenLayers.Geometry.Collection(components);collection=true;}else{if(!(OpenLayers.Util.isArray(obj.coordinates))){throw"Geometry must have coordinates array: "+obj;}
+if(!this.parseCoords[obj.type.toLowerCase()]){throw"Unsupported geometry type: "+obj.type;}
+try{geometry=this.parseCoords[obj.type.toLowerCase()].apply(this,[obj.coordinates]);}catch(err){throw err;}}
+if(this.internalProjection&&this.externalProjection&&!collection){geometry.transform(this.externalProjection,this.internalProjection);}
+return geometry;},parseCoords:{"point":function(array){if(this.ignoreExtraDims==false&&array.length!=2){throw"Only 2D points are supported: "+array;}
+return new OpenLayers.Geometry.Point(array[0],array[1]);},"multipoint":function(array){var points=[];var p=null;for(var i=0,len=array.length;i<len;++i){try{p=this.parseCoords["point"].apply(this,[array[i]]);}catch(err){throw err;}
+points.push(p);}
+return new OpenLayers.Geometry.MultiPoint(points);},"linestring":function(array){var points=[];var p=null;for(var i=0,len=array.length;i<len;++i){try{p=this.parseCoords["point"].apply(this,[array[i]]);}catch(err){throw err;}
+points.push(p);}
+return new OpenLayers.Geometry.LineString(points);},"multilinestring":function(array){var lines=[];var l=null;for(var i=0,len=array.length;i<len;++i){try{l=this.parseCoords["linestring"].apply(this,[array[i]]);}catch(err){throw err;}
+lines.push(l);}
+return new OpenLayers.Geometry.MultiLineString(lines);},"polygon":function(array){var rings=[];var r,l;for(var i=0,len=array.length;i<len;++i){try{l=this.parseCoords["linestring"].apply(this,[array[i]]);}catch(err){throw err;}
+r=new OpenLayers.Geometry.LinearRing(l.components);rings.push(r);}
+return new OpenLayers.Geometry.Polygon(rings);},"multipolygon":function(array){var polys=[];var p=null;for(var i=0,len=array.length;i<len;++i){try{p=this.parseCoords["polygon"].apply(this,[array[i]]);}catch(err){throw err;}
+polys.push(p);}
+return new OpenLayers.Geometry.MultiPolygon(polys);},"box":function(array){if(array.length!=2){throw"GeoJSON box coordinates must have 2 elements";}
+return new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing([new OpenLayers.Geometry.Point(array[0][0],array[0][1]),new OpenLayers.Geometry.Point(array[1][0],array[0][1]),new OpenLayers.Geometry.Point(array[1][0],array[1][1]),new OpenLayers.Geometry.Point(array[0][0],array[1][1]),new OpenLayers.Geometry.Point(array[0][0],array[0][1])])]);}},write:function(obj,pretty){var geojson={"type":null};if(OpenLayers.Util.isArray(obj)){geojson.type="FeatureCollection";var numFeatures=obj.length;geojson.features=new Array(numFeatures);for(var i=0;i<numFeatures;++i){var element=obj[i];if(!element instanceof OpenLayers.Feature.Vector){var msg="FeatureCollection only supports collections "+"of features: "+element;throw msg;}
+geojson.features[i]=this.extract.feature.apply(this,[element]);}}else if(obj.CLASS_NAME.indexOf("OpenLayers.Geometry")==0){geojson=this.extract.geometry.apply(this,[obj]);}else if(obj instanceof OpenLayers.Feature.Vector){geojson=this.extract.feature.apply(this,[obj]);if(obj.layer&&obj.layer.projection){geojson.crs=this.createCRSObject(obj);}}
+return OpenLayers.Format.JSON.prototype.write.apply(this,[geojson,pretty]);},createCRSObject:function(object){var proj=object.layer.projection.toString();var crs={};if(proj.match(/epsg:/i)){var code=parseInt(proj.substring(proj.indexOf(":")+1));if(code==4326){crs={"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}};}else{crs={"type":"name","properties":{"name":"EPSG:"+code}};}}
+return crs;},extract:{'feature':function(feature){var geom=this.extract.geometry.apply(this,[feature.geometry]);var json={"type":"Feature","properties":feature.attributes,"geometry":geom};if(feature.fid!=null){json.id=feature.fid;}
+return json;},'geometry':function(geometry){if(geometry==null){return null;}
+if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);}
+var geometryType=geometry.CLASS_NAME.split('.')[2];var data=this.extract[geometryType.toLowerCase()].apply(this,[geometry]);var json;if(geometryType=="Collection"){json={"type":"GeometryCollection","geometries":data};}else{json={"type":geometryType,"coordinates":data};}
+return json;},'point':function(point){return[point.x,point.y];},'multipoint':function(multipoint){var array=[];for(var i=0,len=multipoint.components.length;i<len;++i){array.push(this.extract.point.apply(this,[multipoint.components[i]]));}
+return array;},'linestring':function(linestring){var array=[];for(var i=0,len=linestring.components.length;i<len;++i){array.push(this.extract.point.apply(this,[linestring.components[i]]));}
+return array;},'multilinestring':function(multilinestring){var array=[];for(var i=0,len=multilinestring.components.length;i<len;++i){array.push(this.extract.linestring.apply(this,[multilinestring.components[i]]));}
+return array;},'polygon':function(polygon){var array=[];for(var i=0,len=polygon.components.length;i<len;++i){array.push(this.extract.linestring.apply(this,[polygon.components[i]]));}
+return array;},'multipolygon':function(multipolygon){var array=[];for(var i=0,len=multipolygon.components.length;i<len;++i){array.push(this.extract.polygon.apply(this,[multipolygon.components[i]]));}
+return array;},'collection':function(collection){var len=collection.components.length;var array=new Array(len);for(var i=0;i<len;++i){array[i]=this.extract.geometry.apply(this,[collection.components[i]]);}
+return array;}},CLASS_NAME:"OpenLayers.Format.GeoJSON"});OpenLayers.Protocol.Script=OpenLayers.Class(OpenLayers.Protocol,{url:null,params:null,callback:null,scope:null,format:null,callbackKey:"callback",callbackPrefix:"",pendingRequests:null,srsInBBOX:false,initialize:function(options){options=options||{};this.params={};this.pendingRequests={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.format){this.format=new OpenLayers.Format.GeoJSON();}
+if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var format=new OpenLayers.Format.QueryStringFilter({srsInBBOX:this.srsInBBOX});this.filterToParams=function(filter,params){return format.write(filter,params);}}},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=OpenLayers.Util.applyDefaults(options,this.options);options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);if(options.filter&&this.filterToParams){options.params=this.filterToParams(options.filter,options.params);}
+var response=new OpenLayers.Protocol.Response({requestType:"read"});var request=this.createRequest(options.url,options.params,OpenLayers.Function.bind(function(data){response.data=data;this.handleRead(response,options);},this));response.priv=request;return response;},createRequest:function(url,params,callback){var id=OpenLayers.Protocol.Script.register(callback);var name="OpenLayers.Protocol.Script.registry["+id+"]";params=OpenLayers.Util.extend({},params);params[this.callbackKey]=this.callbackPrefix+name;url=OpenLayers.Util.urlAppend(url,OpenLayers.Util.getParameterString(params));var script=document.createElement("script");script.type="text/javascript";script.src=url;script.id="OpenLayers_Protocol_Script_"+id;this.pendingRequests[script.id]=script;var head=document.getElementsByTagName("head")[0];head.appendChild(script);return script;},destroyRequest:function(script){OpenLayers.Protocol.Script.unregister(script.id.split("_").pop());delete this.pendingRequests[script.id];if(script.parentNode){script.parentNode.removeChild(script);}},handleRead:function(response,options){this.handleResponse(response,options);},handleResponse:function(response,options){if(options.callback){if(response.data){response.features=this.parseFeatures(response.data);response.code=OpenLayers.Protocol.Response.SUCCESS;}else{response.code=OpenLayers.Protocol.Response.FAILURE;}
+this.destroyRequest(response.priv);options.callback.call(options.scope,response);}},parseFeatures:function(data){return this.format.read(data);},abort:function(response){if(response){this.destroyRequest(response.priv);}else{for(var key in this.pendingRequests){this.destroyRequest(this.pendingRequests[key]);}}},destroy:function(){this.abort();delete this.params;delete this.format;OpenLayers.Protocol.prototype.destroy.apply(this);},CLASS_NAME:"OpenLayers.Protocol.Script"});(function(){var o=OpenLayers.Protocol.Script;var counter=0;o.registry=[];o.register=function(callback){var id=++counter;o.registry[id]=function(){o.unregister(id);callback.apply(this,arguments);};return id;};o.unregister=function(id){delete o.registry[id];};})();OpenLayers.Format.CSWGetRecords=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.CSWGetRecords.DEFAULTS);var cls=OpenLayers.Format.CSWGetRecords["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported CSWGetRecords version: "+options.version;}
+return new cls(options);};OpenLayers.Format.CSWGetRecords.DEFAULTS={"version":"2.0.2"};OpenLayers.Control.Panel=OpenLayers.Class(OpenLayers.Control,{controls:null,autoActivate:true,defaultControl:null,saveState:false,allowDepress:false,activeState:null,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.controls=[];this.activeState={};},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this,arguments);for(var ctl,i=this.controls.length-1;i>=0;i--){ctl=this.controls[i];if(ctl.events){ctl.events.un({activate:this.iconOn,deactivate:this.iconOff});}
+OpenLayers.Event.stopObservingElement(ctl.panel_div);ctl.panel_div=null;}
+this.activeState=null;},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){var control;for(var i=0,len=this.controls.length;i<len;i++){control=this.controls[i];if(control===this.defaultControl||(this.saveState&&this.activeState[control.id])){control.activate();}}
+if(this.saveState===true){this.defaultControl=null;}
+this.redraw();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){var control;for(var i=0,len=this.controls.length;i<len;i++){control=this.controls[i];this.activeState[control.id]=control.deactivate();}
+this.redraw();return true;}else{return false;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.addControlsToMap(this.controls);return this.div;},redraw:function(){for(var l=this.div.childNodes.length,i=l-1;i>=0;i--){this.div.removeChild(this.div.childNodes[i]);}
+this.div.innerHTML="";if(this.active){for(var i=0,len=this.controls.length;i<len;i++){this.div.appendChild(this.controls[i].panel_div);}}},activateControl:function(control){if(!this.active){return false;}
+if(control.type==OpenLayers.Control.TYPE_BUTTON){control.trigger();return;}
+if(control.type==OpenLayers.Control.TYPE_TOGGLE){if(control.active){control.deactivate();}else{control.activate();}
+return;}
+if(this.allowDepress&&control.active){control.deactivate();}else{var c;for(var i=0,len=this.controls.length;i<len;i++){c=this.controls[i];if(c!=control&&(c.type===OpenLayers.Control.TYPE_TOOL||c.type==null)){c.deactivate();}}
+control.activate();}},addControls:function(controls){if(!(OpenLayers.Util.isArray(controls))){controls=[controls];}
+this.controls=this.controls.concat(controls);for(var i=0,len=controls.length;i<len;i++){var element=document.createElement("div");element.className=controls[i].displayClass+"ItemInactive";controls[i].panel_div=element;if(controls[i].title!=""){controls[i].panel_div.title=controls[i].title;}
+OpenLayers.Event.observe(controls[i].panel_div,"click",OpenLayers.Function.bind(this.onClick,this,controls[i]));OpenLayers.Event.observe(controls[i].panel_div,"dblclick",OpenLayers.Function.bind(this.onDoubleClick,this,controls[i]));OpenLayers.Event.observe(controls[i].panel_div,"mousedown",OpenLayers.Function.bindAsEventListener(OpenLayers.Event.stop));}
+if(this.map){this.addControlsToMap(controls);this.redraw();}},addControlsToMap:function(controls){var control;for(var i=0,len=controls.length;i<len;i++){control=controls[i];if(control.autoActivate===true){control.autoActivate=false;this.map.addControl(control);control.autoActivate=true;}else{this.map.addControl(control);control.deactivate();}
+control.events.on({activate:this.iconOn,deactivate:this.iconOff});}},iconOn:function(){var d=this.panel_div;d.className=d.className.replace(/ItemInactive$/,"ItemActive");},iconOff:function(){var d=this.panel_div;d.className=d.className.replace(/ItemActive$/,"ItemInactive");},onClick:function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);this.activateControl(ctrl);},onDoubleClick:function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);},getControlsBy:function(property,match){var test=(typeof match.test=="function");var found=OpenLayers.Array.filter(this.controls,function(item){return item[property]==match||(test&&match.test(item[property]));});return found;},getControlsByName:function(match){return this.getControlsBy("name",match);},getControlsByClass:function(match){return this.getControlsBy("CLASS_NAME",match);},CLASS_NAME:"OpenLayers.Control.Panel"});OpenLayers.Control.ZoomIn=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomIn();},CLASS_NAME:"OpenLayers.Control.ZoomIn"});OpenLayers.Control.ZoomOut=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){this.map.zoomOut();},CLASS_NAME:"OpenLayers.Control.ZoomOut"});OpenLayers.Control.ZoomToMaxExtent=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){if(this.map){this.map.zoomToMaxExtent();}},CLASS_NAME:"OpenLayers.Control.ZoomToMaxExtent"});OpenLayers.Control.ZoomPanel=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.ZoomIn(),new OpenLayers.Control.ZoomToMaxExtent(),new OpenLayers.Control.ZoomOut()]);},CLASS_NAME:"OpenLayers.Control.ZoomPanel"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:false,initialize:function(name,url,params,options){OpenLayers.Layer.prototype.initialize.apply(this,[name,options]);this.url=url;this.params=OpenLayers.Util.extend({},params);},destroy:function(){this.url=null;this.params=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setUrl:function(newUrl){this.url=newUrl;},mergeNewParams:function(newParams){this.params=OpenLayers.Util.extend(this.params,newParams);var ret=this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});}
+return ret;},redraw:function(force){if(force){return this.mergeNewParams({"_olSalt":Math.random()});}else{return OpenLayers.Layer.prototype.redraw.apply(this,[]);}},selectUrl:function(paramString,urls){var product=1;for(var i=0,len=paramString.length;i<len;i++){product*=paramString.charCodeAt(i)*this.URL_HASH_FACTOR;product-=Math.floor(product);}
+return urls[Math.floor(product*urls.length)];},getFullRequestString:function(newParams,altUrl){var url=altUrl||this.url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(OpenLayers.Util.isArray(url)){url=this.selectUrl(paramsString,url);}
+var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}}
+paramsString=OpenLayers.Util.getParameterString(allParams);return OpenLayers.Util.urlAppend(url,paramsString);},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,grid:null,singleTile:false,ratio:1.5,buffer:0,numLoadingTiles:0,tileLoadingDelay:100,timerId:null,initialize:function(name,url,params,options){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.events.addEventType("tileloaded");this.grid=[];this._moveGriddedTiles=OpenLayers.Function.bind(this.moveGriddedTiles,this);},removeMap:function(map){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},destroy:function(){this.clearGrid();this.grid=null;this.tileSize=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments);},clearGrid:function(){if(this.grid){for(var iRow=0,len=this.grid.length;iRow<len;iRow++){var row=this.grid[iRow];for(var iCol=0,clen=row.length;iCol<clen;iCol++){var tile=row[iCol];this.removeTileMonitoringHooks(tile);tile.destroy();}}
+this.grid=[];}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();}
+obj.grid=[];return obj;},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);bounds=bounds||this.map.getExtent();if(bounds!=null){var forceReTile=!this.grid.length||zoomChanged;var tilesBounds=this.getTilesBounds();if(this.singleTile){if(forceReTile||(!dragging&&!tilesBounds.containsBounds(bounds))){this.initSingleTile(bounds);}}else{if(forceReTile||!tilesBounds.containsBounds(bounds,true)){this.initGriddedTiles(bounds);}else{this.scheduleMoveGriddedTiles();}}}},moveByPx:function(dx,dy){if(!this.singleTile){this.scheduleMoveGriddedTiles();}},scheduleMoveGriddedTiles:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);}
+this.timerId=window.setTimeout(this._moveGriddedTiles,this.tileLoadingDelay);},setTileSize:function(size){if(this.singleTile){size=this.map.getSize();size.h=parseInt(size.h*this.ratio);size.w=parseInt(size.w*this.ratio);}
+OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[size]);},getGridBounds:function(){var msg="The getGridBounds() function is deprecated. It will be "+"removed in 3.0. Please use getTilesBounds() instead.";OpenLayers.Console.warn(msg);return this.getTilesBounds();},getTilesBounds:function(){var bounds=null;if(this.grid.length){var bottom=this.grid.length-1;var bottomLeftTile=this.grid[bottom][0];var right=this.grid[0].length-1;var topRightTile=this.grid[0][right];bounds=new OpenLayers.Bounds(bottomLeftTile.bounds.left,bottomLeftTile.bounds.bottom,topRightTile.bounds.right,topRightTile.bounds.top);}
+return bounds;},initSingleTile:function(bounds){var center=bounds.getCenterLonLat();var tileWidth=bounds.getWidth()*this.ratio;var tileHeight=bounds.getHeight()*this.ratio;var tileBounds=new OpenLayers.Bounds(center.lon-(tileWidth/2),center.lat-(tileHeight/2),center.lon+(tileWidth/2),center.lat+(tileHeight/2));var ul=new OpenLayers.LonLat(tileBounds.left,tileBounds.top);var px=this.map.getLayerPxFromLonLat(ul);if(!this.grid.length){this.grid[0]=[];}
+var tile=this.grid[0][0];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);tile.draw();this.grid[0][0]=tile;}else{tile.moveTo(tileBounds,px);}
+this.removeExcessTiles(1,1);},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-origin.lon;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=origin.lon+tilecol*tilelon;var offsetlat=bounds.top-(origin.lat+tilelat);var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-tilerowremain*this.tileSize.h;var tileoffsetlat=origin.lat+tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},getTileOrigin:function(){var origin=this.tileOrigin;if(!origin){var extent=this.getMaxExtent();var edges=({"tl":["left","top"],"tr":["right","top"],"bl":["left","bottom"],"br":["right","bottom"]})[this.tileOriginCorner];origin=new OpenLayers.LonLat(extent[edges[0]],extent[edges[1]]);}
+return origin;},initGriddedTiles:function(bounds){var viewSize=this.map.getSize();var minRows=Math.ceil(viewSize.h/this.tileSize.h)+
+Math.max(1,2*this.buffer);var minCols=Math.ceil(viewSize.w/this.tileSize.w)+
+Math.max(1,2*this.buffer);var origin=this.getTileOrigin();var resolution=this.map.getResolution();var tileLayout=this.calculateGridLayout(bounds,origin,resolution);var tileoffsetx=Math.round(tileLayout.tileoffsetx);var tileoffsety=Math.round(tileLayout.tileoffsety);var tileoffsetlon=tileLayout.tileoffsetlon;var tileoffsetlat=tileLayout.tileoffsetlat;var tilelon=tileLayout.tilelon;var tilelat=tileLayout.tilelat;this.origin=new OpenLayers.Pixel(tileoffsetx,tileoffsety);var startX=tileoffsetx;var startLon=tileoffsetlon;var rowidx=0;var layerContainerDivLeft=parseInt(this.map.layerContainerDiv.style.left);var layerContainerDivTop=parseInt(this.map.layerContainerDiv.style.top);do{var row=this.grid[rowidx++];if(!row){row=[];this.grid.push(row);}
+tileoffsetlon=startLon;tileoffsetx=startX;var colidx=0;do{var tileBounds=new OpenLayers.Bounds(tileoffsetlon,tileoffsetlat,tileoffsetlon+tilelon,tileoffsetlat+tilelat);var x=tileoffsetx;x-=layerContainerDivLeft;var y=tileoffsety;y-=layerContainerDivTop;var px=new OpenLayers.Pixel(x,y);var tile=row[colidx++];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);row.push(tile);}else{tile.moveTo(tileBounds,px,false);}
+tileoffsetlon+=tilelon;tileoffsetx+=this.tileSize.w;}while((tileoffsetlon<=bounds.right+tilelon*this.buffer)||colidx<minCols);tileoffsetlat-=tilelat;tileoffsety+=this.tileSize.h;}while((tileoffsetlat>=bounds.bottom-tilelat*this.buffer)||rowidx<minRows);this.removeExcessTiles(rowidx,colidx);this.spiralTileLoad();},getMaxExtent:function(){return this.maxExtent;},spiralTileLoad:function(){var tileQueue=[];var directions=["right","down","left","up"];var iRow=0;var iCell=-1;var direction=OpenLayers.Util.indexOf(directions,"right");var directionsTried=0;while(directionsTried<directions.length){var testRow=iRow;var testCell=iCell;switch(directions[direction]){case"right":testCell++;break;case"down":testRow++;break;case"left":testCell--;break;case"up":testRow--;break;}
+var tile=null;if((testRow<this.grid.length)&&(testRow>=0)&&(testCell<this.grid[0].length)&&(testCell>=0)){tile=this.grid[testRow][testCell];}
+if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}}
+for(var i=0,len=tileQueue.length;i<len;i++){var tile=tileQueue[i];tile.draw();tile.queued=false;}},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize,this.tileOptions);},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){if(this.numLoadingTiles==0){this.events.triggerEvent("loadstart");}
+this.numLoadingTiles++;};tile.events.register("loadstart",this,tile.onLoadStart);tile.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded");if(this.numLoadingTiles==0){this.events.triggerEvent("loadend");}};tile.events.register("loadend",this,tile.onLoadEnd);tile.events.register("unload",this,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:this});},moveGriddedTiles:function(){var shifted=true;var buffer=this.buffer||1;var tlLayer=this.grid[0][0].position;var offsetX=parseInt(this.map.layerContainerDiv.style.left);var offsetY=parseInt(this.map.layerContainerDiv.style.top);var tlViewPort=tlLayer.add(offsetX,offsetY);if(tlViewPort.x>-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{shifted=false;}
+if(shifted){this.timerId=window.setTimeout(this._moveGriddedTiles,0);}},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0,len=modelRow.length;i<len;i++){var modelTile=modelRow[i];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.bottom=bounds.bottom+deltaLat;bounds.top=bounds.top+deltaLat;position.y=position.y+deltaY;row[i].moveTo(bounds,position);}
+if(prepend){grid.unshift(row);}else{grid.push(row);}},shiftColumn:function(prepend){var deltaX=(prepend)?-this.tileSize.w:this.tileSize.w;var resolution=this.map.getResolution();var deltaLon=resolution*deltaX;for(var i=0,len=this.grid.length;i<len;i++){var row=this.grid[i];var modelTileIndex=(prepend)?0:(row.length-1);var modelTile=row[modelTileIndex];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.left=bounds.left+deltaLon;bounds.right=bounds.right+deltaLon;position.x=position.x+deltaX;var tile=prepend?this.grid[i].pop():this.grid[i].shift();tile.moveTo(bounds,position);if(prepend){row.unshift(tile);}else{row.push(tile);}}},removeExcessTiles:function(rows,columns){while(this.grid.length>rows){var row=this.grid.pop();for(var i=0,l=row.length;i<l;i++){var tile=row[i];this.removeTileMonitoringHooks(tile);tile.destroy();}}
+while(this.grid[0].length>columns){for(var i=0,l=this.grid.length;i<l;i++){var row=this.grid[i];var tile=row.pop();this.removeTileMonitoringHooks(tile);tile.destroy();}}},onMapResize:function(){if(this.singleTile){this.clearGrid();this.setTileSize();}},getTileBounds:function(viewPortPx){var maxExtent=this.maxExtent;var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=maxExtent.left+(tileMapWidth*Math.floor((mapPoint.lon-
+maxExtent.left)/tileMapWidth));var tileBottom=maxExtent.bottom+(tileMapHeight*Math.floor((mapPoint.lat-
+maxExtent.bottom)/tileMapHeight));return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Tile=OpenLayers.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,initialize:function(layer,position,bounds,url,size,options){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;if(size){this.size=size.clone();}
+this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);OpenLayers.Util.extend(this,options);},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload");}},destroy:function(){this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile(this.layer,this.position,this.bounds,this.url,this.size);}
+OpenLayers.Util.applyDefaults(obj,this);return obj;},draw:function(){var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));this.shouldDraw=(withinMaxExtent||this.layer.displayOutsideMaxExtent);this.clear();return this.shouldDraw;},moveTo:function(bounds,position,redraw){if(redraw==null){redraw=true;}
+this.bounds=bounds.clone();this.position=position.clone();if(redraw){this.draw();}},clear:function(){},getBoundsFromBaseLayer:function(position){var msg=OpenLayers.i18n('reprojectDeprecated',{'layerName':this.layer.name});OpenLayers.Console.warn(msg);var topLeft=this.layer.map.getLonLatFromLayerPx(position);var bottomRightPx=position.clone();bottomRightPx.x+=this.size.w;bottomRightPx.y+=this.size.h;var bottomRight=this.layer.map.getLonLatFromLayerPx(bottomRightPx);if(topLeft.lon>bottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}}
+var bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,isBackBuffer:false,isFirstDraw:true,backBufferTile:null,maxGetUrlLength:null,initialize:function(layer,position,bounds,url,size,options){OpenLayers.Tile.prototype.initialize.apply(this,arguments);if(this.maxGetUrlLength!=null){OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame);}
+this.url=url;this.frame=document.createElement('div');this.frame.style.overflow='hidden';this.frame.style.position='absolute';this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();},destroy:function(){if(this.imgDiv!=null){this.removeImgDiv();}
+this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)){this.layer.div.removeChild(this.frame);}
+this.frame=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null;}
+this.layer.events.unregister("loadend",this,this.resetBackBuffer);OpenLayers.Tile.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size);}
+obj=OpenLayers.Tile.prototype.clone.apply(this,[obj]);obj.imgDiv=null;return obj;},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position);}
+var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if((OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1)||this.layer.singleTile){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);}
+this.startTransition();}else{if(this.backBufferTile){this.backBufferTile.clear();}}}else{if(drawTile&&this.isFirstDraw){this.events.register('loadend',this,this.showTile);this.isFirstDraw=false;}}
+if(!drawTile){return false;}
+if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");}
+return this.renderTile();},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));if(withinMaxExtent){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.getImageSize(this.bounds)||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();}
+this.backBufferTile.hide();}},renderTile:function(){if(this.layer.async){this.initImgDiv();this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{this.url=this.layer.getURL(this.bounds);this.initImgDiv();this.positionImage();}
+return true;},positionImage:function(){if(this.layer===null){return;}
+OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){if(this.imgDiv==null){var offset=this.layer.imageOffset;var size=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);}
+if(OpenLayers.Util.isArray(this.layer.url)){this.imgDiv.urls=this.layer.url.slice();}
+this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);}
+this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));}
+var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));}
+this.imgDiv.viewRequestID=this.layer.map.viewRequestID;},removeImgDiv:function(){OpenLayers.Event.stopObservingElement(this.imgDiv);if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;}
+this.imgDiv.urls=null;var child=this.imgDiv.firstChild;if(child){OpenLayers.Event.stopObservingElement(child);this.imgDiv.removeChild(child);delete child;}else{this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;}
+var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();}
+if(ratio!=1){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);}
+OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}}},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(OpenLayers.IS_GECKO===true){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.BROWSER_NAME=="safari"||OpenLayers.BROWSER_NAME=="opera");OpenLayers.Format.ArcXML=OpenLayers.Class(OpenLayers.Format.XML,{fontStyleKeys:['antialiasing','blockout','font','fontcolor','fontsize','fontstyle','glowing','interval','outline','printmode','shadow','transparency'],request:null,response:null,initialize:function(options){this.request=new OpenLayers.Format.ArcXML.Request();this.response=new OpenLayers.Format.ArcXML.Response();if(options){if(options.requesttype=="feature"){this.request.get_image=null;var qry=this.request.get_feature.query;this.addCoordSys(qry.featurecoordsys,options.featureCoordSys);this.addCoordSys(qry.filtercoordsys,options.filterCoordSys);if(options.polygon){qry.isspatial=true;qry.spatialfilter.polygon=options.polygon;}else if(options.envelope){qry.isspatial=true;qry.spatialfilter.envelope={minx:0,miny:0,maxx:0,maxy:0};this.parseEnvelope(qry.spatialfilter.envelope,options.envelope);}}else if(options.requesttype=="image"){this.request.get_feature=null;var props=this.request.get_image.properties;this.parseEnvelope(props.envelope,options.envelope);this.addLayers(props.layerlist,options.layers);this.addImageSize(props.imagesize,options.tileSize);this.addCoordSys(props.featurecoordsys,options.featureCoordSys);this.addCoordSys(props.filtercoordsys,options.filterCoordSys);}else{this.request=null;}}
+OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},parseEnvelope:function(env,arr){if(arr&&arr.length==4){env.minx=arr[0];env.miny=arr[1];env.maxx=arr[2];env.maxy=arr[3];}},addLayers:function(ll,lyrs){for(var lind=0,len=lyrs.length;lind<len;lind++){ll.push(lyrs[lind]);}},addImageSize:function(imsize,olsize){if(olsize!==null){imsize.width=olsize.w;imsize.height=olsize.h;imsize.printwidth=olsize.w;imsize.printheight=olsize.h;}},addCoordSys:function(featOrFilt,fsys){if(typeof fsys=="string"){featOrFilt.id=parseInt(fsys);featOrFilt.string=fsys;}
+else if(typeof fsys=="object"&&fsys.proj!==null){featOrFilt.id=fsys.proj.srsProjNumber;featOrFilt.string=fsys.proj.srsCode;}else{featOrFilt=fsys;}},iserror:function(data){var ret=null;if(!data){ret=(this.response.error!=='');}else{data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);var errorNodes=data.documentElement.getElementsByTagName("ERROR");ret=(errorNodes!==null&&errorNodes.length>0);}
+return ret;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var arcNode=null;if(data&&data.documentElement){if(data.documentElement.nodeName=="ARCXML"){arcNode=data.documentElement;}else{arcNode=data.documentElement.getElementsByTagName("ARCXML")[0];}}
+if(!arcNode||arcNode.firstChild.nodeName==='parsererror'){var error,source;try{error=data.firstChild.nodeValue;source=data.firstChild.childNodes[1].firstChild.nodeValue;}catch(err){}
+throw{message:"Error parsing the ArcXML request",error:error,source:source};}
+var response=this.parseResponse(arcNode);return response;},write:function(request){if(!request){request=this.request;}
+var root=this.createElementNS("","ARCXML");root.setAttribute("version","1.1");var reqElem=this.createElementNS("","REQUEST");if(request.get_image!=null){var getElem=this.createElementNS("","GET_IMAGE");reqElem.appendChild(getElem);var propElem=this.createElementNS("","PROPERTIES");getElem.appendChild(propElem);var props=request.get_image.properties;if(props.featurecoordsys!=null){var feat=this.createElementNS("","FEATURECOORDSYS");propElem.appendChild(feat);if(props.featurecoordsys.id===0){feat.setAttribute("string",props.featurecoordsys['string']);}
+else{feat.setAttribute("id",props.featurecoordsys.id);}}
+if(props.filtercoordsys!=null){var filt=this.createElementNS("","FILTERCOORDSYS");propElem.appendChild(filt);if(props.filtercoordsys.id===0){filt.setAttribute("string",props.filtercoordsys.string);}
+else{filt.setAttribute("id",props.filtercoordsys.id);}}
+if(props.envelope!=null){var env=this.createElementNS("","ENVELOPE");propElem.appendChild(env);env.setAttribute("minx",props.envelope.minx);env.setAttribute("miny",props.envelope.miny);env.setAttribute("maxx",props.envelope.maxx);env.setAttribute("maxy",props.envelope.maxy);}
+var imagesz=this.createElementNS("","IMAGESIZE");propElem.appendChild(imagesz);imagesz.setAttribute("height",props.imagesize.height);imagesz.setAttribute("width",props.imagesize.width);if(props.imagesize.height!=props.imagesize.printheight||props.imagesize.width!=props.imagesize.printwidth){imagesz.setAttribute("printheight",props.imagesize.printheight);imagesz.setArrtibute("printwidth",props.imagesize.printwidth);}
+if(props.background!=null){var backgrnd=this.createElementNS("","BACKGROUND");propElem.appendChild(backgrnd);backgrnd.setAttribute("color",props.background.color.r+","+
+props.background.color.g+","+
+props.background.color.b);if(props.background.transcolor!==null){backgrnd.setAttribute("transcolor",props.background.transcolor.r+","+
+props.background.transcolor.g+","+
+props.background.transcolor.b);}}
+if(props.layerlist!=null&&props.layerlist.length>0){var layerlst=this.createElementNS("","LAYERLIST");propElem.appendChild(layerlst);for(var ld=0;ld<props.layerlist.length;ld++){var ldef=this.createElementNS("","LAYERDEF");layerlst.appendChild(ldef);ldef.setAttribute("id",props.layerlist[ld].id);ldef.setAttribute("visible",props.layerlist[ld].visible);if(typeof props.layerlist[ld].query=="object"){var query=props.layerlist[ld].query;if(query.where.length<0){continue;}
+var queryElem=null;if(typeof query.spatialfilter=="boolean"&&query.spatialfilter){queryElem=this.createElementNS("","SPATIALQUERY");}
+else{queryElem=this.createElementNS("","QUERY");}
+queryElem.setAttribute("where",query.where);if(typeof query.accuracy=="number"&&query.accuracy>0){queryElem.setAttribute("accuracy",query.accuracy);}
+if(typeof query.featurelimit=="number"&&query.featurelimit<2000){queryElem.setAttribute("featurelimit",query.featurelimit);}
+if(typeof query.subfields=="string"&&query.subfields!="#ALL#"){queryElem.setAttribute("subfields",query.subfields);}
+if(typeof query.joinexpression=="string"&&query.joinexpression.length>0){queryElem.setAttribute("joinexpression",query.joinexpression);}
+if(typeof query.jointables=="string"&&query.jointables.length>0){queryElem.setAttribute("jointables",query.jointables);}
+ldef.appendChild(queryElem);}
+if(typeof props.layerlist[ld].renderer=="object"){this.addRenderer(ldef,props.layerlist[ld].renderer);}}}}else if(request.get_feature!=null){var getElem=this.createElementNS("","GET_FEATURES");getElem.setAttribute("outputmode","newxml");getElem.setAttribute("checkesc","true");if(request.get_feature.geometry){getElem.setAttribute("geometry",request.get_feature.geometry);}
+else{getElem.setAttribute("geometry","false");}
+if(request.get_feature.compact){getElem.setAttribute("compact",request.get_feature.compact);}
+if(request.get_feature.featurelimit=="number"){getElem.setAttribute("featurelimit",request.get_feature.featurelimit);}
+getElem.setAttribute("globalenvelope","true");reqElem.appendChild(getElem);if(request.get_feature.layer!=null&&request.get_feature.layer.length>0){var lyrElem=this.createElementNS("","LAYER");lyrElem.setAttribute("id",request.get_feature.layer);getElem.appendChild(lyrElem);}
+var fquery=request.get_feature.query;if(fquery!=null){var qElem=null;if(fquery.isspatial){qElem=this.createElementNS("","SPATIALQUERY");}else{qElem=this.createElementNS("","QUERY");}
+getElem.appendChild(qElem);if(typeof fquery.accuracy=="number"){qElem.setAttribute("accuracy",fquery.accuracy);}
+if(fquery.featurecoordsys!=null){var fcsElem1=this.createElementNS("","FEATURECOORDSYS");if(fquery.featurecoordsys.id==0){fcsElem1.setAttribute("string",fquery.featurecoordsys.string);}else{fcsElem1.setAttribute("id",fquery.featurecoordsys.id);}
+qElem.appendChild(fcsElem1);}
+if(fquery.filtercoordsys!=null){var fcsElem2=this.createElementNS("","FILTERCOORDSYS");if(fquery.filtercoordsys.id===0){fcsElem2.setAttribute("string",fquery.filtercoordsys.string);}else{fcsElem2.setAttribute("id",fquery.filtercoordsys.id);}
+qElem.appendChild(fcsElem2);}
+if(fquery.buffer>0){var bufElem=this.createElementNS("","BUFFER");bufElem.setAttribute("distance",fquery.buffer);qElem.appendChild(bufElem);}
+if(fquery.isspatial){var spfElem=this.createElementNS("","SPATIALFILTER");spfElem.setAttribute("relation",fquery.spatialfilter.relation);qElem.appendChild(spfElem);if(fquery.spatialfilter.envelope){var envElem=this.createElementNS("","ENVELOPE");envElem.setAttribute("minx",fquery.spatialfilter.envelope.minx);envElem.setAttribute("miny",fquery.spatialfilter.envelope.miny);envElem.setAttribute("maxx",fquery.spatialfilter.envelope.maxx);envElem.setAttribute("maxy",fquery.spatialfilter.envelope.maxy);spfElem.appendChild(envElem);}else if(typeof fquery.spatialfilter.polygon=="object"){spfElem.appendChild(this.writePolygonGeometry(fquery.spatialfilter.polygon));}}
+if(fquery.where!=null&&fquery.where.length>0){qElem.setAttribute("where",fquery.where);}}}
+root.appendChild(reqElem);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},addGroupRenderer:function(ldef,toprenderer){var topRelem=this.createElementNS("","GROUPRENDERER");ldef.appendChild(topRelem);for(var rind=0;rind<toprenderer.length;rind++){var renderer=toprenderer[rind];this.addRenderer(topRelem,renderer);}},addRenderer:function(topRelem,renderer){if(OpenLayers.Util.isArray(renderer)){this.addGroupRenderer(topRelem,renderer);}else{var renderElem=this.createElementNS("",renderer.type.toUpperCase()+"RENDERER");topRelem.appendChild(renderElem);if(renderElem.tagName=="VALUEMAPRENDERER"){this.addValueMapRenderer(renderElem,renderer);}else if(renderElem.tagName=="VALUEMAPLABELRENDERER"){this.addValueMapLabelRenderer(renderElem,renderer);}else if(renderElem.tagName=="SIMPLELABELRENDERER"){this.addSimpleLabelRenderer(renderElem,renderer);}else if(renderElem.tagName=="SCALEDEPENDENTRENDERER"){this.addScaleDependentRenderer(renderElem,renderer);}}},addScaleDependentRenderer:function(renderElem,renderer){if(typeof renderer.lower=="string"||typeof renderer.lower=="number"){renderElem.setAttribute("lower",renderer.lower);}
+if(typeof renderer.upper=="string"||typeof renderer.upper=="number"){renderElem.setAttribute("upper",renderer.upper);}
+this.addRenderer(renderElem,renderer.renderer);},addValueMapLabelRenderer:function(renderElem,renderer){renderElem.setAttribute("lookupfield",renderer.lookupfield);renderElem.setAttribute("labelfield",renderer.labelfield);if(typeof renderer.exacts=="object"){for(var ext=0,extlen=renderer.exacts.length;ext<extlen;ext++){var exact=renderer.exacts[ext];var eelem=this.createElementNS("","EXACT");if(typeof exact.value=="string"){eelem.setAttribute("value",exact.value);}
+if(typeof exact.label=="string"){eelem.setAttribute("label",exact.label);}
+if(typeof exact.method=="string"){eelem.setAttribute("method",exact.method);}
+renderElem.appendChild(eelem);if(typeof exact.symbol=="object"){var selem=null;if(exact.symbol.type=="text"){selem=this.createElementNS("","TEXTSYMBOL");}
+if(selem!=null){var keys=this.fontStyleKeys;for(var i=0,len=keys.length;i<len;i++){var key=keys[i];if(exact.symbol[key]){selem.setAttribute(key,exact.symbol[key]);}}
+eelem.appendChild(selem);}}}}},addValueMapRenderer:function(renderElem,renderer){renderElem.setAttribute("lookupfield",renderer.lookupfield);if(typeof renderer.ranges=="object"){for(var rng=0,rnglen=renderer.ranges.length;rng<rnglen;rng++){var range=renderer.ranges[rng];var relem=this.createElementNS("","RANGE");relem.setAttribute("lower",range.lower);relem.setAttribute("upper",range.upper);renderElem.appendChild(relem);if(typeof range.symbol=="object"){var selem=null;if(range.symbol.type=="simplepolygon"){selem=this.createElementNS("","SIMPLEPOLYGONSYMBOL");}
+if(selem!=null){if(typeof range.symbol.boundarycolor=="string"){selem.setAttribute("boundarycolor",range.symbol.boundarycolor);}
+if(typeof range.symbol.fillcolor=="string"){selem.setAttribute("fillcolor",range.symbol.fillcolor);}
+if(typeof range.symbol.filltransparency=="number"){selem.setAttribute("filltransparency",range.symbol.filltransparency);}
+relem.appendChild(selem);}}}}else if(typeof renderer.exacts=="object"){for(var ext=0,extlen=renderer.exacts.length;ext<extlen;ext++){var exact=renderer.exacts[ext];var eelem=this.createElementNS("","EXACT");if(typeof exact.value=="string"){eelem.setAttribute("value",exact.value);}
+if(typeof exact.label=="string"){eelem.setAttribute("label",exact.label);}
+if(typeof exact.method=="string"){eelem.setAttribute("method",exact.method);}
+renderElem.appendChild(eelem);if(typeof exact.symbol=="object"){var selem=null;if(exact.symbol.type=="simplemarker"){selem=this.createElementNS("","SIMPLEMARKERSYMBOL");}
+if(selem!=null){if(typeof exact.symbol.antialiasing=="string"){selem.setAttribute("antialiasing",exact.symbol.antialiasing);}
+if(typeof exact.symbol.color=="string"){selem.setAttribute("color",exact.symbol.color);}
+if(typeof exact.symbol.outline=="string"){selem.setAttribute("outline",exact.symbol.outline);}
+if(typeof exact.symbol.overlap=="string"){selem.setAttribute("overlap",exact.symbol.overlap);}
+if(typeof exact.symbol.shadow=="string"){selem.setAttribute("shadow",exact.symbol.shadow);}
+if(typeof exact.symbol.transparency=="number"){selem.setAttribute("transparency",exact.symbol.transparency);}
+if(typeof exact.symbol.usecentroid=="string"){selem.setAttribute("usecentroid",exact.symbol.usecentroid);}
+if(typeof exact.symbol.width=="number"){selem.setAttribute("width",exact.symbol.width);}
+eelem.appendChild(selem);}}}}},addSimpleLabelRenderer:function(renderElem,renderer){renderElem.setAttribute("field",renderer.field);var keys=['featureweight','howmanylabels','labelbufferratio','labelpriorities','labelweight','linelabelposition','rotationalangles'];for(var i=0,len=keys.length;i<len;i++){var key=keys[i];if(renderer[key]){renderElem.setAttribute(key,renderer[key]);}}
+if(renderer.symbol.type=="text"){var symbol=renderer.symbol;var selem=this.createElementNS("","TEXTSYMBOL");renderElem.appendChild(selem);var keys=this.fontStyleKeys;for(var i=0,len=keys.length;i<len;i++){var key=keys[i];if(symbol[key]){selem.setAttribute(key,renderer[key]);}}}},writePolygonGeometry:function(polygon){if(!(polygon instanceof OpenLayers.Geometry.Polygon)){throw{message:'Cannot write polygon geometry to ArcXML with an '+
+polygon.CLASS_NAME+' object.',geometry:polygon};}
+var polyElem=this.createElementNS("","POLYGON");for(var ln=0,lnlen=polygon.components.length;ln<lnlen;ln++){var ring=polygon.components[ln];var ringElem=this.createElementNS("","RING");for(var rn=0,rnlen=ring.components.length;rn<rnlen;rn++){var point=ring.components[rn];var pointElem=this.createElementNS("","POINT");pointElem.setAttribute("x",point.x);pointElem.setAttribute("y",point.y);ringElem.appendChild(pointElem);}
+polyElem.appendChild(ringElem);}
+return polyElem;},parseResponse:function(data){if(typeof data=="string"){var newData=new OpenLayers.Format.XML();data=newData.read(data);}
+var response=new OpenLayers.Format.ArcXML.Response();var errorNode=data.getElementsByTagName("ERROR");if(errorNode!=null&&errorNode.length>0){response.error=this.getChildValue(errorNode,"Unknown error.");}else{var responseNode=data.getElementsByTagName("RESPONSE");if(responseNode==null||responseNode.length==0){response.error="No RESPONSE tag found in ArcXML response.";return response;}
+var rtype=responseNode[0].firstChild.nodeName;if(rtype=="#text"){rtype=responseNode[0].firstChild.nextSibling.nodeName;}
+if(rtype=="IMAGE"){var envelopeNode=data.getElementsByTagName("ENVELOPE");var outputNode=data.getElementsByTagName("OUTPUT");if(envelopeNode==null||envelopeNode.length==0){response.error="No ENVELOPE tag found in ArcXML response.";}else if(outputNode==null||outputNode.length==0){response.error="No OUTPUT tag found in ArcXML response.";}else{var envAttr=this.parseAttributes(envelopeNode[0]);var outputAttr=this.parseAttributes(outputNode[0]);if(typeof outputAttr.type=="string"){response.image={envelope:envAttr,output:{type:outputAttr.type,data:this.getChildValue(outputNode[0])}};}else{response.image={envelope:envAttr,output:outputAttr};}}}else if(rtype=="FEATURES"){var features=responseNode[0].getElementsByTagName("FEATURES");var featureCount=features[0].getElementsByTagName("FEATURECOUNT");response.features.featurecount=featureCount[0].getAttribute("count");if(response.features.featurecount>0){var envelope=features[0].getElementsByTagName("ENVELOPE");response.features.envelope=this.parseAttributes(envelope[0],typeof(0));var featureList=features[0].getElementsByTagName("FEATURE");for(var fn=0;fn<featureList.length;fn++){var feature=new OpenLayers.Feature.Vector();var fields=featureList[fn].getElementsByTagName("FIELD");for(var fdn=0;fdn<fields.length;fdn++){var fieldName=fields[fdn].getAttribute("name");var fieldValue=fields[fdn].getAttribute("value");feature.attributes[fieldName]=fieldValue;}
+var geom=featureList[fn].getElementsByTagName("POLYGON");if(geom.length>0){var ring=geom[0].getElementsByTagName("RING");var polys=[];for(var rn=0;rn<ring.length;rn++){var linearRings=[];linearRings.push(this.parsePointGeometry(ring[rn]));var holes=ring[rn].getElementsByTagName("HOLE");for(var hn=0;hn<holes.length;hn++){linearRings.push(this.parsePointGeometry(holes[hn]));}
+holes=null;polys.push(new OpenLayers.Geometry.Polygon(linearRings));linearRings=null;}
+ring=null;if(polys.length==1){feature.geometry=polys[0];}else
+{feature.geometry=new OpenLayers.Geometry.MultiPolygon(polys);}}
+response.features.feature.push(feature);}}}else{response.error="Unidentified response type.";}}
+return response;},parseAttributes:function(node,type){var attributes={};for(var attr=0;attr<node.attributes.length;attr++){if(type=="number"){attributes[node.attributes[attr].nodeName]=parseFloat(node.attributes[attr].nodeValue);}else{attributes[node.attributes[attr].nodeName]=node.attributes[attr].nodeValue;}}
+return attributes;},parsePointGeometry:function(node){var ringPoints=[];var coords=node.getElementsByTagName("COORDS");if(coords.length>0){var coordArr=this.getChildValue(coords[0]);coordArr=coordArr.split(/;/);for(var cn=0;cn<coordArr.length;cn++){var coordItems=coordArr[cn].split(/ /);ringPoints.push(new OpenLayers.Geometry.Point(parseFloat(coordItems[0]),parseFloat(coordItems[1])));}
+coords=null;}else{var point=node.getElementsByTagName("POINT");if(point.length>0){for(var pn=0;pn<point.length;pn++){ringPoints.push(new OpenLayers.Geometry.Point(parseFloat(point[pn].getAttribute("x")),parseFloat(point[pn].getAttribute("y"))));}}
+point=null;}
+return new OpenLayers.Geometry.LinearRing(ringPoints);},CLASS_NAME:"OpenLayers.Format.ArcXML"});OpenLayers.Format.ArcXML.Request=OpenLayers.Class({initialize:function(params){var defaults={get_image:{properties:{background:null,draw:true,envelope:{minx:0,miny:0,maxx:0,maxy:0},featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},imagesize:{height:0,width:0,dpi:96,printheight:0,printwidth:0,scalesymbols:false},layerlist:[],output:{baseurl:"",legendbaseurl:"",legendname:"",legendpath:"",legendurl:"",name:"",path:"",type:"jpg",url:""}}},get_feature:{layer:"",query:{isspatial:false,featurecoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},filtercoordsys:{id:0,string:"",datumtransformid:0,datumtransformstring:""},buffer:0,where:"",spatialfilter:{relation:"envelope_intersection",envelope:null}}},environment:{separators:{cs:" ",ts:";"}},layer:[],workspaces:[]};return OpenLayers.Util.extend(this,defaults);},CLASS_NAME:"OpenLayers.Format.ArcXML.Request"});OpenLayers.Format.ArcXML.Response=OpenLayers.Class({initialize:function(params){var defaults={image:{envelope:null,output:''},features:{featurecount:0,envelope:null,feature:[]},error:''};return OpenLayers.Util.extend(this,defaults);},CLASS_NAME:"OpenLayers.Format.ArcXML.Response"});OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:true,user:undefined,password:undefined,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this,null,["complete","success","failure"]),issue:function(config){var defaultConfig=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});config=OpenLayers.Util.applyDefaults(config,defaultConfig);var request=new OpenLayers.Request.XMLHttpRequest();var url=OpenLayers.Util.urlAppend(config.url,OpenLayers.Util.getParameterString(config.params||{}));var sameOrigin=!(url.indexOf("http")==0);var urlParts=!sameOrigin&&url.match(this.URL_SPLIT_REGEX);if(urlParts){var location=window.location;sameOrigin=urlParts[1]==location.protocol&&urlParts[3]==location.hostname;var uPort=urlParts[4],lPort=location.port;if(uPort!=80&&uPort!=""||lPort!="80"&&lPort!=""){sameOrigin=sameOrigin&&uPort==lPort;}}
+if(!sameOrigin){if(config.proxy){if(typeof config.proxy=="function"){url=config.proxy(url);}else{url=config.proxy+encodeURIComponent(url);}}else{OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:url});}}
+request.open(config.method,url,config.async,config.user,config.password);for(var header in config.headers){request.setRequestHeader(header,config.headers[header]);}
+var events=this.events;var self=this;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){self.runCallbacks({request:request,config:config,requestUrl:url});}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){if(request.readyState!==0){request.send(config.data);}},0);}
+return request;},runCallbacks:function(options){var request=options.request;var config=options.config;var complete=(config.scope)?OpenLayers.Function.bind(config.callback,config.scope):config.callback;var success;if(config.success){success=(config.scope)?OpenLayers.Function.bind(config.success,config.scope):config.success;}
+var failure;if(config.failure){failure=(config.scope)?OpenLayers.Function.bind(config.failure,config.scope):config.failure;}
+if(OpenLayers.Util.createUrlObject(config.url).protocol=="file:"&&request.responseText){request.status=200;}
+complete(request);if(!request.status||(request.status>=200&&request.status<300)){this.events.triggerEvent("success",options);if(success){success(request);}}
+if(request.status&&(request.status<200||request.status>=300)){this.events.triggerEvent("failure",options);if(failure){failure(request);}}},GET:function(config){config=OpenLayers.Util.extend(config,{method:"GET"});return OpenLayers.Request.issue(config);},POST:function(config){config=OpenLayers.Util.extend(config,{method:"POST"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";}
+return OpenLayers.Request.issue(config);},PUT:function(config){config=OpenLayers.Util.extend(config,{method:"PUT"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";}
+return OpenLayers.Request.issue(config);},DELETE:function(config){config=OpenLayers.Util.extend(config,{method:"DELETE"});return OpenLayers.Request.issue(config);},HEAD:function(config){config=OpenLayers.Util.extend(config,{method:"HEAD"});return OpenLayers.Request.issue(config);},OPTIONS:function(config){config=OpenLayers.Util.extend(config,{method:"OPTIONS"});return OpenLayers.Request.issue(config);}};OpenLayers.Layer.ArcIMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{ClientVersion:"9.2",ServiceName:''},tileSize:null,featureCoordSys:"4326",filterCoordSys:"4326",layers:null,async:true,name:"ArcIMS",isBaseLayer:true,DEFAULT_OPTIONS:{tileSize:new OpenLayers.Size(512,512),featureCoordSys:"4326",filterCoordSys:"4326",layers:null,isBaseLayer:true,async:true,name:"ArcIMS"},initialize:function(name,url,options){this.tileSize=new OpenLayers.Size(512,512);this.params=OpenLayers.Util.applyDefaults({ServiceName:options.serviceName},this.DEFAULT_PARAMS);this.options=OpenLayers.Util.applyDefaults(options,this.DEFAULT_OPTIONS);OpenLayers.Layer.Grid.prototype.initialize.apply(this,[name,url,this.params,options]);if(this.transparent){if(!this.isBaseLayer){this.isBaseLayer=false;}
+if(this.format=="image/jpeg"){this.format=OpenLayers.Util.alphaHack()?"image/gif":"image/png";}}
+if(this.options.layers===null){this.options.layers=[];}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},getURL:function(bounds){var url="";bounds=this.adjustBounds(bounds);var axlReq=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:bounds.toArray(),tileSize:this.tileSize}));var req=new OpenLayers.Request.POST({url:this.getFullRequestString(),data:axlReq.write(),async:false});if(req!=null){var doc=req.responseXML;if(!doc||!doc.documentElement){doc=req.responseText;}
+var axlResp=new OpenLayers.Format.ArcXML();var arcxml=axlResp.read(doc);url=this.getUrlOrImage(arcxml.image.output);}
+return url;},getURLasync:function(bounds,scope,prop,callback){bounds=this.adjustBounds(bounds);var axlReq=new OpenLayers.Format.ArcXML(OpenLayers.Util.extend(this.options,{requesttype:"image",envelope:bounds.toArray(),tileSize:this.tileSize}));OpenLayers.Request.POST({url:this.getFullRequestString(),async:true,data:axlReq.write(),callback:function(req){var doc=req.responseXML;if(!doc||!doc.documentElement){doc=req.responseText;}
+var axlResp=new OpenLayers.Format.ArcXML();var arcxml=axlResp.read(doc);scope[prop]=this.getUrlOrImage(arcxml.image.output);callback.apply(scope);},scope:this});},getUrlOrImage:function(output){var ret="";if(output.url){ret=output.url;}else if(output.data){ret="data:image/"+output.type+";base64,"+output.data;}
+return ret;},setLayerQuery:function(id,querydef){for(var lyr=0;lyr<this.options.layers.length;lyr++){if(id==this.options.layers[lyr].id){this.options.layers[lyr].query=querydef;return;}}
+this.options.layers.push({id:id,visible:true,query:querydef});},getFeatureInfo:function(geometry,layer,options){var buffer=options.buffer||1;var callback=options.callback||function(){};var scope=options.scope||window;var requestOptions={};OpenLayers.Util.extend(requestOptions,this.options);requestOptions.requesttype="feature";if(geometry instanceof OpenLayers.LonLat){requestOptions.polygon=null;requestOptions.envelope=[geometry.lon-buffer,geometry.lat-buffer,geometry.lon+buffer,geometry.lat+buffer];}else if(geometry instanceof OpenLayers.Geometry.Polygon){requestOptions.envelope=null;requestOptions.polygon=geometry;}
+var arcxml=new OpenLayers.Format.ArcXML(requestOptions);OpenLayers.Util.extend(arcxml.request.get_feature,options);arcxml.request.get_feature.layer=layer.id;if(typeof layer.query.accuracy=="number"){arcxml.request.get_feature.query.accuracy=layer.query.accuracy;}else{var mapCenter=this.map.getCenter();var viewPx=this.map.getViewPortPxFromLonLat(mapCenter);viewPx.x++;var mapOffCenter=this.map.getLonLatFromPixel(viewPx);arcxml.request.get_feature.query.accuracy=mapOffCenter.lon-mapCenter.lon;}
+arcxml.request.get_feature.query.where=layer.query.where;arcxml.request.get_feature.query.spatialfilter.relation="area_intersection";OpenLayers.Request.POST({url:this.getFullRequestString({'CustomService':'Query'}),data:arcxml.write(),callback:function(request){var response=arcxml.parseResponse(request.responseText);if(!arcxml.iserror()){callback.call(scope,response.features);}else{callback.call(scope,null);}}});},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.ArcIMS(this.name,this.url,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},CLASS_NAME:"OpenLayers.Layer.ArcIMS"});OpenLayers.Format.OWSCommon.v1_1_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1,{namespaces:{ows:"http://www.opengis.net/ows/1.1",xlink:"http://www.w3.org/1999/xlink"},readers:{"ows":OpenLayers.Util.applyDefaults({"ExceptionReport":function(node,obj){obj.exceptionReport={version:node.getAttribute('version'),language:node.getAttribute('xml:lang'),exceptions:[]};this.readChildNodes(node,obj.exceptionReport);},"AllowedValues":function(node,parameter){parameter.allowedValues={};this.readChildNodes(node,parameter.allowedValues);},"AnyValue":function(node,parameter){parameter.anyValue=true;},"DataType":function(node,parameter){parameter.dataType=this.getChildValue(node);},"Range":function(node,allowedValues){allowedValues.range={};this.readChildNodes(node,allowedValues.range);},"MinimumValue":function(node,range){range.minValue=this.getChildValue(node);},"MaximumValue":function(node,range){range.maxValue=this.getChildValue(node);},"Identifier":function(node,obj){obj.identifier=this.getChildValue(node);},"SupportedCRS":function(node,obj){obj.supportedCRS=this.getChildValue(node);}},OpenLayers.Format.OWSCommon.v1.prototype.readers["ows"])},writers:{"ows":OpenLayers.Util.applyDefaults({"Range":function(range){var node=this.createElementNSPlus("ows:Range",{attributes:{'ows:rangeClosure':range.closure}});this.writeNode("ows:MinimumValue",range.minValue,node);this.writeNode("ows:MaximumValue",range.maxValue,node);return node;},"MinimumValue":function(minValue){var node=this.createElementNSPlus("ows:MinimumValue",{value:minValue});return node;},"MaximumValue":function(maxValue){var node=this.createElementNSPlus("ows:MaximumValue",{value:maxValue});return node;},"Value":function(value){var node=this.createElementNSPlus("ows:Value",{value:value});return node;}},OpenLayers.Format.OWSCommon.v1.prototype.writers["ows"])},CLASS_NAME:"OpenLayers.Format.OWSCommon.v1_1_0"});OpenLayers.Format.WCSGetCoverage=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wcs:"http://www.opengis.net/wcs/1.1",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},VERSION:"1.1.2",schemaLocation:"http://www.opengis.net/wcs/1.1 http://schemas.opengis.net/wcs/1.1/wcsGetCoverage.xsd",write:function(options){var node=this.writeNode("wcs:GetCoverage",options);this.setAttributeNS(node,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"wcs":{"GetCoverage":function(options){var node=this.createElementNSPlus("wcs:GetCoverage",{attributes:{version:options.version||this.VERSION,service:'WCS'}});this.writeNode("ows:Identifier",options.identifier,node);this.writeNode("wcs:DomainSubset",options.domainSubset,node);this.writeNode("wcs:Output",options.output,node);return node;},"DomainSubset":function(domainSubset){var node=this.createElementNSPlus("wcs:DomainSubset",{});this.writeNode("ows:BoundingBox",domainSubset.boundingBox,node);if(domainSubset.temporalSubset){this.writeNode("wcs:TemporalSubset",domainSubset.temporalSubset,node);}
+return node;},"TemporalSubset":function(temporalSubset){var node=this.createElementNSPlus("wcs:TemporalSubset",{});for(var i=0,len=temporalSubset.timePeriods.length;i<len;++i){this.writeNode("wcs:TimePeriod",temporalSubset.timePeriods[i],node);}
+return node;},"TimePeriod":function(timePeriod){var node=this.createElementNSPlus("wcs:TimePeriod",{});this.writeNode("wcs:BeginPosition",timePeriod.begin,node);this.writeNode("wcs:EndPosition",timePeriod.end,node);if(timePeriod.resolution){this.writeNode("wcs:TimeResolution",timePeriod.resolution,node);}
+return node;},"BeginPosition":function(begin){var node=this.createElementNSPlus("wcs:BeginPosition",{value:begin});return node;},"EndPosition":function(end){var node=this.createElementNSPlus("wcs:EndPosition",{value:end});return node;},"TimeResolution":function(resolution){var node=this.createElementNSPlus("wcs:TimeResolution",{value:resolution});return node;},"Output":function(output){var node=this.createElementNSPlus("wcs:Output",{attributes:{format:output.format,store:output.store}});if(output.gridCRS){this.writeNode("wcs:GridCRS",output.gridCRS,node);}
+return node;},"GridCRS":function(gridCRS){var node=this.createElementNSPlus("wcs:GridCRS",{});this.writeNode("wcs:GridBaseCRS",gridCRS.baseCRS,node);if(gridCRS.type){this.writeNode("wcs:GridType",gridCRS.type,node);}
+if(gridCRS.origin){this.writeNode("wcs:GridOrigin",gridCRS.origin,node);}
+this.writeNode("wcs:GridOffsets",gridCRS.offsets,node);if(gridCRS.CS){this.writeNode("wcs:GridCS",gridCRS.CS,node);}
+return node;},"GridBaseCRS":function(baseCRS){return this.createElementNSPlus("wcs:GridBaseCRS",{value:baseCRS});},"GridOrigin":function(origin){return this.createElementNSPlus("wcs:GridOrigin",{value:origin});},"GridType":function(type){return this.createElementNSPlus("wcs:GridType",{value:type});},"GridOffsets":function(offsets){return this.createElementNSPlus("wcs:GridOffsets",{value:offsets});},"GridCS":function(CS){return this.createElementNSPlus("wcs:GridCS",{value:CS});}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WCSGetCoverage"});OpenLayers.Format.WPSExecute=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",gml:"http://www.opengis.net/gml",wps:"http://www.opengis.net/wps/1.0.0",wfs:"http://www.opengis.net/wfs",ogc:"http://www.opengis.net/ogc",wcs:"http://www.opengis.net/wcs",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",schemaLocationAttr:function(options){return undefined;},write:function(options){var doc;if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");this.xmldom=doc;}else{doc=document.implementation.createDocument("","",null);}
+var node=this.writeNode("wps:Execute",options,doc);this.setAttributeNS(node,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"wps":{"Execute":function(options){var node=this.createElementNSPlus("wps:Execute",{attributes:{version:this.VERSION,service:'WPS'}});this.writeNode("ows:Identifier",options.identifier,node);this.writeNode("wps:DataInputs",options.dataInputs,node);this.writeNode("wps:ResponseForm",options.responseForm,node);return node;},"ResponseForm":function(responseForm){var node=this.createElementNSPlus("wps:ResponseForm",{});if(responseForm.rawDataOutput){this.writeNode("wps:RawDataOutput",responseForm.rawDataOutput,node);}
+if(responseForm.responseDocument){this.writeNode("wps:ResponseDocument",responseForm.responseDocument,node);}
+return node;},"ResponseDocument":function(responseDocument){var node=this.createElementNSPlus("wps:ResponseDocument",{attributes:{storeExecuteResponse:responseDocument.storeExecuteResponse,lineage:responseDocument.lineage,status:responseDocument.status}});if(responseDocument.output){this.writeNode("wps:Output",responseDocument.output,node);}
+return node;},"Output":function(output){var node=this.createElementNSPlus("wps:Output",{attributes:{asReference:output.asReference}});this.writeNode("ows:Identifier",output.identifier,node);this.writeNode("ows:Title",output.title,node);this.writeNode("ows:Abstract",output["abstract"],node);return node;},"RawDataOutput":function(rawDataOutput){var node=this.createElementNSPlus("wps:RawDataOutput",{attributes:{mimeType:rawDataOutput.mimeType}});this.writeNode("ows:Identifier",rawDataOutput.identifier,node);return node;},"DataInputs":function(dataInputs){var node=this.createElementNSPlus("wps:DataInputs",{});for(var i=0,ii=dataInputs.length;i<ii;++i){this.writeNode("wps:Input",dataInputs[i],node);}
+return node;},"Input":function(input){var node=this.createElementNSPlus("wps:Input",{});this.writeNode("ows:Identifier",input.identifier,node);if(input.title){this.writeNode("ows:Title",input.title,node);}
+if(input.data){this.writeNode("wps:Data",input.data,node);}
+if(input.reference){this.writeNode("wps:Reference",input.reference,node);}
+return node;},"Data":function(data){var node=this.createElementNSPlus("wps:Data",{});if(data.literalData){this.writeNode("wps:LiteralData",data.literalData,node);}else if(data.complexData){this.writeNode("wps:ComplexData",data.complexData,node);}
+return node;},"LiteralData":function(literalData){var node=this.createElementNSPlus("wps:LiteralData",{attributes:{uom:literalData.uom},value:literalData.value});return node;},"ComplexData":function(complexData){var node=this.createElementNSPlus("wps:ComplexData",{attributes:{mimeType:complexData.mimeType,encoding:complexData.encoding,schema:complexData.schema}});node.appendChild(this.getXMLDoc().createCDATASection(complexData.value));return node;},"Reference":function(reference){var node=this.createElementNSPlus("wps:Reference",{attributes:{mimeType:reference.mimeType,"xlink:href":reference.href,method:reference.method,encoding:reference.encoding,schema:reference.schema}});if(reference.body){this.writeNode("wps:Body",reference.body,node);}
+return node;},"Body":function(body){var node=this.createElementNSPlus("wps:Body",{});if(body.wcs){this.writeNode("wcs:GetCoverage",body.wcs,node);}
+else if(body.wfs){this.featureType=body.wfs.featureType;this.version=body.wfs.version;this.writeNode("wfs:GetFeature",body.wfs,node);}else{this.writeNode("wps:Execute",body,node);}
+return node;}},"wcs":OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,"wfs":OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows},CLASS_NAME:"OpenLayers.Format.WPSExecute"});OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.removeButtons();this.buttons=null;this.position=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+id,xy,sz,imgLocation,"absolute");btn.style.cursor="pointer";this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;if(!this.slideRatio){var slideFactorPixels=this.slideFactor;var getSlideFactor=function(){return slideFactorPixels;};}else{var slideRatio=this.slideRatio;var getSlideFactor=function(dim){return this.map.getSize()[dim]*slideRatio;};}
+btn.getSlideFactor=getSlideFactor;this.buttons.push(btn);return btn;},_removeButton:function(btn){OpenLayers.Event.stopObservingElement(btn);btn.map=null;btn.getSlideFactor=null;this.div.removeChild(btn);OpenLayers.Util.removeItem(this.buttons,btn);},removeButtons:function(){for(var i=this.buttons.length-1;i>=0;--i){this._removeButton(this.buttons[i]);}},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+switch(this.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;}
+OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Control.PanZoomBar=OpenLayers.Class(OpenLayers.Control.PanZoom,{zoomStopWidth:18,zoomStopHeight:11,slider:null,sliderEvents:null,zoombarDiv:null,divEvents:null,zoomWorldIcon:false,panIcons:true,forceFixedZoomLevel:false,mouseDragStart:null,deltaY:null,zoomStart:null,destroy:function(){this._removeZoomBar();this.map.events.un({"changebaselayer":this.redraw,scope:this});OpenLayers.Control.PanZoom.prototype.destroy.apply(this,arguments);delete this.mouseDragStart;delete this.zoomStart;},setMap:function(map){OpenLayers.Control.PanZoom.prototype.setMap.apply(this,arguments);this.map.events.register("changebaselayer",this,this.redraw);},redraw:function(){if(this.div!=null){this.removeButtons();this._removeZoomBar();}
+this.draw();},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position.clone();this.buttons=[];var sz=new OpenLayers.Size(18,18);if(this.panIcons){var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);var wposition=sz.w;if(this.zoomWorldIcon){centered=new OpenLayers.Pixel(px.x+sz.w,px.y);}
+this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);if(this.zoomWorldIcon){this._addButton("zoomworld","zoom-world-mini.png",px.add(sz.w,0),sz);wposition*=2;}
+this._addButton("panright","east-mini.png",px.add(wposition,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);centered=this._addZoomBar(centered.add(0,sz.h*4+5));this._addButton("zoomout","zoom-minus-mini.png",centered,sz);}
+else{this._addButton("zoomin","zoom-plus-mini.png",px,sz);centered=this._addZoomBar(px.add(0,sz.h));this._addButton("zoomout","zoom-minus-mini.png",centered,sz);if(this.zoomWorldIcon){centered=centered.add(0,sz.h+3);this._addButton("zoomworld","zoom-world-mini.png",centered,sz);}}
+return this.div;},_addZoomBar:function(centered){var imgLocation=OpenLayers.Util.getImagesLocation();var id=this.id+"_"+this.map.id;var zoomsToEnd=this.map.getNumZoomLevels()-1-this.map.getZoom();var slider=OpenLayers.Util.createAlphaImageDiv(id,centered.add(-1,zoomsToEnd*this.zoomStopHeight),new OpenLayers.Size(20,9),imgLocation+"slider.png","absolute");slider.style.cursor="move";this.slider=slider;this.sliderEvents=new OpenLayers.Events(this,slider,null,true,{includeXY:true});this.sliderEvents.on({"touchstart":this.zoomBarDown,"touchmove":this.zoomBarDrag,"touchend":this.zoomBarUp,"mousedown":this.zoomBarDown,"mousemove":this.zoomBarDrag,"mouseup":this.zoomBarUp,"dblclick":this.doubleClick,"click":this.doubleClick});var sz=new OpenLayers.Size();sz.h=this.zoomStopHeight*this.map.getNumZoomLevels();sz.w=this.zoomStopWidth;var div=null;if(OpenLayers.Util.alphaHack()){var id=this.id+"_"+this.map.id;div=OpenLayers.Util.createAlphaImageDiv(id,centered,new OpenLayers.Size(sz.w,this.zoomStopHeight),imgLocation+"zoombar.png","absolute",null,"crop");div.style.height=sz.h+"px";}else{div=OpenLayers.Util.createDiv('OpenLayers_Control_PanZoomBar_Zoombar'+this.map.id,centered,sz,imgLocation+"zoombar.png");}
+div.style.cursor="pointer";this.zoombarDiv=div;this.divEvents=new OpenLayers.Events(this,div,null,true,{includeXY:true});this.divEvents.on({"touchmove":this.passEventToSlider,"mousedown":this.divClick,"mousemove":this.passEventToSlider,"dblclick":this.doubleClick,"click":this.doubleClick});this.div.appendChild(div);this.startTop=parseInt(div.style.top);this.div.appendChild(slider);this.map.events.register("zoomend",this,this.moveZoomBar);centered=centered.add(0,this.zoomStopHeight*this.map.getNumZoomLevels());return centered;},_removeZoomBar:function(){this.sliderEvents.un({"touchmove":this.zoomBarDrag,"mousedown":this.zoomBarDown,"mousemove":this.zoomBarDrag,"mouseup":this.zoomBarUp,"dblclick":this.doubleClick,"click":this.doubleClick});this.sliderEvents.destroy();this.divEvents.un({"touchmove":this.passEventToSlider,"mousedown":this.divClick,"mousemove":this.passEventToSlider,"dblclick":this.doubleClick,"click":this.doubleClick});this.divEvents.destroy();this.div.removeChild(this.zoombarDiv);this.zoombarDiv=null;this.div.removeChild(this.slider);this.slider=null;this.map.events.unregister("zoomend",this,this.moveZoomBar);},passEventToSlider:function(evt){this.sliderEvents.handleBrowserEvent(evt);},divClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+var levels=evt.xy.y/this.zoomStopHeight;if(this.forceFixedZoomLevel||!this.map.fractionalZoom){levels=Math.floor(levels);}
+var zoom=(this.map.getNumZoomLevels()-1)-levels;zoom=Math.min(Math.max(zoom,0),this.map.getNumZoomLevels()-1);this.map.zoomTo(zoom);OpenLayers.Event.stop(evt);},zoomBarDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)&&!OpenLayers.Event.isSingleTouch(evt)){return;}
+this.map.events.on({"touchmove":this.passEventToSlider,"mousemove":this.passEventToSlider,"mouseup":this.passEventToSlider,scope:this});this.mouseDragStart=evt.xy.clone();this.zoomStart=evt.xy.clone();this.div.style.cursor="move";this.zoombarDiv.offsets=null;OpenLayers.Event.stop(evt);},zoomBarDrag:function(evt){if(this.mouseDragStart!=null){var deltaY=this.mouseDragStart.y-evt.xy.y;var offsets=OpenLayers.Util.pagePosition(this.zoombarDiv);if((evt.clientY-offsets[1])>0&&(evt.clientY-offsets[1])<parseInt(this.zoombarDiv.style.height)-2){var newTop=parseInt(this.slider.style.top)-deltaY;this.slider.style.top=newTop+"px";this.mouseDragStart=evt.xy.clone();}
+this.deltaY=this.zoomStart.y-evt.xy.y;OpenLayers.Event.stop(evt);}},zoomBarUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)&&evt.type!=="touchend"){return;}
+if(this.mouseDragStart){this.div.style.cursor="";this.map.events.un({"touchmove":this.passEventToSlider,"mouseup":this.passEventToSlider,"mousemove":this.passEventToSlider,scope:this});var zoomLevel=this.map.zoom;if(!this.forceFixedZoomLevel&&this.map.fractionalZoom){zoomLevel+=this.deltaY/this.zoomStopHeight;zoomLevel=Math.min(Math.max(zoomLevel,0),this.map.getNumZoomLevels()-1);}else{zoomLevel+=this.deltaY/this.zoomStopHeight;zoomLevel=Math.max(Math.round(zoomLevel),0);}
+this.map.zoomTo(zoomLevel);this.mouseDragStart=null;this.zoomStart=null;this.deltaY=0;OpenLayers.Event.stop(evt);}},moveZoomBar:function(){var newTop=((this.map.getNumZoomLevels()-1)-this.map.getZoom())*this.zoomStopHeight+this.startTop+1;this.slider.style.top=newTop+"px";},CLASS_NAME:"OpenLayers.Control.PanZoomBar"});OpenLayers.Layer.Image=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:true,url:null,extent:null,size:null,tile:null,aspectRatio:null,initialize:function(name,url,extent,size,options){this.url=url;this.extent=extent;this.maxExtent=extent;this.size=size;OpenLayers.Layer.prototype.initialize.apply(this,[name,options]);this.aspectRatio=(this.extent.getHeight()/this.size.h)/(this.extent.getWidth()/this.size.w);},destroy:function(){if(this.tile){this.removeTileMonitoringHooks(this.tile);this.tile.destroy();this.tile=null;}
+OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Image(this.name,this.url,this.extent,this.size,this.getOptions());}
+obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setMap:function(map){if(this.options.maxResolution==null){this.options.maxResolution=this.aspectRatio*this.extent.getWidth()/this.size.w;}
+OpenLayers.Layer.prototype.setMap.apply(this,arguments);},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var firstRendering=(this.tile==null);if(zoomChanged||firstRendering){this.setTileSize();var ul=new OpenLayers.LonLat(this.extent.left,this.extent.top);var ulPx=this.map.getLayerPxFromLonLat(ul);if(firstRendering){this.tile=new OpenLayers.Tile.Image(this,ulPx,this.extent,null,this.tileSize);this.addTileMonitoringHooks(this.tile);}else{this.tile.size=this.tileSize.clone();this.tile.position=ulPx.clone();}
+this.tile.draw();}},setTileSize:function(){var tileWidth=this.extent.getWidth()/this.map.getResolution();var tileHeight=this.extent.getHeight()/this.map.getResolution();this.tileSize=new OpenLayers.Size(tileWidth,tileHeight);},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){this.events.triggerEvent("loadstart");};tile.events.register("loadstart",this,tile.onLoadStart);tile.onLoadEnd=function(){this.events.triggerEvent("loadend");};tile.events.register("loadend",this,tile.onLoadEnd);tile.events.register("unload",this,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:this});},setUrl:function(newUrl){this.url=newUrl;this.tile.draw();},getURL:function(bounds){return this.url;},CLASS_NAME:"OpenLayers.Layer.Image"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:true,autoDestroy:true,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;this.active=false;},destroy:function(){this.deactivate();this.layer=null;this.options=null;},setLayer:function(layer){this.layer=layer;},activate:function(){if(!this.active){this.active=true;return true;}
+return false;},deactivate:function(){if(this.active){this.active=false;return true;}
+return false;},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Save=OpenLayers.Class(OpenLayers.Strategy,{EVENT_TYPES:["start","success","fail"],events:null,auto:false,timer:null,initialize:function(options){OpenLayers.Strategy.prototype.initialize.apply(this,[options]);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);},activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){if(this.auto){if(typeof this.auto==="number"){this.timer=window.setInterval(OpenLayers.Function.bind(this.save,this),this.auto*1000);}else{this.layer.events.on({"featureadded":this.triggerSave,"afterfeaturemodified":this.triggerSave,scope:this});}}}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){if(this.auto){if(typeof this.auto==="number"){window.clearInterval(this.timer);}else{this.layer.events.un({"featureadded":this.triggerSave,"afterfeaturemodified":this.triggerSave,scope:this});}}}
+return deactivated;},triggerSave:function(event){var feature=event.feature;if(feature.state===OpenLayers.State.INSERT||feature.state===OpenLayers.State.UPDATE||feature.state===OpenLayers.State.DELETE){this.save([event.feature]);}},save:function(features){if(!features){features=this.layer.features;}
+this.events.triggerEvent("start",{features:features});var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var len=features.length;var clones=new Array(len);var orig,clone;for(var i=0;i<len;++i){orig=features[i];clone=orig.clone();clone.fid=orig.fid;clone.state=orig.state;if(orig.url){clone.url=orig.url;}
+clone._original=orig;clone.geometry.transform(local,remote);clones[i]=clone;}
+features=clones;}
+this.layer.protocol.commit(features,{callback:this.onCommit,scope:this});},onCommit:function(response){var evt={"response":response};if(response.success()){var features=response.reqFeatures;var state,feature;var destroys=[];var insertIds=response.insertIds||[];var j=0;for(var i=0,len=features.length;i<len;++i){feature=features[i];feature=feature._original||feature;state=feature.state;if(state){if(state==OpenLayers.State.DELETE){destroys.push(feature);}else if(state==OpenLayers.State.INSERT){feature.fid=insertIds[j];++j;}
+feature.state=null;}}
+if(destroys.length>0){this.layer.destroyFeatures(destroys);}
+this.events.triggerEvent("success",evt);}else{this.events.triggerEvent("fail",evt);}},CLASS_NAME:"OpenLayers.Strategy.Save"});OpenLayers.Format.GPX=OpenLayers.Class(OpenLayers.Format.XML,{extractWaypoints:true,extractTracks:true,extractRoutes:true,extractAttributes:true,initialize:function(options){this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);}
+var features=[];if(this.extractTracks){var tracks=doc.getElementsByTagName("trk");for(var i=0,len=tracks.length;i<len;i++){var attrs={};if(this.extractAttributes){attrs=this.parseAttributes(tracks[i]);}
+var segs=this.getElementsByTagNameNS(tracks[i],tracks[i].namespaceURI,"trkseg");for(var j=0,seglen=segs.length;j<seglen;j++){var track=this.extractSegment(segs[j],"trkpt");features.push(new OpenLayers.Feature.Vector(track,attrs));}}}
+if(this.extractRoutes){var routes=doc.getElementsByTagName("rte");for(var k=0,klen=routes.length;k<klen;k++){var attrs={};if(this.extractAttributes){attrs=this.parseAttributes(routes[k]);}
+var route=this.extractSegment(routes[k],"rtept");features.push(new OpenLayers.Feature.Vector(route,attrs));}}
+if(this.extractWaypoints){var waypoints=doc.getElementsByTagName("wpt");for(var l=0,len=waypoints.length;l<len;l++){var attrs={};if(this.extractAttributes){attrs=this.parseAttributes(waypoints[l]);}
+var wpt=new OpenLayers.Geometry.Point(waypoints[l].getAttribute("lon"),waypoints[l].getAttribute("lat"));features.push(new OpenLayers.Feature.Vector(wpt,attrs));}}
+if(this.internalProjection&&this.externalProjection){for(var g=0,featLength=features.length;g<featLength;g++){features[g].geometry.transform(this.externalProjection,this.internalProjection);}}
+return features;},extractSegment:function(segment,segmentType){var points=this.getElementsByTagNameNS(segment,segment.namespaceURI,segmentType);var point_features=[];for(var i=0,len=points.length;i<len;i++){point_features.push(new OpenLayers.Geometry.Point(points[i].getAttribute("lon"),points[i].getAttribute("lat")));}
+return new OpenLayers.Geometry.LineString(point_features);},parseAttributes:function(node){var attributes={};var attrNode=node.firstChild,value,name;while(attrNode){if(attrNode.nodeType==1){value=attrNode.firstChild;if(value.nodeType==3||value.nodeType==4){name=(attrNode.prefix)?attrNode.nodeName.split(":")[1]:attrNode.nodeName;if(name!="trkseg"&&name!="rtept"){attributes[name]=value.nodeValue;}}}
+attrNode=attrNode.nextSibling;}
+return attributes;},CLASS_NAME:"OpenLayers.Format.GPX"});OpenLayers.Format.WMSDescribeLayer=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",getVersion:function(root,options){var version=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);if(version=="1.1.1"||version=="1.1.0"){version="1.1";}
+return version;},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer"});OpenLayers.Format.WMSDescribeLayer.v1_1=OpenLayers.Class(OpenLayers.Format.WMSDescribeLayer,{initialize:function(options){OpenLayers.Format.WMSDescribeLayer.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var root=data.documentElement;var children=root.childNodes;var describelayer=[];var childNode,nodeName;for(var i=0;i<children.length;++i){childNode=children[i];nodeName=childNode.nodeName;if(nodeName=='LayerDescription'){var layerName=childNode.getAttribute('name');var owsType='';var owsURL='';var typeName='';if(childNode.getAttribute('owsType')){owsType=childNode.getAttribute('owsType');owsURL=childNode.getAttribute('owsURL');}else{if(childNode.getAttribute('wfs')!=''){owsType='WFS';owsURL=childNode.getAttribute('wfs');}else if(childNode.getAttribute('wcs')!=''){owsType='WCS';owsURL=childNode.getAttribute('wcs');}}
+var query=childNode.getElementsByTagName('Query');if(query.length>0){typeName=query[0].getAttribute('typeName');if(!typeName){typeName=query[0].getAttribute('typename');}}
+describelayer.push({layerName:layerName,owsType:owsType,owsURL:owsURL,typeName:typeName});}}
+return describelayer;},CLASS_NAME:"OpenLayers.Format.WMSDescribeLayer.v1_1"});OpenLayers.Format.XLS=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",stringifyOutput:true,CLASS_NAME:"OpenLayers.Format.XLS"});OpenLayers.Format.XLS.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xls:"http://www.opengis.net/xls",gml:"http://www.opengis.net/gml",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},xy:true,defaultPrefix:"xls",schemaLocation:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data,options){options=OpenLayers.Util.applyDefaults(options,this.options);var xls={};this.readChildNodes(data,xls);return xls;},readers:{"xls":{"XLS":function(node,xls){xls.version=node.getAttribute("version");this.readChildNodes(node,xls);},"Response":function(node,xls){this.readChildNodes(node,xls);},"GeocodeResponse":function(node,xls){xls.responseLists=[];this.readChildNodes(node,xls);},"GeocodeResponseList":function(node,xls){var responseList={features:[],numberOfGeocodedAddresses:parseInt(node.getAttribute("numberOfGeocodedAddresses"))};xls.responseLists.push(responseList);this.readChildNodes(node,responseList);},"GeocodedAddress":function(node,responseList){var feature=new OpenLayers.Feature.Vector();responseList.features.push(feature);this.readChildNodes(node,feature);feature.geometry=feature.components[0];},"GeocodeMatchCode":function(node,feature){feature.attributes.matchCode={accuracy:parseFloat(node.getAttribute("accuracy")),matchType:node.getAttribute("matchType")};},"Address":function(node,feature){var address={countryCode:node.getAttribute("countryCode"),addressee:node.getAttribute("addressee"),street:[],place:[]};feature.attributes.address=address;this.readChildNodes(node,address);},"freeFormAddress":function(node,address){address.freeFormAddress=this.getChildValue(node);},"StreetAddress":function(node,address){this.readChildNodes(node,address);},"Building":function(node,address){address.building={'number':node.getAttribute("number"),subdivision:node.getAttribute("subdivision"),buildingName:node.getAttribute("buildingName")};},"Street":function(node,address){address.street.push(this.getChildValue(node));},"Place":function(node,address){address.place[node.getAttribute("type")]=this.getChildValue(node);},"PostalCode":function(node,address){address.postalCode=this.getChildValue(node);}},"gml":OpenLayers.Format.GML.v3.prototype.readers.gml},write:function(request){return this.writers.xls.XLS.apply(this,[request]);},writers:{"xls":{"XLS":function(request){var root=this.createElementNSPlus("xls:XLS",{attributes:{"version":this.VERSION,"xsi:schemaLocation":this.schemaLocation}});this.writeNode("RequestHeader",request.header,root);this.writeNode("Request",request,root);return root;},"RequestHeader":function(header){return this.createElementNSPlus("xls:RequestHeader");},"Request":function(request){var node=this.createElementNSPlus("xls:Request",{attributes:{methodName:"GeocodeRequest",requestID:request.requestID||"",version:this.VERSION}});this.writeNode("GeocodeRequest",request.addresses,node);return node;},"GeocodeRequest":function(addresses){var node=this.createElementNSPlus("xls:GeocodeRequest");for(var i=0,len=addresses.length;i<len;i++){this.writeNode("Address",addresses[i],node);}
+return node;},"Address":function(address){var node=this.createElementNSPlus("xls:Address",{attributes:{countryCode:address.countryCode}});if(address.freeFormAddress){this.writeNode("freeFormAddess",address.freeFormAddress,node);}else{if(address.street){this.writeNode("StreetAddress",address,node);}
+if(address.municipality){this.writeNode("Municipality",address.municipality,node);}
+if(address.countrySubdivision){this.writeNode("CountrySubdivision",address.countrySubdivision,node);}
+if(address.postalCode){this.writeNode("PostalCode",address.postalCode,node);}}
+return node;},"freeFormAddress":function(freeFormAddress){return this.createElementNSPlus("freeFormAddress",{value:freeFormAddress});},"StreetAddress":function(address){var node=this.createElementNSPlus("xls:StreetAddress");if(address.building){this.writeNode(node,"Building",address.building);}
+var street=address.street;if(!(OpenLayers.Util.isArray(street))){street=[street];}
+for(var i=0,len=street.length;i<len;i++){this.writeNode("Street",street[i],node);}
+return node;},"Building":function(building){return this.createElementNSPlus("xls:Building",{attributes:{"number":building["number"],"subdivision":building.subdivision,"buildingName":building.buildingName}});},"Street":function(street){return this.createElementNSPlus("xls:Street",{value:street});},"Municipality":function(municipality){return this.createElementNSPlus("xls:Place",{attributes:{type:"Municipality"},value:municipality});},"CountrySubdivision":function(countrySubdivision){return this.createElementNSPlus("xls:Place",{attributes:{type:"CountrySubdivision"},value:countrySubdivision});},"PostalCode":function(postalCode){return this.createElementNSPlus("xls:PostalCode",{value:postalCode});}}},CLASS_NAME:"OpenLayers.Format.XLS.v1"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:false,size:null,resolution:null,map:null,initialize:function(containerID,options){this.container=OpenLayers.Util.getElement(containerID);OpenLayers.Util.extend(this,options);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent,resolutionChanged){this.extent=extent.clone();if(resolutionChanged){this.resolution=null;}},setSize:function(size){this.size=size.clone();this.resolution=null;},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution;},drawFeature:function(feature,style){if(style==null){style=feature.style;}
+if(feature.geometry){var bounds=feature.geometry.getBounds();if(bounds){if(!bounds.intersectsBounds(this.extent)){style={display:"none"};}
+var rendered=this.drawGeometry(feature.geometry,style,feature.id);if(style.display!="none"&&style.label&&rendered!==false){var location=feature.geometry.getCentroid();if(style.labelXOffset||style.labelYOffset){var xOffset=isNaN(style.labelXOffset)?0:style.labelXOffset;var yOffset=isNaN(style.labelYOffset)?0:style.labelYOffset;var res=this.getResolution();location.move(xOffset*res,yOffset*res);}
+this.drawText(feature.id,style,location);}else{this.removeText(feature.id);}
+return rendered;}}},drawGeometry:function(geometry,style,featureId){},drawText:function(featureId,style,location){},removeText:function(featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+for(var i=0,len=features.length;i<len;++i){var feature=features[i];this.eraseGeometry(feature.geometry,feature.id);this.removeText(feature.id);}},eraseGeometry:function(geometry,featureId){},moveRoot:function(renderer){},getRenderLayerId:function(){return this.container.id;},applyDefaultSymbolizer:function(symbolizer){var result=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);if(symbolizer.stroke===false){delete result.strokeWidth;delete result.strokeColor;}
+if(symbolizer.fill===false){delete result.fillColor;}
+OpenLayers.Util.extend(result,symbolizer);return result;},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:true,hitOverflow:0,canvas:null,features:null,pendingRedraw:false,initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};if(this.hitDetection){this.hitCanvas=document.createElement("canvas");this.hitContext=this.hitCanvas.getContext("2d");}},eraseGeometry:function(geometry,featureId){this.eraseFeatures(this.features[featureId][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setSize:function(size){this.size=size.clone();var root=this.root;root.style.width=size.w+"px";root.style.height=size.h+"px";root.width=size.w;root.height=size.h;this.resolution=null;if(this.hitDetection){var hitCanvas=this.hitCanvas;hitCanvas.style.width=size.w+"px";hitCanvas.style.height=size.h+"px";hitCanvas.width=size.w;hitCanvas.height=size.h;}},drawFeature:function(feature,style){var rendered;if(feature.geometry){style=this.applyDefaultSymbolizer(style||feature.style);var bounds=feature.geometry.getBounds();rendered=(style.display!=="none")&&!!bounds&&bounds.intersectsBounds(this.extent);if(rendered){this.features[feature.id]=[feature,style];}
+else{delete(this.features[feature.id]);}
+this.pendingRedraw=true;}
+if(this.pendingRedraw&&!this.locked){this.redraw();this.pendingRedraw=false;}
+return rendered;},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;i<geometry.components.length;i++){this.drawGeometry(geometry.components[i],style,featureId);}
+return;}
+switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":this.drawPoint(geometry,style,featureId);break;case"OpenLayers.Geometry.LineString":this.drawLineString(geometry,style,featureId);break;case"OpenLayers.Geometry.LinearRing":this.drawLinearRing(geometry,style,featureId);break;case"OpenLayers.Geometry.Polygon":this.drawPolygon(geometry,style,featureId);break;default:break;}},drawExternalGraphic:function(geometry,style,featureId){var img=new Image();if(style.graphicTitle){img.title=style.graphicTitle;}
+var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;var onLoad=function(){if(!this.features[featureId]){return;}
+var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var x=(p0+xOffset)|0;var y=(p1+yOffset)|0;var canvas=this.canvas;canvas.globalAlpha=opacity;var factor=OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);canvas.drawImage(img,x*factor,y*factor,width*factor,height*factor);if(this.hitDetection){this.setHitContextStyle("fill",featureId);this.hitContext.fillRect(x,y,width,height);}}};img.onload=OpenLayers.Function.bind(onLoad,this);img.src=style.externalGraphic;},setCanvasStyle:function(type,style){if(type==="fill"){this.canvas.globalAlpha=style['fillOpacity'];this.canvas.fillStyle=style['fillColor'];}else if(type==="stroke"){this.canvas.globalAlpha=style['strokeOpacity'];this.canvas.strokeStyle=style['strokeColor'];this.canvas.lineWidth=style['strokeWidth'];}else{this.canvas.globalAlpha=0;this.canvas.lineWidth=1;}},featureIdToHex:function(featureId){var id=Number(featureId.split("_").pop())+1;if(id>=16777216){this.hitOverflow=id-16777215;id=id%16777216+1;}
+var hex="000000"+id.toString(16);var len=hex.length;hex="#"+hex.substring(len-6,len);return hex;},setHitContextStyle:function(type,featureId,symbolizer){var hex=this.featureIdToHex(featureId);if(type=="fill"){this.hitContext.globalAlpha=1.0;this.hitContext.fillStyle=hex;}else if(type=="stroke"){this.hitContext.globalAlpha=1.0;this.hitContext.strokeStyle=hex;this.hitContext.lineWidth=symbolizer.strokeWidth+2;}else{this.hitContext.globalAlpha=0;this.hitContext.lineWidth=1;}},drawPoint:function(geometry,style,featureId){if(style.graphic!==false){if(style.externalGraphic){this.drawExternalGraphic(geometry,style,featureId);}else{var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var twoPi=Math.PI*2;var radius=style.pointRadius;if(style.fill!==false){this.setCanvasStyle("fill",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.fill();}}
+if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.stroke();}
+this.setCanvasStyle("reset");}}}}},drawLineString:function(geometry,style,featureId){style=OpenLayers.Util.applyDefaults({fill:false},style);this.drawLinearRing(geometry,style,featureId);},drawLinearRing:function(geometry,style,featureId){if(style.fill!==false){this.setCanvasStyle("fill",style);this.renderPath(this.canvas,geometry,style,featureId,"fill");if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"fill");}}
+if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.renderPath(this.canvas,geometry,style,featureId,"stroke");if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"stroke");}}
+this.setCanvasStyle("reset");},renderPath:function(context,geometry,style,featureId,type){var components=geometry.components;var len=components.length;context.beginPath();var start=this.getLocalXY(components[0]);var x=start[0];var y=start[1];if(!isNaN(x)&&!isNaN(y)){context.moveTo(start[0],start[1]);for(var i=1;i<len;++i){var pt=this.getLocalXY(components[i]);context.lineTo(pt[0],pt[1]);}
+if(type==="fill"){context.fill();}else{context.stroke();}}},drawPolygon:function(geometry,style,featureId){var components=geometry.components;var len=components.length;this.drawLinearRing(components[0],style,featureId);for(var i=1;i<len;++i){this.canvas.globalCompositeOperation="destination-out";if(this.hitDetection){this.hitContext.globalCompositeOperation="destination-out";}
+this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({stroke:false,fillOpacity:1.0},style),featureId);this.canvas.globalCompositeOperation="source-over";if(this.hitDetection){this.hitContext.globalCompositeOperation="source-over";}
+this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({fill:false},style),featureId);}},drawText:function(location,style){style=OpenLayers.Util.extend({fontColor:"#000000",labelAlign:"cm"},style);var pt=this.getLocalXY(location);this.setCanvasStyle("reset");this.canvas.fillStyle=style.fontColor;this.canvas.globalAlpha=style.fontOpacity||1.0;var fontStyle=[style.fontStyle?style.fontStyle:"normal","normal",style.fontWeight?style.fontWeight:"normal",style.fontSize?style.fontSize:"1em",style.fontFamily?style.fontFamily:"sans-serif"].join(" ");var labelRows=style.label.split('\n');var numRows=labelRows.length;if(this.canvas.fillText){this.canvas.font=fontStyle;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[1]]||"middle";var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;}
+var lineHeight=this.canvas.measureText('Mg').height||this.canvas.measureText('xx').width;pt[1]+=lineHeight*vfactor*(numRows-1);for(var i=0;i<numRows;i++){this.canvas.fillText(labelRows[i],pt[0],pt[1]+(lineHeight*i));}}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=fontStyle;var hfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[0]];if(hfactor==null){hfactor=-.5;}
+var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;}
+var lineHeight=this.canvas.mozMeasureText('xx');pt[1]+=lineHeight*(1+(vfactor*numRows));for(var i=0;i<numRows;i++){var x=pt[0]+(hfactor*this.canvas.mozMeasureText(labelRows[i]));var y=pt[1]+(i*lineHeight);this.canvas.translate(x,y);this.canvas.mozDrawText(labelRows[i]);this.canvas.translate(-x,-y);}}
+this.setCanvasStyle("reset");},getLocalXY:function(point){var resolution=this.getResolution();var extent=this.extent;var x=(point.x/resolution+(-extent.left/resolution));var y=((extent.top/resolution)-point.y/resolution);return[x,y];},clear:function(){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);this.features={};if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);}},getFeatureIdFromEvent:function(evt){var feature=null;if(this.hitDetection){if(!this.map.dragging){var xy=evt.xy;var x=xy.x|0;var y=xy.y|0;var data=this.hitContext.getImageData(x,y,1,1).data;if(data[3]===255){var id=data[2]+(256*(data[1]+(256*data[0])));if(id){feature=this.features["OpenLayers.Feature.Vector_"+(id-1+this.hitOverflow)][0];}}}}
+return feature;},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+for(var i=0;i<features.length;++i){delete this.features[features[i].id];}
+this.redraw();},redraw:function(){if(!this.locked){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);}
+var labelMap=[];var feature,style;for(var id in this.features){if(!this.features.hasOwnProperty(id)){continue;}
+feature=this.features[id][0];style=this.features[id][1];this.drawGeometry(feature.geometry,style,feature.id);if(style.label){labelMap.push([feature,style]);}}
+var item;for(var i=0,len=labelMap.length;i<len;++i){item=labelMap[i];this.drawText(item[0].geometry.getCentroid(),item[1]);}}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={"l":"left","r":"right","t":"top","b":"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={"l":0,"r":-1,"t":0,"b":-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Format.OSM=OpenLayers.Class(OpenLayers.Format.XML,{checkTags:false,interestingTagsExclude:null,areaTags:null,initialize:function(options){var layer_defaults={'interestingTagsExclude':['source','source_ref','source:ref','history','attribution','created_by'],'areaTags':['area','building','leisure','tourism','ruins','historic','landuse','military','natural','sport']};layer_defaults=OpenLayers.Util.extend(layer_defaults,options);var interesting={};for(var i=0;i<layer_defaults.interestingTagsExclude.length;i++){interesting[layer_defaults.interestingTagsExclude[i]]=true;}
+layer_defaults.interestingTagsExclude=interesting;var area={};for(var i=0;i<layer_defaults.areaTags.length;i++){area[layer_defaults.areaTags[i]]=true;}
+layer_defaults.areaTags=area;this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[layer_defaults]);},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);}
+var nodes=this.getNodes(doc);var ways=this.getWays(doc);var feat_list=new Array(ways.length);for(var i=0;i<ways.length;i++){var point_list=new Array(ways[i].nodes.length);var poly=this.isWayArea(ways[i])?1:0;for(var j=0;j<ways[i].nodes.length;j++){var node=nodes[ways[i].nodes[j]];var point=new OpenLayers.Geometry.Point(node.lon,node.lat);point.osm_id=parseInt(ways[i].nodes[j]);point_list[j]=point;node.used=true;}
+var geometry=null;if(poly){geometry=new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(point_list));}else{geometry=new OpenLayers.Geometry.LineString(point_list);}
+if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}
+var feat=new OpenLayers.Feature.Vector(geometry,ways[i].tags);feat.osm_id=parseInt(ways[i].id);feat.fid="way."+feat.osm_id;feat_list[i]=feat;}
+for(var node_id in nodes){var node=nodes[node_id];if(!node.used||this.checkTags){var tags=null;if(this.checkTags){var result=this.getTags(node.node,true);if(node.used&&!result[1]){continue;}
+tags=result[0];}else{tags=this.getTags(node.node);}
+var feat=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(node['lon'],node['lat']),tags);if(this.internalProjection&&this.externalProjection){feat.geometry.transform(this.externalProjection,this.internalProjection);}
+feat.osm_id=parseInt(node_id);feat.fid="node."+feat.osm_id;feat_list.push(feat);}
+node.node=null;}
+return feat_list;},getNodes:function(doc){var node_list=doc.getElementsByTagName("node");var nodes={};for(var i=0;i<node_list.length;i++){var node=node_list[i];var id=node.getAttribute("id");nodes[id]={'lat':node.getAttribute("lat"),'lon':node.getAttribute("lon"),'node':node};}
+return nodes;},getWays:function(doc){var way_list=doc.getElementsByTagName("way");var return_ways=[];for(var i=0;i<way_list.length;i++){var way=way_list[i];var way_object={id:way.getAttribute("id")};way_object.tags=this.getTags(way);var node_list=way.getElementsByTagName("nd");way_object.nodes=new Array(node_list.length);for(var j=0;j<node_list.length;j++){way_object.nodes[j]=node_list[j].getAttribute("ref");}
+return_ways.push(way_object);}
+return return_ways;},getTags:function(dom_node,interesting_tags){var tag_list=dom_node.getElementsByTagName("tag");var tags={};var interesting=false;for(var j=0;j<tag_list.length;j++){var key=tag_list[j].getAttribute("k");tags[key]=tag_list[j].getAttribute("v");if(interesting_tags){if(!this.interestingTagsExclude[key]){interesting=true;}}}
+return interesting_tags?[tags,interesting]:tags;},isWayArea:function(way){var poly_shaped=false;var poly_tags=false;if(way.nodes[0]==way.nodes[way.nodes.length-1]){poly_shaped=true;}
+if(this.checkTags){for(var key in way.tags){if(this.areaTags[key]){poly_tags=true;break;}}}
+return poly_shaped&&(this.checkTags?poly_tags:true);},write:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+this.osm_id=1;this.created_nodes={};var root_node=this.createElementNS(null,"osm");root_node.setAttribute("version","0.5");root_node.setAttribute("generator","OpenLayers "+OpenLayers.VERSION_NUMBER);for(var i=features.length-1;i>=0;i--){var nodes=this.createFeatureNodes(features[i]);for(var j=0;j<nodes.length;j++){root_node.appendChild(nodes[j]);}}
+return OpenLayers.Format.XML.prototype.write.apply(this,[root_node]);},createFeatureNodes:function(feature){var nodes=[];var className=feature.geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);type=type.toLowerCase();var builder=this.createXML[type];if(builder){nodes=builder.apply(this,[feature]);}
+return nodes;},createXML:{'point':function(point){var id=null;var geometry=point.geometry?point.geometry:point;if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);}
+var already_exists=false;if(point.osm_id){id=point.osm_id;if(this.created_nodes[id]){already_exists=true;}}else{id=-this.osm_id;this.osm_id++;}
+if(already_exists){node=this.created_nodes[id];}else{var node=this.createElementNS(null,"node");}
+this.created_nodes[id]=node;node.setAttribute("id",id);node.setAttribute("lon",geometry.x);node.setAttribute("lat",geometry.y);if(point.attributes){this.serializeTags(point,node);}
+this.setState(point,node);return already_exists?[]:[node];},linestring:function(feature){var id;var nodes=[];var geometry=feature.geometry;if(feature.osm_id){id=feature.osm_id;}else{id=-this.osm_id;this.osm_id++;}
+var way=this.createElementNS(null,"way");way.setAttribute("id",id);for(var i=0;i<geometry.components.length;i++){var node=this.createXML['point'].apply(this,[geometry.components[i]]);if(node.length){node=node[0];var node_ref=node.getAttribute("id");nodes.push(node);}else{node_ref=geometry.components[i].osm_id;node=this.created_nodes[node_ref];}
+this.setState(feature,node);var nd_dom=this.createElementNS(null,"nd");nd_dom.setAttribute("ref",node_ref);way.appendChild(nd_dom);}
+this.serializeTags(feature,way);nodes.push(way);return nodes;},polygon:function(feature){var attrs=OpenLayers.Util.extend({'area':'yes'},feature.attributes);var feat=new OpenLayers.Feature.Vector(feature.geometry.components[0],attrs);feat.osm_id=feature.osm_id;return this.createXML['linestring'].apply(this,[feat]);}},serializeTags:function(feature,node){for(var key in feature.attributes){var tag=this.createElementNS(null,"tag");tag.setAttribute("k",key);tag.setAttribute("v",feature.attributes[key]);node.appendChild(tag);}},setState:function(feature,node){if(feature.state){var state=null;switch(feature.state){case OpenLayers.State.UPDATE:state="modify";case OpenLayers.State.DELETE:state="delete";}
+if(state){node.setAttribute("action",state);}}},CLASS_NAME:"OpenLayers.Format.OSM"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:false,evt:null,initialize:function(control,callbacks,options){OpenLayers.Util.extend(this,options);this.control=control;this.callbacks=callbacks;var map=this.map||control.map;if(map){this.setMap(map);}
+this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},setMap:function(map){this.map=map;},checkModifiers:function(evt){if(this.keyMask==null){return true;}
+var keyModifiers=(evt.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(evt.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(evt.altKey?OpenLayers.Handler.MOD_ALT:0);return(keyModifiers==this.keyMask);},activate:function(){if(this.active){return false;}
+var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.register(events[i],this[events[i]]);}}
+this.active=true;return true;},deactivate:function(){if(!this.active){return false;}
+var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.unregister(events[i],this[events[i]]);}}
+this.active=false;return true;},callback:function(name,args){if(name&&this.callbacks[name]){this.callbacks[name].apply(this.control,args);}},register:function(name,method){this.map.events.registerPriority(name,this,method);this.map.events.registerPriority(name,this,this.setEvent);},unregister:function(name,method){this.map.events.unregister(name,this,method);this.map.events.unregister(name,this,this.setEvent);},setEvent:function(evt){this.evt=evt;return true;},destroy:function(){this.deactivate();this.control=this.map=null;},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,touch:false,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(this.documentDrag===true){var me=this;this._docMove=function(evt){me.mousemove({xy:{x:evt.clientX,y:evt.clientY},element:document});};this._docUp=function(evt){me.mouseup({xy:{x:evt.clientX,y:evt.clientY}});};}},dragstart:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&(OpenLayers.Event.isLeftClick(evt)||OpenLayers.Event.isSingleTouch(evt))){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True;}
+document.onselectstart=OpenLayers.Function.False;propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;}
+return propagate;},dragmove:function(evt){this.lastMoveEvt=evt;if(this.started&&!this.timeoutId&&(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y)){if(this.documentDrag===true&&this.documentEvents){if(evt.element===document){this.adjustXY(evt);this.setEvent(evt);}else{this.removeDocumentEvents();}}
+if(this.interval>0){this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval);}
+this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=OpenLayers.Function.False;}
+this.last=evt.xy;}
+return true;},dragend:function(evt){if(this.started){if(this.documentDrag===true&&this.documentEvents){this.adjustXY(evt);this.removeDocumentEvents();}
+var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);}
+document.onselectstart=this.oldOnselectstart;}
+return true;},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){return this.dragstart(evt);},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this});}
+return this.dragstart(evt);},mousemove:function(evt){return this.dragmove(evt);},touchmove:function(evt){return this.dragmove(evt);},removeTimeout:function(){this.timeoutId=null;if(this.dragging){this.mousemove(this.lastMoveEvt);}},mouseup:function(evt){return this.dragend(evt);},touchend:function(evt){evt.xy=this.last;return this.dragend(evt);},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){if(this.documentDrag===true){this.addDocumentEvents();}else{var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(evt);this.callback("out",[]);if(dragged){this.callback("done",[evt.xy]);}
+if(document.onselectstart){document.onselectstart=this.oldOnselectstart;}}}
+return true;},click:function(evt){return(this.start==this.last);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;activated=true;}
+return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.touch=false;this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");}
+return deactivated;},adjustXY:function(evt){var pos=OpenLayers.Util.pagePosition(this.map.viewPortDiv);evt.xy.x-=pos[0];evt.xy.y-=pos[1];},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=true;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp);},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=false;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp);},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{'click':{'in':'click','out':'clickout'},'mousemove':{'in':'over','out':'out'},'dblclick':{'in':'dblclick','out':null},'mousedown':{'in':null,'out':null},'mouseup':{'in':null,'out':null},'touchstart':{'in':'click','out':'clickout'}},feature:null,lastFeature:null,down:null,up:null,touch:false,clickTolerance:4,geometryTypes:null,stopClick:true,stopDown:true,stopUp:false,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this});}
+return OpenLayers.Event.isMultiTouch(evt)?true:this.mousedown(evt);},touchmove:function(evt){OpenLayers.Event.stop(evt);},mousedown:function(evt){this.down=evt.xy;return this.handle(evt)?!this.stopDown:true;},mouseup:function(evt){this.up=evt.xy;return this.handle(evt)?!this.stopUp:true;},click:function(evt){return this.handle(evt)?!this.stopClick:true;},mousemove:function(evt){if(!this.callbacks['over']&&!this.callbacks['out']){return true;}
+this.handle(evt);return true;},dblclick:function(evt){return!this.handle(evt);},geometryTypeMatches:function(feature){return this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1;},handle:function(evt){if(this.feature&&!this.feature.layer){this.feature=null;}
+var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick"||type=="touchstart");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature&&!this.feature.layer){this.feature=null;}
+if(this.lastFeature&&!this.lastFeature.layer){this.lastFeature=null;}
+if(this.feature){if(type==="touchstart"){OpenLayers.Event.stop(evt);}
+var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){if(this.lastFeature){this.triggerCallback(type,'out',[this.lastFeature]);}
+this.triggerCallback(type,'in',[this.feature]);}else if(!previouslyIn||click){this.triggerCallback(type,'in',[this.feature]);}
+this.lastFeature=this.feature;handled=true;}else{if(this.lastFeature&&(previouslyIn&&inNew||click)){this.triggerCallback(type,'out',[this.lastFeature]);}
+this.feature=null;}}else{if(this.lastFeature&&(previouslyIn||click)){this.triggerCallback(type,'out',[this.lastFeature]);}}
+return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&this.up&&this.down){var dpx=Math.sqrt(Math.pow(this.up.x-this.down.x,2)+
+Math.pow(this.up.y-this.down.y,2));if(dpx<=this.clickTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.moveLayerToTop();this.map.events.on({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});activated=true;}
+return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.moveLayerBack();this.feature=null;this.lastFeature=null;this.down=null;this.up=null;this.touch=false;this.map.events.un({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});deactivated=true;}
+return deactivated;},handleMapEvents:function(evt){if(evt.type=="removelayer"||evt.property=="order"){this.moveLayerToTop();}},moveLayerToTop:function(){var index=Math.max(this.map.Z_INDEX_BASE['Feature']-1,this.layer.getZIndex())+1;this.layer.setZIndex(index);},moveLayerBack:function(){var index=this.layer.getZIndex()-1;if(index>=this.map.Z_INDEX_BASE['Feature']){this.layer.setZIndex(index);}else{this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer));}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(feature,pixel){},onDrag:function(feature,pixel){},onComplete:function(feature,pixel){},onEnter:function(feature){},onLeave:function(feature){},documentDrag:false,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})};},clickFeature:function(feature){if(this.handlers.feature.touch&&!this.over&&this.overFeature(feature)){this.handlers.drag.dragstart(this.handlers.feature.evt);this.handlers.drag.stopDown=false;}},clickoutFeature:function(feature){if(this.handlers.feature.touch&&this.over){this.outFeature(feature);this.handlers.drag.stopDown=true;}},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return(this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=false;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},overFeature:function(feature){var activated=false;if(!this.handlers.drag.dragging){this.feature=feature;this.handlers.drag.activate();activated=true;this.over=true;OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over");this.onEnter(feature);}else{if(this.feature.id==feature.id){this.over=true;}else{this.over=false;}}
+return activated;},downFeature:function(pixel){this.lastPixel=pixel;this.onStart(this.feature,pixel);},moveFeature:function(pixel){var res=this.map.getResolution();this.feature.geometry.move(res*(pixel.x-this.lastPixel.x),res*(this.lastPixel.y-pixel.y));this.layer.drawFeature(this.feature);this.lastPixel=pixel;this.onDrag(this.feature,pixel);},upFeature:function(pixel){if(!this.over){this.handlers.drag.deactivate();}},doneDragging:function(pixel){this.onComplete(this.feature,pixel);},outFeature:function(feature){if(!this.handlers.drag.dragging){this.over=false;this.handlers.drag.deactivate();OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");this.onLeave(feature);this.feature=null;}else{if(this.feature.id==feature.id){this.over=false;}}},cancel:function(){this.handlers.drag.deactivate();this.over=false;},setMap:function(map){this.handlers.drag.setMap(map);this.handlers.feature.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:true,initialize:function(style,options){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),"select":new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),"temporary":new OpenLayers.Style(OpenLayers.Feature.Vector.style["temporary"]),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(style instanceof OpenLayers.Style){this.styles["default"]=style;this.styles["select"]=style;this.styles["temporary"]=style;this.styles["delete"]=style;}else if(typeof style=="object"){for(var key in style){if(style[key]instanceof OpenLayers.Style){this.styles[key]=style[key];}else if(typeof style[key]=="object"){this.styles[key]=new OpenLayers.Style(style[key]);}else{this.styles["default"]=new OpenLayers.Style(style);this.styles["select"]=new OpenLayers.Style(style);this.styles["temporary"]=new OpenLayers.Style(style);this.styles["delete"]=new OpenLayers.Style(style);break;}}}
+OpenLayers.Util.extend(this,options);},destroy:function(){for(var key in this.styles){this.styles[key].destroy();}
+this.styles=null;},createSymbolizer:function(feature,intent){if(!feature){feature=new OpenLayers.Feature.Vector();}
+if(!this.styles[intent]){intent="default";}
+feature.renderIntent=intent;var defaultSymbolizer={};if(this.extendDefault&&intent!="default"){defaultSymbolizer=this.styles["default"].createSymbolizer(feature);}
+return OpenLayers.Util.extend(defaultSymbolizer,this.styles[intent].createSymbolizer(feature));},addUniqueValueRules:function(renderIntent,property,symbolizers,context){var rules=[];for(var value in symbolizers){rules.push(new OpenLayers.Rule({symbolizer:symbolizers[value],context:context,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:property,value:value})}));}
+this.styles[renderIntent].addRules(rules);},CLASS_NAME:"OpenLayers.StyleMap"});OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer,{EVENT_TYPES:["beforefeatureadded","beforefeaturesadded","featureadded","featuresadded","beforefeatureremoved","beforefeaturesremoved","featureremoved","featuresremoved","beforefeatureselected","featureselected","featureunselected","beforefeaturemodified","featuremodified","afterfeaturemodified","vertexmodified","vertexremoved","sketchstarted","sketchmodified","sketchcomplete","refresh"],isBaseLayer:false,isFixed:false,features:null,filter:null,selectedFeatures:null,unrenderedFeatures:null,reportError:true,style:null,styleMap:null,strategies:null,protocol:null,renderers:['SVG','VML','Canvas'],renderer:null,rendererOptions:null,geometryType:null,drawn:false,initialize:function(name,options){this.EVENT_TYPES=OpenLayers.Layer.Vector.prototype.EVENT_TYPES.concat(OpenLayers.Layer.prototype.EVENT_TYPES);OpenLayers.Layer.prototype.initialize.apply(this,arguments);if(!this.renderer||!this.renderer.supported()){this.assignRenderer();}
+if(!this.renderer||!this.renderer.supported()){this.renderer=null;this.displayError();}
+if(!this.styleMap){this.styleMap=new OpenLayers.StyleMap();}
+this.features=[];this.selectedFeatures=[];this.unrenderedFeatures={};if(this.strategies){for(var i=0,len=this.strategies.length;i<len;i++){this.strategies[i].setLayer(this);}}},destroy:function(){if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoDestroy){strategy.destroy();}}
+this.strategies=null;}
+if(this.protocol){if(this.protocol.autoDestroy){this.protocol.destroy();}
+this.protocol=null;}
+this.destroyFeatures();this.features=null;this.selectedFeatures=null;this.unrenderedFeatures=null;if(this.renderer){this.renderer.destroy();}
+this.renderer=null;this.geometryType=null;this.drawn=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Vector(this.name,this.getOptions());}
+obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);var features=this.features;var len=features.length;var clonedFeatures=new Array(len);for(var i=0;i<len;++i){clonedFeatures[i]=features[i].clone();}
+obj.features=clonedFeatures;return obj;},refresh:function(obj){if(this.calculateInRange()&&this.visibility){this.events.triggerEvent("refresh",obj);}},assignRenderer:function(){for(var i=0,len=this.renderers.length;i<len;i++){var rendererClass=this.renderers[i];var renderer=(typeof rendererClass=="function")?rendererClass:OpenLayers.Renderer[rendererClass];if(renderer&&renderer.prototype.supported()){this.renderer=new renderer(this.div,this.rendererOptions);break;}}},displayError:function(){if(this.reportError){OpenLayers.Console.userError(OpenLayers.i18n("browserNotSupported",{'renderers':this.renderers.join("\n")}));}},setMap:function(map){OpenLayers.Layer.prototype.setMap.apply(this,arguments);if(!this.renderer){this.map.removeLayer(this);}else{this.renderer.map=this.map;this.renderer.setSize(this.map.getSize());}},afterAdd:function(){if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoActivate){strategy.activate();}}}},removeMap:function(map){this.drawn=false;if(this.strategies){var strategy,i,len;for(i=0,len=this.strategies.length;i<len;i++){strategy=this.strategies[i];if(strategy.autoActivate){strategy.deactivate();}}}},onMapResize:function(){OpenLayers.Layer.prototype.onMapResize.apply(this,arguments);this.renderer.setSize(this.map.getSize());},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);var ng=(OpenLayers.Renderer.NG&&this.renderer instanceof OpenLayers.Renderer.NG);if(ng){dragging||this.renderer.updateDimensions(zoomChanged);}else{var coordSysUnchanged=true;if(!dragging){this.renderer.root.style.visibility="hidden";this.div.style.left=-parseInt(this.map.layerContainerDiv.style.left)+"px";this.div.style.top=-parseInt(this.map.layerContainerDiv.style.top)+"px";var extent=this.map.getExtent();coordSysUnchanged=this.renderer.setExtent(extent,zoomChanged);this.renderer.root.style.visibility="visible";if(OpenLayers.IS_GECKO===true){this.div.scrollLeft=this.div.scrollLeft;}
+if(!zoomChanged&&coordSysUnchanged){for(var i in this.unrenderedFeatures){var feature=this.unrenderedFeatures[i];this.drawFeature(feature);}}}}
+if(!this.drawn||(!ng&&(zoomChanged||!coordSysUnchanged))){this.drawn=true;var feature;for(var i=0,len=this.features.length;i<len;i++){this.renderer.locked=(i!==(len-1));feature=this.features[i];this.drawFeature(feature);}}},redraw:function(){if(OpenLayers.Renderer.NG&&this.renderer instanceof OpenLayers.Renderer.NG){this.drawn=false;}
+return OpenLayers.Layer.prototype.redraw.apply(this,arguments);},display:function(display){OpenLayers.Layer.prototype.display.apply(this,arguments);var currentDisplay=this.div.style.display;if(currentDisplay!=this.renderer.root.style.display){this.renderer.root.style.display=currentDisplay;}},addFeatures:function(features,options){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+var notify=!options||!options.silent;if(notify){var event={features:features};var ret=this.events.triggerEvent("beforefeaturesadded",event);if(ret===false){return;}
+features=event.features;}
+var featuresAdded=[];for(var i=0,len=features.length;i<len;i++){if(i!=(features.length-1)){this.renderer.locked=true;}else{this.renderer.locked=false;}
+var feature=features[i];if(this.geometryType&&!(feature.geometry instanceof this.geometryType)){var throwStr=OpenLayers.i18n('componentShouldBe',{'geomType':this.geometryType.prototype.CLASS_NAME});throw throwStr;}
+feature.layer=this;if(!feature.style&&this.style){feature.style=OpenLayers.Util.extend({},this.style);}
+if(notify){if(this.events.triggerEvent("beforefeatureadded",{feature:feature})===false){continue;}
+this.preFeatureInsert(feature);}
+featuresAdded.push(feature);this.features.push(feature);this.drawFeature(feature);if(notify){this.events.triggerEvent("featureadded",{feature:feature});this.onFeatureInsert(feature);}}
+if(notify){this.events.triggerEvent("featuresadded",{features:featuresAdded});}},removeFeatures:function(features,options){if(!features||features.length===0){return;}
+if(features===this.features){return this.removeAllFeatures(options);}
+if(!(OpenLayers.Util.isArray(features))){features=[features];}
+if(features===this.selectedFeatures){features=features.slice();}
+var notify=!options||!options.silent;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});}
+for(var i=features.length-1;i>=0;i--){if(i!=0&&features[i-1].geometry){this.renderer.locked=true;}else{this.renderer.locked=false;}
+var feature=features[i];delete this.unrenderedFeatures[feature.id];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});}
+this.features=OpenLayers.Util.removeItem(this.features,feature);feature.layer=null;if(feature.geometry){this.renderer.eraseFeatures(feature);}
+if(OpenLayers.Util.indexOf(this.selectedFeatures,feature)!=-1){OpenLayers.Util.removeItem(this.selectedFeatures,feature);}
+if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}}
+if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},removeAllFeatures:function(options){var notify=!options||!options.silent;var features=this.features;if(notify){this.events.triggerEvent("beforefeaturesremoved",{features:features});}
+var feature;for(var i=features.length-1;i>=0;i--){feature=features[i];if(notify){this.events.triggerEvent("beforefeatureremoved",{feature:feature});}
+feature.layer=null;if(notify){this.events.triggerEvent("featureremoved",{feature:feature});}}
+this.renderer.clear();this.features=[];this.unrenderedFeatures={};this.selectedFeatures=[];if(notify){this.events.triggerEvent("featuresremoved",{features:features});}},destroyFeatures:function(features,options){var all=(features==undefined);if(all){features=this.features;}
+if(features){this.removeFeatures(features,options);for(var i=features.length-1;i>=0;i--){features[i].destroy();}}},drawFeature:function(feature,style){if(!this.drawn){return;}
+if(typeof style!="object"){if(!style&&feature.state===OpenLayers.State.DELETE){style="delete";}
+var renderIntent=style||feature.renderIntent;style=feature.style||this.style;if(!style){style=this.styleMap.createSymbolizer(feature,renderIntent);}}
+var drawn=this.renderer.drawFeature(feature,style);if(drawn===false||drawn===null){this.unrenderedFeatures[feature.id]=feature;}else{delete this.unrenderedFeatures[feature.id];}},eraseFeatures:function(features){this.renderer.eraseFeatures(features);},getFeatureFromEvent:function(evt){if(!this.renderer){OpenLayers.Console.error(OpenLayers.i18n("getFeatureError"));return null;}
+var feature=null;var featureId=this.renderer.getFeatureIdFromEvent(evt);if(featureId){if(typeof featureId==="string"){feature=this.getFeatureById(featureId);}else{feature=featureId;}}
+return feature;},getFeatureBy:function(property,value){var feature=null;for(var i=0,len=this.features.length;i<len;++i){if(this.features[i][property]==value){feature=this.features[i];break;}}
+return feature;},getFeatureById:function(featureId){return this.getFeatureBy('id',featureId);},getFeatureByFid:function(featureFid){return this.getFeatureBy('fid',featureFid);},getFeaturesByAttribute:function(attrName,attrValue){var i,feature,len=this.features.length,foundFeatures=[];for(i=0;i<len;i++){feature=this.features[i];if(feature&&feature.attributes){if(feature.attributes[attrName]===attrValue){foundFeatures.push(feature);}}}
+return foundFeatures;},onFeatureInsert:function(feature){},preFeatureInsert:function(feature){},getDataExtent:function(){var maxExtent=null;var features=this.features;if(features&&(features.length>0)){var geometry=null;for(var i=0,len=features.length;i<len;i++){geometry=features[i].geometry;if(geometry){if(maxExtent===null){maxExtent=new OpenLayers.Bounds();}
+maxExtent.extend(geometry.getBounds());}}}
+return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:false,layers:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},display:function(){},getFeatureFromEvent:function(evt){var layers=this.layers;var feature;for(var i=0;i<layers.length;i++){feature=layers[i].getFeatureFromEvent(evt);if(feature){return feature;}}},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();map.events.register("changelayer",this,this.handleChangeLayer);},removeMap:function(map){map.events.unregister("changelayer",this,this.handleChangeLayer);this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments);},collectRoots:function(){var layer;for(var i=0;i<this.map.layers.length;++i){layer=this.map.layers[i];if(OpenLayers.Util.indexOf(this.layers,layer)!=-1){layer.renderer.moveRoot(this.renderer);}}},resetRoots:function(){var layer;for(var i=0;i<this.layers.length;++i){layer=this.layers[i];if(this.renderer&&layer.renderer.getRenderLayerId()==this.id){this.renderer.moveRoot(layer.renderer);}}},handleChangeLayer:function(evt){var layer=evt.layer;if(evt.property=="order"&&OpenLayers.Util.indexOf(this.layers,layer)!=-1){this.resetRoots();this.collectRoots();}},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforefeaturehighlighted","featurehighlighted","featureunhighlighted"],multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,highlightOnly:false,box:false,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(layers,options){this.EVENT_TYPES=OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.scope===null){this.scope=this;}
+this.initLayer(layers);var callbacks={click:this.clickFeature,clickout:this.clickoutFeature};if(this.hover){callbacks.over=this.overFeature;callbacks.out=this.outFeature;}
+this.callbacks=OpenLayers.Util.extend(callbacks,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"});}},initLayer:function(layers){if(OpenLayers.Util.isArray(layers)){this.layers=layers;this.layer=new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:layers});}else{this.layer=layers;}},destroy:function(){if(this.active&&this.layers){this.map.removeLayer(this.layer);}
+OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.layers){this.layer.destroy();}},activate:function(){if(!this.active){if(this.layers){this.map.addLayer(this.layer);}
+this.handlers.feature.activate();if(this.box&&this.handlers.box){this.handlers.box.activate();}}
+return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){this.handlers.feature.deactivate();if(this.handlers.box){this.handlers.box.deactivate();}
+if(this.layers){this.map.removeLayer(this.layer);}}
+return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},unselectAll:function(options){var layers=this.layers||[this.layer];var layer,feature;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=layer.selectedFeatures.length-1;i>=0;--i){feature=layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(feature.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});}
+this.select(feature);}}},multipleSelect:function(){return this.multiple||(this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]);},toggleSelect:function(){return this.toggle||(this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]);},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){var layer=feature.layer;if(this.hover){if(this.highlightOnly){this.highlight(feature);}else if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}},outFeature:function(feature){if(this.hover){if(this.highlightOnly){if(feature._lastHighlighter==this.id){if(feature._prevHighlighter&&feature._prevHighlighter!=this.id){delete feature._lastHighlighter;var control=this.map.getControl(feature._prevHighlighter);if(control){control.highlight(feature);}}else{this.unhighlight(feature);}}}else{this.unselect(feature);}}},highlight:function(feature){var layer=feature.layer;var cont=this.events.triggerEvent("beforefeaturehighlighted",{feature:feature});if(cont!==false){feature._prevHighlighter=feature._lastHighlighter;feature._lastHighlighter=this.id;var style=this.selectStyle||this.renderIntent;layer.drawFeature(feature,style);this.events.triggerEvent("featurehighlighted",{feature:feature});}},unhighlight:function(feature){var layer=feature.layer;if(feature._prevHighlighter==undefined){delete feature._lastHighlighter;}else if(feature._prevHighlighter==this.id){delete feature._prevHighlighter;}else{feature._lastHighlighter=feature._prevHighlighter;delete feature._prevHighlighter;}
+layer.drawFeature(feature,feature.style||feature.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:feature});},select:function(feature){var cont=this.onBeforeSelect.call(this.scope,feature);var layer=feature.layer;if(cont!==false){cont=layer.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){layer.selectedFeatures.push(feature);this.highlight(feature);if(!this.handlers.feature.lastFeature){this.handlers.feature.lastFeature=layer.selectedFeatures[0];}
+layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect.call(this.scope,feature);}}},unselect:function(feature){var layer=feature.layer;this.unhighlight(feature);OpenLayers.Util.removeItem(layer.selectedFeatures,feature);layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect.call(this.scope,feature);},selectBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);if(!this.multipleSelect()){this.unselectAll();}
+var prevMultiple=this.multiple;this.multiple=true;var layers=this.layers||[this.layer];var layer;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=0,len=layer.features.length;i<len;++i){var feature=layer.features[i];if(!feature.getVisibility()){continue;}
+if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1){if(bounds.toGeometry().intersects(feature.geometry)){if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}}}}
+this.multiple=prevMultiple;}},setMap:function(map){this.handlers.feature.setMap(map);if(this.box){this.handlers.box.setMap(map);}
+OpenLayers.Control.prototype.setMap.apply(this,arguments);},setLayer:function(layers){var isActive=this.active;this.unselectAll();this.deactivate();if(this.layers){this.layer.destroy();this.layers=null;}
+this.initLayer(layers);this.handlers.feature.layer=this.layer;if(isActive){this.activate();}},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Handler.Keyboard=OpenLayers.Class(OpenLayers.Handler,{KEY_EVENTS:["keydown","keyup"],eventListener:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.eventListener=OpenLayers.Function.bindAsEventListener(this.handleKeyEvent,this);},destroy:function(){this.deactivate();this.eventListener=null;OpenLayers.Handler.prototype.destroy.apply(this,arguments);},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){for(var i=0,len=this.KEY_EVENTS.length;i<len;i++){OpenLayers.Event.observe(document,this.KEY_EVENTS[i],this.eventListener);}
+return true;}else{return false;}},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){for(var i=0,len=this.KEY_EVENTS.length;i<len;i++){OpenLayers.Event.stopObserving(document,this.KEY_EVENTS[i],this.eventListener);}
+deactivated=true;}
+return deactivated;},handleKeyEvent:function(evt){if(this.checkModifiers(evt)){this.callback(evt.type,[evt]);}},CLASS_NAME:"OpenLayers.Handler.Keyboard"});OpenLayers.Control.ModifyFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,clickout:true,toggle:true,standalone:false,layer:null,feature:null,vertices:null,virtualVertices:null,selectControl:null,dragControl:null,handlers:null,deleteCodes:null,virtualStyle:null,vertexRenderIntent:null,mode:null,modified:false,radiusHandle:null,dragHandle:null,onModificationStart:function(){},onModification:function(){},onModificationEnd:function(){},initialize:function(layer,options){options=options||{};this.layer=layer;this.vertices=[];this.virtualVertices=[];this.virtualStyle=OpenLayers.Util.extend({},this.layer.style||this.layer.styleMap.createSymbolizer(null,options.vertexRenderIntent));this.virtualStyle.fillOpacity=0.3;this.virtualStyle.strokeOpacity=0.3;this.deleteCodes=[46,68];this.mode=OpenLayers.Control.ModifyFeature.RESHAPE;OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!(OpenLayers.Util.isArray(this.deleteCodes))){this.deleteCodes=[this.deleteCodes];}
+var control=this;var selectOptions={geometryTypes:this.geometryTypes,clickout:this.clickout,toggle:this.toggle,onBeforeSelect:this.beforeSelectFeature,onSelect:this.selectFeature,onUnselect:this.unselectFeature,scope:this};if(this.standalone===false){this.selectControl=new OpenLayers.Control.SelectFeature(layer,selectOptions);}
+var dragOptions={geometryTypes:["OpenLayers.Geometry.Point"],snappingOptions:this.snappingOptions,onStart:function(feature,pixel){control.dragStart.apply(control,[feature,pixel]);},onDrag:function(feature,pixel){control.dragVertex.apply(control,[feature,pixel]);},onComplete:function(feature){control.dragComplete.apply(control,[feature]);},featureCallbacks:{over:function(feature){if(control.standalone!==true||feature._sketch||control.feature===feature){control.dragControl.overFeature.apply(control.dragControl,[feature]);}}}};this.dragControl=new OpenLayers.Control.DragFeature(layer,dragOptions);var keyboardOptions={keydown:this.handleKeypress};this.handlers={keyboard:new OpenLayers.Handler.Keyboard(this,keyboardOptions)};},destroy:function(){this.layer=null;this.standalone||this.selectControl.destroy();this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return((this.standalone||this.selectControl.activate())&&this.handlers.keyboard.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){var deactivated=false;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.vertices,{silent:true});this.layer.removeFeatures(this.virtualVertices,{silent:true});this.vertices=[];this.dragControl.deactivate();var feature=this.feature;var valid=feature&&feature.geometry&&feature.layer;if(this.standalone===false){if(valid){this.selectControl.unselect.apply(this.selectControl,[feature]);}
+this.selectControl.deactivate();}else{if(valid){this.unselectFeature(feature);}}
+this.handlers.keyboard.deactivate();deactivated=true;}
+return deactivated;},beforeSelectFeature:function(feature){return this.layer.events.triggerEvent("beforefeaturemodified",{feature:feature});},selectFeature:function(feature){if(!this.standalone||this.beforeSelectFeature(feature)!==false){this.feature=feature;this.modified=false;this.resetVertices();this.dragControl.activate();this.onModificationStart(this.feature);}
+var modified=feature.modified;if(feature.geometry&&!(modified&&modified.geometry)){this._originalGeometry=feature.geometry.clone();}},unselectFeature:function(feature){this.layer.removeFeatures(this.vertices,{silent:true});this.vertices=[];this.layer.destroyFeatures(this.virtualVertices,{silent:true});this.virtualVertices=[];if(this.dragHandle){this.layer.destroyFeatures([this.dragHandle],{silent:true});delete this.dragHandle;}
+if(this.radiusHandle){this.layer.destroyFeatures([this.radiusHandle],{silent:true});delete this.radiusHandle;}
+this.feature=null;this.dragControl.deactivate();this.onModificationEnd(feature);this.layer.events.triggerEvent("afterfeaturemodified",{feature:feature,modified:this.modified});this.modified=false;},dragStart:function(feature,pixel){if(feature!=this.feature&&!feature.geometry.parent&&feature!=this.dragHandle&&feature!=this.radiusHandle){if(this.standalone===false&&this.feature){this.selectControl.clickFeature.apply(this.selectControl,[this.feature]);}
+if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)!=-1){this.standalone||this.selectControl.clickFeature.apply(this.selectControl,[feature]);this.dragControl.overFeature.apply(this.dragControl,[feature]);this.dragControl.lastPixel=pixel;this.dragControl.handlers.drag.started=true;this.dragControl.handlers.drag.start=pixel;this.dragControl.handlers.drag.last=pixel;}}},dragVertex:function(vertex,pixel){this.modified=true;if(this.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){if(this.feature!=vertex){this.feature=vertex;}
+this.layer.events.triggerEvent("vertexmodified",{vertex:vertex.geometry,feature:this.feature,pixel:pixel});}else{if(vertex._index){vertex.geometry.parent.addComponent(vertex.geometry,vertex._index);delete vertex._index;OpenLayers.Util.removeItem(this.virtualVertices,vertex);this.vertices.push(vertex);}else if(vertex==this.dragHandle){this.layer.removeFeatures(this.vertices,{silent:true});this.vertices=[];if(this.radiusHandle){this.layer.destroyFeatures([this.radiusHandle],{silent:true});this.radiusHandle=null;}}else if(vertex!==this.radiusHandle){this.layer.events.triggerEvent("vertexmodified",{vertex:vertex.geometry,feature:this.feature,pixel:pixel});}
+if(this.virtualVertices.length>0){this.layer.destroyFeatures(this.virtualVertices,{silent:true});this.virtualVertices=[];}
+this.layer.drawFeature(this.feature,this.standalone?undefined:this.selectControl.renderIntent);}
+this.layer.drawFeature(vertex);},dragComplete:function(vertex){this.resetVertices();this.setFeatureState();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature});},setFeatureState:function(){if(this.feature.state!=OpenLayers.State.INSERT&&this.feature.state!=OpenLayers.State.DELETE){this.feature.state=OpenLayers.State.UPDATE;if(this.modified&&this._originalGeometry){var feature=this.feature;feature.modified=OpenLayers.Util.extend(feature.modified,{geometry:this._originalGeometry});delete this._originalGeometry;}}},resetVertices:function(){if(this.dragControl.feature){this.dragControl.outFeature(this.dragControl.feature);}
+if(this.vertices.length>0){this.layer.removeFeatures(this.vertices,{silent:true});this.vertices=[];}
+if(this.virtualVertices.length>0){this.layer.removeFeatures(this.virtualVertices,{silent:true});this.virtualVertices=[];}
+if(this.dragHandle){this.layer.destroyFeatures([this.dragHandle],{silent:true});this.dragHandle=null;}
+if(this.radiusHandle){this.layer.destroyFeatures([this.radiusHandle],{silent:true});this.radiusHandle=null;}
+if(this.feature&&this.feature.geometry.CLASS_NAME!="OpenLayers.Geometry.Point"){if((this.mode&OpenLayers.Control.ModifyFeature.DRAG)){this.collectDragHandle();}
+if((this.mode&(OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESIZE))){this.collectRadiusHandle();}
+if(this.mode&OpenLayers.Control.ModifyFeature.RESHAPE){if(!(this.mode&OpenLayers.Control.ModifyFeature.RESIZE)){this.collectVertices();}}}},handleKeypress:function(evt){var code=evt.keyCode;if(this.feature&&OpenLayers.Util.indexOf(this.deleteCodes,code)!=-1){var vertex=this.dragControl.feature;if(vertex&&OpenLayers.Util.indexOf(this.vertices,vertex)!=-1&&!this.dragControl.handlers.drag.dragging&&vertex.geometry.parent){vertex.geometry.parent.removeComponent(vertex.geometry);this.layer.events.triggerEvent("vertexremoved",{vertex:vertex.geometry,feature:this.feature,pixel:evt.xy});this.layer.drawFeature(this.feature,this.standalone?undefined:this.selectControl.renderIntent);this.modified=true;this.resetVertices();this.setFeatureState();this.onModification(this.feature);this.layer.events.triggerEvent("featuremodified",{feature:this.feature});}}},collectVertices:function(){this.vertices=[];this.virtualVertices=[];var control=this;function collectComponentVertices(geometry){var i,vertex,component,len;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){vertex=new OpenLayers.Feature.Vector(geometry);vertex._sketch=true;vertex.renderIntent=control.vertexRenderIntent;control.vertices.push(vertex);}else{var numVert=geometry.components.length;if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){numVert-=1;}
+for(i=0;i<numVert;++i){component=geometry.components[i];if(component.CLASS_NAME=="OpenLayers.Geometry.Point"){vertex=new OpenLayers.Feature.Vector(component);vertex._sketch=true;vertex.renderIntent=control.vertexRenderIntent;control.vertices.push(vertex);}else{collectComponentVertices(component);}}
+if(geometry.CLASS_NAME!="OpenLayers.Geometry.MultiPoint"){for(i=0,len=geometry.components.length;i<len-1;++i){var prevVertex=geometry.components[i];var nextVertex=geometry.components[i+1];if(prevVertex.CLASS_NAME=="OpenLayers.Geometry.Point"&&nextVertex.CLASS_NAME=="OpenLayers.Geometry.Point"){var x=(prevVertex.x+nextVertex.x)/2;var y=(prevVertex.y+nextVertex.y)/2;var point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(x,y),null,control.virtualStyle);point.geometry.parent=geometry;point._index=i+1;point._sketch=true;control.virtualVertices.push(point);}}}}}
+collectComponentVertices.call(this,this.feature.geometry);this.layer.addFeatures(this.virtualVertices,{silent:true});this.layer.addFeatures(this.vertices,{silent:true});},collectDragHandle:function(){var geometry=this.feature.geometry;var center=geometry.getBounds().getCenterLonLat();var originGeometry=new OpenLayers.Geometry.Point(center.lon,center.lat);var origin=new OpenLayers.Feature.Vector(originGeometry);originGeometry.move=function(x,y){OpenLayers.Geometry.Point.prototype.move.call(this,x,y);geometry.move(x,y);};origin._sketch=true;this.dragHandle=origin;this.layer.addFeatures([this.dragHandle],{silent:true});},collectRadiusHandle:function(){var geometry=this.feature.geometry;var bounds=geometry.getBounds();var center=bounds.getCenterLonLat();var originGeometry=new OpenLayers.Geometry.Point(center.lon,center.lat);var radiusGeometry=new OpenLayers.Geometry.Point(bounds.right,bounds.bottom);var radius=new OpenLayers.Feature.Vector(radiusGeometry);var resize=(this.mode&OpenLayers.Control.ModifyFeature.RESIZE);var reshape=(this.mode&OpenLayers.Control.ModifyFeature.RESHAPE);var rotate=(this.mode&OpenLayers.Control.ModifyFeature.ROTATE);radiusGeometry.move=function(x,y){OpenLayers.Geometry.Point.prototype.move.call(this,x,y);var dx1=this.x-originGeometry.x;var dy1=this.y-originGeometry.y;var dx0=dx1-x;var dy0=dy1-y;if(rotate){var a0=Math.atan2(dy0,dx0);var a1=Math.atan2(dy1,dx1);var angle=a1-a0;angle*=180/Math.PI;geometry.rotate(angle,originGeometry);}
+if(resize){var scale,ratio;if(reshape){scale=dy1/dy0;ratio=(dx1/dx0)/scale;}else{var l0=Math.sqrt((dx0*dx0)+(dy0*dy0));var l1=Math.sqrt((dx1*dx1)+(dy1*dy1));scale=l1/l0;}
+geometry.resize(scale,originGeometry,ratio);}};radius._sketch=true;this.radiusHandle=radius;this.layer.addFeatures([this.radiusHandle],{silent:true});},setMap:function(map){this.standalone||this.selectControl.setMap(map);this.dragControl.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.ModifyFeature"});OpenLayers.Control.ModifyFeature.RESHAPE=1;OpenLayers.Control.ModifyFeature.RESIZE=2;OpenLayers.Control.ModifyFeature.ROTATE=4;OpenLayers.Control.ModifyFeature.DRAG=8;OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,zoomOffset:0,serverResolutions:null,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.03390625,-128*156543.03390625,128*156543.03390625,128*156543.03390625),maxResolution:156543.03390625,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);}
+url=url||this.url;name=name||this.name;var newArguments=[name,url,{},options];OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var xyz=this.getXYZ(bounds);var url=this.url;if(OpenLayers.Util.isArray(url)){var s=''+xyz.x+xyz.y+xyz.z;url=this.selectUrl(s,url);}
+return OpenLayers.String.format(url,xyz);},getXYZ:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom()+this.zoomOffset;var limit=Math.pow(2,z);if(this.wrapDateLine)
+{x=((x%limit)+limit)%limit;}
+return{'x':x,'y':y,'z':z};},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",attribution:"Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions());}
+obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},wrapDateLine:true,CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Layer.Bing=OpenLayers.Class(OpenLayers.Layer.XYZ,{serverResolutions:[156543.03390625,78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677,0.14929107084870338,0.07464553542435169],attributionTemplate:'<span class="olBingAttribution ${type}">'+'<div><a target="_blank" href="http://www.bing.com/maps/">'+'<img src="${logo}" /></a></div>${copyrights}'+'<a style="white-space: nowrap" target="_blank" '+'href="http://www.microsoft.com/maps/product/terms.html">'+'Terms of Use</a></span>',metadata:null,type:"Road",metadataParams:null,initialize:function(options){options=OpenLayers.Util.applyDefaults({sphericalMercator:true},options);var name=options.name||"Bing "+(options.type||this.type);var newArgs=[name,null,options];OpenLayers.Layer.XYZ.prototype.initialize.apply(this,newArgs);this.loadMetadata();},loadMetadata:function(){this._callbackId="_callback_"+this.id.replace(/\./g,"_");window[this._callbackId]=OpenLayers.Function.bind(OpenLayers.Layer.Bing.processMetadata,this);var params=OpenLayers.Util.applyDefaults({key:this.key,jsonp:this._callbackId,include:"ImageryProviders"},this.metadataParams);var url="http://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+
+this.type+"?"+OpenLayers.Util.getParameterString(params);var script=document.createElement("script");script.type="text/javascript";script.src=url;script.id=this._callbackId;document.getElementsByTagName("head")[0].appendChild(script);},initLayer:function(){var res=this.metadata.resourceSets[0].resources[0];var url=res.imageUrl.replace("{quadkey}","${quadkey}");this.url=[];for(var i=0;i<res.imageUrlSubdomains.length;++i){this.url.push(url.replace("{subdomain}",res.imageUrlSubdomains[i]));};this.addOptions({maxResolution:Math.min(this.serverResolutions[res.zoomMin],this.maxResolution),zoomOffset:res.zoomMin,numZoomLevels:Math.min(res.zoomMax+1-res.zoomMin,this.numZoomLevels)},true);},getURL:function(bounds){if(!this.url){return OpenLayers.Util.getImagesLocation()+"blank.gif";}
+var xyz=this.getXYZ(bounds),x=xyz.x,y=xyz.y,z=xyz.z;var quadDigits=[];for(var i=z;i>0;--i){var digit='0';var mask=1<<(i-1);if((x&mask)!=0){digit++;}
+if((y&mask)!=0){digit++;digit++;}
+quadDigits.push(digit);}
+var quadKey=quadDigits.join("");var url=this.selectUrl(''+x+y+z,this.url);return OpenLayers.String.format(url,{'quadkey':quadKey});},updateAttribution:function(){var metadata=this.metadata;if(!metadata||!this.map||!this.map.center){return;}
+var res=metadata.resourceSets[0].resources[0];var extent=this.map.getExtent().transform(this.map.getProjectionObject(),new OpenLayers.Projection("EPSG:4326"));var providers=res.imageryProviders,zoom=this.map.getZoom()+1,copyrights="",provider,i,ii,j,jj,bbox,coverage;for(i=0,ii=providers.length;i<ii;++i){provider=providers[i];for(j=0,jj=provider.coverageAreas.length;j<jj;++j){coverage=provider.coverageAreas[j];bbox=OpenLayers.Bounds.fromArray(coverage.bbox);if(extent.intersectsBounds(bbox)&&zoom<=coverage.zoomMax&&zoom>=coverage.zoomMin){copyrights+=provider.attribution+" ";}}}
+this.attribution=OpenLayers.String.format(this.attributionTemplate,{type:this.type.toLowerCase(),logo:metadata.brandLogoUri,copyrights:copyrights});this.map&&this.map.events.triggerEvent("changelayer",{layer:this,property:"attribution"});},setMap:function(){OpenLayers.Layer.XYZ.prototype.setMap.apply(this,arguments);this.updateAttribution();this.map.events.register("moveend",this,this.updateAttribution);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Bing(this.options);}
+obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},destroy:function(){this.map&&this.map.events.unregister("moveend",this,this.updateAttribution);OpenLayers.Layer.XYZ.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Layer.Bing"});OpenLayers.Layer.Bing.processMetadata=function(metadata){this.metadata=metadata;this.initLayer();var script=document.getElementById(this._callbackId);script.parentNode.removeChild(script);window[this._callbackId]=undefined;delete this._callbackId;};OpenLayers.Layer.PointGrid=OpenLayers.Class(OpenLayers.Layer.Vector,{dx:null,dy:null,ratio:1.5,maxFeatures:250,rotation:0,origin:null,gridBounds:null,initialize:function(config){config=config||{};OpenLayers.Layer.Vector.prototype.initialize.apply(this,[config.name,config]);},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);map.events.register("moveend",this,this.onMoveEnd);},removeMap:function(map){map.events.unregister("moveend",this,this.onMoveEnd);OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments);},setRatio:function(ratio){this.ratio=ratio;this.updateGrid(true);},setMaxFeatures:function(maxFeatures){this.maxFeatures=maxFeatures;this.updateGrid(true);},setSpacing:function(dx,dy){this.dx=dx;this.dy=dy||dx;this.updateGrid(true);},setOrigin:function(origin){this.origin=origin;this.updateGrid(true);},getOrigin:function(){if(!this.origin){this.origin=this.map.getExtent().getCenterLonLat();}
+return this.origin;},setRotation:function(rotation){this.rotation=rotation;this.updateGrid(true);},onMoveEnd:function(){this.updateGrid();},getViewBounds:function(){var bounds=this.map.getExtent();if(this.rotation){var origin=this.getOrigin();var rotationOrigin=new OpenLayers.Geometry.Point(origin.lon,origin.lat);var rect=bounds.toGeometry();rect.rotate(-this.rotation,rotationOrigin);bounds=rect.getBounds();}
+return bounds;},updateGrid:function(force){if(force||this.invalidBounds()){var viewBounds=this.getViewBounds();var origin=this.getOrigin();var rotationOrigin=new OpenLayers.Geometry.Point(origin.lon,origin.lat);var viewBoundsWidth=viewBounds.getWidth();var viewBoundsHeight=viewBounds.getHeight();var aspectRatio=viewBoundsWidth/viewBoundsHeight;var maxHeight=Math.sqrt(this.dx*this.dy*this.maxFeatures/aspectRatio);var maxWidth=maxHeight*aspectRatio;var gridWidth=Math.min(viewBoundsWidth*this.ratio,maxWidth);var gridHeight=Math.min(viewBoundsHeight*this.ratio,maxHeight);var center=viewBounds.getCenterLonLat();this.gridBounds=new OpenLayers.Bounds(center.lon-(gridWidth/2),center.lat-(gridHeight/2),center.lon+(gridWidth/2),center.lat+(gridHeight/2));var rows=Math.floor(gridHeight/this.dy);var cols=Math.floor(gridWidth/this.dx);var gridLeft=origin.lon+(this.dx*Math.ceil((this.gridBounds.left-origin.lon)/this.dx));var gridBottom=origin.lat+(this.dy*Math.ceil((this.gridBounds.bottom-origin.lat)/this.dy));var features=new Array(rows*cols);var x,y,point;for(var i=0;i<cols;++i){x=gridLeft+(i*this.dx);for(var j=0;j<rows;++j){y=gridBottom+(j*this.dy);point=new OpenLayers.Geometry.Point(x,y);if(this.rotation){point.rotate(this.rotation,rotationOrigin);}
+features[(i*rows)+j]=new OpenLayers.Feature.Vector(point);}}
+this.destroyFeatures(this.features,{silent:true});this.addFeatures(features,{silent:true});}},invalidBounds:function(){return!this.gridBounds||!this.gridBounds.containsBounds(this.getViewBounds());},CLASS_NAME:"OpenLayers.Layer.PointGrid"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:true,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null;},onWheelEvent:function(e){if(!this.map||!this.checkModifiers(e)){return;}
+var overScrollableDiv=false;var overLayerDiv=false;var overMapDiv=false;var elem=OpenLayers.Event.element(e);while((elem!=null)&&!overMapDiv&&!overScrollableDiv){if(!overScrollableDiv){try{if(elem.currentStyle){overflow=elem.currentStyle["overflow"];}else{var style=document.defaultView.getComputedStyle(elem,null);var overflow=style.getPropertyValue("overflow");}
+overScrollableDiv=(overflow&&(overflow=="auto")||(overflow=="scroll"));}catch(err){}}
+if(!overLayerDiv){for(var i=0,len=this.map.layers.length;i<len;i++){if(elem==this.map.layers[i].div||elem==this.map.layers[i].pane){overLayerDiv=true;break;}}}
+overMapDiv=(elem==this.map.div);elem=elem.parentNode;}
+if(!overScrollableDiv&&overMapDiv){if(overLayerDiv){var delta=0;if(!e){e=window.event;}
+if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;}
+this.delta=this.delta+delta;if(this.interval){window.clearTimeout(this._timeoutId);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(e);},this),this.interval);}else{this.wheelZoom(e);}}
+OpenLayers.Event.stop(e);}},wheelZoom:function(e){var delta=this.delta;this.delta=0;if(delta){if(this.mousePosition){e.xy=this.mousePosition;}
+if(!e.xy){e.xy=this.map.getPixelFromLonLat(this.map.getCenter());}
+if(delta<0){this.callback("down",[e,this.cumulative?delta:-1]);}else{this.callback("up",[e,this.cumulative?delta:1]);}}},mousemove:function(evt){this.mousePosition=evt.xy;},activate:function(evt){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.observe(window,"mousewheel",wheelListener);OpenLayers.Event.observe(document,"mousewheel",wheelListener);return true;}else{return false;}},deactivate:function(evt){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.stopObserving(window,"mousewheel",wheelListener);OpenLayers.Event.stopObserving(document,"mousewheel",wheelListener);return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(config){OpenLayers.Util.extend(this,config);},clone:function(){var Type=eval(this.CLASS_NAME);return new Type(OpenLayers.Util.extend({},this));},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:false,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(options){this.symbolizer={};OpenLayers.Util.extend(this,options);if(this.symbolizers){delete this.symbolizer;}
+this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i in this.symbolizer){this.symbolizer[i]=null;}
+this.symbolizer=null;delete this.symbolizers;},evaluate:function(feature){var context=this.getContext(feature);var applies=true;if(this.minScaleDenominator||this.maxScaleDenominator){var scale=feature.layer.map.getScale();}
+if(this.minScaleDenominator){applies=scale>=OpenLayers.Style.createLiteral(this.minScaleDenominator,context);}
+if(applies&&this.maxScaleDenominator){applies=scale<OpenLayers.Style.createLiteral(this.maxScaleDenominator,context);}
+if(applies&&this.filter){if(this.filter.CLASS_NAME=="OpenLayers.Filter.FeatureId"){applies=this.filter.evaluate(feature);}else{applies=this.filter.evaluate(context);}}
+return applies;},getContext:function(feature){var context=this.context;if(!context){context=feature.attributes||feature.data;}
+if(typeof this.context=="function"){context=this.context(feature);}
+return context;},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.symbolizers){var len=this.symbolizers.length;options.symbolizers=new Array(len);for(var i=0;i<len;++i){options.symbolizers[i]=this.symbolizers[i].clone();}}else{options.symbolizer={};var value,type;for(var key in this.symbolizer){value=this.symbolizer[key];type=typeof value;if(type==="object"){options.symbolizer[key]=OpenLayers.Util.extend({},value);}else if(type==="string"){options.symbolizer[key]=value;}}}
+options.filter=this.filter&&this.filter.clone();options.context=this.context&&OpenLayers.Util.extend({},this.context);return new OpenLayers.Rule(options);},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){var intersect=false;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(feature.geometry){var geom=this.value;if(this.value.CLASS_NAME=="OpenLayers.Bounds"){geom=this.value.toGeometry();}
+if(feature.geometry.intersects(geom)){intersect=true;}}
+break;default:OpenLayers.Console.error(OpenLayers.i18n("filterEvaluateNotImplemented"));break;}
+return intersect;},clone:function(){var options=OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(options);},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Format.SLD=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",stringifyOutput:true,namedLayersAsArray:false,CLASS_NAME:"OpenLayers.Format.SLD"});OpenLayers.Format.GML.v2=OpenLayers.Class(OpenLayers.Format.GML.Base,{schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd",initialize:function(options){OpenLayers.Format.GML.Base.prototype.initialize.apply(this,[options]);},readers:{"gml":OpenLayers.Util.applyDefaults({"outerBoundaryIs":function(node,container){var obj={};this.readChildNodes(node,obj);container.outer=obj.components[0];},"innerBoundaryIs":function(node,container){var obj={};this.readChildNodes(node,obj);container.inner.push(obj.components[0]);},"Box":function(node,container){var obj={};this.readChildNodes(node,obj);if(!container.components){container.components=[];}
+var min=obj.points[0];var max=obj.points[1];container.components.push(new OpenLayers.Bounds(min.x,min.y,max.x,max.y));}},OpenLayers.Format.GML.Base.prototype.readers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.readers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.readers["wfs"]},write:function(features){var name;if(OpenLayers.Util.isArray(features)){name="wfs:FeatureCollection";}else{name="gml:featureMember";}
+var root=this.writeNode(name,features);this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},writers:{"gml":OpenLayers.Util.applyDefaults({"Point":function(geometry){var node=this.createElementNSPlus("gml:Point");this.writeNode("coordinates",[geometry],node);return node;},"coordinates":function(points){var numPoints=points.length;var parts=new Array(numPoints);var point;for(var i=0;i<numPoints;++i){point=points[i];if(this.xy){parts[i]=point.x+","+point.y;}else{parts[i]=point.y+","+point.x;}
+if(point.z!=undefined){parts[i]+=","+point.z;}}
+return this.createElementNSPlus("gml:coordinates",{attributes:{decimal:".",cs:",",ts:" "},value:(numPoints==1)?parts[0]:parts.join(" ")});},"LineString":function(geometry){var node=this.createElementNSPlus("gml:LineString");this.writeNode("coordinates",geometry.components,node);return node;},"Polygon":function(geometry){var node=this.createElementNSPlus("gml:Polygon");this.writeNode("outerBoundaryIs",geometry.components[0],node);for(var i=1;i<geometry.components.length;++i){this.writeNode("innerBoundaryIs",geometry.components[i],node);}
+return node;},"outerBoundaryIs":function(ring){var node=this.createElementNSPlus("gml:outerBoundaryIs");this.writeNode("LinearRing",ring,node);return node;},"innerBoundaryIs":function(ring){var node=this.createElementNSPlus("gml:innerBoundaryIs");this.writeNode("LinearRing",ring,node);return node;},"LinearRing":function(ring){var node=this.createElementNSPlus("gml:LinearRing");this.writeNode("coordinates",ring.components,node);return node;},"Box":function(bounds){var node=this.createElementNSPlus("gml:Box");this.writeNode("coordinates",[{x:bounds.left,y:bounds.bottom},{x:bounds.right,y:bounds.top}],node);if(this.srsName){node.setAttribute("srsName",this.srsName);}
+return node;}},OpenLayers.Format.GML.Base.prototype.writers["gml"]),"feature":OpenLayers.Format.GML.Base.prototype.writers["feature"],"wfs":OpenLayers.Format.GML.Base.prototype.writers["wfs"]},CLASS_NAME:"OpenLayers.Format.GML.v2"});OpenLayers.Format.Filter.v1_0_0=OpenLayers.Class(OpenLayers.Format.GML.v2,OpenLayers.Format.Filter.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/ogc/filter/1.0.0/filter.xsd",initialize:function(options){OpenLayers.Format.GML.v2.prototype.initialize.apply(this,[options]);},readers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsNotEqualTo":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO});this.readChildNodes(node,filter);obj.filters.push(filter);},"PropertyIsLike":function(node,obj){var filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE});this.readChildNodes(node,filter);var wildCard=node.getAttribute("wildCard");var singleChar=node.getAttribute("singleChar");var esc=node.getAttribute("escape");filter.value2regex(wildCard,singleChar,esc);obj.filters.push(filter);}},OpenLayers.Format.Filter.v1.prototype.readers["ogc"]),"gml":OpenLayers.Format.GML.v2.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.readers["feature"]},writers:{"ogc":OpenLayers.Util.applyDefaults({"PropertyIsEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsEqualTo");this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsNotEqualTo":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsNotEqualTo");this.writeNode("PropertyName",filter,node);this.writeOgcExpression(filter.value,node);return node;},"PropertyIsLike":function(filter){var node=this.createElementNSPlus("ogc:PropertyIsLike",{attributes:{wildCard:"*",singleChar:".",escape:"!"}});this.writeNode("PropertyName",filter,node);this.writeNode("Literal",filter.regex2value(),node);return node;},"BBOX":function(filter){var node=this.createElementNSPlus("ogc:BBOX");filter.property&&this.writeNode("PropertyName",filter,node);var box=this.writeNode("gml:Box",filter.value,node);if(filter.projection){box.setAttribute("srsName",filter.projection);}
+return node;}},OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),"gml":OpenLayers.Format.GML.v2.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.writers["feature"]},writeSpatial:function(filter,name){var node=this.createElementNSPlus("ogc:"+name);this.writeNode("PropertyName",filter,node);if(filter.value instanceof OpenLayers.Filter.Function){this.writeNode("Function",filter.value,node);}else{var child;if(filter.value instanceof OpenLayers.Geometry){child=this.writeNode("feature:_geometry",filter.value).firstChild;}else{child=this.writeNode("gml:Box",filter.value);}
+if(filter.projection){child.setAttribute("srsName",filter.projection);}
+node.appendChild(child);}
+return node;},CLASS_NAME:"OpenLayers.Format.Filter.v1_0_0"});OpenLayers.Format.WFST.v1_0_0=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,OpenLayers.Format.WFST.v1,{version:"1.0.0",srsNameInQuery:false,schemaLocations:{"wfs":"http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd"},initialize:function(options){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[options]);OpenLayers.Format.WFST.v1.prototype.initialize.apply(this,[options]);},readNode:function(node,obj,first){return OpenLayers.Format.GML.v2.prototype.readNode.apply(this,[node,obj]);},readers:{"wfs":OpenLayers.Util.applyDefaults({"WFS_TransactionResponse":function(node,obj){obj.insertIds=[];obj.success=false;this.readChildNodes(node,obj);},"InsertResult":function(node,container){var obj={fids:[]};this.readChildNodes(node,obj);container.insertIds.push(obj.fids[0]);},"TransactionResult":function(node,obj){this.readChildNodes(node,obj);},"Status":function(node,obj){this.readChildNodes(node,obj);},"SUCCESS":function(node,obj){obj.success=true;}},OpenLayers.Format.WFST.v1.prototype.readers["wfs"]),"gml":OpenLayers.Format.GML.v2.prototype.readers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.readers["feature"],"ogc":OpenLayers.Format.Filter.v1_0_0.prototype.readers["ogc"]},writers:{"wfs":OpenLayers.Util.applyDefaults({"Query":function(options){options=OpenLayers.Util.extend({featureNS:this.featureNS,featurePrefix:this.featurePrefix,featureType:this.featureType,srsName:this.srsName,srsNameInQuery:this.srsNameInQuery},options);var prefix=options.featurePrefix;var node=this.createElementNSPlus("wfs:Query",{attributes:{typeName:(prefix?prefix+":":"")+
+options.featureType}});if(options.srsNameInQuery&&options.srsName){node.setAttribute("srsName",options.srsName);}
+if(options.featureNS){node.setAttribute("xmlns:"+prefix,options.featureNS);}
+if(options.propertyNames){for(var i=0,len=options.propertyNames.length;i<len;i++){this.writeNode("ogc:PropertyName",{property:options.propertyNames[i]},node);}}
+if(options.filter){this.setFilterProperty(options.filter);this.writeNode("ogc:Filter",options.filter,node);}
+return node;}},OpenLayers.Format.WFST.v1.prototype.writers["wfs"]),"gml":OpenLayers.Format.GML.v2.prototype.writers["gml"],"feature":OpenLayers.Format.GML.v2.prototype.writers["feature"],"ogc":OpenLayers.Format.Filter.v1_0_0.prototype.writers["ogc"]},CLASS_NAME:"OpenLayers.Format.WFST.v1_0_0"});OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(yOrdering){this.compare=yOrdering?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear();},insert:function(newNode){if(this.exists(newNode)){this.remove(newNode);}
+var nodeId=newNode.id;this.determineZIndex(newNode);var leftIndex=-1;var rightIndex=this.order.length;var middle;while(rightIndex-leftIndex>1){middle=parseInt((leftIndex+rightIndex)/2);var placement=this.compare(this,newNode,OpenLayers.Util.getElement(this.order[middle]));if(placement>0){leftIndex=middle;}else{rightIndex=middle;}}
+this.order.splice(rightIndex,0,nodeId);this.indices[nodeId]=this.getZIndex(newNode);return this.getNextElement(rightIndex);},remove:function(node){var nodeId=node.id;var arrayIndex=OpenLayers.Util.indexOf(this.order,nodeId);if(arrayIndex>=0){this.order.splice(arrayIndex,1);delete this.indices[nodeId];if(this.order.length>0){var lastId=this.order[this.order.length-1];this.maxZIndex=this.indices[lastId];}else{this.maxZIndex=0;}}},clear:function(){this.order=[];this.indices={};this.maxZIndex=0;},exists:function(node){return(this.indices[node.id]!=null);},getZIndex:function(node){return node._style.graphicZIndex;},determineZIndex:function(node){var zIndex=node._style.graphicZIndex;if(zIndex==null){zIndex=this.maxZIndex;node._style.graphicZIndex=zIndex;}else if(zIndex>this.maxZIndex){this.maxZIndex=zIndex;}},getNextElement:function(index){var nextIndex=index+1;if(nextIndex<this.order.length){var nextElement=OpenLayers.Util.getElement(this.order[nextIndex]);if(nextElement==undefined){nextElement=this.getNextElement(nextIndex);}
+return nextElement;}else{return null;}},CLASS_NAME:"OpenLayers.ElementsIndexer"});OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(indexer,newNode,nextNode){var newZIndex=indexer.getZIndex(newNode);var returnVal=0;if(nextNode){var nextZIndex=indexer.getZIndex(nextNode);returnVal=newZIndex-nextZIndex;}
+return returnVal;},Z_ORDER_DRAWING_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal==0){returnVal=1;}
+return returnVal;},Z_ORDER_Y_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal===0){var result=nextNode._boundsBottom-newNode._boundsBottom;returnVal=(result===0)?1:result;}
+return returnVal;}};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(options&&(options.zIndexing||options.yOrdering)){this.indexer=new OpenLayers.ElementsIndexer(options.yOrdering);}},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){var child;var root=this.vectorRoot;if(root){while(child=root.firstChild){root.removeChild(child);}}
+root=this.textRoot;if(root){while(child=root.firstChild){root.removeChild(child);}}
+if(this.indexer){this.indexer.clear();}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;var rendered=true;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0,len=geometry.components.length;i<len;i++){rendered=this.drawGeometry(geometry.components[i],style,featureId)&&rendered;}
+return rendered;};rendered=false;var removeBackground=false;if(style.display!="none"){if(style.backgroundGraphic){this.redrawBackgroundNode(geometry.id,geometry,style,featureId);}else{removeBackground=true;}
+rendered=this.redrawNode(geometry.id,geometry,style,featureId);}
+if(rendered==false){var node=document.getElementById(geometry.id);if(node){if(node._style.backgroundGraphic){removeBackground=true;}
+node.parentNode.removeChild(node);}}
+if(removeBackground){var node=document.getElementById(geometry.id+this.BACKGROUND_ID_SUFFIX);if(node){node.parentNode.removeChild(node);}}
+return rendered;},redrawNode:function(id,geometry,style,featureId){style=this.applyDefaultSymbolizer(style);var node=this.nodeFactory(id,this.getNodeType(geometry,style));node._featureId=featureId;node._boundsBottom=geometry.getBounds().bottom;node._geometryClass=geometry.CLASS_NAME;node._style=style;var drawResult=this.drawGeometryNode(node,geometry,style);if(drawResult===false){return false;}
+node=drawResult.node;if(this.indexer){var insert=this.indexer.insert(node);if(insert){this.vectorRoot.insertBefore(node,insert);}else{this.vectorRoot.appendChild(node);}}else{if(node.parentNode!==this.vectorRoot){this.vectorRoot.appendChild(node);}}
+this.postDraw(node);return drawResult.complete;},redrawBackgroundNode:function(id,geometry,style,featureId){var backgroundStyle=OpenLayers.Util.extend({},style);backgroundStyle.externalGraphic=backgroundStyle.backgroundGraphic;backgroundStyle.graphicXOffset=backgroundStyle.backgroundXOffset;backgroundStyle.graphicYOffset=backgroundStyle.backgroundYOffset;backgroundStyle.graphicZIndex=backgroundStyle.backgroundGraphicZIndex;backgroundStyle.graphicWidth=backgroundStyle.backgroundWidth||backgroundStyle.graphicWidth;backgroundStyle.graphicHeight=backgroundStyle.backgroundHeight||backgroundStyle.graphicHeight;backgroundStyle.backgroundGraphic=null;backgroundStyle.backgroundXOffset=null;backgroundStyle.backgroundYOffset=null;backgroundStyle.backgroundGraphicZIndex=null;return this.redrawNode(id+this.BACKGROUND_ID_SUFFIX,geometry,backgroundStyle,null);},drawGeometryNode:function(node,geometry,style){style=style||node._style;var options={'isFilled':style.fill===undefined?true:style.fill,'isStroked':style.stroke===undefined?!!style.strokeWidth:style.stroke};var drawn;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.graphic===false){options.isFilled=false;options.isStroked=false;}
+drawn=this.drawPoint(node,geometry);break;case"OpenLayers.Geometry.LineString":options.isFilled=false;drawn=this.drawLineString(node,geometry);break;case"OpenLayers.Geometry.LinearRing":drawn=this.drawLinearRing(node,geometry);break;case"OpenLayers.Geometry.Polygon":drawn=this.drawPolygon(node,geometry);break;case"OpenLayers.Geometry.Surface":drawn=this.drawSurface(node,geometry);break;case"OpenLayers.Geometry.Rectangle":drawn=this.drawRectangle(node,geometry);break;default:break;}
+node._options=options;if(drawn!=false){return{node:this.setStyle(node,style,options,geometry),complete:drawn};}else{return false;}},postDraw:function(node){},drawPoint:function(node,geometry){},drawLineString:function(node,geometry){},drawLinearRing:function(node,geometry){},drawPolygon:function(node,geometry){},drawRectangle:function(node,geometry){},drawCircle:function(node,geometry){},drawSurface:function(node,geometry){},removeText:function(featureId){var label=document.getElementById(featureId+this.LABEL_ID_SUFFIX);if(label){this.textRoot.removeChild(label);}},getFeatureIdFromEvent:function(evt){var target=evt.target;var useElement=target&&target.correspondingUseElement;var node=useElement?useElement:(target||evt.srcElement);var featureId=node._featureId;return featureId;},eraseGeometry:function(geometry,featureId){if((geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPoint")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiLineString")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPolygon")||(geometry.CLASS_NAME=="OpenLayers.Geometry.Collection")){for(var i=0,len=geometry.components.length;i<len;i++){this.eraseGeometry(geometry.components[i],featureId);}}else{var element=OpenLayers.Util.getElement(geometry.id);if(element&&element.parentNode){if(element.geometry){element.geometry.destroy();element.geometry=null;}
+element.parentNode.removeChild(element);if(this.indexer){this.indexer.remove(element);}
+if(element._style.backgroundGraphic){var backgroundId=geometry.id+this.BACKGROUND_ID_SUFFIX;var bElem=OpenLayers.Util.getElement(backgroundId);if(bElem&&bElem.parentNode){bElem.parentNode.removeChild(bElem);}}}}},nodeFactory:function(id,type){var node=OpenLayers.Util.getElement(id);if(node){if(!this.nodeTypeCompare(node,type)){node.parentNode.removeChild(node);node=this.nodeFactory(id,type);}}else{node=this.createNode(type,id);}
+return node;},nodeTypeCompare:function(node,type){},createNode:function(type,id){},moveRoot:function(renderer){var root=this.root;if(renderer.root.parentNode==this.rendererRoot){root=renderer.root;}
+root.parentNode.removeChild(root);renderer.rendererRoot.appendChild(root);},getRenderLayerId:function(){return this.root.parentNode.parentNode.id;},isComplexSymbol:function(graphicName){return(graphicName!="circle")&&!!graphicName;},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Renderer.symbol={"star":[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],"cross":[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],"x":[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],"square":[0,0,0,1,1,1,1,0,0,0],"triangle":[0,10,10,10,5,0,0,10]};OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(url){url=url||window.location.href;var parameters=OpenLayers.Util.getParameters(url);var index=url.indexOf('#');if(index>0){url='?'+url.substring(index+1,url.length);OpenLayers.Util.extend(parameters,OpenLayers.Util.getParameters(url));}
+return parameters;},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if((control!=this)&&(control.CLASS_NAME=="OpenLayers.Control.ArgParser")){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;}
+break;}}
+if(i==this.map.controls.length){var args=this.getParameters();if(args.layers){this.layers=args.layers;this.map.events.register('addlayer',this,this.configureLayers);this.configureLayers();}
+if(args.lat&&args.lon){this.center=new OpenLayers.LonLat(parseFloat(args.lon),parseFloat(args.lat));if(args.zoom){this.zoom=parseInt(args.zoom);}
+this.map.events.register('changebaselayer',this,this.setCenter);this.setCenter();}}},setCenter:function(){if(this.map.baseLayer){this.map.events.unregister('changebaselayer',this,this.setCenter);if(this.displayProjection){this.center.transform(this.displayProjection,this.map.getProjectionObject());}
+this.map.setCenter(this.center,this.zoom);}},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister('addlayer',this,this.configureLayers);for(var i=0,len=this.layers.length;i<len;i++){var layer=this.map.layers[i];var c=this.layers.charAt(i);if(c=="B"){this.map.setBaseLayer(layer);}else if((c=="T")||(c=="F")){layer.setVisibility(c=="T");}}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:false,base:'',displayProjection:null,initialize:function(element,base,options){if(element!==null&&typeof element=='object'&&!OpenLayers.Util.isElement(element)){options=element;this.base=document.location.href;OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.element!=null){this.element=OpenLayers.Util.getElement(this.element);}}
+else{OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);this.base=base||document.location.href;}},destroy:function(){if(this.element.parentNode==this.div){this.div.removeChild(this.element);}
+this.element=null;this.map.events.unregister('moveend',this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if(control.CLASS_NAME==this.argParserClass.CLASS_NAME){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;}
+break;}}
+if(i==this.map.controls.length){this.map.addControl(new this.argParserClass({'displayProjection':this.displayProjection}));}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element&&!this.anchor){this.element=document.createElement("a");this.element.innerHTML=OpenLayers.i18n("Permalink");this.element.href="";this.div.appendChild(this.element);}
+this.map.events.on({'moveend':this.updateLink,'changelayer':this.updateLink,'changebaselayer':this.updateLink,scope:this});this.updateLink();return this.div;},updateLink:function(){var separator=this.anchor?'#':'?';var href=this.base;if(href.indexOf(separator)!=-1){href=href.substring(0,href.indexOf(separator));}
+href+=separator+OpenLayers.Util.getParameterString(this.createParams());if(this.anchor&&!this.element){window.location.href=href;}
+else{this.element.href=href;}},createParams:function(center,zoom,layers){center=center||this.map.getCenter();var params=OpenLayers.Util.getParameters(this.base);if(center){params.zoom=zoom||this.map.getZoom();var lat=center.lat;var lon=center.lon;if(this.displayProjection){var mapPosition=OpenLayers.Projection.transform({x:lon,y:lat},this.map.getProjectionObject(),this.displayProjection);lon=mapPosition.x;lat=mapPosition.y;}
+params.lat=Math.round(lat*100000)/100000;params.lon=Math.round(lon*100000)/100000;layers=layers||this.map.layers;params.layers='';for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];if(layer.isBaseLayer){params.layers+=(layer==this.map.baseLayer)?"B":"0";}else{params.layers+=(layer.getVisibility())?"T":"F";}}}
+return params;},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Layer.TMS=OpenLayers.Class(OpenLayers.Layer.Grid,{serviceVersion:"1.0.0",layername:null,type:null,isBaseLayer:true,tileOrigin:null,serverResolutions:null,zoomOffset:0,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,url,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TMS(this.name,this.url,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((bounds.bottom-this.tileOrigin.lat)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom()+this.zoomOffset;var path=this.serviceVersion+"/"+this.layername+"/"+z+"/"+x+"/"+y+"."+this.type;var url=this.url;if(OpenLayers.Util.isArray(url)){url=this.selectUrl(path,url);}
+return url+path;},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.TMS"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:false,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({"refresh":this.load,scope:this});if(this.layer.visibility==true||this.preload){this.load();}else{this.layer.events.on({"visibilitychanged":this.load,scope:this});}
+return true;}
+return false;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"refresh":this.load,"visibilitychanged":this.load,scope:this});}
+return deactivated;},load:function(options){var layer=this.layer;layer.events.triggerEvent("loadstart");layer.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,layer.map.getProjectionObject()),filter:layer.filter},options));layer.events.un({"visibilitychanged":this.load,scope:this});},merge:function(mapProjection,resp){var layer=this.layer;layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){if(!mapProjection.equals(layer.projection)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(layer.projection,mapProjection);}}}
+layer.addFeatures(features);}
+layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Format.WFSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.0",errorProperty:"service",CLASS_NAME:"OpenLayers.Format.WFSCapabilities"});OpenLayers.Format.WFSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.WFSCapabilities,{initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var capabilities={};var root=data.documentElement;this.runChildNodes(capabilities,root);return capabilities;},runChildNodes:function(obj,node){var children=node.childNodes;var childNode,processor;for(var i=0;i<children.length;++i){childNode=children[i];if(childNode.nodeType==1){processor=this["read_cap_"+childNode.nodeName];if(processor){processor.apply(this,[obj,childNode]);}}}},read_cap_FeatureTypeList:function(request,node){var featureTypeList={featureTypes:[]};this.runChildNodes(featureTypeList,node);request.featureTypeList=featureTypeList;},read_cap_FeatureType:function(featureTypeList,node,parentLayer){var featureType={};this.runChildNodes(featureType,node);featureTypeList.featureTypes.push(featureType);},read_cap_Name:function(obj,node){var name=this.getChildValue(node);if(name){var parts=name.split(":");obj.name=parts.pop();if(parts.length>0){obj.featureNS=this.lookupNamespaceURI(node,parts[0]);}}},read_cap_Title:function(obj,node){var title=this.getChildValue(node);if(title){obj.title=title;}},read_cap_Abstract:function(obj,node){var abst=this.getChildValue(node);if(abst){obj["abstract"]=abst;}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1"});OpenLayers.Format.WFSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{initialize:function(options){OpenLayers.Format.WFSCapabilities.v1.prototype.initialize.apply(this,[options]);},read_cap_DefaultSRS:function(obj,node){var defaultSRS=this.getChildValue(node);if(defaultSRS){obj.srs=defaultSRS;}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_1_0"});OpenLayers.Layer.PointTrack=OpenLayers.Class(OpenLayers.Layer.Vector,{dataFrom:null,styleFrom:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},addNodes:function(pointFeatures,options){if(pointFeatures.length<2){OpenLayers.Console.error("At least two point features have to be added to create"+"a line from");return;}
+var lines=new Array(pointFeatures.length-1);var pointFeature,startPoint,endPoint;for(var i=0,len=pointFeatures.length;i<len;i++){pointFeature=pointFeatures[i];endPoint=pointFeature.geometry;if(!endPoint){var lonlat=pointFeature.lonlat;endPoint=new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);}else if(endPoint.CLASS_NAME!="OpenLayers.Geometry.Point"){OpenLayers.Console.error("Only features with point geometries are supported.");return;}
+if(i>0){var attributes=(this.dataFrom!=null)?(pointFeatures[i+this.dataFrom].data||pointFeatures[i+this.dataFrom].attributes):null;var style=(this.styleFrom!=null)?(pointFeatures[i+this.styleFrom].style):null;var line=new OpenLayers.Geometry.LineString([startPoint,endPoint]);lines[i-1]=new OpenLayers.Feature.Vector(line,attributes,style);}
+startPoint=endPoint;}
+this.addFeatures(lines,options);},CLASS_NAME:"OpenLayers.Layer.PointTrack"});OpenLayers.Layer.PointTrack.SOURCE_NODE=-1;OpenLayers.Layer.PointTrack.TARGET_NODE=0;OpenLayers.Layer.PointTrack.dataFrom={'SOURCE_NODE':-1,'TARGET_NODE':0};OpenLayers.Protocol.WFS=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Protocol.WFS.DEFAULTS);var cls=OpenLayers.Protocol.WFS["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported WFS version: "+options.version;}
+return new cls(options);};OpenLayers.Protocol.WFS.fromWMSLayer=function(layer,options){var typeName,featurePrefix;var param=layer.params["LAYERS"];var parts=(OpenLayers.Util.isArray(param)?param[0]:param).split(":");if(parts.length>1){featurePrefix=parts[0];}
+typeName=parts.pop();var protocolOptions={url:layer.url,featureType:typeName,featurePrefix:featurePrefix,srsName:layer.projection&&layer.projection.getCode()||layer.map&&layer.map.getProjectionObject().getCode(),version:"1.1.0"};return new OpenLayers.Protocol.WFS(OpenLayers.Util.applyDefaults(options,protocolOptions));};OpenLayers.Protocol.WFS.DEFAULTS={"version":"1.0.0"};OpenLayers.Layer.Markers=OpenLayers.Class(OpenLayers.Layer,{isBaseLayer:false,markers:null,drawn:false,initialize:function(name,options){OpenLayers.Layer.prototype.initialize.apply(this,arguments);this.markers=[];},destroy:function(){this.clearMarkers();this.markers=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.markers.length;i<len;i++){this.markers[i].setOpacity(this.opacity);}}},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.prototype.moveTo.apply(this,arguments);if(zoomChanged||!this.drawn){for(var i=0,len=this.markers.length;i<len;i++){this.drawMarker(this.markers[i]);}
+this.drawn=true;}},addMarker:function(marker){this.markers.push(marker);if(this.opacity!=null){marker.setOpacity(this.opacity);}
+if(this.map&&this.map.getExtent()){marker.map=this.map;this.drawMarker(marker);}},removeMarker:function(marker){if(this.markers&&this.markers.length){OpenLayers.Util.removeItem(this.markers,marker);marker.erase();}},clearMarkers:function(){if(this.markers!=null){while(this.markers.length>0){this.removeMarker(this.markers[0]);}}},drawMarker:function(marker){var px=this.map.getLayerPxFromLonLat(marker.lonlat);if(px==null){marker.display(false);}else{if(!marker.isDrawn()){var markerImg=marker.draw(px);this.div.appendChild(markerImg);}else if(marker.icon){marker.icon.moveTo(px);}}},getDataExtent:function(){var maxExtent=null;if(this.markers&&(this.markers.length>0)){var maxExtent=new OpenLayers.Bounds();for(var i=0,len=this.markers.length;i<len;i++){var marker=this.markers[i];maxExtent.extend(marker.lonlat);}}
+return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Markers"});OpenLayers.Control.Pan=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,direction:null,type:OpenLayers.Control.TYPE_BUTTON,initialize:function(direction,options){this.direction=direction;this.CLASS_NAME+=this.direction;OpenLayers.Control.prototype.initialize.apply(this,[options]);},trigger:function(){var getSlideFactor=OpenLayers.Function.bind(function(dim){return this.slideRatio?this.map.getSize()[dim]*this.slideRatio:this.slideFactor;},this);switch(this.direction){case OpenLayers.Control.Pan.NORTH:this.map.pan(0,-getSlideFactor("h"));break;case OpenLayers.Control.Pan.SOUTH:this.map.pan(0,getSlideFactor("h"));break;case OpenLayers.Control.Pan.WEST:this.map.pan(-getSlideFactor("w"),0);break;case OpenLayers.Control.Pan.EAST:this.map.pan(getSlideFactor("w"),0);break;}},CLASS_NAME:"OpenLayers.Control.Pan"});OpenLayers.Control.Pan.NORTH="North";OpenLayers.Control.Pan.SOUTH="South";OpenLayers.Control.Pan.EAST="East";OpenLayers.Control.Pan.WEST="West";OpenLayers.Layer.WMS=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"},reproject:false,isBaseLayer:true,encodeBBOX:false,noMagic:false,yx:{'EPSG:4326':true},initialize:function(name,url,params,options){var newArguments=[];params=OpenLayers.Util.upperCaseObject(params);if(parseFloat(params.VERSION)>=1.3&&!params.EXCEPTIONS){params.EXCEPTIONS="INIMAGE";}
+newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(!this.noMagic&&this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){if((options==null)||(!options.isBaseLayer)){this.isBaseLayer=false;}
+if(this.params.FORMAT=="image/jpeg"){this.params.FORMAT=OpenLayers.Util.alphaHack()?"image/gif":"image/png";}}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMS(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},reverseAxisOrder:function(){return(parseFloat(this.params.VERSION)>=1.3&&!!this.yx[this.map.getProjectionObject().getCode()]);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var imageSize=this.getImageSize();var newParams={};var reverseAxisOrder=this.reverseAxisOrder();newParams.BBOX=this.encodeBBOX?bounds.toBBOX(null,reverseAxisOrder):bounds.toArray(reverseAxisOrder);newParams.WIDTH=imageSize.w;newParams.HEIGHT=imageSize.h;var requestString=this.getFullRequestString(newParams);return requestString;},mergeNewParams:function(newParams){var upperParams=OpenLayers.Util.upperCaseObject(newParams);var newArguments=[upperParams];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,newArguments);},getFullRequestString:function(newParams,altUrl){var mapProjection=this.map.getProjectionObject();var projectionCode=this.projection&&this.projection.equals(mapProjection)?this.projection.getCode():mapProjection.getCode();var value=(projectionCode=="none")?null:projectionCode;if(parseFloat(this.params.VERSION)>=1.3){this.params.CRS=value;}else{this.params.SRS=value;}
+if(typeof this.params.TRANSPARENT=="boolean"){newParams.TRANSPARENT=this.params.TRANSPARENT?"TRUE":"FALSE";}
+return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments);},CLASS_NAME:"OpenLayers.Layer.WMS"});OpenLayers.Layer.WMS.Untiled=OpenLayers.Class(OpenLayers.Layer.WMS,{singleTile:true,initialize:function(name,url,params,options){OpenLayers.Layer.WMS.prototype.initialize.apply(this,arguments);var msg="The OpenLayers.Layer.WMS.Untiled class is deprecated and "+"will be removed in 3.0. Instead, you should use the "+"normal OpenLayers.Layer.WMS class, passing it the option "+"'singleTile' as true.";OpenLayers.Console.warn(msg);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMS.Untiled(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.WMS.prototype.clone.apply(this,[obj]);return obj;},CLASS_NAME:"OpenLayers.Layer.WMS.Untiled"});OpenLayers.Geometry.Surface=OpenLayers.Class(OpenLayers.Geometry,{initialize:function(){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Geometry.Surface"});OpenLayers.Format.ArcXML.Features=OpenLayers.Class(OpenLayers.Format.XML,{initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){var axl=new OpenLayers.Format.ArcXML();var parsed=axl.read(data);return parsed.features.feature;}});OpenLayers.Control.Snapping=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforesnap","snap","unsnap"],DEFAULTS:{tolerance:10,node:true,edge:true,vertex:true},greedy:true,precedence:["node","vertex","edge"],resolution:null,geoToleranceCache:null,layer:null,feature:null,point:null,initialize:function(options){Array.prototype.push.apply(this.EVENT_TYPES,OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.options=options||{};if(this.options.layer){this.setLayer(this.options.layer);}
+var defaults=OpenLayers.Util.extend({},this.options.defaults);this.defaults=OpenLayers.Util.applyDefaults(defaults,this.DEFAULTS);this.setTargets(this.options.targets);if(this.targets.length===0&&this.layer){this.addTargetLayer(this.layer);}
+this.geoToleranceCache={};},setLayer:function(layer){if(this.active){this.deactivate();this.layer=layer;this.activate();}else{this.layer=layer;}},setTargets:function(targets){this.targets=[];if(targets&&targets.length){var target;for(var i=0,len=targets.length;i<len;++i){target=targets[i];if(target instanceof OpenLayers.Layer.Vector){this.addTargetLayer(target);}else{this.addTarget(target);}}}},addTargetLayer:function(layer){this.addTarget({layer:layer});},addTarget:function(target){target=OpenLayers.Util.applyDefaults(target,this.defaults);target.nodeTolerance=target.nodeTolerance||target.tolerance;target.vertexTolerance=target.vertexTolerance||target.tolerance;target.edgeTolerance=target.edgeTolerance||target.tolerance;this.targets.push(target);},removeTargetLayer:function(layer){var target;for(var i=this.targets.length-1;i>=0;--i){target=this.targets[i];if(target.layer===layer){this.removeTarget(target);}}},removeTarget:function(target){return OpenLayers.Util.removeItem(this.targets,target);},activate:function(){var activated=OpenLayers.Control.prototype.activate.call(this);if(activated){if(this.layer&&this.layer.events){this.layer.events.on({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});}}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.call(this);if(deactivated){if(this.layer&&this.layer.events){this.layer.events.un({sketchstarted:this.onSketchModified,sketchmodified:this.onSketchModified,vertexmodified:this.onVertexModified,scope:this});}}
+this.feature=null;this.point=null;return deactivated;},onSketchModified:function(event){this.feature=event.feature;this.considerSnapping(event.vertex,event.vertex);},onVertexModified:function(event){this.feature=event.feature;var loc=this.layer.map.getLonLatFromViewPortPx(event.pixel);this.considerSnapping(event.vertex,new OpenLayers.Geometry.Point(loc.lon,loc.lat));},considerSnapping:function(point,loc){var best={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY,x:null,y:null};var snapped=false;var result,target;for(var i=0,len=this.targets.length;i<len;++i){target=this.targets[i];result=this.testTarget(target,loc);if(result){if(this.greedy){best=result;best.target=target;snapped=true;break;}else{if((result.rank<best.rank)||(result.rank===best.rank&&result.dist<best.dist)){best=result;best.target=target;snapped=true;}}}}
+if(snapped){var proceed=this.events.triggerEvent("beforesnap",{point:point,x:best.x,y:best.y,distance:best.dist,layer:best.target.layer,snapType:this.precedence[best.rank]});if(proceed!==false){point.x=best.x;point.y=best.y;this.point=point;this.events.triggerEvent("snap",{point:point,snapType:this.precedence[best.rank],layer:best.target.layer,distance:best.dist});}else{snapped=false;}}
+if(this.point&&!snapped){point.x=loc.x;point.y=loc.y;this.point=null;this.events.triggerEvent("unsnap",{point:point});}},testTarget:function(target,loc){var resolution=this.layer.map.getResolution();if("minResolution"in target){if(resolution<target.minResolution){return null;}}
+if("maxResolution"in target){if(resolution>=target.maxResolution){return null;}}
+var tolerance={node:this.getGeoTolerance(target.nodeTolerance,resolution),vertex:this.getGeoTolerance(target.vertexTolerance,resolution),edge:this.getGeoTolerance(target.edgeTolerance,resolution)};var maxTolerance=Math.max(tolerance.node,tolerance.vertex,tolerance.edge);var result={rank:Number.POSITIVE_INFINITY,dist:Number.POSITIVE_INFINITY};var eligible=false;var features=target.layer.features;var feature,type,vertices,vertex,closest,dist,found;var numTypes=this.precedence.length;var ll=new OpenLayers.LonLat(loc.x,loc.y);for(var i=0,len=features.length;i<len;++i){feature=features[i];if(feature!==this.feature&&!feature._sketch&&feature.state!==OpenLayers.State.DELETE&&(!target.filter||target.filter.evaluate(feature.attributes))){if(feature.atPoint(ll,maxTolerance,maxTolerance)){for(var j=0,stop=Math.min(result.rank+1,numTypes);j<stop;++j){type=this.precedence[j];if(target[type]){if(type==="edge"){closest=feature.geometry.distanceTo(loc,{details:true});dist=closest.distance;if(dist<=tolerance[type]&&dist<result.dist){result={rank:j,dist:dist,x:closest.x0,y:closest.y0};eligible=true;break;}}else{vertices=feature.geometry.getVertices(type==="node");found=false;for(var k=0,klen=vertices.length;k<klen;++k){vertex=vertices[k];dist=vertex.distanceTo(loc);if(dist<=tolerance[type]&&(j<result.rank||(j===result.rank&&dist<result.dist))){result={rank:j,dist:dist,x:vertex.x,y:vertex.y};eligible=true;found=true;}}
+if(found){break;}}}}}}}
+return eligible?result:null;},getGeoTolerance:function(tolerance,resolution){if(resolution!==this.resolution){this.resolution=resolution;this.geoToleranceCache={};}
+var geoTolerance=this.geoToleranceCache[tolerance];if(geoTolerance===undefined){geoTolerance=tolerance*resolution;this.geoToleranceCache[tolerance]=geoTolerance;}
+return geoTolerance;},destroy:function(){if(this.active){this.deactivate();}
+delete this.layer;delete this.targets;OpenLayers.Control.prototype.destroy.call(this);},CLASS_NAME:"OpenLayers.Control.Snapping"});OpenLayers.Date={toISOString:(function(){if("toISOString"in Date.prototype){return function(date){return date.toISOString();};}else{function pad(num,len){var str=num+"";while(str.length<len){str="0"+str;}
+return str;}
+return function(date){var str;if(isNaN(date.getTime())){str="Invalid Date";}else{str=date.getUTCFullYear()+"-"+
+pad(date.getUTCMonth()+1,2)+"-"+
+pad(date.getUTCDate(),2)+"T"+
+pad(date.getUTCHours(),2)+":"+
+pad(date.getUTCMinutes(),2)+":"+
+pad(date.getUTCSeconds(),2)+"."+
+pad(date.getUTCMilliseconds(),3)+"Z";}
+return str;};}})(),parse:function(str){var date;var match=str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))?$/);if(match&&(match[1]||match[7])){var year=parseInt(match[1],10)||0;var month=(parseInt(match[2],10)-1)||0;var day=parseInt(match[3],10)||1;date=new Date(Date.UTC(year,month,day));var type=match[7];if(type){var hours=parseInt(match[4],10);var minutes=parseInt(match[5],10);var secFrac=parseFloat(match[6]);var seconds=secFrac|0;var milliseconds=Math.round(1000*(secFrac-seconds));date.setUTCHours(hours,minutes,seconds,milliseconds);if(type!=="Z"){var hoursOffset=parseInt(type,10);var minutesOffset=parseInt(match[8],10)||0;var offset=-1000*(60*(hoursOffset*60)+minutesOffset*60);date=new Date(date.getTime()+offset);}}}else{date=new Date("invalid");}
+return date;}};(function(){var oXMLHttpRequest=window.XMLHttpRequest;var bGecko=!!window.controllers,bIE=window.document.all&&!window.opera,bIE7=bIE&&window.navigator.userAgent.match(/MSIE 7.0/);function fXMLHttpRequest(){this._object=oXMLHttpRequest&&!bIE7?new oXMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[];};function cXMLHttpRequest(){return new fXMLHttpRequest;};cXMLHttpRequest.prototype=fXMLHttpRequest.prototype;if(bGecko&&oXMLHttpRequest.wrapped)
+cXMLHttpRequest.wrapped=oXMLHttpRequest.wrapped;cXMLHttpRequest.UNSENT=0;cXMLHttpRequest.OPENED=1;cXMLHttpRequest.HEADERS_RECEIVED=2;cXMLHttpRequest.LOADING=3;cXMLHttpRequest.DONE=4;cXMLHttpRequest.prototype.readyState=cXMLHttpRequest.UNSENT;cXMLHttpRequest.prototype.responseText='';cXMLHttpRequest.prototype.responseXML=null;cXMLHttpRequest.prototype.status=0;cXMLHttpRequest.prototype.statusText='';cXMLHttpRequest.prototype.priority="NORMAL";cXMLHttpRequest.prototype.onreadystatechange=null;cXMLHttpRequest.onreadystatechange=null;cXMLHttpRequest.onopen=null;cXMLHttpRequest.onsend=null;cXMLHttpRequest.onabort=null;cXMLHttpRequest.prototype.open=function(sMethod,sUrl,bAsync,sUser,sPassword){delete this._headers;if(arguments.length<3)
+bAsync=true;this._async=bAsync;var oRequest=this,nState=this.readyState,fOnUnload;if(bIE&&bAsync){fOnUnload=function(){if(nState!=cXMLHttpRequest.DONE){fCleanTransport(oRequest);oRequest.abort();}};window.attachEvent("onunload",fOnUnload);}
+if(cXMLHttpRequest.onopen)
+cXMLHttpRequest.onopen.apply(this,arguments);if(arguments.length>4)
+this._object.open(sMethod,sUrl,bAsync,sUser,sPassword);else
+if(arguments.length>3)
+this._object.open(sMethod,sUrl,bAsync,sUser);else
+this._object.open(sMethod,sUrl,bAsync);this.readyState=cXMLHttpRequest.OPENED;fReadyStateChange(this);this._object.onreadystatechange=function(){if(bGecko&&!bAsync)
+return;oRequest.readyState=oRequest._object.readyState;fSynchronizeValues(oRequest);if(oRequest._aborted){oRequest.readyState=cXMLHttpRequest.UNSENT;return;}
+if(oRequest.readyState==cXMLHttpRequest.DONE){delete oRequest._data;fCleanTransport(oRequest);if(bIE&&bAsync)
+window.detachEvent("onunload",fOnUnload);}
+if(nState!=oRequest.readyState)
+fReadyStateChange(oRequest);nState=oRequest.readyState;}};function fXMLHttpRequest_send(oRequest){oRequest._object.send(oRequest._data);if(bGecko&&!oRequest._async){oRequest.readyState=cXMLHttpRequest.OPENED;fSynchronizeValues(oRequest);while(oRequest.readyState<cXMLHttpRequest.DONE){oRequest.readyState++;fReadyStateChange(oRequest);if(oRequest._aborted)
+return;}}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend)
+cXMLHttpRequest.onsend.apply(this,arguments);if(!arguments.length)
+vData=null;if(vData&&vData.nodeType){vData=window.XMLSerializer?new window.XMLSerializer().serializeToString(vData):vData.xml;if(!oRequest._headers["Content-Type"])
+oRequest._object.setRequestHeader("Content-Type","application/xml");}
+this._data=vData;fXMLHttpRequest_send(this);};cXMLHttpRequest.prototype.abort=function(){if(cXMLHttpRequest.onabort)
+cXMLHttpRequest.onabort.apply(this,arguments);if(this.readyState>cXMLHttpRequest.UNSENT)
+this._aborted=true;this._object.abort();fCleanTransport(this);this.readyState=cXMLHttpRequest.UNSENT;delete this._data;};cXMLHttpRequest.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders();};cXMLHttpRequest.prototype.getResponseHeader=function(sName){return this._object.getResponseHeader(sName);};cXMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){if(!this._headers)
+this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.addEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++)
+if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture)
+return;this._listeners.push([sName,fHandler,bUseCapture]);};cXMLHttpRequest.prototype.removeEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++)
+if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture)
+break;if(oListener)
+this._listeners.splice(nIndex,1);};cXMLHttpRequest.prototype.dispatchEvent=function(oEvent){var oEventPseudo={'type':oEvent.type,'target':this,'currentTarget':this,'eventPhase':2,'bubbles':oEvent.bubbles,'cancelable':oEvent.cancelable,'timeStamp':oEvent.timeStamp,'stopPropagation':function(){},'preventDefault':function(){},'initEvent':function(){}};if(oEventPseudo.type=="readystatechange"&&this.onreadystatechange)
+(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[oEventPseudo]);for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++)
+if(oListener[0]==oEventPseudo.type&&!oListener[2])
+(oListener[1].handleEvent||oListener[1]).apply(this,[oEventPseudo]);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(cXMLHttpRequest.onreadystatechange)
+cXMLHttpRequest.onreadystatechange.apply(oRequest);oRequest.dispatchEvent({'type':"readystatechange",'bubbles':false,'cancelable':false,'timeStamp':new Date+0});};function fGetDocument(oRequest){var oDocument=oRequest.responseXML,sResponse=oRequest.responseText;if(bIE&&sResponse&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new window.ActiveXObject("Microsoft.XMLDOM");oDocument.async=false;oDocument.validateOnParse=false;oDocument.loadXML(sResponse);}
+if(oDocument)
+if((bIE&&oDocument.parseError!=0)||!oDocument.documentElement||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror"))
+return null;return oDocument;};function fSynchronizeValues(oRequest){try{oRequest.responseText=oRequest._object.responseText;}catch(e){}
+try{oRequest.responseXML=fGetDocument(oRequest._object);}catch(e){}
+try{oRequest.status=oRequest._object.status;}catch(e){}
+try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments)
+oArguments=[];oRequest.__func=this;oRequest.__func(oArguments[0],oArguments[1],oArguments[2],oArguments[3],oArguments[4]);delete oRequest.__func;};};OpenLayers.Request.XMLHttpRequest=cXMLHttpRequest;})();OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date(),extractAttributes:true,extractStyles:false,extractTracks:false,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g),kmlColor:(/(\w{2})(\w{2})(\w{2})(\w{2})/),kmlIconPalette:(/root:\/\/icons\/palette-(\d+)(\.\w+)/),straightBracket:(/\$\[(.*?)\]/g)};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){this.features=[];this.styles={};this.fetched={};var options={depth:0,styleBaseUrl:this.styleBaseUrl};return this.parseData(data,options);},parseData:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var types=["Link","NetworkLink","Style","StyleMap","Placemark"];for(var i=0,len=types.length;i<len;++i){var type=types[i];var nodes=this.getElementsByTagNameNS(data,"*",type);if(nodes.length==0){continue;}
+switch(type.toLowerCase()){case"link":case"networklink":this.parseLinks(nodes,options);break;case"style":if(this.extractStyles){this.parseStyles(nodes,options);}
+break;case"stylemap":if(this.extractStyles){this.parseStyleMaps(nodes,options);}
+break;case"placemark":this.parseFeatures(nodes,options);break;}}
+return this.features;},parseLinks:function(nodes,options){if(options.depth>=this.maxDepth){return false;}
+var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0,len=nodes.length;i<len;i++){var href=this.parseProperty(nodes[i],"*","href");if(href&&!this.fetched[href]){this.fetched[href]=true;var data=this.fetchLink(href);if(data){this.parseData(data,newOptions);}}}},fetchLink:function(href){var request=OpenLayers.Request.GET({url:href,async:false});if(request){return request.responseText;}},parseStyles:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var style=this.parseStyle(nodes[i]);if(style){var styleName=(options.styleBaseUrl||"")+"#"+style.id;this.styles[styleName]=style;}}},parseKmlColor:function(kmlColor){var color=null;if(kmlColor){var matches=kmlColor.match(this.regExes.kmlColor);if(matches){color={color:'#'+matches[4]+matches[3]+matches[2],opacity:parseInt(matches[1],16)/255};}}
+return color;},parseStyle:function(node){var style={};var types=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"];var type,styleTypeNode,nodeList,geometry,parser;for(var i=0,len=types.length;i<len;++i){type=types[i];styleTypeNode=this.getElementsByTagNameNS(node,"*",type)[0];if(!styleTypeNode){continue;}
+switch(type.toLowerCase()){case"linestyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["strokeColor"]=color.color;style["strokeOpacity"]=color.opacity;}
+var width=this.parseProperty(styleTypeNode,"*","width");if(width){style["strokeWidth"]=width;}
+break;case"polystyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fillOpacity"]=color.opacity;style["fillColor"]=color.color;}
+var fill=this.parseProperty(styleTypeNode,"*","fill");if(fill=="0"){style["fillColor"]="none";}
+var outline=this.parseProperty(styleTypeNode,"*","outline");if(outline=="0"){style["strokeWidth"]="0";}
+break;case"iconstyle":var scale=parseFloat(this.parseProperty(styleTypeNode,"*","scale")||1);var width=32*scale;var height=32*scale;var iconNode=this.getElementsByTagNameNS(styleTypeNode,"*","Icon")[0];if(iconNode){var href=this.parseProperty(iconNode,"*","href");if(href){var w=this.parseProperty(iconNode,"*","w");var h=this.parseProperty(iconNode,"*","h");var google="http://maps.google.com/mapfiles/kml";if(OpenLayers.String.startsWith(href,google)&&!w&&!h){w=64;h=64;scale=scale/2;}
+w=w||h;h=h||w;if(w){width=parseInt(w)*scale;}
+if(h){height=parseInt(h)*scale;}
+var matches=href.match(this.regExes.kmlIconPalette);if(matches){var palette=matches[1];var file_extension=matches[2];var x=this.parseProperty(iconNode,"*","x");var y=this.parseProperty(iconNode,"*","y");var posX=x?x/32:0;var posY=y?(7-y/32):7;var pos=posY*8+posX;href="http://maps.google.com/mapfiles/kml/pal"
++palette+"/icon"+pos+file_extension;}
+style["graphicOpacity"]=1;style["externalGraphic"]=href;}}
+var hotSpotNode=this.getElementsByTagNameNS(styleTypeNode,"*","hotSpot")[0];if(hotSpotNode){var x=parseFloat(hotSpotNode.getAttribute("x"));var y=parseFloat(hotSpotNode.getAttribute("y"));var xUnits=hotSpotNode.getAttribute("xunits");if(xUnits=="pixels"){style["graphicXOffset"]=-x*scale;}
+else if(xUnits=="insetPixels"){style["graphicXOffset"]=-width+(x*scale);}
+else if(xUnits=="fraction"){style["graphicXOffset"]=-width*x;}
+var yUnits=hotSpotNode.getAttribute("yunits");if(yUnits=="pixels"){style["graphicYOffset"]=-height+(y*scale)+1;}
+else if(yUnits=="insetPixels"){style["graphicYOffset"]=-(y*scale)+1;}
+else if(yUnits=="fraction"){style["graphicYOffset"]=-height*(1-y)+1;}}
+style["graphicWidth"]=width;style["graphicHeight"]=height;break;case"balloonstyle":var balloonStyle=OpenLayers.Util.getXmlNodeValue(styleTypeNode);if(balloonStyle){style["balloonStyle"]=balloonStyle.replace(this.regExes.straightBracket,"${$1}");}
+break;case"labelstyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fontColor"]=color.color;style["fontOpacity"]=color.opacity;}
+break;default:}}
+if(!style["strokeColor"]&&style["fillColor"]){style["strokeColor"]=style["fillColor"];}
+var id=node.getAttribute("id");if(id&&style){style.id=id;}
+return style;},parseStyleMaps:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];var pairs=this.getElementsByTagNameNS(node,"*","Pair");var id=node.getAttribute("id");for(var j=0,jlen=pairs.length;j<jlen;j++){var pair=pairs[j];var key=this.parseProperty(pair,"*","key");var styleUrl=this.parseProperty(pair,"*","styleUrl");if(styleUrl&&key=="normal"){this.styles[(options.styleBaseUrl||"")+"#"+id]=this.styles[(options.styleBaseUrl||"")+styleUrl];}
+if(styleUrl&&key=="highlight"){}}}},parseFeatures:function(nodes,options){var features=[];for(var i=0,len=nodes.length;i<len;i++){var featureNode=nodes[i];var feature=this.parseFeature.apply(this,[featureNode]);if(feature){if(this.extractStyles&&feature.attributes&&feature.attributes.styleUrl){feature.style=this.getStyle(feature.attributes.styleUrl,options);}
+if(this.extractStyles){var inlineStyleNode=this.getElementsByTagNameNS(featureNode,"*","Style")[0];if(inlineStyleNode){var inlineStyle=this.parseStyle(inlineStyleNode);if(inlineStyle){feature.style=OpenLayers.Util.extend(feature.style,inlineStyle);}}}
+if(this.extractTracks){var tracks=this.getElementsByTagNameNS(featureNode,this.namespaces.gx,"Track");if(tracks&&tracks.length>0){var track=tracks[0];var container={features:[],feature:feature};this.readNode(track,container);if(container.features.length>0){features.push.apply(features,container.features);}}}else{features.push(feature);}}else{throw"Bad Placemark: "+i;}}
+this.features=this.features.concat(features);},readers:{"kml":{"when":function(node,container){container.whens.push(OpenLayers.Date.parse(this.getChildValue(node)));},"_trackPointAttribute":function(node,container){var name=node.nodeName.split(":").pop();container.attributes[name].push(this.getChildValue(node));}},"gx":{"Track":function(node,container){var obj={whens:[],points:[],angles:[]};if(this.trackAttributes){var name;obj.attributes={};for(var i=0,ii=this.trackAttributes.length;i<ii;++i){name=this.trackAttributes[i];obj.attributes[name]=[];if(!(name in this.readers.kml)){this.readers.kml[name]=this.readers.kml._trackPointAttribute;}}}
+this.readChildNodes(node,obj);if(obj.whens.length!==obj.points.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:coord ("+obj.points.length+") elements.");}
+var hasAngles=obj.angles.length>0;if(hasAngles&&obj.whens.length!==obj.angles.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:angles ("+obj.angles.length+") elements.");}
+var feature,point,angles;for(var i=0,ii=obj.whens.length;i<ii;++i){feature=container.feature.clone();feature.fid=container.feature.fid||container.feature.id;point=obj.points[i];feature.geometry=point;if("z"in point){feature.attributes.altitude=point.z;}
+if(this.internalProjection&&this.externalProjection){feature.geometry.transform(this.externalProjection,this.internalProjection);}
+if(this.trackAttributes){for(var j=0,jj=this.trackAttributes.length;j<jj;++j){feature.attributes[name]=obj.attributes[this.trackAttributes[j]][i];}}
+feature.attributes.when=obj.whens[i];feature.attributes.trackId=container.feature.id;if(hasAngles){angles=obj.angles[i];feature.attributes.heading=parseFloat(angles[0]);feature.attributes.tilt=parseFloat(angles[1]);feature.attributes.roll=parseFloat(angles[2]);}
+container.features.push(feature);}},"coord":function(node,container){var str=this.getChildValue(node);var coords=str.replace(this.regExes.trimSpace,"").split(/\s+/);var point=new OpenLayers.Geometry.Point(coords[0],coords[1]);if(coords.length>2){point.z=parseFloat(coords[2]);}
+container.points.push(point);},"angles":function(node,container){var str=this.getChildValue(node);var parts=str.replace(this.regExes.trimSpace,"").split(/\s+/);container.angles.push(parts);}}},parseFeature:function(node){var order=["MultiGeometry","Polygon","LineString","Point"];var type,nodeList,geometry,parser;for(var i=0,len=order.length;i<len;++i){type=order[i];this.internalns=node.namespaceURI?node.namespaceURI:this.kmlns;nodeList=this.getElementsByTagNameNS(node,this.internalns,type);if(nodeList.length>0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));}
+break;}}
+var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);}
+var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id")||node.getAttribute("name");if(fid!=null){feature.fid=fid;}
+return feature;},getStyle:function(styleUrl,options){var styleBaseUrl=OpenLayers.Util.removeTail(styleUrl);var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;newOptions.styleBaseUrl=styleBaseUrl;if(!this.styles[styleUrl]&&!OpenLayers.String.startsWith(styleUrl,"#")&&newOptions.depth<=this.maxDepth&&!this.fetched[styleBaseUrl]){var data=this.fetchLink(styleBaseUrl);if(data){this.parseData(data,newOptions);}}
+var style=OpenLayers.Util.extend({},this.styles[styleUrl]);return style;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");}
+var point=null;if(coords.length>1){if(coords.length==2){coords[2]=null;}
+point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad coordinate string: "+coordString;}
+return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i<numPoints;++i){coords=pointList[i].split(",");numCoords=coords.length;if(numCoords>1){if(coords.length==2){coords[2]=null;}
+points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad LineString point coordinates: "+
+pointList[i];}}
+if(numPoints){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}else{throw"Bad LineString coordinates: "+coordString;}}
+return line;},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"LinearRing");var numRings=nodeList.length;var components=new Array(numRings);if(numRings>0){var ring;for(var i=0,len=nodeList.length;i<len;++i){ring=this.parseGeometry.linestring.apply(this,[nodeList[i],true]);if(ring){components[i]=ring;}else{throw"Bad LinearRing geometry: "+i;}}}
+return new OpenLayers.Geometry.Polygon(components);},multigeometry:function(node){var child,parser;var parts=[];var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){var type=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var parser=this.parseGeometry[type.toLowerCase()];if(parser){parts.push(parser.apply(this,[child]));}}}
+return new OpenLayers.Geometry.Collection(parts);}},parseAttributes:function(node){var attributes={};var edNodes=node.getElementsByTagName("ExtendedData");if(edNodes.length){attributes=this.parseExtendedData(edNodes[0]);}
+var child,grandchildren,grandchild;var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){grandchildren=child.childNodes;if(grandchildren.length>=1&&grandchildren.length<=3){var grandchild;switch(grandchildren.length){case 1:grandchild=grandchildren[0];break;case 2:var c1=grandchildren[0];var c2=grandchildren[1];grandchild=(c1.nodeType==3||c1.nodeType==4)?c1:c2;break;case 3:default:grandchild=grandchildren[1];break;}
+if(grandchild.nodeType==3||grandchild.nodeType==4){var name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var value=OpenLayers.Util.getXmlNodeValue(grandchild);if(value){value=value.replace(this.regExes.trimSpace,"");attributes[name]=value;}}}}}
+return attributes;},parseExtendedData:function(node){var attributes={};var i,len,data,key;var dataNodes=node.getElementsByTagName("Data");for(i=0,len=dataNodes.length;i<len;i++){data=dataNodes[i];key=data.getAttribute("name");var ed={};var valueNode=data.getElementsByTagName("value");if(valueNode.length){ed['value']=this.getChildValue(valueNode[0]);}
+var nameNode=data.getElementsByTagName("displayName");if(nameNode.length){ed['displayName']=this.getChildValue(nameNode[0]);}
+attributes[key]=ed;}
+var simpleDataNodes=node.getElementsByTagName("SimpleData");for(i=0,len=simpleDataNodes.length;i<len;i++){var ed={};data=simpleDataNodes[i];key=data.getAttribute("name");ed['value']=this.getChildValue(data);ed['displayName']=key;attributes[key]=ed;}
+return attributes;},parseProperty:function(xmlNode,namespace,tagName){var value;var nodeList=this.getElementsByTagNameNS(xmlNode,namespace,tagName);try{value=OpenLayers.Util.getXmlNodeValue(nodeList[0]);}catch(e){value=null;}
+return value;},write:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];}
+var kml=this.createElementNS(this.kmlns,"kml");var folder=this.createFolderXML();for(var i=0,len=features.length;i<len;++i){folder.appendChild(this.createPlacemarkXML(features[i]));}
+kml.appendChild(folder);return OpenLayers.Format.XML.prototype.write.apply(this,[kml]);},createFolderXML:function(){var folder=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var folderName=this.createElementNS(this.kmlns,"name");var folderNameText=this.createTextNode(this.foldersName);folderName.appendChild(folderNameText);folder.appendChild(folderName);}
+if(this.foldersDesc){var folderDesc=this.createElementNS(this.kmlns,"description");var folderDescText=this.createTextNode(this.foldersDesc);folderDesc.appendChild(folderDescText);folder.appendChild(folderDesc);}
+return folder;},createPlacemarkXML:function(feature){var placemarkName=this.createElementNS(this.kmlns,"name");var name=feature.style&&feature.style.label?feature.style.label:feature.attributes.name||feature.id;placemarkName.appendChild(this.createTextNode(name));var placemarkDesc=this.createElementNS(this.kmlns,"description");var desc=feature.attributes.description||this.placemarksDesc;placemarkDesc.appendChild(this.createTextNode(desc));var placemarkNode=this.createElementNS(this.kmlns,"Placemark");if(feature.fid!=null){placemarkNode.setAttribute("id",feature.fid);}
+placemarkNode.appendChild(placemarkName);placemarkNode.appendChild(placemarkDesc);var geometryNode=this.buildGeometryNode(feature.geometry);placemarkNode.appendChild(geometryNode);return placemarkNode;},buildGeometryNode:function(geometry){var className=geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);var builder=this.buildGeometry[type.toLowerCase()];var node=null;if(builder){node=builder.apply(this,[geometry]);}
+return node;},buildGeometry:{point:function(geometry){var kml=this.createElementNS(this.kmlns,"Point");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multipoint:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linestring:function(geometry){var kml=this.createElementNS(this.kmlns,"LineString");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multilinestring:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linearring:function(geometry){var kml=this.createElementNS(this.kmlns,"LinearRing");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},polygon:function(geometry){var kml=this.createElementNS(this.kmlns,"Polygon");var rings=geometry.components;var ringMember,ringGeom,type;for(var i=0,len=rings.length;i<len;++i){type=(i==0)?"outerBoundaryIs":"innerBoundaryIs";ringMember=this.createElementNS(this.kmlns,type);ringGeom=this.buildGeometry.linearring.apply(this,[rings[i]]);ringMember.appendChild(ringGeom);kml.appendChild(ringMember);}
+return kml;},multipolygon:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},collection:function(geometry){var kml=this.createElementNS(this.kmlns,"MultiGeometry");var child;for(var i=0,len=geometry.components.length;i<len;++i){child=this.buildGeometryNode.apply(this,[geometry.components[i]]);if(child){kml.appendChild(child);}}
+return kml;}},buildCoordinatesNode:function(geometry){var coordinatesNode=this.createElementNS(this.kmlns,"coordinates");var path;var points=geometry.components;if(points){var point;var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i<numPoints;++i){point=points[i];parts[i]=this.buildCoordinates(point);}
+path=parts.join(" ");}else{path=this.buildCoordinates(geometry);}
+var txtNode=this.createTextNode(path);coordinatesNode.appendChild(txtNode);return coordinatesNode;},buildCoordinates:function(point){if(this.internalProjection&&this.externalProjection){point=point.clone();point.transform(this.internalProjection,this.externalProjection);}
+return point.x+","+point.y;},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:false,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:false,fixPadding:function(){if(typeof this.padding=="number"){this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding);}},panMapIfOutOfView:false,keepInMap:false,closeOnMove:false,map:null,initialize:function(id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback){if(id==null){id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}
+this.id=id;this.lonlat=lonlat;this.contentSize=(contentSize!=null)?contentSize:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);if(contentHTML!=null){this.contentHTML=contentHTML;}
+this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;var groupDivId=this.id+"_GroupDiv";this.groupDiv=OpenLayers.Util.createDiv(groupDivId,null,null,null,"relative",null,"hidden");var id=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(id,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);if(closeBox){this.addCloseBox(closeBoxCallback);}
+this.registerEvents();},destroy:function(){this.id=null;this.lonlat=null;this.size=null;this.contentHTML=null;this.backgroundColor=null;this.opacity=null;this.border=null;if(this.closeOnMove&&this.map){this.map.events.unregister("movestart",this,this.hide);}
+this.events.destroy();this.events=null;if(this.closeDiv){OpenLayers.Event.stopObservingElement(this.closeDiv);this.groupDiv.removeChild(this.closeDiv);}
+this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;if(this.map!=null){this.map.removePopup(this);}
+this.map=null;this.div=null;this.autoSize=null;this.minSize=null;this.maxSize=null;this.padding=null;this.panMapIfOutOfView=null;},draw:function(px){if(px==null){if((this.lonlat!=null)&&(this.map!=null)){px=this.map.getLayerPxFromLonLat(this.lonlat);}}
+if(this.closeOnMove){this.map.events.register("movestart",this,this.hide);}
+if(!this.disableFirefoxOverflowHack&&OpenLayers.BROWSER_NAME=='firefox'){this.map.events.register("movestart",this,function(){var style=document.defaultView.getComputedStyle(this.contentDiv,null);var currentOverflow=style.getPropertyValue("overflow");if(currentOverflow!="hidden"){this.contentDiv._oldOverflow=currentOverflow;this.contentDiv.style.overflow="hidden";}});this.map.events.register("moveend",this,function(){var oldOverflow=this.contentDiv._oldOverflow;if(oldOverflow){this.contentDiv.style.overflow=oldOverflow;this.contentDiv._oldOverflow=null;}});}
+this.moveTo(px);if(!this.autoSize&&!this.size){this.setSize(this.contentSize);}
+this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();if(this.panMapIfOutOfView){this.panIntoView();}
+return this.div;},updatePosition:function(){if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);if(px){this.moveTo(px);}}},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},visible:function(){return OpenLayers.Element.visible(this.div);},toggle:function(){if(this.visible()){this.hide();}else{this.show();}},show:function(){this.div.style.display='';if(this.panMapIfOutOfView){this.panIntoView();}},hide:function(){this.div.style.display='none';},setSize:function(contentSize){this.size=contentSize.clone();var contentDivPadding=this.getContentDivPadding();var wPadding=contentDivPadding.left+contentDivPadding.right;var hPadding=contentDivPadding.top+contentDivPadding.bottom;this.fixPadding();wPadding+=this.padding.left+this.padding.right;hPadding+=this.padding.top+this.padding.bottom;if(this.closeDiv){var closeDivWidth=parseInt(this.closeDiv.style.width);wPadding+=closeDivWidth+contentDivPadding.right;}
+this.size.w+=wPadding;this.size.h+=hPadding;if(OpenLayers.BROWSER_NAME=="msie"){this.contentSize.w+=contentDivPadding.left+contentDivPadding.right;this.contentSize.h+=contentDivPadding.bottom+contentDivPadding.top;}
+if(this.div!=null){this.div.style.width=this.size.w+"px";this.div.style.height=this.size.h+"px";}
+if(this.contentDiv!=null){this.contentDiv.style.width=contentSize.w+"px";this.contentDiv.style.height=contentSize.h+"px";}},updateSize:function(){var preparedHTML="<div class='"+this.contentDisplayClass+"'>"+
+this.contentDiv.innerHTML+"</div>";var containerElement=(this.map)?this.map.layerContainerDiv:document.body;var realSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,null,{displayClass:this.displayClass,containerElement:containerElement});var safeSize=this.getSafeContentSize(realSize);var newSize=null;if(safeSize.equals(realSize)){newSize=realSize;}else{var fixedSize=new OpenLayers.Size();fixedSize.w=(safeSize.w<realSize.w)?safeSize.w:null;fixedSize.h=(safeSize.h<realSize.h)?safeSize.h:null;if(fixedSize.w&&fixedSize.h){newSize=safeSize;}else{var clippedSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,fixedSize,{displayClass:this.contentDisplayClass,containerElement:containerElement});var currentOverflow=OpenLayers.Element.getStyle(this.contentDiv,"overflow");if((currentOverflow!="hidden")&&(clippedSize.equals(safeSize))){var scrollBar=OpenLayers.Util.getScrollbarWidth();if(fixedSize.w){clippedSize.h+=scrollBar;}else{clippedSize.w+=scrollBar;}}
+newSize=this.getSafeContentSize(clippedSize);}}
+this.setSize(newSize);},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;}
+if(this.div!=null){this.div.style.backgroundColor=this.backgroundColor;}},setOpacity:function(opacity){if(opacity!=undefined){this.opacity=opacity;}
+if(this.div!=null){this.div.style.opacity=this.opacity;this.div.style.filter='alpha(opacity='+this.opacity*100+')';}},setBorder:function(border){if(border!=undefined){this.border=border;}
+if(this.div!=null){this.div.style.border=this.border;}},setContentHTML:function(contentHTML){if(contentHTML!=null){this.contentHTML=contentHTML;}
+if((this.contentDiv!=null)&&(this.contentHTML!=null)&&(this.contentHTML!=this.contentDiv.innerHTML)){this.contentDiv.innerHTML=this.contentHTML;if(this.autoSize){this.registerImageListeners();this.updateSize();}}},registerImageListeners:function(){var onImgLoad=function(){this.popup.updateSize();if(this.popup.visible()&&this.popup.panMapIfOutOfView){this.popup.panIntoView();}
+OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad);};var images=this.contentDiv.getElementsByTagName("img");for(var i=0,len=images.length;i<len;i++){var img=images[i];if(img.width==0||img.height==0){var context={'popup':this,'img':img};img._onImgLoad=OpenLayers.Function.bind(onImgLoad,context);OpenLayers.Event.observe(img,'load',img._onImgLoad);}}},getSafeContentSize:function(size){var safeContentSize=size.clone();var contentDivPadding=this.getContentDivPadding();var wPadding=contentDivPadding.left+contentDivPadding.right;var hPadding=contentDivPadding.top+contentDivPadding.bottom;this.fixPadding();wPadding+=this.padding.left+this.padding.right;hPadding+=this.padding.top+this.padding.bottom;if(this.closeDiv){var closeDivWidth=parseInt(this.closeDiv.style.width);wPadding+=closeDivWidth+contentDivPadding.right;}
+if(this.minSize){safeContentSize.w=Math.max(safeContentSize.w,(this.minSize.w-wPadding));safeContentSize.h=Math.max(safeContentSize.h,(this.minSize.h-hPadding));}
+if(this.maxSize){safeContentSize.w=Math.min(safeContentSize.w,(this.maxSize.w-wPadding));safeContentSize.h=Math.min(safeContentSize.h,(this.maxSize.h-hPadding));}
+if(this.map&&this.map.size){var extraX=0,extraY=0;if(this.keepInMap&&!this.panMapIfOutOfView){var px=this.map.getPixelFromLonLat(this.lonlat);switch(this.relativePosition){case"tr":extraX=px.x;extraY=this.map.size.h-px.y;break;case"tl":extraX=this.map.size.w-px.x;extraY=this.map.size.h-px.y;break;case"bl":extraX=this.map.size.w-px.x;extraY=px.y;break;case"br":extraX=px.x;extraY=px.y;break;default:extraX=px.x;extraY=this.map.size.h-px.y;break;}}
+var maxY=this.map.size.h-
+this.map.paddingForPopups.top-
+this.map.paddingForPopups.bottom-
+hPadding-extraY;var maxX=this.map.size.w-
+this.map.paddingForPopups.left-
+this.map.paddingForPopups.right-
+wPadding-extraX;safeContentSize.w=Math.min(safeContentSize.w,maxX);safeContentSize.h=Math.min(safeContentSize.h,maxY);}
+return safeContentSize;},getContentDivPadding:function(){var contentDivPadding=this._contentDivPadding;if(!contentDivPadding){if(this.div.parentNode==null){this.div.style.display="none";document.body.appendChild(this.div);}
+contentDivPadding=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,"padding-top"));this._contentDivPadding=contentDivPadding;if(this.div.parentNode==document.body){document.body.removeChild(this.div);this.div.style.display="";}}
+return contentDivPadding;},addCloseBox:function(callback){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,new OpenLayers.Size(17,17));this.closeDiv.className="olPopupCloseBox";var contentDivPadding=this.getContentDivPadding();this.closeDiv.style.right=contentDivPadding.right+"px";this.closeDiv.style.top=contentDivPadding.top+"px";this.groupDiv.appendChild(this.closeDiv);var closePopup=callback||function(e){this.hide();OpenLayers.Event.stop(e);};OpenLayers.Event.observe(this.closeDiv,"touchend",OpenLayers.Function.bindAsEventListener(closePopup,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(closePopup,this));},panIntoView:function(){var mapSize=this.map.getSize();var origTL=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top)));var newTL=origTL.clone();if(origTL.x<this.map.paddingForPopups.left){newTL.x=this.map.paddingForPopups.left;}else
+if((origTL.x+this.size.w)>(mapSize.w-this.map.paddingForPopups.right)){newTL.x=mapSize.w-this.map.paddingForPopups.right-this.size.w;}
+if(origTL.y<this.map.paddingForPopups.top){newTL.y=this.map.paddingForPopups.top;}else
+if((origTL.y+this.size.h)>(mapSize.h-this.map.paddingForPopups.bottom)){newTL.y=mapSize.h-this.map.paddingForPopups.bottom-this.size.h;}
+var dx=origTL.x-newTL.x;var dy=origTL.y-newTL.y;this.map.pan(dx,dy);},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,true);function onTouchstart(evt){OpenLayers.Event.stop(evt,true);}
+this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,"touchstart":onTouchstart,scope:this});},onmousedown:function(evt){this.mousedown=true;OpenLayers.Event.stop(evt,true);},onmousemove:function(evt){if(this.mousedown){OpenLayers.Event.stop(evt,true);}},onmouseup:function(evt){if(this.mousedown){this.mousedown=false;OpenLayers.Event.stop(evt,true);}},onclick:function(evt){OpenLayers.Event.stop(evt,true);},onmouseout:function(evt){this.mousedown=false;},ondblclick:function(evt){OpenLayers.Event.stop(evt,true);},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:true,anchor:null,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=[id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback];OpenLayers.Popup.prototype.initialize.apply(this,newArguments);this.anchor=(anchor!=null)?anchor:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)};},destroy:function(){this.anchor=null;this.relativePosition=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments);},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments);},moveTo:function(px){var oldRelativePosition=this.relativePosition;this.relativePosition=this.calculateRelativePosition(px);var newPx=this.calculateNewPx(px);var newArguments=new Array(newPx);OpenLayers.Popup.prototype.moveTo.apply(this,newArguments);if(this.relativePosition!=oldRelativePosition){this.updateRelativePosition();}},setSize:function(contentSize){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(px);}},calculateRelativePosition:function(px){var lonlat=this.map.getLonLatFromLayerPx(px);var extent=this.map.getExtent();var quadrant=extent.determineQuadrant(lonlat);return OpenLayers.Bounds.oppositeQuadrant(quadrant);},updateRelativePosition:function(){},calculateNewPx:function(px){var newPx=px.offset(this.anchor.offset);var size=this.size||this.contentSize;var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Rico=OpenLayers.Rico||{};OpenLayers.Rico.Color=OpenLayers.Class({initialize:function(red,green,blue){this.rgb={r:red,g:green,b:blue};},setRed:function(r){this.rgb.r=r;},setGreen:function(g){this.rgb.g=g;},setBlue:function(b){this.rgb.b=b;},setHue:function(h){var hsb=this.asHSB();hsb.h=h;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setSaturation:function(s){var hsb=this.asHSB();hsb.s=s;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},setBrightness:function(b){var hsb=this.asHSB();hsb.b=b;this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,hsb.b);},darken:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.max(hsb.b-percent,0));},brighten:function(percent){var hsb=this.asHSB();this.rgb=OpenLayers.Rico.Color.HSBtoRGB(hsb.h,hsb.s,Math.min(hsb.b+percent,1));},blend:function(other){this.rgb.r=Math.floor((this.rgb.r+other.rgb.r)/2);this.rgb.g=Math.floor((this.rgb.g+other.rgb.g)/2);this.rgb.b=Math.floor((this.rgb.b+other.rgb.b)/2);},isBright:function(){var hsb=this.asHSB();return this.asHSB().b>0.5;},isDark:function(){return!this.isBright();},asRGB:function(){return"rgb("+this.rgb.r+","+this.rgb.g+","+this.rgb.b+")";},asHex:function(){return"#"+this.rgb.r.toColorPart()+this.rgb.g.toColorPart()+this.rgb.b.toColorPart();},asHSB:function(){return OpenLayers.Rico.Color.RGBtoHSB(this.rgb.r,this.rgb.g,this.rgb.b);},toString:function(){return this.asHex();}});OpenLayers.Rico.Color.createFromHex=function(hexCode){if(hexCode.length==4){var shortHexCode=hexCode;var hexCode='#';for(var i=1;i<4;i++){hexCode+=(shortHexCode.charAt(i)+
+shortHexCode.charAt(i));}}
+if(hexCode.indexOf('#')==0){hexCode=hexCode.substring(1);}
+var red=hexCode.substring(0,2);var green=hexCode.substring(2,4);var blue=hexCode.substring(4,6);return new OpenLayers.Rico.Color(parseInt(red,16),parseInt(green,16),parseInt(blue,16));};OpenLayers.Rico.Color.createColorFromBackground=function(elem){var actualColor=OpenLayers.Element.getStyle(OpenLayers.Util.getElement(elem),"backgroundColor");if(actualColor=="transparent"&&elem.parentNode){return OpenLayers.Rico.Color.createColorFromBackground(elem.parentNode);}
+if(actualColor==null){return new OpenLayers.Rico.Color(255,255,255);}
+if(actualColor.indexOf("rgb(")==0){var colors=actualColor.substring(4,actualColor.length-1);var colorArray=colors.split(",");return new OpenLayers.Rico.Color(parseInt(colorArray[0]),parseInt(colorArray[1]),parseInt(colorArray[2]));}
+else if(actualColor.indexOf("#")==0){return OpenLayers.Rico.Color.createFromHex(actualColor);}
+else{return new OpenLayers.Rico.Color(255,255,255);}};OpenLayers.Rico.Color.HSBtoRGB=function(hue,saturation,brightness){var red=0;var green=0;var blue=0;if(saturation==0){red=parseInt(brightness*255.0+0.5);green=red;blue=red;}
+else{var h=(hue-Math.floor(hue))*6.0;var f=h-Math.floor(h);var p=brightness*(1.0-saturation);var q=brightness*(1.0-saturation*f);var t=brightness*(1.0-(saturation*(1.0-f)));switch(parseInt(h)){case 0:red=(brightness*255.0+0.5);green=(t*255.0+0.5);blue=(p*255.0+0.5);break;case 1:red=(q*255.0+0.5);green=(brightness*255.0+0.5);blue=(p*255.0+0.5);break;case 2:red=(p*255.0+0.5);green=(brightness*255.0+0.5);blue=(t*255.0+0.5);break;case 3:red=(p*255.0+0.5);green=(q*255.0+0.5);blue=(brightness*255.0+0.5);break;case 4:red=(t*255.0+0.5);green=(p*255.0+0.5);blue=(brightness*255.0+0.5);break;case 5:red=(brightness*255.0+0.5);green=(p*255.0+0.5);blue=(q*255.0+0.5);break;}}
+return{r:parseInt(red),g:parseInt(green),b:parseInt(blue)};};OpenLayers.Rico.Color.RGBtoHSB=function(r,g,b){var hue;var saturation;var brightness;var cmax=(r>g)?r:g;if(b>cmax){cmax=b;}
+var cmin=(r<g)?r:g;if(b<cmin){cmin=b;}
+brightness=cmax/255.0;if(cmax!=0){saturation=(cmax-cmin)/cmax;}else{saturation=0;}
+if(saturation==0){hue=0;}else{var redc=(cmax-r)/(cmax-cmin);var greenc=(cmax-g)/(cmax-cmin);var bluec=(cmax-b)/(cmax-cmin);if(r==cmax){hue=bluec-greenc;}else if(g==cmax){hue=2.0+redc-bluec;}else{hue=4.0+greenc-redc;}
+hue=hue/6.0;if(hue<0){hue=hue+1.0;}}
+return{h:hue,s:saturation,b:brightness};};OpenLayers.Rico=OpenLayers.Rico||{};OpenLayers.Rico.Corner={round:function(e,options){e=OpenLayers.Util.getElement(e);this._setOptions(options);var color=this.options.color;if(this.options.color=="fromElement"){color=this._background(e);}
+var bgColor=this.options.bgColor;if(this.options.bgColor=="fromParent"){bgColor=this._background(e.offsetParent);}
+this._roundCornersImpl(e,color,bgColor);},changeColor:function(theDiv,newColor){theDiv.style.backgroundColor=newColor;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx<spanElements.length;currIdx++){spanElements[currIdx].style.backgroundColor=newColor;}},changeOpacity:function(theDiv,newOpacity){var mozillaOpacity=newOpacity;var ieOpacity='alpha(opacity='+newOpacity*100+')';theDiv.style.opacity=mozillaOpacity;theDiv.style.filter=ieOpacity;var spanElements=theDiv.parentNode.getElementsByTagName("span");for(var currIdx=0;currIdx<spanElements.length;currIdx++){spanElements[currIdx].style.opacity=mozillaOpacity;spanElements[currIdx].style.filter=ieOpacity;}},reRound:function(theDiv,options){var topRico=theDiv.parentNode.childNodes[0];var bottomRico=theDiv.parentNode.childNodes[2];theDiv.parentNode.removeChild(topRico);theDiv.parentNode.removeChild(bottomRico);this.round(theDiv.parentNode,options);},_roundCornersImpl:function(e,color,bgColor){if(this.options.border){this._renderBorder(e,bgColor);}
+if(this._isTopRounded()){this._roundTopCorners(e,color,bgColor);}
+if(this._isBottomRounded()){this._roundBottomCorners(e,color,bgColor);}},_renderBorder:function(el,bgColor){var borderValue="1px solid "+this._borderColor(bgColor);var borderL="border-left: "+borderValue;var borderR="border-right: "+borderValue;var style="style='"+borderL+";"+borderR+"'";el.innerHTML="<div "+style+">"+el.innerHTML+"</div>";},_roundTopCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=0;i<this.options.numSlices;i++){corner.appendChild(this._createCornerSlice(color,bgColor,i,"top"));}
+el.style.paddingTop=0;el.insertBefore(corner,el.firstChild);},_roundBottomCorners:function(el,color,bgColor){var corner=this._createCorner(bgColor);for(var i=(this.options.numSlices-1);i>=0;i--){corner.appendChild(this._createCornerSlice(color,bgColor,i,"bottom"));}
+el.style.paddingBottom=0;el.appendChild(corner);},_createCorner:function(bgColor){var corner=document.createElement("div");corner.style.backgroundColor=(this._isTransparent()?"transparent":bgColor);return corner;},_createCornerSlice:function(color,bgColor,n,position){var slice=document.createElement("span");var inStyle=slice.style;inStyle.backgroundColor=color;inStyle.display="block";inStyle.height="1px";inStyle.overflow="hidden";inStyle.fontSize="1px";var borderColor=this._borderColor(color,bgColor);if(this.options.border&&n==0){inStyle.borderTopStyle="solid";inStyle.borderTopWidth="1px";inStyle.borderLeftWidth="0px";inStyle.borderRightWidth="0px";inStyle.borderBottomWidth="0px";inStyle.height="0px";inStyle.borderColor=borderColor;}
+else if(borderColor){inStyle.borderColor=borderColor;inStyle.borderStyle="solid";inStyle.borderWidth="0px 1px";}
+if(!this.options.compact&&(n==(this.options.numSlices-1))){inStyle.height="2px";}
+this._setMargin(slice,n,position);this._setBorder(slice,n,position);return slice;},_setOptions:function(options){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};OpenLayers.Util.extend(this.options,options||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()){this.options.blend=false;}},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")){return"";}
+if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0){return"";}
+if(this.options.corners.indexOf("tl")>=0){return"left";}else if(this.options.corners.indexOf("tr")>=0){return"right";}
+return"";},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")){return"";}
+if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0){return"";}
+if(this.options.corners.indexOf("bl")>=0){return"left";}else if(this.options.corners.indexOf("br")>=0){return"right";}
+return"";},_borderColor:function(color,bgColor){if(color=="transparent"){return bgColor;}else if(this.options.border){return this.options.border;}else if(this.options.blend){return this._blend(bgColor,color);}else{return"";}},_setMargin:function(el,n,corners){var marginSize=this._marginSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.marginLeft=marginSize+"px";el.style.marginRight="0px";}
+else if(whichSide=="right"){el.style.marginRight=marginSize+"px";el.style.marginLeft="0px";}
+else{el.style.marginLeft=marginSize+"px";el.style.marginRight=marginSize+"px";}},_setBorder:function(el,n,corners){var borderSize=this._borderSize(n);var whichSide=corners=="top"?this._whichSideTop():this._whichSideBottom();if(whichSide=="left"){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth="0px";}
+else if(whichSide=="right"){el.style.borderRightWidth=borderSize+"px";el.style.borderLeftWidth="0px";}
+else{el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}
+if(this.options.border!=false){el.style.borderLeftWidth=borderSize+"px";el.style.borderRightWidth=borderSize+"px";}},_marginSize:function(n){if(this._isTransparent()){return 0;}
+var marginSizes=[5,3,2,1];var blendedMarginSizes=[3,2,1,0];var compactMarginSizes=[2,1];var smBlendedMarginSizes=[1,0];if(this.options.compact&&this.options.blend){return smBlendedMarginSizes[n];}else if(this.options.compact){return compactMarginSizes[n];}else if(this.options.blend){return blendedMarginSizes[n];}else{return marginSizes[n];}},_borderSize:function(n){var transparentBorderSizes=[5,3,2,1];var blendedBorderSizes=[2,1,1,1];var compactBorderSizes=[1,0];var actualBorderSizes=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1;}else if(this.options.compact){return compactBorderSizes[n];}else if(this.options.blend){return blendedBorderSizes[n];}else if(this.options.border){return actualBorderSizes[n];}else if(this._isTransparent()){return transparentBorderSizes[n];}
+return 0;},_hasString:function(str){for(var i=1;i<arguments.length;i++)if(str.indexOf(arguments[i])>=0){return true;}return false;},_blend:function(c1,c2){var cc1=OpenLayers.Rico.Color.createFromHex(c1);cc1.blend(OpenLayers.Rico.Color.createFromHex(c2));return cc1;},_background:function(el){try{return OpenLayers.Rico.Color.createColorFromBackground(el).asHex();}catch(err){return"#ffffff";}},_isTransparent:function(){return this.options.color=="transparent";},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr");},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br");},_hasSingleTextChild:function(el){return el.childNodes.length==1&&el.childNodes[0].nodeType==3;}};OpenLayers.Popup.AnchoredBubble=OpenLayers.Class(OpenLayers.Popup.Anchored,{rounded:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.padding=new OpenLayers.Bounds(0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE,0,OpenLayers.Popup.AnchoredBubble.CORNER_SIZE);OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);},draw:function(px){OpenLayers.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.setBackgroundColor();this.setOpacity();return this.div;},updateRelativePosition:function(){this.setRicoCorners();},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners();},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;}
+if(this.div!=null){if(this.contentDiv!=null){this.div.style.background="transparent";OpenLayers.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor);}}},setOpacity:function(opacity){OpenLayers.Popup.Anchored.prototype.setOpacity.call(this,opacity);if(this.div!=null){if(this.groupDiv!=null){OpenLayers.Rico.Corner.changeOpacity(this.groupDiv,this.opacity);}}},setBorder:function(border){this.border=0;},setRicoCorners:function(){var corners=this.getCornersToRound(this.relativePosition);var options={corners:corners,color:this.backgroundColor,bgColor:"transparent",blend:false};if(!this.rounded){OpenLayers.Rico.Corner.round(this.div,options);this.rounded=true;}else{OpenLayers.Rico.Corner.reRound(this.groupDiv,options);this.setBackgroundColor();this.setOpacity();}},getCornersToRound:function(){var corners=['tl','tr','bl','br'];var corner=OpenLayers.Bounds.oppositeQuadrant(this.relativePosition);OpenLayers.Util.removeItem(corners,corner);return corners.join(" ");},CLASS_NAME:"OpenLayers.Popup.AnchoredBubble"});OpenLayers.Popup.AnchoredBubble.CORNER_SIZE=5;OpenLayers.Protocol.WFS.v1=OpenLayers.Class(OpenLayers.Protocol,{version:null,srsName:"EPSG:4326",featureType:null,featureNS:null,geometryName:"the_geom",schema:null,featurePrefix:"feature",formatOptions:null,readFormat:null,readOptions:null,initialize:function(options){OpenLayers.Protocol.prototype.initialize.apply(this,[options]);if(!options.format){this.format=OpenLayers.Format.WFST(OpenLayers.Util.extend({version:this.version,featureType:this.featureType,featureNS:this.featureNS,featurePrefix:this.featurePrefix,geometryName:this.geometryName,srsName:this.srsName,schema:this.schema},this.formatOptions));}
+if(!options.geometryName&&parseFloat(this.format.version)>1.0){this.setGeometryName(null);}},destroy:function(){if(this.options&&!this.options.format){this.format.destroy();}
+this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options||{});var response=new OpenLayers.Protocol.Response({requestType:"read"});var data=OpenLayers.Format.XML.prototype.write.apply(this.format,[this.format.writeNode("wfs:GetFeature",options)]);response.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,response,options),params:options.params,headers:options.headers,data:data});return response;},setFeatureType:function(featureType){this.featureType=featureType;this.format.featureType=featureType;},setGeometryName:function(geometryName){this.geometryName=geometryName;this.format.geometryName=geometryName;},handleRead:function(response,options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options);if(options.callback){var request=response.priv;if(request.status>=200&&request.status<300){var result=this.parseResponse(request,options.readOptions);if(result&&result.success!==false){if(options.readOptions&&options.readOptions.output=="object"){OpenLayers.Util.extend(response,result);}else{response.features=result;}
+response.code=OpenLayers.Protocol.Response.SUCCESS;}else{response.code=OpenLayers.Protocol.Response.FAILURE;response.error=result;}}else{response.code=OpenLayers.Protocol.Response.FAILURE;}
+options.callback.call(options.scope,response);}},parseResponse:function(request,options){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+if(!doc||doc.length<=0){return null;}
+var result=(this.readFormat!==null)?this.readFormat.read(doc):this.format.read(doc,options);if(!this.featureNS){var format=this.readFormat||this.format;this.featureNS=format.featureNS;format.autoConfig=false;if(!this.geometryName){this.setGeometryName(format.geometryName);}}
+return result;},commit:function(features,options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options);var response=new OpenLayers.Protocol.Response({requestType:"commit",reqFeatures:features});response.priv=OpenLayers.Request.POST({url:options.url,headers:options.headers,data:this.format.write(features,options),callback:this.createCallback(this.handleCommit,response,options)});return response;},handleCommit:function(response,options){if(options.callback){var request=response.priv;var data=request.responseXML;if(!data||!data.documentElement){data=request.responseText;}
+var obj=this.format.read(data)||{};response.insertIds=obj.insertIds||[];if(obj.success){response.code=OpenLayers.Protocol.Response.SUCCESS;}else{response.code=OpenLayers.Protocol.Response.FAILURE;response.error=obj;}
+options.callback.call(options.scope,response);}},filterDelete:function(filter,options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options);var response=new OpenLayers.Protocol.Response({requestType:"commit"});var root=this.format.createElementNSPlus("wfs:Transaction",{attributes:{service:"WFS",version:this.version}});var deleteNode=this.format.createElementNSPlus("wfs:Delete",{attributes:{typeName:(options.featureNS?this.featurePrefix+":":"")+
+options.featureType}});if(options.featureNS){deleteNode.setAttribute("xmlns:"+this.featurePrefix,options.featureNS);}
+var filterNode=this.format.writeNode("ogc:Filter",filter);deleteNode.appendChild(filterNode);root.appendChild(deleteNode);var data=OpenLayers.Format.XML.prototype.write.apply(this.format,[root]);return OpenLayers.Request.POST({url:this.url,callback:options.callback||function(){},data:data});},abort:function(response){if(response){response.priv.abort();}},CLASS_NAME:"OpenLayers.Protocol.WFS.v1"});OpenLayers.Handler.Point=OpenLayers.Class(OpenLayers.Handler,{point:null,layer:null,multi:false,mouseDown:false,stoppedDown:null,lastDown:null,lastUp:null,persist:false,stopDown:false,stopUp:false,layerOptions:null,pixelTolerance:5,touch:false,lastTouchPx:null,initialize:function(control,callbacks,options){if(!(options&&options.layerOptions&&options.layerOptions.styleMap)){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});}
+OpenLayers.Handler.prototype.initialize.apply(this,arguments);},activate:function(){if(!OpenLayers.Handler.prototype.activate.apply(this,arguments)){return false;}
+var options=OpenLayers.Util.extend({displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);return true;},createFeature:function(pixel){var lonlat=this.map.getLonLatFromPixel(pixel);var geometry=new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);this.point=new OpenLayers.Feature.Vector(geometry);this.callback("create",[this.point.geometry,this.point]);this.point.geometry.clearBounds();this.layer.addFeatures([this.point],{silent:true});},deactivate:function(){if(!OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){return false;}
+this.cancel();if(this.layer.map!=null){this.destroyFeature(true);this.layer.destroy(false);}
+this.layer=null;this.touch=false;return true;},destroyFeature:function(force){if(this.layer&&(force||!this.persist)){this.layer.destroyFeatures();}
+this.point=null;},destroyPersistedFeature:function(){var layer=this.layer;if(layer&&layer.features.length>1){this.layer.features[0].destroy();}},finalize:function(cancel){var key=cancel?"cancel":"done";this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.lastTouchPx=null;this.callback(key,[this.geometryClone()]);this.destroyFeature(cancel);},cancel:function(){this.finalize(true);},click:function(evt){OpenLayers.Event.stop(evt);return false;},dblclick:function(evt){OpenLayers.Event.stop(evt);return false;},modifyFeature:function(pixel){if(!this.point){this.createFeature(pixel);}
+var lonlat=this.map.getLonLatFromPixel(pixel);this.point.geometry.x=lonlat.lon;this.point.geometry.y=lonlat.lat;this.callback("modify",[this.point.geometry,this.point,false]);this.point.geometry.clearBounds();this.drawFeature();},drawFeature:function(){this.layer.drawFeature(this.point,this.style);},getGeometry:function(){var geometry=this.point&&this.point.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiPoint([geometry]);}
+return geometry;},geometryClone:function(){var geom=this.getGeometry();return geom&&geom.clone();},mousedown:function(evt){return this.down(evt);},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this});}
+this.lastTouchPx=evt.xy;return this.down(evt);},mousemove:function(evt){return this.move(evt);},touchmove:function(evt){this.lastTouchPx=evt.xy;return this.move(evt);},mouseup:function(evt){return this.up(evt);},touchend:function(evt){evt.xy=this.lastTouchPx;return this.up(evt);},down:function(evt){this.mouseDown=true;this.lastDown=evt.xy;if(!this.touch){this.modifyFeature(evt.xy);}
+this.stoppedDown=this.stopDown;return!this.stopDown;},move:function(evt){if(!this.touch&&(!this.mouseDown||this.stoppedDown)){this.modifyFeature(evt.xy);}
+return true;},up:function(evt){this.mouseDown=false;this.stoppedDown=this.stopDown;if(!this.checkModifiers(evt)){return true;}
+if(this.lastUp&&this.lastUp.equals(evt.xy)){return true;}
+if(this.lastDown&&this.passesTolerance(this.lastDown,evt.xy,this.pixelTolerance)){if(this.touch){this.modifyFeature(evt.xy);}
+if(this.persist){this.destroyPersistedFeature();}
+this.lastUp=evt.xy;this.finalize();return!this.stopUp;}else{return true;}},mouseout:function(evt){if(OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){this.stoppedDown=this.stopDown;this.mouseDown=false;}},passesTolerance:function(pixel1,pixel2,tolerance){var passes=true;if(tolerance!=null&&pixel1&&pixel2){var dist=pixel1.distanceTo(pixel2);if(dist>tolerance){passes=false;}}
+return passes;},CLASS_NAME:"OpenLayers.Handler.Point"});OpenLayers.Handler.Path=OpenLayers.Class(OpenLayers.Handler.Point,{line:null,maxVertices:null,doubleTouchTolerance:20,freehand:false,freehandToggle:'shiftKey',timerId:null,redoStack:null,initialize:function(control,callbacks,options){OpenLayers.Handler.Point.prototype.initialize.apply(this,arguments);},createFeature:function(pixel){var lonlat=this.map.getLonLatFromPixel(pixel);var geometry=new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);this.point=new OpenLayers.Feature.Vector(geometry);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([this.point.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.line,this.point],{silent:true});},destroyFeature:function(force){OpenLayers.Handler.Point.prototype.destroyFeature.call(this,force);this.line=null;},destroyPersistedFeature:function(){var layer=this.layer;if(layer&&layer.features.length>2){this.layer.features[0].destroy();}},removePoint:function(){if(this.point){this.layer.removeFeatures([this.point]);}},addPoint:function(pixel){this.layer.removeFeatures([this.point]);var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat));this.line.geometry.addComponent(this.point.geometry,this.line.geometry.components.length);this.layer.addFeatures([this.point]);this.callback("point",[this.point.geometry,this.getGeometry()]);this.callback("modify",[this.point.geometry,this.getSketch()]);this.drawFeature();delete this.redoStack;},insertXY:function(x,y){this.line.geometry.addComponent(new OpenLayers.Geometry.Point(x,y),this.getCurrentPointIndex());this.drawFeature();delete this.redoStack;},insertDeltaXY:function(dx,dy){var previousIndex=this.getCurrentPointIndex()-1;var p0=this.line.geometry.components[previousIndex];if(p0&&!isNaN(p0.x)&&!isNaN(p0.y)){this.insertXY(p0.x+dx,p0.y+dy);}},insertDirectionLength:function(direction,length){direction*=Math.PI/180;var dx=length*Math.cos(direction);var dy=length*Math.sin(direction);this.insertDeltaXY(dx,dy);},insertDeflectionLength:function(deflection,length){var previousIndex=this.getCurrentPointIndex()-1;if(previousIndex>0){var p1=this.line.geometry.components[previousIndex];var p0=this.line.geometry.components[previousIndex-1];var theta=Math.atan2(p1.y-p0.y,p1.x-p0.x);this.insertDirectionLength((theta*180/Math.PI)+deflection,length);}},getCurrentPointIndex:function(){return this.line.geometry.components.length-1;},undo:function(){var geometry=this.line.geometry;var components=geometry.components;var index=this.getCurrentPointIndex()-1;var target=components[index];var undone=geometry.removeComponent(target);if(undone){if(!this.redoStack){this.redoStack=[];}
+this.redoStack.push(target);this.drawFeature();}
+return undone;},redo:function(){var target=this.redoStack&&this.redoStack.pop();if(target){this.line.geometry.addComponent(target,this.getCurrentPointIndex());this.drawFeature();}
+return!!target;},freehandMode:function(evt){return(this.freehandToggle&&evt[this.freehandToggle])?!this.freehand:this.freehand;},modifyFeature:function(pixel,drawing){if(!this.line){this.createFeature(pixel);}
+var lonlat=this.control.map.getLonLatFromPixel(pixel);this.point.geometry.x=lonlat.lon;this.point.geometry.y=lonlat.lat;this.callback("modify",[this.point.geometry,this.getSketch(),drawing]);this.point.geometry.clearBounds();this.drawFeature();},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style);},getSketch:function(){return this.line;},getGeometry:function(){var geometry=this.line&&this.line.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiLineString([geometry]);}
+return geometry;},touchstart:function(evt){if(this.timerId&&this.passesTolerance(this.lastTouchPx,evt.xy,this.doubleTouchTolerance)){this.finishGeometry();window.clearTimeout(this.timerId);this.timerId=null;return false;}else{if(this.timerId){window.clearTimeout(this.timerId);this.timerId=null;}
+this.timerId=window.setTimeout(OpenLayers.Function.bind(function(){this.timerId=null;},this),300);return OpenLayers.Handler.Point.prototype.touchstart.call(this,evt);}},down:function(evt){var stopDown=this.stopDown;if(this.freehandMode(evt)){stopDown=true;}
+if(!this.touch&&(!this.lastDown||!this.passesTolerance(this.lastDown,evt.xy,this.pixelTolerance))){this.modifyFeature(evt.xy,!!this.lastUp);}
+this.mouseDown=true;this.lastDown=evt.xy;this.stoppedDown=stopDown;return!stopDown;},move:function(evt){if(this.stoppedDown&&this.freehandMode(evt)){if(this.persist){this.destroyPersistedFeature();}
+this.addPoint(evt.xy);return false;}
+if(!this.touch&&(!this.mouseDown||this.stoppedDown)){this.modifyFeature(evt.xy,!!this.lastUp);}
+return true;},up:function(evt){if(this.mouseDown&&(!this.lastUp||!this.lastUp.equals(evt.xy))){if(this.stoppedDown&&this.freehandMode(evt)){if(this.persist){this.destroyPersistedFeature();}
+this.removePoint();this.finalize();}else{if(this.passesTolerance(this.lastDown,evt.xy,this.pixelTolerance)){if(this.touch){this.modifyFeature(evt.xy);}
+if(this.lastUp==null&&this.persist){this.destroyPersistedFeature();}
+this.addPoint(evt.xy);this.lastUp=evt.xy;if(this.line.geometry.components.length===this.maxVertices+1){this.finishGeometry();}}}}
+this.stoppedDown=this.stopDown;this.mouseDown=false;return!this.stopUp;},finishGeometry:function(){var index=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[index]);this.removePoint();this.finalize();},dblclick:function(evt){if(!this.freehandMode(evt)){this.finishGeometry();}
+return false;},CLASS_NAME:"OpenLayers.Handler.Path"});OpenLayers.Layer.GML=OpenLayers.Class(OpenLayers.Layer.Vector,{loaded:false,format:null,formatOptions:null,initialize:function(name,url,options){var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);this.url=url;},setVisibility:function(visibility,noEvent){OpenLayers.Layer.Vector.prototype.setVisibility.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadGML();}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadGML();}},loadGML:function(){if(!this.loaded){this.events.triggerEvent("loadstart");OpenLayers.Request.GET({url:this.url,success:this.requestSuccess,failure:this.requestFailure,scope:this});this.loaded=true;}},setUrl:function(url){this.url=url;this.destroyFeatures();this.loaded=false;this.loadGML();},requestSuccess:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();}
+var gml=this.format?new this.format(options):new OpenLayers.Format.GML(options);this.addFeatures(gml.read(doc));this.events.triggerEvent("loadend");},requestFailure:function(request){OpenLayers.Console.userError(OpenLayers.i18n("errorLoadingGML",{'url':this.url}));this.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Layer.GML"});OpenLayers.Format.Context=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{layerOptions:null,layerParams:null,read:function(data,options){var context=OpenLayers.Format.XML.VersionedOGC.prototype.read.apply(this,arguments);var map;if(options&&options.map){this.context=context;if(options.map instanceof OpenLayers.Map){map=this.mergeContextToMap(context,options.map);}else{var mapOptions=options.map;if(OpenLayers.Util.isElement(mapOptions)||typeof mapOptions=="string"){mapOptions={div:mapOptions};}
+map=this.contextToMap(context,mapOptions);}}else{map=context;}
+return map;},getLayerFromContext:function(layerContext){var i,len;var options={queryable:layerContext.queryable,visibility:layerContext.visibility,maxExtent:layerContext.maxExtent,metadata:OpenLayers.Util.applyDefaults(layerContext.metadata,{styles:layerContext.styles,formats:layerContext.formats,"abstract":layerContext["abstract"],dataURL:layerContext.dataURL}),numZoomLevels:layerContext.numZoomLevels,units:layerContext.units,isBaseLayer:layerContext.isBaseLayer,opacity:layerContext.opacity,displayInLayerSwitcher:layerContext.displayInLayerSwitcher,singleTile:layerContext.singleTile,tileSize:(layerContext.tileSize)?new OpenLayers.Size(layerContext.tileSize.width,layerContext.tileSize.height):undefined,minScale:layerContext.minScale||layerContext.maxScaleDenominator,maxScale:layerContext.maxScale||layerContext.minScaleDenominator,srs:layerContext.srs,dimensions:layerContext.dimensions,metadataURL:layerContext.metadataURL};if(this.layerOptions){OpenLayers.Util.applyDefaults(options,this.layerOptions);}
+var params={layers:layerContext.name,transparent:layerContext.transparent,version:layerContext.version};if(layerContext.formats&&layerContext.formats.length>0){params.format=layerContext.formats[0].value;for(i=0,len=layerContext.formats.length;i<len;i++){var format=layerContext.formats[i];if(format.current==true){params.format=format.value;break;}}}
+if(layerContext.styles&&layerContext.styles.length>0){for(i=0,len=layerContext.styles.length;i<len;i++){var style=layerContext.styles[i];if(style.current==true){if(style.href){params.sld=style.href;}else if(style.body){params.sld_body=style.body;}else{params.styles=style.name;}
+break;}}}
+if(this.layerParams){OpenLayers.Util.applyDefaults(params,this.layerParams);}
+var layer=null;var service=layerContext.service;if(service==OpenLayers.Format.Context.serviceTypes.WFS){options.strategies=[new OpenLayers.Strategy.BBOX()];options.protocol=new OpenLayers.Protocol.WFS({url:layerContext.url,featurePrefix:layerContext.name.split(":")[0],featureType:layerContext.name.split(":").pop()});layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);}else if(service==OpenLayers.Format.Context.serviceTypes.KML){options.strategies=[new OpenLayers.Strategy.Fixed()];options.protocol=new OpenLayers.Protocol.HTTP({url:layerContext.url,format:new OpenLayers.Format.KML()});layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);}else if(service==OpenLayers.Format.Context.serviceTypes.GML){options.strategies=[new OpenLayers.Strategy.Fixed()];options.protocol=new OpenLayers.Protocol.HTTP({url:layerContext.url,format:new OpenLayers.Format.GML()});layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);}else if(layerContext.features){layer=new OpenLayers.Layer.Vector(layerContext.title||layerContext.name,options);layer.addFeatures(layerContext.features);}else if(layerContext.categoryLayer!==true){layer=new OpenLayers.Layer.WMS(layerContext.title||layerContext.name,layerContext.url,params,options);}
+return layer;},getLayersFromContext:function(layersContext){var layers=[];for(var i=0,len=layersContext.length;i<len;i++){var layer=this.getLayerFromContext(layersContext[i]);if(layer!==null){layers.push(layer);}}
+return layers;},contextToMap:function(context,options){options=OpenLayers.Util.applyDefaults({maxExtent:context.maxExtent,projection:context.projection,units:context.units},options);if(options.maxExtent){options.maxResolution=options.maxExtent.getWidth()/OpenLayers.Map.TILE_WIDTH;}
+var metadata={contactInformation:context.contactInformation,"abstract":context["abstract"],keywords:context.keywords,logo:context.logo,descriptionURL:context.descriptionURL}
+options.metadata=metadata;var map=new OpenLayers.Map(options);map.addLayers(this.getLayersFromContext(context.layersContext));map.setCenter(context.bounds.getCenterLonLat(),map.getZoomForExtent(context.bounds,true));return map;},mergeContextToMap:function(context,map){map.addLayers(this.getLayersFromContext(context.layersContext));return map;},write:function(obj,options){obj=this.toContext(obj);return OpenLayers.Format.XML.VersionedOGC.prototype.write.apply(this,arguments);},CLASS_NAME:"OpenLayers.Format.Context"});OpenLayers.Format.Context.serviceTypes={"WMS":"urn:ogc:serviceType:WMS","WFS":"urn:ogc:serviceType:WFS","WCS":"urn:ogc:serviceType:WCS","GML":"urn:ogc:serviceType:GML","SLD":"urn:ogc:serviceType:SLD","FES":"urn:ogc:serviceType:FES","KML":"urn:ogc:serviceType:KML"};OpenLayers.Format.WMC=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"1.1.0",layerToContext:function(layer){var parser=this.getParser();var layerContext={queryable:layer.queryable,visibility:layer.visibility,name:layer.params["LAYERS"],title:layer.name,"abstract":layer.metadata["abstract"],dataURL:layer.metadata.dataURL,metadataURL:layer.metadataURL,server:{version:layer.params["VERSION"],url:layer.url},maxExtent:layer.maxExtent,transparent:layer.params["TRANSPARENT"],numZoomLevels:layer.numZoomLevels,units:layer.units,isBaseLayer:layer.isBaseLayer,opacity:layer.opacity,displayInLayerSwitcher:layer.displayInLayerSwitcher,singleTile:layer.singleTile,tileSize:(layer.singleTile||!layer.tileSize)?undefined:{width:layer.tileSize.w,height:layer.tileSize.h},minScale:(layer.options.resolutions||layer.options.scales||layer.options.maxResolution||layer.options.minScale)?layer.minScale:undefined,maxScale:(layer.options.resolutions||layer.options.scales||layer.options.minResolution||layer.options.maxScale)?layer.maxScale:undefined,formats:[],styles:[],srs:layer.srs,dimensions:layer.dimensions};if(layer.metadata.servertitle){layerContext.server.title=layer.metadata.servertitle;}
+if(layer.metadata.formats&&layer.metadata.formats.length>0){for(var i=0,len=layer.metadata.formats.length;i<len;i++){var format=layer.metadata.formats[i];layerContext.formats.push({value:format.value,current:(format.value==layer.params["FORMAT"])});}}else{layerContext.formats.push({value:layer.params["FORMAT"],current:true});}
+if(layer.metadata.styles&&layer.metadata.styles.length>0){for(var i=0,len=layer.metadata.styles.length;i<len;i++){var style=layer.metadata.styles[i];if((style.href==layer.params["SLD"])||(style.body==layer.params["SLD_BODY"])||(style.name==layer.params["STYLES"])){style.current=true;}else{style.current=false;}
+layerContext.styles.push(style);}}else{layerContext.styles.push({href:layer.params["SLD"],body:layer.params["SLD_BODY"],name:layer.params["STYLES"]||parser.defaultStyleName,title:parser.defaultStyleTitle,current:true});}
+return layerContext;},toContext:function(obj){var context={};var layers=obj.layers;if(obj.CLASS_NAME=="OpenLayers.Map"){var metadata=obj.metadata||{};context.size=obj.getSize();context.bounds=obj.getExtent();context.projection=obj.projection;context.title=obj.title;context.keywords=metadata.keywords;context["abstract"]=metadata["abstract"];context.logo=metadata.logo;context.descriptionURL=metadata.descriptionURL;context.contactInformation=metadata.contactInformation;context.maxExtent=obj.maxExtent;}else{OpenLayers.Util.applyDefaults(context,obj);if(context.layers!=undefined){delete(context.layers);}}
+if(context.layersContext==undefined){context.layersContext=[];}
+if(layers!=undefined&&OpenLayers.Util.isArray(layers)){for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];if(layer instanceof OpenLayers.Layer.WMS){context.layersContext.push(this.layerToContext(layer));}}}
+return context;},CLASS_NAME:"OpenLayers.Format.WMC"});OpenLayers.Format.WMC.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"",getNamespacePrefix:function(uri){var prefix=null;if(uri==null){prefix=this.namespaces[this.defaultPrefix];}else{for(prefix in this.namespaces){if(this.namespaces[prefix]==uri){break;}}}
+return prefix;},defaultPrefix:"wmc",rootPrefix:null,defaultStyleName:"",defaultStyleTitle:"Default",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var root=data.documentElement;this.rootPrefix=root.prefix;var context={version:root.getAttribute("version")};this.runChildNodes(context,root);return context;},runChildNodes:function(obj,node){var children=node.childNodes;var childNode,processor,prefix,local;for(var i=0,len=children.length;i<len;++i){childNode=children[i];if(childNode.nodeType==1){prefix=this.getNamespacePrefix(childNode.namespaceURI);local=childNode.nodeName.split(":").pop();processor=this["read_"+prefix+"_"+local];if(processor){processor.apply(this,[obj,childNode]);}}}},read_wmc_General:function(context,node){this.runChildNodes(context,node);},read_wmc_BoundingBox:function(context,node){context.projection=node.getAttribute("SRS");context.bounds=new OpenLayers.Bounds(parseFloat(node.getAttribute("minx")),parseFloat(node.getAttribute("miny")),parseFloat(node.getAttribute("maxx")),parseFloat(node.getAttribute("maxy")));},read_wmc_LayerList:function(context,node){context.layersContext=[];this.runChildNodes(context,node);},read_wmc_Layer:function(context,node){var layerContext={visibility:(node.getAttribute("hidden")!="1"),queryable:(node.getAttribute("queryable")=="1"),formats:[],styles:[],metadata:{}};this.runChildNodes(layerContext,node);context.layersContext.push(layerContext);},read_wmc_Extension:function(obj,node){this.runChildNodes(obj,node);},read_ol_units:function(layerContext,node){layerContext.units=this.getChildValue(node);},read_ol_maxExtent:function(obj,node){var bounds=new OpenLayers.Bounds(node.getAttribute("minx"),node.getAttribute("miny"),node.getAttribute("maxx"),node.getAttribute("maxy"));obj.maxExtent=bounds;},read_ol_transparent:function(layerContext,node){layerContext.transparent=this.getChildValue(node);},read_ol_numZoomLevels:function(layerContext,node){layerContext.numZoomLevels=parseInt(this.getChildValue(node));},read_ol_opacity:function(layerContext,node){layerContext.opacity=parseFloat(this.getChildValue(node));},read_ol_singleTile:function(layerContext,node){layerContext.singleTile=(this.getChildValue(node)=="true");},read_ol_tileSize:function(layerContext,node){var obj={"width":node.getAttribute("width"),"height":node.getAttribute("height")};layerContext.tileSize=obj;},read_ol_isBaseLayer:function(layerContext,node){layerContext.isBaseLayer=(this.getChildValue(node)=="true");},read_ol_displayInLayerSwitcher:function(layerContext,node){layerContext.displayInLayerSwitcher=(this.getChildValue(node)=="true");},read_wmc_Server:function(layerContext,node){layerContext.version=node.getAttribute("version");layerContext.url=this.getOnlineResource_href(node);layerContext.metadata.servertitle=node.getAttribute("title");},read_wmc_FormatList:function(layerContext,node){this.runChildNodes(layerContext,node);},read_wmc_Format:function(layerContext,node){var format={value:this.getChildValue(node)};if(node.getAttribute("current")=="1"){format.current=true;}
+layerContext.formats.push(format);},read_wmc_StyleList:function(layerContext,node){this.runChildNodes(layerContext,node);},read_wmc_Style:function(layerContext,node){var style={};this.runChildNodes(style,node);if(node.getAttribute("current")=="1"){style.current=true;}
+layerContext.styles.push(style);},read_wmc_SLD:function(style,node){this.runChildNodes(style,node);},read_sld_StyledLayerDescriptor:function(sld,node){var xml=OpenLayers.Format.XML.prototype.write.apply(this,[node]);sld.body=xml;},read_sld_FeatureTypeStyle:function(sld,node){var xml=OpenLayers.Format.XML.prototype.write.apply(this,[node]);sld.body=xml;},read_wmc_OnlineResource:function(obj,node){obj.href=this.getAttributeNS(node,this.namespaces.xlink,"href");},read_wmc_Name:function(obj,node){var name=this.getChildValue(node);if(name){obj.name=name;}},read_wmc_Title:function(obj,node){var title=this.getChildValue(node);if(title){obj.title=title;}},read_wmc_MetadataURL:function(layerContext,node){layerContext.metadataURL=this.getOnlineResource_href(node);},read_wmc_KeywordList:function(context,node){context.keywords=[];this.runChildNodes(context.keywords,node);},read_wmc_Keyword:function(keywords,node){keywords.push(this.getChildValue(node));},read_wmc_Abstract:function(obj,node){var abst=this.getChildValue(node);if(abst){obj["abstract"]=abst;}},read_wmc_LogoURL:function(context,node){context.logo={width:node.getAttribute("width"),height:node.getAttribute("height"),format:node.getAttribute("format"),href:this.getOnlineResource_href(node)};},read_wmc_DescriptionURL:function(context,node){context.descriptionURL=this.getOnlineResource_href(node);},read_wmc_ContactInformation:function(obj,node){var contact={};this.runChildNodes(contact,node);obj.contactInformation=contact;},read_wmc_ContactPersonPrimary:function(contact,node){var personPrimary={};this.runChildNodes(personPrimary,node);contact.personPrimary=personPrimary;},read_wmc_ContactPerson:function(primaryPerson,node){var person=this.getChildValue(node);if(person){primaryPerson.person=person;}},read_wmc_ContactOrganization:function(primaryPerson,node){var organization=this.getChildValue(node);if(organization){primaryPerson.organization=organization;}},read_wmc_ContactPosition:function(contact,node){var position=this.getChildValue(node);if(position){contact.position=position;}},read_wmc_ContactAddress:function(contact,node){var contactAddress={};this.runChildNodes(contactAddress,node);contact.contactAddress=contactAddress;},read_wmc_AddressType:function(contactAddress,node){var type=this.getChildValue(node);if(type){contactAddress.type=type;}},read_wmc_Address:function(contactAddress,node){var address=this.getChildValue(node);if(address){contactAddress.address=address;}},read_wmc_City:function(contactAddress,node){var city=this.getChildValue(node);if(city){contactAddress.city=city;}},read_wmc_StateOrProvince:function(contactAddress,node){var stateOrProvince=this.getChildValue(node);if(stateOrProvince){contactAddress.stateOrProvince=stateOrProvince;}},read_wmc_PostCode:function(contactAddress,node){var postcode=this.getChildValue(node);if(postcode){contactAddress.postcode=postcode;}},read_wmc_Country:function(contactAddress,node){var country=this.getChildValue(node);if(country){contactAddress.country=country;}},read_wmc_ContactVoiceTelephone:function(contact,node){var phone=this.getChildValue(node);if(phone){contact.phone=phone;}},read_wmc_ContactFacsimileTelephone:function(contact,node){var fax=this.getChildValue(node);if(fax){contact.fax=fax;}},read_wmc_ContactElectronicMailAddress:function(contact,node){var email=this.getChildValue(node);if(email){contact.email=email;}},read_wmc_DataURL:function(layerContext,node){layerContext.dataURL=this.getOnlineResource_href(node);},read_wmc_LegendURL:function(style,node){var legend={width:node.getAttribute('width'),height:node.getAttribute('height'),format:node.getAttribute('format'),href:this.getOnlineResource_href(node)};style.legend=legend;},read_wmc_DimensionList:function(layerContext,node){layerContext.dimensions={};this.runChildNodes(layerContext.dimensions,node);},read_wmc_Dimension:function(dimensions,node){var name=node.getAttribute("name").toLowerCase();var dim={name:name,units:node.getAttribute("units")||"",unitSymbol:node.getAttribute("unitSymbol")||"",userValue:node.getAttribute("userValue")||"",nearestValue:node.getAttribute("nearestValue")==="1",multipleValues:node.getAttribute("multipleValues")==="1",current:node.getAttribute("current")==="1","default":node.getAttribute("default")||""};var values=this.getChildValue(node);dim.values=values.split(",");dimensions[dim.name]=dim;},write:function(context,options){var root=this.createElementDefaultNS("ViewContext");this.setAttributes(root,{version:this.VERSION,id:(options&&typeof options.id=="string")?options.id:OpenLayers.Util.createUniqueID("OpenLayers_Context_")});this.setAttributeNS(root,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);root.appendChild(this.write_wmc_General(context));root.appendChild(this.write_wmc_LayerList(context));return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},createElementDefaultNS:function(name,childValue,attributes){var node=this.createElementNS(this.namespaces[this.defaultPrefix],name);if(childValue){node.appendChild(this.createTextNode(childValue));}
+if(attributes){this.setAttributes(node,attributes);}
+return node;},setAttributes:function(node,obj){var value;for(var name in obj){value=obj[name].toString();if(value.match(/[A-Z]/)){this.setAttributeNS(node,null,name,value);}else{node.setAttribute(name,value);}}},write_wmc_General:function(context){var node=this.createElementDefaultNS("General");if(context.size){node.appendChild(this.createElementDefaultNS("Window",null,{width:context.size.w,height:context.size.h}));}
+var bounds=context.bounds;node.appendChild(this.createElementDefaultNS("BoundingBox",null,{minx:bounds.left.toPrecision(18),miny:bounds.bottom.toPrecision(18),maxx:bounds.right.toPrecision(18),maxy:bounds.top.toPrecision(18),SRS:context.projection}));node.appendChild(this.createElementDefaultNS("Title",context.title));if(context.keywords){node.appendChild(this.write_wmc_KeywordList(context.keywords));}
+if(context["abstract"]){node.appendChild(this.createElementDefaultNS("Abstract",context["abstract"]));}
+if(context.logo){node.appendChild(this.write_wmc_URLType("LogoURL",context.logo.href,context.logo));}
+if(context.descriptionURL){node.appendChild(this.write_wmc_URLType("DescriptionURL",context.descriptionURL));}
+if(context.contactInformation){node.appendChild(this.write_wmc_ContactInformation(context.contactInformation));}
+node.appendChild(this.write_ol_MapExtension(context));return node;},write_wmc_KeywordList:function(keywords){var node=this.createElementDefaultNS("KeywordList");for(var i=0,len=keywords.length;i<len;i++){node.appendChild(this.createElementDefaultNS("Keyword",keywords[i]));}
+return node;},write_wmc_ContactInformation:function(contact){var node=this.createElementDefaultNS("ContactInformation");if(contact.personPrimary){node.appendChild(this.write_wmc_ContactPersonPrimary(contact.personPrimary));}
+if(contact.position){node.appendChild(this.createElementDefaultNS("ContactPosition",contact.position));}
+if(contact.contactAddress){node.appendChild(this.write_wmc_ContactAddress(contact.contactAddress));}
+if(contact.phone){node.appendChild(this.createElementDefaultNS("ContactVoiceTelephone",contact.phone));}
+if(contact.fax){node.appendChild(this.createElementDefaultNS("ContactFacsimileTelephone",contact.fax));}
+if(contact.email){node.appendChild(this.createElementDefaultNS("ContactElectronicMailAddress",contact.email));}
+return node;},write_wmc_ContactPersonPrimary:function(personPrimary){var node=this.createElementDefaultNS("ContactPersonPrimary");if(personPrimary.person){node.appendChild(this.createElementDefaultNS("ContactPerson",personPrimary.person));}
+if(personPrimary.organization){node.appendChild(this.createElementDefaultNS("ContactOrganization",personPrimary.organization));}
+return node;},write_wmc_ContactAddress:function(contactAddress){var node=this.createElementDefaultNS("ContactAddress");if(contactAddress.type){node.appendChild(this.createElementDefaultNS("AddressType",contactAddress.type));}
+if(contactAddress.address){node.appendChild(this.createElementDefaultNS("Address",contactAddress.address));}
+if(contactAddress.city){node.appendChild(this.createElementDefaultNS("City",contactAddress.city));}
+if(contactAddress.stateOrProvince){node.appendChild(this.createElementDefaultNS("StateOrProvince",contactAddress.stateOrProvince));}
+if(contactAddress.postcode){node.appendChild(this.createElementDefaultNS("PostCode",contactAddress.postcode));}
+if(contactAddress.country){node.appendChild(this.createElementDefaultNS("Country",contactAddress.country));}
+return node;},write_ol_MapExtension:function(context){var node=this.createElementDefaultNS("Extension");var bounds=context.maxExtent;if(bounds){var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(18),miny:bounds.bottom.toPrecision(18),maxx:bounds.right.toPrecision(18),maxy:bounds.top.toPrecision(18)});node.appendChild(maxExtent);}
+return node;},write_wmc_LayerList:function(context){var list=this.createElementDefaultNS("LayerList");for(var i=0,len=context.layersContext.length;i<len;++i){list.appendChild(this.write_wmc_Layer(context.layersContext[i]));}
+return list;},write_wmc_Layer:function(context){var node=this.createElementDefaultNS("Layer",null,{queryable:context.queryable?"1":"0",hidden:context.visibility?"0":"1"});node.appendChild(this.write_wmc_Server(context));node.appendChild(this.createElementDefaultNS("Name",context.name));node.appendChild(this.createElementDefaultNS("Title",context.title));if(context["abstract"]){node.appendChild(this.createElementDefaultNS("Abstract",context["abstract"]));}
+if(context.dataURL){node.appendChild(this.write_wmc_URLType("DataURL",context.dataURL));}
+if(context.metadataURL){node.appendChild(this.write_wmc_URLType("MetadataURL",context.metadataURL));}
+return node;},write_wmc_LayerExtension:function(context){var node=this.createElementDefaultNS("Extension");var bounds=context.maxExtent;var maxExtent=this.createElementNS(this.namespaces.ol,"ol:maxExtent");this.setAttributes(maxExtent,{minx:bounds.left.toPrecision(18),miny:bounds.bottom.toPrecision(18),maxx:bounds.right.toPrecision(18),maxy:bounds.top.toPrecision(18)});node.appendChild(maxExtent);if(context.tileSize&&!context.singleTile){var size=this.createElementNS(this.namespaces.ol,"ol:tileSize");this.setAttributes(size,context.tileSize);node.appendChild(size);}
+var properties=["transparent","numZoomLevels","units","isBaseLayer","opacity","displayInLayerSwitcher","singleTile"];var child;for(var i=0,len=properties.length;i<len;++i){child=this.createOLPropertyNode(context,properties[i]);if(child){node.appendChild(child);}}
+return node;},createOLPropertyNode:function(obj,prop){var node=null;if(obj[prop]!=null){node=this.createElementNS(this.namespaces.ol,"ol:"+prop);node.appendChild(this.createTextNode(obj[prop].toString()));}
+return node;},write_wmc_Server:function(context){var server=context.server;var node=this.createElementDefaultNS("Server");var attributes={service:"OGC:WMS",version:server.version};if(server.title){attributes.title=server.title}
+this.setAttributes(node,attributes);node.appendChild(this.write_wmc_OnlineResource(server.url));return node;},write_wmc_URLType:function(elName,url,attr){var node=this.createElementDefaultNS(elName);node.appendChild(this.write_wmc_OnlineResource(url));if(attr){var optionalAttributes=["width","height","format"];for(var i=0;i<optionalAttributes.length;i++){if(optionalAttributes[i]in attr){node.setAttribute(optionalAttributes[i],attr[optionalAttributes[i]]);}}}
+return node;},write_wmc_DimensionList:function(context){var node=this.createElementDefaultNS("DimensionList");var required_attributes={name:true,units:true,unitSymbol:true,userValue:true};for(var dim in context.dimensions){var attributes={};var dimension=context.dimensions[dim];for(var name in dimension){if(typeof dimension[name]=="boolean"){attributes[name]=Number(dimension[name]);}else{attributes[name]=dimension[name];}}
+var values="";if(attributes.values){values=attributes.values.join(",");delete attributes.values;}
+node.appendChild(this.createElementDefaultNS("Dimension",values,attributes));}
+return node;},write_wmc_FormatList:function(context){var node=this.createElementDefaultNS("FormatList");for(var i=0,len=context.formats.length;i<len;i++){var format=context.formats[i];node.appendChild(this.createElementDefaultNS("Format",format.value,(format.current&&format.current==true)?{current:"1"}:null));}
+return node;},write_wmc_StyleList:function(layer){var node=this.createElementDefaultNS("StyleList");var styles=layer.styles;if(styles&&OpenLayers.Util.isArray(styles)){var sld;for(var i=0,len=styles.length;i<len;i++){var s=styles[i];var style=this.createElementDefaultNS("Style",null,(s.current&&s.current==true)?{current:"1"}:null);if(s.href){sld=this.createElementDefaultNS("SLD");if(s.name){sld.appendChild(this.createElementDefaultNS("Name",s.name));}
+if(s.title){sld.appendChild(this.createElementDefaultNS("Title",s.title));}
+if(s.legend){sld.appendChild(this.write_wmc_URLType("LegendURL",s.legend.href,s.legend));}
+var link=this.write_wmc_OnlineResource(s.href);sld.appendChild(link);style.appendChild(sld);}else if(s.body){sld=this.createElementDefaultNS("SLD");if(s.name){sld.appendChild(this.createElementDefaultNS("Name",s.name));}
+if(s.title){sld.appendChild(this.createElementDefaultNS("Title",s.title));}
+if(s.legend){sld.appendChild(this.write_wmc_URLType("LegendURL",s.legend.href,s.legend));}
+var doc=OpenLayers.Format.XML.prototype.read.apply(this,[s.body]);var imported=doc.documentElement;if(sld.ownerDocument&&sld.ownerDocument.importNode){imported=sld.ownerDocument.importNode(imported,true);}
+sld.appendChild(imported);style.appendChild(sld);}else{style.appendChild(this.createElementDefaultNS("Name",s.name));style.appendChild(this.createElementDefaultNS("Title",s.title));if(s['abstract']){style.appendChild(this.createElementDefaultNS("Abstract",s['abstract']));}
+if(s.legend){style.appendChild(this.write_wmc_URLType("LegendURL",s.legend.href,s.legend));}}
+node.appendChild(style);}}
+return node;},write_wmc_OnlineResource:function(href){var node=this.createElementDefaultNS("OnlineResource");this.setAttributeNS(node,this.namespaces.xlink,"xlink:type","simple");this.setAttributeNS(node,this.namespaces.xlink,"xlink:href",href);return node;},getOnlineResource_href:function(node){var object={};var links=node.getElementsByTagName("OnlineResource");if(links.length>0){this.read_wmc_OnlineResource(object,links[0]);}
+return object.href;},CLASS_NAME:"OpenLayers.Format.WMC.v1"});OpenLayers.Control.PanPanel=OpenLayers.Class(OpenLayers.Control.Panel,{slideFactor:50,slideRatio:null,initialize:function(options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);var options={slideFactor:this.slideFactor,slideRatio:this.slideRatio};this.addControls([new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH,options),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH,options),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST,options),new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST,options)]);},CLASS_NAME:"OpenLayers.Control.PanPanel"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",destroy:function(){this.map.events.un({"removelayer":this.updateAttribution,"addlayer":this.updateAttribution,"changelayer":this.updateAttribution,"changebaselayer":this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({'changebaselayer':this.updateAttribution,'changelayer':this.updateAttribution,'addlayer':this.updateAttribution,'removelayer':this.updateAttribution,scope:this});this.updateAttribution();return this.div;},updateAttribution:function(){var attributions=[];if(this.map&&this.map.layers){for(var i=0,len=this.map.layers.length;i<len;i++){var layer=this.map.layers[i];if(layer.attribution&&layer.getVisibility()){if(OpenLayers.Util.indexOf(attributions,layer.attribution)===-1){attributions.push(layer.attribution);}}}
+this.div.innerHTML=attributions.join(this.separator);}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Renderer.NG=OpenLayers.Class(OpenLayers.Renderer.Elements,{labelNodeType:null,updateDimensions:function(zoomChanged){var mapExtent=this.map.getExtent();var renderExtent=mapExtent.scale(3);this.setExtent(renderExtent,true);var res=this.getResolution();var div=this.rendererRoot.parentNode;var layerLeft=parseFloat(div.parentNode.style.left);var layerTop=parseFloat(div.parentNode.style.top);div.style.left=((renderExtent.left-mapExtent.left)/res-layerLeft)+"px";div.style.top=((mapExtent.top-renderExtent.top)/res-layerTop)+"px";},setSize:function(){this.map.getExtent()&&this.updateDimensions();},drawFeature:function(feature,style){if(style==null){style=feature.style;}
+if(feature.geometry){var rendered=this.drawGeometry(feature.geometry,style,feature.id);if(rendered!==false&&style.label){var location=feature.geometry.getCentroid();this.drawText(feature.id,style,location);}else{this.removeText(feature.id);}
+return rendered;}},drawText:function(featureId,style,location){var label;if(typeof featureId!=="string"){label=featureId;}else{label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,this.labelNodeType);label._featureId=featureId;}
+label._style=style;label._x=location.x;label._y=location.y;if(style.labelXOffset||style.labelYOffset){var xOffset=isNaN(style.labelXOffset)?0:style.labelXOffset;var yOffset=isNaN(style.labelYOffset)?0:style.labelYOffset;var res=this.getResolution();location.move(xOffset*res,yOffset*res);}
+if(label.parentNode!==this.textRoot){this.textRoot.appendChild(label);}
+return label;},CLASS_NAME:"OpenLayers.Renderer.NG"});OpenLayers.Renderer.SVG2=OpenLayers.Class(OpenLayers.Renderer.NG,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",symbolMetrics:null,labelNodeType:"g",initialize:function(containerID){if(!this.supported()){return;}
+OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);this.symbolMetrics={};},supported:function(){var svgFeature="http://www.w3.org/TR/SVG11/feature#";return(document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature(svgFeature+"SVG","1.1")||document.implementation.hasFeature(svgFeature+"BasicStructure","1.1")));},updateDimensions:function(zoomChanged){OpenLayers.Renderer.NG.prototype.updateDimensions.apply(this,arguments);var res=this.getResolution();var width=this.extent.getWidth();var height=this.extent.getHeight();var extentString=[this.extent.left,-this.extent.top,width,height].join(" ");this.rendererRoot.setAttributeNS(null,"viewBox",extentString);this.rendererRoot.setAttributeNS(null,"width",width/res);this.rendererRoot.setAttributeNS(null,"height",height/res);if(zoomChanged===true){var i,len;var nodes=this.vectorRoot.childNodes;for(i=0,len=nodes.length;i<len;++i){this.setStyle(nodes[i]);}
+var textNodes=this.textRoot.childNodes;var label;for(i=0,len=textNodes.length;i<len;++i){label=textNodes[i];this.drawText(label,label._style,new OpenLayers.Geometry.Point(label._x,label._y));}}},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="image";}else if(this.isComplexSymbol(style.graphicName)){nodeType="svg";}else{nodeType="circle";}
+break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;}
+return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;var resolution=this.getResolution();var r=node._radius;var widthFactor=resolution;if(node._geometryClass=="OpenLayers.Geometry.Point"&&r){node.style.visibility="";if(style.graphic===false){node.style.visibility="hidden";}else if(style.externalGraphic){if(style.graphicTitle){node.setAttributeNS(null,"title",style.graphicTitle);var label=this.nodeFactory(null,"title");label.textContent=style.graphicTitle;node.appendChild(label);}
+if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");}
+var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;width*=resolution;height*=resolution;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset*resolution:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset*resolution:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",node._x+xOffset);node.setAttributeNS(null,"y",node._y+yOffset);node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS(this.xlinkns,"href",style.externalGraphic);node.setAttributeNS(null,"style","opacity: "+opacity);node.onclick=OpenLayers.Renderer.SVG2.preventDefault;}else if(this.isComplexSymbol(style.graphicName)){var offset=style.pointRadius*3*resolution;var size=offset*2;var src=this.importSymbol(style.graphicName);widthFactor=this.symbolMetrics[src.id].size*3/size*resolution;var parent=node.parentNode;var nextSibling=node.nextSibling;if(parent){parent.removeChild(node);}
+node.firstChild&&node.removeChild(node.firstChild);node.appendChild(src.firstChild.cloneNode(true));node.setAttributeNS(null,"viewBox",src.getAttributeNS(null,"viewBox"));node.setAttributeNS(null,"width",size);node.setAttributeNS(null,"height",size);node.setAttributeNS(null,"x",node._x-offset);node.setAttributeNS(null,"y",node._y-offset);if(nextSibling){parent.insertBefore(node,nextSibling);}else if(parent){parent.appendChild(node);}}else{node.setAttributeNS(null,"r",style.pointRadius*resolution);}
+var rotation=style.rotation;if(rotation!==undefined||node._rotation!==undefined){node._rotation=rotation;rotation|=0;if(node.nodeName!=="svg"){node.setAttributeNS(null,"transform",["rotate(",rotation,node._x,node._y,")"].join(" "));}else{var metrics=this.symbolMetrics[src.id];node.firstChild.setAttributeNS(null,"transform",["rotate(",rotation,metrics.x,metrics.y,")"].join(" "));}}}
+if(options.isFilled){node.setAttributeNS(null,"fill",style.fillColor);node.setAttributeNS(null,"fill-opacity",style.fillOpacity);}else{node.setAttributeNS(null,"fill","none");}
+if(options.isStroked){node.setAttributeNS(null,"stroke",style.strokeColor);node.setAttributeNS(null,"stroke-opacity",style.strokeOpacity);node.setAttributeNS(null,"stroke-width",style.strokeWidth*widthFactor);node.setAttributeNS(null,"stroke-linecap",style.strokeLinecap||"round");node.setAttributeNS(null,"stroke-linejoin","round");style.strokeDashstyle&&node.setAttributeNS(null,"stroke-dasharray",this.dashStyle(style,widthFactor));}else{node.setAttributeNS(null,"stroke","none");}
+if(style.pointerEvents){node.setAttributeNS(null,"pointer-events",style.pointerEvents);}
+if(style.cursor!=null){node.setAttributeNS(null,"cursor",style.cursor);}
+return node;},dashStyle:function(style,widthFactor){var w=style.strokeWidth*widthFactor;var str=style.strokeDashstyle;switch(str){case'solid':return'none';case'dot':return[widthFactor,4*w].join();case'dash':return[4*w,4*w].join();case'dashdot':return[4*w,4*w,widthFactor,4*w].join();case'longdash':return[8*w,4*w].join();case'longdashdot':return[8*w,4*w,widthFactor,4*w].join();default:var parts=OpenLayers.String.trim(str).split(/\s+/g);for(var i=0,ii=parts.length;i<ii;i++){parts[i]=parts[i]*widthFactor;}
+return parts.join();}},createNode:function(type,id){var node=document.createElementNS(this.xmlns,type);if(id){node.setAttributeNS(null,"id",id);}
+return node;},nodeTypeCompare:function(node,type){return(type==node.nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_svgRoot","svg");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"g");},createDefs:function(){var defs=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(defs);return defs;},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){var x=geometry.x;var y=-geometry.y;node.setAttributeNS(null,"cx",x);node.setAttributeNS(null,"cy",y);node._x=x;node._y=y;node._radius=radius;return node;},drawLineString:function(node,geometry){var path=this.getComponentsString(geometry.components);node.setAttributeNS(null,"points",path);return node;},drawLinearRing:function(node,geometry){var path=this.getComponentsString(geometry.components);node.setAttributeNS(null,"points",path);return node;},drawPolygon:function(node,geometry){var d=[];var draw=true;var complete=true;var linearRingResult,path;for(var j=0,len=geometry.components.length;j<len;j++){d.push("M");path=this.getComponentsString(geometry.components[j].components," ");d.push(path);}
+d.push("z");node.setAttributeNS(null,"d",d.join(" "));node.setAttributeNS(null,"fill-rule","evenodd");return node;},drawRectangle:function(node,geometry){node.setAttributeNS(null,"x",geometry.x);node.setAttributeNS(null,"y",-geometry.y);node.setAttributeNS(null,"width",geometry.width);node.setAttributeNS(null,"height",geometry.height);return node;},drawSurface:function(node,geometry){var d=[];var draw=true;for(var i=0,len=geometry.components.length;i<len;i++){if((i%3)==0&&(i/3)==0){var component=this.getShortString(geometry.components[i]);d.push("M",component);}else if((i%3)==1){var component=this.getShortString(geometry.components[i]);d.push("C",component);}else{var component=this.getShortString(geometry.components[i]);d.push(component);}}
+d.push("Z");node.setAttributeNS(null,"d",d.join(" "));return node;},drawText:function(featureId,style,location){var g=OpenLayers.Renderer.NG.prototype.drawText.apply(this,arguments);var text=g.firstChild||this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_text","text");var res=this.getResolution();text.setAttributeNS(null,"x",location.x/res);text.setAttributeNS(null,"y",-location.y/res);g.setAttributeNS(null,"transform","scale("+res+")");if(style.fontColor){text.setAttributeNS(null,"fill",style.fontColor);}
+if(style.fontOpacity){text.setAttributeNS(null,"opacity",style.fontOpacity);}
+if(style.fontFamily){text.setAttributeNS(null,"font-family",style.fontFamily);}
+if(style.fontSize){text.setAttributeNS(null,"font-size",style.fontSize);}
+if(style.fontWeight){text.setAttributeNS(null,"font-weight",style.fontWeight);}
+if(style.fontStyle){text.setAttributeNS(null,"font-style",style.fontStyle);}
+if(style.labelSelect===true){text.setAttributeNS(null,"pointer-events","visible");text._featureId=featureId;}else{text.setAttributeNS(null,"pointer-events","none");}
+var align=style.labelAlign||"cm";text.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG2.LABEL_ALIGN[align[0]]||"middle");if(OpenLayers.IS_GECKO===true){text.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG2.LABEL_ALIGN[align[1]]||"central");}
+var labelRows=style.label.split('\n');var numRows=labelRows.length;while(text.childNodes.length>numRows){text.removeChild(text.lastChild);}
+for(var i=0;i<numRows;i++){var tspan=text.childNodes[i]||this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_tspan_"+i,"tspan");if(style.labelSelect===true){tspan._featureId=featureId;}
+if(OpenLayers.IS_GECKO===false){tspan.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG2.LABEL_VSHIFT[align[1]]||"-35%");}
+tspan.setAttribute("x",location.x/res);if(i==0){var vfactor=OpenLayers.Renderer.SVG2.LABEL_VFACTOR[align[1]];if(vfactor==null){vfactor=-.5;}
+tspan.setAttribute("dy",(vfactor*(numRows-1))+"em");}else{tspan.setAttribute("dy","1em");}
+tspan.textContent=(labelRows[i]==='')?' ':labelRows[i];if(!tspan.parentNode){text.appendChild(tspan);}}
+if(!text.parentNode){g.appendChild(text);}
+return g;},getComponentsString:function(components,separator){var len=components.length;var strings=new Array(len);for(var i=0;i<len;i++){strings[i]=this.getShortString(components[i]);}
+return strings.join(separator||",");},getShortString:function(point){return point.x+","+(-point.y);},importSymbol:function(graphicName){if(!this.defs){this.defs=this.createDefs();}
+var id=this.container.id+"-"+graphicName;var existing=document.getElementById(id);if(existing!=null){return existing;}
+var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');}
+var symbolNode=this.nodeFactory(id,"symbol");var node=this.nodeFactory(null,"polygon");symbolNode.appendChild(node);var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var points=[];var x,y;for(var i=0,len=symbol.length;i<len;i=i+2){x=symbol[i];y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);points.push(x,",",y);}
+node.setAttributeNS(null,"points",points.join(" "));var width=symbolExtent.getWidth();var height=symbolExtent.getHeight();var viewBox=[symbolExtent.left-width,symbolExtent.bottom-height,width*3,height*3];symbolNode.setAttributeNS(null,"viewBox",viewBox.join(" "));this.symbolMetrics[id]={size:Math.max(width,height),x:symbolExtent.getCenterLonLat().lon,y:symbolExtent.getCenterLonLat().lat};this.defs.appendChild(symbolNode);return symbolNode;},getFeatureIdFromEvent:function(evt){var featureId=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);if(!featureId){var target=evt.target;featureId=target.parentNode&&target!=this.rendererRoot&&target.parentNode._featureId;}
+return featureId;},CLASS_NAME:"OpenLayers.Renderer.SVG2"});OpenLayers.Renderer.SVG2.LABEL_ALIGN={"l":"start","r":"end","b":"bottom","t":"hanging"};OpenLayers.Renderer.SVG2.LABEL_VSHIFT={"t":"-70%","b":"0"};OpenLayers.Renderer.SVG2.LABEL_VFACTOR={"t":0,"b":-1};OpenLayers.Renderer.SVG2.preventDefault=function(e){e.preventDefault&&e.preventDefault();};OpenLayers.Kinetic=OpenLayers.Class({threshold:0,interval:10,deceleration:0.0035,nbPoints:100,delay:200,points:undefined,timerId:undefined,initialize:function(options){OpenLayers.Util.extend(this,options);},begin:function(){clearInterval(this.timerId);this.timerId=undefined;this.points=[];},update:function(xy){this.points.unshift({xy:xy,tick:new Date().getTime()});if(this.points.length>this.nbPoints){this.points.pop();}},end:function(xy){var last,now=new Date().getTime();for(var i=0,l=this.points.length,point;i<l;i++){point=this.points[i];if(now-point.tick>this.delay){break;}
+last=point;}
+if(!last){return;}
+var time=new Date().getTime()-last.tick;var dist=Math.sqrt(Math.pow(xy.x-last.xy.x,2)+
+Math.pow(xy.y-last.xy.y,2));var speed=dist/time;if(speed==0||speed<this.threshold){return;}
+var theta=Math.asin((xy.y-last.xy.y)/dist);if(last.xy.x<=xy.x){theta=Math.PI-theta;}
+return{speed:speed,theta:theta};},move:function(info,callback){var v0=info.speed;var fx=Math.cos(info.theta);var fy=-Math.sin(info.theta);var time=0;var initialTime=new Date().getTime();var lastX=0;var lastY=0;var timerCallback=function(){if(this.timerId==null){return;}
+time+=this.interval;var realTime=new Date().getTime()-initialTime;var t=(time+realTime)/2.0;var p=(-this.deceleration*Math.pow(t,2))/2.0+v0*t;var x=p*fx;var y=p*fy;var args={};args.end=false;var v=-this.deceleration*t+v0;if(v<=0){clearInterval(this.timerId);this.timerId=null;args.end=true;}
+args.x=x-lastX;args.y=y-lastY;lastX=x;lastY=y;callback(args.x,args.y,args.end);};this.timerId=window.setInterval(OpenLayers.Function.bind(timerCallback,this),this.interval);},CLASS_NAME:"OpenLayers.Kinetic"});OpenLayers.ProxyHost="";OpenLayers.nullHandler=function(request){OpenLayers.Console.userError(OpenLayers.i18n("unhandledRequest",{'statusText':request.statusText}));};OpenLayers.loadURL=function(uri,params,caller,onComplete,onFailure){if(typeof params=='string'){params=OpenLayers.Util.getParameters(params);}
+var success=(onComplete)?onComplete:OpenLayers.nullHandler;var failure=(onFailure)?onFailure:OpenLayers.nullHandler;return OpenLayers.Request.GET({url:uri,params:params,success:success,failure:failure,scope:caller});};OpenLayers.parseXMLString=function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);}
+var ajaxResponse=OpenLayers.Util.Try(function(){var xmldom=new ActiveXObject('Microsoft.XMLDOM');xmldom.loadXML(text);return xmldom;},function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");}
+req.send(null);return req.responseXML;});return ajaxResponse;};OpenLayers.Ajax={emptyFunction:function(){},getTransport:function(){return OpenLayers.Util.Try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject('Msxml2.XMLHTTP');},function(){return new ActiveXObject('Microsoft.XMLHTTP');})||false;},activeRequestCount:0};OpenLayers.Ajax.Responders={responders:[],register:function(responderToAdd){for(var i=0;i<this.responders.length;i++){if(responderToAdd==this.responders[i]){return;}}
+this.responders.push(responderToAdd);},unregister:function(responderToRemove){OpenLayers.Util.removeItem(this.reponders,responderToRemove);},dispatch:function(callback,request,transport){var responder;for(var i=0;i<this.responders.length;i++){responder=this.responders[i];if(responder[callback]&&typeof responder[callback]=='function'){try{responder[callback].apply(responder,[request,transport]);}catch(e){}}}}};OpenLayers.Ajax.Responders.register({onCreate:function(){OpenLayers.Ajax.activeRequestCount++;},onComplete:function(){OpenLayers.Ajax.activeRequestCount--;}});OpenLayers.Ajax.Base=OpenLayers.Class({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/xml',parameters:''};OpenLayers.Util.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(typeof this.options.parameters=='string'){this.options.parameters=OpenLayers.Util.getParameters(this.options.parameters);}}});OpenLayers.Ajax.Request=OpenLayers.Class(OpenLayers.Ajax.Base,{_complete:false,initialize:function(url,options){OpenLayers.Ajax.Base.prototype.initialize.apply(this,[options]);if(OpenLayers.ProxyHost&&OpenLayers.String.startsWith(url,"http")){url=OpenLayers.ProxyHost+encodeURIComponent(url);}
+this.transport=OpenLayers.Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=OpenLayers.Util.extend({},this.options.parameters);if(this.method!='get'&&this.method!='post'){params['_method']=this.method;this.method='post';}
+this.parameters=params;if(params=OpenLayers.Util.getParameterString(params)){if(this.method=='get'){this.url+=((this.url.indexOf('?')>-1)?'&':'?')+params;}else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){params+='&_=';}}
+try{var response=new OpenLayers.Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(response);}
+OpenLayers.Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){window.setTimeout(OpenLayers.Function.bind(this.respondToReadyState,this,1),10);}
+this.transport.onreadystatechange=OpenLayers.Function.bind(this.onStateChange,this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete)){this.respondToReadyState(this.transport.readyState);}},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*','OpenLayers':true};if(this.method=='post'){headers['Content-type']=this.options.contentType+
+(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){headers['Connection']='close';}}
+if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function'){for(var i=0,length=extras.length;i<length;i+=2){headers[extras[i]]=extras[i+1];}}else{for(var i in extras){headers[i]=extras[i];}}}
+for(var name in headers){this.transport.setRequestHeader(name,headers[name]);}},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0;}},respondToReadyState:function(readyState){var state=OpenLayers.Ajax.Request.Events[readyState];var response=new OpenLayers.Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||OpenLayers.Ajax.emptyFunction)(response);}catch(e){this.dispatchException(e);}
+var contentType=response.getHeader('Content-type');}
+try{(this.options['on'+state]||OpenLayers.Ajax.emptyFunction)(response);OpenLayers.Ajax.Responders.dispatch('on'+state,this,response);}catch(e){this.dispatchException(e);}
+if(state=='Complete'){this.transport.onreadystatechange=OpenLayers.Ajax.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null;}},dispatchException:function(exception){var handler=this.options.onException;if(handler){handler(this,exception);OpenLayers.Ajax.Responders.dispatch('onException',this,exception);}else{var listener=false;var responders=OpenLayers.Ajax.Responders.responders;for(var i=0;i<responders.length;i++){if(responders[i].onException){listener=true;break;}}
+if(listener){OpenLayers.Ajax.Responders.dispatch('onException',this,exception);}else{throw exception;}}}});OpenLayers.Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];OpenLayers.Ajax.Response=OpenLayers.Class({status:0,statusText:'',initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!(!!(window.attachEvent&&!window.opera)))||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=transport.responseText==null?'':String(transport.responseText);}
+if(readyState==4){var xml=transport.responseXML;this.responseXML=xml===undefined?null:xml;}},getStatus:OpenLayers.Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return'';}},getHeader:OpenLayers.Ajax.Request.prototype.getHeader,getResponseHeader:function(name){return this.transport.getResponseHeader(name);}});OpenLayers.Ajax.getElementsByTagNameNS=function(parentnode,nsuri,nsprefix,tagname){var elem=null;if(parentnode.getElementsByTagNameNS){elem=parentnode.getElementsByTagNameNS(nsuri,tagname);}else{elem=parentnode.getElementsByTagName(nsprefix+':'+tagname);}
+return elem;};OpenLayers.Ajax.serializeXMLToString=function(xmldom){var serializer=new XMLSerializer();var data=serializer.serializeToString(xmldom);return data;};OpenLayers.Layer.GeoRSS=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,icon:null,popupSize:null,useFeedTitle:true,initialize:function(name,location,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,[name,options]);this.location=location;this.features=[];},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null;},loadRSS:function(){if(!this.loaded){this.events.triggerEvent("loadstart");OpenLayers.Request.GET({url:this.location,success:this.parseData,scope:this});this.loaded=true;}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadRSS();}},parseData:function(ajaxRequest){var doc=ajaxRequest.responseXML;if(!doc||!doc.documentElement){doc=OpenLayers.Format.XML.prototype.read(ajaxRequest.responseText);}
+if(this.useFeedTitle){var name=null;try{name=doc.getElementsByTagNameNS('*','title')[0].firstChild.nodeValue;}
+catch(e){name=doc.getElementsByTagName('title')[0].firstChild.nodeValue;}
+if(name){this.setName(name);}}
+var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();}
+var format=new OpenLayers.Format.GeoRSS(options);var features=format.read(doc);for(var i=0,len=features.length;i<len;i++){var data={};var feature=features[i];if(!feature.geometry){continue;}
+var title=feature.attributes.title?feature.attributes.title:"Untitled";var description=feature.attributes.description?feature.attributes.description:"No description.";var link=feature.attributes.link?feature.attributes.link:"";var location=feature.geometry.getBounds().getCenterLonLat();data.icon=this.icon==null?OpenLayers.Marker.defaultIcon():this.icon.clone();data.popupSize=this.popupSize?this.popupSize.clone():new OpenLayers.Size(250,120);if(title||description){data.title=title;data.description=description;var contentHTML='<div class="olLayerGeoRSSClose">[x]</div>';contentHTML+='<div class="olLayerGeoRSSTitle">';if(link){contentHTML+='<a class="link" href="'+link+'" target="_blank">';}
+contentHTML+=title;if(link){contentHTML+='</a>';}
+contentHTML+='</div>';contentHTML+='<div style="" class="olLayerGeoRSSDescription">';contentHTML+=description;contentHTML+='</div>';data['popupContentHTML']=contentHTML;}
+var feature=new OpenLayers.Feature(this,location,data);this.features.push(feature);var marker=feature.createMarker();marker.events.register('click',feature,this.markerClick);this.addMarker(marker);}
+this.events.triggerEvent("loadend");},markerClick:function(evt){var sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0,len=this.layer.map.popups.length;i<len;i++){this.layer.map.removePopup(this.layer.map.popups[i]);}
+if(!sameMarkerClicked){var popup=this.createPopup();OpenLayers.Event.observe(popup.div,"click",OpenLayers.Function.bind(function(){for(var i=0,len=this.layer.map.popups.length;i<len;i++){this.layer.map.removePopup(this.layer.map.popups[i]);}},this));this.layer.map.addPopup(popup);}
+OpenLayers.Event.stop(evt);},clearFeatures:function(){if(this.features!=null){while(this.features.length>0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.GeoRSS"});OpenLayers.Format.SLD.v1=OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0,{namespaces:{sld:"http://www.opengis.net/sld",ogc:"http://www.opengis.net/ogc",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"sld",schemaLocation:null,multipleSymbolizers:false,featureTypeCounter:null,defaultSymbolizer:{fillColor:"#808080",fillOpacity:1,strokeColor:"#000000",strokeOpacity:1,strokeWidth:1,strokeDashstyle:"solid",pointRadius:3,graphicName:"square"},initialize:function(options){OpenLayers.Format.Filter.v1_0_0.prototype.initialize.apply(this,[options]);},read:function(data,options){options=OpenLayers.Util.applyDefaults(options,this.options);var sld={namedLayers:options.namedLayersAsArray===true?[]:{}};this.readChildNodes(data,sld);return sld;},readers:OpenLayers.Util.applyDefaults({"sld":{"StyledLayerDescriptor":function(node,sld){sld.version=node.getAttribute("version");this.readChildNodes(node,sld);},"Name":function(node,obj){obj.name=this.getChildValue(node);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,obj){obj.description=this.getChildValue(node);},"NamedLayer":function(node,sld){var layer={userStyles:[],namedStyles:[]};this.readChildNodes(node,layer);for(var i=0,len=layer.userStyles.length;i<len;++i){layer.userStyles[i].layerName=layer.name;}
+if(OpenLayers.Util.isArray(sld.namedLayers)){sld.namedLayers.push(layer);}else{sld.namedLayers[layer.name]=layer;}},"NamedStyle":function(node,layer){layer.namedStyles.push(this.getChildName(node.firstChild));},"UserStyle":function(node,layer){var obj={defaultsPerSymbolizer:true,rules:[]};this.featureTypeCounter=-1;this.readChildNodes(node,obj);var style;if(this.multipleSymbolizers){delete obj.defaultsPerSymbolizer;style=new OpenLayers.Style2(obj);}else{style=new OpenLayers.Style(this.defaultSymbolizer,obj);}
+layer.userStyles.push(style);},"IsDefault":function(node,style){if(this.getChildValue(node)=="1"){style.isDefault=true;}},"FeatureTypeStyle":function(node,style){++this.featureTypeCounter;var obj={rules:this.multipleSymbolizers?style.rules:[]};this.readChildNodes(node,obj);if(!this.multipleSymbolizers){style.rules=obj.rules;}},"Rule":function(node,obj){var config;if(this.multipleSymbolizers){config={symbolizers:[]};}
+var rule=new OpenLayers.Rule(config);this.readChildNodes(node,rule);obj.rules.push(rule);},"ElseFilter":function(node,rule){rule.elseFilter=true;},"MinScaleDenominator":function(node,rule){rule.minScaleDenominator=parseFloat(this.getChildValue(node));},"MaxScaleDenominator":function(node,rule){rule.maxScaleDenominator=parseFloat(this.getChildValue(node));},"TextSymbolizer":function(node,rule){var config={};this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Text(config));}else{rule.symbolizer["Text"]=OpenLayers.Util.applyDefaults(config,rule.symbolizer["Text"]);}},"Label":function(node,symbolizer){var obj={};this.readChildNodes(node,obj);if(obj.property){symbolizer.label="${"+obj.property+"}";}else{var value=this.readOgcExpression(node);if(value){symbolizer.label=value;}}},"Font":function(node,symbolizer){this.readChildNodes(node,symbolizer);},"Halo":function(node,symbolizer){var obj={};this.readChildNodes(node,obj);symbolizer.haloRadius=obj.haloRadius;symbolizer.haloColor=obj.fillColor;symbolizer.haloOpacity=obj.fillOpacity;},"Radius":function(node,symbolizer){var radius=this.readOgcExpression(node);if(radius!=null){symbolizer.haloRadius=radius;}},"RasterSymbolizer":function(node,rule){var config={};this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Raster(config));}else{rule.symbolizer["Raster"]=OpenLayers.Util.applyDefaults(config,rule.symbolizer["Raster"]);}},"Geometry":function(node,obj){obj.geometry={};this.readChildNodes(node,obj.geometry);},"ColorMap":function(node,symbolizer){symbolizer.colorMap=[];this.readChildNodes(node,symbolizer.colorMap);},"ColorMapEntry":function(node,colorMap){var q=node.getAttribute("quantity");var o=node.getAttribute("opacity");colorMap.push({color:node.getAttribute("color"),quantity:q!==null?parseFloat(q):undefined,label:node.getAttribute("label")||undefined,opacity:o!==null?parseFloat(o):undefined});},"LineSymbolizer":function(node,rule){var config={};this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Line(config));}else{rule.symbolizer["Line"]=OpenLayers.Util.applyDefaults(config,rule.symbolizer["Line"]);}},"PolygonSymbolizer":function(node,rule){var config={fill:false,stroke:false};if(!this.multipleSymbolizers){config=rule.symbolizer["Polygon"]||config;}
+this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Polygon(config));}else{rule.symbolizer["Polygon"]=config;}},"PointSymbolizer":function(node,rule){var config={fill:false,stroke:false,graphic:false};if(!this.multipleSymbolizers){config=rule.symbolizer["Point"]||config;}
+this.readChildNodes(node,config);if(this.multipleSymbolizers){config.zIndex=this.featureTypeCounter;rule.symbolizers.push(new OpenLayers.Symbolizer.Point(config));}else{rule.symbolizer["Point"]=config;}},"Stroke":function(node,symbolizer){symbolizer.stroke=true;this.readChildNodes(node,symbolizer);},"Fill":function(node,symbolizer){symbolizer.fill=true;this.readChildNodes(node,symbolizer);},"CssParameter":function(node,symbolizer){var cssProperty=node.getAttribute("name");var symProperty=this.cssMap[cssProperty];if(symProperty){var value=this.readOgcExpression(node);if(value){symbolizer[symProperty]=value;}}},"Graphic":function(node,symbolizer){symbolizer.graphic=true;var graphic={};this.readChildNodes(node,graphic);var properties=["stroke","strokeColor","strokeWidth","strokeOpacity","strokeLinecap","fill","fillColor","fillOpacity","graphicName","rotation","graphicFormat"];var prop,value;for(var i=0,len=properties.length;i<len;++i){prop=properties[i];value=graphic[prop];if(value!=undefined){symbolizer[prop]=value;}}
+if(graphic.opacity!=undefined){symbolizer.graphicOpacity=graphic.opacity;}
+if(graphic.size!=undefined){symbolizer.pointRadius=graphic.size/2;}
+if(graphic.href!=undefined){symbolizer.externalGraphic=graphic.href;}
+if(graphic.rotation!=undefined){symbolizer.rotation=graphic.rotation;}},"ExternalGraphic":function(node,graphic){this.readChildNodes(node,graphic);},"Mark":function(node,graphic){this.readChildNodes(node,graphic);},"WellKnownName":function(node,graphic){graphic.graphicName=this.getChildValue(node);},"Opacity":function(node,obj){var opacity=this.readOgcExpression(node);if(opacity){obj.opacity=opacity;}},"Size":function(node,obj){var size=this.readOgcExpression(node);if(size){obj.size=size;}},"Rotation":function(node,obj){var rotation=this.readOgcExpression(node);if(rotation){obj.rotation=rotation;}},"OnlineResource":function(node,obj){obj.href=this.getAttributeNS(node,this.namespaces.xlink,"href");},"Format":function(node,graphic){graphic.graphicFormat=this.getChildValue(node);}}},OpenLayers.Format.Filter.v1_0_0.prototype.readers),cssMap:{"stroke":"strokeColor","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-dasharray":"strokeDashstyle","fill":"fillColor","fill-opacity":"fillOpacity","font-family":"fontFamily","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle"},getCssProperty:function(sym){var css=null;for(var prop in this.cssMap){if(this.cssMap[prop]==sym){css=prop;break;}}
+return css;},getGraphicFormat:function(href){var format,regex;for(var key in this.graphicFormats){if(this.graphicFormats[key].test(href)){format=key;break;}}
+return format||this.defautlGraphicFormat;},defaultGraphicFormat:"image/png",graphicFormats:{"image/jpeg":/\.jpe?g$/i,"image/gif":/\.gif$/i,"image/png":/\.png$/i},write:function(sld){return this.writers.sld.StyledLayerDescriptor.apply(this,[sld]);},writers:OpenLayers.Util.applyDefaults({"sld":{"StyledLayerDescriptor":function(sld){var root=this.createElementNSPlus("sld:StyledLayerDescriptor",{attributes:{"version":this.VERSION,"xsi:schemaLocation":this.schemaLocation}});root.setAttribute("xmlns:ogc",this.namespaces.ogc);root.setAttribute("xmlns:gml",this.namespaces.gml);if(sld.name){this.writeNode("Name",sld.name,root);}
+if(sld.title){this.writeNode("Title",sld.title,root);}
+if(sld.description){this.writeNode("Abstract",sld.description,root);}
+if(OpenLayers.Util.isArray(sld.namedLayers)){for(var i=0,len=sld.namedLayers.length;i<len;++i){this.writeNode("NamedLayer",sld.namedLayers[i],root);}}else{for(var name in sld.namedLayers){this.writeNode("NamedLayer",sld.namedLayers[name],root);}}
+return root;},"Name":function(name){return this.createElementNSPlus("sld:Name",{value:name});},"Title":function(title){return this.createElementNSPlus("sld:Title",{value:title});},"Abstract":function(description){return this.createElementNSPlus("sld:Abstract",{value:description});},"NamedLayer":function(layer){var node=this.createElementNSPlus("sld:NamedLayer");this.writeNode("Name",layer.name,node);if(layer.namedStyles){for(var i=0,len=layer.namedStyles.length;i<len;++i){this.writeNode("NamedStyle",layer.namedStyles[i],node);}}
+if(layer.userStyles){for(var i=0,len=layer.userStyles.length;i<len;++i){this.writeNode("UserStyle",layer.userStyles[i],node);}}
+return node;},"NamedStyle":function(name){var node=this.createElementNSPlus("sld:NamedStyle");this.writeNode("Name",name,node);return node;},"UserStyle":function(style){var node=this.createElementNSPlus("sld:UserStyle");if(style.name){this.writeNode("Name",style.name,node);}
+if(style.title){this.writeNode("Title",style.title,node);}
+if(style.description){this.writeNode("Abstract",style.description,node);}
+if(style.isDefault){this.writeNode("IsDefault",style.isDefault,node);}
+if(this.multipleSymbolizers&&style.rules){var rulesByZ={0:[]};var zValues=[0];var rule,ruleMap,symbolizer,zIndex,clone;for(var i=0,ii=style.rules.length;i<ii;++i){rule=style.rules[i];if(rule.symbolizers){ruleMap={};for(var j=0,jj=rule.symbolizers.length;j<jj;++j){symbolizer=rule.symbolizers[j];zIndex=symbolizer.zIndex;if(!(zIndex in ruleMap)){clone=rule.clone();clone.symbolizers=[];ruleMap[zIndex]=clone;}
+ruleMap[zIndex].symbolizers.push(symbolizer.clone());}
+for(zIndex in ruleMap){if(!(zIndex in rulesByZ)){zValues.push(zIndex);rulesByZ[zIndex]=[];}
+rulesByZ[zIndex].push(ruleMap[zIndex]);}}else{rulesByZ[0].push(rule.clone());}}
+zValues.sort();var rules;for(var i=0,ii=zValues.length;i<ii;++i){rules=rulesByZ[zValues[i]];if(rules.length>0){clone=style.clone();clone.rules=rulesByZ[zValues[i]];this.writeNode("FeatureTypeStyle",clone,node);}}}else{this.writeNode("FeatureTypeStyle",style,node);}
+return node;},"IsDefault":function(bool){return this.createElementNSPlus("sld:IsDefault",{value:(bool)?"1":"0"});},"FeatureTypeStyle":function(style){var node=this.createElementNSPlus("sld:FeatureTypeStyle");for(var i=0,len=style.rules.length;i<len;++i){this.writeNode("Rule",style.rules[i],node);}
+return node;},"Rule":function(rule){var node=this.createElementNSPlus("sld:Rule");if(rule.name){this.writeNode("Name",rule.name,node);}
+if(rule.title){this.writeNode("Title",rule.title,node);}
+if(rule.description){this.writeNode("Abstract",rule.description,node);}
+if(rule.elseFilter){this.writeNode("ElseFilter",null,node);}else if(rule.filter){this.writeNode("ogc:Filter",rule.filter,node);}
+if(rule.minScaleDenominator!=undefined){this.writeNode("MinScaleDenominator",rule.minScaleDenominator,node);}
+if(rule.maxScaleDenominator!=undefined){this.writeNode("MaxScaleDenominator",rule.maxScaleDenominator,node);}
+var type,symbolizer;if(this.multipleSymbolizers&&rule.symbolizers){var symbolizer;for(var i=0,ii=rule.symbolizers.length;i<ii;++i){symbolizer=rule.symbolizers[i];type=symbolizer.CLASS_NAME.split(".").pop();this.writeNode(type+"Symbolizer",symbolizer,node);}}else{var types=OpenLayers.Style.SYMBOLIZER_PREFIXES;for(var i=0,len=types.length;i<len;++i){type=types[i];symbolizer=rule.symbolizer[type];if(symbolizer){this.writeNode(type+"Symbolizer",symbolizer,node);}}}
+return node;},"ElseFilter":function(){return this.createElementNSPlus("sld:ElseFilter");},"MinScaleDenominator":function(scale){return this.createElementNSPlus("sld:MinScaleDenominator",{value:scale});},"MaxScaleDenominator":function(scale){return this.createElementNSPlus("sld:MaxScaleDenominator",{value:scale});},"LineSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:LineSymbolizer");this.writeNode("Stroke",symbolizer,node);return node;},"Stroke":function(symbolizer){var node=this.createElementNSPlus("sld:Stroke");if(symbolizer.strokeColor!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeColor"},node);}
+if(symbolizer.strokeOpacity!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeOpacity"},node);}
+if(symbolizer.strokeWidth!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeWidth"},node);}
+if(symbolizer.strokeDashstyle!=undefined&&symbolizer.strokeDashstyle!=="solid"){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeDashstyle"},node);}
+if(symbolizer.strokeLinecap!=undefined){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"strokeLinecap"},node);}
+return node;},"CssParameter":function(obj){return this.createElementNSPlus("sld:CssParameter",{attributes:{name:this.getCssProperty(obj.key)},value:obj.symbolizer[obj.key]});},"TextSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:TextSymbolizer");if(symbolizer.label!=null){this.writeNode("Label",symbolizer.label,node);}
+if(symbolizer.fontFamily!=null||symbolizer.fontSize!=null||symbolizer.fontWeight!=null||symbolizer.fontStyle!=null){this.writeNode("Font",symbolizer,node);}
+if(symbolizer.haloRadius!=null||symbolizer.haloColor!=null||symbolizer.haloOpacity!=null){this.writeNode("Halo",symbolizer,node);}
+if(symbolizer.fillColor!=null||symbolizer.fillOpacity!=null){this.writeNode("Fill",symbolizer,node);}
+return node;},"Font":function(symbolizer){var node=this.createElementNSPlus("sld:Font");if(symbolizer.fontFamily){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontFamily"},node);}
+if(symbolizer.fontSize){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontSize"},node);}
+if(symbolizer.fontWeight){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontWeight"},node);}
+if(symbolizer.fontStyle){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fontStyle"},node);}
+return node;},"Label":function(label){var node=this.createElementNSPlus("sld:Label");var tokens=label.split("${");node.appendChild(this.createTextNode(tokens[0]));var item,last;for(var i=1,len=tokens.length;i<len;i++){item=tokens[i];last=item.indexOf("}");if(last>0){this.writeNode("ogc:PropertyName",{property:item.substring(0,last)},node);node.appendChild(this.createTextNode(item.substring(++last)));}else{node.appendChild(this.createTextNode("${"+item));}}
+return node;},"Halo":function(symbolizer){var node=this.createElementNSPlus("sld:Halo");if(symbolizer.haloRadius){this.writeNode("Radius",symbolizer.haloRadius,node);}
+if(symbolizer.haloColor||symbolizer.haloOpacity){this.writeNode("Fill",{fillColor:symbolizer.haloColor,fillOpacity:symbolizer.haloOpacity},node);}
+return node;},"Radius":function(value){return this.createElementNSPlus("sld:Radius",{value:value});},"RasterSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:RasterSymbolizer");if(symbolizer.geometry){this.writeNode("Geometry",symbolizer.geometry,node);}
+if(symbolizer.opacity){this.writeNode("Opacity",symbolizer.opacity,node);}
+if(symbolizer.colorMap){this.writeNode("ColorMap",symbolizer.colorMap,node);}
+return node;},"Geometry":function(geometry){var node=this.createElementNSPlus("sld:Geometry");if(geometry.property){this.writeNode("ogc:PropertyName",geometry,node);}
+return node;},"ColorMap":function(colorMap){var node=this.createElementNSPlus("sld:ColorMap");for(var i=0,len=colorMap.length;i<len;++i){this.writeNode("ColorMapEntry",colorMap[i],node);}
+return node;},"ColorMapEntry":function(colorMapEntry){var node=this.createElementNSPlus("sld:ColorMapEntry");var a=colorMapEntry;node.setAttribute("color",a.color);a.opacity!==undefined&&node.setAttribute("opacity",parseFloat(a.opacity));a.quantity!==undefined&&node.setAttribute("quantity",parseFloat(a.quantity));a.label!==undefined&&node.setAttribute("label",a.label);return node;},"PolygonSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:PolygonSymbolizer");if(symbolizer.fill!==false){this.writeNode("Fill",symbolizer,node);}
+if(symbolizer.stroke!==false){this.writeNode("Stroke",symbolizer,node);}
+return node;},"Fill":function(symbolizer){var node=this.createElementNSPlus("sld:Fill");if(symbolizer.fillColor){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fillColor"},node);}
+if(symbolizer.fillOpacity!=null){this.writeNode("CssParameter",{symbolizer:symbolizer,key:"fillOpacity"},node);}
+return node;},"PointSymbolizer":function(symbolizer){var node=this.createElementNSPlus("sld:PointSymbolizer");this.writeNode("Graphic",symbolizer,node);return node;},"Graphic":function(symbolizer){var node=this.createElementNSPlus("sld:Graphic");if(symbolizer.externalGraphic!=undefined){this.writeNode("ExternalGraphic",symbolizer,node);}else{this.writeNode("Mark",symbolizer,node);}
+if(symbolizer.graphicOpacity!=undefined){this.writeNode("Opacity",symbolizer.graphicOpacity,node);}
+if(symbolizer.pointRadius!=undefined){this.writeNode("Size",symbolizer.pointRadius*2,node);}
+if(symbolizer.rotation!=undefined){this.writeNode("Rotation",symbolizer.rotation,node);}
+return node;},"ExternalGraphic":function(symbolizer){var node=this.createElementNSPlus("sld:ExternalGraphic");this.writeNode("OnlineResource",symbolizer.externalGraphic,node);var format=symbolizer.graphicFormat||this.getGraphicFormat(symbolizer.externalGraphic);this.writeNode("Format",format,node);return node;},"Mark":function(symbolizer){var node=this.createElementNSPlus("sld:Mark");if(symbolizer.graphicName){this.writeNode("WellKnownName",symbolizer.graphicName,node);}
+if(symbolizer.fill!==false){this.writeNode("Fill",symbolizer,node);}
+if(symbolizer.stroke!==false){this.writeNode("Stroke",symbolizer,node);}
+return node;},"WellKnownName":function(name){return this.createElementNSPlus("sld:WellKnownName",{value:name});},"Opacity":function(value){return this.createElementNSPlus("sld:Opacity",{value:value});},"Size":function(value){return this.createElementNSPlus("sld:Size",{value:value});},"Rotation":function(value){return this.createElementNSPlus("sld:Rotation",{value:value});},"OnlineResource":function(href){return this.createElementNSPlus("sld:OnlineResource",{attributes:{"xlink:type":"simple","xlink:href":href}});},"Format":function(format){return this.createElementNSPlus("sld:Format",{value:format});}}},OpenLayers.Format.Filter.v1_0_0.prototype.writers),CLASS_NAME:"OpenLayers.Format.SLD.v1"});OpenLayers.Format.WMC.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.1.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.1.0/context.xsd",initialize:function(options){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[options]);},read_sld_MinScaleDenominator:function(layerContext,node){var minScaleDenominator=parseFloat(this.getChildValue(node));if(minScaleDenominator>0){layerContext.maxScale=minScaleDenominator;}},read_sld_MaxScaleDenominator:function(layerContext,node){layerContext.minScale=parseFloat(this.getChildValue(node));},read_wmc_SRS:function(layerContext,node){if(!("srs"in layerContext)){layerContext.srs={};}
+layerContext.srs[this.getChildValue(node)]=true;},write_wmc_Layer:function(context){var node=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[context]);if(context.maxScale){var minSD=this.createElementNS(this.namespaces.sld,"sld:MinScaleDenominator");minSD.appendChild(this.createTextNode(context.maxScale.toPrecision(16)));node.appendChild(minSD);}
+if(context.minScale){var maxSD=this.createElementNS(this.namespaces.sld,"sld:MaxScaleDenominator");maxSD.appendChild(this.createTextNode(context.minScale.toPrecision(16)));node.appendChild(maxSD);}
+if(context.srs){for(var name in context.srs){node.appendChild(this.createElementDefaultNS("SRS",name));}}
+node.appendChild(this.write_wmc_FormatList(context));node.appendChild(this.write_wmc_StyleList(context));if(context.dimensions){node.appendChild(this.write_wmc_DimensionList(context));}
+node.appendChild(this.write_wmc_LayerExtension(context));return node;},CLASS_NAME:"OpenLayers.Format.WMC.v1_1_0"});OpenLayers.Format.XLS.v1_1_0=OpenLayers.Class(OpenLayers.Format.XLS.v1,{VERSION:"1.1",schemaLocation:"http://www.opengis.net/xls http://schemas.opengis.net/ols/1.1.0/LocationUtilityService.xsd",initialize:function(options){OpenLayers.Format.XLS.v1.prototype.initialize.apply(this,[options]);},CLASS_NAME:"OpenLayers.Format.XLS.v1_1_0"});OpenLayers.Format.XLS.v1_1=OpenLayers.Format.XLS.v1_1_0;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15000,translationParameters:null,symbolMetrics:null,initialize:function(containerID){if(!this.supported()){return;}
+OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);this.translationParameters={x:0,y:0};this.symbolMetrics={};},supported:function(){var svgFeature="http://www.w3.org/TR/SVG11/feature#";return(document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature(svgFeature+"SVG","1.1")||document.implementation.hasFeature(svgFeature+"BasicStructure","1.1")));},inValidRange:function(x,y,xyOnly){var left=x+(xyOnly?0:this.translationParameters.x);var top=y+(xyOnly?0:this.translationParameters.y);return(left>=-this.MAX_PIXEL&&left<=this.MAX_PIXEL&&top>=-this.MAX_PIXEL&&top<=this.MAX_PIXEL);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=-extent.left/resolution;var top=extent.top/resolution;if(resolutionChanged){this.left=left;this.top=top;var extentString="0 0 "+this.size.w+" "+this.size.h;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);this.translate(0,0);return true;}else{var inRange=this.translate(left-this.left,top-this.top);if(!inRange){this.setExtent(extent,true);}
+return inRange;}},translate:function(x,y){if(!this.inValidRange(x,y,true)){return false;}else{var transformString="";if(x||y){transformString="translate("+x+","+y+")";}
+this.root.setAttributeNS(null,"transform",transformString);this.translationParameters={x:x,y:y};return true;}},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);this.rendererRoot.setAttributeNS(null,"height",this.size.h);},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="image";}else if(this.isComplexSymbol(style.graphicName)){nodeType="svg";}else{nodeType="circle";}
+break;case"OpenLayers.Geometry.Rectangle":nodeType="rect";break;case"OpenLayers.Geometry.LineString":nodeType="polyline";break;case"OpenLayers.Geometry.LinearRing":nodeType="polygon";break;case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="path";break;default:break;}
+return nodeType;},setStyle:function(node,style,options){style=style||node._style;options=options||node._options;var r=parseFloat(node.getAttributeNS(null,"r"));var widthFactor=1;var pos;if(node._geometryClass=="OpenLayers.Geometry.Point"&&r){node.style.visibility="";if(style.graphic===false){node.style.visibility="hidden";}else if(style.externalGraphic){pos=this.getPosition(node);if(style.graphicTitle){node.setAttributeNS(null,"title",style.graphicTitle);var label=this.nodeFactory(null,"title");label.textContent=style.graphicTitle;node.appendChild(label);}
+if(style.graphicWidth&&style.graphicHeight){node.setAttributeNS(null,"preserveAspectRatio","none");}
+var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;node.setAttributeNS(null,"x",(pos.x+xOffset).toFixed());node.setAttributeNS(null,"y",(pos.y+yOffset).toFixed());node.setAttributeNS(null,"width",width);node.setAttributeNS(null,"height",height);node.setAttributeNS(this.xlinkns,"href",style.externalGraphic);node.setAttributeNS(null,"style","opacity: "+opacity);node.onclick=OpenLayers.Renderer.SVG.preventDefault;}else if(this.isComplexSymbol(style.graphicName)){var offset=style.pointRadius*3;var size=offset*2;var src=this.importSymbol(style.graphicName);pos=this.getPosition(node);widthFactor=this.symbolMetrics[src.id][0]*3/size;var parent=node.parentNode;var nextSibling=node.nextSibling;if(parent){parent.removeChild(node);}
+node.firstChild&&node.removeChild(node.firstChild);node.appendChild(src.firstChild.cloneNode(true));node.setAttributeNS(null,"viewBox",src.getAttributeNS(null,"viewBox"));node.setAttributeNS(null,"width",size);node.setAttributeNS(null,"height",size);node.setAttributeNS(null,"x",pos.x-offset);node.setAttributeNS(null,"y",pos.y-offset);if(nextSibling){parent.insertBefore(node,nextSibling);}else if(parent){parent.appendChild(node);}}else{node.setAttributeNS(null,"r",style.pointRadius);}
+var rotation=style.rotation;if((rotation!==undefined||node._rotation!==undefined)&&pos){node._rotation=rotation;rotation|=0;if(node.nodeName!=="svg"){node.setAttributeNS(null,"transform","rotate("+rotation+" "+pos.x+" "+
+pos.y+")");}else{var metrics=this.symbolMetrics[src.id];node.firstChild.setAttributeNS(null,"transform","rotate("
++rotation+" "
++metrics[1]+" "
++metrics[2]+")");}}}
+if(options.isFilled){node.setAttributeNS(null,"fill",style.fillColor);node.setAttributeNS(null,"fill-opacity",style.fillOpacity);}else{node.setAttributeNS(null,"fill","none");}
+if(options.isStroked){node.setAttributeNS(null,"stroke",style.strokeColor);node.setAttributeNS(null,"stroke-opacity",style.strokeOpacity);node.setAttributeNS(null,"stroke-width",style.strokeWidth*widthFactor);node.setAttributeNS(null,"stroke-linecap",style.strokeLinecap||"round");node.setAttributeNS(null,"stroke-linejoin","round");style.strokeDashstyle&&node.setAttributeNS(null,"stroke-dasharray",this.dashStyle(style,widthFactor));}else{node.setAttributeNS(null,"stroke","none");}
+if(style.pointerEvents){node.setAttributeNS(null,"pointer-events",style.pointerEvents);}
+if(style.cursor!=null){node.setAttributeNS(null,"cursor",style.cursor);}
+return node;},dashStyle:function(style,widthFactor){var w=style.strokeWidth*widthFactor;var str=style.strokeDashstyle;switch(str){case'solid':return'none';case'dot':return[1,4*w].join();case'dash':return[4*w,4*w].join();case'dashdot':return[4*w,4*w,1,4*w].join();case'longdash':return[8*w,4*w].join();case'longdashdot':return[8*w,4*w,1,4*w].join();default:return OpenLayers.String.trim(str).replace(/\s+/g,",");}},createNode:function(type,id){var node=document.createElementNS(this.xmlns,type);if(id){node.setAttributeNS(null,"id",id);}
+return node;},nodeTypeCompare:function(node,type){return(type==node.nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_svgRoot","svg");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"g");},createDefs:function(){var defs=this.nodeFactory(this.container.id+"_defs","defs");this.rendererRoot.appendChild(defs);return defs;},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(this.top-geometry.y/resolution);if(this.inValidRange(x,y)){node.setAttributeNS(null,"cx",x);node.setAttributeNS(null,"cy",y);node.setAttributeNS(null,"r",radius);return node;}else{return false;}},drawLineString:function(node,geometry){var componentsResult=this.getComponentsString(geometry.components);if(componentsResult.path){node.setAttributeNS(null,"points",componentsResult.path);return(componentsResult.complete?node:null);}else{return false;}},drawLinearRing:function(node,geometry){var componentsResult=this.getComponentsString(geometry.components);if(componentsResult.path){node.setAttributeNS(null,"points",componentsResult.path);return(componentsResult.complete?node:null);}else{return false;}},drawPolygon:function(node,geometry){var d="";var draw=true;var complete=true;var linearRingResult,path;for(var j=0,len=geometry.components.length;j<len;j++){d+=" M";linearRingResult=this.getComponentsString(geometry.components[j].components," ");path=linearRingResult.path;if(path){d+=" "+path;complete=linearRingResult.complete&&complete;}else{draw=false;}}
+d+=" z";if(draw){node.setAttributeNS(null,"d",d);node.setAttributeNS(null,"fill-rule","evenodd");return complete?node:null;}else{return false;}},drawRectangle:function(node,geometry){var resolution=this.getResolution();var x=(geometry.x/resolution+this.left);var y=(this.top-geometry.y/resolution);if(this.inValidRange(x,y)){node.setAttributeNS(null,"x",x);node.setAttributeNS(null,"y",y);node.setAttributeNS(null,"width",geometry.width/resolution);node.setAttributeNS(null,"height",geometry.height/resolution);return node;}else{return false;}},drawSurface:function(node,geometry){var d=null;var draw=true;for(var i=0,len=geometry.components.length;i<len;i++){if((i%3)==0&&(i/3)==0){var component=this.getShortString(geometry.components[i]);if(!component){draw=false;}
+d="M "+component;}else if((i%3)==1){var component=this.getShortString(geometry.components[i]);if(!component){draw=false;}
+d+=" C "+component;}else{var component=this.getShortString(geometry.components[i]);if(!component){draw=false;}
+d+=" "+component;}}
+d+=" Z";if(draw){node.setAttributeNS(null,"d",d);return node;}else{return false;}},drawText:function(featureId,style,location){var resolution=this.getResolution();var x=(location.x/resolution+this.left);var y=(location.y/resolution-this.top);var label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,"text");label.setAttributeNS(null,"x",x);label.setAttributeNS(null,"y",-y);if(style.fontColor){label.setAttributeNS(null,"fill",style.fontColor);}
+if(style.fontOpacity){label.setAttributeNS(null,"opacity",style.fontOpacity);}
+if(style.fontFamily){label.setAttributeNS(null,"font-family",style.fontFamily);}
+if(style.fontSize){label.setAttributeNS(null,"font-size",style.fontSize);}
+if(style.fontWeight){label.setAttributeNS(null,"font-weight",style.fontWeight);}
+if(style.fontStyle){label.setAttributeNS(null,"font-style",style.fontStyle);}
+if(style.labelSelect===true){label.setAttributeNS(null,"pointer-events","visible");label._featureId=featureId;}else{label.setAttributeNS(null,"pointer-events","none");}
+var align=style.labelAlign||"cm";label.setAttributeNS(null,"text-anchor",OpenLayers.Renderer.SVG.LABEL_ALIGN[align[0]]||"middle");if(OpenLayers.IS_GECKO===true){label.setAttributeNS(null,"dominant-baseline",OpenLayers.Renderer.SVG.LABEL_ALIGN[align[1]]||"central");}
+var labelRows=style.label.split('\n');var numRows=labelRows.length;while(label.childNodes.length>numRows){label.removeChild(label.lastChild);}
+for(var i=0;i<numRows;i++){var tspan=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_tspan_"+i,"tspan");if(style.labelSelect===true){tspan._featureId=featureId;tspan._geometry=location;tspan._geometryClass=location.CLASS_NAME;}
+if(OpenLayers.IS_GECKO===false){tspan.setAttributeNS(null,"baseline-shift",OpenLayers.Renderer.SVG.LABEL_VSHIFT[align[1]]||"-35%");}
+tspan.setAttribute("x",x);if(i==0){var vfactor=OpenLayers.Renderer.SVG.LABEL_VFACTOR[align[1]];if(vfactor==null){vfactor=-.5;}
+tspan.setAttribute("dy",(vfactor*(numRows-1))+"em");}else{tspan.setAttribute("dy","1em");}
+tspan.textContent=(labelRows[i]==='')?' ':labelRows[i];if(!tspan.parentNode){label.appendChild(tspan);}}
+if(!label.parentNode){this.textRoot.appendChild(label);}},getComponentsString:function(components,separator){var renderCmp=[];var complete=true;var len=components.length;var strings=[];var str,component;for(var i=0;i<len;i++){component=components[i];renderCmp.push(component);str=this.getShortString(component);if(str){strings.push(str);}else{if(i>0){if(this.getShortString(components[i-1])){strings.push(this.clipLine(components[i],components[i-1]));}}
+if(i<len-1){if(this.getShortString(components[i+1])){strings.push(this.clipLine(components[i],components[i+1]));}}
+complete=false;}}
+return{path:strings.join(separator||","),complete:complete};},clipLine:function(badComponent,goodComponent){if(goodComponent.equals(badComponent)){return"";}
+var resolution=this.getResolution();var maxX=this.MAX_PIXEL-this.translationParameters.x;var maxY=this.MAX_PIXEL-this.translationParameters.y;var x1=goodComponent.x/resolution+this.left;var y1=this.top-goodComponent.y/resolution;var x2=badComponent.x/resolution+this.left;var y2=this.top-badComponent.y/resolution;var k;if(x2<-maxX||x2>maxX){k=(y2-y1)/(x2-x1);x2=x2<0?-maxX:maxX;y2=y1+(x2-x1)*k;}
+if(y2<-maxY||y2>maxY){k=(x2-x1)/(y2-y1);y2=y2<0?-maxY:maxY;x2=x1+(y2-y1)*k;}
+return x2+","+y2;},getShortString:function(point){var resolution=this.getResolution();var x=(point.x/resolution+this.left);var y=(this.top-point.y/resolution);if(this.inValidRange(x,y)){return x+","+y;}else{return false;}},getPosition:function(node){return({x:parseFloat(node.getAttributeNS(null,"cx")),y:parseFloat(node.getAttributeNS(null,"cy"))});},importSymbol:function(graphicName){if(!this.defs){this.defs=this.createDefs();}
+var id=this.container.id+"-"+graphicName;var existing=document.getElementById(id)
+if(existing!=null){return existing;}
+var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');}
+var symbolNode=this.nodeFactory(id,"symbol");var node=this.nodeFactory(null,"polygon");symbolNode.appendChild(node);var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var points=[];var x,y;for(var i=0;i<symbol.length;i=i+2){x=symbol[i];y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);points.push(x,",",y);}
+node.setAttributeNS(null,"points",points.join(" "));var width=symbolExtent.getWidth();var height=symbolExtent.getHeight();var viewBox=[symbolExtent.left-width,symbolExtent.bottom-height,width*3,height*3];symbolNode.setAttributeNS(null,"viewBox",viewBox.join(" "));this.symbolMetrics[id]=[Math.max(width,height),symbolExtent.getCenterLonLat().lon,symbolExtent.getCenterLonLat().lat];this.defs.appendChild(symbolNode);return symbolNode;},getFeatureIdFromEvent:function(evt){var featureId=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);if(!featureId){var target=evt.target;featureId=target.parentNode&&target!=this.rendererRoot&&target.parentNode._featureId;}
+return featureId;},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={"l":"start","r":"end","b":"bottom","t":"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={"t":"-70%","b":"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={"t":0,"b":-1};OpenLayers.Renderer.SVG.preventDefault=function(e){e.preventDefault&&e.preventDefault();};OpenLayers.Format.SLD.v1_0_0=OpenLayers.Class(OpenLayers.Format.SLD.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd",initialize:function(options){OpenLayers.Format.SLD.v1.prototype.initialize.apply(this,[options]);},CLASS_NAME:"OpenLayers.Format.SLD.v1_0_0"});OpenLayers.Format.OWSContext=OpenLayers.Class(OpenLayers.Format.Context,{defaultVersion:"0.3.1",getVersion:function(root,options){var version=OpenLayers.Format.XML.VersionedOGC.prototype.getVersion.apply(this,arguments);if(version==="0.3.0"){version=this.defaultVersion;}
+return version;},toContext:function(obj){var context={};if(obj.CLASS_NAME=="OpenLayers.Map"){context.bounds=obj.getExtent();context.maxExtent=obj.maxExtent;context.projection=obj.projection;context.size=obj.getSize();context.layers=obj.layers;}
+return context;},CLASS_NAME:"OpenLayers.Format.OWSContext"});OpenLayers.Format.OWSContext.v0_3_1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{owc:"http://www.opengis.net/ows-context",gml:"http://www.opengis.net/gml",kml:"http://www.opengis.net/kml/2.2",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},VERSION:"0.3.1",schemaLocation:"http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd",defaultPrefix:"owc",extractAttributes:true,xy:true,regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},featureNS:"http://mapserver.gis.umn.edu/mapserver",featureType:'vector',geometryName:'geometry',nestingLayerLookup:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);OpenLayers.Format.GML.v2.prototype.setGeometryTypes.call(this);},setNestingPath:function(l){if(l.layersContext){for(var i=0,len=l.layersContext.length;i<len;i++){var layerContext=l.layersContext[i];var nPath=[];var nTitle=l.title||"";if(l.metadata&&l.metadata.nestingPath){nPath=l.metadata.nestingPath.slice();}
+if(nTitle!=""){nPath.push(nTitle);}
+layerContext.metadata.nestingPath=nPath;if(layerContext.layersContext){this.setNestingPath(layerContext);}}}},decomposeNestingPath:function(nPath){var a=[];if(OpenLayers.Util.isArray(nPath)){var path=nPath.slice();while(path.length>0){a.push(path.slice());path.pop();}
+a.reverse();}
+return a;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var context={};this.readNode(data,context);this.setNestingPath({layersContext:context.layersContext});var layers=[];this.processLayer(layers,context);delete context.layersContext;context.layersContext=layers;return context;},processLayer:function(layerArray,layer){if(layer.layersContext){for(var i=0,len=layer.layersContext.length;i<len;i++){var l=layer.layersContext[i];layerArray.push(l);if(l.layersContext){this.processLayer(layerArray,l);}}}},write:function(context,options){var name="OWSContext";this.nestingLayerLookup={};options=options||{};OpenLayers.Util.applyDefaults(options,context);var root=this.writeNode(name,options);this.nestingLayerLookup=null;this.setAttributeNS(root,this.namespaces["xsi"],"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[root]);},readers:{"kml":{"Document":function(node,obj){obj.features=new OpenLayers.Format.KML({kmlns:this.namespaces.kml,extractStyles:true}).read(node);}},"owc":{"OWSContext":function(node,obj){this.readChildNodes(node,obj);},"General":function(node,obj){this.readChildNodes(node,obj);},"ResourceList":function(node,obj){this.readChildNodes(node,obj);},"Layer":function(node,obj){var layerContext={metadata:{},visibility:(node.getAttribute("hidden")!="1"),queryable:(node.getAttribute("queryable")=="1"),opacity:((node.getAttribute("opacity")!=null)?parseFloat(node.getAttribute("opacity")):null),name:node.getAttribute("name"),categoryLayer:(node.getAttribute("name")==null),formats:[],styles:[]};if(!obj.layersContext){obj.layersContext=[];}
+obj.layersContext.push(layerContext);this.readChildNodes(node,layerContext);},"InlineGeometry":function(node,obj){obj.features=[];var elements=this.getElementsByTagNameNS(node,this.namespaces.gml,"featureMember");var el;if(elements.length>=1){el=elements[0];}
+if(el&&el.firstChild){var featurenode=(el.firstChild.nextSibling)?el.firstChild.nextSibling:el.firstChild;this.setNamespace("feature",featurenode.namespaceURI);this.featureType=featurenode.localName||featurenode.nodeName.split(":").pop();this.readChildNodes(node,obj);}},"Server":function(node,obj){if((!obj.service&&!obj.version)||(obj.service!=OpenLayers.Format.Context.serviceTypes.WMS)){obj.service=node.getAttribute("service");obj.version=node.getAttribute("version");this.readChildNodes(node,obj);}},"Name":function(node,obj){obj.name=this.getChildValue(node);this.readChildNodes(node,obj);},"Title":function(node,obj){obj.title=this.getChildValue(node);this.readChildNodes(node,obj);},"StyleList":function(node,obj){this.readChildNodes(node,obj.styles);},"Style":function(node,obj){var style={};obj.push(style);this.readChildNodes(node,style);},"LegendURL":function(node,obj){var legend={};obj.legend=legend;this.readChildNodes(node,legend);},"OnlineResource":function(node,obj){obj.url=this.getAttributeNS(node,this.namespaces.xlink,"href");this.readChildNodes(node,obj);}},"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers.ows,"gml":OpenLayers.Format.GML.v2.prototype.readers.gml,"sld":OpenLayers.Format.SLD.v1_0_0.prototype.readers.sld,"feature":OpenLayers.Format.GML.v2.prototype.readers.feature},writers:{"owc":{"OWSContext":function(options){var node=this.createElementNSPlus("OWSContext",{attributes:{version:this.VERSION,id:options.id||OpenLayers.Util.createUniqueID("OpenLayers_OWSContext_")}});this.writeNode("General",options,node);this.writeNode("ResourceList",options,node);return node;},"General":function(options){var node=this.createElementNSPlus("General");this.writeNode("ows:BoundingBox",options,node);this.writeNode("ows:Title",options.title||'OpenLayers OWSContext',node);return node;},"ResourceList":function(options){var node=this.createElementNSPlus("ResourceList");for(var i=0,len=options.layers.length;i<len;i++){var layer=options.layers[i];var decomposedPath=this.decomposeNestingPath(layer.metadata.nestingPath);this.writeNode("_Layer",{layer:layer,subPaths:decomposedPath},node);}
+return node;},"Server":function(options){var node=this.createElementNSPlus("Server",{attributes:{version:options.version,service:options.service}});this.writeNode("OnlineResource",options,node);return node;},"OnlineResource":function(options){var node=this.createElementNSPlus("OnlineResource",{attributes:{"xlink:href":options.url}});return node;},"InlineGeometry":function(layer){var node=this.createElementNSPlus("InlineGeometry");this.writeNode("gml:boundedBy",layer.getDataExtent(),node);for(var i=0,len=layer.features.length;i<len;i++){this.writeNode("gml:featureMember",layer.features[i],node);}
+return node;},"StyleList":function(styles){var node=this.createElementNSPlus("StyleList");for(var i=0,len=styles.length;i<len;i++){this.writeNode("Style",styles[i],node);}
+return node;},"Style":function(style){var node=this.createElementNSPlus("Style");this.writeNode("Name",style,node);this.writeNode("Title",style,node);if(style.legend){this.writeNode("LegendURL",style,node);}
+return node;},"Name":function(obj){var node=this.createElementNSPlus("Name",{value:obj.name});return node;},"Title":function(obj){var node=this.createElementNSPlus("Title",{value:obj.title});return node;},"LegendURL":function(style){var node=this.createElementNSPlus("LegendURL");this.writeNode("OnlineResource",style.legend,node);return node;},"_WMS":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:layer.params.LAYERS,queryable:layer.queryable?"1":"0",hidden:layer.visibility?"0":"1",opacity:layer.opacity?layer.opacity:null}});this.writeNode("ows:Title",layer.name,node);this.writeNode("ows:OutputFormat",layer.params.FORMAT,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WMS,version:layer.params.VERSION,url:layer.url},node);if(layer.metadata.styles&&layer.metadata.styles.length>0){this.writeNode("StyleList",layer.metadata.styles,node);}
+return node;},"_Layer":function(options){var layer,subPaths,node,title;layer=options.layer;subPaths=options.subPaths;node=null;title=null;if(subPaths.length>0){var path=subPaths[0].join("/");var index=path.lastIndexOf("/");node=this.nestingLayerLookup[path];title=(index>0)?path.substring(index+1,path.length):path;if(!node){node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",title,node);this.nestingLayerLookup[path]=node;}
+options.subPaths.shift();this.writeNode("_Layer",options,node);return node;}else{if(layer instanceof OpenLayers.Layer.WMS){node=this.writeNode("_WMS",layer);}else if(layer instanceof OpenLayers.Layer.Vector){if(layer.protocol instanceof OpenLayers.Protocol.WFS.v1){node=this.writeNode("_WFS",layer);}else if(layer.protocol instanceof OpenLayers.Protocol.HTTP){if(layer.protocol.format instanceof OpenLayers.Format.GML){layer.protocol.format.version="2.1.2";node=this.writeNode("_GML",layer);}else if(layer.protocol.format instanceof OpenLayers.Format.KML){layer.protocol.format.version="2.2";node=this.writeNode("_KML",layer);}}else{this.setNamespace("feature",this.featureNS);node=this.writeNode("_InlineGeometry",layer);}}
+if(layer.options.maxScale){this.writeNode("sld:MinScaleDenominator",layer.options.maxScale,node);}
+if(layer.options.minScale){this.writeNode("sld:MaxScaleDenominator",layer.options.minScale,node);}
+this.nestingLayerLookup[layer.name]=node;return node;}},"_WFS":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:layer.protocol.featurePrefix+":"+layer.protocol.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.WFS,version:layer.protocol.version,url:layer.protocol.url},node);return node;},"_InlineGeometry":function(layer){var node=this.createElementNSPlus("Layer",{attributes:{name:this.featureType,hidden:layer.visibility?"0":"1"}});this.writeNode("ows:Title",layer.name,node);this.writeNode("InlineGeometry",layer,node);return node;},"_GML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.GML,url:layer.protocol.url,version:layer.protocol.format.version},node);return node;},"_KML":function(layer){var node=this.createElementNSPlus("Layer");this.writeNode("ows:Title",layer.name,node);this.writeNode("Server",{service:OpenLayers.Format.Context.serviceTypes.KML,version:layer.protocol.format.version,url:layer.protocol.url},node);return node;}},"gml":OpenLayers.Util.applyDefaults({"boundedBy":function(bounds){var node=this.createElementNSPlus("gml:boundedBy");this.writeNode("gml:Box",bounds,node);return node;}},OpenLayers.Format.GML.v2.prototype.writers.gml),"ows":OpenLayers.Format.OWSCommon.v1_0_0.prototype.writers.ows,"sld":OpenLayers.Format.SLD.v1_0_0.prototype.writers.sld,"feature":OpenLayers.Format.GML.v2.prototype.writers.feature},CLASS_NAME:"OpenLayers.Format.OWSContext.v0_3_1"});OpenLayers.Control.ScaleLine=OpenLayers.Class(OpenLayers.Control,{maxWidth:100,topOutUnits:"km",topInUnits:"m",bottomOutUnits:"mi",bottomInUnits:"ft",eTop:null,eBottom:null,geodesic:false,draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.eTop){this.eTop=document.createElement("div");this.eTop.className=this.displayClass+"Top";var theLen=this.topInUnits.length;this.div.appendChild(this.eTop);if((this.topOutUnits=="")||(this.topInUnits=="")){this.eTop.style.visibility="hidden";}else{this.eTop.style.visibility="visible";}
+this.eBottom=document.createElement("div");this.eBottom.className=this.displayClass+"Bottom";this.div.appendChild(this.eBottom);if((this.bottomOutUnits=="")||(this.bottomInUnits=="")){this.eBottom.style.visibility="hidden";}else{this.eBottom.style.visibility="visible";}}
+this.map.events.register('moveend',this,this.update);this.update();return this.div;},getBarLen:function(maxLen){var digits=parseInt(Math.log(maxLen)/Math.log(10));var pow10=Math.pow(10,digits);var firstChar=parseInt(maxLen/pow10);var barLen;if(firstChar>5){barLen=5;}else if(firstChar>2){barLen=2;}else{barLen=1;}
+return barLen*pow10;},update:function(){var res=this.map.getResolution();if(!res){return;}
+var curMapUnits=this.map.getUnits();var inches=OpenLayers.INCHES_PER_UNIT;var maxSizeData=this.maxWidth*res*inches[curMapUnits];var geodesicRatio=1;if(this.geodesic===true){var maxSizeGeodesic=(this.map.getGeodesicPixelSize().w||0.000001)*this.maxWidth;var maxSizeKilometers=maxSizeData/inches["km"];geodesicRatio=maxSizeGeodesic/maxSizeKilometers;maxSizeData*=geodesicRatio;}
+var topUnits;var bottomUnits;if(maxSizeData>100000){topUnits=this.topOutUnits;bottomUnits=this.bottomOutUnits;}else{topUnits=this.topInUnits;bottomUnits=this.bottomInUnits;}
+var topMax=maxSizeData/inches[topUnits];var bottomMax=maxSizeData/inches[bottomUnits];var topRounded=this.getBarLen(topMax);var bottomRounded=this.getBarLen(bottomMax);topMax=topRounded/inches[curMapUnits]*inches[topUnits];bottomMax=bottomRounded/inches[curMapUnits]*inches[bottomUnits];var topPx=topMax/res/geodesicRatio;var bottomPx=bottomMax/res/geodesicRatio;if(this.eBottom.style.visibility=="visible"){this.eBottom.style.width=Math.round(bottomPx)+"px";this.eBottom.innerHTML=bottomRounded+" "+bottomUnits;}
+if(this.eTop.style.visibility=="visible"){this.eTop.style.width=Math.round(topPx)+"px";this.eTop.innerHTML=topRounded+" "+topUnits;}},CLASS_NAME:"OpenLayers.Control.ScaleLine"});OpenLayers.Icon=OpenLayers.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(url,size,offset,calculateOffset){this.url=url;this.size=(size)?size:new OpenLayers.Size(20,20);this.offset=offset?offset:new OpenLayers.Pixel(-(this.size.w/2),-(this.size.h/2));this.calculateOffset=calculateOffset;var id=OpenLayers.Util.createUniqueID("OL_Icon_");this.imageDiv=OpenLayers.Util.createAlphaImageDiv(id);},destroy:function(){this.erase();OpenLayers.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null;},clone:function(){return new OpenLayers.Icon(this.url,this.size,this.offset,this.calculateOffset);},setSize:function(size){if(size!=null){this.size=size;}
+this.draw();},setUrl:function(url){if(url!=null){this.url=url;}
+this.draw();},draw:function(px){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(px);return this.imageDiv;},erase:function(){if(this.imageDiv!=null&&this.imageDiv.parentNode!=null){OpenLayers.Element.remove(this.imageDiv);}},setOpacity:function(opacity){OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,null,null,null,opacity);},moveTo:function(px){if(px!=null){this.px=px;}
+if(this.imageDiv!=null){if(this.px==null){this.display(false);}else{if(this.calculateOffset){this.offset=this.calculateOffset(this.size);}
+var offsetPx=this.px.offset(this.offset);OpenLayers.Util.modifyAlphaImageDiv(this.imageDiv,null,offsetPx);}}},display:function(display){this.imageDiv.style.display=(display)?"":"none";},isDrawn:function(){var isDrawn=(this.imageDiv&&this.imageDiv.parentNode&&(this.imageDiv.parentNode.nodeType!=11));return isDrawn;},CLASS_NAME:"OpenLayers.Icon"});OpenLayers.Marker=OpenLayers.Class({icon:null,lonlat:null,events:null,map:null,initialize:function(lonlat,icon){this.lonlat=lonlat;var newIcon=(icon)?icon:OpenLayers.Marker.defaultIcon();if(this.icon==null){this.icon=newIcon;}else{this.icon.url=newIcon.url;this.icon.size=newIcon.size;this.icon.offset=newIcon.offset;this.icon.calculateOffset=newIcon.calculateOffset;}
+this.events=new OpenLayers.Events(this,this.icon.imageDiv,null);},destroy:function(){this.erase();this.map=null;this.events.destroy();this.events=null;if(this.icon!=null){this.icon.destroy();this.icon=null;}},draw:function(px){return this.icon.draw(px);},erase:function(){if(this.icon!=null){this.icon.erase();}},moveTo:function(px){if((px!=null)&&(this.icon!=null)){this.icon.moveTo(px);}
+this.lonlat=this.map.getLonLatFromLayerPx(px);},isDrawn:function(){var isDrawn=(this.icon&&this.icon.isDrawn());return isDrawn;},onScreen:function(){var onScreen=false;if(this.map){var screenBounds=this.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);}
+return onScreen;},inflate:function(inflate){if(this.icon){var newSize=new OpenLayers.Size(this.icon.size.w*inflate,this.icon.size.h*inflate);this.icon.setSize(newSize);}},setOpacity:function(opacity){this.icon.setOpacity(opacity);},setUrl:function(url){this.icon.setUrl(url);},display:function(display){this.icon.display(display);},CLASS_NAME:"OpenLayers.Marker"});OpenLayers.Marker.defaultIcon=function(){var url=OpenLayers.Util.getImagesLocation()+"marker.png";var size=new OpenLayers.Size(21,25);var calculateOffset=function(size){return new OpenLayers.Pixel(-(size.w/2),-size.h);};return new OpenLayers.Icon(url,size,null,calculateOffset);};OpenLayers.Layer.TileCache=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,format:'image/png',serverResolutions:null,initialize:function(name,url,layername,options){this.layername=layername;OpenLayers.Layer.Grid.prototype.initialize.apply(this,[name,url,{},options]);this.extension=this.format.split('/')[1].toLowerCase();this.extension=(this.extension=='jpg')?'jpeg':this.extension;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.TileCache(this.name,this.url,this.layername,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var res=this.map.getResolution();var bbox=this.maxExtent;var size=this.tileSize;var tileX=Math.round((bounds.left-bbox.left)/(res*size.w));var tileY=Math.round((bounds.bottom-bbox.bottom)/(res*size.h));var tileZ=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom();function zeroPad(number,length){number=String(number);var zeros=[];for(var i=0;i<length;++i){zeros.push('0');}
+return zeros.join('').substring(0,length-number.length)+number;}
+var components=[this.layername,zeroPad(tileZ,2),zeroPad(parseInt(tileX/1000000),3),zeroPad((parseInt(tileX/1000)%1000),3),zeroPad((parseInt(tileX)%1000),3),zeroPad(parseInt(tileY/1000000),3),zeroPad((parseInt(tileY/1000)%1000),3),zeroPad((parseInt(tileY)%1000),3)+'.'+this.extension];var path=components.join('/');var url=this.url;if(OpenLayers.Util.isArray(url)){url=this.selectUrl(path,url);}
+url=(url.charAt(url.length-1)=='/')?url:url+'/';return url+path;},CLASS_NAME:"OpenLayers.Layer.TileCache"});OpenLayers.Strategy.Paging=OpenLayers.Class(OpenLayers.Strategy,{features:null,length:10,num:null,paging:false,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"beforefeaturesadded":this.cacheFeatures,scope:this});}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.clearCache();this.layer.events.un({"beforefeaturesadded":this.cacheFeatures,scope:this});}
+return deactivated;},cacheFeatures:function(event){if(!this.paging){this.clearCache();this.features=event.features;this.pageNext(event);}},clearCache:function(){if(this.features){for(var i=0;i<this.features.length;++i){this.features[i].destroy();}}
+this.features=null;this.num=null;},pageCount:function(){var numFeatures=this.features?this.features.length:0;return Math.ceil(numFeatures/this.length);},pageNum:function(){return this.num;},pageLength:function(newLength){if(newLength&&newLength>0){this.length=newLength;}
+return this.length;},pageNext:function(event){var changed=false;if(this.features){if(this.num===null){this.num=-1;}
+var start=(this.num+1)*this.length;changed=this.page(start,event);}
+return changed;},pagePrevious:function(){var changed=false;if(this.features){if(this.num===null){this.num=this.pageCount();}
+var start=(this.num-1)*this.length;changed=this.page(start);}
+return changed;},page:function(start,event){var changed=false;if(this.features){if(start>=0&&start<this.features.length){var num=Math.floor(start/this.length);if(num!=this.num){this.paging=true;var features=this.features.slice(start,start+this.length);this.layer.removeFeatures(this.layer.features);this.num=num;if(event&&event.features){event.features=features;}else{this.layer.addFeatures(features);}
+this.paging=false;changed=true;}}}
+return changed;},CLASS_NAME:"OpenLayers.Strategy.Paging"});OpenLayers.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforesetfeature","setfeature","beforetransform","transform","transformcomplete"],geometryTypes:null,layer:null,preserveAspectRatio:false,rotate:true,feature:null,renderIntent:"temporary",rotationHandleSymbolizer:null,box:null,center:null,scale:1,ratio:1,rotation:0,handles:null,rotationHandles:null,dragControl:null,initialize:function(layer,options){this.EVENT_TYPES=OpenLayers.Control.TransformFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;if(!this.rotationHandleSymbolizer){this.rotationHandleSymbolizer={stroke:false,pointRadius:10,fillOpacity:0,cursor:"pointer"};}
+this.createBox();this.createControl();},activate:function(){var activated=false;if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.dragControl.activate();this.layer.addFeatures([this.box]);this.rotate&&this.layer.addFeatures(this.rotationHandles);this.layer.addFeatures(this.handles);activated=true;}
+return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.layer.removeFeatures(this.handles);this.rotate&&this.layer.removeFeatures(this.rotationHandles);this.layer.removeFeatures([this.box]);this.dragControl.deactivate();deactivated=true;}
+if(deactivated){this.unsetFeature();}
+return deactivated;},setMap:function(map){this.dragControl.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},setFeature:function(feature,initialParams){initialParams=OpenLayers.Util.applyDefaults(initialParams,{rotation:0,scale:1,ratio:1});var oldRotation=this.rotation;var oldCenter=this.center;OpenLayers.Util.extend(this,initialParams);var cont=this.events.triggerEvent("beforesetfeature",{feature:feature});if(cont===false){return;}
+this.feature=feature;this.activate();this._setfeature=true;var featureBounds=this.feature.geometry.getBounds();this.box.move(featureBounds.getCenterLonLat());this.box.geometry.rotate(-oldRotation,oldCenter);this._angle=0;var ll;if(this.rotation){var geom=feature.geometry.clone();geom.rotate(-this.rotation,this.center);var box=new OpenLayers.Feature.Vector(geom.getBounds().toGeometry());box.geometry.rotate(this.rotation,this.center);this.box.geometry.rotate(this.rotation,this.center);this.box.move(box.geometry.getBounds().getCenterLonLat());var llGeom=box.geometry.components[0].components[0];ll=llGeom.getBounds().getCenterLonLat();}else{ll=new OpenLayers.LonLat(featureBounds.left,featureBounds.bottom);}
+this.handles[0].move(ll);delete this._setfeature;this.events.triggerEvent("setfeature",{feature:feature});},unsetFeature:function(){if(this.active){this.deactivate();}else{this.feature=null;this.rotation=0;this.scale=1;this.ratio=1;}},createBox:function(){var control=this;this.center=new OpenLayers.Geometry.Point(0,0);var box=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString([new OpenLayers.Geometry.Point(-1,-1),new OpenLayers.Geometry.Point(0,-1),new OpenLayers.Geometry.Point(1,-1),new OpenLayers.Geometry.Point(1,0),new OpenLayers.Geometry.Point(1,1),new OpenLayers.Geometry.Point(0,1),new OpenLayers.Geometry.Point(-1,1),new OpenLayers.Geometry.Point(-1,0),new OpenLayers.Geometry.Point(-1,-1)]),null,typeof this.renderIntent=="string"?null:this.renderIntent);box.geometry.move=function(x,y){control._moving=true;OpenLayers.Geometry.LineString.prototype.move.apply(this,arguments);control.center.move(x,y);delete control._moving;};var vertexMoveFn=function(x,y){OpenLayers.Geometry.Point.prototype.move.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.move(x,y);this._handle.geometry.move(x,y);};var vertexResizeFn=function(scale,center,ratio){OpenLayers.Geometry.Point.prototype.resize.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.resize(scale,center,ratio);this._handle.geometry.resize(scale,center,ratio);};var vertexRotateFn=function(angle,center){OpenLayers.Geometry.Point.prototype.rotate.apply(this,arguments);this._rotationHandle&&this._rotationHandle.geometry.rotate(angle,center);this._handle.geometry.rotate(angle,center);};var handleMoveFn=function(x,y){var oldX=this.x,oldY=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,x,y);if(control._moving){return;}
+var evt=control.dragControl.handlers.drag.evt;var preserveAspectRatio=!control._setfeature&&control.preserveAspectRatio;var reshape=!preserveAspectRatio&&!(evt&&evt.shiftKey);var oldGeom=new OpenLayers.Geometry.Point(oldX,oldY);var centerGeometry=control.center;this.rotate(-control.rotation,centerGeometry);oldGeom.rotate(-control.rotation,centerGeometry);var dx1=this.x-centerGeometry.x;var dy1=this.y-centerGeometry.y;var dx0=dx1-(this.x-oldGeom.x);var dy0=dy1-(this.y-oldGeom.y);this.x=oldX;this.y=oldY;var scale,ratio=1;if(reshape){scale=Math.abs(dy0)<0.00001?1:dy1/dy0;ratio=(Math.abs(dx0)<0.00001?1:(dx1/dx0))/scale;}else{var l0=Math.sqrt((dx0*dx0)+(dy0*dy0));var l1=Math.sqrt((dx1*dx1)+(dy1*dy1));scale=l1/l0;}
+control._moving=true;control.box.geometry.rotate(-control.rotation,centerGeometry);delete control._moving;control.box.geometry.resize(scale,centerGeometry,ratio);control.box.geometry.rotate(control.rotation,centerGeometry);control.transformFeature({scale:scale,ratio:ratio});};var rotationHandleMoveFn=function(x,y){var oldX=this.x,oldY=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,x,y);if(control._moving){return;}
+var evt=control.dragControl.handlers.drag.evt;var constrain=(evt&&evt.shiftKey)?45:1;var centerGeometry=control.center;var dx1=this.x-centerGeometry.x;var dy1=this.y-centerGeometry.y;var dx0=dx1-x;var dy0=dy1-y;this.x=oldX;this.y=oldY;var a0=Math.atan2(dy0,dx0);var a1=Math.atan2(dy1,dx1);var angle=a1-a0;angle*=180/Math.PI;control._angle=(control._angle+angle)%360;var diff=control.rotation%constrain;if(Math.abs(control._angle)>=constrain||diff!==0){angle=Math.round(control._angle/constrain)*constrain-
+diff;control._angle=0;control.box.geometry.rotate(angle,centerGeometry);control.transformFeature({rotation:angle});}};var handles=new Array(8);var rotationHandles=new Array(4);var geom,handle,rotationHandle;for(var i=0;i<8;++i){geom=box.geometry.components[i];handle=new OpenLayers.Feature.Vector(geom.clone(),null,typeof this.renderIntent=="string"?null:this.renderIntent);if(i%2==0){rotationHandle=new OpenLayers.Feature.Vector(geom.clone(),null,typeof this.rotationHandleSymbolizer=="string"?null:this.rotationHandleSymbolizer);rotationHandle.geometry.move=rotationHandleMoveFn;geom._rotationHandle=rotationHandle;rotationHandles[i/2]=rotationHandle;}
+geom.move=vertexMoveFn;geom.resize=vertexResizeFn;geom.rotate=vertexRotateFn;handle.geometry.move=handleMoveFn;geom._handle=handle;handles[i]=handle;}
+this.box=box;this.rotationHandles=rotationHandles;this.handles=handles;},createControl:function(){var control=this;this.dragControl=new OpenLayers.Control.DragFeature(this.layer,{documentDrag:true,moveFeature:function(pixel){if(this.feature===control.feature){this.feature=control.box;}
+OpenLayers.Control.DragFeature.prototype.moveFeature.apply(this,arguments);},onDrag:function(feature,pixel){if(feature===control.box){control.transformFeature({center:control.center});control.drawHandles();}},onStart:function(feature,pixel){var eligible=!control.geometryTypes||OpenLayers.Util.indexOf(control.geometryTypes,feature.geometry.CLASS_NAME)!==-1;var i=OpenLayers.Util.indexOf(control.handles,feature);i+=OpenLayers.Util.indexOf(control.rotationHandles,feature);if(feature!==control.feature&&feature!==control.box&&i==-2&&eligible){control.setFeature(feature);}},onComplete:function(feature,pixel){control.events.triggerEvent("transformcomplete",{feature:control.feature});}});},drawHandles:function(){var layer=this.layer;for(var i=0;i<8;++i){if(this.rotate&&i%2===0){layer.drawFeature(this.rotationHandles[i/2],this.rotationHandleSymbolizer);}
+layer.drawFeature(this.handles[i],this.renderIntent);}},transformFeature:function(mods){if(!this._setfeature){this.scale*=(mods.scale||1);this.ratio*=(mods.ratio||1);var oldRotation=this.rotation;this.rotation=(this.rotation+(mods.rotation||0))%360;if(this.events.triggerEvent("beforetransform",mods)!==false){var feature=this.feature;var geom=feature.geometry;var center=this.center;geom.rotate(-oldRotation,center);if(mods.scale||mods.ratio){geom.resize(mods.scale,center,mods.ratio);}else if(mods.center){feature.move(mods.center.getBounds().getCenterLonLat());}
+geom.rotate(this.rotation,center);this.layer.drawFeature(feature);feature.toState(OpenLayers.State.UPDATE);this.events.triggerEvent("transform",mods);}}
+this.layer.drawFeature(this.box,this.renderIntent);this.drawHandles();},destroy:function(){var geom;for(var i=0;i<8;++i){geom=this.box.geometry.components[i];geom._handle.destroy();geom._handle=null;geom._rotationHandle&&geom._rotationHandle.destroy();geom._rotationHandle=null;}
+this.box.destroy();this.box=null;this.layer=null;this.dragControl.destroy();OpenLayers.Control.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.TransformFeature"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,zoomOffset:0,serverResolutions:null,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.03390625,-128*156543.03390625,128*156543.03390625,128*156543.03390625),maxResolution:156543.03390625,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);}
+url=url||this.url;name=name||this.name;var newArguments=[name,url,{},options];OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var xyz=this.getXYZ(bounds);var url=this.url;if(OpenLayers.Util.isArray(url)){var s=''+xyz.x+xyz.y+xyz.z;url=this.selectUrl(s,url);}
+return OpenLayers.String.format(url,xyz);},getXYZ:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom()+this.zoomOffset;var limit=Math.pow(2,z);if(this.wrapDateLine)
+{x=((x%limit)+limit)%limit;}
+return{'x':x,'y':y,'z':z};},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",attribution:"Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions());}
+obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},wrapDateLine:true,CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxOffsets:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask});},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);if(this.dragHandler){this.dragHandler.destroy();this.dragHandler=null;}},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv('zoomBox',new OpenLayers.Pixel(-9999,-9999));this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.eventsDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.eventsDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);var offset=this.getBoxOffsets();this.zoomBox.style.width=(deltaX+offset.width+1)+"px";this.zoomBox.style.height=(deltaY+offset.height+1)+"px";this.zoomBox.style.left=(xy.x<startX?startX-deltaX-offset.left:startX-offset.left)+"px";this.zoomBox.style.top=(xy.y<startY?startY-deltaY-offset.top:startY-offset.top)+"px";},endBox:function(end){var result;if(Math.abs(this.dragHandler.start.x-end.x)>5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();}
+this.removeBox();this.callback("done",[result]);},removeBox:function(){this.map.eventsDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxOffsets=null;OpenLayers.Element.removeClass(this.map.eventsDiv,"olDrawBox");},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.dragHandler.deactivate()){if(this.zoomBox){this.removeBox();}}
+return true;}else{return false;}},getBoxOffsets:function(){if(!this.boxOffsets){var testDiv=document.createElement("div");testDiv.style.position="absolute";testDiv.style.border="1px solid black";testDiv.style.width="3px";document.body.appendChild(testDiv);var w3cBoxModel=testDiv.clientWidth==3;document.body.removeChild(testDiv);var left=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"));var right=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"));var top=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"));var bottom=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:left,right:right,top:top,bottom:bottom,width:w3cBoxModel===false?left+right:0,height:w3cBoxModel===false?top+bottom:0};}
+return this.boxOffsets;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,alwaysZoom:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){var bounds;if(!this.out){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{var pixWidth=Math.abs(position.right-position.left);var pixHeight=Math.abs(position.top-position.bottom);var zoomFactor=Math.min((this.map.size.h/pixHeight),(this.map.size.w/pixWidth));var extent=this.map.getExtent();var center=this.map.getLonLatFromPixel(position.getCenterPixel());var xmin=center.lon-(extent.getWidth()/2)*zoomFactor;var xmax=center.lon+(extent.getWidth()/2)*zoomFactor;var ymin=center.lat-(extent.getHeight()/2)*zoomFactor;var ymax=center.lat+(extent.getHeight()/2)*zoomFactor;bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);}
+var lastZoom=this.map.getZoom();this.map.zoomToExtent(bounds);if(lastZoom==this.map.getZoom()&&this.alwaysZoom==true){this.map.zoomTo(lastZoom+(this.out?-1:1));}}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()-1);}}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:1,documentDrag:false,kinetic:null,enableKinetic:false,kineticInterval:10,draw:function(){if(this.enableKinetic){var config={interval:this.kineticInterval};if(typeof this.enableKinetic==="object"){config=OpenLayers.Util.extend(config,this.enableKinetic);}
+this.kinetic=new OpenLayers.Kinetic(config);}
+this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone,"down":this.panMapStart},{interval:this.interval,documentDrag:this.documentDrag});},panMapStart:function(){if(this.kinetic){this.kinetic.begin();}},panMap:function(xy){if(this.kinetic){this.kinetic.update(xy);}
+this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:true,animate:false});},panMapDone:function(xy){if(this.panned){var res=null;if(this.kinetic){res=this.kinetic.end(xy);}
+this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:!!res,animate:false});if(res){var self=this;this.kinetic.move(res,function(x,y,end){self.map.pan(x,y,{dragging:!end,animate:false});});}
+this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:true,'double':false,pixelTolerance:0,dblclickTolerance:13,stopSingle:false,stopDouble:false,timerId:null,touch:false,down:null,last:null,first:null,rightclickTimerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){if(!this.touch){this.unregisterMouseListeners();this.touch=true;}
+this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},touchmove:function(evt){this.last=this.getEventInfo(evt);return true;},touchend:function(evt){if(this.down){evt.xy=this.last.xy;evt.lastTouches=this.last.touches;this.handleSingle(evt);this.down=null;}
+return true;},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this});},mousedown:function(evt){this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},mouseup:function(evt){var propagate=true;if(this.checkModifiers(evt)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(evt)){propagate=this.rightclick(evt);}
+return propagate;},rightclick:function(evt){if(this.passesTolerance(evt)){if(this.rightclickTimerId!=null){this.clearTimer();this.callback('dblrightclick',[evt]);return!this.stopDouble;}else{var clickEvent=this['double']?OpenLayers.Util.extend({},evt):this.callback('rightclick',[evt]);var delayedRightCall=OpenLayers.Function.bind(this.delayedRightCall,this,clickEvent);this.rightclickTimerId=window.setTimeout(delayedRightCall,this.delay);}}
+return!this.stopSingle;},delayedRightCall:function(evt){this.rightclickTimerId=null;if(evt){this.callback('rightclick',[evt]);}},click:function(evt){if(!this.last){this.last=this.getEventInfo(evt);}
+this.handleSingle(evt);return!this.stopSingle;},dblclick:function(evt){this.handleDouble(evt);return!this.stopDouble;},handleDouble:function(evt){if(this["double"]&&this.passesDblclickTolerance(evt)){this.callback("dblclick",[evt]);}},handleSingle:function(evt){if(this.passesTolerance(evt)){if(this.timerId!=null){if(this.last.touches&&this.last.touches.length===1){if(this["double"]){OpenLayers.Event.stop(evt);}
+this.handleDouble(evt);}
+if(!this.last.touches||this.last.touches.length!==2){this.clearTimer();}}else{this.first=this.getEventInfo(evt);var clickEvent=this.single?OpenLayers.Util.extend({},evt):null;this.queuePotentialClick(clickEvent);}}},queuePotentialClick:function(evt){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);},passesTolerance:function(evt){var passes=true;if(this.pixelTolerance!=null&&this.down&&this.down.xy){passes=this.pixelTolerance>=this.down.xy.distanceTo(evt.xy);if(passes&&this.touch&&this.down.touches.length===this.last.touches.length){for(var i=0,ii=this.down.touches.length;i<ii;++i){if(this.getTouchDistance(this.down.touches[i],this.last.touches[i])>this.pixelTolerance){passes=false;break;}}}}
+return passes;},getTouchDistance:function(from,to){return Math.sqrt(Math.pow(from.clientX-to.clientX,2)+
+Math.pow(from.clientY-to.clientY,2));},passesDblclickTolerance:function(evt){var passes=true;if(this.down&&this.first){passes=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance;}
+return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}
+if(this.rightclickTimerId!=null){window.clearTimeout(this.rightclickTimerId);this.rightclickTimerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback("click",[evt]);}},getEventInfo:function(evt){var touches;if(evt.touches){var len=evt.touches.length;touches=new Array(len);var touch;for(var i=0;i<len;i++){touch=evt.touches[i];touches[i]={clientX:touch.clientX,clientY:touch.clientY};}}
+return{xy:evt.xy,touches:touches};},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;this.first=null;this.last=null;this.touch=false;deactivated=true;}
+return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:false,zoomBox:null,zoomBoxEnabled:true,zoomWheelEnabled:true,mouseWheelOptions:null,handleRightClicks:false,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:true,initialize:function(options){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.deactivate();if(this.dragPan){this.dragPan.destroy();}
+this.dragPan=null;if(this.zoomBox){this.zoomBox.destroy();}
+this.zoomBox=null;if(this.pinchZoom){this.pinchZoom.destroy();}
+this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){this.dragPan.activate();if(this.zoomWheelEnabled){this.handlers.wheel.activate();}
+this.handlers.click.activate();if(this.zoomBoxEnabled){this.zoomBox.activate();}
+if(this.pinchZoom){this.pinchZoom.activate();}
+return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.pinchZoom){this.pinchZoom.deactivate();}
+this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},draw:function(){if(this.handleRightClicks){this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False;}
+var clickCallbacks={'click':this.defaultClick,'dblclick':this.defaultDblClick,'dblrightclick':this.defaultDblRightClick};var clickOptions={'double':true,'stopDouble':true};this.handlers.click=new OpenLayers.Handler.Click(this,clickCallbacks,clickOptions);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{"up":this.wheelUp,"down":this.wheelDown},this.mouseWheelOptions);if(OpenLayers.Control.PinchZoom){this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions));}},defaultClick:function(evt){if(evt.lastTouches&&evt.lastTouches.length==2){this.map.zoomOut();}},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);},defaultDblRightClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom-1);},wheelChange:function(evt,deltaZ){var currentZoom=this.map.getZoom();var newZoom=this.map.getZoom()+Math.round(deltaZ);newZoom=Math.max(newZoom,0);newZoom=Math.min(newZoom,this.map.getNumZoomLevels());if(newZoom===currentZoom){return;}
+var size=this.map.getSize();var deltaX=size.w/2-evt.xy.x;var deltaY=evt.xy.y-size.h/2;var newRes=this.map.baseLayer.getResolutionForZoom(newZoom);var zoomPoint=this.map.getLonLatFromPixel(evt.xy);var newCenter=new OpenLayers.LonLat(zoomPoint.lon+deltaX*newRes,zoomPoint.lat+deltaY*newRes);this.map.setCenter(newCenter,newZoom);},wheelUp:function(evt,delta){this.wheelChange(evt,delta||1);},wheelDown:function(evt,delta){this.wheelChange(evt,delta||-1);},disableZoomBox:function(){this.zoomBoxEnabled=false;this.zoomBox.deactivate();},enableZoomBox:function(){this.zoomBoxEnabled=true;if(this.active){this.zoomBox.activate();}},disableZoomWheel:function(){this.zoomWheelEnabled=false;this.handlers.wheel.deactivate();},enableZoomWheel:function(){this.zoomWheelEnabled=true;if(this.active){this.handlers.wheel.activate();}},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Control.DrawFeature=OpenLayers.Class(OpenLayers.Control,{layer:null,callbacks:null,EVENT_TYPES:["featureadded"],multi:false,featureAdded:function(){},handlerOptions:null,initialize:function(layer,handler,options){this.EVENT_TYPES=OpenLayers.Control.DrawFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.drawFeature,modify:function(vertex,feature){this.layer.events.triggerEvent("sketchmodified",{vertex:vertex,feature:feature});},create:function(vertex,feature){this.layer.events.triggerEvent("sketchstarted",{vertex:vertex,feature:feature});}},this.callbacks);this.layer=layer;this.handlerOptions=this.handlerOptions||{};if(!("multi"in this.handlerOptions)){this.handlerOptions.multi=this.multi;}
+var sketchStyle=this.layer.styleMap&&this.layer.styleMap.styles.temporary;if(sketchStyle){this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":sketchStyle})});}
+this.handler=new handler(this,this.callbacks,this.handlerOptions);},drawFeature:function(geometry){var feature=new OpenLayers.Feature.Vector(geometry);var proceed=this.layer.events.triggerEvent("sketchcomplete",{feature:feature});if(proceed!==false){feature.state=OpenLayers.State.INSERT;this.layer.addFeatures([feature]);this.featureAdded(feature);this.events.triggerEvent("featureadded",{feature:feature});}},insertXY:function(x,y){if(this.handler&&this.handler.line){this.handler.insertXY(x,y);}},insertDeltaXY:function(dx,dy){if(this.handler&&this.handler.line){this.handler.insertDeltaXY(dx,dy);}},insertDirectionLength:function(direction,length){if(this.handler&&this.handler.line){this.handler.insertDirectionLength(direction,length);}},insertDeflectionLength:function(deflection,length){if(this.handler&&this.handler.line){this.handler.insertDeflectionLength(deflection,length);}},undo:function(){return this.handler.undo&&this.handler.undo();},redo:function(){return this.handler.redo&&this.handler.redo();},finishSketch:function(){this.handler.finishGeometry();},cancel:function(){this.handler.cancel();},CLASS_NAME:"OpenLayers.Control.DrawFeature"});OpenLayers.Handler.Polygon=OpenLayers.Class(OpenLayers.Handler.Path,{holeModifier:null,drawingHole:false,polygon:null,initialize:function(control,callbacks,options){OpenLayers.Handler.Path.prototype.initialize.apply(this,arguments);},createFeature:function(pixel){var lonlat=this.map.getLonLatFromPixel(pixel);var geometry=new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat);this.point=new OpenLayers.Feature.Vector(geometry);this.line=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LinearRing([this.point.geometry]));this.polygon=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([this.line.geometry]));this.callback("create",[this.point.geometry,this.getSketch()]);this.point.geometry.clearBounds();this.layer.addFeatures([this.polygon,this.point],{silent:true});},addPoint:function(pixel){if(!this.drawingHole&&this.holeModifier&&this.evt&&this.evt[this.holeModifier]){var geometry=this.point.geometry;var features=this.control.layer.features;var candidate,polygon;for(var i=features.length-1;i>=0;--i){candidate=features[i].geometry;if((candidate instanceof OpenLayers.Geometry.Polygon||candidate instanceof OpenLayers.Geometry.MultiPolygon)&&candidate.intersects(geometry)){polygon=features[i];this.control.layer.removeFeatures([polygon],{silent:true});this.control.layer.events.registerPriority("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology);polygon.geometry.addComponent(this.line.geometry);this.polygon=polygon;this.drawingHole=true;break;}}}
+OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments);},getCurrentPointIndex:function(){return this.line.geometry.components.length-2;},enforceTopology:function(event){var point=event.vertex;var components=this.line.geometry.components;if(!this.polygon.geometry.intersects(point)){var last=components[components.length-3];point.x=last.x;point.y=last.y;}},finishGeometry:function(){var index=this.line.geometry.components.length-2;this.line.geometry.removeComponent(this.line.geometry.components[index]);this.removePoint();this.finalize();},finalizeInteriorRing:function(){var ring=this.line.geometry;var modified=(ring.getArea()!==0);if(modified){var rings=this.polygon.geometry.components;for(var i=rings.length-2;i>=0;--i){if(ring.intersects(rings[i])){modified=false;break;}}
+if(modified){var target;outer:for(var i=rings.length-2;i>0;--i){var points=rings[i].components;for(var j=0,jj=points.length;j<jj;++j){if(ring.containsPoint(points[j])){modified=false;break outer;}}}}}
+if(modified){if(this.polygon.state!==OpenLayers.State.INSERT){this.polygon.state=OpenLayers.State.UPDATE;}}else{this.polygon.geometry.removeComponent(ring);}
+this.restoreFeature();return false;},cancel:function(){if(this.drawingHole){this.polygon.geometry.removeComponent(this.line.geometry);this.restoreFeature(true);}
+return OpenLayers.Handler.Path.prototype.cancel.apply(this,arguments);},restoreFeature:function(cancel){this.control.layer.events.unregister("sketchcomplete",this,this.finalizeInteriorRing);this.control.layer.events.unregister("sketchmodified",this,this.enforceTopology);this.layer.removeFeatures([this.polygon],{silent:true});this.control.layer.addFeatures([this.polygon],{silent:true});this.drawingHole=false;if(!cancel){this.control.layer.events.triggerEvent("sketchcomplete",{feature:this.polygon});}},destroyFeature:function(force){OpenLayers.Handler.Path.prototype.destroyFeature.call(this,force);this.polygon=null;},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style);},getSketch:function(){return this.polygon;},getGeometry:function(){var geometry=this.polygon&&this.polygon.geometry;if(geometry&&this.multi){geometry=new OpenLayers.Geometry.MultiPolygon([geometry]);}
+return geometry;},CLASS_NAME:"OpenLayers.Handler.Polygon"});OpenLayers.Control.EditingToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(layer,options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.Navigation()]);var controls=[new OpenLayers.Control.DrawFeature(layer,OpenLayers.Handler.Point,{'displayClass':'olControlDrawFeaturePoint'}),new OpenLayers.Control.DrawFeature(layer,OpenLayers.Handler.Path,{'displayClass':'olControlDrawFeaturePath'}),new OpenLayers.Control.DrawFeature(layer,OpenLayers.Handler.Polygon,{'displayClass':'olControlDrawFeaturePolygon'})];this.addControls(controls);},draw:function(){var div=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);if(this.defaultControl===null){this.defaultControl=this.controls[0];}
+return div;},CLASS_NAME:"OpenLayers.Control.EditingToolbar"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"moveend":this.update,scope:this});this.layer.events.on({"refresh":this.update,scope:this});if(this.layer.visibility===true&&this.layer.inRange===true){this.update();}else{this.layer.events.on({"visibilitychanged":this.update,scope:this});}}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"moveend":this.update,"refresh":this.update,"visibilitychanged":this.update,scope:this});}
+return deactivated;},update:function(options){var mapBounds=this.getMapBounds();if(mapBounds!==null&&((options&&options.force)||this.invalidBounds(mapBounds))){this.calculateBounds(mapBounds);this.resolution=this.layer.map.getResolution();this.triggerRead(options);}},getMapBounds:function(){if(this.layer.map===null){return null;}
+var bounds=this.layer.map.getExtent();if(bounds&&!this.layer.projection.equals(this.layer.map.getProjectionObject())){bounds=bounds.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection);}
+return bounds;},invalidBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();}
+var invalid=!this.bounds||!this.bounds.containsBounds(mapBounds);if(!invalid&&this.resFactor){var ratio=this.resolution/this.layer.map.getResolution();invalid=(ratio>=this.resFactor||ratio<=(1/this.resFactor));}
+return invalid;},calculateBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();}
+var center=mapBounds.getCenterLonLat();var dataWidth=mapBounds.getWidth()*this.ratio;var dataHeight=mapBounds.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(center.lon-(dataWidth/2),center.lat-(dataHeight/2),center.lon+(dataWidth/2),center.lat+(dataHeight/2));},triggerRead:function(options){if(this.response){this.layer.protocol.abort(this.response);this.layer.events.triggerEvent("loadend");}
+this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},options));},createFilter:function(){var filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});if(this.layer.filter){filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.layer.filter,filter]});}
+return filter;},merge:function(resp){this.layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(remote,local);}}}
+this.layer.addFeatures(features);}
+this.response=null;this.layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Layer.WorldWind=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{},isBaseLayer:true,lzd:null,zoomLevels:null,initialize:function(name,url,lzd,zoomLevels,params,options){this.lzd=lzd;this.zoomLevels=zoomLevels;var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);},getZoom:function(){var zoom=this.map.getZoom();var extent=this.map.getMaxExtent();zoom=zoom-Math.log(this.maxResolution/(this.lzd/512))/Math.log(2);return zoom;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var zoom=this.getZoom();var extent=this.map.getMaxExtent();var deg=this.lzd/Math.pow(2,this.getZoom());var x=Math.floor((bounds.left-extent.left)/deg);var y=Math.floor((bounds.bottom-extent.bottom)/deg);if(this.map.getResolution()<=(this.lzd/512)&&this.getZoom()<=this.zoomLevels){return this.getFullRequestString({L:zoom,X:x,Y:y});}else{return OpenLayers.Util.getImagesLocation()+"blank.gif";}},CLASS_NAME:"OpenLayers.Layer.WorldWind"});OpenLayers.Format.WMTSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",yx:{"urn:ogc:def:crs:EPSG::4326":true},createLayer:function(capabilities,config){var layer;var required={layer:true,matrixSet:true};for(var prop in required){if(!(prop in config)){throw new Error("Missing property '"+prop+"' in layer configuration.");}}
+var contents=capabilities.contents;var matrixSet=contents.tileMatrixSets[config.matrixSet];var layers=contents.layers;var layerDef;for(var i=0,ii=contents.layers.length;i<ii;++i){if(contents.layers[i].identifier===config.layer){layerDef=contents.layers[i];break;}}
+if(layerDef&&matrixSet){var style;for(var i=0,ii=layerDef.styles.length;i<ii;++i){style=layerDef.styles[i];if(style.isDefault){break;}}
+layer=new OpenLayers.Layer.WMTS(OpenLayers.Util.applyDefaults(config,{url:capabilities.operationsMetadata.GetTile.dcp.http.get,name:layerDef.title,style:style.identifier,matrixIds:matrixSet.matrixIds}));}
+return layer;},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities"});OpenLayers.Layer.Google.v3={DEFAULTS:{maxExtent:new OpenLayers.Bounds(-128*156543.03390625,-128*156543.03390625,128*156543.03390625,128*156543.03390625),sphericalMercator:true,maxResolution:156543.03390625,units:"m",projection:"EPSG:900913"},animationEnabled:true,loadMapObject:function(){if(!this.type){this.type=google.maps.MapTypeId.ROADMAP;}
+var mapObject;var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){mapObject=cache.mapObject;++cache.count;}else{var container=this.map.viewPortDiv;var div=document.createElement("div");div.id=this.map.id+"_GMapContainer";div.style.position="absolute";div.style.width="100%";div.style.height="100%";container.appendChild(div);var center=this.map.getCenter();mapObject=new google.maps.Map(div,{center:center?new google.maps.LatLng(center.lat,center.lon):new google.maps.LatLng(0,0),zoom:this.map.getZoom()||0,mapTypeId:this.type,disableDefaultUI:true,keyboardShortcuts:false,draggable:false,disableDoubleClickZoom:true,scrollwheel:false,streetViewControl:false});cache={mapObject:mapObject,count:1};OpenLayers.Layer.Google.cache[this.map.id]=cache;this.repositionListener=google.maps.event.addListenerOnce(mapObject,"center_changed",OpenLayers.Function.bind(this.repositionMapElements,this));}
+this.mapObject=mapObject;this.setGMapVisibility(this.visibility);},repositionMapElements:function(){google.maps.event.trigger(this.mapObject,"resize");var div=this.mapObject.getDiv().firstChild;if(!div||div.childNodes.length<3){this.repositionTimer=window.setTimeout(OpenLayers.Function.bind(this.repositionMapElements,this),250);return false;}
+var cache=OpenLayers.Layer.Google.cache[this.map.id];var container=this.map.viewPortDiv;while(div.lastChild.style.display=="none"){container.appendChild(div.lastChild);}
+var termsOfUse=div.lastChild;container.appendChild(termsOfUse);termsOfUse.style.zIndex="1100";termsOfUse.style.bottom="";termsOfUse.className="olLayerGoogleCopyright olLayerGoogleV3";termsOfUse.style.display="";cache.termsOfUse=termsOfUse;var poweredBy=div.lastChild;container.appendChild(poweredBy);poweredBy.style.zIndex="1100";poweredBy.style.bottom="";poweredBy.className="olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint";poweredBy.style.display="";cache.poweredBy=poweredBy;this.setGMapVisibility(this.visibility);},onMapResize:function(){if(this.visibility){google.maps.event.trigger(this.mapObject,"resize");}else{var cache=OpenLayers.Layer.Google.cache[this.map.id];if(!cache.resized){var layer=this;google.maps.event.addListenerOnce(this.mapObject,"tilesloaded",function(){google.maps.event.trigger(layer.mapObject,"resize");layer.moveTo(layer.map.getCenter(),layer.map.getZoom());delete cache.resized;});}
+cache.resized=true;}},setGMapVisibility:function(visible){var cache=OpenLayers.Layer.Google.cache[this.map.id];if(cache){var type=this.type;var layers=this.map.layers;var layer;for(var i=layers.length-1;i>=0;--i){layer=layers[i];if(layer instanceof OpenLayers.Layer.Google&&layer.visibility===true&&layer.inRange===true){type=layer.type;visible=true;break;}}
+var container=this.mapObject.getDiv();if(visible===true){this.mapObject.setMapTypeId(type);container.style.left="";if(cache.termsOfUse&&cache.termsOfUse.style){cache.termsOfUse.style.left="";cache.termsOfUse.style.display="";cache.poweredBy.style.display="";}
+cache.displayed=this.id;}else{delete cache.displayed;container.style.left="-9999px";if(cache.termsOfUse&&cache.termsOfUse.style){cache.termsOfUse.style.display="none";cache.termsOfUse.style.left="-9999px";cache.poweredBy.style.display="none";}}}},getMapContainer:function(){return this.mapObject.getDiv();},getMapObjectBoundsFromOLBounds:function(olBounds){var moBounds=null;if(olBounds!=null){var sw=this.sphericalMercator?this.inverseMercator(olBounds.bottom,olBounds.left):new OpenLayers.LonLat(olBounds.bottom,olBounds.left);var ne=this.sphericalMercator?this.inverseMercator(olBounds.top,olBounds.right):new OpenLayers.LonLat(olBounds.top,olBounds.right);moBounds=new google.maps.LatLngBounds(new google.maps.LatLng(sw.lat,sw.lon),new google.maps.LatLng(ne.lat,ne.lon));}
+return moBounds;},getMapObjectLonLatFromMapObjectPixel:function(moPixel){var size=this.map.getSize();var lon=this.getLongitudeFromMapObjectLonLat(this.mapObject.center);var lat=this.getLatitudeFromMapObjectLonLat(this.mapObject.center);var res=this.map.getResolution();var delta_x=moPixel.x-(size.w/2);var delta_y=moPixel.y-(size.h/2);var lonlat=new OpenLayers.LonLat(lon+delta_x*res,lat-delta_y*res);if(this.wrapDateLine){lonlat=lonlat.wrapDateLine(this.maxExtent);}
+return this.getMapObjectLonLatFromLonLat(lonlat.lon,lonlat.lat);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){var lon=this.getLongitudeFromMapObjectLonLat(moLonLat);var lat=this.getLatitudeFromMapObjectLonLat(moLonLat);var res=this.map.getResolution();var extent=this.map.getExtent();var px=new OpenLayers.Pixel((1/res*(lon-extent.left)),(1/res*(extent.top-lat)));return this.getMapObjectPixelFromXY(px.x,px.y);},setMapObjectCenter:function(center,zoom){if(this.animationEnabled===false&&zoom!=this.mapObject.zoom){var mapContainer=this.getMapContainer();google.maps.event.addListenerOnce(this.mapObject,"idle",function(){mapContainer.style.visibility="";});mapContainer.style.visibility="hidden";}
+this.mapObject.setOptions({center:center,zoom:zoom});},getMapObjectZoomFromMapObjectBounds:function(moBounds){return this.mapObject.getBoundsZoomLevel(moBounds);},getMapObjectLonLatFromLonLat:function(lon,lat){var gLatLng;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);gLatLng=new google.maps.LatLng(lonlat.lat,lonlat.lon);}else{gLatLng=new google.maps.LatLng(lat,lon);}
+return gLatLng;},getMapObjectPixelFromXY:function(x,y){return new google.maps.Point(x,y);},destroy:function(){if(this.repositionListener){google.maps.event.removeListener(this.repositionListener);}
+if(this.repositionTimer){window.clearTimeout(this.repositionTimer);}
+OpenLayers.Layer.Google.prototype.destroy.apply(this,arguments);}};OpenLayers.Format.WPSDescribeProcess=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{wps:"http://www.opengis.net/wps/1.0.0",ows:"http://www.opengis.net/ows/1.1",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd",defaultPrefix:"wps",regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var info={};this.readNode(data,info);return info;},readers:{"wps":{"ProcessDescriptions":function(node,obj){obj.processDescriptions={};this.readChildNodes(node,obj.processDescriptions);},"ProcessDescription":function(node,processDescriptions){var processVersion=this.getAttributeNS(node,this.namespaces.wps,"processVersion");var processDescription={processVersion:processVersion,statusSupported:(node.getAttribute("statusSupported")==="true"),storeSupported:(node.getAttribute("storeSupported")==="true")};this.readChildNodes(node,processDescription);processDescriptions[processDescription.identifier]=processDescription;},"DataInputs":function(node,processDescription){processDescription.dataInputs=[];this.readChildNodes(node,processDescription.dataInputs);},"ProcessOutputs":function(node,processDescription){processDescription.processOutputs=[];this.readChildNodes(node,processDescription.processOutputs);},"Output":function(node,processOutputs){var output={};this.readChildNodes(node,output);processOutputs.push(output);},"ComplexOutput":function(node,output){output.complexOutput={};this.readChildNodes(node,output.complexOutput);},"Input":function(node,dataInputs){var input={maxOccurs:parseInt(node.getAttribute("maxOccurs")),minOccurs:parseInt(node.getAttribute("minOccurs"))};this.readChildNodes(node,input);dataInputs.push(input);},"BoundingBoxData":function(node,input){input.boundingBoxData={};this.readChildNodes(node,input.boundingBoxData);},"CRS":function(node,obj){if(!obj.CRSs){obj.CRSs={};}
+obj.CRSs[this.getChildValue(node)]=true;},"LiteralData":function(node,input){input.literalData={};this.readChildNodes(node,input.literalData);},"ComplexData":function(node,input){input.complexData={};this.readChildNodes(node,input.complexData);},"Default":function(node,complexData){complexData["default"]={};this.readChildNodes(node,complexData["default"]);},"Supported":function(node,complexData){complexData["supported"]={};this.readChildNodes(node,complexData["supported"]);},"Format":function(node,obj){var format={};this.readChildNodes(node,format);if(!obj.formats){obj.formats={};}
+obj.formats[format.mimeType]=true;},"MimeType":function(node,format){format.mimeType=this.getChildValue(node);}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.WPSDescribeProcess"});OpenLayers.Control.NavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{initialize:function(options){OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);this.addControls([new OpenLayers.Control.Navigation(),new OpenLayers.Control.ZoomBox()]);},draw:function(){var div=OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);if(this.defaultControl===null){this.defaultControl=this.controls[0];}
+return div;},CLASS_NAME:"OpenLayers.Control.NavToolbar"});OpenLayers.Format.CSWGetRecords.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{csw:"http://www.opengis.net/cat/csw/2.0.2",dc:"http://purl.org/dc/elements/1.1/",dct:"http://purl.org/dc/terms/",geonet:"http://www.fao.org/geonetwork",ogc:"http://www.opengis.net/ogc",ows:"http://www.opengis.net/ows",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",requestId:null,resultType:null,outputFormat:null,outputSchema:null,startPosition:null,maxRecords:null,DistributedSearch:null,ResponseHandler:null,Query:null,regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var obj={};this.readNode(data,obj);return obj;},readers:{"csw":{"GetRecordsResponse":function(node,obj){obj.records=[];this.readChildNodes(node,obj);var version=this.getAttributeNS(node,"",'version');if(version!=""){obj.version=version;}},"RequestId":function(node,obj){obj.RequestId=this.getChildValue(node);},"SearchStatus":function(node,obj){obj.SearchStatus={};var timestamp=this.getAttributeNS(node,"",'timestamp');if(timestamp!=""){obj.SearchStatus.timestamp=timestamp;}},"SearchResults":function(node,obj){this.readChildNodes(node,obj);var attrs=node.attributes;var SearchResults={};for(var i=0,len=attrs.length;i<len;++i){if((attrs[i].name=="numberOfRecordsMatched")||(attrs[i].name=="numberOfRecordsReturned")||(attrs[i].name=="nextRecord")){SearchResults[attrs[i].name]=parseInt(attrs[i].nodeValue);}else{SearchResults[attrs[i].name]=attrs[i].nodeValue;}}
+obj.SearchResults=SearchResults;},"SummaryRecord":function(node,obj){var record={type:"SummaryRecord"};this.readChildNodes(node,record);obj.records.push(record);},"BriefRecord":function(node,obj){var record={type:"BriefRecord"};this.readChildNodes(node,record);obj.records.push(record);},"DCMIRecord":function(node,obj){var record={type:"DCMIRecord"};this.readChildNodes(node,record);obj.records.push(record);},"Record":function(node,obj){var record={type:"Record"};this.readChildNodes(node,record);obj.records.push(record);},"*":function(node,obj){var name=node.localName||node.nodeName.split(":").pop();obj[name]=this.getChildValue(node);}},"geonet":{"info":function(node,obj){var gninfo={};this.readChildNodes(node,gninfo);obj.gninfo=gninfo;}},"dc":{"*":function(node,obj){var name=node.localName||node.nodeName.split(":").pop();if(!(OpenLayers.Util.isArray(obj[name]))){obj[name]=new Array();}
+var dc_element={};var attrs=node.attributes;for(var i=0,len=attrs.length;i<len;++i){dc_element[attrs[i].name]=attrs[i].nodeValue;}
+dc_element.value=this.getChildValue(node);obj[name].push(dc_element);}},"dct":{"*":function(node,obj){var name=node.localName||node.nodeName.split(":").pop();if(!(OpenLayers.Util.isArray(obj[name]))){obj[name]=new Array();}
+obj[name].push(this.getChildValue(node));}},"ows":OpenLayers.Util.applyDefaults({"BoundingBox":function(node,obj){if(obj.bounds){obj.BoundingBox=[{crs:obj.projection,value:[obj.bounds.left,obj.bounds.bottom,obj.bounds.right,obj.bounds.top]}];delete obj.projection;delete obj.bounds;}
+OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers["ows"]["BoundingBox"].apply(this,arguments);}},OpenLayers.Format.OWSCommon.v1_0_0.prototype.readers["ows"])},write:function(options){var node=this.writeNode("csw:GetRecords",options);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"csw":{"GetRecords":function(options){if(!options){options={};}
+var node=this.createElementNSPlus("csw:GetRecords",{attributes:{service:"CSW",version:this.version,requestId:options.requestId||this.requestId,resultType:options.resultType||this.resultType,outputFormat:options.outputFormat||this.outputFormat,outputSchema:options.outputSchema||this.outputSchema,startPosition:options.startPosition||this.startPosition,maxRecords:options.maxRecords||this.maxRecords}});if(options.DistributedSearch||this.DistributedSearch){this.writeNode("csw:DistributedSearch",options.DistributedSearch||this.DistributedSearch,node);}
+var ResponseHandler=options.ResponseHandler||this.ResponseHandler;if(OpenLayers.Util.isArray(ResponseHandler)&&ResponseHandler.length>0){for(var i=0,len=ResponseHandler.length;i<len;i++){this.writeNode("csw:ResponseHandler",ResponseHandler[i],node);}}
+this.writeNode("Query",options.Query||this.Query,node);return node;},"DistributedSearch":function(options){var node=this.createElementNSPlus("csw:DistributedSearch",{attributes:{hopCount:options.hopCount}});return node;},"ResponseHandler":function(options){var node=this.createElementNSPlus("csw:ResponseHandler",{value:options.value});return node;},"Query":function(options){if(!options){options={};}
+var node=this.createElementNSPlus("csw:Query",{attributes:{typeNames:options.typeNames||"csw:Record"}});var ElementName=options.ElementName;if(OpenLayers.Util.isArray(ElementName)&&ElementName.length>0){for(var i=0,len=ElementName.length;i<len;i++){this.writeNode("csw:ElementName",ElementName[i],node);}}else{this.writeNode("csw:ElementSetName",options.ElementSetName||{value:'summary'},node);}
+if(options.Constraint){this.writeNode("csw:Constraint",options.Constraint,node);}
+if(options.SortBy){this.writeNode("ogc:SortBy",options.SortBy,node);}
+return node;},"ElementName":function(options){var node=this.createElementNSPlus("csw:ElementName",{value:options.value});return node;},"ElementSetName":function(options){var node=this.createElementNSPlus("csw:ElementSetName",{attributes:{typeNames:options.typeNames},value:options.value});return node;},"Constraint":function(options){var node=this.createElementNSPlus("csw:Constraint",{attributes:{version:options.version}});if(options.Filter){var format=new OpenLayers.Format.Filter({version:options.version});node.appendChild(format.write(options.Filter));}else if(options.CqlText){var child=this.createElementNSPlus("CqlText",{value:options.CqlText.value});node.appendChild(child);}
+return node;}},"ogc":OpenLayers.Format.Filter.v1_1_0.prototype.writers["ogc"]},CLASS_NAME:"OpenLayers.Format.CSWGetRecords.v2_0_2"});OpenLayers.Marker.Box=OpenLayers.Class(OpenLayers.Marker,{bounds:null,div:null,initialize:function(bounds,borderColor,borderWidth){this.bounds=bounds;this.div=OpenLayers.Util.createDiv();this.div.style.overflow='hidden';this.events=new OpenLayers.Events(this,this.div,null);this.setBorder(borderColor,borderWidth);},destroy:function(){this.bounds=null;this.div=null;OpenLayers.Marker.prototype.destroy.apply(this,arguments);},setBorder:function(color,width){if(!color){color="red";}
+if(!width){width=2;}
+this.div.style.border=width+"px solid "+color;},draw:function(px,sz){OpenLayers.Util.modifyDOMElement(this.div,null,px,sz);return this.div;},onScreen:function(){var onScreen=false;if(this.map){var screenBounds=this.map.getExtent();onScreen=screenBounds.containsBounds(this.bounds,true,true);}
+return onScreen;},display:function(display){this.div.style.display=(display)?"":"none";},CLASS_NAME:"OpenLayers.Marker.Box"});OpenLayers.Format.Text=OpenLayers.Class(OpenLayers.Format,{defaultStyle:null,extractStyles:true,initialize:function(options){options=options||{};if(options.extractStyles!==false){options.defaultStyle={'externalGraphic':OpenLayers.Util.getImagesLocation()+"marker.png",'graphicWidth':21,'graphicHeight':25,'graphicXOffset':-10.5,'graphicYOffset':-12.5};}
+OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(text){var lines=text.split('\n');var columns;var features=[];for(var lcv=0;lcv<(lines.length-1);lcv++){var currLine=lines[lcv].replace(/^\s*/,'').replace(/\s*$/,'');if(currLine.charAt(0)!='#'){if(!columns){columns=currLine.split('\t');}else{var vals=currLine.split('\t');var geometry=new OpenLayers.Geometry.Point(0,0);var attributes={};var style=this.defaultStyle?OpenLayers.Util.applyDefaults({},this.defaultStyle):null;var icon,iconSize,iconOffset,overflow;var set=false;for(var valIndex=0;valIndex<vals.length;valIndex++){if(vals[valIndex]){if(columns[valIndex]=='point'){var coords=vals[valIndex].split(',');geometry.y=parseFloat(coords[0]);geometry.x=parseFloat(coords[1]);set=true;}else if(columns[valIndex]=='lat'){geometry.y=parseFloat(vals[valIndex]);set=true;}else if(columns[valIndex]=='lon'){geometry.x=parseFloat(vals[valIndex]);set=true;}else if(columns[valIndex]=='title')
+attributes['title']=vals[valIndex];else if(columns[valIndex]=='image'||columns[valIndex]=='icon'&&style){style['externalGraphic']=vals[valIndex];}else if(columns[valIndex]=='iconSize'&&style){var size=vals[valIndex].split(',');style['graphicWidth']=parseFloat(size[0]);style['graphicHeight']=parseFloat(size[1]);}else if(columns[valIndex]=='iconOffset'&&style){var offset=vals[valIndex].split(',');style['graphicXOffset']=parseFloat(offset[0]);style['graphicYOffset']=parseFloat(offset[1]);}else if(columns[valIndex]=='description'){attributes['description']=vals[valIndex];}else if(columns[valIndex]=='overflow'){attributes['overflow']=vals[valIndex];}else{attributes[columns[valIndex]]=vals[valIndex];}}}
+if(set){if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}
+var feature=new OpenLayers.Feature.Vector(geometry,attributes,style);features.push(feature);}}}}
+return features;},CLASS_NAME:"OpenLayers.Format.Text"});OpenLayers.Layer.Text=OpenLayers.Class(OpenLayers.Layer.Markers,{location:null,features:null,formatOptions:null,selectedFeature:null,initialize:function(name,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=new Array();},destroy:function(){OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearFeatures();this.features=null;},loadText:function(){if(!this.loaded){if(this.location!=null){var onFail=function(e){this.events.triggerEvent("loadend");};this.events.triggerEvent("loadstart");OpenLayers.Request.GET({url:this.location,success:this.parseData,failure:onFail,scope:this});this.loaded=true;}}},moveTo:function(bounds,zoomChanged,minor){OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.loadText();}},parseData:function(ajaxRequest){var text=ajaxRequest.responseText;var options={};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();}
+var parser=new OpenLayers.Format.Text(options);var features=parser.read(text);for(var i=0,len=features.length;i<len;i++){var data={};var feature=features[i];var location;var iconSize,iconOffset;location=new OpenLayers.LonLat(feature.geometry.x,feature.geometry.y);if(feature.style.graphicWidth&&feature.style.graphicHeight){iconSize=new OpenLayers.Size(feature.style.graphicWidth,feature.style.graphicHeight);}
+if(feature.style.graphicXOffset!==undefined&&feature.style.graphicYOffset!==undefined){iconOffset=new OpenLayers.Pixel(feature.style.graphicXOffset,feature.style.graphicYOffset);}
+if(feature.style.externalGraphic!=null){data.icon=new OpenLayers.Icon(feature.style.externalGraphic,iconSize,iconOffset);}else{data.icon=OpenLayers.Marker.defaultIcon();if(iconSize!=null){data.icon.setSize(iconSize);}}
+if((feature.attributes.title!=null)&&(feature.attributes.description!=null)){data['popupContentHTML']='<h2>'+feature.attributes.title+'</h2>'+'<p>'+feature.attributes.description+'</p>';}
+data['overflow']=feature.attributes.overflow||"auto";var markerFeature=new OpenLayers.Feature(this,location,data);this.features.push(markerFeature);var marker=markerFeature.createMarker();if((feature.attributes.title!=null)&&(feature.attributes.description!=null)){marker.events.register('click',markerFeature,this.markerClick);}
+this.addMarker(marker);}
+this.events.triggerEvent("loadend");},markerClick:function(evt){var sameMarkerClicked=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!sameMarkerClicked)?this:null;for(var i=0,len=this.layer.map.popups.length;i<len;i++){this.layer.map.removePopup(this.layer.map.popups[i]);}
+if(!sameMarkerClicked){this.layer.map.addPopup(this.createPopup());}
+OpenLayers.Event.stop(evt);},clearFeatures:function(){if(this.features!=null){while(this.features.length>0){var feature=this.features[0];OpenLayers.Util.removeItem(this.features,feature);feature.destroy();}}},CLASS_NAME:"OpenLayers.Layer.Text"});OpenLayers.Handler.RegularPolygon=OpenLayers.Class(OpenLayers.Handler.Drag,{sides:4,radius:null,snapAngle:null,snapToggle:'shiftKey',layerOptions:null,persist:false,irregular:false,angle:null,fixedRadius:false,feature:null,layer:null,origin:null,initialize:function(control,callbacks,options){if(!(options&&options.layerOptions&&options.layerOptions.styleMap)){this.style=OpenLayers.Util.extend(OpenLayers.Feature.Vector.style['default'],{});}
+OpenLayers.Handler.Drag.prototype.initialize.apply(this,[control,callbacks,options]);this.options=(options)?options:{};},setOptions:function(newOptions){OpenLayers.Util.extend(this.options,newOptions);OpenLayers.Util.extend(this,newOptions);},activate:function(){var activated=false;if(OpenLayers.Handler.Drag.prototype.activate.apply(this,arguments)){var options=OpenLayers.Util.extend({displayInLayerSwitcher:false,calculateInRange:OpenLayers.Function.True},this.layerOptions);this.layer=new OpenLayers.Layer.Vector(this.CLASS_NAME,options);this.map.addLayer(this.layer);activated=true;}
+return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.Drag.prototype.deactivate.apply(this,arguments)){if(this.dragging){this.cancel();}
+if(this.layer.map!=null){this.layer.destroy(false);if(this.feature){this.feature.destroy();}}
+this.layer=null;this.feature=null;deactivated=true;}
+return deactivated;},down:function(evt){this.fixedRadius=!!(this.radius);var maploc=this.map.getLonLatFromPixel(evt.xy);this.origin=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(!this.fixedRadius||this.irregular){this.radius=this.map.getResolution();}
+if(this.persist){this.clear();}
+this.feature=new OpenLayers.Feature.Vector();this.createGeometry();this.callback("create",[this.origin,this.feature]);this.layer.addFeatures([this.feature],{silent:true});this.layer.drawFeature(this.feature,this.style);},move:function(evt){var maploc=this.map.getLonLatFromPixel(evt.xy);var point=new OpenLayers.Geometry.Point(maploc.lon,maploc.lat);if(this.irregular){var ry=Math.sqrt(2)*Math.abs(point.y-this.origin.y)/2;this.radius=Math.max(this.map.getResolution()/2,ry);}else if(this.fixedRadius){this.origin=point;}else{this.calculateAngle(point,evt);this.radius=Math.max(this.map.getResolution()/2,point.distanceTo(this.origin));}
+this.modifyGeometry();if(this.irregular){var dx=point.x-this.origin.x;var dy=point.y-this.origin.y;var ratio;if(dy==0){ratio=dx/(this.radius*Math.sqrt(2));}else{ratio=dx/dy;}
+this.feature.geometry.resize(1,this.origin,ratio);this.feature.geometry.move(dx/2,dy/2);}
+this.layer.drawFeature(this.feature,this.style);},up:function(evt){this.finalize();if(this.start==this.last){this.callback("done",[evt.xy]);}},out:function(evt){this.finalize();},createGeometry:function(){this.angle=Math.PI*((1/this.sides)-(1/2));if(this.snapAngle){this.angle+=this.snapAngle*(Math.PI/180);}
+this.feature.geometry=OpenLayers.Geometry.Polygon.createRegularPolygon(this.origin,this.radius,this.sides,this.snapAngle);},modifyGeometry:function(){var angle,point;var ring=this.feature.geometry.components[0];if(ring.components.length!=(this.sides+1)){this.createGeometry();ring=this.feature.geometry.components[0];}
+for(var i=0;i<this.sides;++i){point=ring.components[i];angle=this.angle+(i*2*Math.PI/this.sides);point.x=this.origin.x+(this.radius*Math.cos(angle));point.y=this.origin.y+(this.radius*Math.sin(angle));point.clearBounds();}},calculateAngle:function(point,evt){var alpha=Math.atan2(point.y-this.origin.y,point.x-this.origin.x);if(this.snapAngle&&(this.snapToggle&&!evt[this.snapToggle])){var snapAngleRad=(Math.PI/180)*this.snapAngle;this.angle=Math.round(alpha/snapAngleRad)*snapAngleRad;}else{this.angle=alpha;}},cancel:function(){this.callback("cancel",null);this.finalize();},finalize:function(){this.origin=null;this.radius=this.options.radius;},clear:function(){if(this.layer){this.layer.renderer.clear();this.layer.destroyFeatures();}},callback:function(name,args){if(this.callbacks[name]){this.callbacks[name].apply(this.control,[this.feature.geometry.clone()]);}
+if(!this.persist&&(name=="done"||name=="cancel")){this.clear();}},CLASS_NAME:"OpenLayers.Handler.RegularPolygon"});OpenLayers.Control.SLDSelect=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["selected"],clearOnDeactivate:false,layers:null,callbacks:null,selectionSymbolizer:{'Polygon':{fillColor:'#FF0000',stroke:false},'Line':{strokeColor:'#FF0000',strokeWidth:2},'Point':{graphicName:'square',fillColor:'#FF0000',pointRadius:5}},layerOptions:null,handlerOptions:null,sketchStyle:null,wfsCache:{},layerCache:{},initialize:function(handler,options){this.EVENT_TYPES=OpenLayers.Control.SLDSelect.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.callbacks=OpenLayers.Util.extend({done:this.select,click:this.select},this.callbacks);this.handlerOptions=this.handlerOptions||{};this.layerOptions=OpenLayers.Util.applyDefaults(this.layerOptions,{displayInLayerSwitcher:false,tileOptions:{maxGetUrlLength:2048}});if(this.sketchStyle){this.handlerOptions.layerOptions=OpenLayers.Util.applyDefaults(this.handlerOptions.layerOptions,{styleMap:new OpenLayers.StyleMap({"default":this.sketchStyle})});}
+this.handler=new handler(this,this.callbacks,this.handlerOptions);},destroy:function(){for(var key in this.layerCache){delete this.layerCache[key];}
+for(var key in this.wfsCache){delete this.wfsCache[key];}
+OpenLayers.Control.prototype.destroy.apply(this,arguments);},coupleLayerVisiblity:function(evt){this.setVisibility(evt.object.getVisibility());},createSelectionLayer:function(source){var selectionLayer;if(!this.layerCache[source.id]){selectionLayer=new OpenLayers.Layer.WMS(source.name,source.url,source.params,OpenLayers.Util.applyDefaults(this.layerOptions,source.getOptions()));this.layerCache[source.id]=selectionLayer;if(this.layerOptions.displayInLayerSwitcher===false){source.events.on({"visibilitychanged":this.coupleLayerVisiblity,scope:selectionLayer});}
+this.map.addLayer(selectionLayer);}else{selectionLayer=this.layerCache[source.id];}
+return selectionLayer;},createSLD:function(layer,filters,geometryAttributes){var sld={version:"1.0.0",namedLayers:{}};var layerNames=[layer.params.LAYERS].join(",").split(",");for(var i=0,len=layerNames.length;i<len;i++){var name=layerNames[i];sld.namedLayers[name]={name:name,userStyles:[]};var symbolizer=this.selectionSymbolizer;var geometryAttribute=geometryAttributes[i];if(geometryAttribute.type.indexOf('Polygon')>=0){symbolizer={Polygon:this.selectionSymbolizer['Polygon']};}else if(geometryAttribute.type.indexOf('LineString')>=0){symbolizer={Line:this.selectionSymbolizer['Line']};}else if(geometryAttribute.type.indexOf('Point')>=0){symbolizer={Point:this.selectionSymbolizer['Point']};}
+var filter=filters[i];sld.namedLayers[name].userStyles.push({name:'default',rules:[new OpenLayers.Rule({symbolizer:symbolizer,filter:filter,maxScaleDenominator:layer.options.minScale})]});}
+return new OpenLayers.Format.SLD({srsName:this.map.getProjection()}).write(sld);},parseDescribeLayer:function(request){var format=new OpenLayers.Format.WMSDescribeLayer();var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+var describeLayer=format.read(doc);var typeNames=[];var url=null;for(var i=0,len=describeLayer.length;i<len;i++){if(describeLayer[i].owsType=="WFS"){typeNames.push(describeLayer[i].typeName);url=describeLayer[i].owsURL;}}
+var options={url:url,params:{SERVICE:"WFS",TYPENAME:typeNames.toString(),REQUEST:"DescribeFeatureType",VERSION:"1.0.0"},callback:function(request){var format=new OpenLayers.Format.WFSDescribeFeatureType();var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+var describeFeatureType=format.read(doc);this.control.wfsCache[this.layer.id]=describeFeatureType;this.control._queue&&this.control.applySelection();},scope:this};OpenLayers.Request.GET(options);},getGeometryAttributes:function(layer){var result=[];var cache=this.wfsCache[layer.id];for(var i=0,len=cache.featureTypes.length;i<len;i++){var typeName=cache.featureTypes[i];var properties=typeName.properties;for(var j=0,lenj=properties.length;j<lenj;j++){var property=properties[j];var type=property.type;if((type.indexOf('LineString')>=0)||(type.indexOf('GeometryAssociationType')>=0)||(type.indexOf('GeometryPropertyType')>=0)||(type.indexOf('Point')>=0)||(type.indexOf('Polygon')>=0)){result.push(property);}}}
+return result;},activate:function(){var activated=OpenLayers.Control.prototype.activate.call(this);if(activated){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];if(layer&&!this.wfsCache[layer.id]){var options={url:layer.url,params:{SERVICE:"WMS",VERSION:layer.params.VERSION,LAYERS:layer.params.LAYERS,REQUEST:"DescribeLayer"},callback:this.parseDescribeLayer,scope:{layer:layer,control:this}};OpenLayers.Request.GET(options);}}}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.call(this);if(deactivated){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];if(layer&&this.clearOnDeactivate===true){var layerCache=this.layerCache;var selectionLayer=layerCache[layer.id];if(selectionLayer){layer.events.un({"visibilitychanged":this.coupleLayerVisiblity,scope:selectionLayer});selectionLayer.destroy();delete layerCache[layer.id];}}}}
+return deactivated;},setLayers:function(layers){if(this.active){this.deactivate();this.layers=layers;this.activate();}else{this.layers=layers;}},createFilter:function(geometryAttribute,geometry){var filter=null;if(this.handler instanceof OpenLayers.Handler.RegularPolygon){if(this.handler.irregular===true){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:geometryAttribute.name,value:geometry.getBounds()});}else{filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}}else if(this.handler instanceof OpenLayers.Handler.Polygon){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}else if(this.handler instanceof OpenLayers.Handler.Path){if(geometryAttribute.type.indexOf('Point')>=0){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:geometryAttribute.name,distance:this.map.getExtent().getWidth()*0.01,distanceUnits:this.map.getUnits(),value:geometry});}else{filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}}else if(this.handler instanceof OpenLayers.Handler.Click){if(geometryAttribute.type.indexOf('Polygon')>=0){filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:geometryAttribute.name,value:geometry});}else{filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,property:geometryAttribute.name,distance:this.map.getExtent().getWidth()*0.01,distanceUnits:this.map.getUnits(),value:geometry});}}
+return filter;},select:function(geometry){this._queue=function(){for(var i=0,len=this.layers.length;i<len;i++){var layer=this.layers[i];var geometryAttributes=this.getGeometryAttributes(layer);var filters=[];for(var j=0,lenj=geometryAttributes.length;j<lenj;j++){var geometryAttribute=geometryAttributes[j];if(geometryAttribute!==null){if(!(geometry instanceof OpenLayers.Geometry)){var point=this.map.getLonLatFromPixel(geometry.xy);geometry=new OpenLayers.Geometry.Point(point.lon,point.lat);}
+var filter=this.createFilter(geometryAttribute,geometry);if(filter!==null){filters.push(filter);}}}
+var selectionLayer=this.createSelectionLayer(layer);var sld=this.createSLD(layer,filters,geometryAttributes);this.events.triggerEvent("selected",{layer:layer,filters:filters});selectionLayer.mergeNewParams({SLD_BODY:sld});delete this._queue;}};this.applySelection();},applySelection:function(){var canApply=true;for(var i=0,len=this.layers.length;i<len;i++){if(!this.wfsCache[this.layers[i].id]){canApply=false;break;}}
+canApply&&this._queue.call(this);},CLASS_NAME:"OpenLayers.Control.SLDSelect"});OpenLayers.Control.Scale=OpenLayers.Class(OpenLayers.Control,{element:null,geodesic:false,initialize:function(element,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.element=document.createElement("div");this.div.appendChild(this.element);}
+this.map.events.register('moveend',this,this.updateScale);this.updateScale();return this.div;},updateScale:function(){var scale;if(this.geodesic===true){var units=this.map.getUnits();if(!units){return;}
+var inches=OpenLayers.INCHES_PER_UNIT;scale=(this.map.getGeodesicPixelSize().w||0.000001)*inches["km"]*OpenLayers.DOTS_PER_INCH;}else{scale=this.map.getScale();}
+if(!scale){return;}
+if(scale>=9500&&scale<=950000){scale=Math.round(scale/1000)+"K";}else if(scale>=950000){scale=Math.round(scale/1000000)+"M";}else{scale=Math.round(scale);}
+this.element.innerHTML=OpenLayers.i18n("Scale = 1 : ${scaleDenom}",{'scaleDenom':scale});},CLASS_NAME:"OpenLayers.Control.Scale"});OpenLayers.Control.Button=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_BUTTON,trigger:function(){},CLASS_NAME:"OpenLayers.Control.Button"});OpenLayers.Layer.MapGuide=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,useHttpTile:false,singleTile:false,useOverlay:false,useAsyncOverlay:true,TILE_PARAMS:{operation:'GETTILEIMAGE',version:'1.2.0'},SINGLE_TILE_PARAMS:{operation:'GETMAPIMAGE',format:'PNG',locale:'en',clip:'1',version:'1.0.0'},OVERLAY_PARAMS:{operation:'GETDYNAMICMAPOVERLAYIMAGE',format:'PNG',locale:'en',clip:'1',version:'2.0.0'},FOLDER_PARAMS:{tileColumnsPerFolder:30,tileRowsPerFolder:30,format:'png',querystring:null},defaultSize:new OpenLayers.Size(300,300),tileOriginCorner:"tl",initialize:function(name,url,params,options){OpenLayers.Layer.Grid.prototype.initialize.apply(this,arguments);if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.transparent!="true")&&(this.transparent!=true));}
+if(options&&options.useOverlay!=null){this.useOverlay=options.useOverlay;}
+if(this.singleTile){if(this.useOverlay){OpenLayers.Util.applyDefaults(this.params,this.OVERLAY_PARAMS);if(!this.useAsyncOverlay){this.params.version="1.0.0";}}else{OpenLayers.Util.applyDefaults(this.params,this.SINGLE_TILE_PARAMS);}}else{if(this.useHttpTile){OpenLayers.Util.applyDefaults(this.params,this.FOLDER_PARAMS);}else{OpenLayers.Util.applyDefaults(this.params,this.TILE_PARAMS);}
+this.setTileSize(this.defaultSize);}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapGuide(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var url;var center=bounds.getCenterLonLat();var mapSize=this.map.getSize();if(this.singleTile){var params={setdisplaydpi:OpenLayers.DOTS_PER_INCH,setdisplayheight:mapSize.h*this.ratio,setdisplaywidth:mapSize.w*this.ratio,setviewcenterx:center.lon,setviewcentery:center.lat,setviewscale:this.map.getScale()};if(this.useOverlay&&!this.useAsyncOverlay){var getVisParams={};getVisParams=OpenLayers.Util.extend(getVisParams,params);getVisParams.operation="GETVISIBLEMAPEXTENT";getVisParams.version="1.0.0";getVisParams.session=this.params.session;getVisParams.mapName=this.params.mapName;getVisParams.format='text/xml';url=this.getFullRequestString(getVisParams);OpenLayers.Request.GET({url:url,async:false});}
+url=this.getFullRequestString(params);}else{var currentRes=this.map.getResolution();var colidx=Math.floor((bounds.left-this.maxExtent.left)/currentRes);colidx=Math.round(colidx/this.tileSize.w);var rowidx=Math.floor((this.maxExtent.top-bounds.top)/currentRes);rowidx=Math.round(rowidx/this.tileSize.h);if(this.useHttpTile){url=this.getImageFilePath({tilecol:colidx,tilerow:rowidx,scaleindex:this.resolutions.length-this.map.zoom-1});}else{url=this.getFullRequestString({tilecol:colidx,tilerow:rowidx,scaleindex:this.resolutions.length-this.map.zoom-1});}}
+return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];}
+var requestString=url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}}
+var paramsString=OpenLayers.Util.getParameterString(allParams);paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}}
+return requestString;},getImageFilePath:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;if(typeof url=="object"){url=url[Math.floor(Math.random()*url.length)];}
+var requestString=url;var tileRowGroup="";var tileColGroup="";if(newParams.tilerow<0){tileRowGroup='-';}
+if(newParams.tilerow==0){tileRowGroup+='0';}else{tileRowGroup+=Math.floor(Math.abs(newParams.tilerow/this.params.tileRowsPerFolder))*this.params.tileRowsPerFolder;}
+if(newParams.tilecol<0){tileColGroup='-';}
+if(newParams.tilecol==0){tileColGroup+='0';}else{tileColGroup+=Math.floor(Math.abs(newParams.tilecol/this.params.tileColumnsPerFolder))*this.params.tileColumnsPerFolder;}
+var tilePath='/S'+Math.floor(newParams.scaleindex)
++'/'+this.params.basemaplayergroupname
++'/R'+tileRowGroup
++'/C'+tileColGroup
++'/'+(newParams.tilerow%this.params.tileRowsPerFolder)
++'_'+(newParams.tilecol%this.params.tileColumnsPerFolder)
++'.'+this.params.format;if(this.params.querystring){tilePath+="?"+this.params.querystring;}
+requestString+=tilePath;return requestString;},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-origin.lon;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=origin.lon+tilecol*tilelon;var offsetlat=origin.lat-bounds.top+tilelat;var tilerow=Math.floor(offsetlat/tilelat)-this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=tilerowremain*this.tileSize.h;var tileoffsetlat=origin.lat-tilelat*tilerow;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},CLASS_NAME:"OpenLayers.Layer.MapGuide"});OpenLayers.Control.Measure=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:['measure','measurepartial'],handlerOptions:null,callbacks:null,displaySystem:'metric',geodesic:false,displaySystemUnits:{geographic:['dd'],english:['mi','ft','in'],metric:['km','m']},partialDelay:300,delayedTrigger:null,persist:false,immediate:false,initialize:function(handler,options){this.EVENT_TYPES=OpenLayers.Control.Measure.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);var callbacks={done:this.measureComplete,point:this.measurePartial};if(this.immediate){callbacks.modify=this.measureImmediate;}
+this.callbacks=OpenLayers.Util.extend(callbacks,this.callbacks);this.handlerOptions=OpenLayers.Util.extend({persist:this.persist},this.handlerOptions);this.handler=new handler(this,this.callbacks,this.handlerOptions);},deactivate:function(){this.cancelDelay();return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},cancel:function(){this.cancelDelay();this.handler.cancel();},setImmediate:function(immediate){this.immediate=immediate;if(this.immediate){this.callbacks.modify=this.measureImmediate;}else{delete this.callbacks.modify;}},updateHandler:function(handler,options){var active=this.active;if(active){this.deactivate();}
+this.handler=new handler(this,this.callbacks,options);if(active){this.activate();}},measureComplete:function(geometry){this.cancelDelay();this.measure(geometry,"measure");},measurePartial:function(point,geometry){this.cancelDelay();geometry=geometry.clone();if(this.handler.freehandMode(this.handler.evt)){this.measure(geometry,"measurepartial");}else{this.delayedTrigger=window.setTimeout(OpenLayers.Function.bind(function(){this.delayedTrigger=null;this.measure(geometry,"measurepartial");},this),this.partialDelay);}},measureImmediate:function(point,feature,drawing){if(drawing&&this.delayedTrigger===null&&!this.handler.freehandMode(this.handler.evt)){this.measure(feature.geometry,"measurepartial");}},cancelDelay:function(){if(this.delayedTrigger!==null){window.clearTimeout(this.delayedTrigger);this.delayedTrigger=null;}},measure:function(geometry,eventType){var stat,order;if(geometry.CLASS_NAME.indexOf('LineString')>-1){stat=this.getBestLength(geometry);order=1;}else{stat=this.getBestArea(geometry);order=2;}
+this.events.triggerEvent(eventType,{measure:stat[0],units:stat[1],order:order,geometry:geometry});},getBestArea:function(geometry){var units=this.displaySystemUnits[this.displaySystem];var unit,area;for(var i=0,len=units.length;i<len;++i){unit=units[i];area=this.getArea(geometry,unit);if(area>1){break;}}
+return[area,unit];},getArea:function(geometry,units){var area,geomUnits;if(this.geodesic){area=geometry.getGeodesicArea(this.map.getProjectionObject());geomUnits="m";}else{area=geometry.getArea();geomUnits=this.map.getUnits();}
+var inPerDisplayUnit=OpenLayers.INCHES_PER_UNIT[units];if(inPerDisplayUnit){var inPerMapUnit=OpenLayers.INCHES_PER_UNIT[geomUnits];area*=Math.pow((inPerMapUnit/inPerDisplayUnit),2);}
+return area;},getBestLength:function(geometry){var units=this.displaySystemUnits[this.displaySystem];var unit,length;for(var i=0,len=units.length;i<len;++i){unit=units[i];length=this.getLength(geometry,unit);if(length>1){break;}}
+return[length,unit];},getLength:function(geometry,units){var length,geomUnits;if(this.geodesic){length=geometry.getGeodesicLength(this.map.getProjectionObject());geomUnits="m";}else{length=geometry.getLength();geomUnits=this.map.getUnits();}
+var inPerDisplayUnit=OpenLayers.INCHES_PER_UNIT[units];if(inPerDisplayUnit){var inPerMapUnit=OpenLayers.INCHES_PER_UNIT[geomUnits];length*=(inPerMapUnit/inPerDisplayUnit);}
+return length;},CLASS_NAME:"OpenLayers.Control.Measure"});OpenLayers.Layer.KaMap=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,units:null,resolution:OpenLayers.DOTS_PER_INCH,DEFAULT_PARAMS:{i:'jpeg',map:''},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);},getURL:function(bounds){bounds=this.adjustBounds(bounds);var mapRes=this.map.getResolution();var scale=Math.round((this.map.getScale()*10000))/10000;var pX=Math.round(bounds.left/mapRes);var pY=-Math.round(bounds.top/mapRes);return this.getFullRequestString({t:pY,l:pX,s:scale});},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=tilecol*tilelon;var offsetlat=bounds.top;var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-(tilerowremain+1)*this.tileSize.h;var tileoffsetlat=tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.KaMap(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();}
+obj.grid=[];return obj;},getTileBounds:function(viewPortPx){var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=tileMapWidth*Math.floor(mapPoint.lon/tileMapWidth);var tileBottom=tileMapHeight*Math.floor(mapPoint.lat/tileMapHeight);return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.KaMap"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:false,positionBlocks:null,blocks:null,fixedRelativePosition:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);if(this.fixedRelativePosition){this.updateRelativePosition();this.calculateRelativePosition=function(px){return this.relativePosition;};}
+this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;if(closeBox){this.closeDiv.style.zIndex=1;}
+this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%";},destroy:function(){this.imageSrc=null;this.imageSize=null;this.isAlphaImage=null;this.fixedRelativePosition=false;this.positionBlocks=null;for(var i=0;i<this.blocks.length;i++){var block=this.blocks[i];if(block.image){block.div.removeChild(block.image);}
+block.image=null;if(block.div){this.groupDiv.removeChild(block.div);}
+block.div=null;}
+this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,arguments);},setBackgroundColor:function(color){},setBorder:function(){},setOpacity:function(opacity){},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks();},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var contentDivPadding=this.getContentDivPadding();this.closeDiv.style.right=contentDivPadding.right+
+this.padding.right+"px";this.closeDiv.style.top=contentDivPadding.top+
+this.padding.top+"px";}
+this.updateBlocks();},calculateNewPx:function(px){var newPx=OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);newPx=newPx.offset(this.positionBlocks[this.relativePosition].offset);return newPx;},createBlocks:function(){this.blocks=[];var firstPosition=null;for(var key in this.positionBlocks){firstPosition=key;break;}
+var position=this.positionBlocks[firstPosition];for(var i=0;i<position.blocks.length;i++){var block={};this.blocks.push(block);var divId=this.id+'_FrameDecorationDiv_'+i;block.div=OpenLayers.Util.createDiv(divId,null,null,null,"absolute",null,"hidden",null);var imgId=this.id+'_FrameDecorationImg_'+i;var imageCreator=(this.isAlphaImage)?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage;block.image=imageCreator(imgId,null,this.imageSize,this.imageSrc,"absolute",null,null,null);block.div.appendChild(block.image);this.groupDiv.appendChild(block.div);}},updateBlocks:function(){if(!this.blocks){this.createBlocks();}
+if(this.size&&this.relativePosition){var position=this.positionBlocks[this.relativePosition];for(var i=0;i<position.blocks.length;i++){var positionBlock=position.blocks[i];var block=this.blocks[i];var l=positionBlock.anchor.left;var b=positionBlock.anchor.bottom;var r=positionBlock.anchor.right;var t=positionBlock.anchor.top;var w=(isNaN(positionBlock.size.w))?this.size.w-(r+l):positionBlock.size.w;var h=(isNaN(positionBlock.size.h))?this.size.h-(b+t):positionBlock.size.h;block.div.style.width=(w<0?0:w)+'px';block.div.style.height=(h<0?0:h)+'px';block.div.style.left=(l!=null)?l+'px':'';block.div.style.bottom=(b!=null)?b+'px':'';block.div.style.right=(r!=null)?r+'px':'';block.div.style.top=(t!=null)?t+'px':'';block.image.style.left=positionBlock.position.x+'px';block.image.style.top=positionBlock.position.y+'px';}
+this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px";}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:true,panMapIfOutOfView:true,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:false,fixedRelativePosition:false,positionBlocks:{"tl":{'offset':new OpenLayers.Pixel(44,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},"tr":{'offset':new OpenLayers.Pixel(-45,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},"bl":{'offset':new OpenLayers.Pixel(45,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},"br":{'offset':new OpenLayers.Pixel(-44,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.imageSrc=OpenLayers.Util.getImagesLocation()+'cloud-popup-relative.png';OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass;},destroy:function(){OpenLayers.Popup.Framed.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Tile.Image.IFrame={useIFrame:null,clear:function(){if(this.useIFrame){if(this.imgDiv){var iFrame=this.imgDiv.firstChild;OpenLayers.Event.stopObservingElement(iFrame);this.imgDiv.removeChild(iFrame);delete iFrame;}}else{OpenLayers.Tile.Image.prototype.clear.apply(this,arguments);}},renderTile:function(){if(OpenLayers.Tile.Image.prototype.renderTile.apply(this,arguments)&&this.useIFrame){var form=this.createRequestForm();this.imgDiv.appendChild(form);form.submit();this.imgDiv.removeChild(form);delete form;}
+return true;},initImgDiv:function(){this.useIFrame=this.maxGetUrlLength!==null&&!this.layer.async&&this.url.length>this.maxGetUrlLength;if(this.imgDiv!=null){var nodeName=this.imgDiv.nodeName.toLowerCase();if((this.useIFrame&&nodeName=="img")||(!this.useIFrame&&nodeName=="div")){this.removeImgDiv();this.imgDiv=null;}}
+if(this.useIFrame){if(this.imgDiv==null){var eventPane=document.createElement("div");if(OpenLayers.BROWSER_NAME=="msie"){eventPane.style.backgroundColor='#FFFFFF';eventPane.style.filter='chroma(color=#FFFFFF)';}
+OpenLayers.Util.modifyDOMElement(eventPane,null,new OpenLayers.Pixel(0,0),this.layer.getImageSize(),"absolute");this.imgDiv=document.createElement("div");this.imgDiv.appendChild(eventPane);OpenLayers.Util.modifyDOMElement(this.imgDiv,this.id,null,this.layer.getImageSize(),"relative");this.imgDiv.className='olTileImage';this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);}
+this.imgDiv.map=this.layer.map;}
+this.imgDiv.viewRequestID=this.layer.map.viewRequestID;}else{OpenLayers.Tile.Image.prototype.initImgDiv.apply(this,arguments);}},createIFrame:function(){var id=this.id+'_iFrame';var iframe;if(OpenLayers.BROWSER_NAME=="msie"){iframe=document.createElement('<iframe name="'+id+'">');iframe.style.backgroundColor='#FFFFFF';iframe.style.filter='chroma(color=#FFFFFF)';}
+else{iframe=document.createElement('iframe');iframe.style.backgroundColor='transparent';iframe.name=id;}
+iframe.id=id;iframe.scrolling='no';iframe.marginWidth='0px';iframe.marginHeight='0px';iframe.frameBorder='0';OpenLayers.Util.modifyDOMElement(iframe,id,new OpenLayers.Pixel(0,0),this.layer.getImageSize(),"absolute");var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};OpenLayers.Event.observe(iframe,'load',OpenLayers.Function.bind(onload,this));return iframe;},createRequestForm:function(){var form=document.createElement('form');form.method='POST';var cacheId=this.layer.params["_OLSALT"];cacheId=(cacheId?cacheId+"_":"")+this.bounds.toBBOX();form.action=OpenLayers.Util.urlAppend(this.layer.url,cacheId);this.imgDiv.insertBefore(this.createIFrame(),this.imgDiv.firstChild);form.target=this.id+'_iFrame';var imageSize=this.layer.getImageSize();var params=OpenLayers.Util.getParameters(this.url);for(var par in params){var field=document.createElement('input');field.type='hidden';field.name=par;field.value=params[par];form.appendChild(field);}
+return form;}};OpenLayers.Geometry.Rectangle=OpenLayers.Class(OpenLayers.Geometry,{x:null,y:null,width:null,height:null,initialize:function(x,y,width,height){OpenLayers.Geometry.prototype.initialize.apply(this,arguments);this.x=x;this.y=y;this.width=width;this.height=height;},calculateBounds:function(){this.bounds=new OpenLayers.Bounds(this.x,this.y,this.x+this.width,this.y+this.height);},getLength:function(){var length=(2*this.width)+(2*this.height);return length;},getArea:function(){var area=this.width*this.height;return area;},CLASS_NAME:"OpenLayers.Geometry.Rectangle"});OpenLayers.Tile.WFS=OpenLayers.Class(OpenLayers.Tile,{features:null,url:null,request:null,initialize:function(layer,position,bounds,url,size){OpenLayers.Tile.prototype.initialize.apply(this,arguments);this.url=url;this.features=[];},destroy:function(){OpenLayers.Tile.prototype.destroy.apply(this,arguments);this.destroyAllFeatures();this.features=null;this.url=null;if(this.request){this.request.abort();this.request=null;}},clear:function(){this.destroyAllFeatures();},draw:function(){if(OpenLayers.Tile.prototype.draw.apply(this,arguments)){if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");}
+this.loadFeaturesForRegion(this.requestSuccess);}},loadFeaturesForRegion:function(success,failure){if(this.request){this.request.abort();}
+this.request=OpenLayers.Request.GET({url:this.url,success:success,failure:failure,scope:this});},requestSuccess:function(request){if(this.features){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+if(this.layer.vectorMode){this.layer.addFeatures(this.layer.formatObject.read(doc));}else{var xml=new OpenLayers.Format.XML();if(typeof doc=="string"){doc=xml.read(doc);}
+var resultFeatures=xml.getElementsByTagNameNS(doc,"http://www.opengis.net/gml","featureMember");this.addResults(resultFeatures);}}
+if(this.events){this.events.triggerEvent("loadend");}
+this.request=null;},addResults:function(results){for(var i=0;i<results.length;i++){var feature=new this.layer.featureClass(this.layer,results[i]);this.features.push(feature);}},destroyAllFeatures:function(){while(this.features.length>0){var feature=this.features.shift();feature.destroy();}},CLASS_NAME:"OpenLayers.Tile.WFS"});OpenLayers.Format.SOSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.SOSCapabilities"});OpenLayers.Format.SOSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.SOSCapabilities,{namespaces:{ows:"http://www.opengis.net/ows/1.1",sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var capabilities={};this.readNode(data,capabilities);return capabilities;},readers:{"gml":OpenLayers.Util.applyDefaults({"name":function(node,obj){obj.name=this.getChildValue(node);},"TimePeriod":function(node,obj){obj.timePeriod={};this.readChildNodes(node,obj.timePeriod);},"beginPosition":function(node,timePeriod){timePeriod.beginPosition=this.getChildValue(node);},"endPosition":function(node,timePeriod){timePeriod.endPosition=this.getChildValue(node);}},OpenLayers.Format.GML.v3.prototype.readers["gml"]),"sos":{"Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Contents":function(node,obj){obj.contents={};this.readChildNodes(node,obj.contents);},"ObservationOfferingList":function(node,contents){contents.offeringList={};this.readChildNodes(node,contents.offeringList);},"ObservationOffering":function(node,offeringList){var id=this.getAttributeNS(node,this.namespaces.gml,"id");offeringList[id]={procedures:[],observedProperties:[],featureOfInterestIds:[],responseFormats:[],resultModels:[],responseModes:[]};this.readChildNodes(node,offeringList[id]);},"time":function(node,offering){offering.time={};this.readChildNodes(node,offering.time);},"procedure":function(node,offering){offering.procedures.push(this.getAttributeNS(node,this.namespaces.xlink,"href"));},"observedProperty":function(node,offering){offering.observedProperties.push(this.getAttributeNS(node,this.namespaces.xlink,"href"));},"featureOfInterest":function(node,offering){offering.featureOfInterestIds.push(this.getAttributeNS(node,this.namespaces.xlink,"href"));},"responseFormat":function(node,offering){offering.responseFormats.push(this.getChildValue(node));},"resultModel":function(node,offering){offering.resultModels.push(this.getChildValue(node));},"responseMode":function(node,offering){offering.responseModes.push(this.getChildValue(node));;}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.SOSCapabilities.v1_0_0"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:false,pinching:false,last:null,start:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){var propagate=true;this.pinching=false;if(OpenLayers.Event.isMultiTouch(evt)){this.started=true;this.last=this.start={distance:this.getDistance(evt.touches),delta:0,scale:1};this.callback("start",[evt,this.start]);propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;}
+OpenLayers.Event.stop(evt);return propagate;},touchmove:function(evt){if(this.started&&OpenLayers.Event.isMultiTouch(evt)){this.pinching=true;var current=this.getPinchData(evt);this.callback("move",[evt,current]);this.last=current;OpenLayers.Event.stop(evt);}
+return true;},touchend:function(evt){if(this.started){this.started=false;this.pinching=false;this.callback("done",[evt,this.start,this.last]);this.start=null;this.last=null;}
+return true;},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.pinching=false;activated=true;}
+return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.pinching=false;this.start=null;this.last=null;deactivated=true;}
+return deactivated;},getDistance:function(touches){var t0=touches[0];var t1=touches[1];return Math.sqrt(Math.pow(t0.clientX-t1.clientX,2)+
+Math.pow(t0.clientY-t1.clientY,2));},getPinchData:function(evt){var distance=this.getDistance(evt.touches);var scale=distance/this.start.distance;return{distance:distance,delta:this.last.distance-distance,scale:scale};},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.MouseDefaults=OpenLayers.Class(OpenLayers.Control,{performedDrag:false,wheelObserver:null,initialize:function(){OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){if(this.handler){this.handler.destroy();}
+this.handler=null;this.map.events.un({"click":this.defaultClick,"dblclick":this.defaultDblClick,"mousedown":this.defaultMouseDown,"mouseup":this.defaultMouseUp,"mousemove":this.defaultMouseMove,"mouseout":this.defaultMouseOut,scope:this});OpenLayers.Event.stopObserving(window,"DOMMouseScroll",this.wheelObserver);OpenLayers.Event.stopObserving(window,"mousewheel",this.wheelObserver);OpenLayers.Event.stopObserving(document,"mousewheel",this.wheelObserver);this.wheelObserver=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){this.map.events.on({"click":this.defaultClick,"dblclick":this.defaultDblClick,"mousedown":this.defaultMouseDown,"mouseup":this.defaultMouseUp,"mousemove":this.defaultMouseMove,"mouseout":this.defaultMouseOut,scope:this});this.registerWheelEvents();},registerWheelEvents:function(){this.wheelObserver=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);OpenLayers.Event.observe(window,"DOMMouseScroll",this.wheelObserver);OpenLayers.Event.observe(window,"mousewheel",this.wheelObserver);OpenLayers.Event.observe(document,"mousewheel",this.wheelObserver);},defaultClick:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+var notAfterDrag=!this.performedDrag;this.performedDrag=false;return notAfterDrag;},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+this.mouseDragStart=evt.xy.clone();this.performedDrag=false;if(evt.shiftKey){this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.eventsDiv.appendChild(this.zoomBox);}
+document.onselectstart=OpenLayers.Function.False;OpenLayers.Event.stop(evt);},defaultMouseMove:function(evt){this.mousePosition=evt.xy.clone();if(this.mouseDragStart!=null){if(this.zoomBox){var deltaX=Math.abs(this.mouseDragStart.x-evt.xy.x);var deltaY=Math.abs(this.mouseDragStart.y-evt.xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";if(evt.xy.x<this.mouseDragStart.x){this.zoomBox.style.left=evt.xy.x+"px";}
+if(evt.xy.y<this.mouseDragStart.y){this.zoomBox.style.top=evt.xy.y+"px";}}else{var deltaX=this.mouseDragStart.x-evt.xy.x;var deltaY=this.mouseDragStart.y-evt.xy.y;var size=this.map.getSize();var newXY=new OpenLayers.Pixel(size.w/2+deltaX,size.h/2+deltaY);var newCenter=this.map.getLonLatFromViewPortPx(newXY);this.map.setCenter(newCenter,null,true);this.mouseDragStart=evt.xy.clone();this.map.div.style.cursor="move";}
+this.performedDrag=true;}},defaultMouseUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+if(this.zoomBox){this.zoomBoxEnd(evt);}else{if(this.performedDrag){this.map.setCenter(this.map.center);}}
+document.onselectstart=null;this.mouseDragStart=null;this.map.div.style.cursor="";},defaultMouseOut:function(evt){if(this.mouseDragStart!=null&&OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){if(this.zoomBox){this.removeZoomBox();}
+this.mouseDragStart=null;}},defaultWheelUp:function(evt){if(this.map.getZoom()<=this.map.getNumZoomLevels()){this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),this.map.getZoom()+1);}},defaultWheelDown:function(evt){if(this.map.getZoom()>0){this.map.setCenter(this.map.getLonLatFromPixel(evt.xy),this.map.getZoom()-1);}},zoomBoxEnd:function(evt){if(this.mouseDragStart!=null){if(Math.abs(this.mouseDragStart.x-evt.xy.x)>5||Math.abs(this.mouseDragStart.y-evt.xy.y)>5){var start=this.map.getLonLatFromViewPortPx(this.mouseDragStart);var end=this.map.getLonLatFromViewPortPx(evt.xy);var top=Math.max(start.lat,end.lat);var bottom=Math.min(start.lat,end.lat);var left=Math.min(start.lon,end.lon);var right=Math.max(start.lon,end.lon);var bounds=new OpenLayers.Bounds(left,bottom,right,top);this.map.zoomToExtent(bounds);}else{var end=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(new OpenLayers.LonLat((end.lon),(end.lat)),this.map.getZoom()+1);}
+this.removeZoomBox();}},removeZoomBox:function(){this.map.eventsDiv.removeChild(this.zoomBox);this.zoomBox=null;},onWheelEvent:function(e){var inMap=false;var elem=OpenLayers.Event.element(e);while(elem!=null){if(this.map&&elem==this.map.div){inMap=true;break;}
+elem=elem.parentNode;}
+if(inMap){var delta=0;if(!e){e=window.event;}
+if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;}
+if(delta){e.xy=this.mousePosition;if(delta<0){this.defaultWheelDown(e);}else{this.defaultWheelUp(e);}}
+OpenLayers.Event.stop(e);}},CLASS_NAME:"OpenLayers.Control.MouseDefaults"});OpenLayers.Format.WFSDescribeFeatureType=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xsd:"http://www.w3.org/2001/XMLSchema"},readers:{"xsd":{"schema":function(node,obj){var complexTypes=[];var customTypes={};var schema={complexTypes:complexTypes,customTypes:customTypes};this.readChildNodes(node,schema);var attributes=node.attributes;var attr,name;for(var i=0,len=attributes.length;i<len;++i){attr=attributes[i];name=attr.name;if(name.indexOf("xmlns")==0){this.setNamespace(name.split(":")[1]||"",attr.value);}else{obj[name]=attr.value;}}
+obj.featureTypes=complexTypes;obj.targetPrefix=this.namespaceAlias[obj.targetNamespace];var complexType,customType;for(var i=0,len=complexTypes.length;i<len;++i){complexType=complexTypes[i];customType=customTypes[complexType.typeName];if(customTypes[complexType.typeName]){complexType.typeName=customType.name;}}},"complexType":function(node,obj){var complexType={"typeName":node.getAttribute("name")};this.readChildNodes(node,complexType);obj.complexTypes.push(complexType);},"complexContent":function(node,obj){this.readChildNodes(node,obj);},"extension":function(node,obj){this.readChildNodes(node,obj);},"sequence":function(node,obj){var sequence={elements:[]};this.readChildNodes(node,sequence);obj.properties=sequence.elements;},"element":function(node,obj){if(obj.elements){var element={};var attributes=node.attributes;var attr;for(var i=0,len=attributes.length;i<len;++i){attr=attributes[i];element[attr.name]=attr.value;}
+var type=element.type;if(!type){type={};this.readChildNodes(node,type);element.restriction=type;element.type=type.base;}
+var fullType=type.base||type;element.localType=fullType.split(":").pop();obj.elements.push(element);}
+if(obj.complexTypes){var type=node.getAttribute("type");var localType=type.split(":").pop();obj.customTypes[localType]={"name":node.getAttribute("name"),"type":type};}},"simpleType":function(node,obj){this.readChildNodes(node,obj);},"restriction":function(node,obj){obj.base=node.getAttribute("base");this.readRestriction(node,obj);}}},readRestriction:function(node,obj){var children=node.childNodes;var child,nodeName,value;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){nodeName=child.nodeName.split(":").pop();value=child.getAttribute("value");if(!obj[nodeName]){obj[nodeName]=value;}else{if(typeof obj[nodeName]=="string"){obj[nodeName]=[obj[nodeName]];}
+obj[nodeName].push(value);}}}},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var schema={};this.readNode(data,schema);return schema;},CLASS_NAME:"OpenLayers.Format.WFSDescribeFeatureType"});OpenLayers.Strategy.Refresh=OpenLayers.Class(OpenLayers.Strategy,{force:false,interval:0,timer:null,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){if(this.layer.visibility===true){this.start();}
+this.layer.events.on({"visibilitychanged":this.reset,scope:this});}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.stop();}
+return deactivated;},reset:function(){if(this.layer.visibility===true){this.start();}else{this.stop();}},start:function(){if(this.interval&&typeof this.interval==="number"&&this.interval>0){this.timer=window.setInterval(OpenLayers.Function.bind(this.refresh,this),this.interval);}},refresh:function(){if(this.layer&&this.layer.refresh&&typeof this.layer.refresh=="function"){this.layer.refresh({force:this.force});}},stop:function(){if(this.timer!==null){window.clearInterval(this.timer);this.timer=null;}},CLASS_NAME:"OpenLayers.Strategy.Refresh"});OpenLayers.Layer.ArcGIS93Rest=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{format:"png"},isBaseLayer:true,initialize:function(name,url,params,options){var newArguments=[];params=OpenLayers.Util.upperCaseObject(params);newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);OpenLayers.Util.applyDefaults(this.params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));if(this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){if((options==null)||(!options.isBaseLayer)){this.isBaseLayer=false;}
+if(this.params.FORMAT=="jpg"){this.params.FORMAT=OpenLayers.Util.alphaHack()?"gif":"png";}}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.ArcGIS93Rest(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var projWords=this.projection.getCode().split(":");var srid=projWords[projWords.length-1];var imageSize=this.getImageSize();var newParams={'BBOX':bounds.toBBOX(),'SIZE':imageSize.w+","+imageSize.h,'F':"image",'BBOXSR':srid,'IMAGESR':srid};if(this.layerDefs){var layerDefStrList=[];var layerID;for(layerID in this.layerDefs){if(this.layerDefs.hasOwnProperty(layerID)){if(this.layerDefs[layerID]){layerDefStrList.push(layerID);layerDefStrList.push(":");layerDefStrList.push(this.layerDefs[layerID]);layerDefStrList.push(";");}}}
+if(layerDefStrList.length>0){newParams['LAYERDEFS']=layerDefStrList.join("");}}
+var requestString=this.getFullRequestString(newParams);return requestString;},setLayerFilter:function(id,queryDef){if(!this.layerDefs){this.layerDefs={};}
+if(queryDef){this.layerDefs[id]=queryDef;}else{delete this.layerDefs[id];}},clearLayerFilter:function(id){if(id){delete this.layerDefs[id];}else{delete this.layerDefs;}},mergeNewParams:function(newParams){var upperParams=OpenLayers.Util.upperCaseObject(newParams);var newArguments=[upperParams];return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,newArguments);},CLASS_NAME:"OpenLayers.Layer.ArcGIS93Rest"});OpenLayers.Layer.MapServer=OpenLayers.Class(OpenLayers.Layer.Grid,{DEFAULT_PARAMS:{mode:"map",map_imagetype:"png"},initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);this.params=OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS);if(options==null||options.isBaseLayer==null){this.isBaseLayer=((this.params.transparent!="true")&&(this.params.transparent!=true));}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var extent=[bounds.left,bounds.bottom,bounds.right,bounds.top];var imageSize=this.getImageSize();var url=this.getFullRequestString({mapext:extent,imgext:extent,map_size:[imageSize.w,imageSize.h],imgx:imageSize.w/2,imgy:imageSize.h/2,imgxy:[imageSize.w,imageSize.h]});return url;},getFullRequestString:function(newParams,altUrl){var url=(altUrl==null)?this.url:altUrl;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(OpenLayers.Util.isArray(url)){url=this.selectUrl(paramsString,url);}
+var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}}
+paramsString=OpenLayers.Util.getParameterString(allParams);var requestString=url;paramsString=paramsString.replace(/,/g,"+");if(paramsString!=""){var lastServerChar=url.charAt(url.length-1);if((lastServerChar=="&")||(lastServerChar=="?")){requestString+=paramsString;}else{if(url.indexOf('?')==-1){requestString+='?'+paramsString;}else{requestString+='&'+paramsString;}}}
+return requestString;},CLASS_NAME:"OpenLayers.Layer.MapServer"});OpenLayers.Layer.MapServer.Untiled=OpenLayers.Class(OpenLayers.Layer.MapServer,{singleTile:true,initialize:function(name,url,params,options){OpenLayers.Layer.MapServer.prototype.initialize.apply(this,arguments);var msg="The OpenLayers.Layer.MapServer.Untiled class is deprecated and "+"will be removed in 3.0. Instead, you should use the "+"normal OpenLayers.Layer.MapServer class, passing it the option "+"'singleTile' as true.";OpenLayers.Console.warn(msg);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.MapServer.Untiled(this.name,this.url,this.params,this.getOptions());}
+obj=OpenLayers.Layer.MapServer.prototype.clone.apply(this,[obj]);return obj;},CLASS_NAME:"OpenLayers.Layer.MapServer.Untiled"});OpenLayers.Handler.Hover=OpenLayers.Class(OpenLayers.Handler,{delay:500,pixelTolerance:null,stopMove:false,px:null,timerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},mousemove:function(evt){if(this.passesTolerance(evt.xy)){this.clearTimer();this.callback('move',[evt]);this.px=evt.xy;evt=OpenLayers.Util.extend({},evt);this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);}
+return!this.stopMove;},mouseout:function(evt){if(OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){this.clearTimer();this.callback('move',[evt]);}
+return true;},passesTolerance:function(px){var passes=true;if(this.pixelTolerance&&this.px){var dpx=Math.sqrt(Math.pow(this.px.x-px.x,2)+
+Math.pow(this.px.y-px.y,2));if(dpx<this.pixelTolerance){passes=false;}}
+return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},delayedCall:function(evt){this.callback('pause',[evt]);},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();deactivated=true;}
+return deactivated;},CLASS_NAME:"OpenLayers.Handler.Hover"});OpenLayers.Control.GetFeature=OpenLayers.Class(OpenLayers.Control,{protocol:null,multipleKey:null,toggleKey:null,modifiers:null,multiple:false,click:true,single:true,clickout:true,toggle:false,clickTolerance:5,hover:false,box:false,maxFeatures:10,features:null,hoverFeature:null,handlerOptions:null,handlers:null,hoverResponse:null,filterType:OpenLayers.Filter.Spatial.BBOX,EVENT_TYPES:["featureselected","featuresselected","featureunselected","clickout","beforefeatureselected","beforefeaturesselected","hoverfeature","outfeature"],initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.GetFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);options.handlerOptions=options.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[options]);this.features={};this.handlers={};if(this.click){this.handlers.click=new OpenLayers.Handler.Click(this,{click:this.selectClick},this.handlerOptions.click||{});}
+if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},OpenLayers.Util.extend(this.handlerOptions.box,{boxDivClassName:"olHandlerBoxSelectFeature"}));}
+if(this.hover){this.handlers.hover=new OpenLayers.Handler.Hover(this,{'move':this.cancelHover,'pause':this.selectHover},OpenLayers.Util.extend(this.handlerOptions.hover,{'delay':250}));}},activate:function(){if(!this.active){for(var i in this.handlers){this.handlers[i].activate();}}
+return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){for(var i in this.handlers){this.handlers[i].deactivate();}}
+return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},selectClick:function(evt){var bounds=this.pixelToBounds(evt.xy);this.setModifiers(evt);this.request(bounds,{single:this.single});},selectBox:function(position){var bounds;if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{if(this.click){return;}
+bounds=this.pixelToBounds(position);}
+this.setModifiers(this.handlers.box.dragHandler.evt);this.request(bounds);},selectHover:function(evt){var bounds=this.pixelToBounds(evt.xy);this.request(bounds,{single:true,hover:true});},cancelHover:function(){if(this.hoverResponse){this.protocol.abort(this.hoverResponse);this.hoverResponse=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");}},request:function(bounds,options){options=options||{};var filter=new OpenLayers.Filter.Spatial({type:this.filterType,value:bounds});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");var response=this.protocol.read({maxFeatures:options.single==true?this.maxFeatures:undefined,filter:filter,callback:function(result){if(result.success()){if(result.features.length){if(options.single==true){this.selectBestFeature(result.features,bounds.getCenterLonLat(),options);}else{this.select(result.features);}}else if(options.hover){this.hoverSelect();}else{this.events.triggerEvent("clickout");if(this.clickout){this.unselectAll();}}}
+OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");},scope:this});if(options.hover==true){this.hoverResponse=response;}},selectBestFeature:function(features,clickPosition,options){options=options||{};if(features.length){var point=new OpenLayers.Geometry.Point(clickPosition.lon,clickPosition.lat);var feature,resultFeature,dist;var minDist=Number.MAX_VALUE;for(var i=0;i<features.length;++i){feature=features[i];if(feature.geometry){dist=point.distanceTo(feature.geometry,{edge:false});if(dist<minDist){minDist=dist;resultFeature=feature;if(minDist==0){break;}}}}
+if(options.hover==true){this.hoverSelect(resultFeature);}else{this.select(resultFeature||features);}}},setModifiers:function(evt){this.modifiers={multiple:this.multiple||(this.multipleKey&&evt[this.multipleKey]),toggle:this.toggle||(this.toggleKey&&evt[this.toggleKey])};},select:function(features){if(!this.modifiers.multiple&&!this.modifiers.toggle){this.unselectAll();}
+if(!(OpenLayers.Util.isArray(features))){features=[features];}
+var cont=this.events.triggerEvent("beforefeaturesselected",{features:features});if(cont!==false){var selectedFeatures=[];var feature;for(var i=0,len=features.length;i<len;++i){feature=features[i];if(this.features[feature.fid||feature.id]){if(this.modifiers.toggle){this.unselect(this.features[feature.fid||feature.id]);}}else{cont=this.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){this.features[feature.fid||feature.id]=feature;selectedFeatures.push(feature);this.events.triggerEvent("featureselected",{feature:feature});}}}
+this.events.triggerEvent("featuresselected",{features:selectedFeatures});}},hoverSelect:function(feature){var fid=feature?feature.fid||feature.id:null;var hfid=this.hoverFeature?this.hoverFeature.fid||this.hoverFeature.id:null;if(hfid&&hfid!=fid){this.events.triggerEvent("outfeature",{feature:this.hoverFeature});this.hoverFeature=null;}
+if(fid&&fid!=hfid){this.events.triggerEvent("hoverfeature",{feature:feature});this.hoverFeature=feature;}},unselect:function(feature){delete this.features[feature.fid||feature.id];this.events.triggerEvent("featureunselected",{feature:feature});},unselectAll:function(){for(var fid in this.features){this.unselect(this.features[fid]);}},setMap:function(map){for(var i in this.handlers){this.handlers[i].setMap(map);}
+OpenLayers.Control.prototype.setMap.apply(this,arguments);},pixelToBounds:function(pixel){var llPx=pixel.add(-this.clickTolerance/2,this.clickTolerance/2);var urPx=pixel.add(this.clickTolerance/2,-this.clickTolerance/2);var ll=this.map.getLonLatFromPixel(llPx);var ur=this.map.getLonLatFromPixel(urPx);return new OpenLayers.Bounds(ll.lon,ll.lat,ur.lon,ur.lat);},CLASS_NAME:"OpenLayers.Control.GetFeature"});OpenLayers.Format.QueryStringFilter=(function(){var cmpToStr={};cmpToStr[OpenLayers.Filter.Comparison.EQUAL_TO]="eq";cmpToStr[OpenLayers.Filter.Comparison.NOT_EQUAL_TO]="ne";cmpToStr[OpenLayers.Filter.Comparison.LESS_THAN]="lt";cmpToStr[OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO]="lte";cmpToStr[OpenLayers.Filter.Comparison.GREATER_THAN]="gt";cmpToStr[OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO]="gte";cmpToStr[OpenLayers.Filter.Comparison.LIKE]="ilike";function regex2value(value){value=value.replace(/%/g,"\\%");value=value.replace(/\\\\\.(\*)?/g,function($0,$1){return $1?$0:"\\\\_";});value=value.replace(/\\\\\.\*/g,"\\\\%");value=value.replace(/(\\)?\.(\*)?/g,function($0,$1,$2){return $1||$2?$0:"_";});value=value.replace(/(\\)?\.\*/g,function($0,$1){return $1?$0:"%";});value=value.replace(/\\\./g,".");value=value.replace(/(\\)?\\\*/g,function($0,$1){return $1?$0:"*";});return value;}
+return OpenLayers.Class(OpenLayers.Format,{wildcarded:false,srsInBBOX:false,write:function(filter,params){params=params||{};var className=filter.CLASS_NAME;var filterType=className.substring(className.lastIndexOf(".")+1);switch(filterType){case"Spatial":switch(filter.type){case OpenLayers.Filter.Spatial.BBOX:params.bbox=filter.value.toArray();if(this.srsInBBOX&&filter.projection){params.bbox.push(filter.projection.getCode());}
+break;case OpenLayers.Filter.Spatial.DWITHIN:params.tolerance=filter.distance;case OpenLayers.Filter.Spatial.WITHIN:params.lon=filter.value.x;params.lat=filter.value.y;break;default:OpenLayers.Console.warn("Unknown spatial filter type "+filter.type);}
+break;case"Comparison":var op=cmpToStr[filter.type];if(op!==undefined){var value=filter.value;if(filter.type==OpenLayers.Filter.Comparison.LIKE){value=regex2value(value);if(this.wildcarded){value="%"+value+"%";}}
+params[filter.property+"__"+op]=value;params.queryable=params.queryable||[];params.queryable.push(filter.property);}else{OpenLayers.Console.warn("Unknown comparison filter type "+filter.type);}
+break;case"Logical":if(filter.type===OpenLayers.Filter.Logical.AND){for(var i=0,len=filter.filters.length;i<len;i++){params=this.write(filter.filters[i],params);}}else{OpenLayers.Console.warn("Unsupported logical filter type "+filter.type);}
+break;default:OpenLayers.Console.warn("Unknown filter type "+filterType);}
+return params;},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"});})();OpenLayers.Format.SOSGetFeatureOfInterest=OpenLayers.Class(OpenLayers.Format.XML,{VERSION:"1.0.0",namespaces:{sos:"http://www.opengis.net/sos/1.0",gml:"http://www.opengis.net/gml",sa:"http://www.opengis.net/sampling/1.0",xsi:"http://www.w3.org/2001/XMLSchema-instance"},schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosAll.xsd",defaultPrefix:"sos",regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var info={features:[]};this.readNode(data,info);var features=[];for(var i=0,len=info.features.length;i<len;i++){var container=info.features[i];if(this.internalProjection&&this.externalProjection&&container.components[0]){container.components[0].transform(this.externalProjection,this.internalProjection);}
+var feature=new OpenLayers.Feature.Vector(container.components[0],container.attributes);features.push(feature);}
+return features;},readers:{"sa":{"SamplingPoint":function(node,obj){if(!obj.attributes){var feature={attributes:{}};obj.features.push(feature);obj=feature;}
+obj.attributes.id=this.getAttributeNS(node,this.namespaces.gml,"id");this.readChildNodes(node,obj);},"position":function(node,obj){this.readChildNodes(node,obj);}},"gml":OpenLayers.Util.applyDefaults({"FeatureCollection":function(node,obj){this.readChildNodes(node,obj);},"featureMember":function(node,obj){var feature={attributes:{}};obj.features.push(feature);this.readChildNodes(node,feature);},"name":function(node,obj){obj.attributes.name=this.getChildValue(node);},"pos":function(node,obj){if(!this.externalProjection){this.externalProjection=new OpenLayers.Projection(node.getAttribute("srsName"));}
+OpenLayers.Format.GML.v3.prototype.readers.gml.pos.apply(this,[node,obj]);}},OpenLayers.Format.GML.v3.prototype.readers.gml)},writers:{"sos":{"GetFeatureOfInterest":function(options){var node=this.createElementNSPlus("GetFeatureOfInterest",{attributes:{version:this.VERSION,service:'SOS',"xsi:schemaLocation":this.schemaLocation}});for(var i=0,len=options.fois.length;i<len;i++){this.writeNode("FeatureOfInterestId",{foi:options.fois[i]},node);}
+return node;},"FeatureOfInterestId":function(options){var node=this.createElementNSPlus("FeatureOfInterestId",{value:options.foi});return node;}}},CLASS_NAME:"OpenLayers.Format.SOSGetFeatureOfInterest"});OpenLayers.Format.SOSGetObservation=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows",gml:"http://www.opengis.net/gml",sos:"http://www.opengis.net/sos/1.0",ogc:"http://www.opengis.net/ogc",om:"http://www.opengis.net/om/1.0",sa:"http://www.opengis.net/sampling/1.0",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/sos/1.0 http://schemas.opengis.net/sos/1.0.0/sosGetObservation.xsd",defaultPrefix:"sos",read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var info={measurements:[],observations:[]};this.readNode(data,info);return info;},write:function(options){var node=this.writeNode("sos:GetObservation",options);node.setAttribute("xmlns:om",this.namespaces.om);node.setAttribute("xmlns:ogc",this.namespaces.ogc);this.setAttributeNS(node,this.namespaces.xsi,"xsi:schemaLocation",this.schemaLocation);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},readers:{"om":{"ObservationCollection":function(node,obj){obj.id=this.getAttributeNS(node,this.namespaces.gml,"id");this.readChildNodes(node,obj);},"member":function(node,observationCollection){this.readChildNodes(node,observationCollection);},"Measurement":function(node,observationCollection){var measurement={};observationCollection.measurements.push(measurement);this.readChildNodes(node,measurement);},"Observation":function(node,observationCollection){var observation={};observationCollection.observations.push(observation);this.readChildNodes(node,observation);},"samplingTime":function(node,measurement){var samplingTime={};measurement.samplingTime=samplingTime;this.readChildNodes(node,samplingTime);},"observedProperty":function(node,measurement){measurement.observedProperty=this.getAttributeNS(node,this.namespaces.xlink,"href");this.readChildNodes(node,measurement);},"procedure":function(node,measurement){measurement.procedure=this.getAttributeNS(node,this.namespaces.xlink,"href");this.readChildNodes(node,measurement);},"featureOfInterest":function(node,observation){var foi={features:[]};observation.fois=[];observation.fois.push(foi);this.readChildNodes(node,foi);var features=[];for(var i=0,len=foi.features.length;i<len;i++){var feature=foi.features[i];features.push(new OpenLayers.Feature.Vector(feature.components[0],feature.attributes));}
+foi.features=features;},"result":function(node,measurement){var result={};measurement.result=result;if(this.getChildValue(node)!==''){result.value=this.getChildValue(node);result.uom=node.getAttribute("uom");}else{this.readChildNodes(node,result);}}},"sa":OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.sa,"gml":OpenLayers.Util.applyDefaults({"TimeInstant":function(node,samplingTime){var timeInstant={};samplingTime.timeInstant=timeInstant;this.readChildNodes(node,timeInstant);},"timePosition":function(node,timeInstant){timeInstant.timePosition=this.getChildValue(node);}},OpenLayers.Format.SOSGetFeatureOfInterest.prototype.readers.gml)},writers:{"sos":{"GetObservation":function(options){var node=this.createElementNSPlus("GetObservation",{attributes:{version:this.VERSION,service:'SOS'}});this.writeNode("offering",options,node);if(options.eventTime){this.writeNode("eventTime",options,node);}
+for(var procedure in options.procedures){this.writeNode("procedure",options.procedures[procedure],node);}
+for(var observedProperty in options.observedProperties){this.writeNode("observedProperty",options.observedProperties[observedProperty],node);}
+if(options.foi){this.writeNode("featureOfInterest",options.foi,node);}
+this.writeNode("responseFormat",options,node);if(options.resultModel){this.writeNode("resultModel",options,node);}
+if(options.responseMode){this.writeNode("responseMode",options,node);}
+return node;},"featureOfInterest":function(foi){var node=this.createElementNSPlus("featureOfInterest");this.writeNode("ObjectID",foi.objectId,node);return node;},"ObjectID":function(options){return this.createElementNSPlus("ObjectID",{value:options});},"responseFormat":function(options){return this.createElementNSPlus("responseFormat",{value:options.responseFormat});},"procedure":function(procedure){return this.createElementNSPlus("procedure",{value:procedure});},"offering":function(options){return this.createElementNSPlus("offering",{value:options.offering});},"observedProperty":function(observedProperty){return this.createElementNSPlus("observedProperty",{value:observedProperty});},"eventTime":function(options){var node=this.createElementNSPlus("eventTime");if(options.eventTime==='latest'){this.writeNode("ogc:TM_Equals",options,node);}
+return node;},"resultModel":function(options){return this.createElementNSPlus("resultModel",{value:options.resultModel});},"responseMode":function(options){return this.createElementNSPlus("responseMode",{value:options.responseMode});}},"ogc":{"TM_Equals":function(options){var node=this.createElementNSPlus("ogc:TM_Equals");this.writeNode("ogc:PropertyName",{property:"urn:ogc:data:time:iso8601"},node);if(options.eventTime==='latest'){this.writeNode("gml:TimeInstant",{value:'latest'},node);}
+return node;},"PropertyName":function(options){return this.createElementNSPlus("ogc:PropertyName",{value:options.property});}},"gml":{"TimeInstant":function(options){var node=this.createElementNSPlus("gml:TimeInstant");this.writeNode("gml:timePosition",options,node);return node;},"timePosition":function(options){var node=this.createElementNSPlus("gml:timePosition",{value:options.value});return node;}}},CLASS_NAME:"OpenLayers.Format.SOSGetObservation"});OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{autoActivate:true,element:null,prefix:'',separator:', ',suffix:'',numDigits:5,granularity:10,emptyString:null,lastXy:null,displayProjection:null,destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.map.events.register('mousemove',this,this.redraw);this.map.events.register('mouseout',this,this.reset);this.redraw();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.map.events.unregister('mousemove',this,this.redraw);this.map.events.unregister('mouseout',this,this.reset);this.element.innerHTML="";return true;}else{return false;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element){this.div.left="";this.div.top="";this.element=this.div;}
+return this.div;},redraw:function(evt){var lonLat;if(evt==null){this.reset();return;}else{if(this.lastXy==null||Math.abs(evt.xy.x-this.lastXy.x)>this.granularity||Math.abs(evt.xy.y-this.lastXy.y)>this.granularity)
+{this.lastXy=evt.xy;return;}
+lonLat=this.map.getLonLatFromPixel(evt.xy);if(!lonLat){return;}
+if(this.displayProjection){lonLat.transform(this.map.getProjectionObject(),this.displayProjection);}
+this.lastXy=evt.xy;}
+var newHtml=this.formatOutput(lonLat);if(newHtml!=this.element.innerHTML){this.element.innerHTML=newHtml;}},reset:function(evt){if(this.emptyString!=null){this.element.innerHTML=this.emptyString;}},formatOutput:function(lonLat){var digits=parseInt(this.numDigits);var newHtml=this.prefix+
+lonLat.lon.toFixed(digits)+
+this.separator+
+lonLat.lat.toFixed(digits)+
+this.suffix;return newHtml;},CLASS_NAME:"OpenLayers.Control.MousePosition"});OpenLayers.Control.Geolocate=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["locationupdated","locationfailed","locationuncapable"],geolocation:navigator.geolocation,bind:true,watch:false,geolocationOptions:null,initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.Geolocate.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);this.geolocationOptions={};OpenLayers.Control.prototype.initialize.apply(this,[options]);},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){if(!this.geolocation){this.events.triggerEvent("locationuncapable");return false;}
+if(OpenLayers.Control.prototype.activate.apply(this,arguments)){if(this.watch){this.watchId=this.geolocation.watchPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);}else{this.getCurrentLocation();}
+return true;}
+return false;},deactivate:function(){if(this.active&&this.watchId!==null){this.geolocation.clearWatch(this.watchId);}
+return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},geolocate:function(position){var center=new OpenLayers.LonLat(position.coords.longitude,position.coords.latitude).transform(new OpenLayers.Projection("EPSG:4326"),this.map.getProjectionObject());if(this.bind){this.map.setCenter(center);}
+this.events.triggerEvent("locationupdated",{position:position,point:new OpenLayers.Geometry.Point(center.lon,center.lat)});},getCurrentLocation:function(){if(!this.active||this.watch){return false;}
+this.geolocation.getCurrentPosition(OpenLayers.Function.bind(this.geolocate,this),OpenLayers.Function.bind(this.failure,this),this.geolocationOptions);return true;},failure:function(error){this.events.triggerEvent("locationfailed",{error:error});},CLASS_NAME:"OpenLayers.Control.Geolocate"});OpenLayers.Control.NavigationHistory=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOGGLE,previous:null,previousOptions:null,next:null,nextOptions:null,limit:50,autoActivate:true,clearOnDeactivate:false,registry:null,nextStack:null,previousStack:null,listeners:null,restoring:false,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.registry=OpenLayers.Util.extend({"moveend":this.getState},this.registry);var previousOptions={trigger:OpenLayers.Function.bind(this.previousTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Previous"};OpenLayers.Util.extend(previousOptions,this.previousOptions);this.previous=new OpenLayers.Control.Button(previousOptions);var nextOptions={trigger:OpenLayers.Function.bind(this.nextTrigger,this),displayClass:this.displayClass+" "+this.displayClass+"Next"};OpenLayers.Util.extend(nextOptions,this.nextOptions);this.next=new OpenLayers.Control.Button(nextOptions);this.clear();},onPreviousChange:function(state,length){if(state&&!this.previous.active){this.previous.activate();}else if(!state&&this.previous.active){this.previous.deactivate();}},onNextChange:function(state,length){if(state&&!this.next.active){this.next.activate();}else if(!state&&this.next.active){this.next.deactivate();}},destroy:function(){OpenLayers.Control.prototype.destroy.apply(this);this.previous.destroy();this.next.destroy();this.deactivate();for(var prop in this){this[prop]=null;}},setMap:function(map){this.map=map;this.next.setMap(map);this.previous.setMap(map);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.next.draw();this.previous.draw();},previousTrigger:function(){var current=this.previousStack.shift();var state=this.previousStack.shift();if(state!=undefined){this.nextStack.unshift(current);this.previousStack.unshift(state);this.restoring=true;this.restore(state);this.restoring=false;this.onNextChange(this.nextStack[0],this.nextStack.length);this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);}else{this.previousStack.unshift(current);}
+return state;},nextTrigger:function(){var state=this.nextStack.shift();if(state!=undefined){this.previousStack.unshift(state);this.restoring=true;this.restore(state);this.restoring=false;this.onNextChange(this.nextStack[0],this.nextStack.length);this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);}
+return state;},clear:function(){this.previousStack=[];this.previous.deactivate();this.nextStack=[];this.next.deactivate();},getState:function(){return{center:this.map.getCenter(),resolution:this.map.getResolution(),projection:this.map.getProjectionObject(),units:this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units};},restore:function(state){var center,zoom;if(this.map.getProjectionObject()==state.projection){zoom=this.map.getZoomForResolution(state.resolution);center=state.center;}else{center=state.center.clone();center.transform(state.projection,this.map.getProjectionObject());var sourceUnits=state.units;var targetUnits=this.map.getProjectionObject().getUnits()||this.map.units||this.map.baseLayer.units;var resolutionFactor=sourceUnits&&targetUnits?OpenLayers.INCHES_PER_UNIT[sourceUnits]/OpenLayers.INCHES_PER_UNIT[targetUnits]:1;zoom=this.map.getZoomForResolution(resolutionFactor*state.resolution);}
+this.map.setCenter(center,zoom);},setListeners:function(){this.listeners={};for(var type in this.registry){this.listeners[type]=OpenLayers.Function.bind(function(){if(!this.restoring){var state=this.registry[type].apply(this,arguments);this.previousStack.unshift(state);if(this.previousStack.length>1){this.onPreviousChange(this.previousStack[1],this.previousStack.length-1);}
+if(this.previousStack.length>(this.limit+1)){this.previousStack.pop();}
+if(this.nextStack.length>0){this.nextStack=[];this.onNextChange(null,0);}}
+return true;},this);}},activate:function(){var activated=false;if(this.map){if(OpenLayers.Control.prototype.activate.apply(this)){if(this.listeners==null){this.setListeners();}
+for(var type in this.listeners){this.map.events.register(type,this,this.listeners[type]);}
+activated=true;if(this.previousStack.length==0){this.initStack();}}}
+return activated;},initStack:function(){if(this.map.getCenter()){this.listeners.moveend();}},deactivate:function(){var deactivated=false;if(this.map){if(OpenLayers.Control.prototype.deactivate.apply(this)){for(var type in this.listeners){this.map.events.unregister(type,this,this.listeners[type]);}
+if(this.clearOnDeactivate){this.clear();}
+deactivated=true;}}
+return deactivated;},CLASS_NAME:"OpenLayers.Control.NavigationHistory"});OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:false,wildcarded:false,srsInBBOX:false,initialize:function(options){options=options||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var format=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=function(filter,params){return format.write(filter,params);}}},destroy:function(){this.params=null;this.headers=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=options||{};options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);options=OpenLayers.Util.applyDefaults(options,this.options);if(options.filter&&this.filterToParams){options.params=this.filterToParams(options.filter,options.params);}
+var readWithPOST=(options.readWithPOST!==undefined)?options.readWithPOST:this.readWithPOST;var resp=new OpenLayers.Protocol.Response({requestType:"read"});if(readWithPOST){resp.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,resp,options),data:OpenLayers.Util.getParameterString(options.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}});}else{resp.priv=OpenLayers.Request.GET({url:options.url,callback:this.createCallback(this.handleRead,resp,options),params:options.params,headers:options.headers});}
+return resp;},handleRead:function(resp,options){this.handleResponse(resp,options);},create:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:features,requestType:"create"});resp.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleCreate,resp,options),headers:options.headers,data:this.format.write(features)});return resp;},handleCreate:function(resp,options){this.handleResponse(resp,options);},update:function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+"/"+feature.fid;options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:feature,requestType:"update"});resp.priv=OpenLayers.Request.PUT({url:url,callback:this.createCallback(this.handleUpdate,resp,options),headers:options.headers,data:this.format.write(feature)});return resp;},handleUpdate:function(resp,options){this.handleResponse(resp,options);},"delete":function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+"/"+feature.fid;options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:feature,requestType:"delete"});resp.priv=OpenLayers.Request.DELETE({url:url,callback:this.createCallback(this.handleDelete,resp,options),headers:options.headers});return resp;},handleDelete:function(resp,options){this.handleResponse(resp,options);},handleResponse:function(resp,options){var request=resp.priv;if(options.callback){if(request.status>=200&&request.status<300){if(resp.requestType!="delete"){resp.features=this.parseFeatures(request);}
+resp.code=OpenLayers.Protocol.Response.SUCCESS;}else{resp.code=OpenLayers.Protocol.Response.FAILURE;}
+options.callback.call(options.scope,resp);}},parseFeatures:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+if(!doc||doc.length<=0){return null;}
+return this.format.read(doc);},commit:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=[],nResponses=0;var types={};types[OpenLayers.State.INSERT]=[];types[OpenLayers.State.UPDATE]=[];types[OpenLayers.State.DELETE]=[];var feature,list,requestFeatures=[];for(var i=0,len=features.length;i<len;++i){feature=features[i];list=types[feature.state];if(list){list.push(feature);requestFeatures.push(feature);}}
+var nRequests=(types[OpenLayers.State.INSERT].length>0?1:0)+
+types[OpenLayers.State.UPDATE].length+
+types[OpenLayers.State.DELETE].length;var success=true;var finalResponse=new OpenLayers.Protocol.Response({reqFeatures:requestFeatures});function insertCallback(response){var len=response.features?response.features.length:0;var fids=new Array(len);for(var i=0;i<len;++i){fids[i]=response.features[i].fid;}
+finalResponse.insertIds=fids;callback.apply(this,[response]);}
+function callback(response){this.callUserCallback(response,options);success=success&&response.success();nResponses++;if(nResponses>=nRequests){if(options.callback){finalResponse.code=success?OpenLayers.Protocol.Response.SUCCESS:OpenLayers.Protocol.Response.FAILURE;options.callback.apply(options.scope,[finalResponse]);}}}
+var queue=types[OpenLayers.State.INSERT];if(queue.length>0){resp.push(this.create(queue,OpenLayers.Util.applyDefaults({callback:insertCallback,scope:this},options.create)));}
+queue=types[OpenLayers.State.UPDATE];for(var i=queue.length-1;i>=0;--i){resp.push(this.update(queue[i],OpenLayers.Util.applyDefaults({callback:callback,scope:this},options.update)));}
+queue=types[OpenLayers.State.DELETE];for(var i=queue.length-1;i>=0;--i){resp.push(this["delete"](queue[i],OpenLayers.Util.applyDefaults({callback:callback,scope:this},options["delete"])));}
+return resp;},abort:function(response){if(response){response.priv.abort();}},callUserCallback:function(resp,options){var opt=options[resp.requestType];if(opt&&opt.callback){opt.callback.call(opt.scope,resp);}},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Format.CSWGetDomain=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Format.CSWGetDomain.DEFAULTS);var cls=OpenLayers.Format.CSWGetDomain["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported CSWGetDomain version: "+options.version;}
+return new cls(options);};OpenLayers.Format.CSWGetDomain.DEFAULTS={"version":"2.0.2"};OpenLayers.Format.CSWGetDomain.v2_0_2=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",csw:"http://www.opengis.net/cat/csw/2.0.2"},defaultPrefix:"csw",version:"2.0.2",schemaLocation:"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",PropertyName:null,ParameterName:null,initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var obj={};this.readNode(data,obj);return obj;},readers:{"csw":{"GetDomainResponse":function(node,obj){this.readChildNodes(node,obj);},"DomainValues":function(node,obj){if(!(OpenLayers.Util.isArray(obj.DomainValues))){obj.DomainValues=[];}
+var attrs=node.attributes;var domainValue={};for(var i=0,len=attrs.length;i<len;++i){domainValue[attrs[i].name]=attrs[i].nodeValue;}
+this.readChildNodes(node,domainValue);obj.DomainValues.push(domainValue);},"PropertyName":function(node,obj){obj.PropertyName=this.getChildValue(node);},"ParameterName":function(node,obj){obj.ParameterName=this.getChildValue(node);},"ListOfValues":function(node,obj){if(!(OpenLayers.Util.isArray(obj.ListOfValues))){obj.ListOfValues=[];}
+this.readChildNodes(node,obj.ListOfValues);},"Value":function(node,obj){var attrs=node.attributes;var value={};for(var i=0,len=attrs.length;i<len;++i){value[attrs[i].name]=attrs[i].nodeValue;}
+value.value=this.getChildValue(node);obj.push({Value:value});},"ConceptualScheme":function(node,obj){obj.ConceptualScheme={};this.readChildNodes(node,obj.ConceptualScheme);},"Name":function(node,obj){obj.Name=this.getChildValue(node);},"Document":function(node,obj){obj.Document=this.getChildValue(node);},"Authority":function(node,obj){obj.Authority=this.getChildValue(node);},"RangeOfValues":function(node,obj){obj.RangeOfValues={};this.readChildNodes(node,obj.RangeOfValues);},"MinValue":function(node,obj){var attrs=node.attributes;var value={};for(var i=0,len=attrs.length;i<len;++i){value[attrs[i].name]=attrs[i].nodeValue;}
+value.value=this.getChildValue(node);obj.MinValue=value;},"MaxValue":function(node,obj){var attrs=node.attributes;var value={};for(var i=0,len=attrs.length;i<len;++i){value[attrs[i].name]=attrs[i].nodeValue;}
+value.value=this.getChildValue(node);obj.MaxValue=value;}}},write:function(options){var node=this.writeNode("csw:GetDomain",options);return OpenLayers.Format.XML.prototype.write.apply(this,[node]);},writers:{"csw":{"GetDomain":function(options){var node=this.createElementNSPlus("csw:GetDomain",{attributes:{service:"CSW",version:this.version}});if(options.PropertyName||this.PropertyName){this.writeNode("csw:PropertyName",options.PropertyName||this.PropertyName,node);}else if(options.ParameterName||this.ParameterName){this.writeNode("csw:ParameterName",options.ParameterName||this.ParameterName,node);}
+this.readChildNodes(node,options);return node;},"PropertyName":function(value){var node=this.createElementNSPlus("csw:PropertyName",{value:value});return node;},"ParameterName":function(value){var node=this.createElementNSPlus("csw:ParameterName",{value:value});return node;}}},CLASS_NAME:"OpenLayers.Format.CSWGetDomain.v2_0_2"});OpenLayers.Strategy.Cluster=OpenLayers.Class(OpenLayers.Strategy,{distance:20,threshold:null,features:null,clusters:null,clustering:false,resolution:null,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"beforefeaturesadded":this.cacheFeatures,"moveend":this.cluster,scope:this});}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.clearCache();this.layer.events.un({"beforefeaturesadded":this.cacheFeatures,"moveend":this.cluster,scope:this});}
+return deactivated;},cacheFeatures:function(event){var propagate=true;if(!this.clustering){this.clearCache();this.features=event.features;this.cluster();propagate=false;}
+return propagate;},clearCache:function(){this.features=null;},cluster:function(event){if((!event||event.zoomChanged)&&this.features){var resolution=this.layer.map.getResolution();if(resolution!=this.resolution||!this.clustersExist()){this.resolution=resolution;var clusters=[];var feature,clustered,cluster;for(var i=0;i<this.features.length;++i){feature=this.features[i];if(feature.geometry){clustered=false;for(var j=clusters.length-1;j>=0;--j){cluster=clusters[j];if(this.shouldCluster(cluster,feature)){this.addToCluster(cluster,feature);clustered=true;break;}}
+if(!clustered){clusters.push(this.createCluster(this.features[i]));}}}
+this.layer.removeAllFeatures();if(clusters.length>0){if(this.threshold>1){var clone=clusters.slice();clusters=[];var candidate;for(var i=0,len=clone.length;i<len;++i){candidate=clone[i];if(candidate.attributes.count<this.threshold){Array.prototype.push.apply(clusters,candidate.cluster);}else{clusters.push(candidate);}}}
+this.clustering=true;this.layer.addFeatures(clusters);this.clustering=false;}
+this.clusters=clusters;}}},clustersExist:function(){var exist=false;if(this.clusters&&this.clusters.length>0&&this.clusters.length==this.layer.features.length){exist=true;for(var i=0;i<this.clusters.length;++i){if(this.clusters[i]!=this.layer.features[i]){exist=false;break;}}}
+return exist;},shouldCluster:function(cluster,feature){var cc=cluster.geometry.getBounds().getCenterLonLat();var fc=feature.geometry.getBounds().getCenterLonLat();var distance=(Math.sqrt(Math.pow((cc.lon-fc.lon),2)+Math.pow((cc.lat-fc.lat),2))/this.resolution);return(distance<=this.distance);},addToCluster:function(cluster,feature){cluster.cluster.push(feature);cluster.attributes.count+=1;},createCluster:function(feature){var center=feature.geometry.getBounds().getCenterLonLat();var cluster=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(center.lon,center.lat),{count:1});cluster.cluster=[feature];return cluster;},CLASS_NAME:"OpenLayers.Strategy.Cluster"});OpenLayers.Strategy.Filter=OpenLayers.Class(OpenLayers.Strategy,{filter:null,cache:null,caching:false,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.apply(this,arguments);if(activated){this.cache=[];this.layer.events.on({"beforefeaturesadded":this.handleAdd,"beforefeaturesremoved":this.handleRemove,scope:this});}
+return activated;},deactivate:function(){this.cache=null;if(this.layer&&this.layer.events){this.layer.events.un({"beforefeaturesadded":this.handleAdd,"beforefeaturesremoved":this.handleRemove,scope:this});}
+return OpenLayers.Strategy.prototype.deactivate.apply(this,arguments);},handleAdd:function(event){if(!this.caching&&this.filter){var features=event.features;event.features=[];var feature;for(var i=0,ii=features.length;i<ii;++i){feature=features[i];if(this.filter.evaluate(feature)){event.features.push(feature);}else{this.cache.push(feature);}}}},handleRemove:function(event){if(!this.caching){this.cache=[];}},setFilter:function(filter){this.filter=filter;var previousCache=this.cache;this.cache=[];this.handleAdd({features:this.layer.features});if(this.cache.length>0){this.caching=true;this.layer.removeFeatures(this.cache.slice());this.caching=false;}
+if(previousCache.length>0){var event={features:previousCache};this.handleAdd(event);if(event.features.length>0){this.caching=true;this.layer.addFeatures(event.features);this.caching=false;}}},CLASS_NAME:"OpenLayers.Strategy.Filter"});OpenLayers.Protocol.SOS=function(options){options=OpenLayers.Util.applyDefaults(options,OpenLayers.Protocol.SOS.DEFAULTS);var cls=OpenLayers.Protocol.SOS["v"+options.version.replace(/\./g,"_")];if(!cls){throw"Unsupported SOS version: "+options.version;}
+return new cls(options);};OpenLayers.Protocol.SOS.DEFAULTS={"version":"1.0.0"};OpenLayers.Format.GeoRSS=OpenLayers.Class(OpenLayers.Format.XML,{rssns:"http://backend.userland.com/rss2",featureNS:"http://mapserver.gis.umn.edu/mapserver",georssns:"http://www.georss.org/georss",geons:"http://www.w3.org/2003/01/geo/wgs84_pos#",featureTitle:"Untitled",featureDescription:"No Description",gmlParser:null,xy:false,createGeometryFromItem:function(item){var point=this.getElementsByTagNameNS(item,this.georssns,"point");var lat=this.getElementsByTagNameNS(item,this.geons,'lat');var lon=this.getElementsByTagNameNS(item,this.geons,'long');var line=this.getElementsByTagNameNS(item,this.georssns,"line");var polygon=this.getElementsByTagNameNS(item,this.georssns,"polygon");var where=this.getElementsByTagNameNS(item,this.georssns,"where");var box=this.getElementsByTagNameNS(item,this.georssns,"box");if(point.length>0||(lat.length>0&&lon.length>0)){var location;if(point.length>0){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s+/);if(location.length!=2){location=OpenLayers.String.trim(point[0].firstChild.nodeValue).split(/\s*,\s*/);}}else{location=[parseFloat(lat[0].firstChild.nodeValue),parseFloat(lon[0].firstChild.nodeValue)];}
+var geometry=new OpenLayers.Geometry.Point(parseFloat(location[1]),parseFloat(location[0]));}else if(line.length>0){var coords=OpenLayers.String.trim(this.concatChildValues(line[0])).split(/\s+/);var components=[];var point;for(var i=0,len=coords.length;i<len;i+=2){point=new OpenLayers.Geometry.Point(parseFloat(coords[i+1]),parseFloat(coords[i]));components.push(point);}
+geometry=new OpenLayers.Geometry.LineString(components);}else if(polygon.length>0){var coords=OpenLayers.String.trim(this.concatChildValues(polygon[0])).split(/\s+/);var components=[];var point;for(var i=0,len=coords.length;i<len;i+=2){point=new OpenLayers.Geometry.Point(parseFloat(coords[i+1]),parseFloat(coords[i]));components.push(point);}
+geometry=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]);}else if(where.length>0){if(!this.gmlParser){this.gmlParser=new OpenLayers.Format.GML({'xy':this.xy});}
+var feature=this.gmlParser.parseFeature(where[0]);geometry=feature.geometry;}else if(box.length>0){var coords=OpenLayers.String.trim(box[0].firstChild.nodeValue).split(/\s+/);var components=[];var point;if(coords.length>3){point=new OpenLayers.Geometry.Point(parseFloat(coords[1]),parseFloat(coords[0]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[1]),parseFloat(coords[2]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[3]),parseFloat(coords[2]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[3]),parseFloat(coords[0]));components.push(point);point=new OpenLayers.Geometry.Point(parseFloat(coords[1]),parseFloat(coords[0]));components.push(point);}
+geometry=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]);}
+if(geometry&&this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}
+return geometry;},createFeatureFromItem:function(item){var geometry=this.createGeometryFromItem(item);var title=this.getChildValue(item,"*","title",this.featureTitle);var description=this.getChildValue(item,"*","description",this.getChildValue(item,"*","content",this.getChildValue(item,"*","summary",this.featureDescription)));var link=this.getChildValue(item,"*","link");if(!link){try{link=this.getElementsByTagNameNS(item,"*","link")[0].getAttribute("href");}catch(e){link=null;}}
+var id=this.getChildValue(item,"*","id",null);var data={"title":title,"description":description,"link":link};var feature=new OpenLayers.Feature.Vector(geometry,data);feature.fid=id;return feature;},getChildValue:function(node,nsuri,name,def){var value;var eles=this.getElementsByTagNameNS(node,nsuri,name);if(eles&&eles[0]&&eles[0].firstChild&&eles[0].firstChild.nodeValue){value=OpenLayers.Format.XML.prototype.getChildValue(eles[0]);}else{value=(def==undefined)?"":def;}
+return value;},read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);}
+var itemlist=null;itemlist=this.getElementsByTagNameNS(doc,'*','item');if(itemlist.length==0){itemlist=this.getElementsByTagNameNS(doc,'*','entry');}
+var numItems=itemlist.length;var features=new Array(numItems);for(var i=0;i<numItems;i++){features[i]=this.createFeatureFromItem(itemlist[i]);}
+return features;},write:function(features){var georss;if(OpenLayers.Util.isArray(features)){georss=this.createElementNS(this.rssns,"rss");for(var i=0,len=features.length;i<len;i++){georss.appendChild(this.createFeatureXML(features[i]));}}else{georss=this.createFeatureXML(features);}
+return OpenLayers.Format.XML.prototype.write.apply(this,[georss]);},createFeatureXML:function(feature){var geometryNode=this.buildGeometryNode(feature.geometry);var featureNode=this.createElementNS(this.rssns,"item");var titleNode=this.createElementNS(this.rssns,"title");titleNode.appendChild(this.createTextNode(feature.attributes.title?feature.attributes.title:""));var descNode=this.createElementNS(this.rssns,"description");descNode.appendChild(this.createTextNode(feature.attributes.description?feature.attributes.description:""));featureNode.appendChild(titleNode);featureNode.appendChild(descNode);if(feature.attributes.link){var linkNode=this.createElementNS(this.rssns,"link");linkNode.appendChild(this.createTextNode(feature.attributes.link));featureNode.appendChild(linkNode);}
+for(var attr in feature.attributes){if(attr=="link"||attr=="title"||attr=="description"){continue;}
+var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr;if(attr.search(":")!=-1){nodename=attr.split(":")[1];}
+var attrContainer=this.createElementNS(this.featureNS,"feature:"+nodename);attrContainer.appendChild(attrText);featureNode.appendChild(attrContainer);}
+featureNode.appendChild(geometryNode);return featureNode;},buildGeometryNode:function(geometry){if(this.internalProjection&&this.externalProjection){geometry=geometry.clone();geometry.transform(this.internalProjection,this.externalProjection);}
+var node;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){node=this.createElementNS(this.georssns,'georss:polygon');node.appendChild(this.buildCoordinatesNode(geometry.components[0]));}
+else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){node=this.createElementNS(this.georssns,'georss:line');node.appendChild(this.buildCoordinatesNode(geometry));}
+else if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){node=this.createElementNS(this.georssns,'georss:point');node.appendChild(this.buildCoordinatesNode(geometry));}else{throw"Couldn't parse "+geometry.CLASS_NAME;}
+return node;},buildCoordinatesNode:function(geometry){var points=null;if(geometry.components){points=geometry.components;}
+var path;if(points){var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i<numPoints;i++){parts[i]=points[i].y+" "+points[i].x;}
+path=parts.join(" ");}else{path=geometry.y+" "+geometry.x;}
+return this.createTextNode(path);},CLASS_NAME:"OpenLayers.Format.GeoRSS"});OpenLayers.Format.WPSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.0.0",CLASS_NAME:"OpenLayers.Format.WPSCapabilities"});OpenLayers.Format.WPSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{ows:"http://www.opengis.net/ows/1.1",wps:"http://www.opengis.net/wps/1.0.0",xlink:"http://www.w3.org/1999/xlink"},regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var capabilities={};this.readNode(data,capabilities);return capabilities;},readers:{"wps":{"Capabilities":function(node,obj){this.readChildNodes(node,obj);},"ProcessOfferings":function(node,obj){obj.processOfferings={};this.readChildNodes(node,obj.processOfferings);},"Process":function(node,processOfferings){var processVersion=this.getAttributeNS(node,this.namespaces.wps,"processVersion");var process={processVersion:processVersion};this.readChildNodes(node,process);processOfferings[process.identifier]=process;},"Languages":function(node,obj){obj.languages=[];this.readChildNodes(node,obj.languages);},"Default":function(node,languages){var language={isDefault:true};this.readChildNodes(node,language);languages.push(language);},"Supported":function(node,languages){var language={};this.readChildNodes(node,language);languages.push(language);}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.WPSCapabilities.v1_0_0"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerOrigin:null,pinchOrigin:null,currentCenter:null,autoActivate:true,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions);},activate:function(){var activated=OpenLayers.Control.prototype.activate.apply(this,arguments);if(activated){this.map.events.on({moveend:this.updateContainerOrigin,scope:this});this.updateContainerOrigin();}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.apply(this,arguments);if(this.map&&this.map.events){this.map.events.un({moveend:this.updateContainerOrigin,scope:this});}
+return deactivated;},updateContainerOrigin:function(){var container=this.map.layerContainerDiv;this.containerOrigin={x:parseInt(container.style.left,10),y:parseInt(container.style.top,10)};},pinchStart:function(evt,pinchData){this.pinchOrigin=evt.xy;this.currentCenter=evt.xy;},pinchMove:function(evt,pinchData){var scale=pinchData.scale;var containerOrigin=this.containerOrigin;var pinchOrigin=this.pinchOrigin;var current=evt.xy;var dx=Math.round((current.x-pinchOrigin.x)+(scale-1)*(containerOrigin.x-pinchOrigin.x));var dy=Math.round((current.y-pinchOrigin.y)+(scale-1)*(containerOrigin.y-pinchOrigin.y));this.applyTransform("translate("+dx+"px, "+dy+"px) scale("+scale+")");this.currentCenter=current;},applyTransform:function(transform){var style=this.map.layerContainerDiv.style;style['-webkit-transform']=transform;style['-moz-transform']=transform;},pinchDone:function(evt,start,last){this.applyTransform("");var zoom=this.map.getZoomForResolution(this.map.getResolution()/last.scale,true);if(zoom!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var resolution=this.map.getResolutionForZoom(zoom);var location=this.map.getLonLatFromPixel(this.pinchOrigin);var zoomPixel=this.currentCenter;var size=this.map.getSize();location.lon+=resolution*((size.w/2)-zoomPixel.x);location.lat-=resolution*((size.h/2)-zoomPixel.y);this.map.setCenter(location,zoom);}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Control.TouchNavigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,clickHandlerOptions:null,documentDrag:false,autoActivate:true,initialize:function(options){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.deactivate();if(this.dragPan){this.dragPan.destroy();}
+this.dragPan=null;if(this.pinchZoom){this.pinchZoom.destroy();delete this.pinchZoom;}
+OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.dragPan.activate();this.handlers.click.activate();this.pinchZoom.activate();return true;}
+return false;},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.dragPan.deactivate();this.handlers.click.deactivate();this.pinchZoom.deactivate();return true;}
+return false;},draw:function(){var clickCallbacks={click:this.defaultClick,dblclick:this.defaultDblClick};var clickOptions=OpenLayers.Util.extend({"double":true,stopDouble:true,pixelTolerance:2},this.clickHandlerOptions);this.handlers.click=new OpenLayers.Handler.Click(this,clickCallbacks,clickOptions);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.dragPan.draw();this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions));},defaultClick:function(evt){if(evt.lastTouches&&evt.lastTouches.length==2){this.map.zoomOut();}},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);},CLASS_NAME:"OpenLayers.Control.TouchNavigation"});OpenLayers.Style2=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,initialize:function(config){OpenLayers.Util.extend(this,config);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i=0,len=this.rules.length;i<len;i++){this.rules[i].destroy();}
+delete this.rules;},clone:function(){var config=OpenLayers.Util.extend({},this);if(this.rules){config.rules=[];for(var i=0,len=this.rules.length;i<len;++i){config.rules.push(this.rules[i].clone());}}
+return new OpenLayers.Style2(config);},CLASS_NAME:"OpenLayers.Style2"});OpenLayers.Layer.Boxes=OpenLayers.Class(OpenLayers.Layer.Markers,{initialize:function(name,options){OpenLayers.Layer.Markers.prototype.initialize.apply(this,arguments);},drawMarker:function(marker){var bounds=marker.bounds;var topleft=this.map.getLayerPxFromLonLat(new OpenLayers.LonLat(bounds.left,bounds.top));var botright=this.map.getLayerPxFromLonLat(new OpenLayers.LonLat(bounds.right,bounds.bottom));if(botright==null||topleft==null){marker.display(false);}else{var sz=new OpenLayers.Size(Math.max(1,botright.x-topleft.x),Math.max(1,botright.y-topleft.y));var markerDiv=marker.draw(topleft,sz);if(!marker.drawn){this.div.appendChild(markerDiv);marker.drawn=true;}}},removeMarker:function(marker){OpenLayers.Util.removeItem(this.markers,marker);if((marker.div!=null)&&(marker.div.parentNode==this.div)){this.div.removeChild(marker.div);}},CLASS_NAME:"OpenLayers.Layer.Boxes"});OpenLayers.Format.WFSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.WFSCapabilities.v1,{initialize:function(options){OpenLayers.Format.WFSCapabilities.v1.prototype.initialize.apply(this,[options]);},read_cap_Service:function(capabilities,node){var service={};this.runChildNodes(service,node);capabilities.service=service;},read_cap_Fees:function(service,node){var fees=this.getChildValue(node);if(fees&&fees.toLowerCase()!="none"){service.fees=fees;}},read_cap_AccessConstraints:function(service,node){var constraints=this.getChildValue(node);if(constraints&&constraints.toLowerCase()!="none"){service.accessConstraints=constraints;}},read_cap_OnlineResource:function(service,node){var onlineResource=this.getChildValue(node);if(onlineResource&&onlineResource.toLowerCase()!="none"){service.onlineResource=onlineResource;}},read_cap_Keywords:function(service,node){var keywords=this.getChildValue(node);if(keywords&&keywords.toLowerCase()!="none"){service.keywords=keywords.split(', ');}},read_cap_Capability:function(capabilities,node){var capability={};this.runChildNodes(capability,node);capabilities.capability=capability;},read_cap_Request:function(obj,node){var request={};this.runChildNodes(request,node);obj.request=request;},read_cap_GetFeature:function(request,node){var getfeature={href:{},formats:[]};this.runChildNodes(getfeature,node);request.getfeature=getfeature;},read_cap_ResultFormat:function(obj,node){var children=node.childNodes;var childNode;for(var i=0;i<children.length;i++){childNode=children[i];if(childNode.nodeType==1){obj.formats.push(childNode.nodeName);}}},read_cap_DCPType:function(obj,node){this.runChildNodes(obj,node);},read_cap_HTTP:function(obj,node){this.runChildNodes(obj.href,node);},read_cap_Get:function(obj,node){obj.get=node.getAttribute("onlineResource");},read_cap_Post:function(obj,node){obj.post=node.getAttribute("onlineResource");},read_cap_SRS:function(obj,node){var srs=this.getChildValue(node);if(srs){obj.srs=srs;}},CLASS_NAME:"OpenLayers.Format.WFSCapabilities.v1_0_0"});OpenLayers.Format.WMSCapabilities=OpenLayers.Class(OpenLayers.Format.XML.VersionedOGC,{defaultVersion:"1.1.1",profile:null,CLASS_NAME:"OpenLayers.Format.WMSCapabilities"});OpenLayers.Format.WMSCapabilities.v1=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{wms:"http://www.opengis.net/wms",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance"},defaultPrefix:"wms",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var raw=data;if(data&&data.nodeType==9){data=data.documentElement;}
+var capabilities={};this.readNode(data,capabilities);if(capabilities.service===undefined){var parser=new OpenLayers.Format.OGCExceptionReport();capabilities.error=parser.read(raw);}else{this.postProcessLayers(capabilities);}
+return capabilities;},postProcessLayers:function(capabilities){if(capabilities.capability){capabilities.capability.layers=[];var layers=capabilities.capability.nestedLayers;for(var i=0,len=layers.length;i<len;++i){var layer=layers[i];this.processLayer(capabilities.capability,layer);}}},processLayer:function(capability,layer,parentLayer){if(layer.formats===undefined){layer.formats=capability.request.getmap.formats;}
+var i,len;if(parentLayer){layer.styles=layer.styles.concat(parentLayer.styles);var attributes=["queryable","cascaded","fixedWidth","fixedHeight","opaque","noSubsets","llbbox","minScale","maxScale","attribution"];var complexAttr=["srs","bbox","dimensions","authorityURLs"];var key;for(i=0,len=attributes.length;i<len;i++){key=attributes[i];if(key in parentLayer){if(layer[key]==null){layer[key]=parentLayer[key];}
+if(layer[key]==null){var intAttr=["cascaded","fixedWidth","fixedHeight"];var boolAttr=["queryable","opaque","noSubsets"];if(OpenLayers.Util.indexOf(intAttr,key)!=-1){layer[key]=0;}
+if(OpenLayers.Util.indexOf(boolAttr,key)!=-1){layer[key]=false;}}}}
+for(i=0,len=complexAttr.length;i<len;i++){key=complexAttr[i];layer[key]=OpenLayers.Util.applyDefaults(layer[key],parentLayer[key]);}}
+for(i=0,len=layer.nestedLayers.length;i<len;i++){var childLayer=layer.nestedLayers[i];this.processLayer(capability,childLayer,layer);}
+if(layer.name){capability.layers.push(layer);}},readers:{"wms":{"Service":function(node,obj){obj.service={};this.readChildNodes(node,obj.service);},"Name":function(node,obj){obj.name=this.getChildValue(node);},"Title":function(node,obj){obj.title=this.getChildValue(node);},"Abstract":function(node,obj){obj["abstract"]=this.getChildValue(node);},"BoundingBox":function(node,obj){var bbox={};bbox.bbox=[parseFloat(node.getAttribute("minx")),parseFloat(node.getAttribute("miny")),parseFloat(node.getAttribute("maxx")),parseFloat(node.getAttribute("maxy"))];var res={x:parseFloat(node.getAttribute("resx")),y:parseFloat(node.getAttribute("resy"))};if(!(isNaN(res.x)&&isNaN(res.y))){bbox.res=res;}
+return bbox;},"OnlineResource":function(node,obj){obj.href=this.getAttributeNS(node,this.namespaces.xlink,"href");},"ContactInformation":function(node,obj){obj.contactInformation={};this.readChildNodes(node,obj.contactInformation);},"ContactPersonPrimary":function(node,obj){obj.personPrimary={};this.readChildNodes(node,obj.personPrimary);},"ContactPerson":function(node,obj){obj.person=this.getChildValue(node);},"ContactOrganization":function(node,obj){obj.organization=this.getChildValue(node);},"ContactPosition":function(node,obj){obj.position=this.getChildValue(node);},"ContactAddress":function(node,obj){obj.contactAddress={};this.readChildNodes(node,obj.contactAddress);},"AddressType":function(node,obj){obj.type=this.getChildValue(node);},"Address":function(node,obj){obj.address=this.getChildValue(node);},"City":function(node,obj){obj.city=this.getChildValue(node);},"StateOrProvince":function(node,obj){obj.stateOrProvince=this.getChildValue(node);},"PostCode":function(node,obj){obj.postcode=this.getChildValue(node);},"Country":function(node,obj){obj.country=this.getChildValue(node);},"ContactVoiceTelephone":function(node,obj){obj.phone=this.getChildValue(node);},"ContactFacsimileTelephone":function(node,obj){obj.fax=this.getChildValue(node);},"ContactElectronicMailAddress":function(node,obj){obj.email=this.getChildValue(node);},"Fees":function(node,obj){var fees=this.getChildValue(node);if(fees&&fees.toLowerCase()!="none"){obj.fees=fees;}},"AccessConstraints":function(node,obj){var constraints=this.getChildValue(node);if(constraints&&constraints.toLowerCase()!="none"){obj.accessConstraints=constraints;}},"Capability":function(node,obj){obj.capability={nestedLayers:[]};this.readChildNodes(node,obj.capability);},"Request":function(node,obj){obj.request={};this.readChildNodes(node,obj.request);},"GetCapabilities":function(node,obj){obj.getcapabilities={formats:[]};this.readChildNodes(node,obj.getcapabilities);},"Format":function(node,obj){if(OpenLayers.Util.isArray(obj.formats)){obj.formats.push(this.getChildValue(node));}else{obj.format=this.getChildValue(node);}},"DCPType":function(node,obj){this.readChildNodes(node,obj);},"HTTP":function(node,obj){this.readChildNodes(node,obj);},"Get":function(node,obj){obj.get={};this.readChildNodes(node,obj.get);if(!obj.href){obj.href=obj.get.href;}},"Post":function(node,obj){obj.post={};this.readChildNodes(node,obj.post);if(!obj.href){obj.href=obj.get.href;}},"GetMap":function(node,obj){obj.getmap={formats:[]};this.readChildNodes(node,obj.getmap);},"GetFeatureInfo":function(node,obj){obj.getfeatureinfo={formats:[]};this.readChildNodes(node,obj.getfeatureinfo);},"Exception":function(node,obj){obj.exception={formats:[]};this.readChildNodes(node,obj.exception);},"Layer":function(node,obj){var attrNode=node.getAttributeNode("queryable");var queryable=(attrNode&&attrNode.specified)?node.getAttribute("queryable"):null;attrNode=node.getAttributeNode("cascaded");var cascaded=(attrNode&&attrNode.specified)?node.getAttribute("cascaded"):null;attrNode=node.getAttributeNode("opaque");var opaque=(attrNode&&attrNode.specified)?node.getAttribute('opaque'):null;var noSubsets=node.getAttribute('noSubsets');var fixedWidth=node.getAttribute('fixedWidth');var fixedHeight=node.getAttribute('fixedHeight');var layer={nestedLayers:[],styles:[],srs:{},metadataURLs:[],bbox:{},dimensions:{},authorityURLs:{},identifiers:{},keywords:[],queryable:(queryable&&queryable!=="")?(queryable==="1"||queryable==="true"):null,cascaded:(cascaded!==null)?parseInt(cascaded):null,opaque:opaque?(opaque==="1"||opaque==="true"):null,noSubsets:(noSubsets!==null)?(noSubsets==="1"||noSubsets==="true"):null,fixedWidth:(fixedWidth!=null)?parseInt(fixedWidth):null,fixedHeight:(fixedHeight!=null)?parseInt(fixedHeight):null};obj.nestedLayers.push(layer);this.readChildNodes(node,layer);if(layer.name){var parts=layer.name.split(":");if(parts.length>0){layer.prefix=parts[0];}}},"Attribution":function(node,obj){obj.attribution={};this.readChildNodes(node,obj.attribution);},"LogoURL":function(node,obj){obj.logo={width:node.getAttribute("width"),height:node.getAttribute("height")};this.readChildNodes(node,obj.logo);},"Style":function(node,obj){var style={};obj.styles.push(style);this.readChildNodes(node,style);},"LegendURL":function(node,obj){var legend={width:node.getAttribute("width"),height:node.getAttribute("height")};obj.legend=legend;this.readChildNodes(node,legend);},"MetadataURL":function(node,obj){var metadataURL={type:node.getAttribute("type")};obj.metadataURLs.push(metadataURL);this.readChildNodes(node,metadataURL);},"DataURL":function(node,obj){obj.dataURL={};this.readChildNodes(node,obj.dataURL);},"FeatureListURL":function(node,obj){obj.featureListURL={};this.readChildNodes(node,obj.featureListURL);},"AuthorityURL":function(node,obj){var name=node.getAttribute("name");var authority={};this.readChildNodes(node,authority);obj.authorityURLs[name]=authority.href;},"Identifier":function(node,obj){var authority=node.getAttribute("authority");obj.identifiers[authority]=this.getChildValue(node);},"KeywordList":function(node,obj){this.readChildNodes(node,obj);},"SRS":function(node,obj){obj.srs[this.getChildValue(node)]=true;}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1"});OpenLayers.Format.WMSCapabilities.v1_3=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{"wms":OpenLayers.Util.applyDefaults({"WMS_Capabilities":function(node,obj){this.readChildNodes(node,obj);},"LayerLimit":function(node,obj){obj.layerLimit=parseInt(this.getChildValue(node));},"MaxWidth":function(node,obj){obj.maxWidth=parseInt(this.getChildValue(node));},"MaxHeight":function(node,obj){obj.maxHeight=parseInt(this.getChildValue(node));},"BoundingBox":function(node,obj){var bbox=OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this,[node,obj]);bbox.srs=node.getAttribute("CRS");obj.bbox[bbox.srs]=bbox;},"CRS":function(node,obj){this.readers.wms.SRS.apply(this,[node,obj]);},"EX_GeographicBoundingBox":function(node,obj){obj.llbbox=[];this.readChildNodes(node,obj.llbbox);},"westBoundLongitude":function(node,obj){obj[0]=this.getChildValue(node);},"eastBoundLongitude":function(node,obj){obj[2]=this.getChildValue(node);},"southBoundLatitude":function(node,obj){obj[1]=this.getChildValue(node);},"northBoundLatitude":function(node,obj){obj[3]=this.getChildValue(node);},"MinScaleDenominator":function(node,obj){obj.maxScale=parseFloat(this.getChildValue(node)).toPrecision(16);},"MaxScaleDenominator":function(node,obj){obj.minScale=parseFloat(this.getChildValue(node)).toPrecision(16);},"Dimension":function(node,obj){var name=node.getAttribute("name").toLowerCase();var dim={name:name,units:node.getAttribute("units"),unitsymbol:node.getAttribute("unitSymbol"),nearestVal:node.getAttribute("nearestValue")==="1",multipleVal:node.getAttribute("multipleValues")==="1","default":node.getAttribute("default")||"",current:node.getAttribute("current")==="1",values:this.getChildValue(node).split(",")};obj.dimensions[dim.name]=dim;},"Keyword":function(node,obj){var keyword={value:this.getChildValue(node),vocabulary:node.getAttribute("vocabulary")};if(obj.keywords){obj.keywords.push(keyword);}}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"]),"sld":{"UserDefinedSymbolization":function(node,obj){this.readers.wms.UserDefinedSymbolization.apply(this,[node,obj]);obj.userSymbols.inlineFeature=parseInt(node.getAttribute("InlineFeature"))==1;obj.userSymbols.remoteWCS=parseInt(node.getAttribute("RemoteWCS"))==1;},"DescribeLayer":function(node,obj){this.readers.wms.DescribeLayer.apply(this,[node,obj]);},"GetLegendGraphic":function(node,obj){this.readers.wms.GetLegendGraphic.apply(this,[node,obj]);}}},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3"});OpenLayers.Layer.Yahoo=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:0,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.00002145767211914062,0.00001072883605957031],type:null,wrapDateLine:true,sphericalMercator:false,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();}},loadMapObject:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject=new YMap(this.div,this.type,size);this.mapObject.disableKeyControls();this.mapObject.disableDragMap();if(!this.mapObject.moveByXY||(typeof this.mapObject.moveByXY!="function")){this.dragPanMapObject=null;}}catch(e){}},onMapResize:function(){try{var size=this.getMapObjectSizeFromOLSize(this.map.getSize());this.mapObject.resizeTo(size);}catch(e){}},setMap:function(map){OpenLayers.Layer.EventPane.prototype.setMap.apply(this,arguments);this.map.events.register("moveend",this,this.fixYahooEventPane);},fixYahooEventPane:function(){var yahooEventPane=OpenLayers.Util.getElement("ygddfdiv");if(yahooEventPane!=null){if(yahooEventPane.parentNode!=null){yahooEventPane.parentNode.removeChild(yahooEventPane);}
+this.map.events.unregister("moveend",this,this.fixYahooEventPane);}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':'Yahoo','layerLib':'Yahoo'});},getOLZoomFromMapObjectZoom:function(moZoom){var zoom=null;if(moZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getOLZoomFromMapObjectZoom.apply(this,[moZoom]);zoom=18-zoom;}
+return zoom;},getMapObjectZoomFromOLZoom:function(olZoom){var zoom=null;if(olZoom!=null){zoom=OpenLayers.Layer.FixedZoomLevels.prototype.getMapObjectZoomFromOLZoom.apply(this,[olZoom]);zoom=18-zoom;}
+return zoom;},setMapObjectCenter:function(center,zoom){this.mapObject.drawZoomAndCenter(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCenterLatLon();},dragPanMapObject:function(dX,dY){this.mapObject.moveByXY({'x':-dX,'y':dY});},getMapObjectZoom:function(){return this.mapObject.getZoomLevel();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){return this.mapObject.convertXYLatLon(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.convertLatLonXY(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lon:moLonLat.Lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.Lon,moLonLat.Lat).lat:moLonLat.Lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var yLatLong;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);yLatLong=new YGeoPoint(lonlat.lat,lonlat.lon);}else{yLatLong=new YGeoPoint(lat,lon);}
+return yLatLong;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new YCoordPoint(x,y);},getMapObjectSizeFromOLSize:function(olSize){return new YSize(olSize.w,olSize.h);},CLASS_NAME:"OpenLayers.Layer.Yahoo"});OpenLayers.Layer.Zoomify=OpenLayers.Class(OpenLayers.Layer.Grid,{url:null,size:null,isBaseLayer:true,standardTileSize:256,tileOriginCorner:"tl",numberOfTiers:0,tileCountUpToTier:new Array(),tierSizeInTiles:new Array(),tierImageSize:new Array(),initialize:function(name,url,size,options){this.initializeZoomify(size);var newArguments=[];newArguments.push(name,url,size,{},options);OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},initializeZoomify:function(size){var imageSize=size.clone();var tiles=new OpenLayers.Size(Math.ceil(imageSize.w/this.standardTileSize),Math.ceil(imageSize.h/this.standardTileSize));this.tierSizeInTiles.push(tiles);this.tierImageSize.push(imageSize);while(imageSize.w>this.standardTileSize||imageSize.h>this.standardTileSize){imageSize=new OpenLayers.Size(Math.floor(imageSize.w/2),Math.floor(imageSize.h/2));tiles=new OpenLayers.Size(Math.ceil(imageSize.w/this.standardTileSize),Math.ceil(imageSize.h/this.standardTileSize));this.tierSizeInTiles.push(tiles);this.tierImageSize.push(imageSize);}
+this.tierSizeInTiles.reverse();this.tierImageSize.reverse();this.numberOfTiers=this.tierSizeInTiles.length;this.tileCountUpToTier[0]=0;for(var i=1;i<this.numberOfTiers;i++){this.tileCountUpToTier.push(this.tierSizeInTiles[i-1].w*this.tierSizeInTiles[i-1].h+
+this.tileCountUpToTier[i-1]);}},destroy:function(){OpenLayers.Layer.Grid.prototype.destroy.apply(this,arguments);this.tileCountUpToTier.length=0;this.tierSizeInTiles.length=0;this.tierImageSize.length=0;},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Zoomify(this.name,this.url,this.size,this.options);}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){bounds=this.adjustBounds(bounds);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((this.tileOrigin.lat-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var tileIndex=x+y*this.tierSizeInTiles[z].w+this.tileCountUpToTier[z];var path="TileGroup"+Math.floor((tileIndex)/256)+"/"+z+"-"+x+"-"+y+".jpg";var url=this.url;if(OpenLayers.Util.isArray(url)){url=this.selectUrl(path,url);}
+return url+path;},getImageSize:function(){if(arguments.length>0){var bounds=this.adjustBounds(arguments[0]);var res=this.map.getResolution();var x=Math.round((bounds.left-this.tileOrigin.lon)/(res*this.tileSize.w));var y=Math.round((this.tileOrigin.lat-bounds.top)/(res*this.tileSize.h));var z=this.map.getZoom();var w=this.standardTileSize;var h=this.standardTileSize;if(x==this.tierSizeInTiles[z].w-1){var w=this.tierImageSize[z].w%this.standardTileSize;};if(y==this.tierSizeInTiles[z].h-1){var h=this.tierImageSize[z].h%this.standardTileSize;};return(new OpenLayers.Size(w,h));}else{return this.tileSize;}},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.tileOrigin=new OpenLayers.LonLat(this.map.maxExtent.left,this.map.maxExtent.top);},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-origin.lon;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=origin.lon+tilecol*tilelon;var offsetlat=origin.lat-bounds.top+tilelat;var tilerow=Math.floor(offsetlat/tilelat)-this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=tilerowremain*this.tileSize.h;var tileoffsetlat=origin.lat-tilelat*tilerow;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},CLASS_NAME:"OpenLayers.Layer.Zoomify"});OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(containerID){if(!this.supported()){return;}
+if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);var style=document.createStyleSheet();var shapes=['shape','rect','oval','fill','stroke','imagedata','group','textbox'];for(var i=0,len=shapes.length;i<len;i++){style.addRule('olv\\:'+shapes[i],"behavior: url(#default#VML); "+"position: absolute; display: inline-block;");}}
+OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},supported:function(){return!!(document.namespaces);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=(extent.left/resolution)|0;var top=(extent.top/resolution-this.size.h)|0;if(resolutionChanged||!this.offset){this.offset={x:left,y:top};left=0;top=0;}else{left=left-this.offset.x;top=top-this.offset.y;}
+var org=left+" "+top;this.root.coordorigin=org;var roots=[this.root,this.vectorRoot,this.textRoot];var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];var size=this.size.w+" "+this.size.h;root.coordsize=size;}
+this.root.style.flip="y";return true;},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);var roots=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot];var w=this.size.w+"px";var h=this.size.h+"px";var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];root.style.width=w;root.style.height=h;}},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="olv:rect";}else if(this.isComplexSymbol(style.graphicName)){nodeType="olv:shape";}else{nodeType="olv:oval";}
+break;case"OpenLayers.Geometry.Rectangle":nodeType="olv:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="olv:shape";break;default:break;}
+return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;var fillColor=style.fillColor;if(node._geometryClass==="OpenLayers.Geometry.Point"){if(style.externalGraphic){options.isFilled=true;if(style.graphicTitle){node.title=style.graphicTitle;}
+var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=(((geometry.x/resolution-this.offset.x)+xOffset)|0)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)-(yOffset+height))|0)+"px";node.style.width=width+"px";node.style.height=height+"px";node.style.flip="y";fillColor="none";options.isStroked=false;}else if(this.isComplexSymbol(style.graphicName)){var cache=this.importSymbol(style.graphicName);node.path=cache.path;node.coordorigin=cache.left+","+cache.bottom;var size=cache.size;node.coordsize=size+","+size;this.drawCircle(node,geometry,style.pointRadius);node.style.flip="y";}else{this.drawCircle(node,geometry,style.pointRadius);}}
+if(options.isFilled){node.fillcolor=fillColor;}else{node.filled="false";}
+var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('olv:fill',node.id+"_fill");}
+fill.opacity=style.fillOpacity;if(node._geometryClass==="OpenLayers.Geometry.Point"&&style.externalGraphic){if(style.graphicOpacity){fill.opacity=style.graphicOpacity;}
+fill.src=style.externalGraphic;fill.type="frame";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";}}
+if(fill.parentNode!=node){node.appendChild(fill);}}
+var rotation=style.rotation;if((rotation!==undefined||node._rotation!==undefined)){node._rotation=rotation;if(style.externalGraphic){this.graphicRotate(node,xOffset,yOffset,style);fill.opacity=0;}else if(node._geometryClass==="OpenLayers.Geometry.Point"){node.style.rotation=rotation||0;}}
+var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){node.stroked=false;if(stroke){stroke.on=false;}}else{if(!stroke){stroke=this.createNode('olv:stroke',node.id+"_stroke");node.appendChild(stroke);}
+stroke.on=true;stroke.color=style.strokeColor;stroke.weight=style.strokeWidth+"px";stroke.opacity=style.strokeOpacity;stroke.endcap=style.strokeLinecap=='butt'?'flat':(style.strokeLinecap||'round');if(style.strokeDashstyle){stroke.dashstyle=this.dashStyle(style);}}
+if(style.cursor!="inherit"&&style.cursor!=null){node.style.cursor=style.cursor;}
+return node;},graphicRotate:function(node,xOffset,yOffset,style){var style=style||node._style;var rotation=style.rotation||0;var aspectRatio,size;if(!(style.graphicWidth&&style.graphicHeight)){var img=new Image();img.onreadystatechange=OpenLayers.Function.bind(function(){if(img.readyState=="complete"||img.readyState=="interactive"){aspectRatio=img.width/img.height;size=Math.max(style.pointRadius*2,style.graphicWidth||0,style.graphicHeight||0);xOffset=xOffset*aspectRatio;style.graphicWidth=size*aspectRatio;style.graphicHeight=size;this.graphicRotate(node,xOffset,yOffset,style);}},this);img.src=style.externalGraphic;return;}else{size=Math.max(style.graphicWidth,style.graphicHeight);aspectRatio=style.graphicWidth/style.graphicHeight;}
+var width=Math.round(style.graphicWidth||size*aspectRatio);var height=Math.round(style.graphicHeight||size);node.style.width=width+"px";node.style.height=height+"px";var image=document.getElementById(node.id+"_image");if(!image){image=this.createNode("olv:imagedata",node.id+"_image");node.appendChild(image);}
+image.style.width=width+"px";image.style.height=height+"px";image.src=style.externalGraphic;image.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader("+"src='', sizingMethod='scale')";var rot=rotation*Math.PI/180;var sintheta=Math.sin(rot);var costheta=Math.cos(rot);var filter="progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')\n";var opacity=style.graphicOpacity||style.fillOpacity;if(opacity&&opacity!=1){filter+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+
+opacity+")\n";}
+node.style.filter=filter;var centerPoint=new OpenLayers.Geometry.Point(-xOffset,-yOffset);var imgBox=new OpenLayers.Bounds(0,0,width,height).toGeometry();imgBox.rotate(style.rotation,centerPoint);var imgBounds=imgBox.getBounds();node.style.left=Math.round(parseInt(node.style.left)+imgBounds.left)+"px";node.style.top=Math.round(parseInt(node.style.top)-imgBounds.bottom)+"px";},postDraw:function(node){node.style.visibility="visible";var fillColor=node._style.fillColor;var strokeColor=node._style.strokeColor;if(fillColor=="none"&&node.fillcolor!=fillColor){node.fillcolor=fillColor;}
+if(strokeColor=="none"&&node.strokecolor!=strokeColor){node.strokecolor=strokeColor;}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution-this.offset.x)|0,(bbox.bottom/resolution-this.offset.y)|0,(bbox.right/resolution-this.offset.x)|0,(bbox.top/resolution-this.offset.y)|0);node.style.left=scaledBox.left+"px";node.style.top=scaledBox.top+"px";node.style.width=scaledBox.getWidth()+"px";node.style.height=scaledBox.getHeight()+"px";node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},dashStyle:function(style){var dash=style.strokeDashstyle;switch(dash){case'solid':case'dot':case'dash':case'dashdot':case'longdash':case'longdashdot':return dash;default:var parts=dash.split(/[ ,]/);if(parts.length==2){if(1*parts[0]>=2*parts[1]){return"longdash";}
+return(parts[0]==1||parts[1]==1)?"dot":"dash";}else if(parts.length==4){return(1*parts[0]>=2*parts[1])?"longdashdot":"dashdot";}
+return"solid";}},createNode:function(type,id){var node=document.createElement(type);if(id){node.id=id;}
+node.unselectable='on';node.onselectstart=OpenLayers.Function.False;return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);}
+var nodeName=node.nodeName;splitIndex=nodeName.indexOf(":");if(splitIndex!=-1){nodeName=nodeName.substr(splitIndex+1);}
+return(subType==nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"olv:group");},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){if(!isNaN(geometry.x)&&!isNaN(geometry.y)){var resolution=this.getResolution();node.style.left=(((geometry.x/resolution-this.offset.x)|0)-radius)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)|0)-radius)+"px";var diameter=radius*2;node.style.width=diameter+"px";node.style.height=diameter+"px";return node;}
+return false;},drawLineString:function(node,geometry){return this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){return this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var numComponents=geometry.components.length;var parts=new Array(numComponents);var comp,x,y;for(var i=0;i<numComponents;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;parts[i]=" "+x+","+y+" l ";}
+var end=(closeLine)?" x e":" e";node.path="m"+parts.join("")+end;return node;},drawPolygon:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var j,jj,points,area,first,second,i,ii,comp,pathComp,x,y;for(j=0,jj=geometry.components.length;j<jj;j++){path.push("m");points=geometry.components[j].components;area=(j===0);first=null;second=null;for(i=0,ii=points.length;i<ii;i++){comp=points[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;pathComp=" "+x+","+y;path.push(pathComp);if(i==0){path.push(" l");}
+if(!area){if(!first){first=pathComp;}else if(first!=pathComp){if(!second){second=pathComp;}else if(second!=pathComp){area=true;}}}}
+path.push(area?" x ":" ");}
+path.push("e");node.path=path.join("");return node;},drawRectangle:function(node,geometry){var resolution=this.getResolution();node.style.left=((geometry.x/resolution-this.offset.x)|0)+"px";node.style.top=((geometry.y/resolution-this.offset.y)|0)+"px";node.style.width=((geometry.width/resolution)|0)+"px";node.style.height=((geometry.height/resolution)|0)+"px";return node;},drawText:function(featureId,style,location){var label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,"olv:rect");var textbox=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox");var resolution=this.getResolution();label.style.left=((location.x/resolution-this.offset.x)|0)+"px";label.style.top=((location.y/resolution-this.offset.y)|0)+"px";label.style.flip="y";textbox.innerText=style.label;if(style.cursor!="inherit"&&style.cursor!=null){textbox.style.cursor=style.cursor;}
+if(style.fontColor){textbox.style.color=style.fontColor;}
+if(style.fontOpacity){textbox.style.filter='alpha(opacity='+(style.fontOpacity*100)+')';}
+if(style.fontFamily){textbox.style.fontFamily=style.fontFamily;}
+if(style.fontSize){textbox.style.fontSize=style.fontSize;}
+if(style.fontWeight){textbox.style.fontWeight=style.fontWeight;}
+if(style.fontStyle){textbox.style.fontStyle=style.fontStyle;}
+if(style.labelSelect===true){label._featureId=featureId;textbox._featureId=featureId;textbox._geometry=location;textbox._geometryClass=location.CLASS_NAME;}
+textbox.style.whiteSpace="nowrap";textbox.inset="1px,0px,0px,0px";if(!label.parentNode){label.appendChild(textbox);this.textRoot.appendChild(label);}
+var align=style.labelAlign||"cm";if(align.length==1){align+="m";}
+var xshift=textbox.clientWidth*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(0,1)]);var yshift=textbox.clientHeight*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(1,1)]);label.style.left=parseInt(label.style.left)-xshift-1+"px";label.style.top=parseInt(label.style.top)+yshift+"px";},drawSurface:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var comp,x,y;for(var i=0,len=geometry.components.length;i<len;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;if((i%3)==0&&(i/3)==0){path.push("m");}else if((i%3)==1){path.push(" c");}
+path.push(" "+x+","+y);}
+path.push(" x e");node.path=path.join("");return node;},moveRoot:function(renderer){var layer=this.map.getLayer(renderer.container.id);if(layer instanceof OpenLayers.Layer.Vector.RootContainer){layer=this.map.getLayer(this.container.id);}
+layer&&layer.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);layer&&layer.redraw();},importSymbol:function(graphicName){var id=this.container.id+"-"+graphicName;var cache=this.symbolCache[id];if(cache){return cache;}
+var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');}
+var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var pathitems=["m"];for(var i=0;i<symbol.length;i=i+2){var x=symbol[i];var y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);pathitems.push(x);pathitems.push(y);if(i==0){pathitems.push("l");}}
+pathitems.push("x e");var path=pathitems.join(" ");var diff=(symbolExtent.getWidth()-symbolExtent.getHeight())/2;if(diff>0){symbolExtent.bottom=symbolExtent.bottom-diff;symbolExtent.top=symbolExtent.top+diff;}else{symbolExtent.left=symbolExtent.left+diff;symbolExtent.right=symbolExtent.right-diff;}
+cache={path:path,size:symbolExtent.getWidth(),left:symbolExtent.left,bottom:symbolExtent.bottom};this.symbolCache[id]=cache;return cache;},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={"l":0,"c":.5,"r":1,"t":0,"m":.5,"b":1};OpenLayers.Layer.MultiMap=OpenLayers.Class(OpenLayers.Layer.EventPane,OpenLayers.Layer.FixedZoomLevels,{MIN_ZOOM_LEVEL:1,MAX_ZOOM_LEVEL:17,RESOLUTIONS:[9,1.40625,0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125],type:null,initialize:function(name,options){OpenLayers.Layer.EventPane.prototype.initialize.apply(this,arguments);OpenLayers.Layer.FixedZoomLevels.prototype.initialize.apply(this,arguments);if(this.sphericalMercator){OpenLayers.Util.extend(this,OpenLayers.Layer.SphericalMercator);this.initMercatorParameters();this.RESOLUTIONS.unshift(10);}},loadMapObject:function(){try{this.mapObject=new MultimapViewer(this.div);}catch(e){}},getWarningHTML:function(){return OpenLayers.i18n("getLayerWarning",{'layerType':"MM",'layerLib':"MultiMap"});},setMapObjectCenter:function(center,zoom){this.mapObject.goToPosition(center,zoom);},getMapObjectCenter:function(){return this.mapObject.getCurrentPosition();},getMapObjectZoom:function(){return this.mapObject.getZoomFactor();},getMapObjectLonLatFromMapObjectPixel:function(moPixel){moPixel.x=moPixel.x-(this.map.getSize().w/2);moPixel.y=moPixel.y-(this.map.getSize().h/2);return this.mapObject.getMapPositionAt(moPixel);},getMapObjectPixelFromMapObjectLonLat:function(moLonLat){return this.mapObject.geoPosToContainerPixels(moLonLat);},getLongitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lon:moLonLat.lon;},getLatitudeFromMapObjectLonLat:function(moLonLat){return this.sphericalMercator?this.forwardMercator(moLonLat.lon,moLonLat.lat).lat:moLonLat.lat;},getMapObjectLonLatFromLonLat:function(lon,lat){var mmLatLon;if(this.sphericalMercator){var lonlat=this.inverseMercator(lon,lat);mmLatLon=new MMLatLon(lonlat.lat,lonlat.lon);}else{mmLatLon=new MMLatLon(lat,lon);}
+return mmLatLon;},getXFromMapObjectPixel:function(moPixel){return moPixel.x;},getYFromMapObjectPixel:function(moPixel){return moPixel.y;},getMapObjectPixelFromXY:function(x,y){return new MMPoint(x,y);},CLASS_NAME:"OpenLayers.Layer.MultiMap"});OpenLayers.Control.MouseToolbar=OpenLayers.Class(OpenLayers.Control.MouseDefaults,{mode:null,buttons:null,direction:"vertical",buttonClicked:null,initialize:function(position,direction){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.position=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,OpenLayers.Control.MouseToolbar.Y);if(position){this.position=position;}
+if(direction){this.direction=direction;}
+this.measureDivs=[];},destroy:function(){for(var btnId in this.buttons){var btn=this.buttons[btnId];btn.map=null;btn.events.destroy();}
+OpenLayers.Control.MouseDefaults.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);OpenLayers.Control.MouseDefaults.prototype.draw.apply(this,arguments);this.buttons={};var sz=new OpenLayers.Size(28,28);var centered=new OpenLayers.Pixel(OpenLayers.Control.MouseToolbar.X,0);this._addButton("zoombox","drag-rectangle-off.png","drag-rectangle-on.png",centered,sz,"Shift->Drag to zoom to area");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this._addButton("pan","panning-hand-off.png","panning-hand-on.png",centered,sz,"Drag the map to pan.");centered=centered.add((this.direction=="vertical"?0:sz.w),(this.direction=="vertical"?sz.h:0));this.switchModeTo("pan");return this.div;},_addButton:function(id,img,activeImg,xy,sz,title){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var activeImgLocation=OpenLayers.Util.getImagesLocation()+activeImg;var btn=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MouseToolbar_"+id,xy,sz,imgLocation,"absolute");this.div.appendChild(btn);btn.imgLocation=imgLocation;btn.activeImgLocation=activeImgLocation;btn.events=new OpenLayers.Events(this,btn,null,true);btn.events.on({"mousedown":this.buttonDown,"mouseup":this.buttonUp,"dblclick":OpenLayers.Event.stop,scope:this});btn.action=id;btn.title=title;btn.alt=title;btn.map=this.map;this.buttons[id]=btn;return btn;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+this.buttonClicked=evt.element.action;OpenLayers.Event.stop(evt);},buttonUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+if(this.buttonClicked!=null){if(this.buttonClicked==evt.element.action){this.switchModeTo(evt.element.action);}
+OpenLayers.Event.stop(evt);this.buttonClicked=null;}},defaultDblClick:function(evt){this.switchModeTo("pan");this.performedDrag=false;var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);OpenLayers.Event.stop(evt);return false;},defaultMouseDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+this.mouseDragStart=evt.xy.clone();this.performedDrag=false;this.startViaKeyboard=false;if(evt.shiftKey&&this.mode!="zoombox"){this.switchModeTo("zoombox");this.startViaKeyboard=true;}else if(evt.altKey&&this.mode!="measure"){this.switchModeTo("measure");}else if(!this.mode){this.switchModeTo("pan");}
+switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";this.zoomBox=OpenLayers.Util.createDiv('zoomBox',this.mouseDragStart,null,null,"absolute","2px solid red");this.zoomBox.style.backgroundColor="white";this.zoomBox.style.filter="alpha(opacity=50)";this.zoomBox.style.opacity="0.50";this.zoomBox.style.fontSize="1px";this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.eventsDiv.appendChild(this.zoomBox);this.performedDrag=true;break;case"measure":var distance="";if(this.measureStart){var measureEnd=this.map.getLonLatFromViewPortPx(this.mouseDragStart);distance=OpenLayers.Util.distVincenty(this.measureStart,measureEnd);distance=Math.round(distance*100)/100;distance=distance+"km";this.measureStartBox=this.measureBox;}
+this.measureStart=this.map.getLonLatFromViewPortPx(this.mouseDragStart);;this.measureBox=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),-2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBox.style.width="4px";this.measureBox.style.height="4px";this.measureBox.style.fontSize="1px";this.measureBox.style.backgroundColor="red";this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);if(distance){this.measureBoxDistance=OpenLayers.Util.createDiv(null,this.mouseDragStart.add(-2-parseInt(this.map.layerContainerDiv.style.left),2-parseInt(this.map.layerContainerDiv.style.top)),null,null,"absolute");this.measureBoxDistance.innerHTML=distance;this.measureBoxDistance.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBoxDistance);this.measureDivs.push(this.measureBoxDistance);}
+this.measureBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.layerContainerDiv.appendChild(this.measureBox);this.measureDivs.push(this.measureBox);break;default:this.map.div.style.cursor="move";break;}
+document.onselectstart=OpenLayers.Function.False;OpenLayers.Event.stop(evt);},switchModeTo:function(mode){if(mode!=this.mode){if(this.mode&&this.buttons[this.mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[this.mode],null,null,null,this.buttons[this.mode].imgLocation);}
+if(this.mode=="measure"&&mode!="measure"){for(var i=0,len=this.measureDivs.length;i<len;i++){if(this.measureDivs[i]){this.map.layerContainerDiv.removeChild(this.measureDivs[i]);}}
+this.measureDivs=[];this.measureStart=null;}
+this.mode=mode;if(this.buttons[mode]){OpenLayers.Util.modifyAlphaImageDiv(this.buttons[mode],null,null,null,this.buttons[mode].activeImgLocation);}
+switch(this.mode){case"zoombox":this.map.div.style.cursor="crosshair";break;default:this.map.div.style.cursor="";break;}}},leaveMode:function(){this.switchModeTo("pan");},defaultMouseMove:function(evt){if(this.mouseDragStart!=null){switch(this.mode){case"zoombox":var deltaX=Math.abs(this.mouseDragStart.x-evt.xy.x);var deltaY=Math.abs(this.mouseDragStart.y-evt.xy.y);this.zoomBox.style.width=Math.max(1,deltaX)+"px";this.zoomBox.style.height=Math.max(1,deltaY)+"px";if(evt.xy.x<this.mouseDragStart.x){this.zoomBox.style.left=evt.xy.x+"px";}
+if(evt.xy.y<this.mouseDragStart.y){this.zoomBox.style.top=evt.xy.y+"px";}
+break;default:var deltaX=this.mouseDragStart.x-evt.xy.x;var deltaY=this.mouseDragStart.y-evt.xy.y;var size=this.map.getSize();var newXY=new OpenLayers.Pixel(size.w/2+deltaX,size.h/2+deltaY);var newCenter=this.map.getLonLatFromViewPortPx(newXY);this.map.setCenter(newCenter,null,true);this.mouseDragStart=evt.xy.clone();}
+this.performedDrag=true;}},defaultMouseUp:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;}
+switch(this.mode){case"zoombox":this.zoomBoxEnd(evt);if(this.startViaKeyboard){this.leaveMode();}
+break;case"pan":if(this.performedDrag){this.map.setCenter(this.map.center);}}
+document.onselectstart=null;this.mouseDragStart=null;this.map.div.style.cursor="default";},defaultMouseOut:function(evt){if(this.mouseDragStart!=null&&OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){if(this.zoomBox){this.removeZoomBox();if(this.startViaKeyboard){this.leaveMode();}}
+this.mouseDragStart=null;this.map.div.style.cursor="default";}},defaultClick:function(evt){if(this.performedDrag){this.performedDrag=false;return false;}},CLASS_NAME:"OpenLayers.Control.MouseToolbar"});OpenLayers.Control.MouseToolbar.X=6;OpenLayers.Control.MouseToolbar.Y=300;OpenLayers.Protocol.WFS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.0.0",CLASS_NAME:"OpenLayers.Protocol.WFS.v1_0_0"});OpenLayers.Format.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Format.XML,{layerIdentifier:'_layer',featureIdentifier:'_feature',regExes:{trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g)},gmlFormat:null,read:function(data){var result;if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+var root=data.documentElement;if(root){var scope=this;var read=this["read_"+root.nodeName];if(read){result=read.call(this,root);}else{result=new OpenLayers.Format.GML((this.options?this.options:{})).read(data);}}else{result=data;}
+return result;},read_msGMLOutput:function(data){var response=[];var layerNodes=this.getSiblingNodesByTagCriteria(data,this.layerIdentifier);if(layerNodes){for(var i=0,len=layerNodes.length;i<len;++i){var node=layerNodes[i];var layerName=node.nodeName;if(node.prefix){layerName=layerName.split(':')[1];}
+var layerName=layerName.replace(this.layerIdentifier,'');var featureNodes=this.getSiblingNodesByTagCriteria(node,this.featureIdentifier);if(featureNodes){for(var j=0;j<featureNodes.length;j++){var featureNode=featureNodes[j];var geomInfo=this.parseGeometry(featureNode);var attributes=this.parseAttributes(featureNode);var feature=new OpenLayers.Feature.Vector(geomInfo.geometry,attributes,null);feature.bounds=geomInfo.bounds;feature.type=layerName;response.push(feature);}}}}
+return response;},read_FeatureInfoResponse:function(data){var response=[];var featureNodes=this.getElementsByTagNameNS(data,'*','FIELDS');for(var i=0,len=featureNodes.length;i<len;i++){var featureNode=featureNodes[i];var geom=null;var attributes={};var j;var jlen=featureNode.attributes.length;if(jlen>0){for(j=0;j<jlen;j++){var attribute=featureNode.attributes[j];attributes[attribute.nodeName]=attribute.nodeValue;}}else{var nodes=featureNode.childNodes;for(j=0,jlen=nodes.length;j<jlen;++j){var node=nodes[j];if(node.nodeType!=3){attributes[node.getAttribute("name")]=node.getAttribute("value");}}}
+response.push(new OpenLayers.Feature.Vector(geom,attributes,null));}
+return response;},getSiblingNodesByTagCriteria:function(node,criteria){var nodes=[];var children,tagName,n,matchNodes,child;if(node&&node.hasChildNodes()){children=node.childNodes;n=children.length;for(var k=0;k<n;k++){child=children[k];while(child&&child.nodeType!=1){child=child.nextSibling;k++;}
+tagName=(child?child.nodeName:'');if(tagName.length>0&&tagName.indexOf(criteria)>-1){nodes.push(child);}else{matchNodes=this.getSiblingNodesByTagCriteria(child,criteria);if(matchNodes.length>0){(nodes.length==0)?nodes=matchNodes:nodes.push(matchNodes);}}}}
+return nodes;},parseAttributes:function(node){var attributes={};if(node.nodeType==1){var children=node.childNodes;var n=children.length;for(var i=0;i<n;++i){var child=children[i];if(child.nodeType==1){var grandchildren=child.childNodes;var name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;if(grandchildren.length==0){attributes[name]=null}else if(grandchildren.length==1){var grandchild=grandchildren[0];if(grandchild.nodeType==3||grandchild.nodeType==4){var value=grandchild.nodeValue.replace(this.regExes.trimSpace,"");attributes[name]=value;}}}}}
+return attributes;},parseGeometry:function(node){if(!this.gmlFormat){this.gmlFormat=new OpenLayers.Format.GML();}
+var feature=this.gmlFormat.parseFeature(node);var geometry,bounds=null;if(feature){geometry=feature.geometry&&feature.geometry.clone();bounds=feature.bounds&&feature.bounds.clone();feature.destroy();}
+return{geometry:geometry,bounds:bounds};},CLASS_NAME:"OpenLayers.Format.WMSGetFeatureInfo"});OpenLayers.Control.WMTSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:false,requestEncoding:"KVP",drillDown:false,maxFeatures:10,clickCallback:"click",layers:null,queryVisible:true,infoFormat:'text/html',vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,EVENT_TYPES:["beforegetfeatureinfo","getfeatureinfo","exception"],pending:0,initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.WMTSGetFeatureInfo.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);options=options||{};options.handlerOptions=options.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!this.format){this.format=new OpenLayers.Format.WMSGetFeatureInfo(options.formatOptions);}
+if(this.drillDown===true){this.hover=false;}
+if(this.hover){this.handler=new OpenLayers.Handler.Hover(this,{move:this.cancelHover,pause:this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{delay:250}));}else{var callbacks={};callbacks[this.clickCallback]=this.getInfoForClick;this.handler=new OpenLayers.Handler.Click(this,callbacks,this.handlerOptions.click||{});}},getInfoForClick:function(evt){this.request(evt.xy,{});},getInfoForHover:function(evt){this.request(evt.xy,{hover:true});},cancelHover:function(){if(this.hoverRequest){--this.pending;if(this.pending<=0){OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");this.pending=0;}
+this.hoverRequest.abort();this.hoverRequest=null;}},findLayers:function(){var candidates=this.layers||this.map.layers;var layers=[];var layer;for(var i=candidates.length-1;i>=0;--i){layer=candidates[i];if(layer instanceof OpenLayers.Layer.WMTS&&layer.requestEncoding===this.requestEncoding&&(!this.queryVisible||layer.getVisibility())){layers.push(layer);if(!this.drillDown||this.hover){break;}}}
+return layers;},buildRequestOptions:function(layer,xy){var loc=this.map.getLonLatFromPixel(xy);var getTileUrl=layer.getURL(new OpenLayers.Bounds(loc.lon,loc.lat,loc.lon,loc.lat));var params=OpenLayers.Util.getParameters(getTileUrl);var tileInfo=layer.getTileInfo(loc);OpenLayers.Util.extend(params,{service:"WMTS",version:layer.version,request:"GetFeatureInfo",infoFormat:this.infoFormat,i:tileInfo.i,j:tileInfo.j});OpenLayers.Util.applyDefaults(params,this.vendorParams);return{url:OpenLayers.Util.isArray(layer.url)?layer.url[0]:layer.url,params:OpenLayers.Util.upperCaseObject(params),callback:function(request){this.handleResponse(xy,request,layer);},scope:this};},request:function(xy,options){options=options||{};var layers=this.findLayers();if(layers.length>0){var issue,layer;for(var i=0,len=layers.length;i<len;i++){layer=layers[i];issue=this.events.triggerEvent("beforegetfeatureinfo",{xy:xy,layer:layer});if(issue!==false){++this.pending;var requestOptions=this.buildRequestOptions(layer,xy);var request=OpenLayers.Request.GET(requestOptions);if(options.hover===true){this.hoverRequest=request;}}}
+if(this.pending>0){OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");}}},handleResponse:function(xy,request,layer){--this.pending;if(this.pending<=0){OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");this.pending=0;}
+if(request.status&&(request.status<200||request.status>=300)){this.events.triggerEvent("exception",{xy:xy,request:request,layer:layer});}else{var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+var features,except;try{features=this.format.read(doc);}catch(error){except=true;this.events.triggerEvent("exception",{xy:xy,request:request,error:error,layer:layer});}
+if(!except){this.events.triggerEvent("getfeatureinfo",{text:request.responseText,features:features,request:request,xy:xy,layer:layer});}}},CLASS_NAME:"OpenLayers.Control.WMTSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1,{readers:{"wms":OpenLayers.Util.applyDefaults({"WMT_MS_Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Keyword":function(node,obj){if(obj.keywords){obj.keywords.push(this.getChildValue(node));}},"DescribeLayer":function(node,obj){obj.describelayer={formats:[]};this.readChildNodes(node,obj.describelayer);},"GetLegendGraphic":function(node,obj){obj.getlegendgraphic={formats:[]};this.readChildNodes(node,obj.getlegendgraphic);},"GetStyles":function(node,obj){obj.getstyles={formats:[]};this.readChildNodes(node,obj.getstyles);},"PutStyles":function(node,obj){obj.putstyles={formats:[]};this.readChildNodes(node,obj.putstyles);},"UserDefinedSymbolization":function(node,obj){var userSymbols={supportSLD:parseInt(node.getAttribute("SupportSLD"))==1,userLayer:parseInt(node.getAttribute("UserLayer"))==1,userStyle:parseInt(node.getAttribute("UserStyle"))==1,remoteWFS:parseInt(node.getAttribute("RemoteWFS"))==1};obj.userSymbols=userSymbols;},"LatLonBoundingBox":function(node,obj){obj.llbbox=[parseFloat(node.getAttribute("minx")),parseFloat(node.getAttribute("miny")),parseFloat(node.getAttribute("maxx")),parseFloat(node.getAttribute("maxy"))];},"BoundingBox":function(node,obj){var bbox=OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this,[node,obj]);bbox.srs=node.getAttribute("SRS");obj.bbox[bbox.srs]=bbox;},"ScaleHint":function(node,obj){var min=node.getAttribute("min");var max=node.getAttribute("max");var rad2=Math.pow(2,0.5);var ipm=OpenLayers.INCHES_PER_UNIT["m"];obj.maxScale=parseFloat(((min/rad2)*ipm*OpenLayers.DOTS_PER_INCH).toPrecision(13));obj.minScale=parseFloat(((max/rad2)*ipm*OpenLayers.DOTS_PER_INCH).toPrecision(13));},"Dimension":function(node,obj){var name=node.getAttribute("name").toLowerCase();var dim={name:name,units:node.getAttribute("units"),unitsymbol:node.getAttribute("unitSymbol")};obj.dimensions[dim.name]=dim;},"Extent":function(node,obj){var name=node.getAttribute("name").toLowerCase();if(name in obj["dimensions"]){var extent=obj.dimensions[name];extent.nearestVal=node.getAttribute("nearestValue")==="1";extent.multipleVal=node.getAttribute("multipleValues")==="1";extent.current=node.getAttribute("current")==="1";extent["default"]=node.getAttribute("default")||"";var values=this.getChildValue(node);extent.values=values.split(",");}}},OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1"});OpenLayers.Control.Graticule=OpenLayers.Class(OpenLayers.Control,{autoActivate:true,intervals:[45,30,20,10,5,2,1,0.5,0.2,0.1,0.05,0.01,0.005,0.002,0.001],displayInLayerSwitcher:true,visible:true,numPoints:50,targetSize:200,layerName:null,labelled:true,labelFormat:'dm',lineSymbolizer:{strokeColor:"#333",strokeWidth:1,strokeOpacity:0.5},labelSymbolizer:{},gratLayer:null,initialize:function(options){options=options||{};options.layerName=options.layerName||OpenLayers.i18n("Graticule");OpenLayers.Control.prototype.initialize.apply(this,[options]);this.labelSymbolizer.stroke=false;this.labelSymbolizer.fill=false;this.labelSymbolizer.label="${label}";this.labelSymbolizer.labelAlign="${labelAlign}";this.labelSymbolizer.labelXOffset="${xOffset}";this.labelSymbolizer.labelYOffset="${yOffset}";},destroy:function(){this.deactivate();OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.gratLayer){this.gratLayer.destroy();this.gratLayer=null;}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.gratLayer){var gratStyle=new OpenLayers.Style({},{rules:[new OpenLayers.Rule({'symbolizer':{"Point":this.labelSymbolizer,"Line":this.lineSymbolizer}})]});this.gratLayer=new OpenLayers.Layer.Vector(this.layerName,{styleMap:new OpenLayers.StyleMap({'default':gratStyle}),visibility:this.visible,displayInLayerSwitcher:this.displayInLayerSwitcher});}
+return this.div;},activate:function(){if(OpenLayers.Control.prototype.activate.apply(this,arguments)){this.map.addLayer(this.gratLayer);this.map.events.register('moveend',this,this.update);this.update();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Control.prototype.deactivate.apply(this,arguments)){this.map.events.unregister('moveend',this,this.update);this.map.removeLayer(this.gratLayer);return true;}else{return false;}},update:function(){var mapBounds=this.map.getExtent();if(!mapBounds){return;}
+this.gratLayer.destroyFeatures();var llProj=new OpenLayers.Projection("EPSG:4326");var mapProj=this.map.getProjectionObject();var mapRes=this.map.getResolution();if(mapProj.proj&&mapProj.proj.projName=="longlat"){this.numPoints=1;}
+var mapCenter=this.map.getCenter();var mapCenterLL=new OpenLayers.Pixel(mapCenter.lon,mapCenter.lat);OpenLayers.Projection.transform(mapCenterLL,mapProj,llProj);var testSq=this.targetSize*mapRes;testSq*=testSq;var llInterval;for(var i=0;i<this.intervals.length;++i){llInterval=this.intervals[i];var delta=llInterval/2;var p1=mapCenterLL.offset(new OpenLayers.Pixel(-delta,-delta));var p2=mapCenterLL.offset(new OpenLayers.Pixel(delta,delta));OpenLayers.Projection.transform(p1,llProj,mapProj);OpenLayers.Projection.transform(p2,llProj,mapProj);var distSq=(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);if(distSq<=testSq){break;}}
+mapCenterLL.x=Math.floor(mapCenterLL.x/llInterval)*llInterval;mapCenterLL.y=Math.floor(mapCenterLL.y/llInterval)*llInterval;var iter=0;var centerLonPoints=[mapCenterLL.clone()];var newPoint=mapCenterLL.clone();var mapXY;do{newPoint=newPoint.offset(new OpenLayers.Pixel(0,llInterval));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLonPoints.unshift(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);newPoint=mapCenterLL.clone();do{newPoint=newPoint.offset(new OpenLayers.Pixel(0,-llInterval));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLonPoints.push(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);iter=0;var centerLatPoints=[mapCenterLL.clone()];newPoint=mapCenterLL.clone();do{newPoint=newPoint.offset(new OpenLayers.Pixel(-llInterval,0));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLatPoints.unshift(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);newPoint=mapCenterLL.clone();do{newPoint=newPoint.offset(new OpenLayers.Pixel(llInterval,0));mapXY=OpenLayers.Projection.transform(newPoint.clone(),llProj,mapProj);centerLatPoints.push(newPoint);}while(mapBounds.containsPixel(mapXY)&&++iter<1000);var lines=[];for(var i=0;i<centerLatPoints.length;++i){var lon=centerLatPoints[i].x;var pointList=[];var labelPoint=null;var latEnd=Math.min(centerLonPoints[0].y,90);var latStart=Math.max(centerLonPoints[centerLonPoints.length-1].y,-90);var latDelta=(latEnd-latStart)/this.numPoints;var lat=latStart;for(var j=0;j<=this.numPoints;++j){var gridPoint=new OpenLayers.Geometry.Point(lon,lat);gridPoint.transform(llProj,mapProj);pointList.push(gridPoint);lat+=latDelta;if(gridPoint.y>=mapBounds.bottom&&!labelPoint){labelPoint=gridPoint;}}
+if(this.labelled){var labelPos=new OpenLayers.Geometry.Point(labelPoint.x,mapBounds.bottom);var labelAttrs={value:lon,label:this.labelled?OpenLayers.Util.getFormattedLonLat(lon,"lon",this.labelFormat):"",labelAlign:"cb",xOffset:0,yOffset:2};this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(labelPos,labelAttrs));}
+var geom=new OpenLayers.Geometry.LineString(pointList);lines.push(new OpenLayers.Feature.Vector(geom));}
+for(var j=0;j<centerLonPoints.length;++j){lat=centerLonPoints[j].y;if(lat<-90||lat>90){continue;}
+var pointList=[];var lonStart=centerLatPoints[0].x;var lonEnd=centerLatPoints[centerLatPoints.length-1].x;var lonDelta=(lonEnd-lonStart)/this.numPoints;var lon=lonStart;var labelPoint=null;for(var i=0;i<=this.numPoints;++i){var gridPoint=new OpenLayers.Geometry.Point(lon,lat);gridPoint.transform(llProj,mapProj);pointList.push(gridPoint);lon+=lonDelta;if(gridPoint.x<mapBounds.right){labelPoint=gridPoint;}}
+if(this.labelled){var labelPos=new OpenLayers.Geometry.Point(mapBounds.right,labelPoint.y);var labelAttrs={value:lat,label:this.labelled?OpenLayers.Util.getFormattedLonLat(lat,"lat",this.labelFormat):"",labelAlign:"rb",xOffset:-2,yOffset:2};this.gratLayer.addFeatures(new OpenLayers.Feature.Vector(labelPos,labelAttrs));}
+var geom=new OpenLayers.Geometry.LineString(pointList);lines.push(new OpenLayers.Feature.Vector(geom));}
+this.gratLayer.addFeatures(lines);},CLASS_NAME:"OpenLayers.Control.Graticule"});OpenLayers.Layer.WMS.Post=OpenLayers.Class(OpenLayers.Layer.WMS,{unsupportedBrowsers:["mozilla","firefox","opera"],SUPPORTED_TRANSITIONS:[],usePost:null,initialize:function(name,url,params,options){var newArguments=[];newArguments.push(name,url,params,options);OpenLayers.Layer.WMS.prototype.initialize.apply(this,newArguments);this.usePost=OpenLayers.Util.indexOf(this.unsupportedBrowsers,OpenLayers.BROWSER_NAME)==-1;},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize,{maxGetUrlLength:this.usePost?0:null});},CLASS_NAME:'OpenLayers.Layer.WMS.Post'});OpenLayers.Layer.ArcGISCache=OpenLayers.Class(OpenLayers.Layer.XYZ,{url:null,tileOrigin:null,tileSize:new OpenLayers.Size(256,256),useArcGISServer:true,type:'png',useScales:false,overrideDPI:false,initialize:function(name,url,options){OpenLayers.Layer.XYZ.prototype.initialize.apply(this,arguments);if(this.resolutions){this.serverResolutions=this.resolutions;this.maxExtent=this.getMaxExtentForResolution(this.resolutions[0]);}
+if(this.layerInfo){var info=this.layerInfo;var startingTileExtent=new OpenLayers.Bounds(info.fullExtent.xmin,info.fullExtent.ymin,info.fullExtent.xmax,info.fullExtent.ymax);this.projection='EPSG:'+info.spatialReference.wkid;this.sphericalMercator=(info.spatialReference.wkid==102100);this.units=(info.units=="esriFeet")?'ft':'m';if(!!info.tileInfo){this.tileSize=new OpenLayers.Size(info.tileInfo.width||info.tileInfo.cols,info.tileInfo.height||info.tileInfo.rows);this.tileOrigin=new OpenLayers.LonLat(info.tileInfo.origin.x,info.tileInfo.origin.y);var upperLeft=new OpenLayers.Geometry.Point(startingTileExtent.left,startingTileExtent.top);var bottomRight=new OpenLayers.Geometry.Point(startingTileExtent.right,startingTileExtent.bottom);if(this.useScales){this.scales=[];}else{this.resolutions=[];}
+this.lods=[];for(var key in info.tileInfo.lods){if(info.tileInfo.lods.hasOwnProperty(key)){var lod=info.tileInfo.lods[key];if(this.useScales){this.scales.push(lod.scale);}else{this.resolutions.push(lod.resolution);}
+var start=this.getContainingTileCoords(upperLeft,lod.resolution);lod.startTileCol=start.x;lod.startTileRow=start.y;var end=this.getContainingTileCoords(bottomRight,lod.resolution);lod.endTileCol=end.x;lod.endTileRow=end.y;this.lods.push(lod);}}
+this.maxExtent=this.calculateMaxExtentWithLOD(this.lods[0]);this.serverResolutions=this.resolutions;if(this.overrideDPI&&info.tileInfo.dpi){OpenLayers.DOTS_PER_INCH=info.tileInfo.dpi;}}}},getContainingTileCoords:function(point,res){return new OpenLayers.Pixel(Math.max(Math.floor((point.x-this.tileOrigin.lon)/(this.tileSize.w*res)),0),Math.max(Math.floor((this.tileOrigin.lat-point.y)/(this.tileSize.h*res)),0));},calculateMaxExtentWithLOD:function(lod){var numTileCols=(lod.endTileCol-lod.startTileCol)+1;var numTileRows=(lod.endTileRow-lod.startTileRow)+1;var minX=this.tileOrigin.lon+(lod.startTileCol*this.tileSize.w*lod.resolution);var maxX=minX+(numTileCols*this.tileSize.w*lod.resolution);var maxY=this.tileOrigin.lat-(lod.startTileRow*this.tileSize.h*lod.resolution);var minY=maxY-(numTileRows*this.tileSize.h*lod.resolution);return new OpenLayers.Bounds(minX,minY,maxX,maxY);},calculateMaxExtentWithExtent:function(extent,res){var upperLeft=new OpenLayers.Geometry.Point(extent.left,extent.top);var bottomRight=new OpenLayers.Geometry.Point(extent.right,extent.bottom);var start=this.getContainingTileCoords(upperLeft,res);var end=this.getContainingTileCoords(bottomRight,res);var lod={resolution:res,startTileCol:start.x,startTileRow:start.y,endTileCol:end.x,endTileRow:end.y};return this.calculateMaxExtentWithLOD(lod);},getUpperLeftTileCoord:function(res){var upperLeft=new OpenLayers.Geometry.Point(this.maxExtent.left,this.maxExtent.top);return this.getContainingTileCoords(upperLeft,res);},getLowerRightTileCoord:function(res){var bottomRight=new OpenLayers.Geometry.Point(this.maxExtent.right,this.maxExtent.bottom);return this.getContainingTileCoords(bottomRight,res);},getMaxExtentForResolution:function(res){var start=this.getUpperLeftTileCoord(res);var end=this.getLowerRightTileCoord(res);var numTileCols=(end.x-start.x)+1;var numTileRows=(end.y-start.y)+1;var minX=this.tileOrigin.lon+(start.x*this.tileSize.w*res);var maxX=minX+(numTileCols*this.tileSize.w*res);var maxY=this.tileOrigin.lat-(start.y*this.tileSize.h*res);var minY=maxY-(numTileRows*this.tileSize.h*res);return new OpenLayers.Bounds(minX,minY,maxX,maxY);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.ArcGISCache(this.name,this.url,this.options);}
+return OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);},getMaxExtent:function(){var resolution=this.map.getResolution();return this.maxExtent=this.getMaxExtentForResolution(resolution);},getTileOrigin:function(){var extent=this.getMaxExtent();return new OpenLayers.LonLat(extent.left,extent.bottom);},getURL:function(bounds){var res=this.getResolution();var originTileX=(this.tileOrigin.lon+(res*this.tileSize.w/2));var originTileY=(this.tileOrigin.lat-(res*this.tileSize.h/2));var center=bounds.getCenterLonLat();var point={x:center.lon,y:center.lat};var x=(Math.round(Math.abs((center.lon-originTileX)/(res*this.tileSize.w))));var y=(Math.round(Math.abs((originTileY-center.lat)/(res*this.tileSize.h))));var z=this.map.getZoom();if(this.lods){var lod=this.lods[this.map.getZoom()];if((x<lod.startTileCol||x>lod.endTileCol)||(y<lod.startTileRow||y>lod.endTileRow)){return null;}}
+else{var start=this.getUpperLeftTileCoord(res);var end=this.getLowerRightTileCoord(res);if((x<start.x||x>=end.x)||(y<start.y||y>=end.y)){return null;}}
+var url=this.url;var s=''+x+y+z;if(OpenLayers.Util.isArray(url)){url=this.selectUrl(s,url);}
+if(this.useArcGISServer){url=url+'/tile/${z}/${y}/${x}';}else{x='C'+this.zeroPad(x,8,16);y='R'+this.zeroPad(y,8,16);z='L'+this.zeroPad(z,2,16);url=url+'/${z}/${y}/${x}.'+this.type;}
+url=OpenLayers.String.format(url,{'x':x,'y':y,'z':z});return url;},zeroPad:function(num,len,radix){var str=num.toString(radix||10);while(str.length<len){str="0"+str;}
+return str;},CLASS_NAME:'OpenLayers.Layer.ArcGISCache'});OpenLayers.Control.WMSGetFeatureInfo=OpenLayers.Class(OpenLayers.Control,{hover:false,drillDown:false,maxFeatures:10,clickCallback:"click",output:"features",layers:null,queryVisible:false,url:null,layerUrls:null,infoFormat:'text/html',vendorParams:{},format:null,formatOptions:null,handlerOptions:null,handler:null,hoverRequest:null,EVENT_TYPES:["beforegetfeatureinfo","nogetfeatureinfo","getfeatureinfo"],initialize:function(options){this.EVENT_TYPES=OpenLayers.Control.WMSGetFeatureInfo.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);options=options||{};options.handlerOptions=options.handlerOptions||{};OpenLayers.Control.prototype.initialize.apply(this,[options]);if(!this.format){this.format=new OpenLayers.Format.WMSGetFeatureInfo(options.formatOptions);}
+if(this.drillDown===true){this.hover=false;}
+if(this.hover){this.handler=new OpenLayers.Handler.Hover(this,{'move':this.cancelHover,'pause':this.getInfoForHover},OpenLayers.Util.extend(this.handlerOptions.hover||{},{'delay':250}));}else{var callbacks={};callbacks[this.clickCallback]=this.getInfoForClick;this.handler=new OpenLayers.Handler.Click(this,callbacks,this.handlerOptions.click||{});}},activate:function(){if(!this.active){this.handler.activate();}
+return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},getInfoForClick:function(evt){this.events.triggerEvent("beforegetfeatureinfo",{xy:evt.xy});OpenLayers.Element.addClass(this.map.viewPortDiv,"olCursorWait");this.request(evt.xy,{});},getInfoForHover:function(evt){this.events.triggerEvent("beforegetfeatureinfo",{xy:evt.xy});this.request(evt.xy,{hover:true});},cancelHover:function(){if(this.hoverRequest){this.hoverRequest.abort();this.hoverRequest=null;}},findLayers:function(){var candidates=this.layers||this.map.layers;var layers=[];var layer,url;for(var i=0,len=candidates.length;i<len;++i){layer=candidates[i];if(layer instanceof OpenLayers.Layer.WMS&&(!this.queryVisible||layer.getVisibility())){url=OpenLayers.Util.isArray(layer.url)?layer.url[0]:layer.url;if(this.drillDown===false&&!this.url){this.url=url;}
+if(this.drillDown===true||this.urlMatches(url)){layers.push(layer);}}}
+return layers;},urlMatches:function(url){var matches=OpenLayers.Util.isEquivalentUrl(this.url,url);if(!matches&&this.layerUrls){for(var i=0,len=this.layerUrls.length;i<len;++i){if(OpenLayers.Util.isEquivalentUrl(this.layerUrls[i],url)){matches=true;break;}}}
+return matches;},buildWMSOptions:function(url,layers,clickPosition,format){var layerNames=[],styleNames=[];for(var i=0,len=layers.length;i<len;i++){layerNames=layerNames.concat(layers[i].params.LAYERS);styleNames=styleNames.concat(this.getStyleNames(layers[i]));}
+var firstLayer=layers[0];var projection=this.map.getProjection();var layerProj=firstLayer.projection;if(layerProj&&layerProj.equals(this.map.getProjectionObject())){projection=layerProj.getCode();}
+var params=OpenLayers.Util.extend({service:"WMS",version:firstLayer.params.VERSION,request:"GetFeatureInfo",layers:layerNames,query_layers:layerNames,styles:styleNames,bbox:this.map.getExtent().toBBOX(null,firstLayer.reverseAxisOrder()),feature_count:this.maxFeatures,height:this.map.getSize().h,width:this.map.getSize().w,format:format,info_format:firstLayer.params.INFO_FORMAT||this.infoFormat},(parseFloat(firstLayer.params.VERSION)>=1.3)?{crs:projection,i:parseInt(clickPosition.x),j:parseInt(clickPosition.y)}:{srs:projection,x:parseInt(clickPosition.x),y:parseInt(clickPosition.y)});OpenLayers.Util.applyDefaults(params,this.vendorParams);return{url:url,params:OpenLayers.Util.upperCaseObject(params),callback:function(request){this.handleResponse(clickPosition,request,url);},scope:this};},getStyleNames:function(layer){var styleNames;if(layer.params.STYLES){styleNames=layer.params.STYLES;}else{if(OpenLayers.Util.isArray(layer.params.LAYERS)){styleNames=new Array(layer.params.LAYERS.length);}else{styleNames=layer.params.LAYERS.replace(/[^,]/g,"");}}
+return styleNames;},request:function(clickPosition,options){var layers=this.findLayers();if(layers.length==0){this.events.triggerEvent("nogetfeatureinfo");OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");return;}
+options=options||{};if(this.drillDown===false){var wmsOptions=this.buildWMSOptions(this.url,layers,clickPosition,layers[0].params.FORMAT);var request=OpenLayers.Request.GET(wmsOptions);if(options.hover===true){this.hoverRequest=request;}}else{this._requestCount=0;this._numRequests=0;this.features=[];var services={},url;for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];var service,found=false;url=OpenLayers.Util.isArray(layer.url)?layer.url[0]:layer.url;if(url in services){services[url].push(layer);}else{this._numRequests++;services[url]=[layer];}}
+var layers;for(var url in services){layers=services[url];var wmsOptions=this.buildWMSOptions(url,layers,clickPosition,layers[0].params.FORMAT);OpenLayers.Request.GET(wmsOptions);}}},triggerGetFeatureInfo:function(request,xy,features){this.events.triggerEvent("getfeatureinfo",{text:request.responseText,features:features,request:request,xy:xy});OpenLayers.Element.removeClass(this.map.viewPortDiv,"olCursorWait");},handleResponse:function(xy,request,url){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+var features=this.format.read(doc);if(this.drillDown===false){this.triggerGetFeatureInfo(request,xy,features);}else{this._requestCount++;if(this.output==="object"){this._features=(this._features||[]).concat({url:url,features:features});}else{this._features=(this._features||[]).concat(features);}
+if(this._requestCount===this._numRequests){this.triggerGetFeatureInfo(request,xy,this._features.concat());delete this._features;delete this._requestCount;delete this._numRequests;}}},CLASS_NAME:"OpenLayers.Control.WMSGetFeatureInfo"});OpenLayers.Format.WMSCapabilities.v1_3_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_3,{version:"1.3.0",CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_3_0"});OpenLayers.Format.CQL=(function(){var tokens=["PROPERTY","COMPARISON","VALUE","LOGICAL"],patterns={PROPERTY:/^[_a-zA-Z]\w*/,COMPARISON:/^(=|<>|<=|<|>=|>|LIKE)/i,COMMA:/^,/,LOGICAL:/^(AND|OR)/i,VALUE:/^('\w+'|\d+(\.\d*)?|\.\d+)/,LPAREN:/^\(/,RPAREN:/^\)/,SPATIAL:/^(BBOX|INTERSECTS|DWITHIN|WITHIN|CONTAINS)/i,NOT:/^NOT/i,BETWEEN:/^BETWEEN/i,GEOMETRY:function(text){var type=/^(POINT|LINESTRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)/.exec(text);if(type){var len=text.length;var idx=text.indexOf("(",type[0].length);if(idx>-1){var depth=1;while(idx<len&&depth>0){idx++;switch(text.charAt(idx)){case'(':depth++;break;case')':depth--;break;default:}}}
+return[text.substr(0,idx+1)];}},END:/^$/},follows={LPAREN:['GEOMETRY','SPATIAL','PROPERTY','VALUE','LPAREN'],RPAREN:['NOT','LOGICAL','END','RPAREN'],PROPERTY:['COMPARISON','BETWEEN','COMMA'],BETWEEN:['VALUE'],COMPARISON:['VALUE'],COMMA:['GEOMETRY','VALUE','PROPERTY'],VALUE:['LOGICAL','COMMA','RPAREN','END'],SPATIAL:['LPAREN'],LOGICAL:['NOT','VALUE','SPATIAL','PROPERTY','LPAREN'],NOT:['PROPERTY','LPAREN'],GEOMETRY:['COMMA','RPAREN']},operators={'=':OpenLayers.Filter.Comparison.EQUAL_TO,'<>':OpenLayers.Filter.Comparison.NOT_EQUAL_TO,'<':OpenLayers.Filter.Comparison.LESS_THAN,'<=':OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,'>':OpenLayers.Filter.Comparison.GREATER_THAN,'>=':OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,'LIKE':OpenLayers.Filter.Comparison.LIKE,'BETWEEN':OpenLayers.Filter.Comparison.BETWEEN},operatorReverse={},logicals={'AND':OpenLayers.Filter.Logical.AND,'OR':OpenLayers.Filter.Logical.OR},logicalReverse={},precedence={'RPAREN':3,'LOGICAL':2,'COMPARISON':1};var i;for(i in operators){if(operators.hasOwnProperty(i)){operatorReverse[operators[i]]=i;}}
+for(i in logicals){if(logicals.hasOwnProperty(i)){logicalReverse[logicals[i]]=i;}}
+function tryToken(text,pattern){if(pattern instanceof RegExp){return pattern.exec(text);}else{return pattern(text);}}
+function nextToken(text,tokens){var i,token,len=tokens.length;for(i=0;i<len;i++){token=tokens[i];var pat=patterns[token];var matches=tryToken(text,pat);if(matches){var match=matches[0];var remainder=text.substr(match.length).replace(/^\s*/,"");return{type:token,text:match,remainder:remainder};}}
+var msg="ERROR: In parsing: ["+text+"], expected one of: ";for(i=0;i<len;i++){token=tokens[i];msg+="\n    "+token+": "+patterns[token];}
+throw new Error(msg);}
+function tokenize(text){var results=[];var token,expect=["NOT","GEOMETRY","SPATIAL","PROPERTY","LPAREN"];do{token=nextToken(text,expect);text=token.remainder;expect=follows[token.type];if(token.type!="END"&&!expect){throw new Error("No follows list for "+token.type);}
+results.push(token);}while(token.type!="END");return results;}
+function buildAst(tokens){var operatorStack=[],postfix=[];while(tokens.length){var tok=tokens.shift();switch(tok.type){case"PROPERTY":case"GEOMETRY":case"VALUE":postfix.push(tok);break;case"COMPARISON":case"BETWEEN":case"LOGICAL":var p=precedence[tok.type];while(operatorStack.length>0&&(precedence[operatorStack[operatorStack.length-1].type]<=p)){postfix.push(operatorStack.pop());}
+operatorStack.push(tok);break;case"SPATIAL":case"NOT":case"LPAREN":operatorStack.push(tok);break;case"RPAREN":while(operatorStack.length>0&&(operatorStack[operatorStack.length-1].type!="LPAREN")){postfix.push(operatorStack.pop());}
+operatorStack.pop();if(operatorStack.length>0&&operatorStack[operatorStack.length-1].type=="SPATIAL"){postfix.push(operatorStack.pop());}
+case"COMMA":case"END":break;default:throw new Error("Unknown token type "+tok.type);}}
+while(operatorStack.length>0){postfix.push(operatorStack.pop());}
+function buildTree(){var tok=postfix.pop();switch(tok.type){case"LOGICAL":var rhs=buildTree(),lhs=buildTree();return new OpenLayers.Filter.Logical({filters:[lhs,rhs],type:logicals[tok.text.toUpperCase()]});case"NOT":var operand=buildTree();return new OpenLayers.Filter.Logical({filters:[operand],type:OpenLayers.Filter.Logical.NOT});case"BETWEEN":var min,max,property;postfix.pop();max=buildTree();min=buildTree();property=buildTree();return new OpenLayers.Filter.Comparison({property:property,lowerBoundary:min,upperBoundary:max,type:OpenLayers.Filter.Comparison.BETWEEN});case"COMPARISON":var value=buildTree(),property=buildTree();return new OpenLayers.Filter.Comparison({property:property,value:value,type:operators[tok.text.toUpperCase()]});case"VALUE":if((/^'.*'$/).test(tok.text)){return tok.text.substr(1,tok.text.length-2);}else{return Number(tok.text);}
+case"SPATIAL":switch(tok.text.toUpperCase()){case"BBOX":var maxy=buildTree(),maxx=buildTree(),miny=buildTree(),minx=buildTree(),prop=buildTree();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,property:prop,value:OpenLayers.Bounds.fromArray([minx,miny,maxx,maxy])});case"INTERSECTS":var value=buildTree(),property=buildTree();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.INTERSECTS,property:property,value:value});case"WITHIN":var value=buildTree(),property=buildTree();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.WITHIN,property:property,value:value});case"CONTAINS":var value=buildTree(),property=buildTree();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.CONTAINS,property:property,value:value});case"DWITHIN":var distance=buildTree(),value=buildTree(),property=buildTree();return new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.DWITHIN,value:value,property:property,distance:Number(distance)});}
+case"GEOMETRY":return OpenLayers.Geometry.fromWKT(tok.text);default:return tok.text;}}
+var result=buildTree();if(postfix.length>0){var msg="Remaining tokens after building AST: \n";for(var i=postfix.length-1;i>=0;i--){msg+=postfix[i].type+": "+postfix[i].text+"\n";}
+throw new Error(msg);}
+return result;}
+return OpenLayers.Class(OpenLayers.Format,{read:function(text){var result=buildAst(tokenize(text));if(this.keepData){this.data=result;};return result;},write:function(filter){if(filter instanceof OpenLayers.Geometry){return filter.toString();}
+switch(filter.CLASS_NAME){case"OpenLayers.Filter.Spatial":switch(filter.type){case OpenLayers.Filter.Spatial.BBOX:return"BBOX("+
+filter.property+","+
+filter.value.toBBOX()+")";case OpenLayers.Filter.Spatial.DWITHIN:return"DWITHIN("+
+filter.property+", "+
+this.write(filter.value)+", "+
+filter.distance+")";case OpenLayers.Filter.Spatial.WITHIN:return"WITHIN("+
+filter.property+", "+
+this.write(filter.value)+")";case OpenLayers.Filter.Spatial.INTERSECTS:return"INTERSECTS("+
+filter.property+", "+
+this.write(filter.value)+")";case OpenLayers.Filter.Spatial.CONTAINS:return"CONTAINS("+
+filter.property+", "+
+this.write(filter.value)+")";default:throw new Error("Unknown spatial filter type: "+filter.type);}
+case"OpenLayers.Filter.Logical":if(filter.type==OpenLayers.Filter.Logical.NOT){return"NOT ("+this.write(filter.filters[0])+")";}else{var res="(";var first=true;for(var i=0;i<filter.filters.length;i++){if(first){first=false;}else{res+=") "+logicalReverse[filter.type]+" (";}
+res+=this.write(filter.filters[i]);}
+return res+")";}
+case"OpenLayers.Filter.Comparison":if(filter.type==OpenLayers.Filter.Comparison.BETWEEN){return filter.property+" BETWEEN "+
+this.write(filter.lowerBoundary)+" AND "+
+this.write(filter.upperBoundary);}else{return filter.property+" "+operatorReverse[filter.type]+" "+
+this.write(filter.value);}
+case undefined:if(typeof filter==="string"){return"'"+filter+"'";}else if(typeof filter==="number"){return String(filter);}
+default:throw new Error("Can't encode: "+filter.CLASS_NAME+" "+filter);}},CLASS_NAME:"OpenLayers.Format.CQL"});})();OpenLayers.Control.Split=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforesplit","split","aftersplit"],layer:null,source:null,sourceOptions:null,tolerance:null,edge:true,deferDelete:false,mutual:true,targetFilter:null,sourceFilter:null,handler:null,initialize:function(options){Array.prototype.push.apply(this.EVENT_TYPES,OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);this.options=options||{};if(this.options.source){this.setSource(this.options.source);}},setSource:function(layer){if(this.active){this.deactivate();if(this.handler){this.handler.destroy();delete this.handler;}
+this.source=layer;this.activate();}else{this.source=layer;}},activate:function(){var activated=OpenLayers.Control.prototype.activate.call(this);if(activated){if(!this.source){if(!this.handler){this.handler=new OpenLayers.Handler.Path(this,{done:function(geometry){this.onSketchComplete({feature:new OpenLayers.Feature.Vector(geometry)});}},{layerOptions:this.sourceOptions});}
+this.handler.activate();}else if(this.source.events){this.source.events.on({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});}}
+return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.call(this);if(deactivated){if(this.source&&this.source.events){this.layer.events.un({sketchcomplete:this.onSketchComplete,afterfeaturemodified:this.afterFeatureModified,scope:this});}}
+return deactivated;},onSketchComplete:function(event){this.feature=null;return!this.considerSplit(event.feature);},afterFeatureModified:function(event){if(event.modified){var feature=event.feature;if(feature.geometry instanceof OpenLayers.Geometry.LineString||feature.geometry instanceof OpenLayers.Geometry.MultiLineString){this.feature=event.feature;this.considerSplit(event.feature);}}},removeByGeometry:function(features,geometry){for(var i=0,len=features.length;i<len;++i){if(features[i].geometry===geometry){features.splice(i,1);break;}}},isEligible:function(target){return(target.state!==OpenLayers.State.DELETE)&&(target.geometry instanceof OpenLayers.Geometry.LineString||target.geometry instanceof OpenLayers.Geometry.MultiLineString)&&(this.feature!==target)&&(!this.targetFilter||this.targetFilter.evaluate(target.attributes));},considerSplit:function(feature){var sourceSplit=false;var targetSplit=false;if(!this.sourceFilter||this.sourceFilter.evaluate(feature.attributes)){var features=this.layer&&this.layer.features||[];var target,results,proceed;var additions=[],removals=[];var mutual=(this.layer===this.source)&&this.mutual;var options={edge:this.edge,tolerance:this.tolerance,mutual:mutual};var sourceParts=[feature.geometry];var targetFeature,targetParts;var source,parts;for(var i=0,len=features.length;i<len;++i){targetFeature=features[i];if(this.isEligible(targetFeature)){targetParts=[targetFeature.geometry];for(var j=0;j<sourceParts.length;++j){source=sourceParts[j];for(var k=0;k<targetParts.length;++k){target=targetParts[k];if(source.getBounds().intersectsBounds(target.getBounds())){results=source.split(target,options);if(results){proceed=this.events.triggerEvent("beforesplit",{source:feature,target:targetFeature});if(proceed!==false){if(mutual){parts=results[0];if(parts.length>1){parts.unshift(j,1);Array.prototype.splice.apply(sourceParts,parts);j+=parts.length-3;}
+results=results[1];}
+if(results.length>1){results.unshift(k,1);Array.prototype.splice.apply(targetParts,results);k+=results.length-3;}}}}}}
+if(targetParts&&targetParts.length>1){this.geomsToFeatures(targetFeature,targetParts);this.events.triggerEvent("split",{original:targetFeature,features:targetParts});Array.prototype.push.apply(additions,targetParts);removals.push(targetFeature);targetSplit=true;}}}
+if(sourceParts&&sourceParts.length>1){this.geomsToFeatures(feature,sourceParts);this.events.triggerEvent("split",{original:feature,features:sourceParts});Array.prototype.push.apply(additions,sourceParts);removals.push(feature);sourceSplit=true;}
+if(sourceSplit||targetSplit){if(this.deferDelete){var feat,destroys=[];for(var i=0,len=removals.length;i<len;++i){feat=removals[i];if(feat.state===OpenLayers.State.INSERT){destroys.push(feat);}else{feat.state=OpenLayers.State.DELETE;this.layer.drawFeature(feat);}}
+this.layer.destroyFeatures(destroys,{silent:true});for(var i=0,len=additions.length;i<len;++i){additions[i].state=OpenLayers.State.INSERT;}}else{this.layer.destroyFeatures(removals,{silent:true});}
+this.layer.addFeatures(additions,{silent:true});this.events.triggerEvent("aftersplit",{source:feature,features:additions});}}
+return sourceSplit;},geomsToFeatures:function(feature,geoms){var clone=feature.clone();delete clone.geometry;var newFeature;for(var i=0,len=geoms.length;i<len;++i){newFeature=clone.clone();newFeature.geometry=geoms[i];newFeature.state=OpenLayers.State.INSERT;geoms[i]=newFeature;}},destroy:function(){if(this.active){this.deactivate();}
+OpenLayers.Control.prototype.destroy.call(this);},CLASS_NAME:"OpenLayers.Control.Split"});OpenLayers.Layer.WMTS=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,version:"1.0.0",requestEncoding:"KVP",url:null,layer:null,matrixSet:null,style:null,format:"image/jpeg",tileOrigin:null,tileFullExtent:null,formatSuffix:null,matrixIds:null,dimensions:null,params:null,zoomOffset:0,formatSuffixMap:{"image/png":"png","image/png8":"png","image/png24":"png","image/png32":"png","png":"png","image/jpeg":"jpg","image/jpg":"jpg","jpeg":"jpg","jpg":"jpg"},matrix:null,initialize:function(config){var required={url:true,layer:true,style:true,matrixSet:true};for(var prop in required){if(!(prop in config)){throw new Error("Missing property '"+prop+"' in layer configuration.");}}
+config.params=OpenLayers.Util.upperCaseObject(config.params);var args=[config.name,config.url,config.params,config];OpenLayers.Layer.Grid.prototype.initialize.apply(this,args);if(!this.formatSuffix){this.formatSuffix=this.formatSuffixMap[this.format]||this.format.split("/").pop();}
+if(this.matrixIds){var len=this.matrixIds.length;if(len&&typeof this.matrixIds[0]==="string"){var ids=this.matrixIds;this.matrixIds=new Array(len);for(var i=0;i<len;++i){this.matrixIds[i]={identifier:ids[i]};}}}},setMap:function(){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);this.updateMatrixProperties();},updateMatrixProperties:function(){this.matrix=this.getMatrix();if(this.matrix){if(this.matrix.topLeftCorner){this.tileOrigin=this.matrix.topLeftCorner;}
+if(this.matrix.tileWidth&&this.matrix.tileHeight){this.tileSize=new OpenLayers.Size(this.matrix.tileWidth,this.matrix.tileHeight);}
+if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.top);}
+if(!this.tileFullExtent){this.tileFullExtent=this.maxExtent;}}},moveTo:function(bounds,zoomChanged,dragging){if(zoomChanged||!this.matrix){this.updateMatrixProperties();}
+return OpenLayers.Layer.Grid.prototype.moveTo.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WMTS(this.options);}
+obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getMatrix:function(){var matrix;if(!this.matrixIds||this.matrixIds.length===0){matrix={identifier:this.map.getZoom()+this.zoomOffset};}else{if("scaleDenominator"in this.matrixIds[0]){var denom=OpenLayers.METERS_PER_INCH*OpenLayers.INCHES_PER_UNIT[this.units]*this.map.getResolution()/0.28E-3;var diff=Number.POSITIVE_INFINITY;var delta;for(var i=0,ii=this.matrixIds.length;i<ii;++i){delta=Math.abs(1-(this.matrixIds[i].scaleDenominator/denom));if(delta<diff){diff=delta;matrix=this.matrixIds[i];}}}else{matrix=this.matrixIds[this.map.getZoom()+this.zoomOffset];}}
+return matrix;},getTileInfo:function(loc){var res=this.map.getResolution();var fx=(loc.lon-this.tileOrigin.lon)/(res*this.tileSize.w);var fy=(this.tileOrigin.lat-loc.lat)/(res*this.tileSize.h);var col=Math.floor(fx);var row=Math.floor(fy);return{col:col,row:row,i:Math.floor((fx-col)*this.tileSize.w),j:Math.floor((fy-row)*this.tileSize.h)};},getURL:function(bounds){bounds=this.adjustBounds(bounds);var url="";if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(bounds)){var center=bounds.getCenterLonLat();var info=this.getTileInfo(center);var matrixId=this.matrix.identifier;if(this.requestEncoding.toUpperCase()==="REST"){var path=this.version+"/"+this.layer+"/"+this.style+"/";if(this.dimensions){for(var i=0;i<this.dimensions.length;i++){if(this.params[this.dimensions[i]]){path=path+this.params[this.dimensions[i]]+"/";}}}
+path=path+this.matrixSet+"/"+this.matrix.identifier+"/"+info.row+"/"+info.col+"."+this.formatSuffix;if(OpenLayers.Util.isArray(this.url)){url=this.selectUrl(path,this.url);}else{url=this.url;}
+if(!url.match(/\/$/)){url=url+"/";}
+url=url+path;}else if(this.requestEncoding.toUpperCase()==="KVP"){var params={SERVICE:"WMTS",REQUEST:"GetTile",VERSION:this.version,LAYER:this.layer,STYLE:this.style,TILEMATRIXSET:this.matrixSet,TILEMATRIX:this.matrix.identifier,TILEROW:info.row,TILECOL:info.col,FORMAT:this.format};url=OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,[params]);}}
+return url;},mergeNewParams:function(newParams){if(this.requestEncoding.toUpperCase()==="KVP"){return OpenLayers.Layer.Grid.prototype.mergeNewParams.apply(this,[OpenLayers.Util.upperCaseObject(newParams)]);}},CLASS_NAME:"OpenLayers.Layer.WMTS"});OpenLayers.Protocol.SOS.v1_0_0=OpenLayers.Class(OpenLayers.Protocol,{fois:null,formatOptions:null,initialize:function(options){OpenLayers.Protocol.prototype.initialize.apply(this,[options]);if(!options.format){this.format=new OpenLayers.Format.SOSGetFeatureOfInterest(this.formatOptions);}},destroy:function(){if(this.options&&!this.options.format){this.format.destroy();}
+this.format=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){options=OpenLayers.Util.extend({},options);OpenLayers.Util.applyDefaults(options,this.options||{});var response=new OpenLayers.Protocol.Response({requestType:"read"});var format=this.format;var data=OpenLayers.Format.XML.prototype.write.apply(format,[format.writeNode("sos:GetFeatureOfInterest",{fois:this.fois})]);response.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,response,options),data:data});return response;},handleRead:function(response,options){if(options.callback){var request=response.priv;if(request.status>=200&&request.status<300){response.features=this.parseFeatures(request);response.code=OpenLayers.Protocol.Response.SUCCESS;}else{response.code=OpenLayers.Protocol.Response.FAILURE;}
+options.callback.call(options.scope,response);}},parseFeatures:function(request){var doc=request.responseXML;if(!doc||!doc.documentElement){doc=request.responseText;}
+if(!doc||doc.length<=0){return null;}
+return this.format.read(doc);},CLASS_NAME:"OpenLayers.Protocol.SOS.v1_0_0"});OpenLayers.Layer.KaMapCache=OpenLayers.Class(OpenLayers.Layer.KaMap,{IMAGE_EXTENSIONS:{'jpeg':'jpg','gif':'gif','png':'png','png8':'png','png24':'png','dithered':'png'},DEFAULT_FORMAT:'jpeg',initialize:function(name,url,params,options){OpenLayers.Layer.KaMap.prototype.initialize.apply(this,arguments);this.extension=this.IMAGE_EXTENSIONS[this.params.i.toLowerCase()||DEFAULT_FORMAT];},getURL:function(bounds){bounds=this.adjustBounds(bounds);var mapRes=this.map.getResolution();var scale=Math.round((this.map.getScale()*10000))/10000;var pX=Math.round(bounds.left/mapRes);var pY=-Math.round(bounds.top/mapRes);var metaX=Math.floor(pX/this.tileSize.w/this.params.metaTileSize.w)*this.tileSize.w*this.params.metaTileSize.w;var metaY=Math.floor(pY/this.tileSize.h/this.params.metaTileSize.h)*this.tileSize.h*this.params.metaTileSize.h;var url=this.url;if(OpenLayers.Util.isArray(url)){url=this.selectUrl(paramsString,url);}
+var components=[url,"/",this.params.map,"/",scale,"/",this.params.g.replace(/\s/g,'_'),"/def/t",metaY,"/l",metaX,"/t",pY,"l",pX,".",this.extension];return components.join("");},CLASS_NAME:"OpenLayers.Layer.KaMapCache"});OpenLayers.Protocol.WFS.v1_1_0=OpenLayers.Class(OpenLayers.Protocol.WFS.v1,{version:"1.1.0",initialize:function(options){OpenLayers.Protocol.WFS.v1.prototype.initialize.apply(this,arguments);if(this.outputFormat&&!this.readFormat){if(this.outputFormat.toLowerCase()=="gml2"){this.readFormat=new OpenLayers.Format.GML.v2({featureType:this.featureType,featureNS:this.featureNS,geometryName:this.geometryName});}else if(this.outputFormat.toLowerCase()=="json"){this.readFormat=new OpenLayers.Format.GeoJSON();}}},CLASS_NAME:"OpenLayers.Protocol.WFS.v1_1_0"});OpenLayers.Format.WMSCapabilities.v1_1_1=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.1",initialize:function(options){OpenLayers.Format.WMSCapabilities.v1_1.prototype.initialize.apply(this,[options]);},readers:{"wms":OpenLayers.Util.applyDefaults({"SRS":function(node,obj){obj.srs[this.getChildValue(node)]=true;}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1"});OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1_1,{version:"1.1.1",profile:"WMSC",initialize:function(options){OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.initialize.apply(this,[options]);},readers:{"wms":OpenLayers.Util.applyDefaults({"VendorSpecificCapabilities":function(node,obj){obj.vendorSpecific={tileSets:[]};this.readChildNodes(node,obj.vendorSpecific);},"TileSet":function(node,vendorSpecific){var tileset={srs:{},bbox:{},resolutions:[]};this.readChildNodes(node,tileset);vendorSpecific.tileSets.push(tileset);},"Resolutions":function(node,tileset){var res=this.getChildValue(node).split(" ");for(var i=0,len=res.length;i<len;i++){if(res[i]!=""){tileset.resolutions.push(parseFloat(res[i]));}}},"Width":function(node,tileset){tileset.width=parseInt(this.getChildValue(node));},"Height":function(node,tileset){tileset.height=parseInt(this.getChildValue(node));},"Layers":function(node,tileset){tileset.layers=this.getChildValue(node);},"Styles":function(node,tileset){tileset.styles=this.getChildValue(node);}},OpenLayers.Format.WMSCapabilities.v1_1_1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_1_WMSC"});OpenLayers.Format.WMSCapabilities.v1_1_0=OpenLayers.Class(OpenLayers.Format.WMSCapabilities.v1_1,{version:"1.1.0",initialize:function(options){OpenLayers.Format.WMSCapabilities.v1_1.prototype.initialize.apply(this,[options]);},readers:{"wms":OpenLayers.Util.applyDefaults({"SRS":function(node,obj){var srs=this.getChildValue(node);var values=srs.split(/ +/);for(var i=0,len=values.length;i<len;i++){obj.srs[values[i]]=true;}}},OpenLayers.Format.WMSCapabilities.v1_1.prototype.readers["wms"])},CLASS_NAME:"OpenLayers.Format.WMSCapabilities.v1_1_0"});OpenLayers.Layer.WFS=OpenLayers.Class(OpenLayers.Layer.Vector,OpenLayers.Layer.Markers,{isBaseLayer:false,tile:null,ratio:2,DEFAULT_PARAMS:{service:"WFS",version:"1.0.0",request:"GetFeature"},featureClass:null,format:null,formatObject:null,formatOptions:null,vectorMode:true,encodeBBOX:false,extractAttributes:false,initialize:function(name,url,params,options){if(options==undefined){options={};}
+if(options.featureClass||!OpenLayers.Layer.Vector||!OpenLayers.Feature.Vector){this.vectorMode=false;}
+params=OpenLayers.Util.upperCaseObject(params);OpenLayers.Util.extend(options,{'reportError':false});var newArguments=[];newArguments.push(name,options);OpenLayers.Layer.Vector.prototype.initialize.apply(this,newArguments);if(!this.renderer||!this.vectorMode){this.vectorMode=false;if(!options.featureClass){options.featureClass=OpenLayers.Feature.WFS;}
+OpenLayers.Layer.Markers.prototype.initialize.apply(this,newArguments);}
+if(this.params&&this.params.typename&&!this.options.typename){this.options.typename=this.params.typename;}
+if(!this.options.geometry_column){this.options.geometry_column="the_geom";}
+this.params=OpenLayers.Util.applyDefaults(params,OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS));this.url=url;},destroy:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.destroy.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.destroy.apply(this,arguments);}
+if(this.tile){this.tile.destroy();}
+this.tile=null;this.ratio=null;this.featureClass=null;this.format=null;if(this.formatObject&&this.formatObject.destroy){this.formatObject.destroy();}
+this.formatObject=null;this.formatOptions=null;this.vectorMode=null;this.encodeBBOX=null;this.extractAttributes=null;},setMap:function(map){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);var options={'extractAttributes':this.extractAttributes};OpenLayers.Util.extend(options,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();}
+this.formatObject=this.format?new this.format(options):new OpenLayers.Format.GML(options);}else{OpenLayers.Layer.Markers.prototype.setMap.apply(this,arguments);}},moveTo:function(bounds,zoomChanged,dragging){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.moveTo.apply(this,arguments);}
+if(dragging){return false;}
+if(zoomChanged){if(this.vectorMode){this.renderer.clear();}}
+if(this.options.minZoomLevel){OpenLayers.Console.warn(OpenLayers.i18n('minZoomLevelError'));if(this.map.getZoom()<this.options.minZoomLevel){return null;}}
+if(bounds==null){bounds=this.map.getExtent();}
+var firstRendering=(this.tile==null);var outOfBounds=(!firstRendering&&!this.tile.bounds.containsBounds(bounds));if(zoomChanged||firstRendering||(!dragging&&outOfBounds)){var center=bounds.getCenterLonLat();var tileWidth=bounds.getWidth()*this.ratio;var tileHeight=bounds.getHeight()*this.ratio;var tileBounds=new OpenLayers.Bounds(center.lon-(tileWidth/2),center.lat-(tileHeight/2),center.lon+(tileWidth/2),center.lat+(tileHeight/2));var tileSize=this.map.getSize();tileSize.w=tileSize.w*this.ratio;tileSize.h=tileSize.h*this.ratio;var ul=new OpenLayers.LonLat(tileBounds.left,tileBounds.top);var pos=this.map.getLayerPxFromLonLat(ul);var url=this.getFullRequestString();var params=null;var filter=this.params.filter||this.params.FILTER;if(filter){params={FILTER:filter};}
+else{params={BBOX:this.encodeBBOX?tileBounds.toBBOX():tileBounds.toArray()};}
+if(this.map&&!this.projection.equals(this.map.getProjectionObject())){var projectedBounds=tileBounds.clone();projectedBounds.transform(this.map.getProjectionObject(),this.projection);if(!filter){params.BBOX=this.encodeBBOX?projectedBounds.toBBOX():projectedBounds.toArray();}}
+url+="&"+OpenLayers.Util.getParameterString(params);if(!this.tile){this.tile=new OpenLayers.Tile.WFS(this,pos,tileBounds,url,tileSize);this.addTileMonitoringHooks(this.tile);this.tile.draw();}else{if(this.vectorMode){this.destroyFeatures();this.renderer.clear();}else{this.clearMarkers();}
+this.removeTileMonitoringHooks(this.tile);this.tile.destroy();this.tile=null;this.tile=new OpenLayers.Tile.WFS(this,pos,tileBounds,url,tileSize);this.addTileMonitoringHooks(this.tile);this.tile.draw();}}},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){if(this==this.layer.tile){this.layer.events.triggerEvent("loadstart");}};tile.events.register("loadstart",tile,tile.onLoadStart);tile.onLoadEnd=function(){if(this==this.layer.tile){this.layer.events.triggerEvent("tileloaded");this.layer.events.triggerEvent("loadend");}};tile.events.register("loadend",tile,tile.onLoadEnd);tile.events.register("unload",tile,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:tile});},onMapResize:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.onMapResize.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.onMapResize.apply(this,arguments);}},display:function(){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.display.apply(this,arguments);}else{OpenLayers.Layer.Markers.prototype.display.apply(this,arguments);}},mergeNewParams:function(newParams){var upperParams=OpenLayers.Util.upperCaseObject(newParams);var newArguments=[upperParams];return OpenLayers.Layer.HTTPRequest.prototype.mergeNewParams.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.WFS(this.name,this.url,this.params,this.getOptions());}
+if(this.vectorMode){obj=OpenLayers.Layer.Vector.prototype.clone.apply(this,[obj]);}else{obj=OpenLayers.Layer.Markers.prototype.clone.apply(this,[obj]);}
+return obj;},getFullRequestString:function(newParams,altUrl){var projectionCode=this.projection.getCode()||this.map.getProjection();this.params.SRS=(projectionCode=="none")?null:projectionCode;return OpenLayers.Layer.Grid.prototype.getFullRequestString.apply(this,arguments);},commit:function(){if(!this.writer){var options={};if(this.map&&!this.projection.equals(this.map.getProjectionObject())){options.externalProjection=this.projection;options.internalProjection=this.map.getProjectionObject();}
+this.writer=new OpenLayers.Format.WFS(options,this);}
+var data=this.writer.write(this.features);OpenLayers.Request.POST({url:this.url,data:data,success:this.commitSuccess,failure:this.commitFailure,scope:this});},commitSuccess:function(request){var response=request.responseText;if(response.indexOf('SUCCESS')!=-1){this.commitReport(OpenLayers.i18n("commitSuccess",{'response':response}));for(var i=0;i<this.features.length;i++){this.features[i].state=null;}}else if(response.indexOf('FAILED')!=-1||response.indexOf('Exception')!=-1){this.commitReport(OpenLayers.i18n("commitFailed",{'response':response}));}},commitFailure:function(request){},commitReport:function(string,response){OpenLayers.Console.userError(string);},refresh:function(){if(this.tile){if(this.vectorMode){this.renderer.clear();this.features.length=0;}else{this.clearMarkers();this.markers.length=0;}
+this.tile.draw();}},getDataExtent:function(){var extent;if(this.vectorMode){extent=OpenLayers.Layer.Vector.prototype.getDataExtent.apply(this);}else{extent=OpenLayers.Layer.Markers.prototype.getDataExtent.apply(this);}
+return extent;},setOpacity:function(opacity){if(this.vectorMode){OpenLayers.Layer.Vector.prototype.setOpacity.apply(this,[opacity]);}else{OpenLayers.Layer.Markers.prototype.setOpacity.apply(this,[opacity]);}},CLASS_NAME:"OpenLayers.Layer.WFS"});OpenLayers.Control.LayerSwitcher=OpenLayers.Class(OpenLayers.Control,{roundedCorner:true,roundedCornerColor:"darkblue",layerStates:null,layersDiv:null,baseLayersDiv:null,baseLayers:null,dataLbl:null,dataLayersDiv:null,dataLayers:null,minimizeDiv:null,maximizeDiv:null,ascending:true,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.layerStates=[];},destroy:function(){OpenLayers.Event.stopObservingElement(this.div);OpenLayers.Event.stopObservingElement(this.minimizeDiv);OpenLayers.Event.stopObservingElement(this.maximizeDiv);this.clearLayersArray("base");this.clearLayersArray("data");this.map.events.un({"addlayer":this.redraw,"changelayer":this.redraw,"removelayer":this.redraw,"changebaselayer":this.redraw,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);this.map.events.on({"addlayer":this.redraw,"changelayer":this.redraw,"removelayer":this.redraw,"changebaselayer":this.redraw,scope:this});},draw:function(){OpenLayers.Control.prototype.draw.apply(this);this.loadContents();if(!this.outsideViewport){this.minimizeControl();}
+this.redraw();return this.div;},clearLayersArray:function(layersType){var layers=this[layersType+"Layers"];if(layers){for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];OpenLayers.Event.stopObservingElement(layer.inputElem);OpenLayers.Event.stopObservingElement(layer.labelSpan);}}
+this[layersType+"LayersDiv"].innerHTML="";this[layersType+"Layers"]=[];},checkRedraw:function(){var redraw=false;if(!this.layerStates.length||(this.map.layers.length!=this.layerStates.length)){redraw=true;}else{for(var i=0,len=this.layerStates.length;i<len;i++){var layerState=this.layerStates[i];var layer=this.map.layers[i];if((layerState.name!=layer.name)||(layerState.inRange!=layer.inRange)||(layerState.id!=layer.id)||(layerState.visibility!=layer.visibility)){redraw=true;break;}}}
+return redraw;},redraw:function(){if(!this.checkRedraw()){return this.div;}
+this.clearLayersArray("base");this.clearLayersArray("data");var containsOverlays=false;var containsBaseLayers=false;var len=this.map.layers.length;this.layerStates=new Array(len);for(var i=0;i<len;i++){var layer=this.map.layers[i];this.layerStates[i]={'name':layer.name,'visibility':layer.visibility,'inRange':layer.inRange,'id':layer.id};}
+var layers=this.map.layers.slice();if(!this.ascending){layers.reverse();}
+for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];var baseLayer=layer.isBaseLayer;if(layer.displayInLayerSwitcher){if(baseLayer){containsBaseLayers=true;}else{containsOverlays=true;}
+var checked=(baseLayer)?(layer==this.map.baseLayer):layer.getVisibility();var inputElem=document.createElement("input");inputElem.id=this.id+"_input_"+layer.name;inputElem.name=(baseLayer)?this.id+"_baseLayers":layer.name;inputElem.type=(baseLayer)?"radio":"checkbox";inputElem.value=layer.name;inputElem.checked=checked;inputElem.defaultChecked=checked;if(!baseLayer&&!layer.inRange){inputElem.disabled=true;}
+var context={'inputElem':inputElem,'layer':layer,'layerSwitcher':this};OpenLayers.Event.observe(inputElem,"mouseup",OpenLayers.Function.bindAsEventListener(this.onInputClick,context));var labelSpan=document.createElement("span");OpenLayers.Element.addClass(labelSpan,"labelSpan");if(!baseLayer&&!layer.inRange){labelSpan.style.color="gray";}
+labelSpan.innerHTML=layer.name;labelSpan.style.verticalAlign=(baseLayer)?"bottom":"baseline";OpenLayers.Event.observe(labelSpan,"click",OpenLayers.Function.bindAsEventListener(this.onInputClick,context));var br=document.createElement("br");var groupArray=(baseLayer)?this.baseLayers:this.dataLayers;groupArray.push({'layer':layer,'inputElem':inputElem,'labelSpan':labelSpan});var groupDiv=(baseLayer)?this.baseLayersDiv:this.dataLayersDiv;groupDiv.appendChild(inputElem);groupDiv.appendChild(labelSpan);groupDiv.appendChild(br);}}
+this.dataLbl.style.display=(containsOverlays)?"":"none";this.baseLbl.style.display=(containsBaseLayers)?"":"none";return this.div;},onInputClick:function(e){if(!this.inputElem.disabled){if(this.inputElem.type=="radio"){this.inputElem.checked=true;this.layer.map.setBaseLayer(this.layer);}else{this.inputElem.checked=!this.inputElem.checked;this.layerSwitcher.updateMap();}}
+OpenLayers.Event.stop(e);},onLayerClick:function(e){this.updateMap();},updateMap:function(){for(var i=0,len=this.baseLayers.length;i<len;i++){var layerEntry=this.baseLayers[i];if(layerEntry.inputElem.checked){this.map.setBaseLayer(layerEntry.layer,false);}}
+for(var i=0,len=this.dataLayers.length;i<len;i++){var layerEntry=this.dataLayers[i];layerEntry.layer.setVisibility(layerEntry.inputElem.checked);}},maximizeControl:function(e){this.div.style.width="";this.div.style.height="";this.showControls(false);if(e!=null){OpenLayers.Event.stop(e);}},minimizeControl:function(e){this.div.style.width="0px";this.div.style.height="0px";this.showControls(true);if(e!=null){OpenLayers.Event.stop(e);}},showControls:function(minimize){this.maximizeDiv.style.display=minimize?"":"none";this.minimizeDiv.style.display=minimize?"none":"";this.layersDiv.style.display=minimize?"none":"";},loadContents:function(){OpenLayers.Event.observe(this.div,"mouseup",OpenLayers.Function.bindAsEventListener(this.mouseUp,this));OpenLayers.Event.observe(this.div,"click",this.ignoreEvent);OpenLayers.Event.observe(this.div,"mousedown",OpenLayers.Function.bindAsEventListener(this.mouseDown,this));OpenLayers.Event.observe(this.div,"dblclick",this.ignoreEvent);this.layersDiv=document.createElement("div");this.layersDiv.id=this.id+"_layersDiv";OpenLayers.Element.addClass(this.layersDiv,"layersDiv");this.baseLbl=document.createElement("div");this.baseLbl.innerHTML=OpenLayers.i18n("Base Layer");OpenLayers.Element.addClass(this.baseLbl,"baseLbl");this.baseLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.baseLayersDiv,"baseLayersDiv");this.dataLbl=document.createElement("div");this.dataLbl.innerHTML=OpenLayers.i18n("Overlays");OpenLayers.Element.addClass(this.dataLbl,"dataLbl");this.dataLayersDiv=document.createElement("div");OpenLayers.Element.addClass(this.dataLayersDiv,"dataLayersDiv");if(this.ascending){this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);}else{this.layersDiv.appendChild(this.dataLbl);this.layersDiv.appendChild(this.dataLayersDiv);this.layersDiv.appendChild(this.baseLbl);this.layersDiv.appendChild(this.baseLayersDiv);}
+this.div.appendChild(this.layersDiv);if(this.roundedCorner){OpenLayers.Rico.Corner.round(this.div,{corners:"tl bl",bgColor:"transparent",color:this.roundedCornerColor,blend:false});OpenLayers.Rico.Corner.changeOpacity(this.layersDiv,0.75);}
+var imgLocation=OpenLayers.Util.getImagesLocation();var sz=new OpenLayers.Size(18,18);var img=imgLocation+'layer-switcher-maximize.png';this.maximizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MaximizeDiv",null,sz,img,"absolute");OpenLayers.Element.addClass(this.maximizeDiv,"maximizeDiv");this.maximizeDiv.style.display="none";OpenLayers.Event.observe(this.maximizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.maximizeControl,this));this.div.appendChild(this.maximizeDiv);var img=imgLocation+'layer-switcher-minimize.png';var sz=new OpenLayers.Size(18,18);this.minimizeDiv=OpenLayers.Util.createAlphaImageDiv("OpenLayers_Control_MinimizeDiv",null,sz,img,"absolute");OpenLayers.Element.addClass(this.minimizeDiv,"minimizeDiv");this.minimizeDiv.style.display="none";OpenLayers.Event.observe(this.minimizeDiv,"click",OpenLayers.Function.bindAsEventListener(this.minimizeControl,this));this.div.appendChild(this.minimizeDiv);},ignoreEvent:function(evt){OpenLayers.Event.stop(evt);},mouseDown:function(evt){this.isMouseDown=true;this.ignoreEvent(evt);},mouseUp:function(evt){if(this.isMouseDown){this.isMouseDown=false;this.ignoreEvent(evt);}},CLASS_NAME:"OpenLayers.Control.LayerSwitcher"});OpenLayers.Format.WFS=OpenLayers.Class(OpenLayers.Format.GML,{layer:null,wfsns:"http://www.opengis.net/wfs",ogcns:"http://www.opengis.net/ogc",initialize:function(options,layer){OpenLayers.Format.GML.prototype.initialize.apply(this,[options]);this.layer=layer;if(this.layer.featureNS){this.featureNS=this.layer.featureNS;}
+if(this.layer.options.geometry_column){this.geometryName=this.layer.options.geometry_column;}
+if(this.layer.options.typename){this.featureName=this.layer.options.typename;}},write:function(features){var transaction=this.createElementNS(this.wfsns,'wfs:Transaction');transaction.setAttribute("version","1.0.0");transaction.setAttribute("service","WFS");for(var i=0;i<features.length;i++){switch(features[i].state){case OpenLayers.State.INSERT:transaction.appendChild(this.insert(features[i]));break;case OpenLayers.State.UPDATE:transaction.appendChild(this.update(features[i]));break;case OpenLayers.State.DELETE:transaction.appendChild(this.remove(features[i]));break;}}
+return OpenLayers.Format.XML.prototype.write.apply(this,[transaction]);},createFeatureXML:function(feature){var geometryNode=this.buildGeometryNode(feature.geometry);var geomContainer=this.createElementNS(this.featureNS,"feature:"+this.geometryName);geomContainer.appendChild(geometryNode);var featureContainer=this.createElementNS(this.featureNS,"feature:"+this.featureName);featureContainer.appendChild(geomContainer);for(var attr in feature.attributes){var attrText=this.createTextNode(feature.attributes[attr]);var nodename=attr;if(attr.search(":")!=-1){nodename=attr.split(":")[1];}
+var attrContainer=this.createElementNS(this.featureNS,"feature:"+nodename);attrContainer.appendChild(attrText);featureContainer.appendChild(attrContainer);}
+return featureContainer;},insert:function(feature){var insertNode=this.createElementNS(this.wfsns,'wfs:Insert');insertNode.appendChild(this.createFeatureXML(feature));return insertNode;},update:function(feature){if(!feature.fid){OpenLayers.Console.userError(OpenLayers.i18n("noFID"));}
+var updateNode=this.createElementNS(this.wfsns,'wfs:Update');updateNode.setAttribute("typeName",this.featurePrefix+':'+this.featureName);updateNode.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var propertyNode=this.createElementNS(this.wfsns,'wfs:Property');var nameNode=this.createElementNS(this.wfsns,'wfs:Name');var txtNode=this.createTextNode(this.geometryName);nameNode.appendChild(txtNode);propertyNode.appendChild(nameNode);var valueNode=this.createElementNS(this.wfsns,'wfs:Value');var geometryNode=this.buildGeometryNode(feature.geometry);if(feature.layer){geometryNode.setAttribute("srsName",feature.layer.projection.getCode());}
+valueNode.appendChild(geometryNode);propertyNode.appendChild(valueNode);updateNode.appendChild(propertyNode);for(var propName in feature.attributes){propertyNode=this.createElementNS(this.wfsns,'wfs:Property');nameNode=this.createElementNS(this.wfsns,'wfs:Name');nameNode.appendChild(this.createTextNode(propName));propertyNode.appendChild(nameNode);valueNode=this.createElementNS(this.wfsns,'wfs:Value');valueNode.appendChild(this.createTextNode(feature.attributes[propName]));propertyNode.appendChild(valueNode);updateNode.appendChild(propertyNode);}
+var filterNode=this.createElementNS(this.ogcns,'ogc:Filter');var filterIdNode=this.createElementNS(this.ogcns,'ogc:FeatureId');filterIdNode.setAttribute("fid",feature.fid);filterNode.appendChild(filterIdNode);updateNode.appendChild(filterNode);return updateNode;},remove:function(feature){if(!feature.fid){OpenLayers.Console.userError(OpenLayers.i18n("noFID"));return false;}
+var deleteNode=this.createElementNS(this.wfsns,'wfs:Delete');deleteNode.setAttribute("typeName",this.featurePrefix+':'+this.featureName);deleteNode.setAttribute("xmlns:"+this.featurePrefix,this.featureNS);var filterNode=this.createElementNS(this.ogcns,'ogc:Filter');var filterIdNode=this.createElementNS(this.ogcns,'ogc:FeatureId');filterIdNode.setAttribute("fid",feature.fid);filterNode.appendChild(filterIdNode);deleteNode.appendChild(filterNode);return deleteNode;},destroy:function(){this.layer=null;},CLASS_NAME:"OpenLayers.Format.WFS"});OpenLayers.Format.Atom=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{atom:"http://www.w3.org/2005/Atom",georss:"http://www.georss.org/georss"},feedTitle:"untitled",defaultEntryTitle:"untitled",gmlParser:null,xy:false,read:function(doc){if(typeof doc=="string"){doc=OpenLayers.Format.XML.prototype.read.apply(this,[doc]);}
+return this.parseFeatures(doc);},write:function(features){var doc;if(OpenLayers.Util.isArray(features)){doc=this.createElementNSPlus("atom:feed");doc.appendChild(this.createElementNSPlus("atom:title",{value:this.feedTitle}));for(var i=0,ii=features.length;i<ii;i++){doc.appendChild(this.buildEntryNode(features[i]));}}
+else{doc=this.buildEntryNode(features);}
+return OpenLayers.Format.XML.prototype.write.apply(this,[doc]);},buildContentNode:function(content){var node=this.createElementNSPlus("atom:content",{attributes:{type:content.type||null}});if(content.src){node.setAttribute("src",content.src);}else{if(content.type=="text"||content.type==null){node.appendChild(this.createTextNode(content.value));}else if(content.type=="html"){if(typeof content.value!="string"){throw"HTML content must be in form of an escaped string";}
+node.appendChild(this.createTextNode(content.value));}else if(content.type=="xhtml"){node.appendChild(content.value);}else if(content.type=="xhtml"||content.type.match(/(\+|\/)xml$/)){node.appendChild(content.value);}
+else{node.appendChild(this.createTextNode(content.value));}}
+return node;},buildEntryNode:function(feature){var attrib=feature.attributes;var atomAttrib=attrib.atom||{};var entryNode=this.createElementNSPlus("atom:entry");if(atomAttrib.authors){var authors=OpenLayers.Util.isArray(atomAttrib.authors)?atomAttrib.authors:[atomAttrib.authors];for(var i=0,ii=authors.length;i<ii;i++){entryNode.appendChild(this.buildPersonConstructNode("author",authors[i]));}}
+if(atomAttrib.categories){var categories=OpenLayers.Util.isArray(atomAttrib.categories)?atomAttrib.categories:[atomAttrib.categories];var category;for(var i=0,ii=categories.length;i<ii;i++){category=categories[i];entryNode.appendChild(this.createElementNSPlus("atom:category",{attributes:{term:category.term,scheme:category.scheme||null,label:category.label||null}}));}}
+if(atomAttrib.content){entryNode.appendChild(this.buildContentNode(atomAttrib.content));}
+if(atomAttrib.contributors){var contributors=OpenLayers.Util.isArray(atomAttrib.contributors)?atomAttrib.contributors:[atomAttrib.contributors];for(var i=0,ii=contributors.length;i<ii;i++){entryNode.appendChild(this.buildPersonConstructNode("contributor",contributors[i]));}}
+if(feature.fid){entryNode.appendChild(this.createElementNSPlus("atom:id",{value:feature.fid}));}
+if(atomAttrib.links){var links=OpenLayers.Util.isArray(atomAttrib.links)?atomAttrib.links:[atomAttrib.links];var link;for(var i=0,ii=links.length;i<ii;i++){link=links[i];entryNode.appendChild(this.createElementNSPlus("atom:link",{attributes:{href:link.href,rel:link.rel||null,type:link.type||null,hreflang:link.hreflang||null,title:link.title||null,length:link.length||null}}));}}
+if(atomAttrib.published){entryNode.appendChild(this.createElementNSPlus("atom:published",{value:atomAttrib.published}));}
+if(atomAttrib.rights){entryNode.appendChild(this.createElementNSPlus("atom:rights",{value:atomAttrib.rights}));}
+if(atomAttrib.summary||attrib.description){entryNode.appendChild(this.createElementNSPlus("atom:summary",{value:atomAttrib.summary||attrib.description}));}
+entryNode.appendChild(this.createElementNSPlus("atom:title",{value:atomAttrib.title||attrib.title||this.defaultEntryTitle}));if(atomAttrib.updated){entryNode.appendChild(this.createElementNSPlus("atom:updated",{value:atomAttrib.updated}));}
+if(feature.geometry){var whereNode=this.createElementNSPlus("georss:where");whereNode.appendChild(this.buildGeometryNode(feature.geometry));entryNode.appendChild(whereNode);}
+return entryNode;},initGmlParser:function(){this.gmlParser=new OpenLayers.Format.GML.v3({xy:this.xy,featureNS:"http://example.com#feature",internalProjection:this.internalProjection,externalProjection:this.externalProjection});},buildGeometryNode:function(geometry){if(!this.gmlParser){this.initGmlParser();}
+var node=this.gmlParser.writeNode("feature:_geometry",geometry);return node.firstChild;},buildPersonConstructNode:function(name,value){var oNames=["uri","email"];var personNode=this.createElementNSPlus("atom:"+name);personNode.appendChild(this.createElementNSPlus("atom:name",{value:value.name}));for(var i=0,ii=oNames.length;i<ii;i++){if(value[oNames[i]]){personNode.appendChild(this.createElementNSPlus("atom:"+oNames[i],{value:value[oNames[i]]}));}}
+return personNode;},getFirstChildValue:function(node,nsuri,name,def){var value;var nodes=this.getElementsByTagNameNS(node,nsuri,name);if(nodes&&nodes.length>0){value=this.getChildValue(nodes[0],def);}else{value=def;}
+return value;},parseFeature:function(node){var atomAttrib={};var value=null;var nodes=null;var attval=null;var atomns=this.namespaces.atom;this.parsePersonConstructs(node,"author",atomAttrib);nodes=this.getElementsByTagNameNS(node,atomns,"category");if(nodes.length>0){atomAttrib.categories=[];}
+for(var i=0,ii=nodes.length;i<ii;i++){value={};value.term=nodes[i].getAttribute("term");attval=nodes[i].getAttribute("scheme");if(attval){value.scheme=attval;}
+attval=nodes[i].getAttribute("label");if(attval){value.label=attval;}
+atomAttrib.categories.push(value);}
+nodes=this.getElementsByTagNameNS(node,atomns,"content");if(nodes.length>0){value={};attval=nodes[0].getAttribute("type");if(attval){value.type=attval;}
+attval=nodes[0].getAttribute("src");if(attval){value.src=attval;}else{if(value.type=="text"||value.type=="html"||value.type==null){value.value=this.getFirstChildValue(node,atomns,"content",null);}else if(value.type=="xhtml"||value.type.match(/(\+|\/)xml$/)){value.value=this.getChildEl(nodes[0]);}else{value.value=this.getFirstChildValue(node,atomns,"content",null);}
+atomAttrib.content=value;}}
+this.parsePersonConstructs(node,"contributor",atomAttrib);atomAttrib.id=this.getFirstChildValue(node,atomns,"id",null);nodes=this.getElementsByTagNameNS(node,atomns,"link");if(nodes.length>0){atomAttrib.links=new Array(nodes.length);}
+var oAtts=["rel","type","hreflang","title","length"];for(var i=0,ii=nodes.length;i<ii;i++){value={};value.href=nodes[i].getAttribute("href");for(var j=0,jj=oAtts.length;j<jj;j++){attval=nodes[i].getAttribute(oAtts[j]);if(attval){value[oAtts[j]]=attval;}}
+atomAttrib.links[i]=value;}
+value=this.getFirstChildValue(node,atomns,"published",null);if(value){atomAttrib.published=value;}
+value=this.getFirstChildValue(node,atomns,"rights",null);if(value){atomAttrib.rights=value;}
+value=this.getFirstChildValue(node,atomns,"summary",null);if(value){atomAttrib.summary=value;}
+atomAttrib.title=this.getFirstChildValue(node,atomns,"title",null);atomAttrib.updated=this.getFirstChildValue(node,atomns,"updated",null);var featureAttrib={title:atomAttrib.title,description:atomAttrib.summary,atom:atomAttrib};var geometry=this.parseLocations(node)[0];var feature=new OpenLayers.Feature.Vector(geometry,featureAttrib);feature.fid=atomAttrib.id;return feature;},parseFeatures:function(node){var features=[];var entries=this.getElementsByTagNameNS(node,this.namespaces.atom,"entry");if(entries.length==0){entries=[node];}
+for(var i=0,ii=entries.length;i<ii;i++){features.push(this.parseFeature(entries[i]));}
+return features;},parseLocations:function(node){var georssns=this.namespaces.georss;var locations={components:[]};var where=this.getElementsByTagNameNS(node,georssns,"where");if(where&&where.length>0){if(!this.gmlParser){this.initGmlParser();}
+for(var i=0,ii=where.length;i<ii;i++){this.gmlParser.readChildNodes(where[i],locations);}}
+var components=locations.components;var point=this.getElementsByTagNameNS(node,georssns,"point");if(point&&point.length>0){for(var i=0,ii=point.length;i<ii;i++){var xy=OpenLayers.String.trim(point[i].firstChild.nodeValue).split(/\s+/);if(xy.length!=2){xy=OpenLayers.String.trim(point[i].firstChild.nodeValue).split(/\s*,\s*/);}
+components.push(new OpenLayers.Geometry.Point(parseFloat(xy[1]),parseFloat(xy[0])));}}
+var line=this.getElementsByTagNameNS(node,georssns,"line");if(line&&line.length>0){var coords;var p;var points;for(var i=0,ii=line.length;i<ii;i++){coords=OpenLayers.String.trim(line[i].firstChild.nodeValue).split(/\s+/);points=[];for(var j=0,jj=coords.length;j<jj;j+=2){p=new OpenLayers.Geometry.Point(parseFloat(coords[j+1]),parseFloat(coords[j]));points.push(p);}
+components.push(new OpenLayers.Geometry.LineString(points));}}
+var polygon=this.getElementsByTagNameNS(node,georssns,"polygon");if(polygon&&polygon.length>0){var coords;var p;var points;for(var i=0,ii=polygon.length;i<ii;i++){coords=OpenLayers.String.trim(polygon[i].firstChild.nodeValue).split(/\s+/);points=[];for(var j=0,jj=coords.length;j<jj;j+=2){p=new OpenLayers.Geometry.Point(parseFloat(coords[j+1]),parseFloat(coords[j]));points.push(p);}
+components.push(new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(components)]));}}
+if(this.internalProjection&&this.externalProjection){for(var i=0,ii=components.length;i<ii;i++){if(components[i]){components[i].transform(this.externalProjection,this.internalProjection);}}}
+return components;},parsePersonConstructs:function(node,name,data){var persons=[];var atomns=this.namespaces.atom;var nodes=this.getElementsByTagNameNS(node,atomns,name);var oAtts=["uri","email"];for(var i=0,ii=nodes.length;i<ii;i++){var value={};value.name=this.getFirstChildValue(nodes[i],atomns,"name",null);for(var j=0,jj=oAtts.length;j<jj;j++){var attval=this.getFirstChildValue(nodes[i],atomns,oAtts[j],null);if(attval){value[oAtts[j]]=attval;}}
+persons.push(value);}
+if(persons.length>0){data[name+"s"]=persons;}},CLASS_NAME:"OpenLayers.Format.Atom"});OpenLayers.Control.KeyboardDefaults=OpenLayers.Class(OpenLayers.Control,{autoActivate:true,slideFactor:75,draw:function(){this.handler=new OpenLayers.Handler.Keyboard(this,{"keydown":this.defaultKeyPress});},defaultKeyPress:function(evt){switch(evt.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:var size=this.map.getSize();this.map.pan(0,-0.75*size.h);break;case 34:var size=this.map.getSize();this.map.pan(0,0.75*size.h);break;case 35:var size=this.map.getSize();this.map.pan(0.75*size.w,0);break;case 36:var size=this.map.getSize();this.map.pan(-0.75*size.w,0);break;case 43:case 61:case 187:case 107:this.map.zoomIn();break;case 45:case 109:case 189:case 95:this.map.zoomOut();break;}},CLASS_NAME:"OpenLayers.Control.KeyboardDefaults"});OpenLayers.Format.WMC.v1_0_0=OpenLayers.Class(OpenLayers.Format.WMC.v1,{VERSION:"1.0.0",schemaLocation:"http://www.opengis.net/context http://schemas.opengis.net/context/1.0.0/context.xsd",initialize:function(options){OpenLayers.Format.WMC.v1.prototype.initialize.apply(this,[options]);},read_wmc_SRS:function(layerContext,node){var srs=this.getChildValue(node);if(typeof layerContext.projections!="object"){layerContext.projections={};}
+var values=srs.split(/ +/);for(var i=0,len=values.length;i<len;i++){layerContext.projections[values[i]]=true;}},write_wmc_Layer:function(context){var node=OpenLayers.Format.WMC.v1.prototype.write_wmc_Layer.apply(this,[context]);if(context.srs){var projections=[];for(var name in context.srs){projections.push(name);}
+node.appendChild(this.createElementDefaultNS("SRS",projections.join(" ")));}
+node.appendChild(this.write_wmc_FormatList(context));node.appendChild(this.write_wmc_StyleList(context));if(context.dimensions){node.appendChild(this.write_wmc_DimensionList(context));}
+node.appendChild(this.write_wmc_LayerExtension(context));},CLASS_NAME:"OpenLayers.Format.WMC.v1_0_0"});OpenLayers.Feature.WFS=OpenLayers.Class(OpenLayers.Feature,{initialize:function(layer,xmlNode){var newArguments=arguments;var data=this.processXMLNode(xmlNode);newArguments=new Array(layer,data.lonlat,data);OpenLayers.Feature.prototype.initialize.apply(this,newArguments);this.createMarker();this.layer.addMarker(this.marker);},destroy:function(){if(this.marker!=null){this.layer.removeMarker(this.marker);}
+OpenLayers.Feature.prototype.destroy.apply(this,arguments);},processXMLNode:function(xmlNode){var point=OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,"http://www.opengis.net/gml","gml","Point");var text=OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(point[0],"http://www.opengis.net/gml","gml","coordinates")[0]);var floats=text.split(",");return{lonlat:new OpenLayers.LonLat(parseFloat(floats[0]),parseFloat(floats[1])),id:null};},CLASS_NAME:"OpenLayers.Feature.WFS"});OpenLayers.Format.WMTSCapabilities.v1_0_0=OpenLayers.Class(OpenLayers.Format.OWSCommon.v1_1_0,{version:"1.0.0",namespaces:{ows:"http://www.opengis.net/ows/1.1",wmts:"http://www.opengis.net/wmts/1.0",xlink:"http://www.w3.org/1999/xlink"},yx:null,defaultPrefix:"wmts",initialize:function(options){OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);this.options=options;var yx=OpenLayers.Util.extend({},OpenLayers.Format.WMTSCapabilities.prototype.yx);this.yx=OpenLayers.Util.extend(yx,this.yx);},read:function(data){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);}
+if(data&&data.nodeType==9){data=data.documentElement;}
+var capabilities={};this.readNode(data,capabilities);capabilities.version=this.version;return capabilities;},readers:{"wmts":{"Capabilities":function(node,obj){this.readChildNodes(node,obj);},"Contents":function(node,obj){obj.contents={};obj.contents.layers=[];obj.contents.tileMatrixSets={};this.readChildNodes(node,obj.contents);},"Layer":function(node,obj){var layer={styles:[],formats:[],tileMatrixSetLinks:[]};layer.layers=[];this.readChildNodes(node,layer);obj.layers.push(layer);},"Style":function(node,obj){var style={};style.isDefault=(node.getAttribute("isDefault")==="true");this.readChildNodes(node,style);obj.styles.push(style);},"Format":function(node,obj){obj.formats.push(this.getChildValue(node));},"TileMatrixSetLink":function(node,obj){var tileMatrixSetLink={};this.readChildNodes(node,tileMatrixSetLink);obj.tileMatrixSetLinks.push(tileMatrixSetLink);},"TileMatrixSet":function(node,obj){if(obj.layers){var tileMatrixSet={matrixIds:[]};this.readChildNodes(node,tileMatrixSet);obj.tileMatrixSets[tileMatrixSet.identifier]=tileMatrixSet;}else{obj.tileMatrixSet=this.getChildValue(node);}},"TileMatrix":function(node,obj){var tileMatrix={supportedCRS:obj.supportedCRS};this.readChildNodes(node,tileMatrix);obj.matrixIds.push(tileMatrix);},"ScaleDenominator":function(node,obj){obj.scaleDenominator=parseFloat(this.getChildValue(node));},"TopLeftCorner":function(node,obj){var topLeftCorner=this.getChildValue(node);var coords=topLeftCorner.split(" ");var yx;if(obj.supportedCRS){var crs=obj.supportedCRS.replace(/urn:ogc:def:crs:(\w+):.+:(\w+)$/,"urn:ogc:def:crs:$1::$2");yx=!!this.yx[crs];}
+if(yx){obj.topLeftCorner=new OpenLayers.LonLat(coords[1],coords[0]);}else{obj.topLeftCorner=new OpenLayers.LonLat(coords[0],coords[1]);}},"TileWidth":function(node,obj){obj.tileWidth=parseInt(this.getChildValue(node));},"TileHeight":function(node,obj){obj.tileHeight=parseInt(this.getChildValue(node));},"MatrixWidth":function(node,obj){obj.matrixWidth=parseInt(this.getChildValue(node));},"MatrixHeight":function(node,obj){obj.matrixHeight=parseInt(this.getChildValue(node));},"ResourceURL":function(node,obj){obj.resourceUrl=obj.resourceUrl||{};obj.resourceUrl[node.getAttribute("resourceType")]={format:node.getAttribute("format"),template:node.getAttribute("template")};},"WSDL":function(node,obj){obj.wsdl={};obj.wsdl.href=node.getAttribute("xlink:href");},"ServiceMetadataURL":function(node,obj){obj.serviceMetadataUrl={};obj.serviceMetadataUrl.href=node.getAttribute("xlink:href");}},"ows":OpenLayers.Format.OWSCommon.v1_1_0.prototype.readers["ows"]},CLASS_NAME:"OpenLayers.Format.WMTSCapabilities.v1_0_0"});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/blank.gif b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/blank.gif
new file mode 100644
index 0000000..4bcc753
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/blank.gif differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/east-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/east-mini.png
new file mode 100644
index 0000000..ecedc5e
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/east-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/images.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/images.png
new file mode 100644
index 0000000..363cd3d
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/images.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-maximize.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-maximize.png
new file mode 100644
index 0000000..f346086
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-maximize.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-minimize.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-minimize.png
new file mode 100644
index 0000000..b4aab0b
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/layer-switcher-minimize.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/north-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/north-mini.png
new file mode 100644
index 0000000..dfd7211
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/north-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/south-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/south-mini.png
new file mode 100644
index 0000000..2970875
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/south-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/west-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/west-mini.png
new file mode 100644
index 0000000..363cd3d
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/west-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-minus-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-minus-mini.png
new file mode 100644
index 0000000..8f0d77f
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-minus-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-plus-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-plus-mini.png
new file mode 100644
index 0000000..a73ab4e
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-plus-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-world-mini.png b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-world-mini.png
new file mode 100644
index 0000000..aebf22d
Binary files /dev/null and b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/img/zoom-world-mini.png differ
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/theme/default/style.css b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/theme/default/style.css
new file mode 100644
index 0000000..3aeac29
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/api/theme/default/style.css
@@ -0,0 +1,433 @@
+div.olMap {
+    z-index: 0;
+    padding: 0 !important;
+    margin: 0 !important;
+    cursor: default;
+}
+
+div.olMapViewport {
+    text-align: left;
+}
+
+div.olLayerDiv {
+   -moz-user-select: none;
+   -khtml-user-select: none;
+}
+
+.olLayerGoogleCopyright {
+    left: 2px;
+    bottom: 2px;
+}
+.olLayerGoogleV3.olLayerGoogleCopyright {
+    right: auto !important;
+}
+.olLayerGooglePoweredBy {
+    left: 2px;
+    bottom: 15px;   
+}
+.olLayerGoogleV3.olLayerGooglePoweredBy {
+    bottom: 15px !important;
+}
+.olControlAttribution {
+    font-size: smaller; 
+    right: 3px; 
+    bottom: 4.5em; 
+    position: absolute; 
+    display: block;
+}
+.olControlScale {
+    right: 3px;
+    bottom: 3em;
+    display: block;
+    position: absolute;
+    font-size: smaller;
+}
+.olControlScaleLine {
+   display: block;
+   position: absolute;
+   left: 10px;
+   bottom: 15px;
+   font-size: xx-small;
+}
+.olControlScaleLineBottom {
+   border: solid 2px black;
+   border-bottom: none;
+   margin-top:-2px;
+   text-align: center;
+}
+.olControlScaleLineTop {
+   border: solid 2px black;
+   border-top: none;
+   text-align: center;
+}
+
+.olControlPermalink {
+    right: 3px;
+    bottom: 1.5em;
+    display: block;
+    position: absolute;
+    font-size: smaller;
+} 
+
+div.olControlMousePosition {
+    bottom: 0em;
+    right: 3px;
+    display: block;
+    position: absolute;
+    font-family: Arial;
+    font-size: smaller;
+}
+
+.olControlOverviewMapContainer {
+    position: absolute;
+    bottom: 0;
+    right: 0;
+}
+
+.olControlOverviewMapElement {
+    padding: 10px 18px 10px 10px;
+    background-color: #00008B;
+    -moz-border-radius: 1em 0 0 0;
+}
+
+.olControlOverviewMapMinimizeButton {
+    right: 0;
+    bottom: 80px;
+    cursor: pointer;
+}    
+
+.olControlOverviewMapMaximizeButton {
+    right: 0;
+    bottom: 80px;
+    cursor: pointer;
+}
+
+.olControlOverviewMapExtentRectangle {
+    overflow: hidden;
+    background-image: url("img/blank.gif");
+    cursor: move;
+    border: 2px dotted red;
+}
+.olControlOverviewMapRectReplacement {
+    overflow: hidden;
+    cursor: move;
+    background-image: url("img/overview_replacement.gif");
+    background-repeat: no-repeat;
+    background-position: center;
+}
+
+.olLayerGeoRSSDescription {
+    float:left;
+    width:100%;
+    overflow:auto;
+    font-size:1.0em;
+}
+.olLayerGeoRSSClose {
+    float:right;
+    color:gray;
+    font-size:1.2em;
+    margin-right:6px;
+    font-family:sans-serif;
+}
+.olLayerGeoRSSTitle {
+    float:left;font-size:1.2em;
+}
+
+.olPopupContent {
+    padding:5px;
+    overflow: auto;
+}    
+
+.olControlNavigationHistory {
+   background-image: url("img/navigation_history.png");
+   background-repeat: no-repeat;
+   width:  24px;
+   height: 24px;
+
+}
+.olControlNavigationHistoryPreviousItemActive { 
+  background-position: 0 0;
+}
+.olControlNavigationHistoryPreviousItemInactive { 
+   background-position: 0 -24px;
+}
+.olControlNavigationHistoryNextItemActive { 
+   background-position: -24px 0;
+}
+.olControlNavigationHistoryNextItemInactive { 
+   background-position: -24px -24px;
+}
+
+div.olControlSaveFeaturesItemActive { 
+    background-image: url(img/save_features_on.png);
+    background-repeat: no-repeat;
+    background-position: 0 1px;
+}
+div.olControlSaveFeaturesItemInactive { 
+    background-image: url(img/save_features_off.png);
+    background-repeat: no-repeat;
+    background-position: 0 1px;
+}
+
+.olHandlerBoxZoomBox {
+    border: 2px solid red;
+    position: absolute;
+    background-color: white;
+    opacity: 0.50;
+    font-size: 1px;
+    filter: alpha(opacity=50);
+}
+.olHandlerBoxSelectFeature {
+    border: 2px solid blue;
+    position: absolute;
+    background-color: white;
+    opacity: 0.50;
+    font-size: 1px;
+    filter: alpha(opacity=50);
+}   
+
+.olControlPanPanel {
+    top: 10px;
+    left: 5px;
+}  
+
+.olControlPanPanel div {
+    background-image: url(img/pan-panel.png);
+    height: 18px;
+    width: 18px;
+    cursor: pointer;
+    position: absolute;
+}
+
+.olControlPanPanel .olControlPanNorthItemInactive {
+    top: 0;
+    left: 9px;
+    background-position: 0 0;
+}
+.olControlPanPanel .olControlPanSouthItemInactive {
+    top: 36px;
+    left: 9px;
+    background-position: 18px 0;
+}
+.olControlPanPanel .olControlPanWestItemInactive {
+    position: absolute;
+    top: 18px;
+    left: 0;
+    background-position: 0 18px;
+}
+.olControlPanPanel .olControlPanEastItemInactive {
+    top: 18px;
+    left: 18px;
+    background-position: 18px 18px;
+}
+
+.olControlZoomPanel {
+    top: 71px;
+    left: 14px;
+} 
+
+.olControlZoomPanel div {
+    background-image: url(img/zoom-panel.png);
+    position: absolute;
+    height: 18px;
+    width: 18px;
+    cursor: pointer;
+}
+
+.olControlZoomPanel .olControlZoomInItemInactive {
+    top: 0;
+    left: 0;
+    background-position: 0 0;
+}
+
+.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {
+    top: 18px;
+    left: 0;
+    background-position: 0 -18px;
+}
+
+.olControlZoomPanel .olControlZoomOutItemInactive {
+    top: 36px;
+    left: 0;
+    background-position: 0 18px;
+}
+
+/* 
+ * When a potential text is bigger than the image it move the image
+ * with some headers (closes #3154) 
+ */
+.olControlPanZoomBar div {
+    font-size: 1px;
+}
+
+.olPopupCloseBox {
+  background: url("img/close.gif") no-repeat;
+  cursor: pointer;
+}
+
+.olFramedCloudPopupContent {
+    padding: 5px;
+    overflow: auto;
+}
+
+.olControlNoSelect {
+ -moz-user-select: none;
+ -khtml-user-select: none;
+}
+
+.olImageLoadError {
+    background-color: pink;
+    opacity: 0.5;
+    filter: alpha(opacity=50); /* IE */
+}
+
+/**
+ * Cursor styles
+ */
+
+.olCursorWait {
+    cursor: wait;
+}
+.olDragDown {
+    cursor: move;
+}
+.olDrawBox {
+    cursor: crosshair;
+}
+.olControlDragFeatureOver {
+    cursor: move;
+}
+.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown {
+    cursor: -moz-grabbing;
+}
+
+/**
+ * Layer switcher
+ */
+.olControlLayerSwitcher {
+    position: absolute;
+    top: 25px;
+    right: 0;
+    width: 20em;
+    font-family: sans-serif;
+    font-weight: bold;
+    margin-top: 3px;
+    margin-left: 3px;
+    margin-bottom: 3px;
+    font-size: smaller;
+    color: white;
+    background-color: transparent;
+}
+
+.olControlLayerSwitcher .layersDiv {
+    padding-top: 5px;
+    padding-left: 10px;
+    padding-bottom: 5px;
+    padding-right: 75px;
+    background-color: darkblue;
+    width: 100%;
+    height: 100%;
+}
+
+.olControlLayerSwitcher .layersDiv .baseLbl,
+.olControlLayerSwitcher .layersDiv .dataLbl {
+    margin-top: 3px;
+    margin-left: 3px;
+    margin-bottom: 3px;
+}
+
+.olControlLayerSwitcher .layersDiv .baseLayersDiv,
+.olControlLayerSwitcher .layersDiv .dataLayersDiv {
+    padding-left: 10px;
+}
+
+.olControlLayerSwitcher .maximizeDiv,
+.olControlLayerSwitcher .minimizeDiv {
+    top: 5px;
+    right: 0;
+    cursor: pointer;
+}
+
+.olBingAttribution {
+    color: #DDD;
+}
+.olBingAttribution.road {
+    color: #333;
+}
+
+.olGoogleAttribution.hybrid, .olGoogleAttribution.satellite {
+    color: #EEE;
+}
+.olGoogleAttribution {
+    color: #333;
+}
+span.olGoogleAttribution a {
+    color: #77C;
+}
+span.olGoogleAttribution.hybrid a, span.olGoogleAttribution.satellite a {
+    color: #EEE;
+}
+
+/**
+ * Editing and navigation icons.
+ * (using the editing_tool_bar.png sprint image)
+ */
+.olControlNavToolbar ,
+.olControlEditingToolbar {
+    margin: 5px 5px 0 0;
+}
+.olControlNavToolbar div,
+.olControlEditingToolbar div {
+    background-image: url("img/editing_tool_bar.png");
+    background-repeat: no-repeat;
+    margin: 0 0 5px 5px;
+    width: 24px;
+    height: 22px;
+    cursor: pointer
+}
+/* positions */
+.olControlEditingToolbar {
+    right: 0;
+    top: 0;
+}
+.olControlNavToolbar {
+    top: 295px;
+    left: 9px;
+}
+/* layouts */
+.olControlEditingToolbar div {
+    float: right;
+}
+/* individual controls */
+.olControlNavToolbar .olControlNavigationItemInactive,
+.olControlEditingToolbar .olControlNavigationItemInactive {
+    background-position: -103px -1px;
+}
+.olControlNavToolbar .olControlNavigationItemActive ,
+.olControlEditingToolbar .olControlNavigationItemActive  {
+    background-position: -103px -24px;
+}
+.olControlNavToolbar .olControlZoomBoxItemInactive {
+    background-position: -128px -1px;
+}
+.olControlNavToolbar .olControlZoomBoxItemActive  {
+    background-position: -128px -24px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePointItemInactive {
+    background-position: -77px -1px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePointItemActive {
+    background-position: -77px -24px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePathItemInactive {
+    background-position: -51px -1px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePathItemActive {
+    background-position: -51px -24px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive{
+    background-position: -26px -1px;
+}
+.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive {
+    background-position: -26px -24px;
+}
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/config.xml b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/config.xml
new file mode 100644
index 0000000..73931cd
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/config.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+        id="OSM" 
+        version="0.1"
+        width="800"
+        height="600"
+        ub:resizable="true"
+		    ub:roles="content">   
+		<name>OpenStreetMap</name>
+		<author	href="http://icap.univ-lyon1.fr/"
+				email="guillaume.burel at etu.univ-lyon1.fr">Guillaume Burel - Université Claude Bernard Lyon 1 (ICAP), Délégation Interministérielle à  l'Éducation Numérique en Afrique</author>
+		<description>View maps in OpenStreetMap<description>		
+		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/icon.svg b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/icon.svg
new file mode 100644
index 0000000..44f1ce5
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/icon.svg
@@ -0,0 +1,730 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="256" height="256" id="svg3038" version="1.1" inkscape:version="0.46" sodipodi:docname="osm_logo_soft_freds_version.svg" inkscape:export-filename="/home/fred/bla.png" inkscape:export-xdpi="180" inkscape:export-ydpi="180" sodipodi:version="0.32" inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs id="defs3040">
+    <linearGradient inkscape:collect="always" id="linearGradient8729">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8731"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8733"/>
+    </linearGradient>
+    <linearGradient id="linearGradient6846">
+      <stop id="stop6848" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0.93050194;" offset="0.5" id="stop6852"/>
+      <stop id="stop6850" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" id="linearGradient6589">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop6591"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop6593"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5862">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864"/>
+      <stop id="stop5876" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5762">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764"/>
+      <stop id="stop5770" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5745">
+      <stop style="stop-color:#d0e9f2;stop-opacity:0;" offset="0" id="stop5747"/>
+      <stop id="stop5753" offset="0.83932751" style="stop-color:#d0e9f2;stop-opacity:0;"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:0.28185329;" offset="0.94308507" id="stop5755"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:1;" offset="1" id="stop5749"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4680">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684"/>
+    </linearGradient>
+    <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 32 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="64 : 32 : 1" inkscape:persp3d-origin="32 : 21.333333 : 1" id="perspective3046"/>
+    <inkscape:perspective id="perspective3056" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective3844" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective3871" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective3897" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective3926" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective3953" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective3979" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4005" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4028" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4054" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4083" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4132" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4158" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4184" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4219" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4276" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4302" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4328" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4354" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4386" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4413" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4439" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4465" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4497" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4523" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4549" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4575" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4601" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4627" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4653" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective4837" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4686-3" x1="94.25" y1="-94.671967" x2="9" y2="-179.96893" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-7">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-2"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-7"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4742-3" x1="50.75" y1="-114.4375" x2="35.75" y2="-30.4375" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4846">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4848"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4850"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4734-3" x1="77.625" y1="-163.125" x2="115.25" y2="-74.625" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4853">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4855"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4857"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4726-9" x1="56.5" y1="-50.4375" x2="125.71875" y2="7.0625" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4860">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4862"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4864"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4710-2" x1="35" y1="-163.29688" x2="180.75" y2="-146.79688" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4867">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4869"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4871"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4718-4" x1="57.000099" y1="-141.10941" x2="179" y2="-41.609402" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4874">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4876"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4878"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4694-4" x1="156" y1="-26.5" x2="208.25" y2="39.75" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4881">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4883"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4885"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7" id="linearGradient4702-4" x1="142.75" y1="-169.29688" x2="235" y2="-77.296875" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4888">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4890"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4892"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4806-9" x1="214.25" y1="-161.35938" x2="166.5" y2="-113.71875" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" id="linearGradient4744-9">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4746-3"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4748-8"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4790-3" x1="53.25" y1="-126.5" x2="57.65625" y2="-62.46875" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4758-2" x1="39.5" y1="6.6250248" x2="75.71875" y2="-17.124975" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4750-9" x1="102" y1="-162.34375" x2="85.3125" y2="-121.4375" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4782-5" x1="117.75" y1="-78.09375" x2="63.5" y2="-14.75" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4798-4" x1="180.68745" y1="-125.125" x2="133.93745" y2="-60.74995" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4766-3" x1="170.75" y1="-23.5" x2="130.21875" y2="33.375" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9" id="linearGradient4774-9" x1="213.5" y1="-76" x2="181.75005" y2="-5.6563001" gradientUnits="userSpaceOnUse"/>
+    <linearGradient y2="-5.6563001" x2="181.75005" y1="-76" x1="213.5" gradientUnits="userSpaceOnUse" id="linearGradient4965" xlink:href="#linearGradient4744-9" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective5148" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680" id="linearGradient5168" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346" gradientUnits="userSpaceOnUse" gradientTransform="translate(0,-10)"/>
+    <inkscape:perspective id="perspective5179" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5201" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5201-7" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5201-72" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5201-0" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5260" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5296" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5339" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5383">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5385"/>
+    </clipPath>
+    <inkscape:perspective id="perspective5412" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5426">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5428"/>
+    </clipPath>
+    <inkscape:perspective id="perspective5452" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5466">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5468"/>
+    </clipPath>
+    <inkscape:perspective id="perspective5614" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5638" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5638-1" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5638-3" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5679" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5701" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <inkscape:perspective id="perspective5723" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient5745" id="radialGradient5751" cx="128" cy="86" fx="128" fy="86" r="47" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0212766,0,0,-1.0212766,-212.7234,173.82979)"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762" id="linearGradient5768" x1="123" y1="150.375" x2="133" y2="150.375" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1,0,0,1,46,0)"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762" id="linearGradient5778" x1="128" y1="134.35938" x2="130.875" y2="143.35938" gradientUnits="userSpaceOnUse" gradientTransform="translate(-210,0)"/>
+    <inkscape:perspective id="perspective5788" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762-9" id="linearGradient5768-1" x1="123" y1="150.375" x2="133" y2="150.375" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1,0,0,1,256,0)"/>
+    <linearGradient id="linearGradient5762-9">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-6"/>
+      <stop id="stop5770-3" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-6"/>
+    </linearGradient>
+    <linearGradient y2="150.375" x2="133" y1="150.375" x1="123" gradientTransform="matrix(-2,0,0,1.7699115,174,-86.65044)" gradientUnits="userSpaceOnUse" id="linearGradient5798" xlink:href="#linearGradient5762-9" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective5829" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient y2="150.375" x2="133" y1="150.375" x1="123" gradientTransform="matrix(-2,0,0,1.7699115,384,-86.65044)" gradientUnits="userSpaceOnUse" id="linearGradient5798-4" xlink:href="#linearGradient5762-9-6" inkscape:collect="always"/>
+    <linearGradient id="linearGradient5762-9-6">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-6-6"/>
+      <stop id="stop5770-3-7" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-6-2"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5862" id="linearGradient5868" x1="120" y1="186.5" x2="136" y2="186.5" gradientUnits="userSpaceOnUse" gradientTransform="translate(-210,0)"/>
+    <inkscape:perspective id="perspective5886" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5862-1" id="linearGradient5868-4" x1="120" y1="186.5" x2="136" y2="186.5" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient5862-1">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-0"/>
+      <stop id="stop5876-0" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-6" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-4" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-4"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-3"/>
+    </linearGradient>
+    <linearGradient y2="186.5" x2="136" y1="186.5" x1="120" gradientUnits="userSpaceOnUse" id="linearGradient5899" xlink:href="#linearGradient5862-1" inkscape:collect="always" gradientTransform="translate(-210,67)"/>
+    <inkscape:perspective id="perspective5936" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient y2="186.5" x2="136" y1="186.5" x1="120" gradientUnits="userSpaceOnUse" id="linearGradient5899-3" xlink:href="#linearGradient5862-1-4" inkscape:collect="always" gradientTransform="translate(0,69)"/>
+    <linearGradient id="linearGradient5862-1-4">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-0-7"/>
+      <stop id="stop5876-0-2" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-6-1" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-4-7" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-4-9"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-3-5"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective5936-8" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient y2="186.5" x2="136" y1="186.5" x1="120" gradientUnits="userSpaceOnUse" id="linearGradient5899-9" xlink:href="#linearGradient5862-1-5" inkscape:collect="always" gradientTransform="translate(0,69)"/>
+    <linearGradient id="linearGradient5862-1-5">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-0-5"/>
+      <stop id="stop5876-0-21" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-6-5" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-4-9" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-4-91"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-3-6"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective6014" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient y2="186.5" x2="136" y1="186.5" x1="120" gradientUnits="userSpaceOnUse" id="linearGradient5899-0" xlink:href="#linearGradient5862-1-53" inkscape:collect="always" gradientTransform="translate(0,67)"/>
+    <linearGradient id="linearGradient5862-1-53">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-0-2"/>
+      <stop id="stop5876-0-1" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-6-9" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-4-76" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-4-8"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-3-2"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective6080" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient id="linearGradient5745-3">
+      <stop style="stop-color:#d0e9f2;stop-opacity:0;" offset="0" id="stop5747-3"/>
+      <stop id="stop5753-6" offset="0.83932751" style="stop-color:#d0e9f2;stop-opacity:0;"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:0.28185329;" offset="0.94308507" id="stop5755-9"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:1;" offset="1" id="stop5749-0"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5762-8">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-5"/>
+      <stop id="stop5770-1" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-2"/>
+    </linearGradient>
+    <linearGradient id="linearGradient6096">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop6098"/>
+      <stop id="stop6100" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop6102"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5862-3">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-8"/>
+      <stop id="stop5876-09" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-2" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-3" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-1"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-8"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5762-9-4">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-6-1"/>
+      <stop id="stop5770-3-6" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-6-3"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5862-1-55">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-0-0"/>
+      <stop id="stop5876-0-12" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-6-6" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-4-4" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-4-85"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-3-62"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5862-1-55" id="linearGradient6241" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.9842718,0.9842718,-0.9842718,0.9842718,66.992154,-59.215687)" x1="120" y1="186.5" x2="136" y2="186.5"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762-9-4" id="linearGradient6244" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1.9685436,-1.9685436,-1.742074,1.742074,596.18632,167.51089)" x1="123" y1="150.375" x2="133" y2="150.375"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5862-3" id="linearGradient6247" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.98427179,0.98427179,-0.98427179,0.98427179,132.93836,-125.1619)" x1="120" y1="186.5" x2="136" y2="186.5"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762-8" id="linearGradient6250" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.98427179,-0.98427179,-0.98427179,0.98427179,384.91194,126.81168)" x1="123" y1="150.375" x2="133" y2="150.375"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762-8" id="linearGradient6253" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.98427179,0.98427179,-0.98427179,0.98427179,132.93836,-125.1619)" x1="128" y1="134.35938" x2="130.875" y2="143.35938"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient5745-3" id="radialGradient6256" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0052137,1.0052137,1.0052137,-1.0052137,-40.83796,43.253296)" cx="128" cy="86" fx="128" fy="86" r="47"/>
+    <inkscape:perspective id="perspective6269" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient5762-9-4-6" id="linearGradient6244-4" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1.9685436,-1.9685436,-1.742074,1.742074,596.18632,177.51089)" x1="123" y1="150.375" x2="133" y2="150.375"/>
+    <linearGradient id="linearGradient5762-9-4-6">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-6-1-0"/>
+      <stop id="stop5770-3-6-7" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-6-3-4"/>
+    </linearGradient>
+    <linearGradient y2="150.375" x2="133" y1="167.7272" x1="108.00327" gradientTransform="matrix(-1.9685436,-1.9685436,-1.742074,1.742074,596.18632,167.51089)" gradientUnits="userSpaceOnUse" id="linearGradient6279" xlink:href="#linearGradient4680" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective6314" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient6846" id="radialGradient6427" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-46.348455,24.528408)" gradientUnits="userSpaceOnUse"/>
+    <inkscape:perspective id="perspective6437" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-9" id="radialGradient6427-8" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1,0,0,0.69209216,-1.4142136,17.754313)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" id="linearGradient4744-9-9">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4746-3-8"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4748-8-3"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-9" id="radialGradient6445" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1,0,0,0.69209216,-1.4142136,17.754313)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-9" id="radialGradient6453" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1,0,0,0.69209216,-1.4142136,17.754313)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-9" id="radialGradient6461" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1,0,0,0.69209216,-1.4142136,17.754313)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-9" id="radialGradient6469" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1,0,0,0.69209216,-1.4142136,17.754313)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914635,-45.919787,25.814437)" gradientUnits="userSpaceOnUse" id="radialGradient6482" xlink:href="#linearGradient4744-9-9" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective6551" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient5745-3-3" id="radialGradient6256-6" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0052137,1.0052137,1.0052137,-1.0052137,-40.83796,53.253296)" cx="128" cy="86" fx="128" fy="86" r="47"/>
+    <linearGradient id="linearGradient5745-3-3">
+      <stop style="stop-color:#d0e9f2;stop-opacity:0;" offset="0" id="stop5747-3-0"/>
+      <stop id="stop5753-6-1" offset="0.83932751" style="stop-color:#d0e9f2;stop-opacity:0;"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:0.28185329;" offset="0.94308507" id="stop5755-9-4"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:1;" offset="1" id="stop5749-0-8"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient6589" id="linearGradient6595" x1="126.64295" y1="29.814894" x2="179.96115" y2="137.19565" gradientUnits="userSpaceOnUse" gradientTransform="translate(0,-10)"/>
+    <inkscape:perspective id="perspective6605" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient6589-6" id="linearGradient6595-6" x1="126.64295" y1="29.814894" x2="179.96115" y2="137.19565" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient6589-6">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop6591-6"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop6593-1"/>
+    </linearGradient>
+    <linearGradient gradientTransform="matrix(-0.50295302,0.19839946,0.19720153,-0.43253662,276.15635,123.41729)" y2="137.19565" x2="179.96115" y1="29.814894" x1="126.64295" gradientUnits="userSpaceOnUse" id="linearGradient6614" xlink:href="#linearGradient6589-6" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective6643" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient6589-2" id="linearGradient6595-8" x1="126.64295" y1="29.814894" x2="179.96115" y2="137.19565" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" id="linearGradient6589-2">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop6591-9"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop6593-6"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective6681" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-4" id="radialGradient6427-9" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" id="linearGradient4744-9-4">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4746-3-3"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4748-8-7"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-4" id="radialGradient6689" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-4" id="radialGradient6697" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-4" id="radialGradient6705" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-4" id="radialGradient6713" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914634,-47.895492,34.408018)" gradientUnits="userSpaceOnUse" id="radialGradient6726" xlink:href="#linearGradient4744-9-4" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective6681-6" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-49" id="radialGradient6427-0" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" id="linearGradient4744-9-49">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4746-3-1"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4748-8-2"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-49" id="radialGradient6689-2" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-49" id="radialGradient6697-2" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-49" id="radialGradient6705-4" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-49" id="radialGradient6713-6" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914634,-47.895492,34.408018)" gradientUnits="userSpaceOnUse" id="radialGradient6726-0" xlink:href="#linearGradient4744-9-49" inkscape:collect="always"/>
+    <inkscape:perspective id="perspective6863" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient id="linearGradient6589-6-9">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop6591-6-7"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop6593-1-2"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient6846-8" id="radialGradient6427-6" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914634,-47.895493,34.408019)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient6846-8">
+      <stop id="stop6848-8" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0.93050194;" offset="0.5" id="stop6852-9"/>
+      <stop id="stop6850-8" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient6846-8" id="radialGradient6876" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient6878">
+      <stop id="stop6880" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0.93050194;" offset="0.5" id="stop6882"/>
+      <stop id="stop6884" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient6846-8" id="radialGradient6886" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient6888">
+      <stop id="stop6890" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0.93050194;" offset="0.5" id="stop6892"/>
+      <stop id="stop6894" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient6846-8" id="radialGradient6896" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient6898">
+      <stop id="stop6900" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0.93050194;" offset="0.5" id="stop6902"/>
+      <stop id="stop6904" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient6846-8" id="radialGradient6906" cx="159.61317" cy="72.588303" fx="159.61317" fy="72.588303" r="38.416904" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.895494,34.408017)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient6908">
+      <stop id="stop6910" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0.93050194;" offset="0.5" id="stop6912"/>
+      <stop id="stop6914" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
+    </linearGradient>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914634,-47.466825,35.694048)" gradientUnits="userSpaceOnUse" id="radialGradient6482-8" xlink:href="#linearGradient4744-9-9-1" inkscape:collect="always"/>
+    <linearGradient inkscape:collect="always" id="linearGradient4744-9-9-1">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4746-3-8-6"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4748-8-3-8"/>
+    </linearGradient>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.466826,35.694046)" gradientUnits="userSpaceOnUse" id="radialGradient6920" xlink:href="#linearGradient4744-9-9-1" inkscape:collect="always"/>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.466826,35.694046)" gradientUnits="userSpaceOnUse" id="radialGradient6928" xlink:href="#linearGradient4744-9-9-1" inkscape:collect="always"/>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.466826,35.694046)" gradientUnits="userSpaceOnUse" id="radialGradient6936" xlink:href="#linearGradient4744-9-9-1" inkscape:collect="always"/>
+    <radialGradient r="38.416904" fy="72.588303" fx="159.61317" cy="72.588303" cx="159.61317" gradientTransform="matrix(1.2124778,0,0,0.83914635,-47.466826,35.694046)" gradientUnits="userSpaceOnUse" id="radialGradient6944" xlink:href="#linearGradient4744-9-9-1" inkscape:collect="always"/>
+    <linearGradient id="linearGradient5862-1-55-2">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-0-0-9"/>
+      <stop id="stop5876-0-12-6" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-6-6-4" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-4-4-5" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-4-85-5"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-3-62-4"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4680-0">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-5"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-76"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5762-9-4-5">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-6-1-3"/>
+      <stop id="stop5770-3-6-73" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-6-3-2"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5862-3-3">
+      <stop style="stop-color:#f9e295;stop-opacity:1;" offset="0" id="stop5864-8-0"/>
+      <stop id="stop5876-09-8" offset="0.125" style="stop-color:#f7dd84;stop-opacity:1;"/>
+      <stop id="stop5874-2-6" offset="0.20580582" style="stop-color:#ffffff;stop-opacity:1;"/>
+      <stop id="stop5870-3-6" offset="0.30112621" style="stop-color:#f4ce51;stop-opacity:1;"/>
+      <stop style="stop-color:#f9e7aa;stop-opacity:1;" offset="0.3412039" id="stop5872-1-9"/>
+      <stop style="stop-color:#efbb0e;stop-opacity:1;" offset="1" id="stop5866-8-7"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5762-8-9">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop5764-5-3"/>
+      <stop id="stop5770-1-7" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop5766-2-1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient6987">
+      <stop style="stop-color:#2d3335;stop-opacity:1;" offset="0" id="stop6989"/>
+      <stop id="stop6991" offset="0.5" style="stop-color:#4c464a;stop-opacity:1;"/>
+      <stop style="stop-color:#384042;stop-opacity:1;" offset="1" id="stop6993"/>
+    </linearGradient>
+    <linearGradient id="linearGradient5745-3-5">
+      <stop style="stop-color:#d0e9f2;stop-opacity:0;" offset="0" id="stop5747-3-7"/>
+      <stop id="stop5753-6-0" offset="0.83932751" style="stop-color:#d0e9f2;stop-opacity:0;"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:0.28185329;" offset="0.94308507" id="stop5755-9-2"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:1;" offset="1" id="stop5749-0-6"/>
+    </linearGradient>
+    <filter inkscape:collect="always" id="filter7286">
+      <feGaussianBlur inkscape:collect="always" stdDeviation="4.2868936" id="feGaussianBlur7288"/>
+    </filter>
+    <inkscape:perspective id="perspective7298" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-6" id="linearGradient5168-6" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-6">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-3"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-2"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective7298-3" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-4" id="linearGradient5168-60" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-4">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-36"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-3"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective7298-9" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-2" id="linearGradient5168-4" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-2">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-9"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-38"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-2" id="linearGradient7376" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,-0.08087767,0,1,0,203.0563)" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346"/>
+    <inkscape:perspective id="perspective7716" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient id="linearGradient4680-7-3">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-2-2"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-7-2"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7725">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7727"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7729"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7732">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7734"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7736"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7739">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7741"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7743"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7746">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7748"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7750"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7753">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7755"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7757"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7760">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7762"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7764"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7767">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop7769"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop7771"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4680-22">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-27"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-36"/>
+    </linearGradient>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5426-1">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5428-0"/>
+    </clipPath>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5383-0">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5385-7"/>
+    </clipPath>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5466-2">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5468-3"/>
+    </clipPath>
+    <inkscape:perspective id="perspective8183" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5466-2-3">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5468-3-2"/>
+    </clipPath>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5383-0-0">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5385-7-8"/>
+    </clipPath>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5426-1-6">
+      <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="m 9,12.25 c 0,0 7.5,13 11.75,27.75 C 25,54.75 27,65.5 27,65.5 c 0,0 -5.5,12.75 -8.25,24.75 -2.75,12 -5.75,23 -5.75,23 0,0 5.75,16 9.25,30 3.5,14 3.75,24.25 3.75,24.25 0,0 -4,10.25 -7.5,24.25 -3.5,14 -5,30.75 -5,30.75 0,0 9.25,-2 28.5,1.25 19.25,3.25 32.25,6 32.25,6 0,0 12.75,-2.75 24,-6.25 11.25,-3.5 16.25,-6.5 16.25,-6.5 0,0 5.5,0.5 22.5,6.25 17,5.75 29.25,8.5 29.25,8.5 0,0 13,-2.75 26,-5.75 13,-3 26.5,-8 26.5,-8 0,0 -0.75,-5 4.25,-24.5 5,-19.5 8.75,-28 8.75,-28 0,0 -0.5,-4.5 -3.75,-19.75 C 224.75,130.5 218,116 218,116 c 0,0 1.75,-10.5 6.75,-23.75 C 229.75,79 235,65.5 235,65.5 c 0,0 -4.75,-15.25 -7.5,-29.75 C 224.75,21.25 219.25,10 219.25,10 c 0,0 -24.25,9 -31.75,10.5 -7.5,1.5 -21,5.25 -21,5.25 0,0 -9.75,-4.25 -22,-8.5 -12.25,-4.25 -29.75,-5.5 -29.75,-5.5 0,0 -3.25,3.5 -22,8 -18.75,4.5 -27.5,5.75 -27.5,5.75 0,0 -18.5,-9 -31.5,-11.5 -13,-2.5 -24,-2 -24.75,-1.75 z" id="path5428-0-9"/>
+    </clipPath>
+    <linearGradient gradientTransform="translate(0,192)" inkscape:collect="always" xlink:href="#linearGradient4680-22-2" id="linearGradient5168-2-9" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-22-2">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-27-3"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-36-5"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4806-9-8-4" x1="214.25" y1="-161.35938" x2="166.5" y2="-113.71875" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" id="linearGradient4744-9-7-8">
+      <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4746-3-0-1"/>
+      <stop style="stop-color:#ffffff;stop-opacity:0;" offset="1" id="stop4748-8-4-0"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4790-3-9-7" x1="53.25" y1="-126.5" x2="57.65625" y2="-62.46875" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4758-2-6-2" x1="39.5" y1="6.6250248" x2="75.71875" y2="-17.124975" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4750-9-9-4" x1="102" y1="-162.34375" x2="85.3125" y2="-121.4375" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4782-5-5-9" x1="117.75" y1="-78.09375" x2="63.5" y2="-14.75" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4798-4-1-9" x1="180.68745" y1="-125.125" x2="133.93745" y2="-60.74995" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4744-9-7-8" id="linearGradient4766-3-6-2" x1="170.75" y1="-23.5" x2="130.21875" y2="33.375" gradientUnits="userSpaceOnUse"/>
+    <linearGradient y2="-5.6563001" x2="181.75005" y1="-76" x1="213.5" gradientUnits="userSpaceOnUse" id="linearGradient4965-0-3" xlink:href="#linearGradient4744-9-7-8" inkscape:collect="always"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4686-3-4-6" x1="94.25" y1="-94.671967" x2="9" y2="-179.96893" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-7-3-6">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-2-2-7"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-7-2-7"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4742-3-4-4" x1="50.75" y1="-114.4375" x2="35.75" y2="-30.4375" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8255">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8257"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8259"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4734-3-7-6" x1="77.625" y1="-163.125" x2="115.25" y2="-74.625" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8262">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8264"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8266"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4726-9-4-9" x1="56.5" y1="-50.4375" x2="125.71875" y2="7.0625" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8269">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8271"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8273"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4710-2-1-6" x1="35" y1="-163.29688" x2="180.75" y2="-146.79688" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8276">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8278"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8280"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4718-4-6-0" x1="57.000099" y1="-141.10941" x2="179" y2="-41.609402" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8283">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8285"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8287"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4694-4-1-9" x1="156" y1="-26.5" x2="208.25" y2="39.75" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8290">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8292"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8294"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-7-3-6" id="linearGradient4702-4-6-9" x1="142.75" y1="-169.29688" x2="235" y2="-77.296875" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient8297">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop8299"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8301"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective8581" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient5745-3-1" id="radialGradient6256-5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0052137,1.0052137,1.0052137,-1.0052137,-40.83796,53.253296)" cx="128" cy="86" fx="128" fy="86" r="47"/>
+    <linearGradient id="linearGradient5745-3-1">
+      <stop style="stop-color:#d0e9f2;stop-opacity:0;" offset="0" id="stop5747-3-73"/>
+      <stop id="stop5753-6-08" offset="0.83932751" style="stop-color:#d0e9f2;stop-opacity:0;"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:0.28185329;" offset="0.94308507" id="stop5755-9-5"/>
+      <stop style="stop-color:#d0e9f2;stop-opacity:1;" offset="1" id="stop5749-0-4"/>
+    </linearGradient>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8617">
+      <path style="fill:url(#radialGradient8621);fill-opacity:1;stroke:none" d="m 123.62289,141.06193 c 20.83191,20.24317 54.6071,19.28863 75.439,-2.132 20.8319,-21.42064 20.8319,-55.195816 0,-75.438984 -20.83191,-20.243167 -54.60709,-19.288643 -75.439,2.131999 -20.83189,21.42063 -20.8319,55.195815 0,75.438985 z" id="path8619" sodipodi:nodetypes="csssc"/>
+    </clipPath>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient5745-3-1" id="radialGradient8621" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.80254238,0.77986154,0.80254238,-0.82522321,-10.401684,73.423363)" cx="128" cy="86" fx="128" fy="86" r="47"/>
+    <inkscape:perspective id="perspective8631" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <filter inkscape:collect="always" id="filter8661">
+      <feGaussianBlur inkscape:collect="always" stdDeviation="6.3109704" id="feGaussianBlur8663"/>
+    </filter>
+    <inkscape:perspective id="perspective8673" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-62" id="linearGradient5168-8" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346" gradientUnits="userSpaceOnUse"/>
+    <linearGradient id="linearGradient4680-62">
+      <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4682-7"/>
+      <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4684-0"/>
+    </linearGradient>
+    <inkscape:perspective id="perspective8711" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
+    <filter inkscape:collect="always" id="filter8725">
+      <feGaussianBlur inkscape:collect="always" stdDeviation="4.4575" id="feGaussianBlur8727"/>
+    </filter>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient8729" id="linearGradient8735" x1="122" y1="245.448" x2="122" y2="4.302" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-2" id="linearGradient8742" gradientUnits="userSpaceOnUse" gradientTransform="translate(0,181.99999)" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346"/>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8750">
+      <path id="path8752" d="m 9,22.578406 c 0,0 7.5,12.393417 11.75,26.799687 C 25,63.784363 27,74.372608 27,74.372608 c 0,0 -5.5,13.194827 -8.25,25.417241 C 16,112.01226 13,123.2549 13,123.2549 c 0,0 5.75,15.53495 9.25,29.25188 3.5,13.71692 3.75,23.94671 3.75,23.94671 0,0 -4,10.57351 -7.5,24.85658 -3.5,14.28307 -5,31.15439 -5,31.15439 0,0 9.25,-2.74812 28.5,-1.05502 19.25,1.69311 32.25,3.3917 32.25,3.3917 0,0 12.75,-3.78119 24,-8.19107 11.25,-4.40987 16.25,-7.81426 16.25,-7.81426 0,0 5.5,0.0552 22.5,4.43025 17,4.37508 29.25,6.13433 29.25,6.13433 0,0 13,-3.80141 26,-7.85282 13,-4.05141 26.5,-10.14326 26.5,-10.14326 0,0 -0.75,-4.93934 4.25,-24.84373 5,-19.90438 8.75,-28.70768 8.75,-28.70768 0,0 -0.5145,-4.4553 -3.75,-19.4467 -1.75,-8.10847 -2.25,-4.06803 -2.25,-4.06803 0,0 16.264,-26.15535 16.5,-40.334481 C 242.5,78.94347 235,57.550053 235,57.550053 c 0,0 -4.75,-14.865832 -7.5,-29.143418 -2.75,-14.277586 -8.25,-25.0827591 -8.25,-25.0827591 0,0 -24.25,10.9612831 -31.75,13.0678661 -7.5,2.106582 -21,6.948431 -21,6.948431 0,0 -9.75,-3.461443 -22,-6.720691 -12.25,-3.259249 -29.75,-3.09389 -29.75,-3.09389 0,0 -3.25,3.762853 -22,9.779309 -18.75,6.016456 -27.5,7.974136 -27.5,7.974136 0,0 -18.5,-7.503763 -31.5,-8.952353 -13,-1.448591 -24,-0.05894 -24.75,0.251722 z" style="opacity:0.03913042;fill:url(#linearGradient8754);fill-opacity:1;stroke:none" sodipodi:nodetypes="cscscscscscscscscscscscscscscscsc"/>
+    </clipPath>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4680-2" id="linearGradient8754" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,-0.08087767,0,1,0,203.05629)" x1="210.17188" y1="72.064125" x2="9" y2="-213.25346"/>
+  </defs>
+  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.8066556" inkscape:cx="34.80086" inkscape:cy="49.324241" inkscape:current-layer="layer5" showgrid="true" inkscape:document-units="px" inkscape:grid-bbox="true" inkscape:window-width="1551" inkscape:window-height="1121" inkscape:window-x="0" inkscape:window-y="25" inkscape:window-maximized="0"/>
+  <metadata id="metadata3043">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g inkscape:groupmode="layer" id="layer8" inkscape:label="map_shadow" style="display:inline">
+    <g id="g8737" transform="translate(0,-10)">
+      <path clip-path="none" transform="matrix(1,6.864071e-2,0,0.848698,-6.6011175e-8,36.913089)" id="path5604-26-0-3" d="M 174.28125,35.875 C 156.6825,35.875 139.08909,42.514475 125.5625,55.78125 C 125.39528,55.944528 125.22813,56.084367 125.0625,56.25 C 103.00655,78.305948 98.853795,111.50122 112.59375,137.75 L 110.3125,139.375 C 112.56129,143.61488 115.25415,147.6818 118.40625,151.5 L 105.09375,164.84375 C 103.75238,164.258 102.30517,163.81044 100.53125,163.46875 L 97.6875,166.3125 C 96.578031,165.82863 95.549481,165.49662 94.625,165.4375 L 30.5,229.5625 C 30.46313,230.66337 30.72615,231.74988 31.15625,232.84375 L 30.625,233.375 L 29.53125,234.46875 C 30.246688,238.20655 31.541682,241.29169 35,244.75 C 38.458318,248.20832 41.420414,249.38027 45.28125,250.21875 L 46.375,249.125 L 47.09375,248.40625 C 48.181953,248.8685 49.223649,249.19242 50.1875,249.25 L 114.3125,185.125 C 114.06964,184.15025 113.69207,183.18954 113.28125,182.21875 L 116.28125,179.21875 C 116.03142,177.48677 115.60454,176.02072 114.96875,174.625 L 128.25,161.34375 C 132.0682,164.49585 136.13512,167.18872 140.375,169.4375 L 142,167.15625 C 168.24878,180.8962 201.44405,176.74344 223.5,154.6875 C 223.66563,154.52186 223.80547,154.35472 223.96875,154.1875 C 250.66292,126.97054 250.51736,83.267352 223.5,56.25 C 209.91004,42.660041 192.09307,35.875 174.28125,35.875 z M 173.78125,39.15625 C 173.88592,39.15775 173.98908,39.15425 174.09375,39.15625 C 175.04294,39.17465 175.98913,39.22152 176.9375,39.28125 C 177.89594,39.34161 178.8563,39.428763 179.8125,39.53125 C 179.9062,39.5413 180.00004,39.55205 180.09375,39.5625 C 180.18775,39.57298 180.28105,39.58287 180.375,39.59375 C 180.5207,39.61063 180.66687,39.63839 180.8125,39.65625 C 181.7087,39.766152 182.60741,39.884369 183.5,40.03125 C 184.11909,40.133124 184.72687,40.255367 185.34375,40.375 C 185.6867,40.44144 186.03282,40.49058 186.375,40.5625 C 187.0987,40.714611 187.81147,40.885892 188.53125,41.0625 C 188.8443,41.13931 189.15653,41.199811 189.46875,41.28125 C 189.54185,41.30031 189.61445,41.32444 189.6875,41.34375 C 190.6434,41.596587 191.58423,41.860044 192.53125,42.15625 C 192.60365,42.17886 192.67766,42.19588 192.75,42.21875 C 193.69741,42.518592 194.65684,42.844291 195.59375,43.1875 C 195.64685,43.20695 195.69698,43.23041 195.75,43.25 C 196.70458,43.602395 197.65174,43.977633 198.59375,44.375 C 198.64525,44.39672 198.69853,44.41564 198.75,44.4375 C 199.69184,44.837551 200.63491,45.273781 201.5625,45.71875 C 201.6045,45.73891 201.6455,45.761 201.6875,45.78125 C 202.62288,46.232337 203.54958,46.690779 204.46875,47.1875 C 204.50185,47.20538 204.52945,47.23206 204.56245,47.25 C 205.48926,47.752833 206.40387,48.263321 207.31245,48.8125 C 207.34455,48.83189 207.37415,48.85555 207.40615,48.875 C 208.31425,49.425934 209.20552,49.996562 210.09365,50.59375 C 210.6426,50.962824 211.17785,51.36329 211.71865,51.75 C 212.08335,52.010827 212.45156,52.262412 212.8124,52.53125 C 212.8309,52.54506 212.8564,52.54867 212.8749,52.5625 C 213.75254,53.217706 214.61511,53.922431 215.46865,54.625 C 217.21133,56.059371 218.90007,57.587673 220.53115,59.21875 C 222.15163,60.83923 223.66733,62.519314 225.09365,64.25 C 225.10265,64.26124 225.11565,64.27 225.12485,64.28125 C 225.82806,65.135607 226.53159,65.996485 227.18735,66.875 C 227.47012,67.253769 227.72592,67.648223 227.99985,68.03125 C 228.36958,68.548307 228.73999,69.069236 229.0936,69.59375 C 229.1098,69.61774 229.14,69.63224 229.1561,69.65625 C 229.75422,70.545876 230.32314,71.434083 230.87485,72.34375 C 230.89435,72.37582 230.91795,72.40541 230.93735,72.4375 C 231.48294,73.340419 232.00002,74.266573 232.49985,75.1875 C 232.51775,75.22044 232.54455,75.24829 232.56235,75.28125 C 233.06035,76.202462 233.51643,77.124994 233.9686,78.0625 C 233.9888,78.10444 234.011,78.14552 234.0311,78.1875 C 234.47721,79.117367 234.91137,80.055804 235.31235,81 C 235.33415,81.05123 235.35325,81.104977 235.37485,81.15625 C 235.76965,82.092372 236.14946,83.051461 236.49985,84 C 236.51925,84.05253 236.54305,84.103686 236.56235,84.15625 C 236.90996,85.10461 237.22793,86.040882 237.5311,87 C 237.5538,87.07167 237.5712,87.147026 237.5936,87.21875 C 237.88758,88.159922 238.15494,89.112572 238.4061,90.0625 C 238.4256,90.13603 238.4494,90.207672 238.4686,90.28125 C 238.5493,90.590804 238.61118,90.908382 238.68735,91.21875 C 238.86396,91.938529 239.03524,92.651296 239.18735,93.375 C 239.25925,93.717177 239.30841,94.063299 239.37485,94.40625 C 239.49448,95.023132 239.61673,95.630911 239.7186,96.25 C 239.86548,97.142594 239.9837,98.041302 240.0936,98.9375 C 240.1115,99.083459 240.1392,99.228963 240.1561,99.375 C 240.1669,99.46829 240.1769,99.562929 240.1873,99.65625 C 240.1978,99.75023 240.2085,99.843493 240.2185,99.9375 C 240.32099,100.8937 240.40814,101.85406 240.4685,102.8125 C 240.5277,103.75494 240.57511,104.71299 240.5935,105.65625 C 240.5955,105.76038 240.5915,105.86462 240.5935,105.96875 C 240.6089,107.02208 240.5975,108.0726 240.5623,109.125 C 240.5307,110.05556 240.4776,110.97779 240.40605,111.90625 C 240.39605,112.03118 240.38515,112.15637 240.37485,112.28125 C 240.29875,113.19932 240.20894,114.11665 240.0936,115.03125 C 239.973,115.98751 239.81965,116.95518 239.6561,117.90625 C 239.6419,117.98865 239.6393,118.07392 239.6249,118.15625 C 239.6029,118.2811 239.5852,118.40651 239.5624,118.53125 C 239.39714,119.43903 239.2045,120.34852 238.9999,121.25 C 238.9693,121.38463 238.9376,121.52178 238.9062,121.65625 C 238.69845,122.54491 238.46486,123.43135 238.2187,124.3125 C 238.05479,124.89922 237.86842,125.47955 237.68745,126.0625 C 237.51204,126.62662 237.34761,127.18974 237.1562,127.75 C 236.86153,128.61381 236.55145,129.45882 236.2187,130.3125 C 236.1581,130.46799 236.09304,130.62612 236.0312,130.78125 C 235.9863,130.89371 235.9517,131.01273 235.9062,131.125 C 235.5501,132.00362 235.17807,132.8526 234.7812,133.71875 C 234.40422,134.54222 234.0076,135.34519 233.5937,136.15625 C 233.5132,136.31403 233.42563,136.46772 233.3437,136.625 C 232.92842,137.4224 232.51372,138.21595 232.06245,139 C 231.96725,139.16556 231.87805,139.33506 231.7812,139.5 C 231.58213,139.83885 231.36205,140.16384 231.1562,140.5 C 230.79455,141.09093 230.41383,141.66777 230.0312,142.25 C 230.0262,142.257 230.0362,142.2738 230.0312,142.2812 C 229.54039,143.02694 229.02527,143.76939 228.49995,144.49995 C 228.04268,145.13587 227.54591,145.75123 227.06245,146.37495 C 226.86549,146.62904 226.70126,146.90421 226.49995,147.1562 C 226.36593,147.32399 226.22965,147.48935 226.0937,147.6562 C 225.93019,147.85684 225.76,148.05071 225.5937,148.24995 C 225.03708,148.917 224.46291,149.5678 223.87495,150.2187 C 223.26864,150.88974 222.63964,151.56575 221.99995,152.2187 C 221.83899,152.38296 221.69428,152.55562 221.5312,152.7187 C 200.40085,173.84905 169.27251,177.21358 144.3437,163.87495 L 144.4687,163.68745 C 140.76453,161.79084 137.20703,159.54699 133.8437,156.9062 C 133.30478,156.48305 132.77833,156.03638 132.24995,155.5937 C 131.73554,155.16273 131.22265,154.7308 130.7187,154.2812 C 130.6258,154.1976 130.52998,154.1154 130.43745,154.0312 C 129.61572,153.28344 128.82556,152.51306 128.0312,151.7187 C 127.23684,150.92434 126.46647,150.13418 125.7187,149.31245 C 125.6345,149.21995 125.55231,149.12407 125.4687,149.0312 C 125.0191,148.52725 124.58717,148.01436 124.1562,147.49995 C 123.71352,146.97157 123.26685,146.44512 122.8437,145.9062 C 120.20291,142.54287 117.95906,138.98536 116.06245,135.2812 L 115.87495,135.4062 C 102.53632,110.47739 105.90085,79.349046 127.0312,58.2187 C 127.19428,58.05562 127.36694,57.910915 127.5312,57.74995 C 128.18415,57.110265 128.86016,56.481261 129.5312,55.87495 C 130.1821,55.286994 130.8329,54.712816 131.49995,54.1562 C 131.77209,53.929114 132.03772,53.690576 132.31245,53.4687 C 132.65592,53.191271 133.02754,52.956742 133.37495,52.68745 C 133.99867,52.203987 134.61403,51.707219 135.24995,51.24995 C 135.98748,50.719619 136.74695,50.21386 137.49995,49.7187 C 138.08218,49.336066 138.65902,48.955346 139.24995,48.5937 C 139.69662,48.32034 140.1423,48.042584 140.5937,47.7812 C 141.27515,47.386414 141.96454,47.023727 142.6562,46.6562 C 142.83226,46.56265 143.01076,46.46674 143.18745,46.37495 C 144.1327,45.883975 145.06888,45.40925 146.0312,44.9687 C 146.89735,44.571825 147.74633,44.1998 148.62495,43.8437 C 148.77776,43.78177 148.94054,43.74815 149.0937,43.68745 C 150.06209,43.303428 151.01838,42.928541 151.99995,42.5937 C 152.56021,42.402293 153.12333,42.237857 153.68745,42.06245 C 154.2704,41.881482 154.85073,41.695111 155.43745,41.5312 C 156.3186,41.285037 157.20504,41.051454 158.0937,40.8437 C 158.1648,40.82706 158.24127,40.82884 158.31245,40.81245 C 158.72838,40.71671 159.14509,40.618551 159.56245,40.5312 C 160.23458,40.390375 160.91827,40.244039 161.5937,40.12495 C 161.676,40.11046 161.76133,40.10786 161.8437,40.0937 C 162.79477,39.930149 163.76244,39.776798 164.7187,39.6562 C 166.68235,39.408555 168.64857,39.254564 170.62495,39.18745 C 171.67735,39.15181 172.72787,39.14082 173.7812,39.1562 L 173.78125,39.15625 z" style="opacity:0.7;fill:#2d3335;fill-opacity:1;stroke:none;filter:url(#filter8661)"/>
+      <path transform="matrix(1,0,0,0.846566,0,37.660073)" sodipodi:nodetypes="cscscscscscscscscscscscscscscscsc" id="path3834-49-7" d="M 9,17.25 C 9,17.25 16.5,28.25 20.75,43 C 25,57.75 27,68.5 27,68.5 C 27,68.5 21.5,81.25 18.75,93.25 C 16,105.25 13,118.25 13,118.25 C 13,118.25 18.75,134.25 22.25,148.25 C 25.75,162.25 26,170.5 26,170.5 C 26,170.5 22,180.75 18.5,194.75 C 15,208.75 13.5,225.5 13.5,225.5 C 13.5,225.5 22.75,223.5 42,226.75 C 61.25,230 74.25,232.75 74.25,232.75 C 74.25,232.75 87,230 98.25,226.5 C 109.5,223 114.5,220 114.5,220 C 114.5,220 120,220.5 137,226.25 C 154,232 166.25,234.75 166.25,234.75 C 166.25,234.75 179.25,232 192.25,229 C 205.25,226 218.75,221 218.75,221 C 218.75,221 218,216 223,196.5 C 228,177 231.75,168.5 231.75,168.5 C 231.75,168.5 231.25,166 228,150.75 C 224.75,135.5 218,121 218,121 C 218,121 219.75,108.5 224.75,95.25 C 229.75,82 235,68.5 235,68.5 C 235,68.5 230.25,53.25 227.5,38.75 C 224.75,24.25 219.25,15 219.25,15 C 219.25,15 195,24 187.5,25.5 C 180,27 166.5,30.75 166.5,30.75 C 166.5,30.75 156.75,26.5 144.5,22.25 C 132.25,18 114.75,16.75 114.75,16.75 C 114.75,16.75 111.5,20.25 92.75,24.75 C 74,29.25 65.25,30.5 65.25,30.5 C 65.25,30.5 46.75,21.5 33.75,19 C 20.75,16.5 9.75,17 9,17.25 z" style="opacity:0.5;fill:url(#linearGradient8735);fill-opacity:1;stroke:none;filter:url(#filter8725)"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="layer4" inkscape:label="map_details" sodipodi:insensitive="true" style="display:inline">
+    <path style="fill:#ceeeab;fill-opacity:1;stroke:none" d="M 9,2.25 C 9,2.25 16.5,15.25 20.75,30 C 25,44.75 27,55.5 27,55.5 C 27,55.5 21.5,68.25 18.75,80.25 C 16,92.25 13,103.25 13,103.25 C 13,103.25 18.75,119.25 22.25,133.25 C 25.75,147.25 26,157.5 26,157.5 C 26,157.5 22,167.75 18.5,181.75 C 15,195.75 13.5,212.5 13.5,212.5 C 13.5,212.5 22.75,210.5 42,213.75 C 61.25,217 74.25,219.75 74.25,219.75 C 74.25,219.75 87,217 98.25,213.5 C 109.5,210 114.5,207 114.5,207 C 114.5,207 120,207.5 137,213.25 C 154,219 166.25,221.75 166.25,221.75 C 166.25,221.75 179.25,219 192.25,216 C 205.25,213 218.75,208 218.75,208 C 218.75,208 218,203 223,183.5 C 228,164 231.75,155.5 231.75,155.5 C 231.75,155.5 231.25,151 228,135.75 C 224.75,120.5 218,106 218,106 C 218,106 219.75,95.5 224.75,82.25 C 229.75,69 235,55.5 235,55.5 C 235,55.5 230.25,40.25 227.5,25.75 C 224.75,11.25 219.25,0 219.25,0 C 219.25,0 195,9 187.5,10.5 C 180,12 166.5,15.75 166.5,15.75 C 166.5,15.75 156.75,11.5 144.5,7.25 C 132.25,3 114.75,1.75 114.75,1.75 C 114.75,1.75 111.5,5.25 92.75,9.75 C 74,14.25 65.25,15.5 65.25,15.5 C 65.25,15.5 46.75,6.5 33.75,4 C 20.75,1.5 9.75,2 9,2.25 z" id="path3834-9"/>
+    <g id="g5438" clip-path="url(#clipPath5466)" transform="translate(0,-10)">
+      <path style="fill:#a6dd8b;fill-opacity:1;stroke:none" d="M 110.75,5.5 L 106.5,12.5 C 105.75,21.5 104.25,26.25 98,29 C 91.75,31.75 85.75,32.5 87,36.5 C 88.25,40.5 100,45.75 101.25,49.5 C 102.5,53.25 109.5,51.25 112.25,56.5 C 115,61.75 114.25,71.75 108.5,73.75 C 102.75,75.75 91,74.25 88.25,83.25 C 85.5,92.25 83.5,93.75 79.25,96 C 75,98.25 72,106.5 75.75,112.5 C 79.5,118.5 88,111.25 90.75,106 C 93.5,100.75 98,97.25 98,97.25 L 121.75,97.25 L 180.75,95.5 L 184,91.75 C 184,91.75 187.25,95.75 186.75,100.5 C 186.25,105.25 183,115.25 187,117.75 C 191,120.25 206.5,115.75 211,110.75 C 215.5,105.75 206.25,82.5 200.5,81.25 C 194.75,80 182,79.5 183.5,74.25 C 185,69 195.25,78.75 200.75,77.5 C 206.25,76.25 217.5,56.5 212.75,52.25 C 208,48 188.5,47 187,44.25 C 185.5,41.5 208,36.25 209.25,33.25 C 210.5,30.25 206.75,26 203,24.75 C 199.25,23.5 189,41 182,40.5 C 175,40 162,46.25 164.75,52 C 167.5,57.75 158.75,63 150.25,58.5 C 141.75,54 125.5,45.5 128.5,34.5 C 131.5,23.5 150,15.75 150,15.75 L 110.75,5.5 z M 97.1875,112.71875 C 95.592651,112.86523 92.71875,117.40625 92.25,119.75 C 91.75,122.25 89,126.5 88.75,132 C 88.5,137.5 93.5,138.75 97.5,138.5 C 101.5,138.25 100.25,131.75 99.5,123.5 C 99.25,123.5 99,113.25 97.5,112.75 C 97.40625,112.7188 97.293823,112.709 97.1875,112.7188 L 97.1875,112.71875 z M 189.90625,164.375 C 183.5708,164.67041 183.28125,171.84375 182.5,173.25 C 181.25,175.5 184.75,187 184.5,191.25 C 184.25,195.5 179.75,196.5 175,201 C 170.25,205.5 175.5,217 186.25,232 L 231,233.25 L 230,198.25 C 230,198.25 234.75,194 209.25,174 C 199.6875,166.5 193.70752,164.19775 189.90625,164.375 z M 39.9375,180.90625 C 35.908264,180.80371 31.65625,186.625 30.25,188.5 C 28.75,190.5 24,193.5 13.25,198 L -1.25,232.25 L 51.75,236.5 C 51.75,236.5 53.5,225.5 47.5,220.75 C 41.5,216 30.25,215 29.25,207.5 C 28.25,200 38.5,197.5 43,193.25 C 47.5,189 45,182 40.75,181 C 40.484375,180.9375 40.206116,180.9131 39.9375,180.9063 L 39.9375,180.90625 z" id="path5436"/>
+    </g>
+    <path style="fill:#aac3e7;fill-opacity:1;stroke:none" d="M 158.53125,75.34375 C 153.77142,75.329407 149.5,76.3125 147,78.5 C 139,85.5 112,79.25 98.5,85.5 C 85,91.75 85.25,123.5 83.75,130 C 82.25,136.5 66.25,150.75 63.75,153.5 C 61.25,156.25 50.5,160.75 44.25,162 C 38,163.25 31.5,169.25 28.75,173 C 26.728876,175.75608 21.343981,179.45031 18.625,181.21875 C 18.5792,181.40003 18.54564,181.56743 18.5,181.75 C 18.366311,182.28475 18.25288,182.83331 18.125,183.375 C 23.104513,181.77018 29.304508,175.19549 34.75,169.75 C 41,163.5 54.75,162 62.5,158.25 C 70.25,154.5 76.75,138.5 89,134.5 C 101.25,130.5 110.25,146.25 113.25,153 C 116.25,159.75 115,165.75 117,170 C 119,174.25 128,181.75 128.5,183.5 C 129,185.25 123.5,190 122.25,192 C 121,194 111.75,199 110.5,200.75 C 109.53432,202.10195 108.57684,207.52314 108.1875,209.96875 C 108.60053,209.79955 108.94168,209.65822 109.3125,209.5 C 109.7965,206.97067 110.82799,202.42201 112.25,201 C 114.25,199 123.5,196.5 124.75,192.5 C 126,188.5 131.75,186 131.75,186 C 131.75,186 134.5,190 147.75,200 C 156.58333,206.66667 160.5081,215.53356 162.15625,220.71875 C 162.82985,220.8894 163.6892,221.12815 164.1875,221.25 C 162.96635,216.93129 159.35104,205.01115 155.25,200.5 C 150.25,195 136.75,189.75 132.5,178.5 C 128.25,167.25 108,144.25 115,138.25 C 122,132.25 131.5,134.25 143.5,145.75 C 155.5,157.25 189.75,151.5 201.25,149.5 C 211.20453,147.76878 222.08445,164.38321 225.15625,175.53125 C 225.74525,173.43558 226.28288,171.52906 226.8125,169.78125 C 225.07444,167.85545 223.11528,165.16129 221.5,161.5 C 217.75,153 209.5,148.25 209.5,148.25 C 209.5,148.25 218.25,143.25 224.25,140.5 C 225.86703,139.75886 227.25627,138.82287 228.4375,137.84375 C 228.27516,137.06972 228.17857,136.5879 228,135.75 C 227.9689,135.60389 227.938,135.45846 227.9063,135.3125 C 223.14065,140.8749 208.67404,144.92782 206.25005,146.25 C 203.50005,147.75 188.00005,149.25 170.50005,150.75 C 153.00005,152.25 143.75005,143.25 136.25005,136 C 128.75005,128.75 123.25005,100 133.25005,98 C 143.25005,96 153.25005,111.75 163.25005,115 C 173.25005,118.25 184.75005,99.25 183.00005,88 C 181.79693,80.265625 169.00292,75.375305 158.5313,75.34375 L 158.53125,75.34375 z M 105.1875,88.625 C 106.46283,88.6265 111.04688,90.21875 111.75,91 C 114,93.5 113.75,98.25 111.75,99 C 109.75,99.75 99,107 101.25,113.25 C 103.5,119.5 103,131.25 97.75,131.25 C 92.5,131.25 89.75,131.25 87.75,128.75 C 85.75,126.25 85.75,116.75 87.75,109 C 89.75,101.25 91.25,94 95.75,90.75 C 98.84375,88.51562 102.38177,88.621643 105.1875,88.625 L 105.1875,88.625 z M 118.78125,161.71875 C 118.9845,161.73245 120.6875,165.23438 123.5,168.75 C 126.5,172.5 126.75,177 126.75,177 C 126.75,177 122.5,172.25 120.75,169 C 119,165.75 118.75,161.75 118.75,161.75 C 118.75,161.7188 118.7678,161.7177 118.7812,161.7188 L 118.78125,161.71875 z" id="path5280"/>
+    <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 122.75,62.25 C 129,62.75 135,60 133.5,55.75 C 132,51.5 121,48.5 120.25,52.75 C 119.5,57 122.25,63.25 122.75,62.25 z" id="path5319"/>
+    <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 108.75,46.75 C 100.25,41.25 100.25,39.5 101.75,38.75 C 103.25,38 112,43.75 114.5,46.75 C 117,49.75 112.25,48.75 108.75,46.75 z" id="path5321"/>
+    <g id="g5373" clip-path="url(#clipPath5383)" transform="translate(0,-10)">
+      <path id="path5323" d="M 15.75,151.25 C 48.75,148.75 54,147.75 52,141 C 50,134.25 43.25,117.5 29,118.5 C 14.75,119.5 6.25,111.75 6.25,111.75" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5311" d="M 17.5,177.25 C 35.75,167.25 46.25,168.75 52.5,165.75 C 58.75,162.75 65.75,160 68.25,156.25 C 70.75,152.5 74,144.75 74,138.25 C 74,131.75 70.5,102.25 77.25,94.75 C 84,87.25 94.5,68.75 103.25,71.5 C 112,74.25 115.5,81.25 125.25,81 C 135,80.75 147,77 149.5,68.75 C 152,60.5 133.75,52.75 133.5,45.75 C 133.25,38.75 139,31.5 153.75,28.75 C 168.5,26 177.25,17.25 177.25,17.25" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-opacity:1"/>
+      <path id="path5313" d="M 14.5,161 C 29.75,159.5 36.75,164.5 46,162.75 C 55.25,161 59.25,159.75 63.75,157 C 68.25,154.25 69.75,153.25 70,150.5 C 70.25,147.75 71,138 67,128.5 C 63,119 54.5,97 58.75,89.75 C 63,82.5 64,68.25 74.5,65.25 C 85,62.25 95.5,59 102.25,64 C 109,69 115,78.25 122.25,78.5 C 129.5,78.75 134,77 136.75,74 C 139.5,71 141.25,63.75 138.5,60.25 C 135.75,56.75 123,54.75 121.25,50.75 C 119.5,46.75 110.5,33.75 121,24 C 131.5,14.25 157.25,15.75 157.25,15.75" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5315" d="M 21.25,159 C 35,160 42.75,163.25 54.75,158.5 C 66.75,153.75 68.25,153.25 68.5,149.75 C 68.75,146.25 68.25,134 65.5,129.75 C 62.75,125.5 52.5,116 49.75,105.5 C 47,95 50,64.5 58.25,57.25 C 66.5,50 90.25,50 95.75,46.75 C 101.25,43.5 101,30 108.75,22.25 C 116.5,14.5 135.75,9.9999997 135.75,9.9999997" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5317" d="M 190,18.5 C 201.75,23.5 229,28.25 237.25,58.75" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5325" d="M 9.75,214 C 28.75,201.5 45.75,212.75 58.75,210 C 71.75,207.25 97,172.75 104.75,173 C 112.5,173.25 110.25,161.25 113.25,159.75 C 116.25,158.25 118.75,165.75 125,167.75 C 131.25,169.75 149.5,165 148.5,162 C 147.5,159 141.5,154.25 143,153.5 C 144.5,152.75 151.5,158.5 155.75,157 C 160,155.5 199.5,156 204.25,143.5 C 209,131 225.75,130 225.75,130" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path sodipodi:nodetypes="csssssssc" id="path5327" d="M 77.5,233.5 C 91,222 100.75,208.5 106,206.5 C 111.25,204.5 118.75,202.75 121.75,198.5 C 124.75,194.25 124.25,187.75 127,186.5 C 129.75,185.25 130.75,192.25 135.75,192.5 C 140.75,192.75 172.5,187.5 178.5,180.75 C 184.5,174 210.75,168.25 211,166.25 C 211.25,164.25 210,161.5 211.25,160.75 C 212.5,160 236,154.75 236,154.75" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5329" d="M 168.75,236 C 177.75,222.25 189.25,195 198.25,194 C 207.25,193 208.5,191.5 210.75,189.75 C 213,188 227.75,192 227.75,192" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+    </g>
+    <g id="g5400" clip-path="url(#clipPath5426)" transform="translate(0,-10)">
+      <path id="path5387" d="M 57.75,20 L 49.25,48.25 L 67.25,54.5 L 75,90.75 L 54,113 L 63,123.5 L 51,135 L 51.5,139.5 L 71.75,164 L 85.75,157.25 L 106.25,175.75 L 95.75,204 L 106,212.5 L 103.25,225.5" style="fill:none;stroke:#d38484;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5389" d="M 105.75,212.25 L 118.25,184.5 L 129.25,177.5 L 156.75,193.25 L 177.25,189.5 L 177,173.75 L 166.75,167.75 L 179.5,141.5 L 185.25,137.75 L 224,127.75" style="fill:none;stroke:#d38484;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+    </g>
+  </g>
+  <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" transform="translate(0,192)" sodipodi:insensitive="true" style="display:inline">
+    <g id="g4199" transform="translate(0,320)" style="opacity:0.5043478">
+      <path sodipodi:nodetypes="cscscscscscccccsc" id="path3834-4" transform="translate(0,-192)" d="M 219.25,10 C 219.25,10 195,19 187.5,20.5 C 180,22 166.5,25.75 166.5,25.75 C 166.5,25.75 156.75,21.5 144.5,17.25 C 132.25,13 114.75,11.75 114.75,11.75 C 114.75,11.75 111.5,15.25 92.75,19.75 C 74.000003,24.25 65.25,25.5 65.25,25.5 C 65.25,25.5 46.75,16.5 33.75,14 C 20.75,11.5 9.75,12 9,12.25 C 9,12.25 16.5,25.25 20.75,40 C 25,54.75 27,65.5 27,65.5 L 78.46875,70.625 L 127.4375,66.625 L 179.6875,78.65625 C 190.07319,74.238496 231.80421,73.755785 235,65.5 C 235,65.5 230.25,50.25 227.5,35.75 C 224.75,21.25 219.25,10 219.25,10 z" style="fill:#b1e479;fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="cscccccsccccc" id="path3834-7-2" transform="translate(0,-192)" d="M 27,65.5 C 27,65.5 21.5,78.25 18.75,90.25 C 16,102.25 13,113.25 13,113.25 L 63.96875,129.625 L 117.6875,113.875 L 169.9375,131.40625 C 186.30214,127.14964 202.33444,122.28803 218,116 C 218,116 219.75,105.5 224.75,92.25 C 229.75,79 235,65.5 235,65.5 C 231.80421,73.75579 190.07319,74.2385 179.6875,78.65625 L 127.4375,66.625 L 79.46875,70.625 L 27,65.5 z" style="fill:#87d531;fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26" transform="translate(0,-192)" d="M 231.75,165.5 C 213.85059,173.17118 195.80681,180.40405 177.4375,186.90625 L 125.1875,168.375 L 74.96875,177.375 L 26,167.5 C 26,167.5 22,177.75 18.5,191.75 C 15,205.75 13.5,222.5 13.5,222.5 C 13.5,222.5 22.75,220.5 42,223.75 C 61.25,227 74.25,229.75 74.25,229.75 C 74.25,229.75 87.000003,227 98.25,223.5 C 109.5,220 114.5,217 114.5,217 C 114.5,217 120,217.5 137,223.25 C 154,229 166.25,231.75 166.25,231.75 C 166.25,231.75 179.25,229 192.25,226 C 205.25,223 218.75,218 218.75,218 C 218.75,218 218,213 223,193.5 C 228,174 231.75,165.5 231.75,165.5 z" style="fill:#ceeeab;fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="cscccccsccccc" id="path3834-7-26-0" transform="translate(0,-192)" d="M 13,113.25 C 13,113.25 18.75,129.25 22.25,143.25 C 25.75,157.25 26,167.5 26,167.5 L 74.96875,177.375 L 125.1875,168.375 L 177.4375,186.90625 C 195.80681,180.40405 213.85059,173.17118 231.75,165.5 C 231.75,165.5 231.25,161 228,145.75 C 224.75,130.5 218,116 218,116 C 202.33444,122.28803 186.30214,127.14964 169.9375,131.40625 L 117.6875,113.875 L 63.96875,129.625 L 13,113.25 z" style="fill:#b9e787;fill-opacity:1;stroke:none"/>
+    </g>
+    <g id="g4205" style="opacity:0.52173911" transform="translate(0,140)">
+      <path sodipodi:nodetypes="ccscscscscscccccsc" id="path3834-2" d="M 13.71875,0.03125 C 10.989746,0.02425 9.28125,0.15625 9,0.25 C 9,0.25 16.5,13.25 20.75,28 C 25,42.75 27,53.5 27,53.5 C 27,53.5 21.5,66.25 18.75,78.25 C 16,90.25 13,101.25 13,101.25 C 13,101.25 18.75,117.25 22.25,131.25 C 25.75,145.25 26,155.5 26,155.5 C 26,155.5 22,165.75 18.5,179.75 C 15,193.75 13.5,210.5 13.5,210.5 C 13.5,210.5 22.75,208.5 42,211.75 C 61.25,215 74.25,217.75 74.25,217.75 L 75.75,164.5 L 63.5,118 L 79.5,58.25 C 77.279793,42.77003 70.432295,28.20354 65.25,13.5 C 65.25,13.5 46.75,4.5 33.75,2 C 25.625,0.4375 18.26709,0.04346 13.71875,0.03125 z" style="fill:#83d32b;fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="cscccccsccccc" id="path3834-6-2" d="M 114.75,-0.25 C 114.75,-0.25 111.5,3.25 92.75,7.75 C 74,12.25 65.25,13.5 65.25,13.5 C 70.432295,28.20354 77.279793,42.77003 79.5,58.25 L 63.5,118 L 75.75,164.5 L 74.25,217.75 C 74.25,217.75 87,215 98.25,211.5 C 109.5,208 114.5,205 114.5,205 L 125.75,156.5 L 117.5,102.25 L 129.25,57.25 C 125.81031,47.52322 121.18553,0.32024 114.75,-0.25 z" style="fill:#b1e479;fill-opacity:1;stroke:none"/>
+      <path id="path3834-6-6" d="M 219.25,-2 C 219.25,-2 195,7 187.5,8.5 C 180,10 166.5,13.75 166.5,13.75 C 171.42395,12.39167 177.93679,59.14247 180.75,66 L 169.5,119.25 L 179,174.25 L 166.25,219.75 C 166.25,219.75 179.25,217 192.25,214 C 205.25,211 218.75,206 218.75,206 C 218.75,206 218,201 223,181.5 C 228,162 231.75,153.5 231.75,153.5 C 231.75,153.5 231.25,149 228,133.75 C 224.75,118.5 218,104 218,104 C 218,104 219.75,93.5 224.75,80.25 C 229.75,67 235,53.5 235,53.5 C 235,53.5 230.25,38.25 227.5,23.75 C 224.75,9.25 219.25,-2 219.25,-2 z" style="fill:#a4df62;fill-opacity:1;stroke:none" sodipodi:nodetypes="cscccccscscscscsc"/>
+      <path sodipodi:nodetypes="cccccscccccsc" id="path3834-6-6-9" d="M 114.75,-0.25 C 121.18553,0.32024 125.81031,47.52322 129.25,57.25 L 117.5,102.25 L 125.75,155.5 L 114.5,205 C 114.5,205 120,205.5 137,211.25 C 154,217 166.25,219.75 166.25,219.75 L 179,174.25 L 169.5,119.25 L 180.75,66 C 177.93679,59.14247 171.42395,12.39167 166.5,13.75 C 166.5,13.75 156.75,9.5 144.5,5.25 C 132.25,1 114.75,-0.25 114.75,-0.25 z" style="fill:#ceeeab;fill-opacity:1;stroke:none"/>
+    </g>
+    <path style="opacity:0.03913042;fill:url(#linearGradient5168);fill-opacity:1;stroke:none" d="M 9,-189.75 C 9,-189.75 16.5,-176.75 20.75,-162 C 25,-147.25 27,-136.5 27,-136.5 C 27,-136.5 21.5,-123.75 18.75,-111.75 C 16,-99.75 13,-88.75 13,-88.75 C 13,-88.75 18.75,-72.75 22.25,-58.75 C 25.75,-44.75 26,-34.5 26,-34.5 C 26,-34.5 22,-24.25 18.5,-10.25 C 15,3.75 13.5,20.5 13.5,20.5 C 13.5,20.5 22.75,18.5 42,21.75 C 61.25,25 74.25,27.75 74.25,27.75 C 74.25,27.75 87,25 98.25,21.5 C 109.5,18 114.5,15 114.5,15 C 114.5,15 120,15.5 137,21.25 C 154,27 166.25,29.75 166.25,29.75 C 166.25,29.75 179.25,27 192.25,24 C 205.25,21 218.75,16 218.75,16 C 218.75,16 218,11 223,-8.5 C 228,-28 231.75,-36.5 231.75,-36.5 C 231.75,-36.5 231.25,-41 228,-56.25 C 224.75,-71.5 218,-86 218,-86 C 218,-86 219.75,-96.5 224.75,-109.75 C 229.75,-123 235,-136.5 235,-136.5 C 235,-136.5 230.25,-151.75 227.5,-166.25 C 224.75,-180.75 219.25,-192 219.25,-192 C 219.25,-192 195,-183 187.5,-181.5 C 180,-180 166.5,-176.25 166.5,-176.25 C 166.5,-176.25 156.75,-180.5 144.5,-184.75 C 132.25,-189 114.75,-190.25 114.75,-190.25 C 114.75,-190.25 111.5,-186.75 92.75,-182.25 C 74,-177.75 65.25,-176.5 65.25,-176.5 C 65.25,-176.5 46.75,-185.5 33.75,-188 C 20.75,-190.5 9.75,-190 9,-189.75 z" id="path3834-49"/>
+  </g>
+  <g inkscape:groupmode="layer" id="layer3" inkscape:label="grid_shade" style="display:inline" sodipodi:insensitive="true">
+    <g transform="translate(0,182)" id="g4808" style="opacity:0.2695656">
+      <path id="path3834-4-9" d="M 219.25,-182 C 219.25,-182 195,-173 187.5,-171.5 C 180,-170 166.5,-166.25 166.5,-166.25 C 171.42395,-167.60833 177.93679,-120.85753 180.75,-114 L 180.6875,-113.71875 C 192.49544,-117.79254 231.89797,-118.48643 235,-126.5 C 235,-126.5 230.25,-141.75 227.5,-156.25 C 224.75,-170.75 219.25,-182 219.25,-182 z" style="fill:url(#linearGradient4806-9);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-2-4-9" d="M 27,-126.5 C 27,-126.5 21.5,-113.75 18.75,-101.75 C 16,-89.75 13,-78.75 13,-78.75 L 63.625,-62.46875 L 79.40625,-121.375 L 27,-126.5 z" style="fill:url(#linearGradient4790-3);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-9-7" d="M 26,-24.5 C 26,-24.5 22,-14.25 18.5,-0.25 C 15,13.75 13.5,30.5 13.5,30.5 C 13.5,30.5 13.646973,30.4546 13.9375,30.4063 C 15.971191,30.06792 25.15625,28.9063 42,31.75005 C 61.25,35.00005 74.25,37.75005 74.25,37.75005 L 75.71875,-14.74995 L 74.96875,-14.62495 L 26,-24.5 z" style="fill:url(#linearGradient4758-2);fill-opacity:1;stroke:none"/>
+      <path id="path3834-4-9-6" d="M 114.75,-180.25 C 114.75,-180.25 111.5,-176.75 92.75,-172.25 C 74.000003,-167.75 65.25,-166.5 65.25,-166.5 C 70.432295,-151.79646 77.279793,-137.22997 79.5,-121.75 L 79.40625,-121.4375 L 127.4375,-125.375 L 128.5625,-125.125 C 125.20002,-138.4478 120.76647,-179.71689 114.75,-180.25 z" style="fill:url(#linearGradient4750-9);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-0-0-9" d="M 117.59375,-78.09375 L 63.96875,-62.375 L 63.625,-62.46875 L 63.5,-62 L 75.75,-15.5 L 75.71875,-14.75 L 125.1875,-23.625 L 125.71875,-23.4375 L 125.74995,-23.5 L 117.49995,-77.75 L 117.59365,-78.09375 L 117.59375,-78.09375 z" style="fill:url(#linearGradient4782-5);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-2-4-3" d="M 128.5625,-125.125 C 128.7967,-124.19705 129.02602,-123.38337 129.25,-122.75 L 117.59375,-78.09375 L 117.68745,-78.12495 L 169.49995,-60.74995 L 180.68745,-113.7187 C 180.33054,-113.59556 179.99216,-113.47332 179.68745,-113.3437 L 128.56245,-125.12495 L 128.5625,-125.125 z" style="fill:url(#linearGradient4798-4);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-9-85" d="M 125.53125,-23.5 L 114.5,25 C 114.5,25 120,25.5 137,31.25 C 139.125,31.96875 141.16309,32.65576 143.125,33.28125 C 145.08691,33.90674 146.98047,34.4668 148.75,35 C 159.36719,38.19922 166.25,39.75 166.25,39.75 L 178.96875,-5.65625 C 178.45649,-5.47361 177.95026,-5.27525 177.4375,-5.09375 L 125.53125,-23.5 z" style="fill:url(#linearGradient4766-3);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-0-0-3" d="M 218,-76 C 202.33444,-69.71197 186.30214,-64.85036 169.9375,-60.59375 L 169.5,-60.75 L 179,-5.75 L 178.9688,-5.6563 C 196.80782,-12.01643 214.35028,-19.043 231.75005,-26.50005 C 231.75005,-26.50005 231.25005,-31.00005 228.00005,-46.25005 C 224.75,-61.5 218,-76 218,-76 z" style="fill:url(#linearGradient4965);fill-opacity:1;stroke:none"/>
+    </g>
+    <g transform="translate(0,182)" id="g4818" style="opacity:0.04347827">
+      <path id="path3834-4-9-1" d="M 13.71875,-179.96875 C 12.61251,-179.97175 11.746535,-179.93665 11,-179.90625 C 10.55476,-179.88815 10.144586,-179.86725 9.84375,-179.84375 C 9.81446,-179.84175 9.7778,-179.84575 9.75,-179.84375 C 9.352051,-179.81105 9.09375,-179.78125 9,-179.75005 C 9,-179.75005 16.5,-166.75005 20.75,-152.00005 C 25,-137.25 27,-126.5 27,-126.5 L 78.46875,-121.375 L 79.40625,-121.4375 L 79.5,-121.75 C 77.279793,-137.22997 70.432295,-151.79646 65.25,-166.5 C 65.25,-166.5 46.75,-175.5 33.75,-178 C 32.731734,-178.19582 31.73976,-178.37068 30.75,-178.53125 C 30.154387,-178.62795 29.583119,-178.72763 29,-178.8125 C 28.763416,-178.8469 28.546809,-178.8737 28.3125,-178.9062 C 27.006022,-179.08805 25.724495,-179.24659 24.5,-179.37495 C 23.765447,-179.45195 23.105404,-179.50254 22.40625,-179.56245 C 21.721361,-179.62155 21.053311,-179.67434 20.40625,-179.7187 C 19.414378,-179.7865 18.515844,-179.83704 17.625,-179.87495 C 16.168632,-179.93805 14.855835,-179.96565 13.71875,-179.96865 L 13.71875,-179.96875 z" style="fill:url(#linearGradient4686-3);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-0-0-7" d="M 13,-78.75 C 13,-78.75 18.75,-62.75 22.25,-48.75 C 25.75,-34.75 26,-24.5 26,-24.5 L 74.96875,-14.625 L 75.71875,-14.75 L 75.75,-15.5 L 63.5,-62 L 63.625,-62.46875 L 13,-78.75 z" style="fill:url(#linearGradient4742-3);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-2-4-6" d="M 127.4375,-125.375 L 79.46875,-121.375 L 79.40625,-121.375 L 63.625,-62.46875 L 63.96875,-62.375 L 117.59375,-78.09375 L 129.25,-122.75 C 129.02602,-123.38337 128.7967,-124.19705 128.5625,-125.125 L 127.4375,-125.375 L 127.4375,-125.375 z" style="fill:url(#linearGradient4734-3);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-9-8" d="M 125.1875,-23.625 L 75.71875,-14.75 L 74.25,37.75 C 74.25,37.75 87.000003,35 98.25,31.5 C 109.5,28 114.5,25 114.5,25 L 125.71875,-23.4375 L 125.1875,-23.625 z" style="fill:url(#linearGradient4726-9);fill-opacity:1;stroke:none"/>
+      <path id="path3834-4-9-2" d="M 114.75,-180.25 C 120.76647,-179.71689 125.20002,-138.4478 128.5625,-125.125 L 179.6875,-113.34375 C 179.99221,-113.47337 180.33059,-113.59561 180.6875,-113.71875 L 180.75,-114 C 177.93679,-120.85753 171.42395,-167.60833 166.5,-166.25 C 166.5,-166.25 165.88672,-166.50391 164.78125,-166.96875 C 161.46484,-168.36328 153.6875,-171.5625 144.5,-174.75 C 132.25,-179 114.75,-180.25 114.75,-180.25 z" style="fill:url(#linearGradient4710-2);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-0-0-0" d="M 117.6875,-78.125 L 117.5938,-78.0938 L 117.5001,-77.75005 L 125.7501,-24.50005 L 125.53135,-23.50005 L 177.4376,-5.0938 C 177.95036,-5.2753 178.45659,-5.47366 178.96885,-5.6563 L 179,-5.75 L 169.5,-60.75 L 117.6875,-78.125 L 117.6875,-78.125 z" style="fill:url(#linearGradient4718-4);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-26-9-9" d="M 231.75,-26.5 C 214.35023,-19.04295 196.80777,-12.01638 178.96875,-5.65625 L 166.25,39.75 C 166.25,39.75 179.25,37 192.25,34 C 205.25,31 218.75,26 218.75,26 C 218.75,26 218,21 223,1.5 C 228,-18 231.75,-26.5 231.75,-26.5 z" style="fill:url(#linearGradient4694-4);fill-opacity:1;stroke:none"/>
+      <path id="path3834-7-2-4-5" d="M 235,-126.5 C 231.89797,-118.48643 192.49544,-117.79254 180.6875,-113.71875 L 169.5,-60.75 L 169.9375,-60.59375 C 186.30214,-64.85036 202.33444,-69.71197 218,-76 C 218,-76 219.75,-86.5 224.75,-99.75 C 229.75,-113 235,-126.5 235,-126.5 z" style="fill:url(#linearGradient4702-4);fill-opacity:1;stroke:none"/>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="layer7" inkscape:label="mag_zoom" sodipodi:insensitive="true" style="display:inline">
+    <g style="display:inline" id="g8102" transform="matrix(1.2525366,3.539823e-2,0,1.2525366,-27.80947,-48.34395)" clip-path="url(#clipPath8617)">
+      <path id="path3834-9-1" d="M 9,12.25 C 9,12.25 16.5,25.25 20.75,40 C 25,54.75 27,65.5 27,65.5 C 27,65.5 21.5,78.25 18.75,90.25 C 16,102.25 13,113.25 13,113.25 C 13,113.25 18.75,129.25 22.25,143.25 C 25.75,157.25 26,167.5 26,167.5 C 26,167.5 22,177.75 18.5,191.75 C 15,205.75 13.5,222.5 13.5,222.5 C 13.5,222.5 22.75,220.5 42,223.75 C 61.25,227 74.25,229.75 74.25,229.75 C 74.25,229.75 87,227 98.25,223.5 C 109.5,220 114.5,217 114.5,217 C 114.5,217 120,217.5 137,223.25 C 154,229 166.25,231.75 166.25,231.75 C 166.25,231.75 179.25,229 192.25,226 C 205.25,223 218.75,218 218.75,218 C 218.75,218 218,213 223,193.5 C 228,174 231.75,165.5 231.75,165.5 C 231.75,165.5 231.25,161 228,145.75 C 224.75,130.5 218,116 218,116 C 218,116 219.75,105.5 224.75,92.25 C 229.75,79 235,65.5 235,65.5 C 235,65.5 230.25,50.25 227.5,35.75 C 224.75,21.25 219.25,10 219.25,10 C 219.25,10 195,19 187.5,20.5 C 180,22 166.5,25.75 166.5,25.75 C 166.5,25.75 156.75,21.5 144.5,17.25 C 132.25,13 114.75,11.75 114.75,11.75 C 114.75,11.75 111.5,15.25 92.75,19.75 C 74,24.25 65.25,25.5 65.25,25.5 C 65.25,25.5 46.75,16.5 33.75,14 C 20.75,11.5 9.75,12 9,12.25 z" style="fill:#ceeeab;fill-opacity:1;stroke:none"/>
+      <g clip-path="url(#clipPath5466-2-3)" id="g5438-0">
+        <path id="path5436-7" d="M 110.75,5.5 L 106.5,12.5 C 105.75,21.5 104.25,26.25 98,29 C 91.75,31.75 85.75,32.5 87,36.5 C 88.25,40.5 100,45.75 101.25,49.5 C 102.5,53.25 109.5,51.25 112.25,56.5 C 115,61.75 114.25,71.75 108.5,73.75 C 102.75,75.75 91,74.25 88.25,83.25 C 85.5,92.25 83.5,93.75 79.25,96 C 75,98.25 72,106.5 75.75,112.5 C 79.5,118.5 88,111.25 90.75,106 C 93.5,100.75 98,97.25 98,97.25 L 121.75,97.25 L 180.75,95.5 L 184,91.75 C 184,91.75 187.25,95.75 186.75,100.5 C 186.25,105.25 183,115.25 187,117.75 C 191,120.25 206.5,115.75 211,110.75 C 215.5,105.75 206.25,82.5 200.5,81.25 C 194.75,80 182,79.5 183.5,74.25 C 185,69 195.25,78.75 200.75,77.5 C 206.25,76.25 217.5,56.5 212.75,52.25 C 208,48 188.5,47 187,44.25 C 185.5,41.5 208,36.25 209.25,33.25 C 210.5,30.25 206.75,26 203,24.75 C 199.25,23.5 189,41 182,40.5 C 175,40 162,46.25 164.75,52 C 167.5,57.75 158.75,63 150.25,58.5 C 141.75,54 125.5,45.5 128.5,34.5 C 131.5,23.5 150,15.75 150,15.75 L 110.75,5.5 z M 97.1875,112.71875 C 95.592651,112.86523 92.71875,117.40625 92.25,119.75 C 91.75,122.25 89,126.5 88.75,132 C 88.5,137.5 93.5,138.75 97.5,138.5 C 101.5,138.25 100.25,131.75 99.5,123.5 C 99.25,123.5 99,113.25 97.5,112.75 C 97.40625,112.7188 97.293823,112.709 97.1875,112.7188 L 97.1875,112.71875 z M 189.90625,164.375 C 183.5708,164.67041 183.28125,171.84375 182.5,173.25 C 181.25,175.5 184.75,187 184.5,191.25 C 184.25,195.5 179.75,196.5 175,201 C 170.25,205.5 175.5,217 186.25,232 L 231,233.25 L 230,198.25 C 230,198.25 234.75,194 209.25,174 C 199.6875,166.5 193.70752,164.19775 189.90625,164.375 z M 39.9375,180.90625 C 35.908264,180.80371 31.65625,186.625 30.25,188.5 C 28.75,190.5 24,193.5 13.25,198 L -1.25,232.25 L 51.75,236.5 C 51.75,236.5 53.5,225.5 47.5,220.75 C 41.5,216 30.25,215 29.25,207.5 C 28.25,200 38.5,197.5 43,193.25 C 47.5,189 45,182 40.75,181 C 40.484375,180.9375 40.206116,180.9131 39.9375,180.9063 L 39.9375,180.90625 z" style="fill:#a6dd8b;fill-opacity:1;stroke:none"/>
+      </g>
+      <path id="path5280-4" d="M 158.53125,85.34375 C 153.77142,85.329407 149.5,86.3125 147,88.5 C 139,95.5 112,89.25 98.5,95.5 C 85,101.75 85.25,133.5 83.75,140 C 82.25,146.5 66.25,160.75 63.75,163.5 C 61.25,166.25 50.5,170.75 44.25,172 C 38,173.25 31.5,179.25 28.75,183 C 26.728876,185.75608 21.343981,189.45031 18.625,191.21875 C 18.5792,191.40003 18.54564,191.56743 18.5,191.75 C 18.366311,192.28475 18.25288,192.83331 18.125,193.375 C 23.104513,191.77018 29.304508,185.19549 34.75,179.75 C 41,173.5 54.75,172 62.5,168.25 C 70.25,164.5 76.75,148.5 89,144.5 C 101.25,140.5 110.25,156.25 113.25,163 C 116.25,169.75 115,175.75 117,180 C 119,184.25 128,191.75 128.5,193.5 C 129,195.25 123.5,200 122.25,202 C 121,204 111.75,209 110.5,210.75 C 109.53432,212.10195 108.57684,217.52314 108.1875,219.96875 C 108.60053,219.79955 108.94168,219.65822 109.3125,219.5 C 109.7965,216.97067 110.82799,212.42201 112.25,211 C 114.25,209 123.5,206.5 124.75,202.5 C 126,198.5 131.75,196 131.75,196 C 131.75,196 134.5,200 147.75,210 C 156.58333,216.66667 160.5081,225.53356 162.15625,230.71875 C 162.82985,230.8894 163.6892,231.12815 164.1875,231.25 C 162.96635,226.93129 159.35104,215.01115 155.25,210.5 C 150.25,205 136.75,199.75 132.5,188.5 C 128.25,177.25 108,154.25 115,148.25 C 122,142.25 131.5,144.25 143.5,155.75 C 155.5,167.25 189.75,161.5 201.25,159.5 C 211.20453,157.76878 222.08445,174.38321 225.15625,185.53125 C 225.74525,183.43558 226.28288,181.52906 226.8125,179.78125 C 225.07444,177.85545 223.11528,175.16129 221.5,171.5 C 217.75,163 209.5,158.25 209.5,158.25 C 209.5,158.25 218.25,153.25 224.25,150.5 C 225.86703,149.75886 227.25627,148.82287 228.4375,147.84375 C 228.27516,147.06972 228.17857,146.5879 228,145.75 C 227.9689,145.60389 227.938,145.45846 227.9063,145.3125 C 223.14065,150.8749 208.67404,154.92782 206.25005,156.25 C 203.50005,157.75 188.00005,159.25 170.50005,160.75 C 153.00005,162.25 143.75005,153.25 136.25005,146 C 128.75005,138.75 123.25005,110 133.25005,108 C 143.25005,106 153.25005,121.75 163.25005,125 C 173.25005,128.25 184.75005,109.25 183.00005,98 C 181.79693,90.265625 169.00292,85.375305 158.5313,85.34375 L 158.53125,85.34375 z M 105.1875,98.625 C 106.46283,98.6265 111.04688,100.21875 111.75,101 C 114,103.5 113.75,108.25 111.75,109 C 109.75,109.75 99,117 101.25,123.25 C 103.5,129.5 103,141.25 97.75,141.25 C 92.5,141.25 89.75,141.25 87.75,138.75 C 85.75,136.25 85.75,126.75 87.75,119 C 89.75,111.25 91.25,104 95.75,100.75 C 98.84375,98.51562 102.38177,98.621643 105.1875,98.625 L 105.1875,98.625 z M 118.78125,171.71875 C 118.9845,171.73245 120.6875,175.23438 123.5,178.75 C 126.5,182.5 126.75,187 126.75,187 C 126.75,187 122.5,182.25 120.75,179 C 119,175.75 118.75,171.75 118.75,171.75 C 118.75,171.7188 118.7678,171.7177 118.7812,171.7188 L 118.78125,171.71875 z" style="fill:#aac3e7;fill-opacity:1;stroke:none"/>
+      <path id="path5319-8" d="M 122.75,72.25 C 129,72.75 135,70 133.5,65.75 C 132,61.5 121,58.5 120.25,62.75 C 119.5,67 122.25,73.25 122.75,72.25 z" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <path id="path5321-0" d="M 108.75,56.75 C 100.25,51.25 100.25,49.5 101.75,48.75 C 103.25,48 112,53.75 114.5,56.75 C 117,59.75 112.25,58.75 108.75,56.75 z" style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
+      <g clip-path="url(#clipPath5383-0-0)" id="g5373-1">
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 15.75,151.25 C 48.75,148.75 54,147.75 52,141 C 50,134.25 43.25,117.5 29,118.5 C 14.75,119.5 6.25,111.75 6.25,111.75" id="path5323-8"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-opacity:1" d="M 17.5,177.25 C 35.75,167.25 46.25,168.75 52.5,165.75 C 58.75,162.75 65.75,160 68.25,156.25 C 70.75,152.5 74,144.75 74,138.25 C 74,131.75 70.5,102.25 77.25,94.75 C 84,87.25 94.5,68.75 103.25,71.5 C 112,74.25 115.5,81.25 125.25,81 C 135,80.75 147,77 149.5,68.75 C 152,60.5 133.75,52.75 133.5,45.75 C 133.25,38.75 139,31.5 153.75,28.75 C 168.5,26 177.25,17.25 177.25,17.25" id="path5311-7"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 14.5,161 C 29.75,159.5 36.75,164.5 46,162.75 C 55.25,161 59.25,159.75 63.75,157 C 68.25,154.25 69.75,153.25 70,150.5 C 70.25,147.75 71,138 67,128.5 C 63,119 54.5,97 58.75,89.75 C 63,82.5 64,68.25 74.5,65.25 C 85,62.25 95.5,59 102.25,64 C 109,69 115,78.25 122.25,78.5 C 129.5,78.75 134,77 136.75,74 C 139.5,71 141.25,63.75 138.5,60.25 C 135.75,56.75 123,54.75 121.25,50.75 C 119.5,46.75 110.5,33.75 121,24 C 131.5,14.25 157.25,15.75 157.25,15.75" id="path5313-3"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 21.25,159 C 35,160 42.75,163.25 54.75,158.5 C 66.75,153.75 68.25,153.25 68.5,149.75 C 68.75,146.25 68.25,134 65.5,129.75 C 62.75,125.5 52.5,116 49.75,105.5 C 47,95 50,64.5 58.25,57.25 C 66.5,50 90.25,50 95.75,46.75 C 101.25,43.5 101,30 108.75,22.25 C 116.5,14.5 135.75,9.9999997 135.75,9.9999997" id="path5315-4"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 190,18.5 C 201.75,23.5 229,28.25 237.25,58.75" id="path5317-7"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 9.75,214 C 28.75,201.5 45.75,212.75 58.75,210 C 71.75,207.25 97,172.75 104.75,173 C 112.5,173.25 110.25,161.25 113.25,159.75 C 116.25,158.25 118.75,165.75 125,167.75 C 131.25,169.75 149.5,165 148.5,162 C 147.5,159 141.5,154.25 143,153.5 C 144.5,152.75 151.5,158.5 155.75,157 C 160,155.5 199.5,156 204.25,143.5 C 209,131 225.75,130 225.75,130" id="path5325-1"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 77.5,233.5 C 91,222 100.75,208.5 106,206.5 C 111.25,204.5 118.75,202.75 121.75,198.5 C 124.75,194.25 124.25,187.75 127,186.5 C 129.75,185.25 130.75,192.25 135.75,192.5 C 140.75,192.75 172.5,187.5 178.5,180.75 C 184.5,174 210.75,168.25 211,166.25 C 211.25,164.25 210,161.5 211.25,160.75 C 212.5,160 236,154.75 236,154.75" id="path5327-3" sodipodi:nodetypes="csssssssc"/>
+        <path style="opacity:0.38695655;fill:none;stroke:#6d7f42;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 168.75,236 C 177.75,222.25 189.25,195 198.25,194 C 207.25,193 208.5,191.5 210.75,189.75 C 213,188 227.75,192 227.75,192" id="path5329-4"/>
+      </g>
+      <g clip-path="url(#clipPath5426-1-6)" id="g5400-4">
+        <path style="fill:none;stroke:#d38484;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 57.75,20 L 49.25,48.25 L 67.25,54.5 L 75,90.75 L 54,113 L 63,123.5 L 51,135 L 51.5,139.5 L 71.75,164 L 85.75,157.25 L 106.25,175.75 L 95.75,204 L 106,212.5 L 103.25,225.5" id="path5387-2"/>
+        <path style="fill:none;stroke:#d38484;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M 105.75,212.25 L 118.25,184.5 L 129.25,177.5 L 156.75,193.25 L 177.25,189.5 L 177,173.75 L 166.75,167.75 L 179.5,141.5 L 185.25,137.75 L 224,127.75" id="path5389-4"/>
+      </g>
+      <path id="path3834-49-6" d="M 9,12.25 C 9,12.25 16.5,25.25 20.75,40 C 25,54.75 27,65.5 27,65.5 C 27,65.5 21.5,78.25 18.75,90.25 C 16,102.25 13,113.25 13,113.25 C 13,113.25 18.75,129.25 22.25,143.25 C 25.75,157.25 26,167.5 26,167.5 C 26,167.5 22,177.75 18.5,191.75 C 15,205.75 13.5,222.5 13.5,222.5 C 13.5,222.5 22.75,220.5 42,223.75 C 61.25,227 74.25,229.75 74.25,229.75 C 74.25,229.75 87,227 98.25,223.5 C 109.5,220 114.5,217 114.5,217 C 114.5,217 120,217.5 137,223.25 C 154,229 166.25,231.75 166.25,231.75 C 166.25,231.75 179.25,229 192.25,226 C 205.25,223 218.75,218 218.75,218 C 218.75,218 218,213 223,193.5 C 228,174 231.75,165.5 231.75,165.5 C 231.75,165.5 231.25,161 228,145.75 C 224.75,130.5 218,116 218,116 C 218,116 219.75,105.5 224.75,92.25 C 229.75,79 235,65.5 235,65.5 C 235,65.5 230.25,50.25 227.5,35.75 C 224.75,21.25 219.25,10 219.25,10 C 219.25,10 195,19 187.5,20.5 C 180,22 166.5,25.75 166.5,25.75 C 166.5,25.75 156.75,21.5 144.5,17.25 C 132.25,13 114.75,11.75 114.75,11.75 C 114.75,11.75 111.5,15.25 92.75,19.75 C 74,24.25 65.25,25.5 65.25,25.5 C 65.25,25.5 46.75,16.5 33.75,14 C 20.75,11.5 9.75,12 9,12.25 z" style="opacity:0.03913042;fill:url(#linearGradient5168-2-9);fill-opacity:1;stroke:none"/>
+      <g style="opacity:0.2695656;display:inline" id="g4808-4" transform="translate(0,192)">
+        <path style="fill:url(#linearGradient4806-9-8-4);fill-opacity:1;stroke:none" d="M 219.25,-182 C 219.25,-182 195,-173 187.5,-171.5 C 180,-170 166.5,-166.25 166.5,-166.25 C 171.42395,-167.60833 177.93679,-120.85753 180.75,-114 L 180.6875,-113.71875 C 192.49544,-117.79254 231.89797,-118.48643 235,-126.5 C 235,-126.5 230.25,-141.75 227.5,-156.25 C 224.75,-170.75 219.25,-182 219.25,-182 z" id="path3834-4-9-9"/>
+        <path style="fill:url(#linearGradient4790-3-9-7);fill-opacity:1;stroke:none" d="M 27,-126.5 C 27,-126.5 21.5,-113.75 18.75,-101.75 C 16,-89.75 13,-78.75 13,-78.75 L 63.625,-62.46875 L 79.40625,-121.375 L 27,-126.5 z" id="path3834-7-2-4-9-8"/>
+        <path style="fill:url(#linearGradient4758-2-6-2);fill-opacity:1;stroke:none" d="M 26,-24.5 C 26,-24.5 22,-14.25 18.5,-0.25 C 15,13.75 13.5,30.5 13.5,30.5 C 13.5,30.5 13.646973,30.4546 13.9375,30.4063 C 15.971191,30.06792 25.15625,28.9063 42,31.75005 C 61.25,35.00005 74.25,37.75005 74.25,37.75005 L 75.71875,-14.74995 L 74.96875,-14.62495 L 26,-24.5 z" id="path3834-7-26-9-7-4"/>
+        <path style="fill:url(#linearGradient4750-9-9-4);fill-opacity:1;stroke:none" d="M 114.75,-180.25 C 114.75,-180.25 111.5,-176.75 92.75,-172.25 C 74.000003,-167.75 65.25,-166.5 65.25,-166.5 C 70.432295,-151.79646 77.279793,-137.22997 79.5,-121.75 L 79.40625,-121.4375 L 127.4375,-125.375 L 128.5625,-125.125 C 125.20002,-138.4478 120.76647,-179.71689 114.75,-180.25 z" id="path3834-4-9-6-2"/>
+        <path style="fill:url(#linearGradient4782-5-5-9);fill-opacity:1;stroke:none" d="M 117.59375,-78.09375 L 63.96875,-62.375 L 63.625,-62.46875 L 63.5,-62 L 75.75,-15.5 L 75.71875,-14.75 L 125.1875,-23.625 L 125.71875,-23.4375 L 125.74995,-23.5 L 117.49995,-77.75 L 117.59365,-78.09375 L 117.59375,-78.09375 z" id="path3834-7-26-0-0-9-5"/>
+        <path style="fill:url(#linearGradient4798-4-1-9);fill-opacity:1;stroke:none" d="M 128.5625,-125.125 C 128.7967,-124.19705 129.02602,-123.38337 129.25,-122.75 L 117.59375,-78.09375 L 117.68745,-78.12495 L 169.49995,-60.74995 L 180.68745,-113.7187 C 180.33054,-113.59556 179.99216,-113.47332 179.68745,-113.3437 L 128.56245,-125.12495 L 128.5625,-125.125 z" id="path3834-7-2-4-3-7"/>
+        <path style="fill:url(#linearGradient4766-3-6-2);fill-opacity:1;stroke:none" d="M 125.53125,-23.5 L 114.5,25 C 114.5,25 120,25.5 137,31.25 C 139.125,31.96875 141.16309,32.65576 143.125,33.28125 C 145.08691,33.90674 146.98047,34.4668 148.75,35 C 159.36719,38.19922 166.25,39.75 166.25,39.75 L 178.96875,-5.65625 C 178.45649,-5.47361 177.95026,-5.27525 177.4375,-5.09375 L 125.53125,-23.5 z" id="path3834-7-26-9-85-2"/>
+        <path style="fill:url(#linearGradient4965-0-3);fill-opacity:1;stroke:none" d="M 218,-76 C 202.33444,-69.71197 186.30214,-64.85036 169.9375,-60.59375 L 169.5,-60.75 L 179,-5.75 L 178.9688,-5.6563 C 196.80782,-12.01643 214.35028,-19.043 231.75005,-26.50005 C 231.75005,-26.50005 231.25005,-31.00005 228.00005,-46.25005 C 224.75,-61.5 218,-76 218,-76 z" id="path3834-7-26-0-0-3-7"/>
+      </g>
+      <g style="opacity:0.04347827;display:inline" id="g4818-4" transform="translate(0,192)">
+        <path style="fill:url(#linearGradient4686-3-4-6);fill-opacity:1;stroke:none" d="M 13.71875,-179.96875 C 12.61251,-179.97175 11.746535,-179.93665 11,-179.90625 C 10.55476,-179.88815 10.144586,-179.86725 9.84375,-179.84375 C 9.81446,-179.84175 9.7778,-179.84575 9.75,-179.84375 C 9.352051,-179.81105 9.09375,-179.78125 9,-179.75005 C 9,-179.75005 16.5,-166.75005 20.75,-152.00005 C 25,-137.25 27,-126.5 27,-126.5 L 78.46875,-121.375 L 79.40625,-121.4375 L 79.5,-121.75 C 77.279793,-137.22997 70.432295,-151.79646 65.25,-166.5 C 65.25,-166.5 46.75,-175.5 33.75,-178 C 32.731734,-178.19582 31.73976,-178.37068 30.75,-178.53125 C 30.154387,-178.62795 29.583119,-178.72763 29,-178.8125 C 28.763416,-178.8469 28.546809,-178.8737 28.3125,-178.9062 C 27.006022,-179.08805 25.724495,-179.24659 24.5,-179.37495 C 23.765447,-179.45195 23.105404,-179.50254 22.40625,-179.56245 C 21.721361,-179.62155 21.053311,-179.67434 20.40625,-179.7187 C 19.414378,-179.7865 18.515844,-179.83704 17.625,-179.87495 C 16.168632,-179.93805 14.855835,-179.96565 13.71875,-179.96865 L 13.71875,-179.96875 z" id="path3834-4-9-1-4"/>
+        <path style="fill:url(#linearGradient4742-3-4-4);fill-opacity:1;stroke:none" d="M 13,-78.75 C 13,-78.75 18.75,-62.75 22.25,-48.75 C 25.75,-34.75 26,-24.5 26,-24.5 L 74.96875,-14.625 L 75.71875,-14.75 L 75.75,-15.5 L 63.5,-62 L 63.625,-62.46875 L 13,-78.75 z" id="path3834-7-26-0-0-7-0"/>
+        <path style="fill:url(#linearGradient4734-3-7-6);fill-opacity:1;stroke:none" d="M 127.4375,-125.375 L 79.46875,-121.375 L 79.40625,-121.375 L 63.625,-62.46875 L 63.96875,-62.375 L 117.59375,-78.09375 L 129.25,-122.75 C 129.02602,-123.38337 128.7967,-124.19705 128.5625,-125.125 L 127.4375,-125.375 L 127.4375,-125.375 z" id="path3834-7-2-4-6-5"/>
+        <path style="fill:url(#linearGradient4726-9-4-9);fill-opacity:1;stroke:none" d="M 125.1875,-23.625 L 75.71875,-14.75 L 74.25,37.75 C 74.25,37.75 87.000003,35 98.25,31.5 C 109.5,28 114.5,25 114.5,25 L 125.71875,-23.4375 L 125.1875,-23.625 z" id="path3834-7-26-9-8-6"/>
+        <path style="fill:url(#linearGradient4710-2-1-6);fill-opacity:1;stroke:none" d="M 114.75,-180.25 C 120.76647,-179.71689 125.20002,-138.4478 128.5625,-125.125 L 179.6875,-113.34375 C 179.99221,-113.47337 180.33059,-113.59561 180.6875,-113.71875 L 180.75,-114 C 177.93679,-120.85753 171.42395,-167.60833 166.5,-166.25 C 166.5,-166.25 165.88672,-166.50391 164.78125,-166.96875 C 161.46484,-168.36328 153.6875,-171.5625 144.5,-174.75 C 132.25,-179 114.75,-180.25 114.75,-180.25 z" id="path3834-4-9-2-0"/>
+        <path style="fill:url(#linearGradient4718-4-6-0);fill-opacity:1;stroke:none" d="M 117.6875,-78.125 L 117.5938,-78.0938 L 117.5001,-77.75005 L 125.7501,-24.50005 L 125.53135,-23.50005 L 177.4376,-5.0938 C 177.95036,-5.2753 178.45659,-5.47366 178.96885,-5.6563 L 179,-5.75 L 169.5,-60.75 L 117.6875,-78.125 L 117.6875,-78.125 z" id="path3834-7-26-0-0-0-0"/>
+        <path style="fill:url(#linearGradient4694-4-1-9);fill-opacity:1;stroke:none" d="M 231.75,-26.5 C 214.35023,-19.04295 196.80777,-12.01638 178.96875,-5.65625 L 166.25,39.75 C 166.25,39.75 179.25,37 192.25,34 C 205.25,31 218.75,26 218.75,26 C 218.75,26 218,21 223,1.5 C 228,-18 231.75,-26.5 231.75,-26.5 z" id="path3834-7-26-9-9-4"/>
+        <path style="fill:url(#linearGradient4702-4-6-9);fill-opacity:1;stroke:none" d="M 235,-126.5 C 231.89797,-118.48643 192.49544,-117.79254 180.6875,-113.71875 L 169.5,-60.75 L 169.9375,-60.59375 C 186.30214,-64.85036 202.33444,-69.71197 218,-76 C 218,-76 219.75,-86.5 224.75,-99.75 C 229.75,-113 235,-126.5 235,-126.5 z" id="path3834-7-2-4-5-0"/>
+      </g>
+    </g>
+  </g>
+  <g inkscape:groupmode="layer" id="layer6" inkscape:label="Mag Shadow" style="display:inline" sodipodi:insensitive="true">
+    <path style="fill:#2d3335;fill-opacity:1;stroke:none;filter:url(#filter7286)" d="M 174.28125,35.875 C 156.6825,35.875 139.08909,42.514475 125.5625,55.78125 C 125.39528,55.944528 125.22813,56.084367 125.0625,56.25 C 103.00655,78.305948 98.853795,111.50122 112.59375,137.75 L 110.3125,139.375 C 112.56129,143.61488 115.25415,147.6818 118.40625,151.5 L 105.09375,164.84375 C 103.75238,164.258 102.30517,163.81044 100.53125,163.46875 L 97.6875,166.3125 C 96.578031,165.82863 95.549481,165.49662 94.625,165.4375 L 30.5,229.5625 C 30.46313,230.66337 30.72615,231.74988 31.15625,232.84375 L 30.625,233.375 L 29.53125,234.46875 C 30.246688,238.20655 31.541682,241.29169 35,244.75 C 38.458318,248.20832 41.420414,249.38027 45.28125,250.21875 L 46.375,249.125 L 47.09375,248.40625 C 48.181953,248.8685 49.223649,249.19242 50.1875,249.25 L 114.3125,185.125 C 114.06964,184.15025 113.69207,183.18954 113.28125,182.21875 L 116.28125,179.21875 C 116.03142,177.48677 115.60454,176.02072 114.96875,174.625 L 128.25,161.34375 C 132.0682,164.49585 136.13512,167.18872 140.375,169.4375 L 142,167.15625 C 168.24878,180.8962 201.44405,176.74344 223.5,154.6875 C 223.66563,154.52186 223.80547,154.35472 223.96875,154.1875 C 250.66292,126.97054 250.51736,83.267352 223.5,56.25 C 209.91004,42.660041 192.09307,35.875 174.28125,35.875 z M 173.78125,39.15625 C 173.88592,39.15775 173.98908,39.15425 174.09375,39.15625 C 175.04294,39.17465 175.98913,39.22152 176.9375,39.28125 C 177.89594,39.34161 178.8563,39.428763 179.8125,39.53125 C 179.9062,39.5413 180.00004,39.55205 180.09375,39.5625 C 180.18775,39.57298 180.28105,39.58287 180.375,39.59375 C 180.5207,39.61063 180.66687,39.63839 180.8125,39.65625 C 181.7087,39.766152 182.60741,39.884369 183.5,40.03125 C 184.11909,40.133124 184.72687,40.255367 185.34375,40.375 C 185.6867,40.44144 186.03282,40.49058 186.375,40.5625 C 187.0987,40.714611 187.81147,40.885892 188.53125,41.0625 C 188.8443,41.13931 189.15653,41.199811 189.46875,41.28125 C 189.54185,41.30031 189.61445,41.32444 189.6875,41.34375 C 190.6434,41.596587 191.58423,41.860044 192.53125,42.15625 C 192.60365,42.17886 192.67766,42.19588 192.75,42.21875 C 193.69741,42.518592 194.65684,42.844291 195.59375,43.1875 C 195.64685,43.20695 195.69698,43.23041 195.75,43.25 C 196.70458,43.602395 197.65174,43.977633 198.59375,44.375 C 198.64525,44.39672 198.69853,44.41564 198.75,44.4375 C 199.69184,44.837551 200.63491,45.273781 201.5625,45.71875 C 201.6045,45.73891 201.6455,45.761 201.6875,45.78125 C 202.62288,46.232337 203.54958,46.690779 204.46875,47.1875 C 204.50185,47.20538 204.52945,47.23206 204.56245,47.25 C 205.48926,47.752833 206.40387,48.263321 207.31245,48.8125 C 207.34455,48.83189 207.37415,48.85555 207.40615,48.875 C 208.31425,49.425934 209.20552,49.996562 210.09365,50.59375 C 210.6426,50.962824 211.17785,51.36329 211.71865,51.75 C 212.08335,52.010827 212.45156,52.262412 212.8124,52.53125 C 212.8309,52.54506 212.8564,52.54867 212.8749,52.5625 C 213.75254,53.217706 214.61511,53.922431 215.46865,54.625 C 217.21133,56.059371 218.90007,57.587673 220.53115,59.21875 C 222.15163,60.83923 223.66733,62.519314 225.09365,64.25 C 225.10265,64.26124 225.11565,64.27 225.12485,64.28125 C 225.82806,65.135607 226.53159,65.996485 227.18735,66.875 C 227.47012,67.253769 227.72592,67.648223 227.99985,68.03125 C 228.36958,68.548307 228.73999,69.069236 229.0936,69.59375 C 229.1098,69.61774 229.14,69.63224 229.1561,69.65625 C 229.75422,70.545876 230.32314,71.434083 230.87485,72.34375 C 230.89435,72.37582 230.91795,72.40541 230.93735,72.4375 C 231.48294,73.340419 232.00002,74.266573 232.49985,75.1875 C 232.51775,75.22044 232.54455,75.24829 232.56235,75.28125 C 233.06035,76.202462 233.51643,77.124994 233.9686,78.0625 C 233.9888,78.10444 234.011,78.14552 234.0311,78.1875 C 234.47721,79.117367 234.91137,80.055804 235.31235,81 C 235.33415,81.05123 235.35325,81.104977 235.37485,81.15625 C 235.76965,82.092372 236.14946,83.051461 236.49985,84 C 236.51925,84.05253 236.54305,84.103686 236.56235,84.15625 C 236.90996,85.10461 237.22793,86.040882 237.5311,87 C 237.5538,87.07167 237.5712,87.147026 237.5936,87.21875 C 237.88758,88.159922 238.15494,89.112572 238.4061,90.0625 C 238.4256,90.13603 238.4494,90.207672 238.4686,90.28125 C 238.5493,90.590804 238.61118,90.908382 238.68735,91.21875 C 238.86396,91.938529 239.03524,92.651296 239.18735,93.375 C 239.25925,93.717177 239.30841,94.063299 239.37485,94.40625 C 239.49448,95.023132 239.61673,95.630911 239.7186,96.25 C 239.86548,97.142594 239.9837,98.041302 240.0936,98.9375 C 240.1115,99.083459 240.1392,99.228963 240.1561,99.375 C 240.1669,99.46829 240.1769,99.562929 240.1873,99.65625 C 240.1978,99.75023 240.2085,99.843493 240.2185,99.9375 C 240.32099,100.8937 240.40814,101.85406 240.4685,102.8125 C 240.5277,103.75494 240.57511,104.71299 240.5935,105.65625 C 240.5955,105.76038 240.5915,105.86462 240.5935,105.96875 C 240.6089,107.02208 240.5975,108.0726 240.5623,109.125 C 240.5307,110.05556 240.4776,110.97779 240.40605,111.90625 C 240.39605,112.03118 240.38515,112.15637 240.37485,112.28125 C 240.29875,113.19932 240.20894,114.11665 240.0936,115.03125 C 239.973,115.98751 239.81965,116.95518 239.6561,117.90625 C 239.6419,117.98865 239.6393,118.07392 239.6249,118.15625 C 239.6029,118.2811 239.5852,118.40651 239.5624,118.53125 C 239.39714,119.43903 239.2045,120.34852 238.9999,121.25 C 238.9693,121.38463 238.9376,121.52178 238.9062,121.65625 C 238.69845,122.54491 238.46486,123.43135 238.2187,124.3125 C 238.05479,124.89922 237.86842,125.47955 237.68745,126.0625 C 237.51204,126.62662 237.34761,127.18974 237.1562,127.75 C 236.86153,128.61381 236.55145,129.45882 236.2187,130.3125 C 236.1581,130.46799 236.09304,130.62612 236.0312,130.78125 C 235.9863,130.89371 235.9517,131.01273 235.9062,131.125 C 235.5501,132.00362 235.17807,132.8526 234.7812,133.71875 C 234.40422,134.54222 234.0076,135.34519 233.5937,136.15625 C 233.5132,136.31403 233.42563,136.46772 233.3437,136.625 C 232.92842,137.4224 232.51372,138.21595 232.06245,139 C 231.96725,139.16556 231.87805,139.33506 231.7812,139.5 C 231.58213,139.83885 231.36205,140.16384 231.1562,140.5 C 230.79455,141.09093 230.41383,141.66777 230.0312,142.25 C 230.0262,142.257 230.0362,142.2738 230.0312,142.2812 C 229.54039,143.02694 229.02527,143.76939 228.49995,144.49995 C 228.04268,145.13587 227.54591,145.75123 227.06245,146.37495 C 226.86549,146.62904 226.70126,146.90421 226.49995,147.1562 C 226.36593,147.32399 226.22965,147.48935 226.0937,147.6562 C 225.93019,147.85684 225.76,148.05071 225.5937,148.24995 C 225.03708,148.917 224.46291,149.5678 223.87495,150.2187 C 223.26864,150.88974 222.63964,151.56575 221.99995,152.2187 C 221.83899,152.38296 221.69428,152.55562 221.5312,152.7187 C 200.40085,173.84905 169.27251,177.21358 144.3437,163.87495 L 144.4687,163.68745 C 140.76453,161.79084 137.20703,159.54699 133.8437,156.9062 C 133.30478,156.48305 132.77833,156.03638 132.24995,155.5937 C 131.73554,155.16273 131.22265,154.7308 130.7187,154.2812 C 130.6258,154.1976 130.52998,154.1154 130.43745,154.0312 C 129.61572,153.28344 128.82556,152.51306 128.0312,151.7187 C 127.23684,150.92434 126.46647,150.13418 125.7187,149.31245 C 125.6345,149.21995 125.55231,149.12407 125.4687,149.0312 C 125.0191,148.52725 124.58717,148.01436 124.1562,147.49995 C 123.71352,146.97157 123.26685,146.44512 122.8437,145.9062 C 120.20291,142.54287 117.95906,138.98536 116.06245,135.2812 L 115.87495,135.4062 C 102.53632,110.47739 105.90085,79.349046 127.0312,58.2187 C 127.19428,58.05562 127.36694,57.910915 127.5312,57.74995 C 128.18415,57.110265 128.86016,56.481261 129.5312,55.87495 C 130.1821,55.286994 130.8329,54.712816 131.49995,54.1562 C 131.77209,53.929114 132.03772,53.690576 132.31245,53.4687 C 132.65592,53.191271 133.02754,52.956742 133.37495,52.68745 C 133.99867,52.203987 134.61403,51.707219 135.24995,51.24995 C 135.98748,50.719619 136.74695,50.21386 137.49995,49.7187 C 138.08218,49.336066 138.65902,48.955346 139.24995,48.5937 C 139.69662,48.32034 140.1423,48.042584 140.5937,47.7812 C 141.27515,47.386414 141.96454,47.023727 142.6562,46.6562 C 142.83226,46.56265 143.01076,46.46674 143.18745,46.37495 C 144.1327,45.883975 145.06888,45.40925 146.0312,44.9687 C 146.89735,44.571825 147.74633,44.1998 148.62495,43.8437 C 148.77776,43.78177 148.94054,43.74815 149.0937,43.68745 C 150.06209,43.303428 151.01838,42.928541 151.99995,42.5937 C 152.56021,42.402293 153.12333,42.237857 153.68745,42.06245 C 154.2704,41.881482 154.85073,41.695111 155.43745,41.5312 C 156.3186,41.285037 157.20504,41.051454 158.0937,40.8437 C 158.1648,40.82706 158.24127,40.82884 158.31245,40.81245 C 158.72838,40.71671 159.14509,40.618551 159.56245,40.5312 C 160.23458,40.390375 160.91827,40.244039 161.5937,40.12495 C 161.676,40.11046 161.76133,40.10786 161.8437,40.0937 C 162.79477,39.930149 163.76244,39.776798 164.7187,39.6562 C 166.68235,39.408555 168.64857,39.254564 170.62495,39.18745 C 171.67735,39.15181 172.72787,39.14082 173.7812,39.1562 L 173.78125,39.15625 z" id="path5604-26-0" transform="matrix(1,8.087767e-2,0,1,0,-21.056305)" clip-path="url(#clipPath8750)"/>
+  </g>
+  <g inkscape:groupmode="layer" id="layer5" inkscape:label="Magnifying Galss" style="display:inline">
+    <path style="fill:url(#linearGradient6241);fill-opacity:1;stroke:none" d="M 48.010249,227.45683 L 43.202749,232.01466 C 38.19646,226.69951 32.962779,221.30836 28.123445,215.88155 L 32.613667,211.80898 C 39.442824,218.34324 41.486314,220.33887 48.010249,227.45683 z" id="rect5757-8-7-7-9" sodipodi:nodetypes="ccccc"/>
+    <path style="fill:#d0e9f2;fill-opacity:0.47593581;stroke:none" d="M -95.5,225 C -66.78119,225 -43.5,248.28119 -43.5,277 C -43.5,305.71881 -66.78119,329 -95.5,329 C -124.21881,329 -147.5,305.71881 -147.5,277 C -147.5,248.28119 -124.21881,225 -95.5,225 z" id="path5604-9-1-8" sodipodi:nodetypes="csssc"/>
+    <g id="g6060">
+      <path sodipodi:nodetypes="csssccsssc" id="path5604" d="M -82,136 C -109.61424,136 -132,113.61424 -132,86 C -132,58.38576 -109.61424,36 -82,36 C -54.38576,36 -32,58.38576 -32,86 C -32,113.61424 -54.38576,136 -82,136 z M -82,133 C -55.49033,133 -34,112.50967 -34,86 C -34,59.49033 -55.49033,39 -82,39 C -108.50967,39 -130,59.49033 -130,86 C -130,112.50967 -108.50967,133 -82,133 z" style="fill:#2d3335;fill-opacity:1;stroke:none"/>
+      <path id="path5604-2" d="M -82.00007,136 C -109.61431,136 -132.00007,113.61424 -132.00007,86 C -132.00007,85.831721 -132.00207,85.667887 -132.00007,85.5 C -131.72953,112.88199 -109.44603,135 -82.00007,135 C -54.55411,135 -32.27061,112.88199 -32.00007,85.5 C -31.99807,85.667887 -32.00007,85.831721 -32.00007,86 C -32.00007,113.61424 -54.38583,136 -82.00007,136 z M -130.00007,85.5 C -130.00207,85.33281 -130.00007,85.167675 -130.00007,85 C -130.00007,58.49033 -108.50974,38 -82.00007,38 C -55.4904,38 -34.00007,58.49033 -34.00007,85 C -34.00007,85.167675 -33.99807,85.33281 -34.00007,85.5 C -34.26955,59.23424 -55.65808,39 -82.00007,39 C -108.34206,39 -129.73058,59.23424 -130.00007,85.5 z" style="fill:#9eaaac;fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="csssc" id="path5604-9" d="M -82,134 C -55.49033,134 -34,112.50967 -34,86 C -34,59.49033 -55.49033,38 -82,38 C -108.50967,38 -130,59.49033 -130,86 C -130,112.50967 -108.50967,134 -82,134 z" style="fill:#d0e9f2;fill-opacity:0.47593581;stroke:none"/>
+      <path sodipodi:nodetypes="csssc" id="path5604-9-1" d="M -82,134 C -55.49033,134 -34,112.50966 -34,86 C -34,59.490325 -55.49033,38 -82,38 C -108.50967,38 -130,59.490325 -130,86 C -130,112.50966 -108.50967,134 -82,134 z" style="fill:url(#radialGradient5751);fill-opacity:1;stroke:none"/>
+      <path id="path5604-9-1-8-8" d="M -96.4375,130.71875 L -97.28125,135.71875 C -92.45117,137.2009 -87.31584,138 -82,138 C -76.68416,138 -71.54883,137.2009 -66.71875,135.71875 L -67.5625,130.71875 C -72.11472,132.1879 -76.95892,133 -82,133 C -87.04108,133 -91.88528,132.1879 -96.4375,130.71875 L -96.4375,130.71875 z" style="fill:url(#linearGradient5778);fill-opacity:1;stroke:none"/>
+      <path id="rect5757" d="M -82,136.25 C -80.24321,136.25 -78.5686,136.54816 -77,137.0625 L -77,163.6875 C -78.5686,164.20184 -80.24321,164.5 -82,164.5 C -83.75679,164.5 -85.4314,164.20184 -87,163.6875 L -87,137.0625 C -85.4314,136.54816 -83.75679,136.25 -82,136.25 z" style="fill:url(#linearGradient5768);fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="cccsccc" id="rect5757-8-7" d="M -82,150.5 C -78.48642,150.5 -76.3872,151.15272 -74,152.93805 L -74,220.06195 C -77.1372,220.97228 -78.48642,221.5 -82,221.5 C -85.51358,221.5 -86.8628,220.97228 -90,220.06195 L -90,152.93805 C -87.3628,151.15272 -85.51358,150.5 -82,150.5 z" style="fill:url(#linearGradient5868);fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="cccsccc" id="rect5757-8" d="M -82,154.5 C -78.48642,154.5 -74.7622,155.27772 -72,156.93805 L -72,222.06195 C -74.0122,223.84728 -78.48642,224.5 -82,224.5 C -85.51358,224.5 -89.8628,224.34728 -92,222.06195 L -92,156.93805 C -90.1128,155.27772 -85.51358,154.5 -82,154.5 z" style="fill:url(#linearGradient5798);fill-opacity:1;stroke:none"/>
+      <path sodipodi:nodetypes="cccsccc" id="rect5757-8-7-7" d="M -82,217.5 C -78.48642,217.5 -76.1372,218.27772 -74,219.93805 L -74,225.06195 C -76.3872,226.59728 -78.48642,227.5 -82,227.5 C -85.51358,227.5 -87.7378,226.59728 -90,225.06195 L -90,219.93805 C -87.6128,218.02772 -85.51358,217.5 -82,217.5 z" style="fill:url(#linearGradient5899);fill-opacity:1;stroke:none"/>
+      <path id="rect5757-8-7-7-0" d="M -82,221.5 C -85.51358,221.5 -87.6128,221.77717 -90,223.9375 L -90,225.0625 C -87.7378,226.59783 -85.51358,227.5 -82,227.5 C -78.48642,227.5 -76.3872,226.59783 -74,225.0625 L -74,223.9375 C -76.5122,221.90217 -78.48642,221.5 -82,221.5 z" style="fill:#e0bb41;fill-opacity:1;stroke:none"/>
+    </g>
+    <path style="fill:#2d3335;fill-opacity:1;stroke:none" d="M 125.06419,134.68586 C 97.884272,107.50594 97.884272,63.438594 125.06419,36.258677 C 152.24411,9.078759 196.31145,9.078759 223.49137,36.258677 C 250.67129,63.438594 250.67129,107.50594 223.49137,134.68586 C 196.31145,161.86577 152.24411,161.86577 125.06419,134.68586 z M 128.01701,131.73304 C 154.10973,157.82576 195.4301,158.81003 221.52283,132.71731 C 247.61555,106.62459 246.63127,65.304212 220.53855,39.211492 C 194.44583,13.118772 153.12545,12.1345 127.03273,38.22722 C 100.94001,64.319941 101.92428,105.64032 128.01701,131.73304 L 128.01701,131.73304 z" id="path5604-26" sodipodi:nodetypes="csssccsssc"/>
+    <path style="fill:#9eaaac;fill-opacity:1;stroke:none" d="M 125.06412,134.68579 C 97.884203,107.50587 97.884203,63.438525 125.06412,36.258608 C 125.22975,36.092975 125.38904,35.92975 125.55626,35.766472 C 98.871221,62.984077 99.034108,106.68723 126.04839,133.70151 C 153.06268,160.7158 196.76583,160.87869 223.98344,134.19365 C 223.82016,134.36087 223.65693,134.52015 223.4913,134.68579 C 196.31138,161.8657 152.24404,161.8657 125.06412,134.68579 z M 127.5248,37.735015 C 127.68739,37.568487 127.8519,37.407917 128.01694,37.24288 C 154.10966,11.150159 195.43004,12.134431 221.52276,38.227151 C 247.61548,64.319872 248.59975,105.64025 222.50703,131.73297 C 222.34199,131.89801 222.18142,132.06252 222.01489,132.22511 C 247.6023,106.10722 246.46616,65.139101 220.53848,39.211423 C 194.61081,13.283745 153.6427,12.14762 127.5248,37.735015 L 127.5248,37.735015 z" id="path5604-2-9"/>
+    <path style="fill:#d0e9f2;fill-opacity:0.47593581;stroke:none" d="M 127.03273,132.71731 C 153.12545,158.81003 195.4301,158.81003 221.52283,132.71731 C 247.61555,106.62459 247.61555,64.319941 221.52283,38.22722 C 195.4301,12.1345 153.12545,12.1345 127.03273,38.22722 C 100.94001,64.319941 100.94001,106.62459 127.03273,132.71731 z" id="path5604-9-13" sodipodi:nodetypes="csssc"/>
+    <path style="fill:url(#radialGradient6256);fill-opacity:1;stroke:none" d="M 127.03273,132.71731 C 153.12545,158.81003 195.43011,158.81002 221.52283,132.71731 C 247.61555,106.62459 247.61555,64.319941 221.52283,38.22722 C 195.4301,12.1345 153.12546,12.134495 127.03273,38.22722 C 100.94002,64.319931 100.94001,106.62459 127.03273,132.71731 z" id="path5604-9-1-3" sodipodi:nodetypes="csssc"/>
+    <path style="fill:url(#linearGradient6253);fill-opacity:1;stroke:none" d="M 116.05195,115.27725 L 110.30011,119.36813 C 113.59539,125.58108 117.86341,131.42217 123.09565,136.6544 C 128.32788,141.88663 134.16897,146.15466 140.38192,149.44993 L 144.4728,143.69809 C 138.54613,140.66352 132.9788,136.69483 128.01701,131.73304 C 123.05521,126.77125 119.08653,121.20391 116.05195,115.27725 L 116.05195,115.27725 z" id="path5604-9-1-8-8-1"/>
+    <path style="fill:url(#linearGradient6250);fill-opacity:1;stroke:none" d="M 124.81812,134.93192 C 126.54728,136.66108 127.90208,138.60282 128.93976,140.653 L 102.73352,166.85924 C 100.68334,165.82156 98.741603,164.46676 97.012444,162.7376 C 95.283285,161.00844 93.928484,159.0667 92.890806,157.01652 L 119.09704,130.81029 C 121.14722,131.84796 123.08896,133.20276 124.81812,134.93192 z" id="rect5757-5"/>
+    <path style="fill:url(#linearGradient6247);fill-opacity:1;stroke:none" d="M 116.26672,159.23167 L 50.198558,225.29984 C 46.214689,223.10799 44.367269,222.29941 40.908952,218.84109 C 37.450634,215.38278 36.642055,213.53536 34.450209,209.55149 L 100.51837,143.48333 C 105.58172,147.23135 112.63531,153.88125 116.26672,159.23167 z" id="rect5757-8-7-2" sodipodi:nodetypes="ccsccc"/>
+    <path style="fill:url(#linearGradient6244);fill-opacity:1;stroke:none" d="M 105.77884,154.11797 C 109.23716,157.57629 113.21364,160.78433 114.29818,165.13731 L 50.198558,229.23692 C 43.682447,224.0819 35.643787,216.44629 30.513122,209.55149 L 94.61274,145.45187 C 98.104474,145.67517 102.27159,150.61074 105.72991,154.06905 L 105.77884,154.11797 z" id="rect5757-8-6" sodipodi:nodetypes="ccccccc"/>
+    <path style="opacity:0.59565214;fill:url(#linearGradient6279);fill-opacity:1;stroke:none" d="M 105.53422,154.36259 C 108.99254,157.82091 113.21364,160.78433 114.29818,165.13731 L 50.198558,229.23692 C 42.321633,222.32946 38.401371,218.6125 30.513122,209.55149 L 94.61274,145.45187 C 98.104474,145.67517 102.02698,150.90428 105.4853,154.36259 L 105.53422,154.36259 z" id="rect5757-8-6-3" sodipodi:nodetypes="ccccccc"/>
+    <path style="opacity:0.6043478;fill:url(#linearGradient6595);fill-opacity:1;stroke:none" d="M 131.1683,37.049946 C 171.82694,4.876587 209.3036,24.322024 208.95005,42.353247 C 208.5965,60.38447 152.38151,112.71037 132.58252,108.46773 C 112.78353,104.22509 107.12667,55.081169 131.1683,37.049946 z" id="path6587"/>
+    <text xml:space="preserve" style="font-size:19.79973221px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.46086958;fill:url(#radialGradient6482);fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="99.83886" y="69.184349" id="text6302-7" transform="matrix(0.9879609,-0.1547039,0.1547039,0.9879609,0,0)"><tspan sodipodi:role="line" id="tspan6304-0" x="99.83886" y="69.184349" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6482);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold">01011001</tspan><tspan sodipodi:role="line" x="99.83886" y="93.934013" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6482);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold" id="tspan6415-7">00110101</tspan><tspan sodipodi:role="line" x="99.83886" y="118.68368" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6482);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold" id="tspan6417-1">10010011</tspan><tspan sodipodi:role="line" x="99.83886" y="143.43335" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6482);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold" id="tspan6419-9"/></text>
+    <text xml:space="preserve" style="font-size:19.79973221px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:url(#radialGradient6427);fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" x="99.410172" y="67.898323" id="text6302" transform="matrix(0.9879609,-0.1547039,0.1547039,0.9879609,0,0)"><tspan sodipodi:role="line" id="tspan6304" x="99.410172" y="67.898323" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6427);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold">01011001</tspan><tspan sodipodi:role="line" x="99.410172" y="92.647987" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6427);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold" id="tspan6415">00110101</tspan><tspan sodipodi:role="line" x="99.410172" y="117.39765" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6427);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold" id="tspan6417">10010011</tspan><tspan sodipodi:role="line" x="99.410172" y="142.14732" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:url(#radialGradient6427);fill-opacity:1;font-family:Monospace;-inkscape-font-specification:Monospace Bold" id="tspan6419"/></text>
+    <path style="opacity:0.76521738;fill:url(#linearGradient6614);fill-opacity:1;stroke:none" d="M 219.46318,129.09019 C 192.66917,151.07299 177.65484,150.09749 181.38844,142.22816 C 185.12205,134.35887 223.71429,100.57298 232.83561,98.47996 C 241.95691,96.38695 235.11079,116.52117 219.46318,129.09019 z" id="path6587-7"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/index.html b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/index.html
new file mode 100644
index 0000000..750e1a6
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/index.html
@@ -0,0 +1,246 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+	<head>
+		<title>Open Street Map</title>
+		<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
+		<style type="text/css" media="all">
+			html, body, #map {
+				width: 100%;
+				height: 100%;
+				margin: 0;
+				position: relative;
+				z-index: 0;
+				font-family: sans-serif;
+			}
+			#search_form {
+				position: absolute;
+				z-index: 1;
+				bottom: 2.5em;
+				right: 0.5em;
+			}
+			#layout_switch {
+				position: absolute;
+				bottom: 15px;
+				left: 140px;
+				z-index: 1;
+			}
+			#layout_switch a {
+				color: black;
+			}
+			#layout_switch a:visited {
+				color: black;				
+			}
+			#layout_switch a:hover {
+				color: white;
+				background-color: black;
+				opacity: 0.5;				
+			}			
+			.olControlPanZoom {
+				top: auto !important;
+				bottom: 173px; /* .olControlScaleLine.bottom = 15 + .olControlScaleLine.bottom = 26 + margin = 15px + #OpenLayers.Control.PanZoom_5_zoomout = 99 + #OpenLayers.Control.PanZoom_5_zoomout = 18 */
+			}
+			.olControlAttribution {
+			    right: 0.5em !important;
+			    bottom: 15px !important; 
+			}
+		</style>
+		<script src="api/OpenLayers.js" type="text/javascript"></script>
+		<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
+		<script type="text/javascript">
+			<!--
+			
+			/*
+			 * OpenStreetMap Widget
+			 * ==========================================================
+			 * Copyright (C) Université Claude Bernard Lyon 1 (ICAP), Délégation Interministérielle à  l'Éducation Numérique en Afrique, Guillaume Burel, 2012
+			 *
+			 * 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/>.
+			 */
+			 
+			/* Geonames API identifier */
+			var geonamesUser = "yimgo";
+
+			/* map variable will be used to manipulate the map. This will be initialized like an OpenLayers.Map object. */
+			var map;
+
+			/* updateMap() allow user to modify the considered zone, in case a change has been requested (e.g. user request) */	
+			function updateMap(coordinates) {
+				/* transforming given coordinates, which have to be expressed in WGS-1984 projection, to map's projection */
+				var position = new OpenLayers.LonLat(coordinates["lng"], coordinates["lat"]).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
+				/* centering in position with given zoom */
+				map.setCenter(position, coordinates["zoom"]);
+			}				
+
+			/* doSearch() performs the request to geonames server with the given query, and updates the map in case of success. */
+			function doSearch(query) {
+				/* performing request with JSON API from geonames and global username (identifying request's author). Asking for only one result, to save resources and to allow the user to avoid a choice when doing the research. */
+				$.ajax({
+					url: "http://api.geonames.org/searchJSON",
+					dataType: 'json',
+					data: { 
+						q: encodeURIComponent(query),
+						maxRows: "1",
+						username: geonamesUser
+					},
+					success: function(data) {	
+						/* updating the map if response is ok */
+						if (typeof data["geonames"][0]!= 'undefined') {
+							var coordinates = new Array();
+							coordinates["lng"] = data["geonames"][0].lng;
+							coordinates["lat"] = data["geonames"][0].lat;
+							
+							/* if position represents a country, setting the zoom to 6 */
+							if (data["geonames"][0].fcl == "A")
+								coordinates["zoom"] = 6;
+							else
+								coordinates["zoom"] = 12;
+							
+							updateMap(coordinates);
+						}
+					}
+					
+	  	  		});
+			}
+
+			/* 
+			 * doNominatim() could use Nominatim API (http://wiki.openstreetmap.org/wiki/Nominatim).
+			 * It is not used because first result is not always pertinent and we want to avoid user to make a choice after his request.
+			 * Bounding box info provided by Nominatim could be a good way to set the right zoom for request (instead of having a determined zoom for countries and cities). 
+			 * Nominatim allows user (the developer in this case) to set the language to display informations provided in sankoré user native language.
+			 */
+			function doNominatim(query) {
+				$.ajax({
+					url: "http://nominatim.openstreetmap.org/search",
+					dataType: "json",
+					data: { 
+						q: query,
+						format: "json",
+						limit: "10",
+						addressdetails: "1"
+					},
+					success: function(data) {	
+						/* updating the map if response is ok */
+						if (typeof data[0]!= 'undefined') {
+							var coordinates = new Array();
+							coordinates["lng"] = data[0].lon;
+							coordinates["lat"] = data[0].lat;
+							
+							/* if position represents a city, setting the zoom to 12 */
+							if (data[0].address.state)
+								coordinates["zoom"] = 12;
+							else
+								coordinates["zoom"] = 6;
+							
+							updateMap(coordinates);
+						}
+					}
+					
+	  	  		});
+			}
+
+			function importData(data)
+			{
+				map.setCenter(new OpenLayers.LonLat(data["center"]["lon"], data["center"]["lat"]), data["zoom"]);
+			}
+
+			function exportData()
+			{
+				if (window.sankore)
+        			sankore.setPreference("osm", JSON.stringify({center: map.getCenter(), zoom: map.getZoom()})); 
+			}
+
+			window.onload = function() {
+				map = new OpenLayers.Map({
+					div: "map"
+				});
+
+				/* limiting max zoom, by overriding OpenLayers.Map::moveTo function */
+				map.newMoveTo = map.moveTo;
+				map.moveTo = function(lonlat, zoom, options) {
+    				return(zoom >= 0 && zoom <= 17) ? map.newMoveTo(lonlat,zoom,options) : false;
+				};
+
+				/* Standard layer */
+				classic = new OpenLayers.Layer.OSM("Classic");
+
+				/* avoiding out of bounds requests */
+				classic.displayOutsideMaxExtent = false;
+
+		    	/* Landscape layer */
+		    	relief = new OpenLayers.Layer.OSM("Relief", [
+		    		'http://a.tile3.opencyclemap.org/landscape/${z}/${x}/${y}.png',
+                    'http://b.tile3.opencyclemap.org/landscape/${z}/${x}/${y}.png',
+                    'http://c.tile3.opencyclemap.org/landscape/${z}/${x}/${y}.png'
+            	]);
+            	relief.displayOutsideMaxExtent = false;
+
+				/* then adding layers to the map */
+		    	map.addLayers([classic, relief]);
+
+		    	/* displaying scale line, allowing user to represent distances */
+				map.addControl(new OpenLayers.Control.ScaleLine());
+
+	    		/* then zomming to get a better overview of the worldmap */
+        		map.zoomTo(2);
+
+				/* doSearch is called when form is submitted */
+				$("#search_form").submit(function (event) {
+					doSearch($("#query").val());
+					return false;
+				});
+
+				/* allowing user to simply switch between classic and relief layers */
+				$("#layout_switch > a").click(function (event) {
+					newLayer = $(this).text() == "Relief" ? relief : classic;
+					newText = $(this).text() == "Relief" ? "Classic" : "Relief";
+
+					$(this).text(newText);
+					map.setBaseLayer(newLayer);
+
+					return false;
+				});
+
+				/* importing state from Sankoré preferences */
+				if (window.sankore) {
+			        if (sankore.preference("osm","")) {
+			            importData(JSON.parse(sankore.preference("osm","")));
+			        }
+   				}
+
+   				/* exporting state when receiving a leave event */
+   				if (window.widget) {
+			        window.widget.onleave = function() {
+			            exportData();
+			        }
+			    }
+			};
+			-->
+		</script>
+	</head>
+	<body>
+		<div id="map">	  
+		</div>
+
+		<div id="layout_switch">
+			<a href="#">Relief</a>
+		</div>
+
+		<form method="post" id="search_form" action="#" accept-charset="UTF-8">
+			<p>
+				<input type="text" value="" tabindex="1" id="query" />
+				<input type="submit" value="Go" />
+			</p>
+		</form>
+	</body>
+</html>
diff --git a/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/js/jquery-1.7.2.min.js b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/js/jquery-1.7.2.min.js
new file mode 100644
index 0000000..16ad06c
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/OpenStreetMap.wgt/js/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 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 cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(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 ca(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 b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(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 bZ(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===bS,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=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),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 bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}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;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}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])}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)?+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.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.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!=null&&a==a.window},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){if(typeof c!="string"||!c)return null;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,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},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,n=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"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(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]){j&&f<=l&&(l--,f<=m&&m--),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)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};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=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.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:p.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,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});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,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},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){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this: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(c)}});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,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},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.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];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,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&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,coords:!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=/(?:^|\s)hover(\.\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,g=p.selector),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(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=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);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){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!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=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(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.origType+"."+e.namespace:e.origType,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||d===11){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));o.match.globalPOS=p;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.globalPOS,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|bdi|canvas|data|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+")[\\s/>]","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){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},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){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.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(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},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,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}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||f.isXMLDoc(a)||!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,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},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 bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"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=bu.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(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$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))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=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)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.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(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),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)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.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(bM,"")).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||bN.test(this.nodeName)||bH.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(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\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:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},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:bY(bS),ajaxTransport:bY(bT),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?ca(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=cb(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=bG.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(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.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]!=="*"?", "+bW+"; 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=bZ(bT,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)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.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(cd,l),b.url===j&&(e&&(k=k.replace(cd,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 ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,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,ce&&delete cg[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);try{m.text=h.responseText}catch(a){}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=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("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.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(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(ct("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(ct("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,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){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||cu(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],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,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:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("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){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},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=cq||cr(),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(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=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=cq||cr(),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(co),co=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(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(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 cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},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({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/config.xml" b/Sankore-3.1/resources/library/applications/Sel video.wgt/config.xml
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/config.xml"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/config.xml
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/howto.css" b/Sankore-3.1/resources/library/applications/Sel video.wgt/css/howto.css
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/howto.css"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/css/howto.css
diff --git a/Sankore-3.1/resources/library/applications/Sel video.wgt/css/main.css b/Sankore-3.1/resources/library/applications/Sel video.wgt/css/main.css
new file mode 100644
index 0000000..43d6ee7
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/Sel video.wgt/css/main.css	
@@ -0,0 +1,174 @@
+
+body{
+	margin: 0;
+    font-family:Arial, Sans-serif;
+    font-size:15px;
+    color:#444;
+}
+
+.icon-container{
+    width:40px;
+    height:40px;
+    overflow:hidden;
+}
+
+#shadow{
+    position:absolute;
+    z-index:0;
+    width:352px;
+    height:58px;
+    padding-left:8px;
+    margin-top:3px;
+    margin-left:3px;
+    background-color:rgb(220,220,220);
+}
+
+#inputfield{
+    position:absolute;
+    z-index:1;
+    width:360px;
+    height:58px;
+    background-color:rgb(230,230,233);
+    border:1px solid rgb(220, 220, 220);
+}
+
+.button{
+    float:left;
+    padding:4px 5px;
+    cursor:pointer;
+    background-color:rgb(45,65,250);
+    border:1px solid;
+    border-color:rgb(45,65,250) rgb(25,45,230) rgb(25,45,230) rgb(45,65,250);
+    text-transform:capitalize;
+    font-size:12px;
+    font-weight:bold;
+    color:white;
+}
+
+#search-button{
+    margin-top:17px;
+    margin-left:17px;
+}
+
+#search-button.over{
+    border-color:rgb(25,45,230) rgb(45,65,250) rgb(45,65,250) rgb(25,45,230);
+}
+
+#show-inputfield-button{
+    margin-left:12px;
+}
+
+#container{
+    float:left;
+    position:relative;
+    overflow:visible; 
+    height:auto;
+}
+
+#container.welcome{
+    width:405px;
+    margin-top:87px;
+    background-color:#FFF;
+}
+
+#container.load{
+    margin-top:0px;
+}
+
+#container.show{
+    margin-top:0px;
+    height:auto;
+}
+
+#container.change{
+    margin-top:80px;
+    height:auto;
+}
+
+#container.error{
+    width:400px;
+    height:auto;
+    margin-top:87px;
+    background-color:#FFF;
+    position:relative;
+}
+
+#arrow{
+    text-align:center;
+    width:100%;
+    margin-top:-36px;
+    margin-bottom:-1px;
+    position:relative;
+    z-index:4;
+}
+
+#embeded-content{
+    position:relative;
+    z-index:3;
+    float:left;
+    height:auto;
+}
+
+#show-container{
+    overflow:auto;
+    height:auto;
+}
+
+#show-area{
+    display:none;
+    position:absolute;
+    top:150px;
+    left:400px;
+    z-index:999;
+}
+
+#show-area .icon-container{
+    margin:0 auto;
+}
+
+#textbox{
+    width:245px; 
+    float:left;
+    padding:2px;
+    margin-top:17px;
+    margin-left:17px;
+    outline:none;
+    font-family:Arial, Sans-serif;
+    font-size:15px;
+    color:#444;
+}
+
+#container-shadow{
+    width:100%;
+    height:30px;
+}
+
+#container-shadow td{
+    height:100%;
+}
+
+#shadow-left{
+    width:193px;
+    background-image:url(../imgs/left.png);
+    background-repeat:no-repeat;
+}
+
+#shadow-center{
+    width:auto;
+    background-image:url(../imgs/center.png);
+    background-repeat:repeat;
+}
+
+#shadow-right{
+    width:193px;
+    background-image:url(../imgs/right.png);
+    background-repeat:no-repeat;
+}
+
+.bordered1{
+    border: 1px solid red;
+}
+
+.bordered2{
+    border:1px solid #666;
+}
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/icon.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/icon.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/icon.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/icon.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/arrow.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/arrow.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/arrow.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/arrow.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/bts.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/bts.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/bts.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/bts.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/btson.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/btson.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/btson.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/btson.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_anim.gif" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_anim.gif
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_anim.gif"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_anim.gif
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_over.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_over.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_over.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_over.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_show.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_show.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/button_show.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/button_show.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/capture_youtube.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/capture_youtube.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/capture_youtube.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/capture_youtube.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/center.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/center.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/center.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/center.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/howto_back.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/howto_back.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/howto_back.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/howto_back.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/info_ico.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/info_ico.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/info_ico.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/info_ico.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/inputfield_back.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/inputfield_back.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/inputfield_back.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/inputfield_back.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/keys_copy.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/keys_copy.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/keys_copy.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/keys_copy.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/keys_paste.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/keys_paste.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/keys_paste.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/keys_paste.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/left.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/left.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/left.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/left.png
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/logos_web.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/logos_web.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/logos_web.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/logos_web.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/right.png" b/Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/right.png
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/imgs/right.png"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/imgs/right.png
diff --git a/Sankore-3.1/resources/library/applications/Sel video.wgt/index.html b/Sankore-3.1/resources/library/applications/Sel video.wgt/index.html
new file mode 100644
index 0000000..752b7f5
--- /dev/null
+++ b/Sankore-3.1/resources/library/applications/Sel video.wgt/index.html	
@@ -0,0 +1,228 @@
+<!--
+ * 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/>.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Video Picker</title>
+        <link rel="stylesheet" type="text/css" href="css/main.css">
+        <script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
+        <script src="scripts/languages.js" type="text/javascript"></script>
+        <script src="scripts/jquery.oembed.js" type="text/javascript"></script>
+        <!--DEFAULT FR-->
+    </head>
+
+    <body>
+        <script type="text/javascript">
+
+            var oembedUrl = "";
+            var lang = "en";
+                
+            if(window.sankore){
+                try{
+                    lang = sankore.locale().substr(0,2);
+                    sankoreLang[lang].show;
+                } catch(e){
+                    lang = "en";
+                }
+            } else 
+                lang = "en";
+		
+            function initialize() {
+                if(window.sankore){
+                    oembedUrl = window.sankore.preference("oembedUrl", "");
+                }
+			
+                window.resizeTo(426, 630);
+                if(oembedUrl.length > 0){
+                    $("#textbox").val(oembedUrl);	
+                    $("#search-button").trigger("click");
+                }else{                    	
+                    $("#embeded-content").load("locales/" + lang + "/howto.html"); // Welcome note with some explanations
+                };
+            };
+		
+            $(document).ready(function(){
+                var resizer; // Timer
+                var resizerIndex;
+			
+                resizerIndex = 0;
+			
+                $("#search-button")
+                .click(function(){
+                    if($("#textbox").val()){
+                        window.resizeTo(385, 80);
+                        $("#container").removeClass("welcome").removeClass("change").removeClass("error").addClass("load");
+                        $("#container-shadow").hide();
+                        $("#arrow").hide();
+                        $("#embeded-content").css({
+                            marginLeft:-9000,
+                            marginTop:-9000
+                        }).empty().oembed($("#textbox").val());					
+                        checkcontent();
+                    } else {
+                        var sleepTime = 100;
+                        var counter = 0;
+                        var id = setInterval(function(){
+                            $("#textbox").toggleClass("bordered1").toggleClass("bordered2");
+                            counter ++;
+                            if(counter == 10)
+                                clearInterval(id);
+                        }, sleepTime);
+                    }
+                })
+                .mouseenter(function(){
+                    $(this)
+                    .addClass("over");
+                })
+                .mouseleave(function(){
+                    $(this)
+                    .removeClass("over");
+                });
+			
+                $('#textbox').keypress(function(e){
+                    if (e.which == 13){
+                        $('#search-button').click();
+                    };
+                });
+			
+                $("#show-inputfield-button")
+                .click(
+                function(){
+                    $("#show-area").fadeOut(0);
+                    $("#inputfield").show();
+                    $("#shadow").show();
+                    $("#container").removeClass("show").addClass("change");
+                    adaptWidgetSize(18, 88);
+                })
+                .mouseenter(function(){
+                    $(this).addClass("over");
+                })
+                .mouseleave(function(){
+                    $(this).removeClass("over");
+                });
+							
+                function checkcontent(){
+                    if($("#embeded-content").html().length != 0 && $("#embeded-content").children(":first").width() > 0){
+                        $("#embeded-content embed").attr("wmode", "opaque");
+                        var embeded_content_html = $("#embeded-content").html();
+                        $("#embeded-content").empty().html(embeded_content_html);		
+                        clearTimeout(resizer);
+                        resizerIndex = 0;
+															
+                        if(window.sankore){
+                            window.sankore.setPreference("oembedUrl", $("#textbox").val());
+                        };
+					
+                        $("#inputfield").hide();
+                        $("#shadow").hide();
+                        $("#embeded-content").css({
+                            marginLeft:0,
+                            marginTop:0
+                        })
+                        .width($("#embeded-content").children(":first").width())
+                        .height($("#embeded-content").children(":first").height());
+                        $("#container").removeClass("load").addClass("show");
+                        $("#show-area").fadeIn(2000).css({
+                            left:$("#embeded-content").children(":first").width()-25,
+                            top:($("#embeded-content").children(":first").height()-35)/2
+                        });
+										
+                        adaptWidgetSize(3, 0);					
+                        return false;
+                    };
+				
+                    if(resizerIndex > 50){
+                        resizerIndex = 0;
+                        $("#container").removeClass("show").addClass("error");
+                        $("#arrow").show();
+                        $("#embeded-content").css({
+                            marginTop:0,
+                            marginLeft:0
+                        }).width(395)
+                        .load("locales/" + lang + "/error.html", 
+                        function(){
+                            adaptWidgetSize(20, 125);
+                        });
+                        $("#container-shadow").show();
+                    }else{
+                        resizer = setTimeout(function(){checkcontent()}, 100);
+                        resizerIndex++;
+                    };
+                };
+			
+                function adaptWidgetSize(adjustmentX, adjustmentY){
+                    var margins = {
+                        top: cssToInt($("body").css("margin-top")), 
+                        right: cssToInt($("body").css("margin-right")), 
+                        bottom: cssToInt($("body").css("margin-bottom")),
+                        left: cssToInt($("body").css("margin-left"))
+                    };
+                    var widgetWidth = $("#embeded-content").width() + margins.right + margins.left + adjustmentX;
+                    var widgetHeight = $("#embeded-content").position().top + $("#embeded-content").height() + margins.bottom + adjustmentY;
+				
+                    window.resizeTo(widgetWidth, widgetHeight);
+                    window.sankore.resize(widgetWidth, widgetHeight);
+                };
+				
+                function cssToInt(cssvalue){
+                    return(parseInt(cssvalue.replace("px", "")));
+                };
+			
+                if (window.widget) {
+                    window.widget.onremove = function(){
+                        $("#embeded-content").empty();
+                    }
+                }
+                $("#search-button").html(sankoreLang[lang].show);
+                initialize();
+            });
+        </script>
+
+        <div id="ubwidget">
+            <div id="shadow"></div>
+
+            <div id="inputfield">
+                <input id="textbox" type="text" class="bordered2">
+                <div id="search-button" class="button">Show</div>
+            </div>
+
+            <div id="container" class="welcome">
+                <div id="arrow"><img src="imgs/arrow.png" alt="arrow-top"></div>
+
+                <div id="show-container">
+                    <div id="embeded-content"></div>
+
+                    <div id="show-area">
+                        <img id="show-inputfield-button" src="imgs/bts.png">
+                    </div>
+                </div>
+
+                <table cellspacing="0" cellpadding="0" id="container-shadow">
+                    <tr>
+                        <td id="shadow-left"></td>
+                        <td id="shadow-center"> </td>
+                        <td id="shadow-right"></td>
+                    </tr>
+                </table>
+            </div>
+
+        </div>
+    </body>
+
+</html>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/capture_widget.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/capture_widget.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/capture_widget.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/capture_widget.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/error.html" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/error.html
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/error.html"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/error.html
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/howto.html" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/howto.html
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/en/howto.html"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/en/howto.html
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/capture_widget.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/capture_widget.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/capture_widget.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/capture_widget.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/error.html" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/error.html
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/error.html"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/error.html
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/howto.html" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/howto.html
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/fr/howto.html"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/fr/howto.html
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/capture_widget.jpg" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/capture_widget.jpg
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/capture_widget.jpg"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/capture_widget.jpg
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/error.html" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/error.html
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/error.html"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/error.html
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/howto.html" b/Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/howto.html
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/locales/ru/howto.html"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/locales/ru/howto.html
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/jquery-1.3.2.min.js" b/Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/jquery-1.3.2.min.js
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/jquery-1.3.2.min.js"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/jquery-1.3.2.min.js
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/jquery.oembed.js" b/Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/jquery.oembed.js
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/jquery.oembed.js"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/jquery.oembed.js
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/languages.js" b/Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/languages.js
similarity index 100%
rename from "Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/scripts/languages.js"
rename to Sankore-3.1/resources/library/applications/Sel video.wgt/scripts/languages.js
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/main.css" "b/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/main.css"
deleted file mode 100644
index 63b2c7b..0000000
--- "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/css/main.css"	
+++ /dev/null
@@ -1,176 +0,0 @@
-
-body{
-    margin-top:10px;
-    margin-left:10px;
-    font-family:Arial, Sans-serif;
-    font-size:15px;
-    color:#444;
-}
-
-.icon-container{
-    width:40px;
-    height:40px;
-    overflow:hidden;
-}
-
-#shadow{
-    position:absolute;
-    z-index:0;
-    width:352px;
-    height:58px;
-    padding-left:8px;
-    margin-top:3px;
-    margin-left:3px;
-    background-color:rgb(220,220,220);
-}
-
-#inputfield{
-    position:absolute;
-    z-index:1;
-    width:360px;
-    height:58px;
-    background-color:rgb(230,230,233);
-    border:1px solid rgb(220, 220, 220);
-}
-
-.button{
-    float:left;
-    padding:4px 5px;
-    cursor:pointer;
-    background-color:rgb(45,65,250);
-    border:1px solid;
-    border-color:rgb(45,65,250) rgb(25,45,230) rgb(25,45,230) rgb(45,65,250);
-    text-transform:capitalize;
-    font-size:12px;
-    font-weight:bold;
-    color:white;
-}
-
-#search-button{
-    margin-top:17px;
-    margin-left:17px;
-}
-
-#search-button.over{
-    border-color:rgb(25,45,230) rgb(45,65,250) rgb(45,65,250) rgb(25,45,230);
-}
-
-#show-inputfield-button{
-    margin-left:12px;
-}
-
-#container{
-    float:left;
-    position:relative;
-    overflow:visible; 
-    height:auto;
-}
-
-#container.welcome{
-    width:405px;
-    margin-top:87px;
-    background-color:#FFF;
-}
-
-#container.load{
-    margin-top:0px;
-}
-
-#container.show{
-    margin-top:0px;
-    height:auto;
-}
-
-#container.change{
-    margin-top:80px;
-    height:auto;
-}
-
-#container.error{
-    width:400px;
-    height:auto;
-    margin-top:87px;
-    background-color:#FFF;
-    position:relative;
-}
-
-#arrow{
-    text-align:center;
-    width:100%;
-    margin-top:-36px;
-    margin-bottom:-1px;
-    position:relative;
-    z-index:4;
-}
-
-#embeded-content{
-    border:1px solid rgb(230,230,230);
-    position:relative;
-    z-index:3;
-    float:left;
-    height:auto;
-}
-
-#show-container{
-    overflow:auto;
-    height:auto;
-}
-
-#show-area{
-    display:none;
-    position:absolute;
-    top:150px;
-    left:400px;
-    z-index:999;
-}
-
-#show-area .icon-container{
-    margin:0 auto;
-}
-
-#textbox{
-    width:245px; 
-    float:left;
-    padding:2px;
-    margin-top:17px;
-    margin-left:17px;
-    outline:none;
-    font-family:Arial, Sans-serif;
-    font-size:15px;
-    color:#444;
-}
-
-#container-shadow{
-    width:100%;
-    height:30px;
-}
-
-#container-shadow td{
-    height:100%;
-}
-
-#shadow-left{
-    width:193px;
-    background-image:url(../imgs/left.png);
-    background-repeat:no-repeat;
-}
-
-#shadow-center{
-    width:auto;
-    background-image:url(../imgs/center.png);
-    background-repeat:repeat;
-}
-
-#shadow-right{
-    width:193px;
-    background-image:url(../imgs/right.png);
-    background-repeat:no-repeat;
-}
-
-.bordered1{
-    border: 1px solid red;
-}
-
-.bordered2{
-    border:1px solid #666;
-}
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/index.html" "b/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/index.html"
deleted file mode 100644
index e7a5183..0000000
--- "a/Sankore-3.1/resources/library/applications/Se\314\201l vide\314\201o.wgt/index.html"	
+++ /dev/null
@@ -1,228 +0,0 @@
-<!--
- * 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/>.
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Video Picker</title>
-        <link rel="stylesheet" type="text/css" href="css/main.css">
-        <script src="scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
-        <script src="scripts/languages.js" type="text/javascript"></script>
-        <script src="scripts/jquery.oembed.js" type="text/javascript"></script>
-        <!--DEFAULT FR-->
-    </head>
-
-    <body>
-        <script type="text/javascript">
-
-            var oembedUrl = "";
-            var lang = "en";
-                
-            if(window.sankore){
-                try{
-                    lang = sankore.locale().substr(0,2);
-                    sankoreLang[lang].show;
-                } catch(e){
-                    lang = "en";
-                }
-            } else 
-                lang = "en";
-		
-            function initialize() {
-                if(window.sankore){
-                    oembedUrl = window.sankore.preference("oembedUrl", "");
-                }
-			
-                window.resizeTo(426, 630);
-                if(oembedUrl.length > 0){
-                    $("#textbox").val(oembedUrl);	
-                    $("#search-button").trigger("click");
-                }else{                    	
-                    $("#embeded-content").load("locales/" + lang + "/howto.html"); // Welcome note with some explanations
-                };
-            };
-		
-            $(document).ready(function(){
-                var resizer; // Timer
-                var resizerIndex;
-			
-                resizerIndex = 0;
-			
-                $("#search-button")
-                .click(function(){
-                    if($("#textbox").val()){
-                        window.resizeTo(385, 80);
-                        $("#container").removeClass("welcome").removeClass("change").removeClass("error").addClass("load");
-                        $("#container-shadow").hide();
-                        $("#arrow").hide();
-                        $("#embeded-content").css({
-                            marginLeft:-9000,
-                            marginTop:-9000
-                        }).empty().oembed($("#textbox").val());					
-                        checkcontent();
-                    } else {
-                        var sleepTime = 100;
-                        var counter = 0;
-                        var id = setInterval(function(){
-                            $("#textbox").toggleClass("bordered1").toggleClass("bordered2");
-                            counter ++;
-                            if(counter == 10)
-                                clearInterval(id);
-                        }, sleepTime);
-                    }
-                })
-                .mouseenter(function(){
-                    $(this)
-                    .addClass("over");
-                })
-                .mouseleave(function(){
-                    $(this)
-                    .removeClass("over");
-                });
-			
-                $('#textbox').keypress(function(e){
-                    if (e.which == 13){
-                        $('#search-button').click();
-                    };
-                });
-			
-                $("#show-inputfield-button")
-                .click(
-                function(){
-                    $("#show-area").fadeOut(0);
-                    $("#inputfield").show();
-                    $("#shadow").show();
-                    $("#container").removeClass("show").addClass("change");
-                    adaptWidgetSize(18, 88);
-                })
-                .mouseenter(function(){
-                    $(this).addClass("over");
-                })
-                .mouseleave(function(){
-                    $(this).removeClass("over");
-                });
-							
-                function checkcontent(){
-                    if($("#embeded-content").html().length != 0 && $("#embeded-content").children(":first").width() > 0){
-                        $("#embeded-content embed").attr("wmode", "opaque");
-                        var embeded_content_html = $("#embeded-content").html();
-                        $("#embeded-content").empty().html(embeded_content_html);		
-                        clearTimeout(resizer);
-                        resizerIndex = 0;
-															
-                        if(window.sankore){
-                            window.sankore.setPreference("oembedUrl", $("#textbox").val());
-                        };
-					
-                        $("#inputfield").hide();
-                        $("#shadow").hide();
-                        $("#embeded-content").css({
-                            marginLeft:0,
-                            marginTop:0
-                        })
-                        .width($("#embeded-content").children(":first").width())
-                        .height($("#embeded-content").children(":first").height());
-                        $("#container").removeClass("load").addClass("show");
-                        $("#show-area").fadeIn(2000).css({
-                            left:$("#embeded-content").children(":first").width()-25,
-                            top:($("#embeded-content").children(":first").height()-35)/2
-                        });
-										
-                        adaptWidgetSize(5, 13);					
-                        return false;
-                    };
-				
-                    if(resizerIndex > 50){
-                        resizerIndex = 0;
-                        $("#container").removeClass("show").addClass("error");
-                        $("#arrow").show();
-                        $("#embeded-content").css({
-                            marginTop:0,
-                            marginLeft:0
-                        }).width(395)
-                        .load("locales/" + lang + "/error.html", 
-                        function(){
-                            adaptWidgetSize(20, 125);
-                        });
-                        $("#container-shadow").show();
-                    }else{
-                        resizer = setTimeout(function(){checkcontent()}, 100);
-                        resizerIndex++;
-                    };
-                };
-			
-                function adaptWidgetSize(adjustmentX, adjustmentY){
-                    var margins = {
-                        top: cssToInt($("body").css("margin-top")), 
-                        right: cssToInt($("body").css("margin-right")), 
-                        bottom: cssToInt($("body").css("margin-bottom")),
-                        left: cssToInt($("body").css("margin-left"))
-                    };
-                    var widgetWidth = $("#embeded-content").width() + margins.right + margins.left + adjustmentX;
-                    var widgetHeight = $("#embeded-content").position().top + $("#embeded-content").height() + margins.bottom + adjustmentY;
-				
-                    window.resizeTo(widgetWidth, widgetHeight);
-                    window.sankore.resize(widgetWidth, widgetHeight);
-                };
-				
-                function cssToInt(cssvalue){
-                    return(parseInt(cssvalue.replace("px", "")));
-                };
-			
-                if (window.widget) {
-                    window.widget.onremove = function(){
-                        $("#embeded-content").empty();
-                    }
-                }
-                $("#search-button").html(sankoreLang[lang].show);
-                initialize();
-            });
-        </script>
-
-        <div id="ubwidget">
-            <div id="shadow"></div>
-
-            <div id="inputfield">
-                <input id="textbox" type="text" class="bordered2">
-                <div id="search-button" class="button">Show</div>
-            </div>
-
-            <div id="container" class="welcome">
-                <div id="arrow"><img src="imgs/arrow.png" alt="arrow-top"></div>
-
-                <div id="show-container">
-                    <div id="embeded-content"></div>
-
-                    <div id="show-area">
-                        <img id="show-inputfield-button" src="imgs/bts.png">
-                    </div>
-                </div>
-
-                <table cellspacing="0" cellpadding="0" id="container-shadow">
-                    <tr>
-                        <td id="shadow-left"></td>
-                        <td id="shadow-center"> </td>
-                        <td id="shadow-right"></td>
-                    </tr>
-                </table>
-            </div>
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/audios/Animaux/insectes/abeilles.mp3 b/Sankore-3.1/resources/library/audios/Animaux/insectes/abeilles.mp3
new file mode 100644
index 0000000..dff1b31
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/insectes/abeilles.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/insectes/moustique.mp3 b/Sankore-3.1/resources/library/audios/Animaux/insectes/moustique.mp3
new file mode 100644
index 0000000..ccb68d7
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/insectes/moustique.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chat.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chat.mp3
new file mode 100644
index 0000000..d09e140
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chat.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chien.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chien.mp3
new file mode 100644
index 0000000..0cd1dd2
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/chien.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/cochon.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/cochon.mp3
new file mode 100644
index 0000000..adcc400
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/cochon.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/mouton.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/mouton.mp3
new file mode 100644
index 0000000..94a7ed7
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/mouton.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/vache.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/vache.mp3
new file mode 100644
index 0000000..b6fb5f0
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes domestiques/vache.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/chimpanze.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/chimpanze.mp3
new file mode 100644
index 0000000..e1af0d6
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/chimpanze.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/elephant.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/elephant.mp3
new file mode 100644
index 0000000..d5fe234
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/elephant.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/leopard.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/leopard.mp3
new file mode 100644
index 0000000..7b983c6
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/leopard.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/lion.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/lion.mp3
new file mode 100644
index 0000000..7aa1b81
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/lion.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/rhinoceros.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/rhinoceros.mp3
new file mode 100644
index 0000000..3c50ced
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/rhinoceros.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/singes.mp3 b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/singes.mp3
new file mode 100644
index 0000000..582cb8b
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/mammiferes sauvages/singes.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/oiseaux/cardinal.mp3 b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/cardinal.mp3
new file mode 100644
index 0000000..259717a
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/cardinal.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/oiseaux/chouette.mp3 b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/chouette.mp3
new file mode 100644
index 0000000..8004228
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/chouette.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/oiseaux/coq.mp3 b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/coq.mp3
new file mode 100644
index 0000000..b10249c
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/coq.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/oiseaux/corneille.mp3 b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/corneille.mp3
new file mode 100644
index 0000000..b1057ae
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/corneille.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Animaux/oiseaux/poulets.mp3 b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/poulets.mp3
new file mode 100644
index 0000000..514ca7e
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Animaux/oiseaux/poulets.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Bruitages/eau dans verre.mp3 b/Sankore-3.1/resources/library/audios/Bruitages/eau dans verre.mp3
new file mode 100644
index 0000000..5eb7a8c
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Bruitages/eau dans verre.mp3 differ
diff --git a/Sankore-3.1/resources/library/audios/Bruitages/klaxon.mp3 b/Sankore-3.1/resources/library/audios/Bruitages/klaxon.mp3
new file mode 100644
index 0000000..a9e628d
Binary files /dev/null and b/Sankore-3.1/resources/library/audios/Bruitages/klaxon.mp3 differ
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/calendrier_2011.png b/Sankore-3.1/resources/library/image/Backgrounds/calendrier_2011.png
deleted file mode 100644
index 3a491c9..0000000
Binary files a/Sankore-3.1/resources/library/image/Backgrounds/calendrier_2011.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/image/Voltaire.jpg b/Sankore-3.1/resources/library/image/Voltaire.jpg
deleted file mode 100644
index 95b55be..0000000
Binary files a/Sankore-3.1/resources/library/image/Voltaire.jpg and /dev/null differ
diff --git a/Sankore-3.1/resources/library/image/Voltaire.thumbnail.png b/Sankore-3.1/resources/library/image/Voltaire.thumbnail.png
deleted file mode 100644
index bbaa537..0000000
Binary files a/Sankore-3.1/resources/library/image/Voltaire.thumbnail.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/image/cartepolitiqueeurope.jpg b/Sankore-3.1/resources/library/image/cartepolitiqueeurope.jpg
deleted file mode 100644
index 97c51e9..0000000
Binary files a/Sankore-3.1/resources/library/image/cartepolitiqueeurope.jpg and /dev/null differ
diff --git a/Sankore-3.1/resources/library/image/cartepolitiqueeurope.thumbnail.png b/Sankore-3.1/resources/library/image/cartepolitiqueeurope.thumbnail.png
deleted file mode 100644
index 7af5417..0000000
Binary files a/Sankore-3.1/resources/library/image/cartepolitiqueeurope.thumbnail.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/image/violon.jpg b/Sankore-3.1/resources/library/image/violon.jpg
deleted file mode 100644
index a7f6e20..0000000
Binary files a/Sankore-3.1/resources/library/image/violon.jpg and /dev/null differ
diff --git a/Sankore-3.1/resources/library/image/violon.thumbnail.png b/Sankore-3.1/resources/library/image/violon.thumbnail.png
deleted file mode 100644
index a28ceb4..0000000
Binary files a/Sankore-3.1/resources/library/image/violon.thumbnail.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml
new file mode 100644
index 0000000..b30123b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="600" 
+        ub:resizable="true">     
+   
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Associer images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/css/basic.css
new file mode 100644
index 0000000..18ae207
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/css/basic.css	
@@ -0,0 +1,431 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;    
+    font-family: sans-serif;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid black;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+    background-color: #666;
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid black;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 5px 0;
+    min-height: 60px;
+}
+
+.imgs_cont{
+    width: 100%;
+    min-height: 142px;
+    margin: 0;
+}
+
+.imgs_answers{
+    width: 162px;
+    margin: 0 auto;
+    margin-bottom: 10px;
+    min-height: 142px;
+    border: 2px dashed #ccc;
+    text-align: center;
+}
+
+.imgs_answers_gray{
+
+}
+
+.imgs_answers_green{
+    background-color: #9f9;
+}
+
+.imgs_answers_red{
+    background-color: #f99;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    width: 80%;
+    min-height: 40px;
+    max-height: 60px;
+    float: right;
+    overflow-x: hidden;
+    background-color: #ccc;
+    border-top-left-radius: 10px;
+    border-bottom-left-radius: 10px;
+    padding-left: 10px;  
+    word-break: break-all;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.add_img{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    background-image: url(../img/add_img.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: inline-block;
+}
+
+.img_block{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    cursor: pointer;
+    display: inline-block;
+    position: relative;
+    text-align: center;
+}
+
+.img_gray{
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+}
+
+.close_img, .clear_img, .true_img, .false_img{
+    width: 30px;
+    height: 30px;
+    background-repeat: no-repeat;
+    position: absolute;
+    right: -15px;
+    cursor: pointer;
+}
+
+.close_img{    
+    background-image: url(../img/close_img.png);    
+    top: -15px;   
+}
+
+.clear_img{
+    background-image: url(../img/clear_img.png);
+    top: 15px;
+}
+
+.true_img{
+    background-image: url(../img/false.png);
+    top: 45px;
+}
+
+.false_img{
+    background-image: url(../img/true.png);
+    top: 45px;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.dropHere{
+    background-color: #ccc;
+}
+
+.dropBack{
+
+}
+
+/* new design */
+
+.without_back{
+    background: none !important;
+}
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+/*new update 26 09 2012*/
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/icon.svg
new file mode 100644
index 0000000..ad96902
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/icon.svg	
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.6655" y1="0" x2="53.6655" y2="107.333">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<rect x="10.8" y="62" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+	<g id="PfcyK0_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M49.8,72.9C42.3,72,35.6,74.2,28,74.3c-0.3,0-0.6,0-0.9,0
+					c-3.8-0.5-7.1-1.5-11.3-1.6c-0.7-0.2-1.8,0-2.6-0.1c0-2.7,0-5.4,0-8.1c12.2,0,24.4,0,36.6,0C49.8,67.3,49.8,70.1,49.8,72.9z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M13.2,72.6C13.2,72.6,13.2,72.6,13.2,72.6c0.9,0,1.9-0.2,2.6,0
+					C15,72.6,14.1,72.6,13.2,72.6z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M27.1,74.3c0.3,0,0.6,0,0.9,0C27.9,74.4,27.3,74.4,27.1,74.3z"/>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M30.1,77.9c6.6,0,13,0,19.7,0c0,1.3,0,2.7,0,4c-0.6-0.2-1.1,0.1-1.7-0.4
+					c-0.5,0.2-0.6,0.4-1.3,0.2c-0.2-0.2-0.9-0.1-1.1,0c-1.1,0.3-2.4,0-3.2-0.4c-0.3-0.1-0.1,0.3-0.4,0.2c-2.3-0.5-4.4-1.1-7.2-1.1
+					c-0.2-0.2-0.7,0-1-0.1c-3.4-0.3-6.8-0.6-9.5-1.5c-0.7-0.1-1.4-0.3-2.2-0.2c-0.2-0.2-0.7,0-1-0.1c-1.2,0.1-2.1-0.1-3-0.4
+					c0.8-0.2,1.9,0.2,2.7,0c0.3,0.1,1.2,0.1,1.5,0c0.2,0,0.3,0,0.5-0.1c0.3,0,0.6,0,0.9,0c0.1,0,0.1,0,0.2,0c0.6,0.1,1.6,0.1,2.2,0
+					c0.6,0,1.2-0.1,1.8-0.1c0.3,0,0.9,0.1,1.1-0.1c0.1,0,0.1,0,0.2,0C29.5,77.9,30,78.1,30.1,77.9z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M29.3,78c0.1-0.2,0.6,0,0.9-0.1C30,78.1,29.5,77.9,29.3,78z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M27.9,78.1c0.2-0.2,0.8,0,1.1-0.1C28.8,78.2,28.3,78,27.9,78.1z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M22.9,78.2c0.1-0.1,0.8-0.1,0.9,0C23.5,78.2,23.2,78.2,22.9,78.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M24,78.2c0.7,0,1.5,0,2.2,0C25.6,78.3,24.5,78.3,24,78.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M20.8,78.3c0.5,0,1,0,1.5,0C22,78.4,21.2,78.4,20.8,78.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M21.1,78.6c0.3,0,0.8-0.1,1,0.1C21.8,78.7,21.3,78.8,21.1,78.6z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M33.9,80.5c0.3,0,0.8-0.1,1,0.1C34.6,80.5,34.1,80.7,33.9,80.5z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M49.8,87.4c0,0.2,0,0.4,0,0.7c-1.4,0.6-2.9,0.6-4.7,0.7
+					C46.5,88.1,48.1,87.6,49.8,87.4z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M22.1,78.7c0.8,0,1.4,0.2,2.2,0.2c2.7,1,6.1,1.2,9.5,1.5c0.2,0.2,0.7,0,1,0.1
+					c2.8,0,4.9,0.6,7.2,1.1c0.3,0.1,0.1-0.3,0.4-0.2c0.8,0.4,2.2,0.7,3.2,0.4c0.2,0.1,0.7-0.1,1.1,0c0.7,0.1,0.8,0,1.3-0.2
+					c0.6,0.4,1.1,0.2,1.7,0.4c0,1.7,0,3.4,0,5.1c-0.7-0.2-1.5,0.5-2.1,0.3c-0.1,0,0-0.1,0-0.1c-0.4,0.1-0.7,0.3-1,0.3
+					c-0.1,0-0.3-0.2-0.4-0.1c-0.5,0.1-1.1,0.5-1.8,0.4c-0.3,0,0.3-0.3,0-0.6c-0.8,0.2-2.1,0.7-2.6,0.1c-2.1,0.6-4.8,1-7.5,0.8
+					c1.5-0.5,3.5-0.6,5.1-1c-4.9-0.3-8.5,0.9-13.1,1.1c0.1-0.4,0.7-0.2,1-0.3c2.3-0.4,5-0.8,6.8-1.8c-1.8,0-3.8,0.8-5.9,1
+					c-1.1,0.1-2.2,0-3.2,0.4c1.3-1.2,4-1.1,5.5-2.2c-0.5-0.3-1.3-0.1-1.8,0.1c-0.3,0,0.1-0.2,0.1-0.3c-1,0-1.8,0.1-2.7,0.1
+					c-0.2-0.1-0.4-0.1-0.4-0.4c-1.6,0.3-2.8-0.4-4.3,0c0-0.2,0.4-0.1,0.7-0.2c0.3-0.2,0.3-0.3,0.6-0.4c-1.6-0.4-3.6,0.1-4.4-1
+					c-2.3,0.4-2.8-1.7-4.8-1.8c0-0.1,0-0.1-0.1-0.1c0-2.9,0-5.8,0-8.6c0.9,0,1.8,0,2.6,0c4.2,0.1,7.5,1.1,11.3,1.6
+					c0.1,0.1,0.8,0.1,0.9,0c7.6,0,14.3-2.2,21.8-1.4c0,1.7,0,3.4,0,5.1c-6.7,0-13.1,0-19.7,0c-0.3,0-0.7-0.1-0.9,0.1
+					c-0.1,0-0.1,0-0.2,0c-0.3,0-0.9-0.1-1.1,0.1c-0.6,0-1.1,0.2-1.8,0.1c-0.7,0-1.5,0-2.2,0c-0.1,0-0.1,0-0.2,0
+					c-0.1-0.1-0.8-0.1-0.9,0c-0.2,0-0.3,0.1-0.5,0.1c-0.5,0-1,0-1.5,0c-0.8,0.2-1.9-0.2-2.7,0c0.9,0.2,1.8,0.5,3,0.4
+					C21.3,78.8,21.8,78.7,22.1,78.7z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M45.7,81.8c0.2-0.1,0.9-0.2,1.1,0C46.5,81.7,45.9,81.9,45.7,81.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M13.2,81.3c0.1,0,0.1,0.1,0.1,0.1c2,0.2,2.5,2.2,4.8,1.8c0.8,1.2,2.8,0.6,4.4,1
+					c-0.3,0.1-0.3,0.3-0.6,0.4c-0.2,0.1-0.6,0.1-0.7,0.2c1.5-0.4,2.7,0.3,4.3,0c0,0.2,0.2,0.3,0.4,0.4c0.9-0.1,1.7-0.2,2.7-0.1
+					c0,0.1-0.4,0.3-0.1,0.3c0.5-0.2,1.3-0.3,1.8-0.1c-1.5,1.1-4.1,1-5.5,2.2c1-0.4,2.1-0.3,3.2-0.4c2.1-0.2,4-1,5.9-1
+					c-1.8,0.9-4.6,1.4-6.8,1.8c-0.3,0-0.8-0.1-1,0.3c4.7-0.2,8.2-1.4,13.1-1.1c-1.6,0.5-3.6,0.5-5.1,1c2.7,0.2,5.4-0.2,7.5-0.8
+					c0.6,0.6,1.8,0.1,2.6-0.1c0.3,0.3-0.3,0.6,0,0.6c0.7,0,1.4-0.4,1.8-0.4c0.1,0,0.4,0.1,0.4,0.1c0.3,0,0.6-0.2,1-0.3
+					c0,0-0.1,0.1,0,0.1c0.6,0.2,1.5-0.5,2.1-0.3c0,0.1,0,0.2,0,0.3c-1.8,0.2-3.3,0.7-4.7,1.4c1.8-0.1,3.3-0.1,4.7-0.7
+					c0,1.7,0,3.5,0,5.2c-12.2,0-24.4,0-36.6,0C13.2,89.3,13.2,85.3,13.2,81.3z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="58.3" y="61" fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" width="41.5" height="33.7"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M83.3,67.6c0.2,0,0.6-0.1,0.7,0.1
+			C83.9,67.6,83.4,67.7,83.3,67.6z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M89.6,73c0.4,0,0.2,0.4,0.1,0.5
+			C89.4,73.6,89.5,73.2,89.6,73z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M91.1,75.1c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+			C90.7,75,91,75,91.1,75.1z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M74,78c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1
+			c0,0.5-0.8,0.6-0.5,1.2c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2
+			c0.6-0.5,1.7-0.3,2.3-0.1c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9
+			c-1.2,0.5-2.5-0.3-3-1c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4
+			c-0.6,0-1-0.3-1.3-0.5c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3
+			c-0.7,0.3-1.3-0.1-1.9,0c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1
+			c0-0.3-0.3-0.3-0.3-0.6c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8
+			c0.1,0.3,0.6,0.2,0.9,0.3c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3
+			c-0.4,0.1-0.7,0.2-1.1,0.2c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C74,78.5,73.8,78,74,78z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M88.5,83.4c0.4,0,0.6,0.3,1,0.3
+			C89.2,83.8,88.5,83.8,88.5,83.4z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M91.8,74.5c0.4-0.1,0.8,0.1,1,0.4
+			c-0.1-0.3-0.6-0.1-0.7-0.4C92,74.4,92,74.6,91.8,74.5C91.8,74.5,91.8,74.5,91.8,74.5z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M87.5,68.6c0,0.3,0.2,0.3,0.2,0.5
+			c-0.2-0.1-0.4-0.3-0.7-0.5c0.3,0,0.2,0.3,0.4,0.3C87.5,68.8,87.4,68.4,87.5,68.6z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M81.6,67c0.4-0.2,0.6,0.3,0.8,0.5
+			C82.1,67.4,82.1,67,81.6,67z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M76.1,71.9c0,0.4-0.2,0.5-0.4,0.7
+			C75.7,72.3,75.9,72.1,76.1,71.9z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M76.2,73.8c-0.2,0.4,0.3,0.8-0.1,1
+			C76.4,74.5,75.8,74.1,76.2,73.8z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M92.9,76.9c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5
+			c-0.1,0-0.2,0-0.3,0c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4
+			c-0.6,0.7-0.4,2.7,0.7,2.8c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0
+			c1.1,0.2,2.2,0.8,3.3,0.7c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2
+			c0,3.4,0,4.8,0,8.1c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+			c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+			c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+			c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+			c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+			c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+			c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+			c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+			c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1c0,0,0-0.1,0-0.1
+			c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5c0.2-0.2,0.7-0.3,0.4-0.7
+			c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6c0.1-0.1,0.1,0,0.2,0
+			c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2c0.2,0.2,0.4,0.4,0.7,0.5
+			c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7c1.1-0.4,1.6,0.9,2.2,1.4
+			c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3c0,0,0,0,0,0.1
+			c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C93.4,75.3,93.2,76.2,92.9,76.9z M89.6,73.6c0.1-0.1,0.3-0.6-0.1-0.5
+			C89.5,73.2,89.4,73.6,89.6,73.6z M90.6,75.1c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3C91,75,90.7,75,90.6,75.1z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M97.3,76.6c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2
+			c0.1,0.1,0.5,0.2,0.4,0.3c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0
+			c0.1,0.1,0.2,0.2,0.1,0.4c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4
+			c1.3-0.1,3,0.4,3.8-0.4c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5
+			c-0.3-0.7,0.2-0.8,0.2-1.6C94.4,77.1,95.9,76.6,97.3,76.6z M89.4,83.7c-0.4,0-0.5-0.3-1-0.3C88.5,83.8,89.2,83.8,89.4,83.7z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M97.3,76.6c-1.5,0-2.9,0.5-4.4,0.3
+			c0.3-0.7,0.4-1.6-0.1-2.1c-0.2-0.3-0.7-0.5-1-0.4c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9
+			c0.3,0.2,0.2-0.2,0.4-0.3c-0.6-0.6-1.1-1.8-2.2-1.4c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3
+			c-0.1-0.2,0,0.2,0,0.3c-0.2,0-0.2-0.3-0.4-0.3c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4c-0.3-0.3-0.7,0.1-0.8-0.2
+			c-0.1-0.2-0.5,0-0.7-0.1c-0.1,0-0.1-0.1-0.2,0c0,0.3,0.2,0.6-0.1,0.6c-0.2-0.2-0.2-0.6-0.6-0.6c-0.2-0.2-0.4-0.7-0.8-0.5
+			c-0.6,0-1,0.3-1.3,0.6c0.3,0.5-0.2,0.6-0.4,0.7c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3
+			c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2
+			c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6
+			c12.2,0,24.4,0,36.6,0C97.3,68.5,97.3,71.6,97.3,76.6z"/>
+	</g>
+	<g>
+		<g>
+			<rect x="55.3" y="58" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+			<g id="tykqki_2_">
+				<g>
+					<g>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M80.3,64.6c0.2,0,0.6-0.1,0.7,0.1C80.9,64.6,80.4,64.7,80.3,64.6z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M86.6,70c0.4,0,0.2,0.4,0.1,0.5C86.4,70.6,86.5,70.2,86.6,70z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M88.1,72.1c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+							C87.7,72,88,72,88.1,72.1z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M71,75c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1c0,0.5-0.8,0.6-0.5,1.2
+							c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2c0.6-0.5,1.7-0.3,2.3-0.1
+							c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9c-1.2,0.5-2.5-0.3-3-1
+							c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4c-0.6,0-1-0.3-1.3-0.5
+							c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3c-0.7,0.3-1.3-0.1-1.9,0
+							c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1c0-0.3-0.3-0.3-0.3-0.6
+							c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8c0.1,0.3,0.6,0.2,0.9,0.3
+							c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3c-0.4,0.1-0.7,0.2-1.1,0.2
+							c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C71,75.5,70.8,75,71,75z"/>
+						<path fill-rule="evenodd" fill="#9DAD3A" d="M85.5,80.4c0.4,0,0.6,0.3,1,0.3C86.2,80.8,85.5,80.8,85.5,80.4z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M88.8,71.5c0.4-0.1,0.8,0.1,1,0.4c-0.1-0.3-0.6-0.1-0.7-0.4
+							C89,71.4,89,71.6,88.8,71.5C88.8,71.5,88.8,71.5,88.8,71.5z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M84.5,65.6c0,0.3,0.2,0.3,0.2,0.5c-0.2-0.1-0.4-0.3-0.7-0.5
+							c0.3,0,0.2,0.3,0.4,0.3C84.5,65.8,84.4,65.4,84.5,65.6z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M78.6,64c0.4-0.2,0.6,0.3,0.8,0.5C79.1,64.4,79.1,64,78.6,64z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M73.1,68.9c0,0.4-0.2,0.5-0.4,0.7C72.7,69.3,72.9,69.1,73.1,68.9z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M73.2,70.8c-0.2,0.4,0.3,0.8-0.1,1C73.4,71.5,72.8,71.1,73.2,70.8z"/>
+						<path fill-rule="evenodd" fill="#9DAD3A" d="M89.9,73.9c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5c-0.1,0-0.2,0-0.3,0
+							c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4c-0.6,0.7-0.4,2.7,0.7,2.8
+							c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0c1.1,0.2,2.2,0.8,3.3,0.7
+							c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2c0,3.4,0,4.8,0,8.1
+							c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+							c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+							c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+							c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+							c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+							c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+							c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+							c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+							c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1
+							c0,0,0-0.1,0-0.1c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5
+							c0.2-0.2,0.7-0.3,0.4-0.7c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6
+							c0.1-0.1,0.1,0,0.2,0c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2
+							c0.2,0.2,0.4,0.4,0.7,0.5c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7
+							c1.1-0.4,1.6,0.9,2.2,1.4c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3
+							c0,0,0,0,0,0.1c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C90.4,72.3,90.2,73.2,89.9,73.9z M86.6,70.6
+							c0.1-0.1,0.3-0.6-0.1-0.5C86.5,70.2,86.4,70.6,86.6,70.6z M87.6,72.1c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3
+							C88,72,87.7,72,87.6,72.1z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M94.3,73.6c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2c0.1,0.1,0.5,0.2,0.4,0.3
+							c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0c0.1,0.1,0.2,0.2,0.1,0.4
+							c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4c1.3-0.1,3,0.4,3.8-0.4
+							c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5c-0.3-0.7,0.2-0.8,0.2-1.6
+							C91.4,74.1,92.9,73.6,94.3,73.6z M86.4,80.7c-0.4,0-0.5-0.3-1-0.3C85.5,80.8,86.2,80.8,86.4,80.7z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M94.3,73.6c-1.5,0-2.9,0.5-4.4,0.3c0.3-0.7,0.4-1.6-0.1-2.1
+							c-0.2-0.3-0.7-0.5-1-0.4c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9c0.3,0.2,0.2-0.2,0.4-0.3
+							c-0.6-0.6-1.1-1.8-2.2-1.4c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3c-0.1-0.2,0,0.2,0,0.3
+							c-0.2,0-0.2-0.3-0.4-0.3c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4c-0.3-0.3-0.7,0.1-0.8-0.2c-0.1-0.2-0.5,0-0.7-0.1
+							c-0.1,0-0.1-0.1-0.2,0c0,0.3,0.2,0.6-0.1,0.6c-0.2-0.2-0.2-0.6-0.6-0.6c-0.2-0.2-0.4-0.7-0.8-0.5c-0.6,0-1,0.3-1.3,0.6
+							c0.3,0.5-0.2,0.6-0.4,0.7c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3
+							c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2
+							c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6
+							c12.2,0,24.4,0,36.6,0C94.3,65.5,94.3,68.6,94.3,73.6z"/>
+					</g>
+				</g>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="76.3,47.8 76.3,49.8 74.3,49.8 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.4193,4.4193" x1="69.9" y1="49.8" x2="36.8" y2="49.8"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="34.6,49.8 32.6,49.8 32.6,47.8 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.5613,3.5613" x1="32.6" y1="44.2" x2="32.6" y2="17.5"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="32.6,15.7 32.6,13.7 34.6,13.7 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.4193,4.4193" x1="39" y1="13.7" x2="72.1" y2="13.7"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="74.3,13.7 76.3,13.7 76.3,15.7 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.5613,3.5613" x1="76.3" y1="19.3" x2="76.3" y2="46"/>
+</g>
+<path fill="#FFFFFF" d="M47.9,26.5c0.3-0.7,0.7-1.4,1.2-1.9s1.1-1,1.9-1.3c0.7-0.3,1.5-0.5,2.4-0.5c1.2,0,2.1,0.2,2.9,0.5
+	c0.8,0.3,1.4,0.7,1.9,1.2c0.5,0.5,0.8,1,1,1.5s0.3,1.1,0.3,1.5c0,0.8-0.1,1.4-0.3,1.9c-0.2,0.5-0.5,0.9-0.8,1.3s-0.6,0.7-1,0.9
+	c-0.4,0.3-0.7,0.5-1,0.8c-0.3,0.3-0.6,0.5-0.9,0.9c-0.3,0.3-0.4,0.7-0.5,1.2v0.9h-3.3v-1.1c0-0.7,0.2-1.3,0.4-1.8
+	c0.2-0.5,0.5-0.9,0.8-1.2s0.6-0.6,0.9-0.9c0.3-0.2,0.6-0.5,0.9-0.7c0.3-0.2,0.5-0.5,0.7-0.8c0.2-0.3,0.2-0.7,0.2-1.1
+	c0-0.7-0.2-1.3-0.5-1.7c-0.4-0.4-0.9-0.5-1.5-0.5c-0.4,0-0.8,0.1-1.1,0.3s-0.6,0.4-0.8,0.7s-0.4,0.6-0.5,1S51,28.5,51,28.9h-3.6
+	C47.5,28.1,47.6,27.3,47.9,26.5z M55.2,37v3.8h-3.8V37H55.2z"/>
+<path fill="#33342E" d="M87,41.1c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,4.7,16.2,4.8,30h1
+	c0,0,5.5-13.9-1.5-32L87,41.1z"/>
+<path fill="#67C8F0" d="M84.7,37.6c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,7,19.7,7.1,33.4h1
+	c0,0,3.2-17.4-3.8-35.5L84.7,37.6z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/add_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/add_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/add_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/add_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down.png
new file mode 100644
index 0000000..a20fab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down_white.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down_white.png
new file mode 100644
index 0000000..4a1d133
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/ar_down_white.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/clear_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/clear_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/clear_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/clear_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/false.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/false.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/false.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/false.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/green_point.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/green_point.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/green_point.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/numb_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/numb_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/numb_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/numb_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/red_point.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/red_point.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/red_point.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/true.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/true.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/img/true.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/img/true.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html
new file mode 100644
index 0000000..db2fbf1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/index.html	
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+                //here you can put your code
+                if(window.sankore)
+                    sankore.enableDropOnWidget();
+            });
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js
new file mode 100644
index 0000000..7582caf
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/js/script.js	
@@ -0,0 +1,816 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Select the number \"three\".", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    wgt_name: "Associate images",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2>Associate images</h2> </p>" +
+"<p> <h3>Choose the correct picture</h3> </p>" +
+"<p> Drag and drop the image in the correct area. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green. </p> "+
+"<p> Reload “button” resets the exercises. </p>" +
+"<p> Enter the “Edit” mode to :</p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> modify an exercise or to create  a new one.</li> </ul>" +
+
+"<p>To create a new exercise : </p>" +
+"<ul> <li> click on “New block”,</li>" +
+"<li> insert an instruction clicking on the text field “Enter your instruction here ... ”,</li>" +
+"<li> add picture frames clicking on the “+”,</li>" +
+"<li> drag an drop pictures from your library,</li>" +
+"<li> set the correct image of your activity clicking on the submit button “v” on the frame. </li> </ul>" +
+"<p> To delete a frame, click on the cross button on the frame.</p>" +
+"<p> To replace a picture, click on the reload icon on the frame. </p>" +
+
+"<p> To delete a whole exercise, click on the cross on the left.</p>" +
+
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer","")){
+            var data = jQuery.parseJSON(sankore.preference("associer",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display", "block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    if(window.sankore)
+        sankore.setPreference("associer", JSON.stringify(array_to_export));    
+}
+
+//import
+function importData(data){
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);
+                var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+                var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(var j in data[i].imgs){
+                    var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    
+                    img.height(data[i].imgs[j].ht);
+                      
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+
+
+                    var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    tmp_array.push(img_block);
+                    
+                }
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(imgs_container);
+                }
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);
+                imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+                $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+                imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].imgs){
+                    img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    img.height(data[i].imgs[j].ht);
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    img_block.draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    if(data[i].imgs[j].cont == "cont")
+                        img_block.appendTo(imgs_container);
+                    else{
+                        imgs_answers.empty();
+                        img_block.appendTo(imgs_answers);
+                        if(data[i].imgs[j].value == "1")
+                            imgs_answers.addClass("imgs_answers_green");
+                        else
+                            imgs_answers.addClass("imgs_answers_red");
+                    }
+                }
+            
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img2);
+    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+        
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/index.html
new file mode 100644
index 0000000..8defd89
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..3895c03
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js	
@@ -0,0 +1,810 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    short_desc: "Sélectionner le numéro «trois».", 
+    add: "Nouveau bloc",
+    enter: "Saisir la consigne ici ...",
+    wgt_name: "Associer des images",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content:"<p><h2>Associer des images</h2></p>"+
+    "<p><h3>Faire correspondre une image à la consigne indiquée.</h3></p>"+
+
+    "<p>L’activité s’effectue par un glisser-déposer de l’image dans la zone délimitée. Si le résultat est incorrect, la zone se colore en rouge. Si le résultat est correct, la zone se colore en vert.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
+    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir la consigne ici ...”, </li>"+
+    "<li>ajoutez des zones image en cliquant sur le gros signe + en dessous, </li>"+
+    "<li>insérez des images dans ces zones par glisser-déposer des images à partir de votre bibliothèque, </li>"+
+    "<li>définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée.</li></ul>"+
+    "<p>Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+
+    "<p>Pour changer d’image, cliquez sur l’icône située au milieu à droite de l’image.</p>"+ 
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer","")){
+            var data = jQuery.parseJSON(sankore.preference("associer",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+        
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display", "block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    sankore.setPreference("associer", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);
+                var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+                var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(var j in data[i].imgs){
+                    var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    img.height(data[i].imgs[j].ht);
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    tmp_array.push(img_block);
+                }
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(imgs_container);
+                }
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);
+                imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+                $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+                imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].imgs){
+                    img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    img.height(data[i].imgs[j].ht);
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    img_block.draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    if(data[i].imgs[j].cont == "cont")
+                        img_block.appendTo(imgs_container);
+                    else{
+                        imgs_answers.empty();
+                        img_block.appendTo(imgs_answers);
+                        if(data[i].imgs[j].value == "1")
+                            imgs_answers.addClass("imgs_answers_green");
+                        else
+                            imgs_answers.addClass("imgs_answers_red");
+                    }
+                }
+            
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+            exportData();
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/index.html
new file mode 100644
index 0000000..8defd89
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..1ada2d4
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/locales/ru/js/script.js	
@@ -0,0 +1,790 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    short_desc: "Выберите число \"три\".", 
+    add: "Новый блок",
+    enter: "Введите условие ...",
+    wgt_name: "Соотнести",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer","")){
+            var data = jQuery.parseJSON(sankore.preference("associer",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+        
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display", "block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.text = $(this).find(".text_cont").text();
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    sankore.setPreference("associer", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);
+                var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+                var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+                var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(var j in data[i].imgs){
+                    var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    img.height(data[i].imgs[j].ht);
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    tmp_array.push(img_block);
+                }
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(imgs_container);
+                }
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);
+                imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+                $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+                imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+                number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+                text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].imgs){
+                    img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                    img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                    img.height(data[i].imgs[j].ht);
+                    if((120 - data[i].imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                    hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                    img_block.append(hidden_input).append(img);
+                    img_block.draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    if(data[i].imgs[j].cont == "cont")
+                        img_block.appendTo(imgs_container);
+                    else{
+                        imgs_answers.empty();
+                        img_block.appendTo(imgs_answers);
+                        if(data[i].imgs[j].value == "1")
+                            imgs_answers.addClass("imgs_answers_green");
+                        else
+                            imgs_answers.addClass("imgs_answers_red");
+                    }
+                }
+            
+                imgs_answers.droppable({
+                    hoverClass: 'dropHere',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if($(this).children()[0].tagName == "IMG")
+                                $(this).children().remove();
+                            else
+                                $(ui.draggable).parent().append($(this).children());
+                            $(this).append($(ui.draggable));  
+                            if($(this).children().length == 1){                
+                                if($(this).children().find("input").val() == "1")
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    $(this).removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }                    
+                        }
+                    }
+                });
+                imgs_container.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_cont = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                var answers = "";
+                                $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                    answers += $(this).find("input").val();
+                                });
+                                if(tmp_cont.children()[0].tagName == "IMG")
+                                    tmp_cont.removeClass("imgs_answers_green")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_gray");
+                                else
+                                if(tmp_cont.children().length == 1){                
+                                    if(tmp_cont.children().find("input").val() == "1")
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        tmp_cont.removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }    
+                            }
+                        }
+                    }
+                }); 
+                container.appendTo("#data");
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+            exportData();
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/0.gif b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/0.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/0.gif
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/0.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/1.gif b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/1.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/1.gif
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/1.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/2.gif b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/2.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/2.gif
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/2.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/3.gif b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/3.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/3.gif
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/3.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/4.gif b/Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/4.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/objects/4.gif
rename to Sankore-3.1/resources/library/interactivities/Ass images.wgt/objects/4.gif
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml
new file mode 100644
index 0000000..b30123b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="600" 
+        ub:resizable="true">     
+   
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Associer images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css
new file mode 100644
index 0000000..d6bfe05
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/css/basic.css	
@@ -0,0 +1,471 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid black;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+    
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid black;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 0 0;
+    min-height: 60px;
+}
+
+.imgs_cont{
+    width: 100%;
+    min-height: 142px;
+    margin: 0;
+}
+
+.imgs_answers{
+    width: 162px;
+    margin: 0 auto;
+    margin-bottom: 10px;
+    min-height: 142px;
+    border: 2px dashed #ccc;
+    text-align: center;
+}
+
+.imgs_answers_gray{
+    
+}
+
+.imgs_answers_green{
+    background-color: #9f9;
+}
+
+.imgs_answers_red{
+    background-color: #f99;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    width: 80%;
+    min-height: 40px;
+    max-height: 60px;
+    float: right;
+    background-color: #999;
+    border-top-left-radius: 20px;
+    border-bottom-left-radius: 20px;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.add_img{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    background-image: url(../img/add_img.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: inline-block;
+}
+
+.img_block{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    cursor: pointer;
+    display: inline-block;
+    position: relative;
+}
+
+.img_gray{
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+}
+
+.close_img, .true_img, .false_img{
+    width: 30px;
+    height: 30px;
+    background-repeat: no-repeat;
+    position: absolute;
+    right: -15px;
+    cursor: pointer;
+}
+
+.close_img{    
+    background-image: url(../img/close_img.png);    
+    top: -15px;   
+}
+
+.true_img{
+    background-image: url(../img/false.png);
+    top: 15px;
+}
+
+.false_img{
+    background-image: url(../img/true.png);
+    top: 15px;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.dropHere{
+    background-color: #ccc;
+}
+
+.dropBack{
+
+}
+
+.audio_block{
+    width: 120px;
+    height: 30px;
+    padding: 5px 0 5px 10px;    
+    float: left;
+    border-right: 3px solid white;
+}
+
+.audio_gray{
+    border-top-left-radius: 15px;
+    border-bottom-left-radius: 15px;
+    background-color: white;
+}
+
+.audio_desc{
+    width: 73%;
+    max-height: 40px;
+    overflow-x: hidden;
+    float: right;
+    margin-left: 20px;
+    word-break: break-all;
+}
+
+.play, .stop{
+    height: 30px;
+    width: 70px;    
+    float: left;
+    cursor: pointer;
+}
+
+.play{
+    background-image: url(../img/play.png);
+}
+
+.stop{
+    background-image: url(../img/stop.png);
+}
+
+.replay{
+    height: 30px;
+    width: 32px;
+    margin-left: 10px;
+    float: left;
+    background-image: url(../img/replay.png);
+    background-repeat: no-repeat;
+    cursor: pointer;
+}
+
+.gray{
+    background-color: #ccc;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/icon.svg
new file mode 100644
index 0000000..9c2fda1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/icon.svg	
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.3335">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<rect x="10.7" y="62" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+	<g id="PfcyK0_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M49.7,72.9c-7.5-0.8-14.2,1.4-21.8,1.4c-0.3,0-0.6,0-0.9,0
+					c-3.8-0.5-7.1-1.5-11.3-1.6c-0.7-0.2-1.8,0-2.6-0.1c0-2.7,0-5.4,0-8.1c12.2,0,24.4,0,36.6,0C49.7,67.3,49.7,70.1,49.7,72.9z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M13.1,72.6C13.1,72.6,13.1,72.6,13.1,72.6c0.9,0,1.9-0.2,2.6,0
+					C14.8,72.6,14,72.6,13.1,72.6z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M27,74.3c0.3,0,0.6,0,0.9,0C27.8,74.4,27.1,74.4,27,74.3z"/>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M30,77.9c6.6,0,13,0,19.7,0c0,1.3,0,2.7,0,4c-0.6-0.2-1.1,0.1-1.7-0.4
+					c-0.5,0.2-0.6,0.4-1.3,0.2c-0.2-0.2-0.9-0.1-1.1,0c-1.1,0.3-2.4,0-3.2-0.4c-0.3-0.1-0.1,0.3-0.4,0.2c-2.3-0.5-4.4-1.1-7.2-1.1
+					c-0.2-0.2-0.7,0-1-0.1c-3.4-0.3-6.8-0.6-9.5-1.5c-0.7-0.1-1.4-0.3-2.2-0.2c-0.2-0.2-0.7,0-1-0.1c-1.2,0.1-2.1-0.1-3-0.4
+					c0.8-0.2,1.9,0.2,2.7,0c0.3,0.1,1.2,0.1,1.5,0c0.2,0,0.3,0,0.5-0.1c0.3,0,0.6,0,0.9,0c0.1,0,0.1,0,0.2,0c0.6,0.1,1.6,0.1,2.2,0
+					c0.6,0,1.2-0.1,1.8-0.1c0.3,0,0.9,0.1,1.1-0.1c0.1,0,0.1,0,0.2,0C29.4,77.9,29.9,78.1,30,77.9z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M29.1,78c0.1-0.2,0.6,0,0.9-0.1C29.9,78.1,29.4,77.9,29.1,78z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M27.8,78.1c0.2-0.2,0.8,0,1.1-0.1C28.7,78.2,28.2,78,27.8,78.1z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M22.8,78.2c0.1-0.1,0.8-0.1,0.9,0C23.3,78.2,23,78.2,22.8,78.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M23.9,78.2c0.7,0,1.5,0,2.2,0C25.5,78.3,24.4,78.3,23.9,78.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M20.7,78.3c0.5,0,1,0,1.5,0C21.9,78.4,21,78.4,20.7,78.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M21,78.6c0.3,0,0.8-0.1,1,0.1C21.7,78.7,21.2,78.8,21,78.6z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M33.8,80.5c0.3,0,0.8-0.1,1,0.1C34.5,80.5,33.9,80.7,33.8,80.5z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M49.7,87.4c0,0.2,0,0.4,0,0.7c-1.4,0.6-2.9,0.6-4.7,0.7
+					C46.4,88.1,47.9,87.6,49.7,87.4z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M22,78.7c0.8,0,1.4,0.2,2.2,0.2c2.7,1,6.1,1.2,9.5,1.5c0.2,0.2,0.7,0,1,0.1
+					c2.8,0,4.9,0.6,7.2,1.1c0.3,0.1,0.1-0.3,0.4-0.2c0.8,0.4,2.2,0.7,3.2,0.4c0.2,0.1,0.7-0.1,1.1,0c0.7,0.1,0.8,0,1.3-0.2
+					c0.6,0.4,1.1,0.2,1.7,0.4c0,1.7,0,3.4,0,5.1c-0.7-0.2-1.5,0.5-2.1,0.3c-0.1,0,0-0.1,0-0.1c-0.4,0.1-0.7,0.3-1,0.3
+					c-0.1,0-0.3-0.2-0.4-0.1c-0.5,0.1-1.1,0.5-1.8,0.4c-0.3,0,0.3-0.3,0-0.6c-0.8,0.2-2.1,0.7-2.6,0.1c-2.1,0.6-4.8,1-7.5,0.8
+					c1.5-0.5,3.5-0.6,5.1-1c-4.9-0.3-8.5,0.9-13.1,1.1c0.1-0.4,0.7-0.2,1-0.3c2.3-0.4,5-0.8,6.8-1.8c-1.8,0-3.8,0.8-5.9,1
+					c-1.1,0.1-2.2,0-3.2,0.4c1.3-1.2,4-1.1,5.5-2.2c-0.5-0.3-1.3-0.1-1.8,0.1c-0.3,0,0.1-0.2,0.1-0.3c-1,0-1.8,0.1-2.7,0.1
+					c-0.2-0.1-0.4-0.1-0.4-0.4c-1.6,0.3-2.8-0.4-4.3,0c0-0.2,0.4-0.1,0.7-0.2c0.3-0.2,0.3-0.3,0.6-0.4c-1.6-0.4-3.6,0.1-4.4-1
+					c-2.3,0.4-2.8-1.7-4.8-1.8c0-0.1,0-0.1-0.1-0.1c0-2.9,0-5.8,0-8.6c0.9,0,1.8,0,2.6,0c4.2,0.1,7.5,1.1,11.3,1.6
+					c0.1,0.1,0.8,0.1,0.9,0c7.6,0,14.3-2.2,21.8-1.4c0,1.7,0,3.4,0,5.1c-6.7,0-13.1,0-19.7,0c-0.3,0-0.7-0.1-0.9,0.1
+					c-0.1,0-0.1,0-0.2,0c-0.3,0-0.9-0.1-1.1,0.1c-0.6,0-1.1,0.2-1.8,0.1c-0.7,0-1.5,0-2.2,0c-0.1,0-0.1,0-0.2,0
+					c-0.1-0.1-0.8-0.1-0.9,0c-0.2,0-0.3,0.1-0.5,0.1c-0.5,0-1,0-1.5,0c-0.8,0.2-1.9-0.2-2.7,0c0.9,0.2,1.8,0.5,3,0.4
+					C21.2,78.8,21.7,78.7,22,78.7z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M45.6,81.8c0.2-0.1,0.9-0.2,1.1,0C46.3,81.7,45.8,81.9,45.6,81.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M13.1,81.3c0.1,0,0.1,0.1,0.1,0.1c2,0.2,2.5,2.2,4.8,1.8c0.8,1.2,2.8,0.6,4.4,1
+					c-0.3,0.1-0.3,0.3-0.6,0.4c-0.2,0.1-0.6,0.1-0.7,0.2c1.5-0.4,2.7,0.3,4.3,0c0,0.2,0.2,0.3,0.4,0.4c0.9-0.1,1.7-0.2,2.7-0.1
+					c0,0.1-0.4,0.3-0.1,0.3c0.5-0.2,1.3-0.3,1.8-0.1c-1.5,1.1-4.1,1-5.5,2.2c1-0.4,2.1-0.3,3.2-0.4c2.1-0.2,4-1,5.9-1
+					c-1.8,0.9-4.6,1.4-6.8,1.8c-0.3,0-0.8-0.1-1,0.3c4.7-0.2,8.2-1.4,13.1-1.1c-1.6,0.5-3.6,0.5-5.1,1c2.7,0.2,5.4-0.2,7.5-0.8
+					c0.6,0.6,1.8,0.1,2.6-0.1c0.3,0.3-0.3,0.6,0,0.6c0.7,0,1.4-0.4,1.8-0.4c0.1,0,0.4,0.1,0.4,0.1c0.3,0,0.6-0.2,1-0.3
+					c0,0-0.1,0.1,0,0.1c0.6,0.2,1.5-0.5,2.1-0.3c0,0.1,0,0.2,0,0.3c-1.8,0.2-3.3,0.7-4.7,1.4c1.8-0.1,3.3-0.1,4.7-0.7
+					c0,1.7,0,3.5,0,5.2c-12.2,0-24.4,0-36.6,0C13.1,89.3,13.1,85.3,13.1,81.3z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="58.2" y="61" fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" width="41.5" height="33.7"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M83.2,67.6c0.2,0,0.6-0.1,0.7,0.1
+			C83.7,67.6,83.3,67.7,83.2,67.6z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M89.5,73c0.4,0,0.2,0.4,0.1,0.5
+			C89.3,73.6,89.4,73.2,89.5,73z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M91,75.1c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+			C90.6,75,90.9,75,91,75.1z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M73.8,78c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1
+			c0,0.5-0.8,0.6-0.5,1.2c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2
+			c0.6-0.5,1.7-0.3,2.3-0.1c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9
+			c-1.2,0.5-2.5-0.3-3-1c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4
+			c-0.6,0-1-0.3-1.3-0.5c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3
+			c-0.7,0.3-1.3-0.1-1.9,0c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1
+			c0-0.3-0.3-0.3-0.3-0.6c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8
+			c0.1,0.3,0.6,0.2,0.9,0.3c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3
+			c-0.4,0.1-0.7,0.2-1.1,0.2c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C73.9,78.5,73.6,78,73.8,78z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M88.4,83.4c0.4,0,0.6,0.3,1,0.3
+			C89.1,83.8,88.4,83.8,88.4,83.4z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M91.7,74.5c0.4-0.1,0.8,0.1,1,0.4
+			c-0.1-0.3-0.6-0.1-0.7-0.4C91.8,74.4,91.9,74.6,91.7,74.5C91.7,74.5,91.7,74.5,91.7,74.5z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M87.4,68.6c0,0.3,0.2,0.3,0.2,0.5
+			c-0.2-0.1-0.4-0.3-0.7-0.5c0.3,0,0.2,0.3,0.4,0.3C87.4,68.8,87.3,68.4,87.4,68.6z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M81.5,67c0.4-0.2,0.6,0.3,0.8,0.5C82,67.4,82,67,81.5,67z
+			"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M76,71.9c0,0.4-0.2,0.5-0.4,0.7
+			C75.6,72.3,75.8,72.1,76,71.9z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M76,73.8c-0.2,0.4,0.3,0.8-0.1,1
+			C76.3,74.5,75.7,74.1,76,73.8z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M92.8,76.9c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5
+			c-0.1,0-0.2,0-0.3,0c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4
+			c-0.6,0.7-0.4,2.7,0.7,2.8c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0
+			c1.1,0.2,2.2,0.8,3.3,0.7c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2
+			c0,3.4,0,4.8,0,8.1c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+			c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+			c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+			c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+			c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+			c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+			c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+			c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+			c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1c0,0,0-0.1,0-0.1
+			c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5c0.2-0.2,0.7-0.3,0.4-0.7
+			c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6c0.1-0.1,0.1,0,0.2,0
+			c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2c0.2,0.2,0.4,0.4,0.7,0.5
+			c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7c1.1-0.4,1.6,0.9,2.2,1.4
+			c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3c0,0,0,0,0,0.1
+			c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C93.3,75.3,93.1,76.2,92.8,76.9z M89.5,73.6c0.1-0.1,0.3-0.6-0.1-0.5
+			C89.4,73.2,89.3,73.6,89.5,73.6z M90.5,75.1c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3C90.9,75,90.6,75,90.5,75.1z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M97.2,76.6c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2
+			c0.1,0.1,0.5,0.2,0.4,0.3c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0
+			c0.1,0.1,0.2,0.2,0.1,0.4c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4
+			c1.3-0.1,3,0.4,3.8-0.4c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5
+			c-0.3-0.7,0.2-0.8,0.2-1.6C94.3,77.1,95.7,76.6,97.2,76.6z M89.3,83.7c-0.4,0-0.5-0.3-1-0.3C88.4,83.8,89.1,83.8,89.3,83.7z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M97.2,76.6c-1.5,0-2.9,0.5-4.4,0.3
+			c0.3-0.7,0.4-1.6-0.1-2.1c-0.2-0.3-0.7-0.5-1-0.4c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9
+			c0.3,0.2,0.2-0.2,0.4-0.3c-0.6-0.6-1.1-1.8-2.2-1.4c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3
+			c-0.1-0.2,0,0.2,0,0.3c-0.2,0-0.2-0.3-0.4-0.3c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4C84.4,67.6,84,68,84,67.6
+			c-0.1-0.2-0.5,0-0.7-0.1c-0.1,0-0.1-0.1-0.2,0c0,0.3,0.2,0.6-0.1,0.6c-0.2-0.2-0.2-0.6-0.6-0.6c-0.2-0.2-0.4-0.7-0.8-0.5
+			c-0.6,0-1,0.3-1.3,0.6c0.3,0.5-0.2,0.6-0.4,0.7c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3
+			c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2
+			c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6
+			c12.2,0,24.4,0,36.6,0C97.2,68.5,97.2,71.6,97.2,76.6z"/>
+	</g>
+	<g>
+		<g>
+			<rect x="55.2" y="58" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+			<g id="tykqki_2_">
+				<g>
+					<g>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M80.2,64.6c0.2,0,0.6-0.1,0.7,0.1C80.7,64.6,80.3,64.7,80.2,64.6z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M86.5,70c0.4,0,0.2,0.4,0.1,0.5C86.3,70.6,86.4,70.2,86.5,70z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M88,72.1c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3C87.6,72,87.9,72,88,72.1z
+							"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M70.8,75c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1c0,0.5-0.8,0.6-0.5,1.2
+							c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2c0.6-0.5,1.7-0.3,2.3-0.1
+							c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9c-1.2,0.5-2.5-0.3-3-1
+							c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4c-0.6,0-1-0.3-1.3-0.5
+							c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3c-0.7,0.3-1.3-0.1-1.9,0
+							c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1c0-0.3-0.3-0.3-0.3-0.6
+							c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8c0.1,0.3,0.6,0.2,0.9,0.3
+							c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3c-0.4,0.1-0.7,0.2-1.1,0.2
+							c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C70.9,75.5,70.6,75,70.8,75z"/>
+						<path fill-rule="evenodd" fill="#9DAD3A" d="M85.4,80.4c0.4,0,0.6,0.3,1,0.3C86.1,80.8,85.4,80.8,85.4,80.4z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M88.7,71.5c0.4-0.1,0.8,0.1,1,0.4c-0.1-0.3-0.6-0.1-0.7-0.4
+							C88.8,71.4,88.9,71.6,88.7,71.5C88.7,71.5,88.7,71.5,88.7,71.5z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M84.4,65.6c0,0.3,0.2,0.3,0.2,0.5c-0.2-0.1-0.4-0.3-0.7-0.5
+							c0.3,0,0.2,0.3,0.4,0.3C84.4,65.8,84.3,65.4,84.4,65.6z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M78.5,64c0.4-0.2,0.6,0.3,0.8,0.5C79,64.4,79,64,78.5,64z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M73,68.9c0,0.4-0.2,0.5-0.4,0.7C72.6,69.3,72.8,69.1,73,68.9z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M73,70.8c-0.2,0.4,0.3,0.8-0.1,1C73.3,71.5,72.7,71.1,73,70.8z"/>
+						<path fill-rule="evenodd" fill="#9DAD3A" d="M89.8,73.9c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5c-0.1,0-0.2,0-0.3,0
+							c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4c-0.6,0.7-0.4,2.7,0.7,2.8
+							c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0c1.1,0.2,2.2,0.8,3.3,0.7
+							c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2c0,3.4,0,4.8,0,8.1
+							c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+							c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+							c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+							c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+							c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+							c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+							c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+							c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+							c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1
+							c0,0,0-0.1,0-0.1c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5
+							c0.2-0.2,0.7-0.3,0.4-0.7c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6
+							c0.1-0.1,0.1,0,0.2,0c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2
+							c0.2,0.2,0.4,0.4,0.7,0.5c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7
+							c1.1-0.4,1.6,0.9,2.2,1.4c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3
+							c0,0,0,0,0,0.1c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C90.3,72.3,90.1,73.2,89.8,73.9z M86.5,70.6
+							c0.1-0.1,0.3-0.6-0.1-0.5C86.4,70.2,86.3,70.6,86.5,70.6z M87.5,72.1c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3
+							C87.9,72,87.6,72,87.5,72.1z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M94.2,73.6c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2c0.1,0.1,0.5,0.2,0.4,0.3
+							c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0c0.1,0.1,0.2,0.2,0.1,0.4
+							c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4c1.3-0.1,3,0.4,3.8-0.4
+							c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5c-0.3-0.7,0.2-0.8,0.2-1.6
+							C91.3,74.1,92.7,73.6,94.2,73.6z M86.3,80.7c-0.4,0-0.5-0.3-1-0.3C85.4,80.8,86.1,80.8,86.3,80.7z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M94.2,73.6c-1.5,0-2.9,0.5-4.4,0.3c0.3-0.7,0.4-1.6-0.1-2.1
+							c-0.2-0.3-0.7-0.5-1-0.4c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9c0.3,0.2,0.2-0.2,0.4-0.3
+							c-0.6-0.6-1.1-1.8-2.2-1.4c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3c-0.1-0.2,0,0.2,0,0.3
+							c-0.2,0-0.2-0.3-0.4-0.3c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4C81.4,64.6,81,65,81,64.6c-0.1-0.2-0.5,0-0.7-0.1
+							c-0.1,0-0.1-0.1-0.2,0c0,0.3,0.2,0.6-0.1,0.6c-0.2-0.2-0.2-0.6-0.6-0.6c-0.2-0.2-0.4-0.7-0.8-0.5c-0.6,0-1,0.3-1.3,0.6
+							c0.3,0.5-0.2,0.6-0.4,0.7c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3
+							c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2
+							c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6
+							c12.2,0,24.4,0,36.6,0C94.2,65.5,94.2,68.6,94.2,73.6z"/>
+					</g>
+				</g>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="76,47.8 76,49.8 74,49.8 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.4193,4.4193" x1="69.5" y1="49.8" x2="36.4" y2="49.8"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="34.2,49.8 32.2,49.8 32.2,47.8 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.5613,3.5613" x1="32.2" y1="44.2" x2="32.2" y2="17.5"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="32.2,15.7 32.2,13.7 34.2,13.7 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="4.4193,4.4193" x1="38.6" y1="13.7" x2="71.8" y2="13.7"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="74,13.7 76,13.7 76,15.7 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.5613,3.5613" x1="76" y1="19.3" x2="76" y2="46"/>
+</g>
+<path fill="#FFFFFF" d="M52.9,23.1L46.8,28h-3.3c-0.6,0-1.1,0.5-1.1,1.1v4.7c0,0.6,0.5,1.2,1.1,1.2h3.6l5.8,4.7
+	c0.2,0.2,0.4,0.1,0.4-0.2V23.3C53.3,23,53.1,22.9,52.9,23.1z"/>
+<path fill="#FFFFFF" d="M57.1,23.9l-1.3,1.3c1.7,1.7,2.6,3.9,2.6,6.2c0,2.3-0.9,4.5-2.6,6.2l1.3,1.3c2-2,3.1-4.7,3.1-7.5
+	S59.1,25.9,57.1,23.9z"/>
+<path fill="#FFFFFF" d="M60.5,21l-1.3,1.3c2.4,2.5,3.7,5.7,3.7,9.2c0,3.5-1.4,6.9-3.9,9.4l1.3,1.3c2.8-2.8,4.4-6.6,4.4-10.7
+	C64.7,27.5,63.2,23.8,60.5,21z"/>
+<path fill="#33342E" d="M87.7,41.1c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,4.7,16.2,4.8,30h1
+	c0,0,5.5-13.9-1.5-32L87.7,41.1z"/>
+<path fill="#67C8F0" d="M85.4,37.6c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,7,19.7,7.1,33.4h1
+	c0,0,3.2-17.4-3.8-35.5L85.4,37.6z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/add_img.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/add_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/add_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/add_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down.png
new file mode 100644
index 0000000..a20fab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down_white.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down_white.png
new file mode 100644
index 0000000..4a1d133
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/ar_down_white.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/false.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/false.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/false.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/false.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/green_point.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/green_point.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/green_point.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/play.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/play.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/play.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/play.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/red_point.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/red_point.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/red_point.png
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/replay.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/replay.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/replay.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/replay.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/stop.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/stop.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/stop.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/stop.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/true.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/true.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/img/true.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/img/true.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html
new file mode 100644
index 0000000..7cc9040
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/index.html	
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){  
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js
new file mode 100644
index 0000000..2c1849d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/js/script.js	
@@ -0,0 +1,923 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "How many signals do you hear?", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    wgt_name: "Associate to the audio",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2>Associate to the audio</h2> </p>" +
+"<p> <h3> Match a picture to a sound</h3> </p>" +
+"<p> Drag and drop the image in the correct area. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green. </p> "+
+"<p> Reload “button” resets the exercises. </p>" +
+"<p> Enter the “Edit” mode to : </ p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> modify an exercise or to create a new one.</li> </ul>" +
+
+"<p>To create a new exercise : </p>" +
+"<ul> <li> click on “New block”,</li>" +
+"<li>insert an instruction the field dragging an audio file from your library, </li>" +
+"<li>add picture frames clicking on the “+”,</ li>" +
+"<li>drag an drop pictures from your library,</ li>" +
+"<li>set the correct image of your activity clicking on the submit button “v” on the frame. </li> </ul>" +
+"<p> To delete a frame, click on the cross button on the frame. </p>" +
+"<p> To replace an audio file, drag a new one from your library. </p>" +
+"<p> To replace a picture, drag a new one from your library. </p>" +
+
+"<p> To delete a whole block, click on the cross on the left.</p>" +
+
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer_sound","")){
+            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("as_snd_style","")){
+            changeStyle(sankore.preference("as_snd_style",""));
+            $("#style_select").val(sankore.preference("as_snd_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("as_snd_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display", "block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").css("background-color", "");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    if(window.sankore)
+        sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].mode == "edit"){          
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>").appendTo(sub_container);
+            var audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", data[i].audio);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            tmp_array = shuffle(tmp_array);
+            for(j in tmp_array){
+                tmp_array[j].draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                tmp_array[j].appendTo(imgs_container);
+            }
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        } else {
+            container = $("<div class='cont'>");
+            sub_container = $("<div class='sub_cont'>").appendTo(container);
+            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            text = $("<div class='text_cont'>").appendTo(sub_container);
+            audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            source = $("<source/>").attr("src", data[i].audio);
+            audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(j in data[i].imgs){
+                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                img_block.draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                if(data[i].imgs[j].cont == "cont")
+                    img_block.appendTo(imgs_container);
+                else{
+                    imgs_answers.empty();
+                    img_block.appendTo(imgs_answers);
+                    if(data[i].imgs[j].value == "1")
+                        imgs_answers.addClass("imgs_answers_green");
+                    else
+                        imgs_answers.addClass("imgs_answers_red");
+                }
+            }
+            
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "objects/beep.wav");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img4);
+    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).find("input").val();
+    $(event.target).find(".img_block").each(function(){
+        str += $(this).find("input").val() + "*";
+    });
+    if(str == right_str)
+        $(event.target).css("background-color","#9f9");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    audio_block.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");    
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){       
+            var audio_block = $(obj);
+            $(obj).find("audio").remove();
+            audio_block.find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/index.html
new file mode 100644
index 0000000..29a5baf
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..1b3c594
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js	
@@ -0,0 +1,913 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    short_desc: "Combien de signaux entendez-vous?", 
+    add: "Nouveau bloc",
+    enter: "Saisir votre description ici ...",
+    wgt_name: "Associer aux sons",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Associer aux sons</h2></p>"+
+    "<p><h3>Faire correspondre une image à un son.</h3></p>"+
+
+    "<p>L’activité s’effectue par un glisser-déposer de l’image dans la zone délimitée. Si le résultat est incorrect, la zone se colore en rouge. Si le résultat est correct, la zone se colore en vert.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet : </p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+
+"<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis </p>"+
+"<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir votre description ici ...”,"+
+"<li>insérez un son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque,</li>"+
+"<li>ajoutez des zones image(s) en cliquant sur le gros signe + en dessous,</li>"+
+"<li>insérez des images par glisser-déposer des images à partir de votre bibliothèque,</li>"+
+"<li>définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée.</li></ul>"+
+"<p>Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+ 
+"<p>Pour remplacer un son, glissez-déposez simplement un nouveau son.</p>"+
+
+
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer_sound","")){
+            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("as_snd_style","")){
+            changeStyle(sankore.preference("as_snd_style",""));
+            $("#style_select").val(sankore.preference("as_snd_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("as_snd_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").css("background-color", "");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){      
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].mode == "edit"){          
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>").appendTo(sub_container);
+            var audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src","../../" + data[i].audio);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            tmp_array = shuffle(tmp_array);
+            for(j in tmp_array){
+                tmp_array[j].draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                tmp_array[j].appendTo(imgs_container);
+            }
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        } else {
+            container = $("<div class='cont'>");
+            sub_container = $("<div class='sub_cont'>").appendTo(container);
+            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            text = $("<div class='text_cont'>").appendTo(sub_container);
+            audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            source = $("<source/>").attr("src","../../" + data[i].audio);
+            audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(j in data[i].imgs){
+                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                img_block.draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                if(data[i].imgs[j].cont == "cont")
+                    img_block.appendTo(imgs_container);
+                else{
+                    imgs_answers.empty();
+                    img_block.appendTo(imgs_answers);
+                    if(data[i].imgs[j].value == "1")
+                        imgs_answers.addClass("imgs_answers_green");
+                    else
+                        imgs_answers.addClass("imgs_answers_red");
+                }
+            }
+            
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/beep.wav");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    audio_block.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");  
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src","../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){
+            var audio_block = $(obj);
+            $(obj).find("audio").remove();
+            audio_block.find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/index.html
new file mode 100644
index 0000000..8defd89
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..911c3af
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/locales/ru/js/script.js	
@@ -0,0 +1,887 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    short_desc: "Сколько сигналов вы слышите?", 
+    add: "Новый блок",
+    enter: "Введите описание ...",
+    wgt_name: "Что звучит",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("associer_sound","")){
+            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("as_snd_style","")){
+            changeStyle(sankore.preference("as_snd_style",""));
+            $("#style_select").val(sankore.preference("as_snd_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("as_snd_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display", "none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".true_img").remove();
+                            $(this).find(".false_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop")
+                            .addClass("img_gray");
+                        } else 
+                            $(this).remove();
+                    });
+                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    }
+                    
+                    img_answers.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if($(this).children()[0].tagName == "IMG")
+                                    $(this).children().remove();
+                                else
+                                    $(ui.draggable).parent().append($(this).children());
+                                $(this).append($(ui.draggable));  
+                                if($(this).children().length == 1){                
+                                    if($(this).children().find("input").val() == "1")
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_green");
+                                    else
+                                        $(this).removeClass("imgs_answers_gray")
+                                        .removeClass("imgs_answers_green")
+                                        .addClass("imgs_answers_red");
+                                }                    
+                            }
+                        }
+                    });
+                    
+                    container.find(".imgs_cont").droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_cont = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                                    var answers = "";
+                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                        answers += $(this).find("input").val();
+                                    });
+                                    if(tmp_cont.children()[0].tagName == "IMG")
+                                        tmp_cont.removeClass("imgs_answers_green")
+                                        .removeClass("imgs_answers_red")
+                                        .addClass("imgs_answers_gray");
+                                    else
+                                    if(tmp_cont.children().length == 1){                
+                                        if(tmp_cont.children().find("input").val() == "1")
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_red")
+                                            .addClass("imgs_answers_green");
+                                        else
+                                            tmp_cont.removeClass("imgs_answers_gray")
+                                            .removeClass("imgs_answers_green")
+                                            .addClass("imgs_answers_red");
+                                    }    
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    container.find(".imgs_answers").find(".img_block").each(function(){
+                        $(this).appendTo(container.find(".imgs_cont"))
+                    });
+                    container.find(".imgs_answers").remove();
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").css("background-color", "");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        .css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input").val() == "1"){
+                            $("<div class='false_img'>").appendTo($(this));
+                        }
+                        else{
+                            $("<div class='true_img'>").appendTo($(this));
+                        }
+                    });
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){      
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.mode = "edit";
+            cont_obj.imgs = [];
+            $(this).find(".img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.mode = "display";
+            cont_obj.imgs = [];
+            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
+                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
+                var img_obj = new Object();
+                img_obj.value = tmp_cont.find("input").val();
+                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
+                img_obj.ht = tmp_cont.find("img").height();
+                img_obj.wd = tmp_cont.find("img").width();
+                img_obj.cont = "answers";
+                cont_obj.imgs.push(img_obj);
+            }
+            $(this).find(".imgs_cont .img_block").each(function(){
+                var img_obj = new Object();
+                img_obj.value = $(this).find("input").val();
+                img_obj.link = $(this).find("img").attr("src").replace("../../","");
+                img_obj.ht = $(this).find("img").height();
+                img_obj.wd = $(this).find("img").width();
+                img_obj.cont = "cont";
+                cont_obj.imgs.push(img_obj);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].mode == "edit"){          
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>").appendTo(sub_container);
+            var audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src","../../" + data[i].audio);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            tmp_array = shuffle(tmp_array);
+            for(j in tmp_array){
+                tmp_array[j].draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                tmp_array[j].appendTo(imgs_container);
+            }
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        } else {
+            container = $("<div class='cont'>");
+            sub_container = $("<div class='sub_cont'>").appendTo(container);
+            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
+            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
+            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            text = $("<div class='text_cont'>").appendTo(sub_container);
+            audio_block = $("<div class='audio_block'>").appendTo(text);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            source = $("<source/>").attr("src","../../" + data[i].audio);
+            audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden'/>").appendTo(audio_block);
+            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        
+            for(j in data[i].imgs){
+                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
+                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                img_block.draggable({
+                    helper:'clone',
+                    zIndex:100,
+                    appendTo: '#data'
+                });
+                if(data[i].imgs[j].cont == "cont")
+                    img_block.appendTo(imgs_container);
+                else{
+                    imgs_answers.empty();
+                    img_block.appendTo(imgs_answers);
+                    if(data[i].imgs[j].value == "1")
+                        imgs_answers.addClass("imgs_answers_green");
+                    else
+                        imgs_answers.addClass("imgs_answers_red");
+                }
+            }
+            
+            imgs_answers.droppable({
+                hoverClass: 'dropHere',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if($(this).children()[0].tagName == "IMG")
+                            $(this).children().remove();
+                        else
+                            $(ui.draggable).parent().append($(this).children());
+                        $(this).append($(ui.draggable));  
+                        if($(this).children().length == 1){                
+                            if($(this).children().find("input").val() == "1")
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_green");
+                            else
+                                $(this).removeClass("imgs_answers_gray")
+                                .removeClass("imgs_answers_green")
+                                .addClass("imgs_answers_red");
+                        }                    
+                    }
+                }
+            });
+            imgs_container.droppable({
+                hoverClass: 'dropBack',
+                drop: function(event, ui) {
+                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                        if(this != $(ui.draggable).parent()[0]){
+                            var tmp_cont = $(ui.draggable).parent();
+                            $(this).append($(ui.draggable));
+                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                            var answers = "";
+                            $(this).parent().find(".imgs_answers .img_block").each(function(){
+                                answers += $(this).find("input").val();
+                            });
+                            if(tmp_cont.children()[0].tagName == "IMG")
+                                tmp_cont.removeClass("imgs_answers_green")
+                                .removeClass("imgs_answers_red")
+                                .addClass("imgs_answers_gray");
+                            else
+                            if(tmp_cont.children().length == 1){                
+                                if(tmp_cont.children().find("input").val() == "1")
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_red")
+                                    .addClass("imgs_answers_green");
+                                else
+                                    tmp_cont.removeClass("imgs_answers_gray")
+                                    .removeClass("imgs_answers_green")
+                                    .addClass("imgs_answers_red");
+                            }    
+                        }
+                    }
+                }
+            }); 
+            container.appendTo("#data");
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/beep.wav");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
+    $("<input type='hidden' value='0'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(imgs_container);
+    }
+    imgs_answers.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if($(this).children()[0].tagName == "IMG")
+                    $(this).children().remove();
+                else
+                    $(ui.draggable).parent().append($(this).children());
+                $(this).append($(ui.draggable));  
+                if($(this).children().length == 1){                
+                    if($(this).children().find("input").val() == "1")
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_green");
+                    else
+                        $(this).removeClass("imgs_answers_gray")
+                        .removeClass("imgs_answers_green")
+                        .addClass("imgs_answers_red");
+                }                    
+            }
+        }
+    });
+    imgs_container.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_cont = $(ui.draggable).parent();
+                    $(this).append($(ui.draggable));
+                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
+                    var answers = "";
+                    $(this).parent().find(".imgs_answers .img_block").each(function(){
+                        answers += $(this).find("input").val();
+                    });
+                    if(tmp_cont.children()[0].tagName == "IMG")
+                        tmp_cont.removeClass("imgs_answers_green")
+                        .removeClass("imgs_answers_red")
+                        .addClass("imgs_answers_gray");
+                    else
+                    if(tmp_cont.children().length == 1){                
+                        if(tmp_cont.children().find("input").val() == "1")
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_red")
+                            .addClass("imgs_answers_green");
+                        else
+                            tmp_cont.removeClass("imgs_answers_gray")
+                            .removeClass("imgs_answers_green")
+                            .addClass("imgs_answers_red");
+                    }    
+                }
+            }
+        }
+    });
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    audio_block.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");  
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='true_img'>").appendTo(img_block);
+    $("<input type='hidden' value='0'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src","../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){
+            var audio_block = $(obj);
+            $(obj).find("audio").remove();
+            audio_block.find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/0.gif b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/0.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/0.gif
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/0.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/1.gif b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/1.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/1.gif
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/1.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/2.gif b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/2.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/2.gif
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/2.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/3.gif b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/3.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/3.gif
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/3.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/4.gif b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/4.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/4.gif
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/4.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/beep.wav b/Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/beep.wav
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/objects/beep.wav
rename to Sankore-3.1/resources/library/interactivities/Ass sons.wgt/objects/beep.wav
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Balance.wgt/config.xml
new file mode 100644
index 0000000..65bb063
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/balance" 
+        version="1.0"
+        width="800"
+        height="600" 
+        ub:resizable="false">     
+   
+		<name>La balance</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description></description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/balance.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/balance.png
new file mode 100644
index 0000000..18bbd82
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/balance.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/delete.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/delete.png
new file mode 100644
index 0000000..c896c1a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/delete.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/graduations.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/graduations.png
new file mode 100644
index 0000000..5756880
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/graduations.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pivot.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pivot.png
new file mode 100644
index 0000000..72e8e26
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/pivot.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scale.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scale.png
new file mode 100644
index 0000000..b201a38
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scale.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scales.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scales.png
new file mode 100644
index 0000000..cb25be6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/scales.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight-add.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight-add.png
new file mode 100644
index 0000000..329d496
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight-add.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight.png
new file mode 100644
index 0000000..5970846
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/images/weight.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/main.css
new file mode 100644
index 0000000..b5343c5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/main.css
@@ -0,0 +1,278 @@
+#scene {
+	position: relative;
+}
+
+#scene > div {
+
+}
+
+#scalesCell {
+	display: table;
+}
+#scalesCell > div {
+	display: table-cell;
+	vertical-align: middle;
+}
+
+#scalesWrapper {
+	padding: 0px 100px 100px;
+	position: relative;
+}
+
+.onEdit #scalesWrapper {
+	padding-top: 100px;
+}
+
+#scales {
+	position: relative;
+}
+
+.scale {
+	position: absolute;
+	width: 125px;
+	height: 0;
+	padding: 90px 20px 35px;
+	top: 72px;
+	background: url(images/scale.png) no-repeat center bottom;
+}
+
+#tray, .scale {
+	/*
+	-webkit-transition: -webkit-transform 0.25s ease-in;
+	-moz-transition: -moz-transform 0.25s ease-in;
+	-ms-transition: -ms-transform 0.25s ease-in;
+	transition: transform 0.25s ease-in;
+	*/
+}
+
+#leftScale {
+	left: 0;
+	margin-left: -75px;
+}
+
+#rightScale {
+	right: 0;
+	margin-right: -75px;	
+}
+
+#tray {
+	position: relative;
+	background-color: red;
+	top: 50%;
+	margin-top: -1px;
+	width: 225px;
+	height: 144px;
+	background: url("images/scales.png") no-repeat center;
+}
+
+#graduations {
+	width: 50px;
+	height: 15px;
+	position: absolute;
+	top: 0;
+	left: 50%;
+	margin-left: -25px;
+	background: url(images/graduations.png) center no-repeat;
+}
+
+#pivot {
+	position: absolute;
+	width: 40px;
+	height: 40px;
+	left: 93px;
+	top: 52px;
+	background: url(images/pivot.png) center no-repeat;
+}
+
+#objects {
+	position: relative;
+	display: inline-block;
+	padding: 0 5px 0 10px; 
+}
+
+#objects .object {
+	display: inline-block;
+	vertical-align: top;
+}
+
+#objects button[role="add"] {
+	display: none;
+
+	position: relative;
+	overflow: hidden;
+
+	text-indent: -100px;
+
+	width: 34px;
+	height: 34px;
+
+	margin-left: 10px;
+
+	cursor: pointer;
+
+	border-radius: 2px;
+	border: 1px solid rgba(255,255,255, 0.15);
+	background: rgba(0,0,0, 0.15) url(images/weight-add.png) center no-repeat;
+}
+
+.onEdit #objects button[role="add"] {
+	display: inline-block;
+}
+
+#leftScale .object {
+	position: absolute;
+	bottom: 0;
+}
+
+.object input {
+	border: none;
+	width: 100%;
+	padding: 0;
+	margin: 0;
+	
+	text-align: center;
+	font-size: 12px;
+
+	color: #000;
+	border-radius: 2px;
+	background-color: #FFF;
+	box-shadow: 0 1px 2px rgba(0,0,0, 0.4);
+}
+
+.object .tools {
+	display: none;
+	position: absolute;
+	top: -13px;
+	width: 100%;
+	text-align: center;
+}
+
+.onEdit button[role="remove"] {
+	display: inline-block;
+	position: relative;
+	overflow: hidden;
+	cursor: pointer;
+	width: 11px;
+	height: 11px;
+	text-indent: -100px;
+	border: none;
+	margin: 0;
+	outline: 0;
+	padding: 0;
+	background: transparent url(images/delete.png) center no-repeat;
+}
+
+.onEdit .object .tools {
+	display: block;
+}
+
+.object input:disabled {
+	color: #CCC;
+	background: none;
+	box-shadow: none;
+}
+
+.object input:disabled::-webkit-outer-spin-button,
+.object input:disabled::-webkit-inner-spin-button {
+    -webkit-appearance: none;
+    margin: 0;
+}
+
+#objects .desk {
+	position: absolute;
+	width: 100%;
+	height: 20px;
+	top: 36px;
+	border-radius: 4px;
+	box-shadow: 0 3px 0 #999, 0 1px 2px rgba(0,0,0, .65);
+	background-color: #CCC;
+    background-image: -moz-linear-gradient(90deg, #FFF 0%, #CCC 100%);
+    background-image: -o-linear-gradient(90deg, #FFF 0%, #CCC 100%);
+    background-image: -webkit-linear-gradient(90deg, #FFF 0%, #CCC 100%);
+    background-image: linear-gradient(90deg, #FFF 0%, #CCC 100%);
+    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#CCC', GradientType=0);
+}
+
+#rightScale .weight {
+	position: absolute !important;
+}
+
+#weights {
+	display: none;
+	position: absolute;
+	top: 20px;
+	right: 0px;
+	width: 160px;
+}
+
+.onEdit #weights {
+	display: block;
+}
+
+#weights .weight {
+	display: inline-block;
+}
+
+.weight {
+	position: relative;
+	
+	width: 32px;
+	height: 35px;
+	
+	margin-left: 10px;
+	margin-bottom: 30px;
+
+	font-size: 12px;
+	text-align: center;
+	color: #CCC;
+	text-shadow: 0 -1px 0 #000;
+}
+
+.weight .unit {
+	font-size: 10px;
+}
+
+.weight .amount {
+	height: 100%;
+	padding: 4px 2px 0;
+	border-radius: 4px;
+	border: 1px solid rgba(255,255,255, 0.15);
+	background-color: rgba(0,0,0, 0.15);
+}
+
+.weight > div.bg {
+	position: absolute;
+	left: -2px;
+	bottom: -18px;
+	width: 35px;
+	height: 32px;
+	background: url(images/weight.png) no-repeat center bottom;
+}
+
+.weight.w500 {
+	
+}
+
+.weight.w200 {
+	
+}
+
+.weight.w100 {
+	
+}
+
+.weight.w50 {
+	
+}
+
+.weight.w20 {
+	
+}
+
+.weight.w10 {
+	
+}
+
+.onOut .amount {
+	background-color: rgba(255,0,0, 0.15);
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Balance.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..566af5b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages.properties
@@ -0,0 +1,13 @@
+fr.njin.i18n.document.title = Scale
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.balance.parameters.label.remove = Remove
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..a3aa871
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,13 @@
+fr.njin.i18n.document.title = Balance
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.balance.parameters.label.remove = Enlever
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Balance.wgt/icon.png
new file mode 100644
index 0000000..fea858a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Balance.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Balance.wgt/index.html
new file mode 100644
index 0000000..03c9ae5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/index.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+	<link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-css-transform.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-ui-1.8.17.custom.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters"></div>
+				<div id="scene">
+					<div id="scalesCell" class="">
+						<div id="scalesWrapper" class="">
+							<div id="scales" class="">
+								<div id="graduations"></div>
+								<div id="pivot"></div>
+								<div id="tray"></div>
+								<div id="leftScale" class="scale"></div>
+								<div id="rightScale" class="scale"></div>
+							</div>
+							<div id="weights"></div>
+						</div>
+					</div>
+					
+					<div id="objects" class="">
+						<div class="desk"></div>
+						<button role="add">+</button>
+					</div>
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help-template.js
new file mode 100644
index 0000000..8746785
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help-template.js
@@ -0,0 +1,18 @@
+<h3>Scale</h3>
+<h4>Equivalent mass, mental calculation</h4>
+ 
+<p> Place weights on the left pan to find the equivalent mass on the right tray. </p>
+<p> To add a weight on the left pan, drag and drop it on the pan. </p>
+ 
+<p> Inventory the possibilities on the board or test directly on the scale. </p>
+<p> "Reload" button removes the weight shown on the left pan. </p>
+ 
+<p>Enter the "Edit" mode to : </p>
+<ul> <li> choose the theme of the App : pad, slate, or none (by default : pad), </li>
+<li>determine the mass on the right pan,</li>
+<li> determine weights you want to use for the left pane.</li> </ul>
+
+<p> To move a weight in the right tray, drag and drop it on the pane.</p>
+<p> To add weight, click the "+" button and enter a mass (don't use decimal numbers). </p>
+<p> weights have a field number. Click the box and enter the desired digits. </p>
+<p>"Display" button comes back to the activity.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..ba21772
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/help_fr-template.js
@@ -0,0 +1,24 @@
+<h3>Balance</h3>
+<h4>Equivalence de masses</h4>
+ 
+<p>Les différents poids se posent sur les deux plateaux afin de trouver l'équilibre de la balance. Une série de poids doivent être combinés dans le plateau de gauche pour retrouver la masse présente dans le plateau de droite.</p>
+<p>Pour ajouter un poids sur le plateau de gauche, il faut faire un glisser-déposer du poids sur le plateau.</p>
+ 
+<p>Les hypothèses peuvent être saisies sur le tableau (en dehors de l'interactivité) ou testées directement sur la balance.</p>
+
+ 
+<p>Le bouton “Recharger” retire les poids qui figurent sur le plateau de gauche.</p>
+ 
+<p>Le bouton "Modifier" vous permet de :</p>
+<ul><li>choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+<li>déterminer la masse présente dans le plateau de droite,</li>
+<li>déterminer le nombre de poids que vous voulez utiliser pour le plateau de gauche,</li>
+<li>déterminer la masse des poids du plateau de gauche.</li></ul>
+
+<p>Pour déplacer un poids dans le plateau de droite, il faut faire un glisser-déposer du poids situé en haut à droite vers le plateau.</p>
+
+<p>Pour ajouter un poids, cliquez sur le bouton “+” et saisissez une masse.</p>
+<p>Les poids utilisables pour le plateau de gauche possèdent par défaut un champ nombre. Cliquez sur la zone et saisissez le nombre entier souhaité.</p>
+
+
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-css-transform.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-css-transform.js
new file mode 100644
index 0000000..241a722
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-css-transform.js
@@ -0,0 +1,112 @@
+(function ($) {
+    // Monkey patch jQuery 1.3.1+ css() method to support CSS 'transform'
+    // property uniformly across Safari/Chrome/Webkit, Firefox 3.5+, IE 9+, and Opera 11+.
+    // 2009-2011 Zachary Johnson www.zachstronaut.com
+    // Updated 2011.05.04 (May the fourth be with you!)
+    function getTransformProperty(element)
+    {
+        // Try transform first for forward compatibility
+        // In some versions of IE9, it is critical for msTransform to be in
+        // this list before MozTranform.
+        var properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'];
+        var p;
+        while (p = properties.shift())
+        {
+            if (typeof element.style[p] != 'undefined')
+            {
+                return p;
+            }
+        }
+        
+        // Default to transform also
+        return 'transform';
+    }
+    
+    var _propsObj = null;
+    
+    var proxied = $.fn.css;
+    $.fn.css = function (arg, val)
+    {
+        // Temporary solution for current 1.6.x incompatibility, while
+        // preserving 1.3.x compatibility, until I can rewrite using CSS Hooks
+        if (_propsObj === null)
+        {
+            if (typeof $.cssProps != 'undefined')
+            {
+                _propsObj = $.cssProps;
+            }
+            else if (typeof $.props != 'undefined')
+            {
+                _propsObj = $.props;
+            }
+            else
+            {
+                _propsObj = {}
+            }
+        }
+        
+        // Find the correct browser specific property and setup the mapping using
+        // $.props which is used internally by jQuery.attr() when setting CSS
+        // properties via either the css(name, value) or css(properties) method.
+        // The problem with doing this once outside of css() method is that you
+        // need a DOM node to find the right CSS property, and there is some risk
+        // that somebody would call the css() method before body has loaded or any
+        // DOM-is-ready events have fired.
+        if
+        (
+            typeof _propsObj['transform'] == 'undefined'
+            &&
+            (
+                arg == 'transform'
+                ||
+                (
+                    typeof arg == 'object'
+                    && typeof arg['transform'] != 'undefined'
+                )
+            )
+        )
+        {
+            _propsObj['transform'] = getTransformProperty(this.get(0));
+        }
+        
+        // We force the property mapping here because jQuery.attr() does
+        // property mapping with jQuery.props when setting a CSS property,
+        // but curCSS() does *not* do property mapping when *getting* a
+        // CSS property.  (It probably should since it manually does it
+        // for 'float' now anyway... but that'd require more testing.)
+        //
+        // But, only do the forced mapping if the correct CSS property
+        // is not 'transform' and is something else.
+        if (_propsObj['transform'] != 'transform')
+        {
+            // Call in form of css('transform' ...)
+            if (arg == 'transform')
+            {
+                arg = _propsObj['transform'];
+                
+                // User wants to GET the transform CSS, and in jQuery 1.4.3
+                // calls to css() for transforms return a matrix rather than
+                // the actual string specified by the user... avoid that
+                // behavior and return the string by calling jQuery.style()
+                // directly
+                if (typeof val == 'undefined' && jQuery.style)
+                {
+                    return jQuery.style(this.get(0), arg);
+                }
+            }
+
+            // Call in form of css({'transform': ...})
+            else if
+            (
+                typeof arg == 'object'
+                && typeof arg['transform'] != 'undefined'
+            )
+            {
+                arg[_propsObj['transform']] = arg['transform'];
+                delete arg['transform'];
+            }
+        }
+        
+        return proxied.apply(this, arguments);
+    };
+})(jQuery);
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
new file mode 100644
index 0000000..56f6b38
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
@@ -0,0 +1,253 @@
+/*!
+ * 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 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
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/main.js
new file mode 100644
index 0000000..e56b66e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/main.js
@@ -0,0 +1,334 @@
+var weighValues = [500,200,100,50,20,10];
+
+function onTemplateLoadedCallback(app) {
+	$.each(weighValues, function(){
+		$("#weights").append($(Mustache.render(weightTemplate, {weight: this})));
+	});
+	
+	$("#weights > .weight").draggable({helper: "clone"});	
+
+	$("#leftScale").droppable({
+		accept: ".object",
+		drop: function(event, ui) {
+			if($(ui.draggable).hasClass("inScale"))
+				return;
+
+			var object = $(ui.draggable).clone();
+			object.data("weight", $(ui.draggable).data("weight"));
+
+			object.addClass("inScale");
+			$("#leftScale").append(object);
+			
+			placeObject($("#leftScale"), object);
+
+			refreshScales();
+
+			object.draggable({
+				stop: function(event, ui) {
+					if($(ui.helper).hasClass("onOut")) {
+						$(ui.helper).remove();
+						refreshScales();
+					}
+				}
+			});
+		},
+		out: function(event, ui) {
+			$(ui.draggable).addClass("onOut");
+		},
+		over: function(event, ui) {
+			$(ui.draggable).removeClass("onOut");
+		}
+	});
+
+	$("#rightScale").droppable({
+		accept: ".weight.right",
+		drop: function(event, ui) {
+			if($(ui.draggable).hasClass("inScale"))
+				return;
+			var object = createWeight(app, $(ui.draggable).data("weight"));
+			
+			$("#rightScale").append(object);
+
+			placeObject($("#rightScale"), object);
+
+			refreshScales();			
+		},
+		out: function(event, ui) {
+			$(ui.draggable).addClass("onOut");
+		},
+		over: function(event, ui) {
+			$(ui.draggable).removeClass("onOut");
+		}
+	});
+
+	$("#objects button[role=add]").click(function(){
+		var object = createObject(app);
+		$(this).before(object);
+	});
+}
+
+function addObjectWithId(app, id) {
+	var objects = app.parameters.value("Objects");
+	app.parameters.value("Objects", objects === undefined ? id : objects+","+id);
+}
+
+function removeObjectWithId(app, id) {
+	var objects = app.parameters.value("Objects");
+	objects = objects.split(",");
+	for(var i=0 ; i<objects.length ; i++) {
+		if(id === objects[i]) {
+			objects.splice(i, 1);
+			break;
+		}
+	}
+	app.parameters.value("Objects", objects.join(","));	
+}
+
+function addWeightWithId(app, id) {
+	var objects = app.parameters.value("Weights");
+	app.parameters.value("Weights", objects === undefined ? id : objects+","+id);
+}
+
+function removeWeightWithId(app, id) {
+	var objects = app.parameters.value("Weights");
+	objects = objects.split(",");
+	for(var i=0 ; i<objects.length ; i++) {
+		if(id === objects[i]) {
+			objects.splice(i, 1);
+			break;
+		}
+	}
+	app.parameters.value("Weights", objects.join(","));	
+}
+
+function objectForGUID(app, guid) {
+	window.object = guid;
+	var objectUi = $(Mustache.render(objectTemplate, window));
+	var weight = getWeightFor(app.parameters, guid);
+	
+	if(!app.onEdit && (weight == undefined || $.trim(weight) == ""))
+		weight = weighValues[Math.floor(Math.random()*weighValues.length)];
+	
+	if(weight !== undefined) {
+		objectUi.data("weight", weight);
+		objectUi.find("input[name=weight]").val(weight);
+	}
+	if(app.onEdit) {
+		objectUi.find("input[name=weight]").change(function(event) {
+			var o = objectUi;
+			o.data("weight", $(this).val());
+			setWeightFor(app.parameters, o.attr("id"), $(this).val());
+		});
+		objectUi.find("button[role=remove]").click(function(){
+			removeObjectWithId(app, guid);	
+			objectUi.remove();
+		});
+		objectUi.find("button[role=duplicate]").click(function(){
+			$("#objects button[role=add]").before(createObject(app, guid));	
+		});
+	}else{
+		objectUi.find("input[name=weight]").attr("disabled","disabled");
+		objectUi.draggable({
+			containment: "#scene",
+			scroll: false,
+			helper: "clone"
+		});
+	}
+	return objectUi;
+}
+
+function weightForGUID(app, guid) {
+	var weight = getWeightValueFor(app.parameters, guid);
+	window.object = guid;
+	window.weight = weight;
+	var objectUi = $(Mustache.render(weightTemplate, window));
+	var position = getPositionFor(app.parameters, guid);
+	objectUi.css("left", position.left);
+	objectUi.css("top", position.top);
+	objectUi.addClass("inScale");
+	if(app.onEdit) {
+		objectUi.draggable({
+			stop: function(event, ui) {
+				if($(ui.helper).hasClass("onOut")) {
+					removeWeightWithId(app, $(ui.helper).attr('id'));
+					$(ui.helper).remove();
+					refreshScales();
+				}else{
+					var id = ui.helper.attr("id");
+					var left = ui.position.left ;
+					var top = ui.position.top;
+					log(left+"-"+top);
+					setPositionFor(app.parameters, id, ui.position);
+				}
+			}
+		});
+	}else{
+	}
+	return objectUi;
+}
+
+function placeObject($container, $object) {
+
+	var width = $object.outerHeight();
+	var height = $object.outerHeight()+15;
+
+	var count = $container.children().size() - 1;
+
+	var left = width * (count % 4) + 5;
+	var bottom = height * (Math.floor(count / 4)) + 12;
+	
+	log("Place at ["+left+" , "+bottom+"]");
+	$object.css("left", left+"px").css("bottom", bottom+"px");
+}
+
+function createObject(app, duplicateID) {
+	var id = app.utils.guid();
+	addObjectWithId(app, id);
+	
+	//TODO Duplication : Recupérer les images du dupliqué
+		
+	return objectForGUID(app, id);
+}
+
+function createWeight(app, weight) {
+	var id = app.utils.guid();
+	addWeightWithId(app, id);	
+	setWeightValueFor(app.parameters, id, weight);
+	return weightForGUID(app, id);
+}
+
+function getWeightFor(parameters, id) {
+ 	return parameters.value("Object#"+id+"Weight");
+}
+
+function setWeightFor(parameters, id, weight) {
+	parameters.value("Object#"+id+"Weight", weight);
+}
+
+function getWeightValueFor(parameters, id) {
+ 	return parameters.value("Weight#"+id+"Weight");
+}
+
+function setWeightValueFor(parameters, id, weight) {
+	parameters.value("Weight#"+id+"Weight", weight);
+}
+
+function getPositionFor(parameters, id) {
+	var left = parameters.value("Weight#"+id+"left");
+	var top = parameters.value("Weight#"+id+"top");
+	return {left: parseInt(left), top: parseInt(top)};
+}
+
+function setPositionFor(parameters, id, position) {
+	parameters.value("Weight#"+id+"left", position.left);
+	parameters.value("Weight#"+id+"top", position.top);
+}
+
+function reloadApp(app) {
+	$("#leftScale, #rightScale").empty();
+	$("#objects > .object").remove();
+	
+	refreshScales();
+	
+	var objects = app.parameters.value("Objects");
+	if(objects === undefined) {
+		var object = createObject(app);	
+		setWeightFor(app.parameters, object.attr("id"), 5);
+		objects = app.parameters.value("Objects")
+	}
+	if(objects !== undefined) {
+		objects = objects.split(",");
+		for(var i=0 ; i<objects.length ; i++) {
+			var id = objects[i];
+			var object = objectForGUID(app, id);
+			$("#objects button[role=add]").before(object);
+		}
+	}
+	
+	var weights = app.parameters.value("Weights");
+	if(weights === undefined) {
+		createWeight(app, 20);
+		weights = app.parameters.value("Weights");
+	}
+	if(weights !== undefined) {
+		weights = weights.split(",");
+		for(var i=0 ; i<weights.length ; i++) {
+			var id = weights[i];
+			var weight = weightForGUID(app, id);
+			$("#rightScale").append(weight);
+			placeObject($("#rightScale"), weight);
+		}
+	}
+	
+	refreshScales();
+	
+	if(app.onEdit) {
+		
+	}
+}
+
+function refreshScales() {
+	var leftWeight = getLeftWeight();
+	var rightWeight = getRightWeight();
+	var dWeight = rightWeight - leftWeight;
+	var angle = maxAngle * dWeight / maxWeight;
+	angle = angle >= 0 ? Math.min(maxAngle, angle) : Math.max(-maxAngle, angle);
+	var rad = angle * Math.PI / 180;
+
+	var w = $("#tray").width()/2;
+	var dx = w - (w * Math.cos(rad));
+	var dy = -(w * Math.sin(rad));
+
+	log("Rotate to "+angle);
+	log("Tanslate to ["+dx+" , "+dy+"]");
+
+	var rotate = "rotate("+angle+"deg)";
+	var leftTranslate = "translate("+dx+"px, "+dy+"px)";
+	var rightTranslate = "translate("+(-dx)+"px, "+(-dy)+"px)";
+	
+	$("#tray").css("transform", rotate);
+	$("#leftScale").css("transform", leftTranslate);
+	$("#rightScale").css("transform", rightTranslate);
+}
+
+function getWeightForSelector(selector) {
+	var weight = 0;
+	$(selector).each(function(){
+		var temp = $(this).data("weight");
+		if(temp !== undefined)
+			weight += parseInt(temp);
+	});
+	return weight;
+}
+
+function getLeftWeight() {
+	return getWeightForSelector("#leftScale > div");
+}
+
+function getRightWeight() {
+	return getWeightForSelector("#rightScale > div");
+}
+
+function reloadCallback(parameter) {
+	if(parameter === undefined)
+		reloadApp(this);
+}
+
+var maxAngle;
+var maxWeight;
+
+$(document).ready(function(){
+	var w = $("#scales").width();
+	var h = $("#scales").height();
+	maxAngle = 17;//Math.atan((h/2)/(w/2)) * (180/Math.PI);
+	maxWeight = 10;
+	
+	log(w+"-"+h+":"+maxAngle);
+	
+	var callbacks = {
+		onTemplatesLoaded: onTemplateLoadedCallback,
+		onEdit: reloadApp,
+		onView: reloadApp
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/templates.js
new file mode 100644
index 0000000..e18176e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Balance.wgt/js/templates.js
@@ -0,0 +1,30 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+				
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>';
+
+var objectTemplate = 
+			'<div id="{{object}}" class="object weight">'+
+				'<div class="tools">'+
+					'<button role="remove">{{fr.njin.i18n.balance.parameters.label.remove}}</button>'+
+				'</div>'+
+				'<div class="amount"><input type="text" name="weight"></div><div class="bg"></div>'+
+			'</div>';
+			
+var weightTemplate = 
+			'<div id="{{object}}" class="weight right w{{weight}}" data-weight="{{weight}}"><div class="amount">{{weight}}</div><div class="bg"></div></div>';						
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/config.xml
deleted file mode 100644
index 0d81a76..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/webbrowser" 
-        version="1.1"
-        width="700"
-        height="400" 
-		ub:resizable="false">   
-		     
-  		<name>Choisir</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Choisir widget</description> 
-
- 		<content src="index.html"/> 
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/css/basic.css
deleted file mode 100644
index a01e8aa..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/css/basic.css
+++ /dev/null
@@ -1,506 +0,0 @@
-body{
-    width: 100%;
-    padding: 0;
-    margin: 0 auto;
-    height: auto;
-    background-color: #666;
-    overflow: hidden;
-}
-
-.toggleButton, .addButton{
-    width: 20px;
-    height: 28px;
-    border: none;
-    background-image: url(../images/greySquare.png);
-    font-weight: bold;
-    font-family: Verdana;
-    color: yellow;
-    cursor: pointer;
-    -webkit-border-top-left-radius: 5px;
-    -webkit-border-bottom-left-radius: 5px;
-    border-top-left-radius: 5px;
-    border-bottom-left-radius: 5px;
-}
-
-.buttonDiv, .addButtonDiv{
-    position: fixed;
-    float: right;
-    z-index: 1;
-}
-
-.addButtonDiv{
-    display: none;
-}
-
-.leftDiv{
-    width: 50%;
-    float: left;
-    background-color: black;
-    -webkit-border-top-left-radius: 3px;
-    -webkit-border-bottom-left-radius: 3px;
-    border-top-left-radius: 3px;
-    border-bottom-left-radius: 3px;
-}
-
-.rightDiv{
-    width: 50%;
-    float: right;
-    background-color: yellow;
-    -webkit-border-top-right-radius: 3px;
-    -webkit-border-bottom-right-radius: 3px;
-    border-top-right-radius: 3px;
-    border-bottom-right-radius: 3px;
-}
-
-.shadowDiv{
-    width: 100%;
-    display: none;
-    opacity: 0.7;
-    background-color: black;
-    -webkit-border-radius: 3px;
-    -webkit-border-radius: 3px;
-    border-radius: 3px;
-    border-radius: 3px;
-    z-index: 100;
-}
-
-.popupBack{
-    width: 360px;
-    height: 138px;
-    position: absolute;
-    background-image: url(../images/popupBack.png);
-    background-repeat: repeat;
-    -webkit-border-radius: 10px;
-    -webkit-border-radius: 10px;
-    border-radius: 10px;
-    border-radius: 10px;
-    display: none;
-    z-index: 500;
-}
-
-.popupContainers{
-    float: left;
-    width: 98%;
-    height: 36px;
-    padding: 5px 3px 5px 0;
-    overflow: hidden;
-}
-
-.popupLabels{
-    color: yellow;
-    margin: 0 5px;
-}
-
-.expresionInput{
-    float: right;
-    width: 70%;
-    border: none;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    background-color: #ffc;
-    -webkit-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    border-radius: 5px;
-}
-
-.popupButtons{
-    float: right;
-    width: 74px;
-    height: 28px;
-    margin: 4px 5px;
-    border: none;
-    background-image: url(../images/greySquare2.png);
-    font-family: Verdana;
-    color: yellow;
-    cursor: pointer;
-    -webkit-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    border-radius: 5px;
-}
-
-.readyTask{
-    margin: 2px;
-    padding: 2px;
-    width: 100%;
-    height: 100%;
-    overflow: hidden;
-    z-index: 100;
-}
-
-.taskContainer{
-    width: 96%;
-    padding: 2px;
-    float: left;
-    text-align: center;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-weight: bold;
-}
-
-.editContainer{
-    position: absolute;
-    border: 5px solid #c7c7c7;
-    -webkit-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    border-radius: 5px;
-}
-
-.closeItem{
-    width: 30px;
-    height: 30px;
-    position: absolute;
-    background-image: url(../images/icon-close.png);
-    right: -15px;
-    top: -15px;
-}
-
-.rightResize{
-    width: 10px;
-    height: 65%;
-    cursor: e-resize;
-    position: absolute;
-    background: none;
-    right: -10px;
-    top: 20%;
-}
-
-.bottomResize{
-    width: 65%;
-    height: 10px;
-    cursor: n-resize;
-    position: absolute;
-    background: none;
-    bottom: -10px;
-    left: 20%;
-}
-/*
-.addQstDiv{
-    float: left;
-    padding: 5px;
-    margin: 2px;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size: large;
-}
-
-.addQstButton{    
-    margin: 0;
-    border: none;
-    background: none;
-    color: #99ccff;
-    cursor: pointer;
-}
-
-#addQsqSpan1{
-    font-size: 30px;
-    margin-right: 10px !important;
-}
-
-.qstDiv{
-    width: 90%;
-    margin: 2px auto;
-    padding: 5px;
-    float: left;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-}
-
-.qstDivDisplay{
-    width: 90%;
-    margin: 5px 5%;
-    padding: 5px;
-    float: left;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    border: 2px solid #cccccc;
-    -moz-border-radius: 5px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    -moz-box-shadow: #dadada -1px 0 4px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    box-shadow: #dadada -1px 0 4px;
-}
-
-.spanOptConn{
-    float: left;
-    width: 100%;
-}
-
-.qstNumber{
-    float: left;
-    font-size: 30px;
-    margin-left: 10px !important;
-    color: #00C6FF;
-}
-
-.qstOptions{
-    float: right;
-}
-
-.changeOptions{
-    border: none;
-    background-image: url(../images/grayClose.png);
-    background-color: white;
-    background-repeat: no-repeat;
-    background-position: 0 50%;
-    width: auto;
-    padding-left: 18px;
-    color: #00C6FF;
-    cursor: pointer;
-}
-
-.applyChanges{
-    border: none;
-    background-image: url(../images/blueClose.png);
-    background-color: white;
-    background-repeat: no-repeat;
-    background-position: 0 50%;
-    width: auto;
-    padding-left: 18px;
-    color: #00C6FF;
-    cursor: pointer;
-}
-
-.qstDelete{
-    border: none;
-    background-image: url(../images/boldClose.png);
-    background-color: white;
-    background-repeat: no-repeat;
-    background-position: 0 50%;
-    width: auto;
-    padding-left: 28px;
-    line-height: 35px;
-    cursor: pointer;
-}
-
-.qstContent{
-    float: left;
-    padding: 3px;
-    margin-left: 10px;
-    margin-bottom: 10px;
-    width: 95%;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size: small;
-    border: 3px solid #ccc;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    -moz-box-shadow: #dadada -1px 0 4px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    box-shadow: #dadada -1px 0 4px;
-}
-
-.qstContentDisplay{
-    float: left;
-    padding: 5px;
-    margin: 10px;
-    width: 100%;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    color:#333333;
-}
-
-.ansDiv{
-    float: left;
-    margin-left: 100px;
-    width: 80%;
-}
-
-.ansAdd{
-    border: none;
-    background: url(../images/blueClose.png) -0px -0px no-repeat;
-    background-color: white;
-    width: auto;
-    padding-left: 20px;
-    line-height: 24px;
-    color: #99ccff;
-    cursor: pointer;
-}
-
-.newAnswer{
-    float: left;
-    width: 100%;
-    margin: 3px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-}
-
-.ansSpan{
-    border: none;    
-    background-color: white;
-    color: #00C6FF;
-    font-size: 14px;
-    float: left;
-    margin: 0 3px;
-    width: 20px;
-}
-
-.ansSpanDisplay{
-    color: #00C6FF;
-    font-size: 14px;
-    float: left;
-}
-
-.ansContent{
-    padding: 1px 3px 3px 3px;
-    margin-left: 5px;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size: small;
-    width: 80%;
-    float: left;
-    border: 3px solid #ccc;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    -moz-box-shadow: #dadada -1px 0 4px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    box-shadow: #dadada -1px 0 4px;
-}
-
-.ansContentDisplay{
-    padding: 1px 3px 3px 3px;
-    margin-left: 5px;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-size: small;
-    width: 90%;
-    float: left;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;    
-}
-
-.ansDelete{
-    float: left;
-    border: none;
-    background-image: url(../images/boldGreyClose.png);
-    background-color: white;
-    background-repeat: no-repeat;
-    background-position: 0 50%;
-    cursor: pointer;
-    margin: 0 5px;
-}
-
-.qstOptChoice{    
-    width: 80%;
-    margin: 10px 10%;
-    float: left;
-    background-color: #F3F3F2;
-    border-top-width: 1px;
-    border-right-width: 1px;
-    border-bottom-width: 1px;
-    border-left-width: 1px;
-    border-top-style: solid;
-    border-right-style: solid;
-    border-bottom-style: solid;
-    border-left-style: solid;
-    border-top-color: #ECECEB;
-    border-right-color: #ECECEB;
-    border-bottom-color: #ECECEB;
-    border-left-color: #ECECEB;
-    border-top-left-radius: 5px 5px;
-    border-top-right-radius: 5px 5px;
-    border-bottom-right-radius: 5px 5px;
-    border-bottom-left-radius: 5px 5px;
-    -webkit-box-shadow: #dededd 0 0 2px inset;
-    padding: 0;
-}
-
-.optDescImg{
-    padding: 2px;
-    margin: 5px;
-    background: url(../images/tool.png) -0px -0px no-repeat;
-    float: left;
-    margin-left: 20px;
-    width: 56px;
-    height: 51px;
-}
-
-.optDescText{
-    text-align: center;
-    width: 70%;
-    color: #666666;
-    float: left;
-    font-size: small;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    margin: 3px 5px;
-    padding: 5px;
-}
-
-.type{
-    float: left;
-    margin: 10px;
-    padding: 5px;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    -moz-box-shadow: #dadada -1px 0 4px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    box-shadow: #dadada -1px 0 4px;
-}
-
-.contentType{
-    width: 100%;
-    padding: 0;
-    margin: 0;
-    background-color: white;
-    border-bottom: 1px solid #DFDFDE;
-    border-top-left-radius: 5px 5px;
-    border-top-right-radius: 5px 5px;
-}
-
-.divType1, .divType2, .divType3 {
-    width: 122px;
-    height: 97px;
-    padding: 0 15px;
-    margin-left: 30px;
-}
-
-.divType1{
-    background: url(../images/1thOption.png)-0px -0px no-repeat;
-}
-
-.divType2{
-    background: url(../images/2thOption.png)-0px -0px no-repeat;
-}
-
-.divType3{
-    background: url(../images/3thOption.png)-0px -0px no-repeat;
-}
-
-.textType{
-    width: 160px;
-    font-size: small;    
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    color: #666;
-    padding: 3px;
-    margin-left: 20px;
-}
-
-.radioDiv{
-    background-color: #F5F5F5;
-    border-top: 1px solid white;
-    width: 100%;
-    padding: 0;
-    margin: 0;
-    height: 30px;
-    border-bottom-right-radius: 5px 5px;
-    border-bottom-left-radius: 5px 5px;
-}
-
-.radioType{
-    float: right;
-    margin: 2px;
-    padding: 3px;
-}
-
-.popupWordInfo{
-    position: absolute;
-    display: none;
-    width: 100px;
-    height: 20px;
-    top: 0;
-    left: 0;
-    text-align: center;
-    border: 1px solid #B9B9B9;
-    background-color: #eaebeb;
-    color: #666;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    box-shadow: #dadada -1px 0 4px;
-    z-index: 100;
-}
-*/
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/icon.png
deleted file mode 100644
index 8c64a6a..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/index.html b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/index.html
deleted file mode 100644
index 1701164..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-To change this template, choose Tools | Templates
-and open the template in the editor.
--->
-<!DOCTYPE html>
-<html>
-    <head>
-        <title></title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script src="scripts/jquery.disable.text.select.js" type="text/javascript"></script>
-        <script type="text/javascript" src="scripts/blackYellow.js"></script>
-        <script type="text/javascript">
-            
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en")
-                    init();
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                init();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }                
-            });
-            
-        </script>
-    </head>
-    <body>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/index.html
deleted file mode 100644
index 5e41fc0..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-To change this template, choose Tools | Templates
-and open the template in the editor.
--->
-<!DOCTYPE html>
-<html>
-    <head>
-        <title></title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script src="../../scripts/jquery.disable.text.select.js" type="text/javascript"></script>
-        <script type="text/javascript" src="scripts/blackYellow.js"></script>
-        <script type="text/javascript">
-            
-            $(document).ready(function(){
-                init();
-            });
-            
-        </script>
-    </head>
-    <body>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/scripts/blackYellow.js
deleted file mode 100644
index 56976f8..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/fr/scripts/blackYellow.js
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * 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/>.
- */
-
-var sankoreLang = {display: "Afficher", edit: "Modifier", add: "Ajouter", enter_data: "Saisir la donnée:", enter_result: "Saisir le résultat:", ok: "Valider", cancel: "Annuler"};
-
-function init(){
-
-    //variables
-    var toggleFlag = false; // detects toggling in toggle button
-    var endFlag = false; // ending of toggling in toggle button
-    var addToggleStart = false; // detects toggling in add button
-    var addToggleEnd = false; // ending of toggling in add button
-    var shadowOver = false;
-    var mode = false;
-    var popupFlag = false
-    var flagForSelect = false;
-    var dragElement = null; //the element that must be dragging
-    var lang = ""; //locale language
-    var coords = {
-        left:0,
-        top:0
-    }
-
-    var resizeObj = {
-        y:false,
-        x:false,
-        width:0,
-        height:0
-    }
-    
-    var opacityChanged = false;
-    
-    if(window.sankore){
-        if(sankore.preference("blackYellowData","")){
-            var importArray = jQuery.parseJSON(sankore.preference("blackYellowData",""));
-            for(var i in importArray){
-                var tmpReadyTask = $("<div class='readyTask'>");
-                var exprContainer = $("<div class='taskContainer' style='color: yellow;'>" + importArray[i].data1 + "</div>").appendTo(tmpReadyTask);
-                var resContainer = $("<div class='taskContainer' style='color: black;'>"+ importArray[i].data2 + "</div>").appendTo(tmpReadyTask);
-                tmpReadyTask.width(importArray[i].width)
-                .height(importArray[i].height)
-                .css("position","absolute")
-                .css("top",importArray[i].top)
-                .css("left",importArray[i].left);                                
-                tmpReadyTask.appendTo("body");
-            }      
-        }
-        $(document).disableTextSelect();
-    }
-    
-    /* ------------- BUTTONS -------------*/
-    
-    // toggle button
-    var buttonDiv = $("<div id='buttonDiv' class='buttonDiv'>").appendTo("body");
-    var toggleButton = $("<button id='toggleButton' class='toggleButton'><</button>").appendTo("#buttonDiv");
-    buttonDiv.css({
-        top:"10px",
-        right:0
-    });    
-          
-    //toggle mode
-    toggleButton.click(function(){
-        if(!shadowOver){
-            if(mode){
-                mode = false;
-                addButtonDiv.css("display","none");
-                $(".leftDiv, .rightDiv").animate({
-                    "opacity":"1"
-                },"slow",function(){
-                    if(opacityChanged){
-                        if($(".editContainer").size() != 0){
-                            $(".editContainer").each(function(index, domElem){
-                                var tmpReadyTask = $(domElem).find(".readyTask");
-                                tmpReadyTask.width($(domElem).width())
-                                .height($(domElem).height())
-                                .css("position","absolute")
-                                .css("top",$(domElem).position().top)
-                                .css("left",$(domElem).position().left)
-                                .find(".taskContainer").removeAttr("contenteditable");                                
-                                
-                                $(domElem).remove();
-                                tmpReadyTask.appendTo("body");
-                            });
-                        }
-                        opacityChanged = false;
-                    }
-                });
-                $(document).disableTextSelect();   
-            } else {            
-                mode = true;
-                addButtonDiv.css("display","block");  
-                $(document).enableTextSelect(); 
-                $(".leftDiv, .rightDiv").animate({
-                    "opacity":"0.4"
-                },"slow",function(){
-                    if(!opacityChanged){
-                        if($(".readyTask").size() != 0){
-                            $(".readyTask").each(function(index, domElem){     
-                                var editContent = $("<div class='editContainer'>").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("body");
-                                var closeItem = $("<div class='closeItem'>").appendTo(editContent);
-                                var rightResize = $("<div class='rightResize'>").appendTo(editContent);
-                                var bottomResize = $("<div class='bottomResize'>").appendTo(editContent);
-                                editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left);
-                                $(domElem).css("position","static")
-                                .width("100%")
-                                .height("100%")
-                                .find(".taskContainer").attr("contenteditable", "true");
-                                $(domElem).appendTo(editContent);
-                            });
-                        }
-                        opacityChanged = true;
-                    }
-                });
-                
-            }
-            toggleButton.trigger("mouseout");
-        }
-    });
-    
-    // toggle button events
-    toggleButton.mouseover(function(){
-        if(!shadowOver){
-            if(!toggleFlag && !endFlag){
-                endFlag = true;
-                toggleButton.animate({
-                    width:"115px"
-                },"fast",function(){
-                    toggleFlag = true;
-                    if(!mode)
-                        toggleButton.text(sankoreLang.edit);
-                    else
-                        toggleButton.text(sankoreLang.display);
-                });
-            }
-        }
-    });
-    
-    toggleButton.mouseout(function(){
-        if(!shadowOver){
-            if(toggleFlag && endFlag){
-                endFlag = false;
-                toggleButton.animate({
-                    width:"20px"
-                },"fast", function(){
-                    toggleButton.text("<");
-                    toggleFlag = false;
-                });
-            }
-        }
-    });
-    
-    //add button
-    var addButtonDiv = $("<div id='addButtonDiv' class='addButtonDiv'>").appendTo("body");
-    var addButton = $("<button id='addButton' class='addButton'>+</button>").appendTo("#addButtonDiv");
-    addButtonDiv.css({
-        top:"47px",
-        right:0
-    });    
-    
-    // add button events
-    addButton.click(function(){
-        shadowDiv.show("fast", function(){
-            shadowOver = true;
-            popupBack.show("slow");            
-        });
-        $(document).disableTextSelect();
-        addButton.trigger("mouseout");
-    });
-     
-    addButton.mouseover(function(){
-        if(!shadowOver){
-            if(!addToggleStart && !addToggleEnd){
-                addToggleEnd = true;
-                addButton.animate({
-                    width:"115px"
-                },"fast",function(){
-                    addToggleStart = true;
-                    addButton.text(sankoreLang.add);
-                });
-            }
-        }
-    });
-    
-    addButton.mouseout(function(){
-        if(!shadowOver){
-            if(addToggleStart && addToggleEnd){
-                addToggleEnd = false;
-                addButton.animate({
-                    width:"20px"
-                },"fast", function(){
-                    addButton.text("+");
-                    addToggleStart = false;
-                });
-            }
-        }
-    });
-    
-    /* -------------- END OF WORK WITH BUTTONS ---------------*/
-    
-    //basic divs
-    var leftDiv = $("<div id='leftDiv' class='leftDiv'>").appendTo("body");
-    var rightDiv = $("<div id='rightDiv' class='rightDiv'>").appendTo("body");
-    
-    //divs for adding a new item
-    var shadowDiv = $("<div id='shadowDiv' class='shadowDiv'>").appendTo("body");
-    var popupBack = $("<div id='popupBack' class='popupBack'>").appendTo("body");
-    
-    //input fields and buttons for a popup window
-    var expressionDiv = $("<div id='expressionDiv' class='popupContainers'>").appendTo(popupBack);
-    var experssionLabel = $("<span id='experssionLabel' class='popupLabels'><b>" + sankoreLang.enter_data + "</b></span>").appendTo(expressionDiv);
-    var expresionText = $("<input type='text' id='expresionText' class='expresionInput'/>").appendTo(expressionDiv);
-    
-    var resultDiv = $("<div id='resultDiv' class='popupContainers'>").appendTo(popupBack);
-    var resultLabel = $("<span id='resultLabel' class='popupLabels'><b>" + sankoreLang.enter_result + "</b></span>").appendTo(resultDiv);
-    var resultText = $("<input type='text' id='resultText' class='expresionInput'/>").appendTo(resultDiv);
-    
-    var popupButtonsDiv= $("<div id='popupButtonsDiv' class='popupContainers'>").appendTo(popupBack);
-    var cancelButton = $("<input type='button' id='cancelButton' class='popupButtons' value='" + sankoreLang.cancel + "'/>").appendTo(popupButtonsDiv);
-    var okButton = $("<input type='button' id='okButton' class='popupButtons' value='" + sankoreLang.ok + "'/>").appendTo(popupButtonsDiv);
-    
-    /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/
-    
-    $("#resultText, #expresionText").keyup(function(){
-        if($(this).val()){
-            $(this).css("background-color", "#ff9");
-        }
-    });
-    
-    cancelButton.click(function(){
-        $(document).enableTextSelect();
-        popupBack.hide("slow", function(){
-            $("#resultText, #expresionText").val("")
-            .css("background-color", "#ffc");
-            shadowDiv.hide("fast");
-            shadowOver = false; 
-        });        
-    });
-    
-    okButton.click(function(){
-        $(document).enableTextSelect();
-        if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){
-            popupBack.hide("slow", function(){
-                shadowDiv.hide("fast");
-                shadowOver = false;
-                addTask(expresionText.val(), resultText.val());
-                $("#resultText, #expresionText").val("")
-                .css("background-color", "#ffc");
-            })
-        }
-    });
-    
-    /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/    
-    
-    // a work with dragging possibility    
-    $("input:text").mouseover(function(){
-        $(document).enableTextSelect(); 
-    });
-                        
-    $("input:text").mouseout(function(){
-        $(document).disableTextSelect(); 
-    });
-                    
-    $(".readyTask, .editContainer").live("mousedown",function(event){
-        if(!shadowOver){
-            dragElement = $(this);
-            coords.left = event.pageX - $(this).position().left;
-            coords.top = event.pageY - $(this).position().top;
-            resizeObj.width = $(this).width();
-            resizeObj.height = $(this).height();
-        }
-    });
-    
-    $(".rightResize").live("mousedown",function(event){
-        if(!shadowOver){
-            resizeObj.x = true;
-        }
-    });
-    
-    $(".bottomResize").live("mousedown",function(event){
-        if(!shadowOver){
-            resizeObj.y = true;
-        }
-    });
-    
-    $("body").mouseup(function(event){
-        if(!shadowOver){
-            dragElement = null;
-            resizeObj.x = false;
-            resizeObj.y = false;
-        }
-    });
-    
-    $("body").mousemove(function(event){
-        if(dragElement && !shadowOver){
-            if(resizeObj.x)
-                dragElement.width(event.pageX - dragElement.position().left);
-            else if(resizeObj.y)                
-                dragElement.height(event.pageY - dragElement.position().top);
-            else
-                dragElement.css("top",event.pageY - coords.top).css("left", event.pageX - coords.left);
-        }
-    });
-    
-    //closing item
-    $(".closeItem").live("click", function(){
-        if(!shadowOver){
-            $(this).parent().remove();
-        }
-    });
-    
-    $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
-    popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
-    popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
-    
-    $(window).resize(function(){
-        $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
-        popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
-        popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
-    });
-    
-    $("html").mouseout(function(){
-        if(window.sankore)
-            exportToSankore();        
-    });
-    
-    // export data
-    function exportToSankore(){        
-               
-        var arrayToExport = new Array();        
-        if(mode){            
-            if($(".editContainer").size() != 0){
-                $(".editContainer").each(function(index, domElem){
-                    var objToExport = {
-                        data1:"",
-                        data2:"",
-                        width:0,
-                        height:0,
-                        top:0,
-                        left:0
-                    } 
-                    objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text();
-                    objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text();
-                    objToExport.width = $(domElem).width();
-                    objToExport.height = $(domElem).height();
-                    objToExport.top = $(domElem).position().top;
-                    objToExport.left = $(domElem).position().left;
-                    arrayToExport.push(objToExport);
-                });
-            }
-        } else {      
-            if($(".readyTask").size() != 0){
-                $(".readyTask").each(function(index, domElem){
-                    var objToExport = {
-                        data1:"",
-                        data2:"",
-                        width:0,
-                        height:0,
-                        top:0,
-                        left:0
-                    } 
-                    objToExport.data1 = $(domElem).find(":first-child").text();
-                    objToExport.data2 = $(domElem).find(":last-child").text();
-                    objToExport.width = $(domElem).width();
-                    objToExport.height = $(domElem).height();
-                    objToExport.top = $(domElem).position().top;
-                    objToExport.left = $(domElem).position().left;
-                    arrayToExport.push(objToExport);
-                });
-            }              
-        }
-        sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport));
-    }
-}
-
-//checking empty fields
-function checkEmptyFields(field){
-    if(field.val() == ""){
-        field.css("background-color", "red");
-        return false;
-    } else {
-        field.css("background-color", "#ff9");
-        return true;
-    }
-}
-
-//adding a new task to the page
-function addTask(expression, result){
-    var editContent = $("<div class='editContainer'>").width(240).height(70).appendTo("body");
-    var closeItem = $("<div class='closeItem'>").appendTo(editContent);
-    var rightResize = $("<div class='rightResize'>").appendTo(editContent);
-    var bottomResize = $("<div class='bottomResize'>").appendTo(editContent);
-    var main = $("<div class='readyTask'>");
-    var exprContainer = $("<div class='taskContainer' style='color: yellow;' contenteditable='true'>" + expression + "</div>").appendTo(main);
-    var resContainer = $("<div class='taskContainer' style='color: black;' contenteditable='true'>"+ result + "</div>").appendTo(main);
-    main.appendTo(editContent);
-}
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/index.html
deleted file mode 100644
index 5e41fc0..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-To change this template, choose Tools | Templates
-and open the template in the editor.
--->
-<!DOCTYPE html>
-<html>
-    <head>
-        <title></title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script src="../../scripts/jquery.disable.text.select.js" type="text/javascript"></script>
-        <script type="text/javascript" src="scripts/blackYellow.js"></script>
-        <script type="text/javascript">
-            
-            $(document).ready(function(){
-                init();
-            });
-            
-        </script>
-    </head>
-    <body>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/scripts/blackYellow.js
deleted file mode 100644
index 8d9c526..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/locales/ru/scripts/blackYellow.js
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * 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/>.
- */
-
-var sankoreLang = {display: "Показать", edit: "Изменить", add: "Добавить", enter_data: "Введите вопрос:", enter_result: "Введите ответ:", ok: "Ок", cancel: "Отмена"};
-
-function init(){
-
-    //variables
-    var toggleFlag = false; // detects toggling in toggle button
-    var endFlag = false; // ending of toggling in toggle button
-    var addToggleStart = false; // detects toggling in add button
-    var addToggleEnd = false; // ending of toggling in add button
-    var shadowOver = false;
-    var mode = false;
-    var popupFlag = false
-    var flagForSelect = false;
-    var dragElement = null; //the element that must be dragging
-    var lang = ""; //locale language
-    var coords = {
-        left:0,
-        top:0
-    }
-
-    var resizeObj = {
-        y:false,
-        x:false,
-        width:0,
-        height:0
-    }
-    
-    var opacityChanged = false;
-    
-    if(window.sankore){
-        if(sankore.preference("blackYellowData","")){
-            var importArray = jQuery.parseJSON(sankore.preference("blackYellowData",""));
-            for(var i in importArray){
-                var tmpReadyTask = $("<div class='readyTask'>");
-                var exprContainer = $("<div class='taskContainer' style='color: yellow;'>" + importArray[i].data1 + "</div>").appendTo(tmpReadyTask);
-                var resContainer = $("<div class='taskContainer' style='color: black;'>"+ importArray[i].data2 + "</div>").appendTo(tmpReadyTask);
-                tmpReadyTask.width(importArray[i].width)
-                .height(importArray[i].height)
-                .css("position","absolute")
-                .css("top",importArray[i].top)
-                .css("left",importArray[i].left);                                
-                tmpReadyTask.appendTo("body");
-            }      
-        }
-        $(document).disableTextSelect();
-    }
-    
-    /* ------------- BUTTONS -------------*/
-    
-    // toggle button
-    var buttonDiv = $("<div id='buttonDiv' class='buttonDiv'>").appendTo("body");
-    var toggleButton = $("<button id='toggleButton' class='toggleButton'><</button>").appendTo("#buttonDiv");
-    buttonDiv.css({
-        top:"10px",
-        right:0
-    });    
-          
-    //toggle mode
-    toggleButton.click(function(){
-        if(!shadowOver){
-            if(mode){
-                mode = false;
-                addButtonDiv.css("display","none");
-                $(".leftDiv, .rightDiv").animate({
-                    "opacity":"1"
-                },"slow",function(){
-                    if(opacityChanged){
-                        if($(".editContainer").size() != 0){
-                            $(".editContainer").each(function(index, domElem){
-                                var tmpReadyTask = $(domElem).find(".readyTask");
-                                tmpReadyTask.width($(domElem).width())
-                                .height($(domElem).height())
-                                .css("position","absolute")
-                                .css("top",$(domElem).position().top)
-                                .css("left",$(domElem).position().left)
-                                .find(".taskContainer").removeAttr("contenteditable");                                
-                                
-                                $(domElem).remove();
-                                tmpReadyTask.appendTo("body");
-                            });
-                        }
-                        opacityChanged = false;
-                    }
-                });
-                $(document).disableTextSelect();   
-            } else {            
-                mode = true;
-                addButtonDiv.css("display","block");  
-                $(document).enableTextSelect(); 
-                $(".leftDiv, .rightDiv").animate({
-                    "opacity":"0.4"
-                },"slow",function(){
-                    if(!opacityChanged){
-                        if($(".readyTask").size() != 0){
-                            $(".readyTask").each(function(index, domElem){     
-                                var editContent = $("<div class='editContainer'>").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("body");
-                                var closeItem = $("<div class='closeItem'>").appendTo(editContent);
-                                var rightResize = $("<div class='rightResize'>").appendTo(editContent);
-                                var bottomResize = $("<div class='bottomResize'>").appendTo(editContent);
-                                editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left);
-                                $(domElem).css("position","static")
-                                .width("100%")
-                                .height("100%")
-                                .find(".taskContainer").attr("contenteditable", "true");
-                                $(domElem).appendTo(editContent);
-                            });
-                        }
-                        opacityChanged = true;
-                    }
-                });
-                
-            }
-            toggleButton.trigger("mouseout");
-        }
-    });
-    
-    // toggle button events
-    toggleButton.mouseover(function(){
-        if(!shadowOver){
-            if(!toggleFlag && !endFlag){
-                endFlag = true;
-                toggleButton.animate({
-                    width:"115px"
-                },"fast",function(){
-                    toggleFlag = true;
-                    if(!mode)
-                        toggleButton.text(sankoreLang.edit);
-                    else
-                        toggleButton.text(sankoreLang.display);
-                });
-            }
-        }
-    });
-    
-    toggleButton.mouseout(function(){
-        if(!shadowOver){
-            if(toggleFlag && endFlag){
-                endFlag = false;
-                toggleButton.animate({
-                    width:"20px"
-                },"fast", function(){
-                    toggleButton.text("<");
-                    toggleFlag = false;
-                });
-            }
-        }
-    });
-    
-    //add button
-    var addButtonDiv = $("<div id='addButtonDiv' class='addButtonDiv'>").appendTo("body");
-    var addButton = $("<button id='addButton' class='addButton'>+</button>").appendTo("#addButtonDiv");
-    addButtonDiv.css({
-        top:"47px",
-        right:0
-    });    
-    
-    // add button events
-    addButton.click(function(){
-        shadowDiv.show("fast", function(){
-            shadowOver = true;
-            popupBack.show("slow");            
-        });
-        $(document).disableTextSelect();
-        addButton.trigger("mouseout");
-    });
-     
-    addButton.mouseover(function(){
-        if(!shadowOver){
-            if(!addToggleStart && !addToggleEnd){
-                addToggleEnd = true;
-                addButton.animate({
-                    width:"115px"
-                },"fast",function(){
-                    addToggleStart = true;
-                    addButton.text(sankoreLang.add);
-                });
-            }
-        }
-    });
-    
-    addButton.mouseout(function(){
-        if(!shadowOver){
-            if(addToggleStart && addToggleEnd){
-                addToggleEnd = false;
-                addButton.animate({
-                    width:"20px"
-                },"fast", function(){
-                    addButton.text("+");
-                    addToggleStart = false;
-                });
-            }
-        }
-    });
-    
-    /* -------------- END OF WORK WITH BUTTONS ---------------*/
-    
-    //basic divs
-    var leftDiv = $("<div id='leftDiv' class='leftDiv'>").appendTo("body");
-    var rightDiv = $("<div id='rightDiv' class='rightDiv'>").appendTo("body");
-    
-    //divs for adding a new item
-    var shadowDiv = $("<div id='shadowDiv' class='shadowDiv'>").appendTo("body");
-    var popupBack = $("<div id='popupBack' class='popupBack'>").appendTo("body");
-    
-    //input fields and buttons for a popup window
-    var expressionDiv = $("<div id='expressionDiv' class='popupContainers'>").appendTo(popupBack);
-    var experssionLabel = $("<span id='experssionLabel' class='popupLabels'><b>" + sankoreLang.enter_data + "</b></span>").appendTo(expressionDiv);
-    var expresionText = $("<input type='text' id='expresionText' class='expresionInput'/>").appendTo(expressionDiv);
-    
-    var resultDiv = $("<div id='resultDiv' class='popupContainers'>").appendTo(popupBack);
-    var resultLabel = $("<span id='resultLabel' class='popupLabels'><b>" + sankoreLang.enter_result + "</b></span>").appendTo(resultDiv);
-    var resultText = $("<input type='text' id='resultText' class='expresionInput'/>").appendTo(resultDiv);
-    
-    var popupButtonsDiv= $("<div id='popupButtonsDiv' class='popupContainers'>").appendTo(popupBack);
-    var cancelButton = $("<input type='button' id='cancelButton' class='popupButtons' value='" + sankoreLang.cancel + "'/>").appendTo(popupButtonsDiv);
-    var okButton = $("<input type='button' id='okButton' class='popupButtons' value='" + sankoreLang.ok + "'/>").appendTo(popupButtonsDiv);
-    
-    /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/
-    
-    $("#resultText, #expresionText").keyup(function(){
-        if($(this).val()){
-            $(this).css("background-color", "#ff9");
-        }
-    });
-    
-    cancelButton.click(function(){
-        $(document).enableTextSelect();
-        popupBack.hide("slow", function(){
-            $("#resultText, #expresionText").val("")
-            .css("background-color", "#ffc");
-            shadowDiv.hide("fast");
-            shadowOver = false; 
-        });        
-    });
-    
-    okButton.click(function(){
-        $(document).enableTextSelect();
-        if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){
-            popupBack.hide("slow", function(){
-                shadowDiv.hide("fast");
-                shadowOver = false;
-                addTask(expresionText.val(), resultText.val());
-                $("#resultText, #expresionText").val("")
-                .css("background-color", "#ffc");
-            })
-        }
-    });
-    
-    /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/    
-    
-    // a work with dragging possibility    
-    $("input:text").mouseover(function(){
-        $(document).enableTextSelect(); 
-    });
-                        
-    $("input:text").mouseout(function(){
-        $(document).disableTextSelect(); 
-    });
-                    
-    $(".readyTask, .editContainer").live("mousedown",function(event){
-        if(!shadowOver){
-            dragElement = $(this);
-            coords.left = event.pageX - $(this).position().left;
-            coords.top = event.pageY - $(this).position().top;
-            resizeObj.width = $(this).width();
-            resizeObj.height = $(this).height();
-        }
-    });
-    
-    $(".rightResize").live("mousedown",function(event){
-        if(!shadowOver){
-            resizeObj.x = true;
-        }
-    });
-    
-    $(".bottomResize").live("mousedown",function(event){
-        if(!shadowOver){
-            resizeObj.y = true;
-        }
-    });
-    
-    $("body").mouseup(function(event){
-        if(!shadowOver){
-            dragElement = null;
-            resizeObj.x = false;
-            resizeObj.y = false;
-        }
-    });
-    
-    $("body").mousemove(function(event){
-        if(dragElement && !shadowOver){
-            if(resizeObj.x)
-                dragElement.width(event.pageX - dragElement.position().left);
-            else if(resizeObj.y)                
-                dragElement.height(event.pageY - dragElement.position().top);
-            else
-                dragElement.css("top",event.pageY - coords.top).css("left", event.pageX - coords.left);
-        }
-    });
-    
-    //closing item
-    $(".closeItem").live("click", function(){
-        if(!shadowOver){
-            $(this).parent().remove();
-        }
-    });
-    
-    $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
-    popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
-    popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
-    
-    $(window).resize(function(){
-        $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
-        popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
-        popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
-    });
-    
-    $("html").mouseout(function(){
-        if(window.sankore)
-            exportToSankore();        
-    });
-    
-    // export data
-    function exportToSankore(){        
-               
-        var arrayToExport = new Array();        
-        if(mode){            
-            if($(".editContainer").size() != 0){
-                $(".editContainer").each(function(index, domElem){
-                    var objToExport = {
-                        data1:"",
-                        data2:"",
-                        width:0,
-                        height:0,
-                        top:0,
-                        left:0
-                    } 
-                    objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text();
-                    objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text();
-                    objToExport.width = $(domElem).width();
-                    objToExport.height = $(domElem).height();
-                    objToExport.top = $(domElem).position().top;
-                    objToExport.left = $(domElem).position().left;
-                    arrayToExport.push(objToExport);
-                });
-            }
-        } else {      
-            if($(".readyTask").size() != 0){
-                $(".readyTask").each(function(index, domElem){
-                    var objToExport = {
-                        data1:"",
-                        data2:"",
-                        width:0,
-                        height:0,
-                        top:0,
-                        left:0
-                    } 
-                    objToExport.data1 = $(domElem).find(":first-child").text();
-                    objToExport.data2 = $(domElem).find(":last-child").text();
-                    objToExport.width = $(domElem).width();
-                    objToExport.height = $(domElem).height();
-                    objToExport.top = $(domElem).position().top;
-                    objToExport.left = $(domElem).position().left;
-                    arrayToExport.push(objToExport);
-                });
-            }              
-        }
-        sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport));
-    }
-}
-
-//checking empty fields
-function checkEmptyFields(field){
-    if(field.val() == ""){
-        field.css("background-color", "red");
-        return false;
-    } else {
-        field.css("background-color", "#ff9");
-        return true;
-    }
-}
-
-//adding a new task to the page
-function addTask(expression, result){
-    var editContent = $("<div class='editContainer'>").width(240).height(70).appendTo("body");
-    var closeItem = $("<div class='closeItem'>").appendTo(editContent);
-    var rightResize = $("<div class='rightResize'>").appendTo(editContent);
-    var bottomResize = $("<div class='bottomResize'>").appendTo(editContent);
-    var main = $("<div class='readyTask'>");
-    var exprContainer = $("<div class='taskContainer' style='color: yellow;' contenteditable='true'>" + expression + "</div>").appendTo(main);
-    var resContainer = $("<div class='taskContainer' style='color: black;' contenteditable='true'>"+ result + "</div>").appendTo(main);
-    main.appendTo(editContent);
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/blackYellow.js
deleted file mode 100644
index 15cf2f9..0000000
--- a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/blackYellow.js
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * 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/>.
- */
-
-var sankoreLang = {display: "Display", edit: "Edit", add: "Add", enter_data: "Enter data:", enter_result: "Enter result:", ok: "Ok", cancel: "Cancel"};
-
-function init(){
-
-    //variables
-    var toggleFlag = false; // detects toggling in toggle button
-    var endFlag = false; // ending of toggling in toggle button
-    var addToggleStart = false; // detects toggling in add button
-    var addToggleEnd = false; // ending of toggling in add button
-    var shadowOver = false;
-    var mode = false;
-    var popupFlag = false
-    var flagForSelect = false;
-    var dragElement = null; //the element that must be dragging
-    var lang = ""; //locale language
-    var coords = {
-        left:0,
-        top:0
-    }
-
-    var resizeObj = {
-        y:false,
-        x:false,
-        width:0,
-        height:0
-    }
-    
-    var opacityChanged = false;
-    
-    if(window.sankore){
-        if(sankore.preference("blackYellowData","")){
-            var importArray = jQuery.parseJSON(sankore.preference("blackYellowData",""));
-            for(var i in importArray){
-                var tmpReadyTask = $("<div class='readyTask'>");
-                var exprContainer = $("<div class='taskContainer' style='color: yellow;'>" + importArray[i].data1 + "</div>").appendTo(tmpReadyTask);
-                var resContainer = $("<div class='taskContainer' style='color: black;'>"+ importArray[i].data2 + "</div>").appendTo(tmpReadyTask);
-                tmpReadyTask.width(importArray[i].width)
-                .height(importArray[i].height)
-                .css("position","absolute")
-                .css("top",importArray[i].top)
-                .css("left",importArray[i].left);                                
-                tmpReadyTask.appendTo("body");
-            }      
-        }
-        $(document).disableTextSelect();
-    }
-    
-    /* ------------- BUTTONS -------------*/
-    
-    // toggle button
-    var buttonDiv = $("<div id='buttonDiv' class='buttonDiv'>").appendTo("body");
-    var toggleButton = $("<button id='toggleButton' class='toggleButton'><</button>").appendTo("#buttonDiv");
-    buttonDiv.css({
-        top:"10px",
-        right:0
-    });    
-          
-    //toggle mode
-    toggleButton.click(function(){
-        if(!shadowOver){
-            if(mode){
-                mode = false;
-                addButtonDiv.css("display","none");
-                $(".leftDiv, .rightDiv").animate({
-                    "opacity":"1"
-                },"slow",function(){
-                    if(opacityChanged){
-                        if($(".editContainer").size() != 0){
-                            $(".editContainer").each(function(index, domElem){
-                                var tmpReadyTask = $(domElem).find(".readyTask");
-                                tmpReadyTask.width($(domElem).width())
-                                .height($(domElem).height())
-                                .css("position","absolute")
-                                .css("top",$(domElem).position().top)
-                                .css("left",$(domElem).position().left)
-                                .find(".taskContainer").removeAttr("contenteditable");                                
-                                
-                                $(domElem).remove();
-                                tmpReadyTask.appendTo("body");
-                            });
-                        }
-                        opacityChanged = false;
-                    }
-                });
-                $(document).disableTextSelect();   
-            } else {            
-                mode = true;
-                addButtonDiv.css("display","block");  
-                $(document).enableTextSelect(); 
-                $(".leftDiv, .rightDiv").animate({
-                    "opacity":"0.4"
-                },"slow",function(){
-                    if(!opacityChanged){
-                        if($(".readyTask").size() != 0){
-                            $(".readyTask").each(function(index, domElem){     
-                                var editContent = $("<div class='editContainer'>").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("body");
-                                var closeItem = $("<div class='closeItem'>").appendTo(editContent);
-                                var rightResize = $("<div class='rightResize'>").appendTo(editContent);
-                                var bottomResize = $("<div class='bottomResize'>").appendTo(editContent);
-                                editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left);
-                                $(domElem).css("position","static")
-                                .width("100%")
-                                .height("100%")
-                                .find(".taskContainer").attr("contenteditable", "true");
-                                $(domElem).appendTo(editContent);
-                            });
-                        }
-                        opacityChanged = true;
-                    }
-                });
-                
-            }
-            toggleButton.trigger("mouseout");
-        }
-    });
-    
-    // toggle button events
-    toggleButton.mouseover(function(){
-        if(!shadowOver){
-            if(!toggleFlag && !endFlag){
-                endFlag = true;
-                toggleButton.animate({
-                    width:"115px"
-                },"fast",function(){
-                    toggleFlag = true;
-                    if(!mode)
-                        toggleButton.text(sankoreLang.edit);
-                    else
-                        toggleButton.text(sankoreLang.display);
-                });
-            }
-        }
-    });
-    
-    toggleButton.mouseout(function(){
-        if(!shadowOver){
-            if(toggleFlag && endFlag){
-                endFlag = false;
-                toggleButton.animate({
-                    width:"20px"
-                },"fast", function(){
-                    toggleButton.text("<");
-                    toggleFlag = false;
-                });
-            }
-        }
-    });
-    
-    //add button
-    var addButtonDiv = $("<div id='addButtonDiv' class='addButtonDiv'>").appendTo("body");
-    var addButton = $("<button id='addButton' class='addButton'>+</button>").appendTo("#addButtonDiv");
-    addButtonDiv.css({
-        top:"47px",
-        right:0
-    });    
-    
-    // add button events
-    addButton.click(function(){
-        shadowDiv.show("fast", function(){
-            shadowOver = true;
-            popupBack.show("slow");            
-        });
-        $(document).disableTextSelect();
-        addButton.trigger("mouseout");
-    });
-     
-    addButton.mouseover(function(){
-        if(!shadowOver){
-            if(!addToggleStart && !addToggleEnd){
-                addToggleEnd = true;
-                addButton.animate({
-                    width:"115px"
-                },"fast",function(){
-                    addToggleStart = true;
-                    addButton.text(sankoreLang.add);
-                });
-            }
-        }
-    });
-    
-    addButton.mouseout(function(){
-        if(!shadowOver){
-            if(addToggleStart && addToggleEnd){
-                addToggleEnd = false;
-                addButton.animate({
-                    width:"20px"
-                },"fast", function(){
-                    addButton.text("+");
-                    addToggleStart = false;
-                });
-            }
-        }
-    });
-    
-    /* -------------- END OF WORK WITH BUTTONS ---------------*/
-    
-    //basic divs
-    var leftDiv = $("<div id='leftDiv' class='leftDiv'>").appendTo("body");
-    var rightDiv = $("<div id='rightDiv' class='rightDiv'>").appendTo("body");
-    
-    //divs for adding a new item
-    var shadowDiv = $("<div id='shadowDiv' class='shadowDiv'>").appendTo("body");
-    var popupBack = $("<div id='popupBack' class='popupBack'>").appendTo("body");
-    
-    //input fields and buttons for a popup window
-    var expressionDiv = $("<div id='expressionDiv' class='popupContainers'>").appendTo(popupBack);
-    var experssionLabel = $("<span id='experssionLabel' class='popupLabels'><b>" + sankoreLang.enter_data + "</b></span>").appendTo(expressionDiv);
-    var expresionText = $("<input type='text' id='expresionText' class='expresionInput'/>").appendTo(expressionDiv);
-    
-    var resultDiv = $("<div id='resultDiv' class='popupContainers'>").appendTo(popupBack);
-    var resultLabel = $("<span id='resultLabel' class='popupLabels'><b>" + sankoreLang.enter_result + "</b></span>").appendTo(resultDiv);
-    var resultText = $("<input type='text' id='resultText' class='expresionInput'/>").appendTo(resultDiv);
-    
-    var popupButtonsDiv= $("<div id='popupButtonsDiv' class='popupContainers'>").appendTo(popupBack);
-    var cancelButton = $("<input type='button' id='cancelButton' class='popupButtons' value='" + sankoreLang.cancel + "'/>").appendTo(popupButtonsDiv);
-    var okButton = $("<input type='button' id='okButton' class='popupButtons' value='" + sankoreLang.ok + "'/>").appendTo(popupButtonsDiv);
-    
-    /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/
-    
-    $("#resultText, #expresionText").keyup(function(){
-        if($(this).val()){
-            $(this).css("background-color", "#ff9");
-        }
-    });
-    
-    cancelButton.click(function(){
-        $(document).enableTextSelect();
-        popupBack.hide("slow", function(){
-            $("#resultText, #expresionText").val("")
-            .css("background-color", "#ffc");
-            shadowDiv.hide("fast");
-            shadowOver = false; 
-        });        
-    });
-    
-    okButton.click(function(){
-        $(document).enableTextSelect();
-        if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){
-            popupBack.hide("slow", function(){
-                shadowDiv.hide("fast");
-                shadowOver = false;
-                addTask(expresionText.val(), resultText.val());
-                $("#resultText, #expresionText").val("")
-                .css("background-color", "#ffc");
-            })
-        }
-    });
-    
-    /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/    
-    
-    // a work with dragging possibility    
-    $("input:text").mouseover(function(){
-        $(document).enableTextSelect(); 
-    });
-                        
-    $("input:text").mouseout(function(){
-        $(document).disableTextSelect(); 
-    });
-                    
-    $(".readyTask, .editContainer").live("mousedown",function(event){
-        if(!shadowOver){
-            dragElement = $(this);
-            coords.left = event.pageX - $(this).position().left;
-            coords.top = event.pageY - $(this).position().top;
-            resizeObj.width = $(this).width();
-            resizeObj.height = $(this).height();
-        }
-    });
-    
-    $(".rightResize").live("mousedown",function(event){
-        if(!shadowOver){
-            resizeObj.x = true;
-        }
-    });
-    
-    $(".bottomResize").live("mousedown",function(event){
-        if(!shadowOver){
-            resizeObj.y = true;
-        }
-    });
-    
-    $("body").mouseup(function(event){
-        if(!shadowOver){
-            dragElement = null;
-            resizeObj.x = false;
-            resizeObj.y = false;
-        }
-    });
-    
-    $("body").mousemove(function(event){
-        if(dragElement && !shadowOver){
-            if(resizeObj.x)
-                dragElement.width(event.pageX - dragElement.position().left);
-            else if(resizeObj.y)                
-                dragElement.height(event.pageY - dragElement.position().top);
-            else
-                dragElement.css("top",event.pageY - coords.top).css("left", event.pageX - coords.left);
-        }
-    });
-    
-    //closing item
-    $(".closeItem").live("click", function(){
-        if(!shadowOver){
-            $(this).parent().remove();
-        }
-    });
-    
-    $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
-    popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
-    popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
-    
-    $(window).resize(function(){
-        $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
-        popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
-        popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
-    });
-    
-    $("html").mouseout(function(){
-        if(window.sankore)
-            exportToSankore();        
-    });
-    
-    // export data
-    function exportToSankore(){        
-               
-        var arrayToExport = new Array();        
-        if(mode){            
-            if($(".editContainer").size() != 0){
-                $(".editContainer").each(function(index, domElem){
-                    var objToExport = {
-                        data1:"",
-                        data2:"",
-                        width:0,
-                        height:0,
-                        top:0,
-                        left:0
-                    } 
-                    objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text();
-                    objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text();
-                    objToExport.width = $(domElem).width();
-                    objToExport.height = $(domElem).height();
-                    objToExport.top = $(domElem).position().top;
-                    objToExport.left = $(domElem).position().left;
-                    arrayToExport.push(objToExport);
-                });
-            }
-        } else {      
-            if($(".readyTask").size() != 0){
-                $(".readyTask").each(function(index, domElem){
-                    var objToExport = {
-                        data1:"",
-                        data2:"",
-                        width:0,
-                        height:0,
-                        top:0,
-                        left:0
-                    } 
-                    objToExport.data1 = $(domElem).find(":first-child").text();
-                    objToExport.data2 = $(domElem).find(":last-child").text();
-                    objToExport.width = $(domElem).width();
-                    objToExport.height = $(domElem).height();
-                    objToExport.top = $(domElem).position().top;
-                    objToExport.left = $(domElem).position().left;
-                    arrayToExport.push(objToExport);
-                });
-            }              
-        }
-        sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport));
-    }
-}
-
-//checking empty fields
-function checkEmptyFields(field){
-    if(field.val() == ""){
-        field.css("background-color", "red");
-        return false;
-    } else {
-        field.css("background-color", "#ff9");
-        return true;
-    }
-}
-
-//adding a new task to the page
-function addTask(expression, result){
-    var editContent = $("<div class='editContainer'>").width(240).height(70).appendTo("body");
-    var closeItem = $("<div class='closeItem'>").appendTo(editContent);
-    var rightResize = $("<div class='rightResize'>").appendTo(editContent);
-    var bottomResize = $("<div class='bottomResize'>").appendTo(editContent);
-    var main = $("<div class='readyTask'>");
-    var exprContainer = $("<div class='taskContainer' style='color: yellow;' contenteditable='true'>" + expression + "</div>").appendTo(main);
-    var resContainer = $("<div class='taskContainer' style='color: black;' contenteditable='true'>"+ result + "</div>").appendTo(main);
-    main.appendTo(editContent);
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml
new file mode 100644
index 0000000..1e34149
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/Cadran opératoire" 
+        version="1.0"
+        width="800"
+        height="700" 
+        ub:resizable="false">     
+   
+		<name>Cadran opératoire</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description></description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css
new file mode 100644
index 0000000..95b3bdb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/main.css
@@ -0,0 +1,206 @@
+.selected,
+.result,
+.input {
+	color: #FFCC99;
+}
+
+#disc {
+	position: relative;
+	margin: 200px auto 0;
+
+	color: #FFF;
+
+	text-shadow: 0px 1px 2px #000;
+}
+
+#disc .circle {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	border-radius: 50%;
+}
+
+.result {
+	width: 430px;
+	height: 430px;
+
+	margin-top: -215px;
+	margin-left: -215px;
+
+	/*OPEN SANKORE bug sur cette animation*/
+	/*-webkit-transition: all 0.25s ease-in-out;*/
+}
+
+.hide {
+	visibility: hidden;
+}
+
+.numbers {
+	width: 300px;
+	height: 300px;
+	border: 4px solid #FFF;
+
+	margin-top: -150px;
+	margin-left: -150px;
+
+	background-color: rgba(0,0,0,0.2);
+
+}
+
+.operators {
+	width: 170px;
+	height: 170px;
+	border: 4px solid #FFF;
+
+	margin-top: -85px;
+	margin-left: -85px;
+
+	background-color: rgba(0,0,0,0.2);
+}
+
+.input {
+	width: 90px;
+	height: 90px;
+	border: 4px solid #FFF;
+
+	margin-top: -45px;
+	margin-left: -45px;
+
+	background-color: rgba(0,0,0,0.2);
+	box-shadow: inset 0px 0px 4px #000;
+}
+
+.result > div,
+.numbers > div,
+.operators > div {
+	position: absolute;
+	top: 0px;
+	bottom: 50%;
+	left: 50%;
+	text-align: center;
+	-webkit-transform-origin: 50% 100%;
+}
+
+.numbers > div {
+	width: 40px;
+	font-size: 32px;
+	line-height: 32px;
+	margin-left: -20px;
+}
+
+.operators > div {
+	width: 20px;
+	font-size: 28px;
+	line-height: 20px;
+	margin-left: -10px;
+}
+
+.result > div > div,
+.numbers > div > div,
+.operators > div > div {
+	cursor: pointer;
+}
+
+.numbers > div > div {
+	padding: 15px 0;
+}
+
+.operators > div > div {
+	padding: 5px 0;
+}
+
+.input > div {
+	padding: 0 8px;
+	font-size: 40px;
+	line-height: 90px;
+	text-align: center; 
+}
+
+.result > div {
+	width: 60px;
+	font-size: 50px;
+	line-height: 40px;
+	margin-left: -30px;
+	text-align: center;
+}
+
+#result {
+	height: 40px;
+}
+
+#result > div {
+	position: relative;
+	overflow: hidden;
+	height: 100%;
+        width: 120px;
+}
+#result > div > div {
+	position: absolute;
+	width: 100%;
+}
+
+.reste {
+	font-size: 24px;
+}
+
+
+#result > div > div:first-child {
+	display: block;
+}
+
+#result > div > div:last-child {
+	display: none;
+}
+
+#result.flip > div > div:first-child {
+	display: none;
+}
+
+#result.flip > div > div:last-child {
+	display: block;
+}
+
+/*OPEN SANKORE bug sur cette animation*/
+/*
+.csstransforms3d .result {
+	-webkit-perspective: 600px;
+}
+
+.csstransforms3d #result > div > div {
+	-webkit-transform-style: preserve-3d !important;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;	
+}
+
+.csstransforms3d #result > div > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+
+.no-csstransforms3d #result > div > div:first-child {
+	display: block;
+}
+
+.csstransforms3d #result > div > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+
+.no-csstransforms3d #result > div > div:last-child {
+	display: none;
+}
+
+.csstransforms3d #result.flip > div > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+
+.no-csstransforms3d #result.flip > div > div:first-child {
+	display: none;
+}
+
+.csstransforms3d #result.flip > div > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+
+.no-csstransforms3d #result.flip > div > div:last-child {
+	display: block;
+}
+*/
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..c74e540
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages.properties
@@ -0,0 +1,11 @@
+fr.njin.i18n.document.title = Dial
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..f3a7506
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,11 @@
+fr.njin.i18n.document.title = Cadran opératoire
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/icon.png
new file mode 100644
index 0000000..d835a40
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html
new file mode 100644
index 0000000..2f3983a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/index.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-css-transform.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+					<div id="disc">
+						<div class="circle result hide">
+							<div>
+								<div id="result">
+									<div>
+										<div class="front">?</div>
+										<div class="back">12</div>	
+									</div>
+								</div>									
+							</div>
+						</div>
+						<div class="circle numbers">
+							<div><div>0</div></div>
+							<div><div>1</div></div>
+							<div><div>2</div></div>
+							<div><div>3</div></div>
+							<div><div>4</div></div>
+							<div><div>5</div></div>
+							<div><div>6</div></div>
+							<div><div>7</div></div>
+							<div><div>8</div></div>
+							<div><div>9</div></div>
+							<div><div>10</div></div>
+							<div><div>11</div></div>
+						</div>
+						<div class="circle operators">
+							<div><div>+</div></div>
+							<div><div>*</div></div>
+							<div><div>-</div></div>
+							<div><div>/</div></div>
+						</div>
+						<div class="circle input">
+							<div></div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js
new file mode 100644
index 0000000..fa6dab9
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help-template.js
@@ -0,0 +1,13 @@
+<h3>Dial</h3>
+<h4>Mental calculation</h4>
+
+<p> With this interactivity you can work a particular number (number of the days) with additions, subtractions, multiplications and divisions. The goal is to train mental calculation clicking on the dial and on the question mark. </p>
+
+<p> "Reload" button resets the selection. </p>
+<p> Enter the "Edit" mode to : </p>
+<ul> <li> choose the theme of the App : pad, slate, or none (by default : pad), </li>
+<li> modify the number in the center of the dial. </li> </ul>
+
+<p> To change the number in the center, click and replace it.</p>
+
+<p>"Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..1aa892a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/help_fr-template.js
@@ -0,0 +1,17 @@
+<h3>Cadran opératoire</h3>
+<h4>Calcul mental</h4>
+
+<p>L’interactivité permet de travailler un nombre particulier (nombre du jour) avec des additions, soustractions, multiplications et divisions. Le but est d’effectuer l’opération de calcul mental en cliquant sur l'opérateur et le nombre pour ensuite vérifier le résultat en cliquant sur le point d'interrogation.</p>
+
+<p>La division affiche le nombre entier et son reste.</p>
+
+<p>Le bouton “Recharger” réinitialise la sélection effectuée.</p>
+
+<p>Le bouton "Modifier" vous permet de :</p>
+<ul><li>choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+<li>modifier le nombre travaillé (au centre).</li></ul>
+
+<p>Pour modifier le nombre au centre, il suffit de cliquer dessus, de l'effacer et de le remplacer.</p>
+
+
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-css-transform.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-css-transform.js
new file mode 100644
index 0000000..241a722
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery-css-transform.js
@@ -0,0 +1,112 @@
+(function ($) {
+    // Monkey patch jQuery 1.3.1+ css() method to support CSS 'transform'
+    // property uniformly across Safari/Chrome/Webkit, Firefox 3.5+, IE 9+, and Opera 11+.
+    // 2009-2011 Zachary Johnson www.zachstronaut.com
+    // Updated 2011.05.04 (May the fourth be with you!)
+    function getTransformProperty(element)
+    {
+        // Try transform first for forward compatibility
+        // In some versions of IE9, it is critical for msTransform to be in
+        // this list before MozTranform.
+        var properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'];
+        var p;
+        while (p = properties.shift())
+        {
+            if (typeof element.style[p] != 'undefined')
+            {
+                return p;
+            }
+        }
+        
+        // Default to transform also
+        return 'transform';
+    }
+    
+    var _propsObj = null;
+    
+    var proxied = $.fn.css;
+    $.fn.css = function (arg, val)
+    {
+        // Temporary solution for current 1.6.x incompatibility, while
+        // preserving 1.3.x compatibility, until I can rewrite using CSS Hooks
+        if (_propsObj === null)
+        {
+            if (typeof $.cssProps != 'undefined')
+            {
+                _propsObj = $.cssProps;
+            }
+            else if (typeof $.props != 'undefined')
+            {
+                _propsObj = $.props;
+            }
+            else
+            {
+                _propsObj = {}
+            }
+        }
+        
+        // Find the correct browser specific property and setup the mapping using
+        // $.props which is used internally by jQuery.attr() when setting CSS
+        // properties via either the css(name, value) or css(properties) method.
+        // The problem with doing this once outside of css() method is that you
+        // need a DOM node to find the right CSS property, and there is some risk
+        // that somebody would call the css() method before body has loaded or any
+        // DOM-is-ready events have fired.
+        if
+        (
+            typeof _propsObj['transform'] == 'undefined'
+            &&
+            (
+                arg == 'transform'
+                ||
+                (
+                    typeof arg == 'object'
+                    && typeof arg['transform'] != 'undefined'
+                )
+            )
+        )
+        {
+            _propsObj['transform'] = getTransformProperty(this.get(0));
+        }
+        
+        // We force the property mapping here because jQuery.attr() does
+        // property mapping with jQuery.props when setting a CSS property,
+        // but curCSS() does *not* do property mapping when *getting* a
+        // CSS property.  (It probably should since it manually does it
+        // for 'float' now anyway... but that'd require more testing.)
+        //
+        // But, only do the forced mapping if the correct CSS property
+        // is not 'transform' and is something else.
+        if (_propsObj['transform'] != 'transform')
+        {
+            // Call in form of css('transform' ...)
+            if (arg == 'transform')
+            {
+                arg = _propsObj['transform'];
+                
+                // User wants to GET the transform CSS, and in jQuery 1.4.3
+                // calls to css() for transforms return a matrix rather than
+                // the actual string specified by the user... avoid that
+                // behavior and return the string by calling jQuery.style()
+                // directly
+                if (typeof val == 'undefined' && jQuery.style)
+                {
+                    return jQuery.style(this.get(0), arg);
+                }
+            }
+
+            // Call in form of css({'transform': ...})
+            else if
+            (
+                typeof arg == 'object'
+                && typeof arg['transform'] != 'undefined'
+            )
+            {
+                arg[_propsObj['transform']] = arg['transform'];
+                delete arg['transform'];
+            }
+        }
+        
+        return proxied.apply(this, arguments);
+    };
+})(jQuery);
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/main.js
new file mode 100644
index 0000000..5177e46
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/main.js
@@ -0,0 +1,131 @@
+function onTemplateLoadedCallback() {
+
+}
+
+function updateAnswer() {
+	var flipped = $("#result").hasClass("flip");
+	$("#result").removeClass("flip");
+
+	setTimeout(function(){
+		var nselected = $(".numbers .selected");
+		var oselected = $(".operators .selected");
+		var angle = 0;
+
+		if(nselected.size() > 0 && oselected.size() > 0) {
+			angle = nselected.data("angle");
+			$(".result").removeClass("hide");
+			var v = $(".input > div").text();
+			var o = oselected.text();
+			var n = nselected.text();
+			var e = Math.floor(eval(v+o+n));
+			if(isNaN(e) || e == Infinity)
+				e = "...";
+			else if(o == "/") {
+				var r = v%n;
+				e = $("<div>"+e+"</div>");
+				e.append($("<span class='reste'>"+r+"</span>"));
+			}
+			$("#result .back").html(e);
+		}else
+			$(".result").addClass("hide");
+
+		$(".result").css("transform","rotate("+angle+"deg)");
+		$("#result > div").css("transform","rotate("+((-1)*angle)+"deg)");
+	}, flipped ? 500 : 0);
+}
+
+function reloadApp(app) {
+	var input = parseInt(app.parameters.value("input"));
+	if(isNaN(input))
+		input = Math.floor(Math.random()*12);
+	var $input = $(".input > div");
+	$input.text(input);
+
+	//Clean
+	$(".numbers .selected").removeClass("selected");
+	$(".operators .selected").removeClass("selected");
+	$input.unbind("focus").unbind("blur");
+	$input.get(0).contentEditable = false;
+	
+	updateAnswer();
+
+	if(app.onEdit) {
+		$input.get(0).contentEditable = true;
+		$input.focus(function(){
+			if($(this).text() == "...")
+				$(this).text("");
+		});
+		
+		$input.bind('blur', function(){
+			var v = parseInt($(this).text().trim());
+			if(isNaN(v)) {
+				$(this).text("...");
+			}else{
+			}
+			app.parameters.value("input", v);
+		});
+	}
+}
+
+function reloadCallback(parameter) {
+	if(parameter === undefined)
+		reloadApp(this);
+}
+
+$(document).ready(function(){
+	var callbacks = {
+		onTemplatesLoaded: onTemplateLoadedCallback,
+		onEdit: reloadApp,
+		onView: reloadApp
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+
+	var nr = $(".numbers").width()/2; 
+	
+	$(".numbers > div").each(function(i){
+		var n = $(this);
+
+		var angle = 30*i;
+
+		var rotate = "rotate("+(angle)+"deg)";
+		var irotate = "rotate("+(-angle)+"deg)";
+
+		n.css("transform", rotate);
+		$(">div",n).css("transform", irotate)
+			.data("angle", angle)
+			.click(function() {
+				if($(this).hasClass("selected")) {
+					$(this).removeClass("selected");	
+				}else {
+					$(".numbers .selected").removeClass("selected");
+					$(this).addClass("selected");	
+				}
+				updateAnswer();
+			});
+	});
+
+	$(".operators > div").each(function(i){
+		var n = $(this);
+
+		var angle = 90*i;
+
+		var rotate = "rotate("+(angle)+"deg)";
+		var irotate = "rotate("+(-angle)+"deg)";
+
+		n.css("transform", rotate);
+		$(">div",n).css("transform", irotate)
+			.click(function() {
+				if($(this).hasClass("selected")) {
+					$(this).removeClass("selected");	
+				}else {
+					$(".operators .selected").removeClass("selected");
+					$(this).addClass("selected");	
+				}
+				updateAnswer();
+			});
+	});
+
+	$("#result").click(function(){
+		$(this).toggleClass("flip");
+	});
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/templates.js
new file mode 100644
index 0000000..78dbbe7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cadran.wgt/js/templates.js
@@ -0,0 +1,27 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+				
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'/*+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.transformation.parameters.label.number}}'+
+					'<input  class="tiny" type="number" name="number" min="2" role="parameter">'+
+				'</label>'+
+			'</div>'+
+			'<div id="edit-cards">'+
+			'</div>';
+			*/
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml
new file mode 100644
index 0000000..350fa89
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/tableur" 
+        version="1.0"
+        width="800"
+        height="600" 
+        ub:resizable="true">     
+   
+		<name>Calcul rapide</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description></description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/submit.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/submit.png
new file mode 100644
index 0000000..c72877a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/submit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/main.css
new file mode 100644
index 0000000..27f420e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/main.css
@@ -0,0 +1,116 @@
+ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+
+.pagination li {
+	display: inline-block;
+	width: 20px;
+	height: 20px;
+	border-radius: 3px;
+	border: 1px solid #FFF;
+	margin-left: 10px;
+}
+
+.pagination li.current {
+	background-color: #FFF;
+}
+
+.pagination li.succeed {
+	background-color: #92D21F;
+}
+
+.pagination li.failed {
+	background-color: red;
+}
+
+.pagination li span {
+	display: block;
+	width: 100%;
+	height: 100%;
+	overflow: hidden;
+	text-indent: -9999px;
+}
+
+.operations {
+	position: relative;
+	font-size: 28px;
+	color: #FFF;
+	font-family: "helvetica neue";
+	margin: 20px;
+	height: 100px;
+	overflow: hidden;
+}
+
+.operations li {
+	position: absolute;
+	width: 100%;
+	height: 34px;
+	padding: 13px 0;
+	margin: 40px 0 0 40px;
+	top: 60px;
+	opacity: 0;
+
+	-webkit-transition: all 0.25s ease-in;
+}
+
+.operations li.current {
+	top: 0;
+	opacity: 1;
+}
+
+.operations li.closed {
+	top: -60px;
+	opacity: 0;
+}
+
+.finish .operations {
+	height: auto;
+}
+
+.finish .operations li {
+	position: static;
+	float: left;
+	width: auto;
+	opacity: 1;
+}
+
+.operations li.succeed {
+	color: #92D21F;
+}
+
+.operations li.failed {
+	color: red;
+}
+
+.operations li > div {
+
+}
+
+.operations button {
+	vertical-align: middle;
+	margin: 0;
+	padding: 0;
+	width: 32px;
+	height: 26px;
+	border: none;
+	text-indent: -9999px;
+	background: url("images/submit.png") top center no-repeat;
+	cursor: pointer;
+}
+
+.operations button:disabled {
+	opacity: 0.5;
+}
+
+.operations .operator,
+.operations .equal,
+.operations .input {
+	margin: 0 10px;
+}
+
+.operations .input {
+	display: inline-block;
+	min-width: 30px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..74d3914
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages.properties
@@ -0,0 +1,16 @@
+fr.njin.i18n.document.title = Calculation
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.calcul.parameters.label.operator = Operation
+fr.njin.i18n.calcul.parameters.label.range = Magnitude
+fr.njin.i18n.calcul.parameters.label.count = Number of elements
+fr.njin.i18n.calcul.parameters.label.operations = Number of operations
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..19ef0b1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,16 @@
+fr.njin.i18n.document.title = Calcul rapide
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.calcul.parameters.label.operator = Opérateur
+fr.njin.i18n.calcul.parameters.label.range = Ordre de grandeur
+fr.njin.i18n.calcul.parameters.label.count = Nombre d'éléments de l'opération
+fr.njin.i18n.calcul.parameters.label.operations = Nombre d'opérations
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/icon.png
new file mode 100644
index 0000000..941f672
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/index.html
new file mode 100644
index 0000000..1f87488
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-themes="pad" data-operator="+" data-count="2" data-range="10" data-operations="5">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js
new file mode 100644
index 0000000..f78ca09
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help-template.js
@@ -0,0 +1,17 @@
+<h3> Calculation </h3>
+<h4> Arithmetic, simple operations </h4>
+ 
+<p>Interactivity trains add, subtract and multiply numbers. The goal is to enter the correct results. To check the answer click on the "v" button. If the result is incorrect, the calculation turns in red. If the result is correct, the calculation turns in green. </p>
+<p>Once the series is performed, the interactivity reviews all calculations</p>
+ 
+<p>"Reload" button generates new calculations. </p>
+ 
+<p>Enter the "Edit" mode to choose the : </p>
+<ul> <li>the theme of the App : pad, slate, or none (by default : pad), </li>
+<li> operation (addition, subtraction, multiplication),</li>
+<li> magnitude of proposed numbers,</li>
+<li> number of elements (2-4),</li>
+<li> number of operations (1-5). </li> </ul>
+
+<p> Results are automatically calculated by the interactivity. </p>
+<p>"Display" button comes back to the activity.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..1c64700
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/help_fr-template.js
@@ -0,0 +1,16 @@
+<h3>Calcul rapide</h3>
+<h4>Calcul mental, opérations simples</h4>
+ 
+<p>L’interactivité permet d’additionner, de soustraire ou de multiplier des nombres. Le but est d’effectuer l’opération en inscrivant le résultat. Une fois la réponse saisie, le bouton “v” permet de vérifier la réponse. L’interactivité vérifie la réponse en passant l'opération en vert ou en rouge.</p>
+<p>Une fois la série effectuée, l'interactivité affiche les calculs effectués.</p>
+ 
+<p>Le bouton “Recharger” génère automatiquement de nouveaux calculs.</p>
+ 
+<p>Le bouton "Modifier" vous permet de choisir :</p>
+<ul><li>le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+<li>l’opération à effectuer (addition, soustraction, multiplication),</li>
+<li>l’ordre de grandeur des nombres proposés,</li>
+<li>le nombre d'éléments de l’opération (2 à 4),</li>
+<li>le nombre d’opérations (1 à 5).</li></ul>
+
+<p>Le résultat des opérations n’est pas à inscrire dans le mode "Edition", il est calculé automatiquement par l‘interactivité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/main.js
new file mode 100644
index 0000000..2943664
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/main.js
@@ -0,0 +1,114 @@
+function onTemplateLoadedCallback() {
+
+}
+
+function change() {
+	$(".pagination .current").removeClass("current");
+	$(".operations .current").removeClass("current");
+}
+
+function open(index) {
+	$(".pagination li").eq(index).addClass("current");
+	$(".operations li").eq(index).addClass("current");
+}
+
+function reloadApp(app) {
+	var operator = app.parameters.value("operator");
+	var range = parseInt(app.parameters.value("range"));
+	var count = parseInt(app.parameters.value("count"));
+	var operations = parseInt(app.parameters.value("operations"));
+	
+	$scene = $("#scene");
+	$scene.empty();
+
+	$operationContainer = $("<div id='operations'></div>");
+	$scene.append($operationContainer);
+
+	$pagination = $("<ul class='pagination'></ul>");
+	$operationContainer.append($pagination);
+	for (var i = 0; i < operations; i++)
+		$("<li><span>"+(i+1)+"</span></li>").appendTo($pagination);
+
+	$operations = $("<ul class='operations'></ul>");
+	$operationContainer.append($operations);
+
+	var opes = [];
+	var submitted = [];
+
+	for (var i = 0; i < operations; i++) {
+		var ope = [];
+		for (var j = 0; j < count; j++) {
+			ope.push(Math.floor(Math.random()*range));
+		}
+		opes.push(ope);
+
+		var $text = $("<div>"+ope.join("<span class='operator'>"+operator+"</span>")+"<span class='equal'>=</span><span class='input'>...</span><button type='button' disabled>Submit</button></div>");
+		var $li = $("<li/>");
+		$li.append($text);
+		$operations.append($li);
+	}
+
+	if(!app.onEdit) {
+		$(".input", $operations).each(function(){
+			var $input = $(this);
+			$input.get(0).contentEditable = true;
+			$input.focus(function(){
+				if($(this).text() == "...")
+					$(this).text("");
+			});
+			$input.keyup(function(){
+				var v = parseInt($(this).text().trim());
+				if(isNaN(v)) {
+					$(this).next().attr("disabled", true);
+				}else{
+					$(this).next().attr("disabled", false);
+				}
+			});
+			$input.bind('blur', function(){
+				var v = parseInt($(this).text().trim());
+				if(isNaN(v)) {
+					$(this).text("...");
+					$(this).next().attr("disabled", true);
+				}else{
+					$(this).next().attr("disabled", false);
+				}
+			});
+		});
+		$("button", $operations).click(function(){
+			var $button = $(this);
+			var v = $button.prev().text();
+			if(!isNaN(v)) {
+				var $li = $button.closest('li');
+				$button.remove();
+				var index = $li.index();
+				submitted[index] = v;
+				var waiting = eval(opes[index].join(operator));
+				var clazz = (waiting == v ? "succeed" : "failed");
+				$pagination.find("li").eq(index).addClass(clazz);
+				$li.addClass(clazz);
+				setTimeout(function(){
+					change();
+					$li.addClass("closed");
+					if(index == (operations-1)) {
+						$operationContainer.addClass("finish");
+					}else
+						open(index+1);
+				}, 2000);
+			}
+		});
+	}
+	open(0);
+}
+
+function reloadCallback(parameter) {
+	reloadApp(this);
+}
+
+$(document).ready(function(){
+	var callbacks = {
+		onTemplatesLoaded: onTemplateLoadedCallback,
+		onEdit: reloadApp,
+		onView: reloadApp
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/templates.js
new file mode 100644
index 0000000..555924e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Calcul.wgt/js/templates.js
@@ -0,0 +1,64 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+				
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.calcul.parameters.label.operator}}'+
+					'<select name="operator" role="parameter">'+
+						'<option value="*">*</option>'+
+						'<option value="+">+</option>'+						
+						'<option value="-">-</option>'+						
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.calcul.parameters.label.range}}'+
+					'<select name="range" role="parameter">'+
+						'<option value="10">< 10</option>'+
+						'<option value="100">< 100</option>'+						
+						'<option value="1000">< 1000</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.calcul.parameters.label.count}}'+
+					'<select name="count" role="parameter">'+
+						'<option value="2">2</option>'+
+						'<option value="3">3</option>'+						
+						'<option value="4">4</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.calcul.parameters.label.operations}}'+
+					'<select name="operations" role="parameter">'+
+						'<option value="2">2</option>'+
+						'<option value="3">3</option>'+						
+						'<option value="5">5</option>'+
+						'<option value="10">10</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'/*+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.transformation.parameters.label.number}}'+
+					'<input  class="tiny" type="number" name="number" min="2" role="parameter">'+
+				'</label>'+
+			'</div>'+
+			'<div id="edit-cards">'+
+			'</div>';
+			*/
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml
new file mode 100644
index 0000000..60aa658
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/config.xml	
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="700" 
+        ub:resizable="true">     
+   
+    <name>Notes</name>
+    <author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA
+    </author>
+    <description>Ordonner des images</description>
+		
+    <content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/css/basic.css
new file mode 100644
index 0000000..af5b30e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/css/basic.css	
@@ -0,0 +1,412 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid #666;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid #666;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 0 0;
+    min-height: 45px;
+}
+
+.imgs_cont{
+    min-width: 170px;
+    min-height: 174px;
+    margin: 0;
+    border-top: 2px dashed #ccc;
+    border-bottom: 2px dashed #ccc;
+    margin-bottom: 5px;
+}
+
+.all_imgs{
+    min-width: 170px;
+    min-height: 142px;
+    margin: 0;
+    border-top: 2px dashed #e6f6ff;
+    border-bottom: 2px dashed #e6f6ff;
+    margin-bottom: 5px;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.img_block{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    cursor: pointer;
+    display: inline-block;
+    position: relative;
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+}
+
+.close_img{
+    width: 30px;
+    height: 30px;    
+    background-repeat: no-repeat;
+    position: absolute;    
+    right: -15px;
+    background-image: url(../img/close_img.png);
+    top: -15px;
+    cursor: pointer;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.del_category, .add_category{
+    margin: 0 10px;
+    width: 30px;
+    height: 30px;
+    float: right;
+    cursor: pointer;
+    background-color: transparent;
+    border: none;
+}
+
+.del_category{
+    background-image: url(../img/minus.png);
+}
+
+.add_category{
+    background-image: url(../img/plus.png);
+}
+
+.cat_desc{
+    width: 100%;
+    height: 25px;
+    margin-bottom: 5px;
+    text-align: center;
+    border: none;
+    background-color: #c3e9ff;
+}
+
+.dropHere{
+    background-color: #C3E9FF !important;
+}
+
+.dropBack{
+
+}
+
+.def_cont{
+    background-color: #E6F6FF;
+}
+
+.red_cont{
+    background-color: #f99;
+}
+
+.green_cont{
+    background-color: #9f9;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/icon.svg
new file mode 100644
index 0000000..fd5fa9c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/icon.svg	
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.6655" y1="0" x2="53.6655" y2="107.3335">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<rect x="10.4" y="69.9" fill-rule="evenodd" fill="#FFFFFF" width="28.5" height="23.2"/>
+	<g id="PfcyK0_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M37.3,77.3c-5.2-0.6-9.8,0.9-15,1c-0.2,0-0.4,0-0.6,0c-2.6-0.4-4.9-1-7.8-1.1
+					c-0.5-0.1-1.2,0-1.8-0.1c0-1.8,0-3.7,0-5.5c8.4,0,16.8,0,25.2,0C37.3,73.5,37.3,75.4,37.3,77.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M12.1,77.2C12.1,77.1,12.1,77.1,12.1,77.2c0.6,0,1.3-0.1,1.8,0
+					C13.3,77.2,12.7,77.2,12.1,77.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M21.7,78.3c0.2,0,0.4,0,0.6,0C22.2,78.4,21.7,78.4,21.7,78.3z"/>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M23.7,80.8c4.5,0,8.9,0,13.6,0c0,0.9,0,1.8,0,2.8c-0.4-0.1-0.8,0-1.2-0.3
+					c-0.3,0.1-0.4,0.3-0.9,0.2c-0.2-0.1-0.6-0.1-0.8,0c-0.7,0.2-1.7,0-2.2-0.3c-0.2-0.1-0.1,0.2-0.3,0.2c-1.6-0.3-3-0.8-4.9-0.8
+					c-0.1-0.1-0.5,0-0.7-0.1c-2.3-0.2-4.7-0.4-6.5-1.1c-0.5,0-0.9-0.2-1.5-0.2c-0.1-0.1-0.5,0-0.7,0c-0.9,0.1-1.5-0.1-2.1-0.3
+					c0.5-0.1,1.3,0.1,1.9,0c0.2,0.1,0.8,0.1,1.1,0c0.2,0,0.2,0,0.4-0.1c0.2,0,0.4,0,0.6,0c0.1,0,0.1,0,0.2,0c0.4,0.1,1.1,0.1,1.5,0
+					c0.4,0,0.8-0.1,1.2-0.1c0.2,0,0.6,0.1,0.8,0c0.1,0,0.1,0,0.2,0C23.3,80.8,23.6,80.9,23.7,80.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M23.1,80.8c0.1-0.1,0.4,0,0.6-0.1C23.6,80.9,23.3,80.8,23.1,80.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M22.2,80.9c0.2-0.1,0.5,0,0.8,0C22.8,81,22.4,80.9,22.2,80.9z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M18.7,81c0.1-0.1,0.5-0.1,0.6,0C19.1,81,18.9,81,18.7,81z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M19.5,81c0.5,0,1,0,1.5,0C20.6,81.1,19.9,81.1,19.5,81z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M17.3,81c0.4,0,0.7,0,1.1,0C18.1,81.1,17.6,81.1,17.3,81z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M17.5,81.3c0.2,0,0.6-0.1,0.7,0C18,81.3,17.7,81.4,17.5,81.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M26.3,82.5c0.2,0,0.6-0.1,0.7,0.1C26.8,82.6,26.4,82.7,26.3,82.5z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M37.3,87.3c0,0.2,0,0.3,0,0.5c-0.9,0.4-2,0.4-3.2,0.5C35,87.8,36,87.4,37.3,87.3z"
+					/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M18.2,81.3c0.6,0,1,0.1,1.5,0.2c1.9,0.7,4.2,0.8,6.5,1.1c0.1,0.1,0.5,0,0.7,0.1
+					c1.9,0,3.4,0.4,4.9,0.8c0.2,0.1,0.1-0.2,0.3-0.2c0.6,0.3,1.5,0.5,2.2,0.3c0.1,0.1,0.5,0,0.8,0c0.5,0.1,0.6,0,0.9-0.2
+					c0.4,0.3,0.8,0.1,1.2,0.3c0,1.2,0,2.4,0,3.5c-0.5-0.1-1.1,0.3-1.5,0.2c0,0,0-0.1,0-0.1c-0.3,0-0.5,0.2-0.7,0.2
+					c-0.1,0-0.2-0.1-0.3-0.1c-0.3,0-0.8,0.3-1.3,0.3c-0.2,0,0.2-0.2,0-0.4c-0.5,0.2-1.4,0.5-1.8,0.1c-1.5,0.4-3.3,0.7-5.1,0.6
+					c1.1-0.4,2.4-0.4,3.5-0.7c-3.4-0.2-5.8,0.6-9,0.8c0.1-0.3,0.5-0.2,0.7-0.2c1.6-0.2,3.4-0.6,4.7-1.2c-1.3,0-2.6,0.6-4,0.7
+					c-0.8,0.1-1.5,0-2.2,0.3c0.9-0.8,2.8-0.8,3.8-1.5c-0.4-0.2-0.9-0.1-1.3,0c-0.2,0,0.1-0.1,0.1-0.2c-0.7,0-1.3,0-1.9,0.1
+					c-0.1-0.1-0.3-0.1-0.3-0.3c-1.1,0.2-1.9-0.2-3,0c0-0.1,0.3-0.1,0.5-0.2c0.2-0.1,0.2-0.2,0.4-0.3c-1.1-0.3-2.5,0.1-3-0.7
+					c-1.6,0.2-1.9-1.2-3.3-1.3c0-0.1,0-0.1-0.1-0.1c0-2,0-4,0-5.9c0.6,0,1.2,0,1.8,0c2.9,0.1,5.2,0.7,7.8,1.1c0.1,0.1,0.5,0.1,0.6,0
+					c5.2,0,9.8-1.5,15-1c0,1.2,0,2.3,0,3.5c-4.6,0-9,0-13.6,0c-0.2,0-0.5-0.1-0.6,0.1c-0.1,0-0.1,0-0.2,0c-0.2,0-0.6-0.1-0.8,0
+					c-0.4,0-0.8,0.1-1.2,0.1c-0.5,0-1,0-1.5,0c-0.1,0-0.1,0-0.2,0c-0.1-0.1-0.5-0.1-0.6,0c-0.1,0-0.2,0.1-0.4,0.1
+					c-0.4,0-0.7,0-1.1,0c-0.5,0.1-1.3-0.1-1.9,0c0.6,0.2,1.2,0.3,2.1,0.3C17.7,81.4,18,81.3,18.2,81.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M34.5,83.5c0.2-0.1,0.6-0.1,0.8,0C35,83.4,34.6,83.5,34.5,83.5z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M12.1,83.1c0,0,0.1,0,0.1,0.1c1.4,0.1,1.8,1.5,3.3,1.3c0.6,0.8,1.9,0.4,3,0.7
+					c-0.2,0.1-0.2,0.2-0.4,0.3c-0.2,0.1-0.4,0-0.5,0.2c1.1-0.2,1.9,0.2,3,0c0,0.2,0.2,0.2,0.3,0.3c0.6-0.1,1.2-0.1,1.9-0.1
+					c0,0.1-0.3,0.2-0.1,0.2c0.3-0.1,0.9-0.2,1.3,0c-1,0.8-2.9,0.7-3.8,1.5c0.7-0.3,1.5-0.2,2.2-0.3c1.4-0.1,2.8-0.7,4-0.7
+					c-1.3,0.6-3.1,1-4.7,1.2c-0.2,0-0.6,0-0.7,0.2c3.2-0.1,5.7-1,9-0.8c-1.1,0.3-2.5,0.4-3.5,0.7c1.9,0.2,3.7-0.1,5.1-0.6
+					c0.4,0.4,1.3,0.1,1.8-0.1c0.2,0.2-0.2,0.4,0,0.4c0.5,0,0.9-0.3,1.3-0.3c0.1,0,0.2,0.1,0.3,0.1c0.2,0,0.4-0.2,0.7-0.2
+					c0,0,0,0.1,0,0.1c0.4,0.1,1-0.3,1.5-0.2c0,0.1,0,0.1,0,0.2c-1.2,0.2-2.3,0.5-3.2,1c1.2-0.1,2.3-0.1,3.2-0.5c0,1.2,0,2.4,0,3.6
+					c-8.4,0-16.8,0-25.2,0C12.1,88.6,12.1,85.8,12.1,83.1z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<rect x="43" y="69.9" fill-rule="evenodd" fill="#FFFFFF" width="28.5" height="23.2"/>
+	<g id="tykqki_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M60.2,74.4c0.2,0,0.4-0.1,0.5,0.1C60.5,74.4,60.3,74.5,60.2,74.4z"/>
+				<path fill-rule="evenodd" fill="#D9D931" d="M64.5,78.1c0.2,0,0.1,0.3,0.1,0.4C64.4,78.5,64.4,78.2,64.5,78.1z"/>
+				<path fill-rule="evenodd" fill="#D9D931" d="M65.5,79.6c0,0.1-0.1,0.1-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2
+					C65.2,79.5,65.5,79.5,65.5,79.6z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M53.7,81.5c-0.1,0.5,0.2,0.7,0.2,1.1c0.5,0.1,0.8,0.3,0.8,0.7
+					c0,0.4-0.6,0.4-0.4,0.8c0,0.1,0.1-0.1,0.3,0c0.3,0.5,1.3,0.3,2,0.4c-0.1,0.1-0.3,0.1-0.3,0.4c0.4,0,1.1-0.2,1.8-0.2
+					c0.4-0.4,1.2-0.2,1.6-0.1c-0.1,0.4-0.1,1.2,0,1.6c-0.1,0.1-0.5,0-0.7,0.1c-0.5,1-2.1,0.2-2.7-0.2c0.1,0.4,0.6,0.4,0.9,0.6
+					C56.3,87,55.4,86.5,55,86c-0.2,0,0,0.3-0.2,0.3c0.2,0.1,0.3,0.2,0.5,0.4c-0.3,0.1-0.7,0-1-0.1c-0.1,0.1,0.2,0.1,0.1,0.3
+					c-0.4,0-0.7-0.2-0.9-0.4c-0.1,0.1,0.2,0.2,0.1,0.5c-0.4-0.1-0.6-0.3-1-0.5c-0.4,0.2-0.7,0.1-1.2,0c0.1,0.1,0.3,0.1,0.4,0.2
+					c-0.5,0.2-0.9-0.1-1.3,0c-0.7,0.1-1.3,0.8-1.9,0.4c0.2-0.4,0.8-0.4,1.2-0.6c0-0.2-0.3-0.1-0.3-0.3c-0.1-0.2,0.2-0.1,0.3-0.1
+					c0-0.2-0.2-0.2-0.2-0.4c-0.4,0.1-0.5-0.4-0.7-0.6c-0.8,0-1.1,0.3-1.4,0.8c0,0.1,0.1,0.1,0.2,0.2c-0.4,0-0.5,0.2-0.6,0.6
+					c0.1,0.2,0.4,0.1,0.6,0.2c0,0.2-0.2,0.1-0.3,0.1c0,0.1,0.1,0.1,0.2,0.2c0.2-0.1,0.5,0,0.9,0.2c-0.6,0.9-2,0.4-3,0.2
+					c-0.3,0-0.5,0.1-0.8,0.2c0-1.8,0-3.5,0-5.3c3.3,0.2,5.7-0.6,9-0.4C53.8,81.9,53.6,81.5,53.7,81.5z"/>
+				<path fill-rule="evenodd" fill="#9DAD3A" d="M63.7,85.3c0.3,0,0.4,0.2,0.7,0.2C64.2,85.5,63.7,85.5,63.7,85.3z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M66,79.1c0.3-0.1,0.6,0,0.7,0.3c-0.1-0.2-0.4-0.1-0.5-0.3
+					C66.1,79.1,66.1,79.2,66,79.1C66,79.1,66,79.1,66,79.1z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M63.1,75.1c0,0.2,0.2,0.2,0.2,0.4c-0.2-0.1-0.3-0.2-0.5-0.4c0.2,0,0.2,0.2,0.3,0.2
+					C63,75.2,63,74.9,63.1,75.1z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M59,74c0.3-0.2,0.4,0.2,0.6,0.4C59.3,74.3,59.3,74,59,74z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M55.2,77.3c0,0.2-0.2,0.4-0.3,0.5C55,77.6,55.1,77.5,55.2,77.3z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M55.2,78.6c-0.1,0.3,0.2,0.6-0.1,0.7C55.4,79.1,55,78.8,55.2,78.6z"/>
+				<path fill-rule="evenodd" fill="#9DAD3A" d="M66.8,80.8c0,0.5-0.4,0.6-0.2,1.1c-0.3,0.2-0.4,0.7-0.1,1c-0.1,0-0.1,0-0.2,0
+					c0.1,0.6-0.7,0.6-0.4,1.1c0.3,0,0.4-0.4,0.6-0.2c-0.5,0.5-1.7,0.2-2.6,0.3c-0.4,1.1-2,0.1-2.8,0.3c-0.4,0.5-0.3,1.9,0.5,1.9
+					c0.4-0.3,1.5,0.1,1.7-0.5c0.5,0,1.1,0.3,1.6,0.1c0-0.1,0-0.2-0.1-0.3c0.3-0.1,0.9,0.5,1.1,0c0.8,0.1,1.5,0.5,2.3,0.5
+					c0.2-0.1,0.2-0.3,0.1-0.4c0.3,0,0.6,0.1,0.9,0c0.1-0.1-0.2-0.1-0.3-0.2c0.2,0,0.6,0.2,1.1,0.2c0,2.3,0,3.3,0,5.6
+					c-8.4,0-16.8,0-25.2,0c0-1.7,0-2.1,0-3.8c0.3,0,0.5-0.1,0.8-0.2c1,0.2,2.4,0.7,3-0.2c-0.3-0.1-0.7-0.3-0.9-0.2
+					c0-0.1-0.2-0.1-0.2-0.2c0.1,0,0.3,0.1,0.3-0.1c-0.2-0.1-0.5,0-0.6-0.2c0-0.3,0.2-0.5,0.6-0.6c-0.1-0.1-0.2-0.1-0.2-0.2
+					c0.2-0.5,0.6-0.8,1.4-0.8c0.2,0.2,0.3,0.7,0.7,0.6c0,0.2,0.2,0.2,0.2,0.4c-0.1,0-0.3-0.1-0.3,0.1c0,0.2,0.3,0.1,0.3,0.3
+					c-0.4,0.2-1,0.2-1.2,0.6c0.6,0.4,1.2-0.3,1.9-0.4c0.4-0.1,0.8,0.2,1.3,0c-0.1-0.1-0.3-0.1-0.4-0.2c0.5,0.1,0.9,0.2,1.2,0
+					c0.4,0.2,0.6,0.4,1,0.5c0.1-0.2-0.2-0.3-0.1-0.5c0.2,0.2,0.5,0.4,0.9,0.4c0.2-0.1-0.2-0.2-0.1-0.3c0.3,0,0.7,0.2,1,0.1
+					c-0.2-0.1-0.3-0.3-0.5-0.4c0.2,0,0-0.3,0.2-0.3c0.4,0.5,1.2,1,2.1,0.7c-0.3-0.2-0.8-0.2-0.9-0.6c0.6,0.4,2.1,1.2,2.7,0.2
+					c0.2,0,0.6,0.1,0.7-0.1c-0.1-0.4-0.1-1.1,0-1.6c-0.4-0.1-1.2-0.3-1.6,0.1c-0.6,0-1.3,0.2-1.8,0.2c0-0.2,0.2-0.2,0.3-0.4
+					c-0.7-0.1-1.7,0.1-2-0.4c-0.1-0.1-0.2,0.1-0.3,0c-0.2-0.4,0.3-0.5,0.4-0.8c0-0.4-0.3-0.6-0.8-0.7c0-0.4-0.2-0.6-0.2-1.1
+					c0-0.3,0-0.5,0-0.8c1,0,0.2-1.1,0.6-1.5c0.4,0,0.5,0.3,0.9,0.2c0.3-0.2,0-0.5,0.1-0.7c0-0.3-0.2-0.5-0.4-0.7c0,0,0-0.1,0-0.1
+					c0.1-0.1,0.3-0.3,0.3-0.5c0.5-0.8,0.8-1.7,1.6-2.1c0.2,0.2,0.8,0.3,1.1,0.1c0-0.2-0.2-0.1-0.1-0.4c0.2-0.1,0.5-0.2,0.3-0.5
+					c0.3-0.2,0.5-0.4,0.9-0.4c0.3,0,0.3,0.3,0.6,0.4c0.3,0,0.3,0.3,0.4,0.4c0.3,0,0.1-0.2,0.1-0.4c0.1-0.1,0.1,0,0.2,0
+					c0.1,0.1,0.4,0,0.5,0.1c0.1,0.2,0.3,0,0.6,0.2c0.1-0.3,0.4-0.4,0.9-0.3c-0.2,0.5,0.4,0.6,0.7,0.8c0.1,0.1,0.3,0.3,0.5,0.4
+					c0-0.2-0.2-0.2-0.2-0.4c0.4,0.2,0.7,0.5,1,0.9c0.2,0.1,0.1-0.1,0.3-0.1c0,0.2-0.1,0.3-0.1,0.5c0.7-0.2,1.1,0.6,1.5,1
+					c-0.2,0-0.1,0.3-0.3,0.2c0.1,0.6,0.4,0.9,0.7,1.3c-0.2,0-0.7,0.2-0.4,0.5c0.2,0,0-0.3,0.3-0.2c0,0,0,0,0,0.1
+					c0.1,0,0.1-0.1,0.3-0.1c0.1,0.2,0.4,0.1,0.5,0.3C67.1,79.7,67,80.3,66.8,80.8z M64.5,78.5c0.1-0.1,0.2-0.4-0.1-0.4
+					C64.4,78.2,64.4,78.5,64.5,78.5z M65.2,79.6c0,0.1,0.1,0.2,0.2,0.2c0-0.1,0.1-0.1,0.2-0.2C65.5,79.5,65.2,79.5,65.2,79.6z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M69.8,80.6c0,1.7,0,3.4,0,5.1c-0.4,0-0.8-0.2-1.1-0.2c0.1,0.1,0.4,0.1,0.3,0.2
+					c-0.3,0.1-0.5,0-0.9,0c0.1,0.2,0.1,0.3-0.1,0.4c-0.8,0-1.5-0.4-2.3-0.5c-0.2,0.5-0.8-0.1-1.1,0c0.1,0,0.1,0.1,0.1,0.3
+					c-0.5,0.2-1-0.1-1.6-0.1c-0.2,0.5-1.3,0.1-1.7,0.5c-0.7-0.1-0.9-1.4-0.5-1.9c0.8-0.1,2.4,0.8,2.8-0.3c0.9-0.1,2.1,0.3,2.6-0.3
+					C66.3,83.5,66.3,84,66,84c-0.4-0.5,0.5-0.5,0.4-1.1c0.1,0,0.1,0,0.2,0c-0.3-0.3-0.2-0.8,0.1-1c-0.2-0.4,0.1-0.5,0.2-1.1
+					C67.8,80.9,68.8,80.6,69.8,80.6z M64.4,85.5c-0.3,0-0.4-0.2-0.7-0.2C63.7,85.5,64.2,85.5,64.4,85.5z"/>
+				<path fill-rule="evenodd" fill="#D9D931" d="M69.8,80.6c-1,0-2,0.4-3,0.2c0.2-0.5,0.3-1.1-0.1-1.4c-0.1-0.2-0.4-0.3-0.7-0.3
+					c-0.2-0.1-0.1,0.2-0.3,0.2c-0.3-0.3,0.2-0.5,0.4-0.5c-0.3-0.3-0.6-0.7-0.7-1.3c0.2,0.1,0.1-0.2,0.3-0.2c-0.4-0.4-0.8-1.2-1.5-1
+					c0-0.2,0.1-0.3,0.1-0.5c-0.2,0-0.1,0.2-0.3,0.1c-0.2-0.4-0.6-0.7-1-0.9c-0.1-0.1,0,0.1,0,0.2c-0.1,0-0.1-0.2-0.3-0.2
+					c-0.3-0.2-0.9-0.3-0.7-0.8c-0.4-0.1-0.7,0-0.9,0.3c-0.2-0.2-0.5,0.1-0.6-0.2c-0.1-0.1-0.4,0-0.5-0.1c-0.1,0-0.1-0.1-0.2,0
+					c0,0.2,0.2,0.4-0.1,0.4c-0.1-0.1-0.1-0.4-0.4-0.4c-0.1-0.1-0.3-0.5-0.6-0.4c-0.4,0-0.7,0.2-0.9,0.4c0.2,0.3-0.1,0.4-0.3,0.5
+					c-0.1,0.2,0.1,0.2,0.1,0.4c-0.3,0.2-0.8,0.2-1.1-0.1c-0.8,0.4-1.1,1.3-1.6,2.1c-0.1,0.2-0.2,0.3-0.3,0.5c0,0,0,0.1,0,0.1
+					c0.2,0.2,0.3,0.4,0.4,0.7c-0.2,0.2,0.2,0.5-0.1,0.7c-0.3,0.1-0.5-0.2-0.9-0.2c-0.3,0.4,0.4,1.5-0.6,1.5c0,0.3,0,0.5,0,0.8
+					c-0.1,0,0,0.3-0.1,0.3c-3.3-0.2-5.7,0.6-9,0.4c0-4,0-6.7,0-10.7c8.4,0,16.8,0,25.2,0C69.8,75,69.8,77.1,69.8,80.6z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<rect x="71.5" y="63.4" fill-rule="evenodd" fill="#33342E" width="26.3" height="23.2"/>
+<path fill-rule="evenodd" fill="#33342E" d="M88.6,80.1c0.1,0.1,0.1,0.5,0,0.6C88.6,80.5,88.6,80.3,88.6,80.1z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M71,65.1c8.4,0,16.8,0,25.2,0c0,6.6,0,13.2,0,19.8c-8.4,0-16.8,0-25.2,0
+	c0-6.5,0-13.1,0-19.6C70.9,65.1,70.9,65.1,71,65.1z M89.3,80.8c0.1-0.5,0.1-1.1-0.1-1.5c0.2,0.1,0.7-0.1,0.8-0.1
+	c0,0.1-0.1,0.2-0.1,0.4c1.3-1,0.3-3.7-0.5-4.5c0-0.2,0.1-0.2,0.1-0.4c-0.8-1.4-3.2-1.6-4.4-2.5c-1.4-1-2.4-1.8-3.5-2.9
+	c-0.2-0.3-0.4-0.5-0.7-0.7c-0.2-0.1-0.3-0.3-0.5-0.4c-0.4-0.3-0.8-0.8-0.7-1.4c-0.2,0-0.2,0.2-0.5,0.2c0-0.1,0-0.3-0.1-0.4
+	c-0.3,0.9-0.9,1.5-1.4,2.3c0.5,1.1,1-0.1,1.5-0.2c0.3,0,0.8,0.7,1,1.1c0.6,1,1,1.7,1.6,2.6c0.2,0.3,0.8,0.9,0.9,1.3
+	c0.1,0.5-0.1,1.1-0.1,1.6c0.2,1,0.7,1.9,0.8,2.8c0,0.6-0.3,1.2-0.1,1.8c-0.1,0.1,0,0.4-0.1,0.6c0,0.1,0,0.1,0,0.2
+	c-0.1,0.1,0,0.5,0,0.7c0.1,0.5-0.2,0.6-0.3,1c0.1,0.1,0.4,0,0.6,0c0.1-0.4,0.3-0.8,0.3-1.3c0.1-0.2,0.1-0.7,0-0.8
+	c0-0.5,0.1-0.9,0.3-1.2c0.1,0.5,0.1,1.1,0.3,1.6c0,0.4,0,0.9,0,1.3c0,0.3-0.3,0.3-0.4,0.6c0.2,0.1,0.4,0.1,0.7,0.1
+	c0.1-0.3,0.2-0.6,0.3-1c0.1-0.1,0.1-0.5,0-0.5c-0.1-1,0.2-2.4-0.2-3.3c0.1-0.3,0.3-0.6,0.4-0.9c0.1-0.2,0.8,0,1-0.2
+	c0.4,0,0.7-0.1,1-0.3c0.8,0.7,0.9,2.2,1.3,3.3c-0.1,0.1,0,0.5-0.1,0.7c0,0.7-0.2,1.2-0.4,1.8c0,0,0.1,0,0.1,0c0.2,0,0.5,0.1,0.5-0.1
+	c0,0,0-0.1,0-0.1c0.1-0.4,0.1-1,0.1-1.5c0.1-0.1,0.1-0.5,0-0.6c0-0.3-0.1-0.8,0.1-1.1c0.1,0.5,0.2,1,0.3,1.7c0,0.2-0.1,0.4,0.1,0.5
+	c0.2,0.6-0.1,0.9-0.1,1.4c0.7,0.2,0.6-0.7,0.5-1.3C89.3,81.2,89.4,80.9,89.3,80.8z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M80.8,68.6c0.3,0.2,0.5,0.5,0.7,0.7c-0.2-0.1-0.3-0.2-0.5-0.4
+	C81,68.8,80.9,68.8,80.8,68.6z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M80.4,68.2c0.2,0.1,0.3,0.3,0.5,0.4c0.1,0.1,0.2,0.2,0.3,0.3
+	C80.8,68.7,80.6,68.5,80.4,68.2z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M81.5,69.3c1.1,1,2.1,1.9,3.5,2.9c1.2,0.9,3.7,1.1,4.4,2.5c0,0.2-0.1,0.2-0.1,0.4
+	c0.8,0.8,1.8,3.5,0.5,4.5c0-0.2,0.1-0.3,0.1-0.4c-0.1,0-0.5,0.2-0.8,0.1c0.1,0.4,0.1,1.1,0.1,1.5c0,0.2-0.1,0.4,0.1,0.5
+	c0.1,0.5,0.2,1.5-0.5,1.3c0-0.4,0.3-0.7,0.1-1.4c0-0.2,0.1-0.4-0.1-0.5c0-0.6-0.2-1.1-0.3-1.7c-0.1,0.3,0,0.7-0.1,1.1
+	c0,0.2,0,0.4,0,0.6c0,0.5,0,1-0.1,1.5c0,0,0,0,0,0.1c-0.1,0.1-0.4,0-0.5,0.1c0,0-0.1,0-0.1,0c0.2-0.5,0.4-1.1,0.4-1.8
+	c0.1-0.1,0-0.5,0.1-0.7c-0.4-1.1-0.5-2.6-1.3-3.3c-0.3,0.1-0.6,0.2-1,0.3c-0.3,0.1-0.9-0.2-1,0.2c-0.1,0.3-0.2,0.6-0.4,0.9
+	c0.4,0.9,0.1,2.3,0.2,3.3c0,0.2,0,0.3,0,0.5c-0.1,0.3-0.1,0.7-0.3,1c-0.3,0-0.5,0-0.7-0.1c0.1-0.3,0.4-0.3,0.4-0.6
+	c0.1-0.3,0.1-1,0-1.3c-0.1-0.5-0.1-1.1-0.3-1.6c-0.2,0.3-0.3,0.7-0.3,1.2c0,0.3,0,0.5,0,0.8c0,0.5-0.1,0.9-0.3,1.3
+	c-0.2,0-0.4,0-0.6,0c0-0.4,0.3-0.5,0.3-1c0.1-0.1,0-0.5,0-0.7c0-0.1,0-0.1,0-0.2c0.1-0.1,0-0.4,0.1-0.6c-0.2-0.6,0.1-1.2,0.1-1.8
+	c0-0.9-0.6-1.8-0.8-2.8c-0.1-0.5,0.1-1.1,0.1-1.6c-0.1-0.3-0.7-1-0.9-1.3c-0.6-0.9-1-1.7-1.6-2.6c-0.2-0.3-0.7-1.1-1-1.1
+	c-0.5,0-1,1.3-1.5,0.2c0.4-0.8,1.1-1.4,1.4-2.3c0.1,0.1,0.1,0.3,0.1,0.4c0.3,0.1,0.3-0.1,0.5-0.2c0,0.6,0.3,1.1,0.7,1.4
+	c0.2,0.3,0.4,0.5,0.7,0.7C81.2,69.1,81.3,69.3,81.5,69.3z M88.6,77.3c0.1,0.6,0.6,1.3,0.7,1.9c0.3-0.5,0.9-0.9,1-1.6
+	c0-0.8-0.6-1.6-1.1-2.1C88.9,76.1,88.5,76.5,88.6,77.3z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M87.9,82.4c0.1-0.1,0.4,0,0.5-0.1C88.4,82.4,88.1,82.3,87.9,82.4z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M85,77c0.1-0.3,0.7-0.1,1-0.2C85.8,77,85.1,76.7,85,77z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M89.2,75.5c0.5,0.5,1.1,1.2,1.1,2.1c0,0.7-0.6,1.1-1,1.6c-0.1-0.6-0.6-1.2-0.7-1.9
+	C88.5,76.5,88.9,76.1,89.2,75.5z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M83.3,79.9c0,0.2,0.1,0.5-0.1,0.6C83.2,80.3,83.1,80,83.3,79.9z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M88.3,79.9c0,0.2,0.1,0.6-0.1,0.7C88.3,80.4,88.2,80,88.3,79.9z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M83.7,80.2c0.1,0.2,0.1,0.7,0,0.8C83.7,80.8,83.7,80.5,83.7,80.2z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M83.2,80.6c0,0.2,0.1,0.6,0,0.7C83.2,81.1,83.1,80.7,83.2,80.6z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M88.9,80.7c0.1,0.1,0,0.4,0.1,0.5C88.8,81.2,88.9,80.9,88.9,80.7z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M89.3,80.8c0.1,0.1,0,0.4,0.1,0.5C89.2,81.3,89.3,81,89.3,80.8z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M84.8,81.1c0.1,0.1,0.1,0.4,0,0.5C84.8,81.5,84.8,81.3,84.8,81.1z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M84.2,80.6c0.1,0.3,0.1,1,0,1.3C84.2,81.5,84.2,81,84.2,80.6z"/>
+<g>
+	<rect x="67.3" y="60.4" fill-rule="evenodd" fill="#FFFFFF" width="28.5" height="23.2"/>
+	<g id="a6fCol_1_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#D67C28" d="M86.6,77.1c0.1,0.1,0.1,0.5,0,0.6C86.6,77.5,86.6,77.3,86.6,77.1z"/>
+				<path fill-rule="evenodd" fill="#F99E44" d="M69,62.1c8.4,0,16.8,0,25.2,0c0,6.6,0,13.2,0,19.8c-8.4,0-16.8,0-25.2,0
+					c0-6.5,0-13.1,0-19.6C68.9,62.1,68.9,62.1,69,62.1z M87.3,77.8c0.1-0.5,0.1-1.1-0.1-1.5c0.2,0.1,0.7-0.1,0.8-0.1
+					c0,0.1-0.1,0.2-0.1,0.4c1.3-1,0.3-3.7-0.5-4.5c0-0.2,0.1-0.2,0.1-0.4c-0.8-1.4-3.2-1.6-4.4-2.5c-1.4-1-2.4-1.8-3.5-2.9
+					c-0.2-0.3-0.4-0.5-0.7-0.7c-0.2-0.1-0.3-0.3-0.5-0.4c-0.4-0.3-0.8-0.8-0.7-1.4c-0.2,0-0.2,0.2-0.5,0.2c0-0.1,0-0.3-0.1-0.4
+					c-0.3,0.9-0.9,1.5-1.4,2.3c0.5,1.1,1-0.1,1.5-0.2c0.3,0,0.8,0.7,1,1.1c0.6,1,1,1.7,1.6,2.6c0.2,0.3,0.8,0.9,0.9,1.3
+					c0.1,0.5-0.1,1.1-0.1,1.6c0.2,1,0.7,1.9,0.8,2.8c0,0.6-0.3,1.2-0.1,1.8c-0.1,0.1,0,0.4-0.1,0.6c0,0.1,0,0.1,0,0.2
+					c-0.1,0.1,0,0.5,0,0.7c0.1,0.5-0.2,0.6-0.3,1c0.1,0.1,0.4,0,0.6,0c0.1-0.4,0.3-0.8,0.3-1.3c0.1-0.2,0.1-0.7,0-0.8
+					c0-0.5,0.1-0.9,0.3-1.2c0.1,0.5,0.1,1.1,0.3,1.6c0,0.4,0,0.9,0,1.3c0,0.3-0.3,0.3-0.4,0.6c0.2,0.1,0.4,0.1,0.7,0.1
+					c0.1-0.3,0.2-0.6,0.3-1c0.1-0.1,0.1-0.5,0-0.5c-0.1-1,0.2-2.4-0.2-3.3c0.1-0.3,0.3-0.6,0.4-0.9c0.1-0.2,0.8,0,1-0.2
+					c0.4,0,0.7-0.1,1-0.3c0.8,0.7,0.9,2.2,1.3,3.3c-0.1,0.1,0,0.5-0.1,0.7c0,0.7-0.2,1.2-0.4,1.8c0,0,0.1,0,0.1,0
+					c0.2,0,0.5,0.1,0.5-0.1c0,0,0-0.1,0-0.1c0.1-0.4,0.1-1,0.1-1.5c0.1-0.1,0.1-0.5,0-0.6c0-0.3-0.1-0.8,0.1-1.1
+					c0.1,0.5,0.2,1,0.3,1.7c0,0.2-0.1,0.4,0.1,0.5c0.2,0.6-0.1,0.9-0.1,1.4c0.7,0.2,0.6-0.7,0.5-1.3C87.3,78.2,87.4,77.9,87.3,77.8z
+					"/>
+				<path fill-rule="evenodd" fill="#F4983C" d="M78.8,65.6c0.3,0.2,0.5,0.5,0.7,0.7c-0.2-0.1-0.3-0.2-0.5-0.4
+					C79,65.8,78.9,65.8,78.8,65.6z"/>
+				<path fill-rule="evenodd" fill="#C86F28" d="M78.4,65.2c0.2,0.1,0.3,0.3,0.5,0.4c0.1,0.1,0.2,0.2,0.3,0.3
+					C78.8,65.7,78.6,65.5,78.4,65.2z"/>
+				<path fill-rule="evenodd" fill="#C06728" d="M79.5,66.3c1.1,1,2.1,1.9,3.5,2.9c1.2,0.9,3.7,1.1,4.4,2.5c0,0.2-0.1,0.2-0.1,0.4
+					c0.8,0.8,1.8,3.5,0.5,4.5c0-0.2,0.1-0.3,0.1-0.4c-0.1,0-0.5,0.2-0.8,0.1c0.1,0.4,0.1,1.1,0.1,1.5c0,0.2-0.1,0.4,0.1,0.5
+					c0.1,0.5,0.2,1.5-0.5,1.3c0-0.4,0.3-0.7,0.1-1.4c0-0.2,0.1-0.4-0.1-0.5c0-0.6-0.2-1.1-0.3-1.7c-0.1,0.3,0,0.7-0.1,1.1
+					c0,0.2,0,0.4,0,0.6c0,0.5,0,1-0.1,1.5c0,0,0,0,0,0.1c-0.1,0.1-0.4,0-0.5,0.1c0,0-0.1,0-0.1,0c0.2-0.5,0.4-1.1,0.4-1.8
+					c0.1-0.1,0-0.5,0.1-0.7c-0.4-1.1-0.5-2.6-1.3-3.3c-0.3,0.1-0.6,0.2-1,0.3c-0.3,0.1-0.9-0.2-1,0.2c-0.1,0.3-0.2,0.6-0.4,0.9
+					c0.4,0.9,0.1,2.3,0.2,3.3c0,0.2,0,0.3,0,0.5c-0.1,0.3-0.1,0.7-0.3,1c-0.3,0-0.5,0-0.7-0.1c0.1-0.3,0.4-0.3,0.4-0.6
+					c0.1-0.3,0.1-1,0-1.3c-0.1-0.5-0.1-1.1-0.3-1.6c-0.2,0.3-0.3,0.7-0.3,1.2c0,0.3,0,0.5,0,0.8c0,0.5-0.1,0.9-0.3,1.3
+					c-0.2,0-0.4,0-0.6,0c0-0.4,0.3-0.5,0.3-1c0.1-0.1,0-0.5,0-0.7c0-0.1,0-0.1,0-0.2c0.1-0.1,0-0.4,0.1-0.6
+					c-0.2-0.6,0.1-1.2,0.1-1.8c0-0.9-0.6-1.8-0.8-2.8c-0.1-0.5,0.1-1.1,0.1-1.6c-0.1-0.3-0.7-1-0.9-1.3c-0.6-0.9-1-1.7-1.6-2.6
+					c-0.2-0.3-0.7-1.1-1-1.1c-0.5,0-1,1.3-1.5,0.2c0.4-0.8,1.1-1.4,1.4-2.3c0.1,0.1,0.1,0.3,0.1,0.4c0.3,0.1,0.3-0.1,0.5-0.2
+					c0,0.6,0.3,1.1,0.7,1.4c0.2,0.3,0.4,0.5,0.7,0.7C79.2,66.1,79.3,66.3,79.5,66.3z M86.6,74.3c0.1,0.6,0.6,1.3,0.7,1.9
+					c0.3-0.5,0.9-0.9,1-1.6c0-0.8-0.6-1.6-1.1-2.1C86.9,73.1,86.5,73.5,86.6,74.3z"/>
+				<path fill-rule="evenodd" fill="#C86F28" d="M85.9,79.4c0.1-0.1,0.4,0,0.5-0.1C86.4,79.4,86.1,79.3,85.9,79.4z"/>
+				<path fill-rule="evenodd" fill="#C86F28" d="M83,74c0.1-0.3,0.7-0.1,1-0.2C83.8,74,83.1,73.7,83,74z"/>
+				<path fill-rule="evenodd" fill="#F99E44" d="M87.2,72.5c0.5,0.5,1.1,1.2,1.1,2.1c0,0.7-0.6,1.1-1,1.6c-0.1-0.6-0.6-1.2-0.7-1.9
+					C86.5,73.5,86.9,73.1,87.2,72.5z"/>
+				<path fill-rule="evenodd" fill="#D67C28" d="M81.3,76.9c0,0.2,0.1,0.5-0.1,0.6C81.2,77.3,81.1,77,81.3,76.9z"/>
+				<path fill-rule="evenodd" fill="#D67C28" d="M86.3,76.9c0,0.2,0.1,0.6-0.1,0.7C86.3,77.4,86.2,77,86.3,76.9z"/>
+				<path fill-rule="evenodd" fill="#D67C28" d="M81.7,77.2c0.1,0.2,0.1,0.7,0,0.8C81.7,77.8,81.7,77.5,81.7,77.2z"/>
+				<path fill-rule="evenodd" fill="#C86F28" d="M81.2,77.6c0,0.2,0.1,0.6,0,0.7C81.2,78.1,81.1,77.7,81.2,77.6z"/>
+				<path fill-rule="evenodd" fill="#D67C28" d="M86.9,77.7c0.1,0.1,0,0.4,0.1,0.5C86.8,78.2,86.9,77.9,86.9,77.7z"/>
+				<path fill-rule="evenodd" fill="#C86F28" d="M87.3,77.8c0.1,0.1,0,0.4,0.1,0.5C87.2,78.3,87.3,78,87.3,77.8z"/>
+				<path fill-rule="evenodd" fill="#C86F28" d="M82.8,78.1c0.1,0.1,0.1,0.4,0,0.5C82.8,78.5,82.8,78.3,82.8,78.1z"/>
+				<path fill-rule="evenodd" fill="#D67C28" d="M82.2,77.6c0.1,0.3,0.1,1,0,1.3C82.2,78.5,82.2,78,82.2,77.6z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="48.7,45 48.7,47 46.7,47 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="42.9" y1="47" x2="14.3" y2="47"/>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="12.4,47 10.4,47 10.4,45 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="10.4" y1="41" x2="10.4" y2="19.4"/>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="10.4,17.4 10.4,15.4 12.4,15.4 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="16.2" y1="15.4" x2="44.8" y2="15.4"/>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="46.7,15.4 48.7,15.4 48.7,17.4 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="48.7" y1="21.4" x2="48.7" y2="43"/>
+</g>
+<g>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="95.6,45 95.6,47 93.6,47 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="89.8" y1="47" x2="61.2" y2="47"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="59.3,47 57.3,47 57.3,45 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="57.3" y1="41" x2="57.3" y2="19.4"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="57.3,17.4 57.3,15.4 59.3,15.4 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="63.1" y1="15.4" x2="91.7" y2="15.4"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="93.6,15.4 95.6,15.4 95.6,17.4 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="95.6" y1="21.4" x2="95.6" y2="43"/>
+</g>
+<path fill="#33342E" d="M91.3,39.8c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,4.7,16.2,4.8,30h1
+	c0,0,5.5-13.9-1.5-32L91.3,39.8z"/>
+<path fill="#67C8F0" d="M88.9,36.3c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,7,19.7,7.1,33.4h1
+	c0,0,3.2-17.4-3.8-35.5L88.9,36.3z"/>
+<rect x="68.9" y="83.6" fill-rule="evenodd" fill="#8C8C8C" width="2.6" height="3"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/green_point.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/green_point.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/green_point.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/minus.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/minus.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/minus.png
copy to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/minus.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/plus.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/plus.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/plus.png
copy to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/plus.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/red_point.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/img/red_point.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/red_point.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html
new file mode 100644
index 0000000..e79952a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/index.html	
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js
new file mode 100644
index 0000000..666d71e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/js/script.js	
@@ -0,0 +1,815 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    first_desc: "Odd numbers", 
+    second_desc: "Even numbers", 
+    enter: "Enter your category name here ...",
+    add: "Add new block",
+    wgt_name: "Categorize pictures",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2> Categorize pictures </h2> </p>" +
+"<p> <h3> Sort pictures according to the name of the category</h3> </p>" +
+
+"<p> Drag and drop pictures in the corresponding category. All pictures should be placed to get a feed back from interactivity. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green.</p> "+
+
+"<p> “Reload” button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li> modify an exercise or create a new one.</li> </ul>" +
+
+
+"<p>To create a new exercise : </p>" +
+"<ul> <li> click on “New block”,</li>" +
+"<li> edit the category clicking on the text field “Enter your category name here ...”,</li>" +
+"<li> add an another category clicking on the “+”,</li>" +
+"<li> drag and drop pictures from your library on the correct category.</li> </ul>" +
+"<p> To delete a picture, click on the cross button on the frame.</p>" +
+"<p> To remove a category, click on the “-” sign on the right.</p>" +
+"<p> To delete a whole block, click on the cross on the left.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_images","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"#E6F6FF\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#C3E9FF\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"#E6F6FF\"); return onDropTarget(this,event);")
+                        .removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src");
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src");
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.link = $(this).find("img").attr("src");
+                img.ht = $(this).find("img").height();
+                img.wd = $(this).find("img").width();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    if(window.sankore)
+        sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        var img = $("<img src=\"" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);                        
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        img = $("<img src=\"" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });          
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
+                    img = $("<img src=\"" + data[i].all_imgs[j].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                    img.height(data[i].all_imgs[j].ht);
+                    if((120 - data[i].all_imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].all_imgs[j].ht)/2 + "px 0");
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });            
+                container.appendTo("#data");
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img1);
+    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img3);
+    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img5);
+    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
+            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+            var img_block = $("<div class='img_block' style='text-align: center;'>");
+            $("<div class='close_img'>").appendTo(img_block);            
+            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
+            var tmp_img = $("<img style='display: inline;'/>").attr("src", tmp).appendTo(img_block);
+            img_block.draggable({
+                helper:'clone',
+                zIndex:100,
+                appendTo: '#data'
+            });
+            $(obj).append(img_block);
+            
+            if(tmp_img.height() == 0){
+                var tmp_id = setInterval(function(){
+                    if(tmp_img.height() != 0){
+                        if(tmp_img.height() >= tmp_img.width())
+                            tmp_img.attr("height", "120");
+                        else{
+                            tmp_img.attr("width","120");
+                            var h = tmp_img.height();
+                            tmp_img.attr("height",h);
+                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                        }
+                        clearInterval(tmp_id);
+                    }
+                }, 10);
+            } else {
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }  
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/index.html
new file mode 100644
index 0000000..41eedfd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){    
+                sankore.enableDropOnWidget(false);
+                start();                   
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..08afbca
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/fr/js/script.js	
@@ -0,0 +1,814 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier",
+    first_desc: "Les nombres impairs", 
+    second_desc: "Les nombres pairs", 
+    enter: "Saisir le nom de la catégorie ici ...",
+    add: "Nouveau bloc",
+    wgt_name: "Catégoriser des images",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Catégoriser des images</h2></p>"+
+    "<p><h3>Classer des images en fonction de la dénomination de la catégorie.</h3></p>"+
+
+    "<p>L’activité s’effectue par un glisser-déposer de l’image dans la catégorie correspondante. Une fois que toutes les images sont classées dans la bonne catégorie, la zone se colore en vert.</p>"+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun) ,</li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, une zone bleue apparaît, c’est une catégorie, puis</p>"+
+    "<ul><li>insérez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte “Saisir le nom de la catégorie ici …”,</li>"+
+    "<li>insérez des images dans la catégorie par glisser-déposer des images à partir de votre bibliothèque,</li>"+
+    "<li>ajoutez ensuite une catégorie (ou plusieurs)  en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des images.</li></ul>"+
+    "<p>Pour supprimer une image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+ 
+    "<p>Pour supprimer une catégorie, cliquez sur le signe “-” situé à droite de celle-ci.</p>"+
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_images","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                sankore.enableDropOnWidget(false);
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                sankore.enableDropOnWidget(true);
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"#E6F6FF\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#C3E9FF\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"#E6F6FF\"); return onDropTarget(this,event);")
+                        .removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.link = $(this).find("img").attr("src").replace("../../","");                
+                img.ht = $(this).find("img").height();
+                img.wd = $(this).find("img").width();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }); 
+                    checkCorrectness(imgs_container);
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
+                    img = $("<img src=\"../../" + data[i].all_imgs[j].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                    img.height(data[i].all_imgs[j].ht);
+                    if((120 - data[i].all_imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].all_imgs[j].ht)/2 + "px 0");
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });            
+                container.appendTo("#data");
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
+            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+            var img_block = $("<div class='img_block' style='text-align: center;'>");
+            $("<div class='close_img'>").appendTo(img_block);            
+            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
+            var tmp_img = $("<img style='display: inline;'/>").attr("src", "../../" + tmp).appendTo(img_block);
+            img_block.draggable({
+                helper:'clone',
+                zIndex:100,
+                appendTo: '#data'
+            });
+            $(obj).append(img_block);
+            
+            if(tmp_img.height() == 0){
+                var tmp_id = setInterval(function(){
+                    if(tmp_img.height() != 0){
+                        if(tmp_img.height() >= tmp_img.width())
+                            tmp_img.attr("height", "120");
+                        else{
+                            tmp_img.attr("width","120");
+                            var h = tmp_img.height();
+                            tmp_img.attr("height",h);
+                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                        }
+                        clearInterval(tmp_id);
+                    }
+                }, 10);
+            } else {
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }  
+        }
+        exportData();
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/index.html
new file mode 100644
index 0000000..267fe78
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){   
+                sankore.enableDropOnWidget(false);
+                start();                    
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..0684401
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/locales/ru/js/script.js	
@@ -0,0 +1,795 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    first_desc: "Нечетные числа", 
+    second_desc: "Четные числа", 
+    enter: "Введите название категории ...",
+    add: "Новый блок",
+    wgt_name: "Категории",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_images","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                sankore.enableDropOnWidget(false);
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                sankore.enableDropOnWidget(true);
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"#E6F6FF\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#C3E9FF\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"#E6F6FF\"); return onDropTarget(this,event);")
+                        .removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.style = $("#style_select").find("option:selected").val();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.link = $(this).find("img").attr("src").replace("../../","");                    
+                    img_obj.ht = $(this).find("img").height();
+                    img_obj.wd = $(this).find("img").width();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.link = $(this).find("img").attr("src").replace("../../","");                
+                img.ht = $(this).find("img").height();
+                img.wd = $(this).find("img").width();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        } else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            
+                container.appendTo("#data");
+            } else {
+                container = $("<div class='cont'>");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
+                        img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                        img.height(data[i].conts[j].imgs[k].ht);
+                        if((120 - data[i].conts[j].imgs[k].ht) > 0)
+                            img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }); 
+                    checkCorrectness(imgs_container);
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
+                    img = $("<img src=\"../../" + data[i].all_imgs[j].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
+                    img.height(data[i].all_imgs[j].ht);
+                    if((120 - data[i].all_imgs[j].ht) > 0)
+                        img.css("margin",(120 - data[i].all_imgs[j].ht)/2 + "px 0");
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });            
+                container.appendTo("#data");
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
+    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
+    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
+            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+            var img_block = $("<div class='img_block' style='text-align: center;'>");
+            $("<div class='close_img'>").appendTo(img_block);            
+            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
+            var tmp_img = $("<img style='display: inline;'/>").attr("src", "../../" + tmp).appendTo(img_block);
+            img_block.draggable({
+                helper:'clone',
+                zIndex:100,
+                appendTo: '#data'
+            });
+            $(obj).append(img_block);
+            
+            if(tmp_img.height() == 0){
+                var tmp_id = setInterval(function(){
+                    if(tmp_img.height() != 0){
+                        if(tmp_img.height() >= tmp_img.width())
+                            tmp_img.attr("height", "120");
+                        else{
+                            tmp_img.attr("width","120");
+                            var h = tmp_img.height();
+                            tmp_img.attr("height",h);
+                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                        }
+                        clearInterval(tmp_id);
+                    }
+                }, 10);
+            } else {
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }  
+        }
+        exportData();
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/0.gif b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/0.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/0.gif
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/0.gif
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/1.gif b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/1.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/1.gif
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/1.gif
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/2.gif b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/2.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/2.gif
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/2.gif
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/3.gif b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/3.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/3.gif
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/3.gif
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/4.gif b/Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/4.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/objects/4.gif
rename to Sankore-3.1/resources/library/interactivities/Cat images.wgt/objects/4.gif
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml
new file mode 100644
index 0000000..10d1fb0
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/config.xml	
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="990"
+        height="560" 
+        ub:resizable="true">     
+   
+    <name>Notes</name>
+    <author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA
+    </author>
+    <description>Ordonner des images</description>
+		
+    <content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/css/basic.css
new file mode 100644
index 0000000..e4560cb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/css/basic.css	
@@ -0,0 +1,434 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid #666;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+    background-color: #666;
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid #666;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 0 0;
+    min-height: 45px;
+}
+
+.imgs_cont{
+    min-width: 170px;
+    min-height: 100px;
+    margin: 0;
+    border-top: 2px dashed #ccc;
+    border-bottom: 2px dashed #ccc;
+    margin-bottom: 5px;
+}
+
+.all_imgs{
+    min-width: 170px;
+    min-height: 70px;
+    margin: 0;
+    border-top: 2px dashed #e6f6ff;
+    border-bottom: 2px dashed #e6f6ff;
+    margin-bottom: 5px;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    min-width: 150px;
+    max-width: 200px;
+    min-height: 20px;
+    max-height: 60px;
+    overflow: hidden;
+    display: block;
+    cursor: pointer;
+    word-wrap: break-word;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.img_block{
+    min-width: 150px;
+    max-width: 200px;
+    height: 60px;
+    margin: 10px;
+    display: inline-table;
+    position: relative;
+    border: 1px solid #ccc;
+    border-radius: 10px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+    background-color: white;
+}
+
+.close_img{
+    width: 30px;
+    height: 30px;    
+    background-repeat: no-repeat;
+    position: absolute;    
+    right: -15px;
+    background-image: url(../img/close_img.png);
+    top: -15px;
+    cursor: pointer;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.add_img{
+    width: 62px;
+    height: 62px;
+    margin: 10px;
+    cursor: pointer;
+    display: inline-table;
+    position: relative;
+    background-image: url(../img/img_plus.png);
+}
+
+.del_category, .add_category{
+    margin: 0 10px;
+    width: 30px;
+    height: 30px;
+    float: right;
+    cursor: pointer;
+    border: none;
+    background-color: transparent;
+}
+
+.del_category{
+    background-image: url(../img/minus.png);
+}
+
+.add_category{
+    background-image: url(../img/plus.png);
+}
+
+.cat_desc{
+    width: 100%;
+    height: 25px;
+    margin-bottom: 5px;
+    text-align: center;
+    border: none;
+    background-color: #c3e9ff;
+}
+
+.dropHere{
+    background-color: #C3E9FF !important;
+}
+
+.dropBack{
+
+}
+
+.def_cont{
+    background-color: #E6F6FF;
+}
+
+.red_cont{
+    background-color: #f99;
+}
+
+.green_cont{
+    background-color: #9f9;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/icon.svg
new file mode 100644
index 0000000..47af09b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/icon.svg	
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.3335">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<rect x="11.3" y="77.6" fill="#FFFFFF" width="26.8" height="9.5"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="70.5" y="72.1" fill="#33342E"  a:adobe-opacity-share="0" width="29.2" height="9.5"/>
+	</g>
+	<g>
+		<rect x="68.5" y="69.1" fill="#FFFFFF" width="29.2" height="9.5"/>
+	</g>
+</g>
+<rect x="43.5" y="77.6" fill="#FFFFFF" width="13.4" height="9.5"/>
+<g>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="49.4,45 49.4,47 47.4,47 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="43.6" y1="47" x2="15" y2="47"/>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="13.1,47 11.1,47 11.1,45 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="11.1" y1="41" x2="11.1" y2="19.4"/>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="11.1,17.4 11.1,15.4 13.1,15.4 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="16.9" y1="15.4" x2="45.5" y2="15.4"/>
+	<polyline fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" points="47.4,15.4 49.4,15.4 49.4,17.4 	"/>
+	
+		<line fill="none" stroke="#B7B7B8" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="49.4" y1="21.4" x2="49.4" y2="43"/>
+</g>
+<g>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="96.2,45 96.2,47 94.2,47 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="90.4" y1="47" x2="61.8" y2="47"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="59.9,47 57.9,47 57.9,45 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="57.9" y1="41" x2="57.9" y2="19.4"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="57.9,17.4 57.9,15.4 59.9,15.4 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.8122,3.8122" x1="63.7" y1="15.4" x2="92.3" y2="15.4"/>
+	<polyline fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" points="94.2,15.4 96.2,15.4 96.2,17.4 	"/>
+	
+		<line fill="none" stroke="#FFFFFF" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="3.936,3.936" x1="96.2" y1="21.4" x2="96.2" y2="43"/>
+</g>
+<path fill="#33342E" d="M93.3,39.8c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,4.7,16.2,4.8,30h1
+	c0,0,5.5-13.9-1.5-32L93.3,39.8z"/>
+<path fill="#67C8F0" d="M90.9,36.3c0,0-7.4-6.5-15.9-12.4c0,0,0.6,7.8,0.9,19.6l5.6-2.7c4.6,10.6,7,19.7,7.1,33.4h1
+	c0,0,3.2-17.4-3.8-35.5L90.9,36.3z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/img_plus.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/img_plus.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/img_plus.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/img_plus.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/minus.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/minus.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/minus.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/minus.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/plus.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/plus.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/plus.png
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/plus.png
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html
new file mode 100644
index 0000000..e79952a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/index.html	
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js
new file mode 100644
index 0000000..da40ece
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/js/script.js	
@@ -0,0 +1,750 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    first_desc: "Fruits", 
+    second_desc: "Vegetables",
+    potatoes: "Potato",
+    carrot: "Carrot",
+    onion: "Onion",
+    apple: "Apple",
+    pear: "Pear",
+    enter: "Enter your category name here ...",
+    add: "Add new block",
+    text: "Some text",
+    wgt_name: "Categorize text",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Categorize text</h2></p>" +
+"<p><h3>Sort labels according to the name of the category</h3></p>" +
+"<p>Drag and drop labels in the corresponding category. All pictures should be placed to get a feed back from interactivity. If the result is incorrect, the area turns in red. If the result is correct, the area turns in green.</p>" +
+"<p>“Reload” button resets the exercises.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li>modify an exercise or create a new one.</li></ul>" +
+"<p>To create a new exercise :</p>" +
+"<ul><li>click on “New block”,</li>" +
+"<li>edit the category clicking on the text field “Enter your category name here ... ”,</li>" +
+"<li>add an another category clicking on the “+” (small one),</li>" +
+"<li>add a label clicking on the “+” (big one) on the correct category,</li>" +
+"<li>modify the text field clicking on it.</li></ul>" +
+"<p>To remove a label, click on the cross button on the frame.</p>" +
+"<p>To delete a category, click on the “-” sign on the right.</p>" +
+"<p>To delete a whole block, click on the cross on the left.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_text","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_img").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            var tmp_text = $(this).find(".text_cont");
+                            tmp_text.removeAttr("contenteditable")
+                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            $(this).draggable("destroy")
+                            .find(".text_cont").attr("contenteditable","true")
+                            .removeAttr("style");
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                        $("<div class='add_img'>").appendTo($(this));
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addText($(this).parent(), $(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.text = $(this).find(".text_cont").text();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    if(window.sankore)
+        sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }
+        else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>").appendTo("#data");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                    var tmp_text = tmp_array[j].find(".text_cont");
+                    tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            } else {
+                container = $("<div class='cont'>").appendTo("#data");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                        tmp_text = tmp_img_array[k].find(".text_cont");
+                        tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                    
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
+                    $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                    tmp_text = all_imgs_arr[k].find(".text_cont");
+                    tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });   
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text1);
+    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
+    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text2);
+    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
+    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text3);
+    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
+    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text4);
+    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
+    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text5);
+    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
+    
+    tmp_array.push(text1, text2, text3, text4, text5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//add text block
+function addText(dest, source){
+ 
+    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
+    $("<div class='close_img'>").appendTo(text_block);            
+    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
+    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/index.html
new file mode 100644
index 0000000..41eedfd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){    
+                sankore.enableDropOnWidget(false);
+                start();                   
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..e823229
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js	
@@ -0,0 +1,756 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    first_desc: "Fruits", 
+    second_desc: "Légumes",
+    potatoes: "Pomme de terre",
+    carrot: "Carotte",
+    onion: "Oignon",
+    apple: "Pomme",
+    pear: "Poire",
+    enter: "Saisir le nom de la catégorie ici ...",
+    add: "Nouveau bloc",
+    text: "Texte",
+    wgt_name: "Catégoriser des textes",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Catégoriser des textes</h2></p>"+
+    "<p><h3>Classer des étiquettes de mots en fonction de la dénomination de la catégorie.</h3></p>"+
+
+    "<p>L’activité s’effectue par un glisser-déposer de l’étiquette de mots dans la catégorie correspondante. Une fois que toutes les étiquettes de mots sont classées dans la bonne catégorie, la zone se colore en vert.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+"<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, une zone bleue apparaît, c’est une catégorie, puis :</p>"+
+"<ul><li>insérez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte “Saisir le nom de la catégorie ici …”,</li>"+
+"<li>cliquez sur le gros “+” situé à gauche de la catégorie ce qui vous permet de rajouter des étiquettes de mots,</li>"+
+"<li>entrez des mots dans ces étiquettes,</li>"+
+"<li>ajoutez ensuite une catégorie (ou plusieurs) en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des étiquettes de mots.</li></ul>"+
+"<p>Pour supprimer une étiquette de mots, cliquez sur la croix située dans le coin supérieur droit de celle-ci.</p>"+
+"<p>Pour supprimer une catégorie, cliquez sur le signe “-” situé à droite de celle-ci.</p>"+
+
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_text","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_img").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            var tmp_text = $(this).find(".text_cont");
+                            tmp_text.removeAttr("contenteditable")
+                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            $(this).draggable("destroy")
+                            .find(".text_cont").attr("contenteditable","true")
+                            .removeAttr("style");
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                        $("<div class='add_img'>").appendTo($(this));
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addText($(this).parent(), $(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.text = $(this).find(".text_cont").text();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }
+        else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>").appendTo("#data");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                    var tmp_text = tmp_array[j].find(".text_cont");
+                    tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            } else {
+                container = $("<div class='cont'>").appendTo("#data");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                        tmp_text = tmp_img_array[k].find(".text_cont");
+                        tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });        
+                    checkCorrectness(imgs_container);
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
+                    $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                    tmp_text = all_imgs_arr[k].find(".text_cont");
+                    tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });       
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text1);
+    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
+    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text2);
+    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
+    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text3);
+    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
+    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text4);
+    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
+    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text5);
+    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
+    
+    tmp_array.push(text1, text2, text3, text4, text5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//add text block
+function addText(dest, source){
+ 
+    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
+    $("<div class='close_img'>").appendTo(text_block);            
+    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
+    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/index.html
new file mode 100644
index 0000000..bc9e87e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){   
+                sankore.enableDropOnWidget(false);
+                start();                    
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..7a4ac96
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Cat text.wgt/locales/ru/js/script.js	
@@ -0,0 +1,734 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    first_desc: "Фрукты", 
+    second_desc: "Овощи",
+    potatoes: "Картофель",
+    carrot: "Морковь",
+    onion: "Лук",
+    apple: "Яблоко",
+    pear: "Груша",
+    enter: "Введите название категории ...",
+    add: "Новый блок",
+    text: "Какой-то текст",
+    wgt_name: "Категории",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("categoriser_text","")){
+            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").each(function(){                        
+                        $(this).find(".del_category").remove();
+                        $(this).find(".add_img").remove();
+                        $(this).find(".add_category").remove();                        
+                        $(this).removeAttr("ondragenter")
+                        .removeAttr("ondragleave")
+                        .removeAttr("ondragover")
+                        .removeAttr("ondrop")                        
+                        .find(".cat_desc").attr("disabled","disabled");
+                        var tmp_count = $(this).find(".img_block").size();
+                        $(this).find("input[name='count']").val(tmp_count);
+                        $(this).find(".img_block").each(function(){
+                            $(this).find(".close_img").remove();
+                            var tmp_text = $(this).find(".text_cont");
+                            tmp_text.removeAttr("contenteditable")
+                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
+                            tmp_array.push($(this));
+                            $(this).remove();
+                        });
+                        $(this).droppable({
+                            hoverClass: 'dropHere',
+                            drop: function(event, ui) {
+                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                    var tmp_ui = $(ui.draggable).parent();
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        });
+                        $(this).removeAttr("style");
+                    });
+                    
+                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++){
+                        tmp_array[i].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_array[i].appendTo(all_imgs);
+                    }
+                    
+                    all_imgs.droppable({
+                        hoverClass: 'dropBack',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                if(this != $(ui.draggable).parent()[0]){
+                                    var tmp_ui = $(ui.draggable).parent();                    
+                                    $(this).append($(ui.draggable));
+                                    checkCorrectness(tmp_ui);
+                                }
+                            }
+                        }
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".imgs_cont").each(function(){
+                        $("<button class='del_category'></button>").appendTo($(this));
+                        $("<button class='add_category'></button>").appendTo($(this));
+                        $(this).removeClass("red_cont")
+                        .removeClass("green_cont")
+                        .addClass("def_cont")
+                        .droppable("destroy")
+                        .find(".cat_desc").removeAttr("disabled");
+                        var tmp_img_cont = $(this);
+                        var tmp_mask = $(this).find("input[name='mask']").val();
+                        container.find(".img_block").each(function(){
+                            $(this).draggable("destroy")
+                            .find(".text_cont").attr("contenteditable","true")
+                            .removeAttr("style");
+                            if($(this).find("input").val() == tmp_mask){
+                                $("<div class='close_img'>").appendTo($(this));
+                                $(this).appendTo(tmp_img_cont);
+                            }
+                        });
+                        $("<div class='add_img'>").appendTo($(this));
+                    });
+                    container.find(".all_imgs").remove();
+                });
+                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addText($(this).parent(), $(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){       
+        $(this).parent().remove();        
+    });
+    
+    //adding new category
+    $(".add_category").live("click",function(){
+        addCategory($(this).parent());
+    });
+    
+    //deleting the category
+    $(".del_category").live("click",function(){
+        if($(this).parent().parent().find(".imgs_cont").size() == 1){
+            $(this).parent().find(".img_block").remove();
+            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
+        } else {
+            $(this).parent().remove();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "edit";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find(".img_block").size();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.mode = "display";
+            cont_obj.conts = [];
+            $(this).find(".imgs_cont").each(function(){
+                var img_cont = new Object();
+                cont_obj.style = $("#style_select").find("option:selected").val();
+                img_cont.mask = $(this).find("input[name='mask']").val();
+                img_cont.count = $(this).find("input[name='count']").val();
+                img_cont.text = $(this).find(".cat_desc").val();
+                img_cont.imgs = [];
+                $(this).find(".img_block").each(function(){
+                    var img_obj = new Object();
+                    img_obj.value = $(this).find("input").val();
+                    img_obj.text = $(this).find(".text_cont").text();
+                    img_cont.imgs.push(img_obj);
+                });
+                cont_obj.conts.push(img_cont);
+            });
+            cont_obj.all_imgs = [];
+            $(this).find(".all_imgs .img_block").each(function(){
+                var img = new Object();
+                img.value = $(this).find("input").val();
+                img.text = $(this).find(".text_cont").text();
+                cont_obj.all_imgs.push(img);
+            });
+            array_to_export.push(cont_obj);
+        });
+    }
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    
+    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }
+        else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            if(data[i].mode == "edit"){          
+                var tmp_array = [];
+                var container = $("<div class='cont'>").appendTo("#data");
+                var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        
+                for(var j in data[i].conts){
+                    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(var k in data[i].conts[j].imgs){
+                        var block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_array.push(block_img);
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });                                
+                }
+            
+                var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+            
+                tmp_array = shuffle(tmp_array);
+                for(j in tmp_array){
+                    tmp_array[j].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    tmp_array[j].appendTo(all_imgs);
+                    var tmp_text = tmp_array[j].find(".text_cont");
+                    tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });
+            } else {
+                container = $("<div class='cont'>").appendTo("#data");
+                sub_container = $("<div class='sub_cont'>").appendTo(container);                  
+                $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        
+                for(j in data[i].conts){
+                    var tmp_img_array = [];
+                    imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
+                    $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
+                    $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
+                    tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+                    $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
+                    for(k in data[i].conts[j].imgs){
+                        block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                        $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
+                        $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
+                        tmp_img_array.push(block_img);
+                    }
+                
+                    tmp_img_array = shuffle(tmp_img_array);
+                    for(k in tmp_img_array){
+                        tmp_img_array[k].draggable({
+                            helper:'clone',
+                            zIndex:100,
+                            appendTo: '#data'
+                        });
+                        tmp_img_array[k].appendTo(imgs_container);
+                        tmp_text = tmp_img_array[k].find(".text_cont");
+                        tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
+                    }
+                
+                    imgs_container.droppable({
+                        hoverClass: 'dropHere',
+                        drop: function(event, ui) {
+                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                                var tmp_ui = $(ui.draggable).parent();
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    });        
+                    checkCorrectness(imgs_container);
+                }
+            
+                all_imgs = $("<div class='all_imgs'>").appendTo(container); 
+                var all_imgs_arr = [];
+                for(j in data[i].all_imgs){            
+                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
+                    $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
+                    $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
+                    all_imgs_arr.push(block_img);
+                } 
+            
+                all_imgs_arr = shuffle(all_imgs_arr);
+                for(k in all_imgs_arr){
+                    all_imgs_arr[k].draggable({
+                        helper:'clone',
+                        zIndex:100,
+                        appendTo: '#data'
+                    });
+                    all_imgs_arr[k].appendTo(all_imgs);
+                    tmp_text = all_imgs_arr[k].find(".text_cont");
+                    tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
+                }
+            
+                all_imgs.sortable();
+            
+                all_imgs.droppable({
+                    hoverClass: 'dropBack',
+                    drop: function(event, ui) {
+                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                            if(this != $(ui.draggable).parent()[0]){
+                                var tmp_ui = $(ui.draggable).parent();                    
+                                $(this).append($(ui.draggable));
+                                checkCorrectness(tmp_ui);
+                            }
+                        }
+                    }
+                });       
+                checkCorrectness(all_imgs);
+            }
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
+    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
+    var tmp_div_one = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_one);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
+    
+    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
+    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
+    var tmp_div_two = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container_two);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
+    
+    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text1);
+    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
+    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text2);
+    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
+    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text3);
+    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
+    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(text4);
+    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
+    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(text5);
+    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
+    
+    tmp_array.push(text1, text2, text3, text4, text5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++){
+        tmp_array[i].draggable({
+            helper:'clone',
+            zIndex:100,
+            appendTo: '#data'
+        });
+        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
+        tmp_array[i].appendTo(all_imgs);
+    }
+    all_imgs.sortable();
+    
+    imgs_container_one.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    imgs_container_two.droppable({
+        hoverClass: 'dropHere',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                var tmp_ui = $(ui.draggable).parent();
+                $(this).append($(ui.draggable));
+                checkCorrectness(tmp_ui);
+            }
+        }
+    });
+    
+    all_imgs.droppable({
+        hoverClass: 'dropBack',
+        drop: function(event, ui) {
+            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
+                if(this != $(ui.draggable).parent()[0]){
+                    var tmp_ui = $(ui.draggable).parent();                    
+                    $(this).append($(ui.draggable));
+                    checkCorrectness(tmp_ui);
+                }
+            }
+        }
+    });
+}
+
+//add text block
+function addText(dest, source){
+ 
+    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
+    $("<div class='close_img'>").appendTo(text_block);            
+    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
+    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
+}
+
+//function that allows to add new category
+function addCategory(obj){
+    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
+    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
+    var tmp_div = $("<div style='width: 100%; overflow: hidden;'>").appendTo(imgs_container);
+    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
+    $("<button class='del_category'></button>").appendTo(imgs_container);
+    $("<button class='add_category'></button>").appendTo(imgs_container);
+    $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//return id
+function returnId(){
+    var tmp = Math.random().toString();
+    return tmp.substr(2);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//a func for checking when smth will drop
+function checkOnDrop(dest){
+    var tmp_count = dest.find("input[name='count']").val();
+    var tmp_mask = dest.find("input[name='mask']").val();
+    if(dest.find(".img_block").size() == tmp_count){
+        var tmp_right = true;                    
+        dest.find(".img_block").each(function(){
+            if($(this).find("input").val() != tmp_mask)
+                tmp_right = false;
+        });          
+        if(tmp_right)
+            dest.removeClass("def_cont").removeClass("red_cont").addClass("green_cont");
+        else
+            dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+    } else 
+        dest.removeClass("def_cont").removeClass("green_cont").addClass("red_cont");
+}
+
+//checking source on correctness
+function checkCorrectness(source){
+    if(!source.hasClass("all_imgs")){
+        if(source.parent().find(".all_imgs").find(".img_block").size() == 0){
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        }
+    } else {
+        if(source.find(".img_block").size() > 0){
+            source.parent().find(".imgs_cont").each(function(){
+                $(this).addClass("def_cont").removeClass("green_cont").removeClass("red_cont");
+            })
+        } else {
+            source.parent().find(".imgs_cont").each(function(){
+                checkOnDrop($(this))
+            })
+        }
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml
index b897c8b..84911f0 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/config.xml
@@ -3,14 +3,13 @@
 		xmlns:ub="http://uniboard.mnemis.com/widgets"
         id="http://uniboard.mnemis.com/widgets/webbrowser" 
         version="1.1"
-        width="700"
-        height="400" 
+        width="920"
+        height="500" 
 		ub:resizable="true">   
 		     
   		<name>Choisir</name>
 		<author href="http://www.getuniboard.com"
 	            email="info at mnemis.com">Mnemis SA</author>
 		<description>Choisir widget</description> 
-
  		<content src="index.html"/> 
 </widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css
index 8d0f8e3..d297aed 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/css/basic.css
@@ -11,11 +11,18 @@
    Syntax recommendation http://www.w3.org/TR/REC-CSS2/
 */
 
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
 body{
-    padding: 3px;
-    margin: 0 auto;
-    height: auto;
-    background-color: white;
+    background-image: url(../images/bg.png);
 }
 
 .toggleButton{
@@ -24,7 +31,7 @@ body{
     border: none;
     background-image: url(../images/greySquare.png);
     font-weight: bold;
-    font-family: Verdana;
+    font-family: sans-serif;
     color: #00C6FF;;
     cursor: pointer;
 }
@@ -39,16 +46,17 @@ body{
     float: left;
     padding: 5px;
     margin: 2px;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
     font-size: large;
 }
 
 .addQstButton{    
     margin: 0;
-    border: none;
     background: none;
-    color: #99ccff;
+    color: white;
     cursor: pointer;
+    border: 3px solid #ccc;
+    border-radius: 20px;
 }
 
 #addQsqSpan1{
@@ -61,7 +69,7 @@ body{
     margin: 2px auto;
     padding: 5px;
     float: left;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
 }
 
 .qstDivDisplay{
@@ -69,7 +77,7 @@ body{
     margin: 5px 5%;
     padding: 5px;
     float: left;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
     border: 2px solid #cccccc;
     -moz-border-radius: 5px;
     -webkit-border-radius: 5px;
@@ -88,7 +96,7 @@ body{
     float: left;
     font-size: 30px;
     margin-left: 10px !important;
-    color: #00C6FF;
+    color: white;
 }
 
 .qstOptions{
@@ -97,38 +105,38 @@ body{
 
 .changeOptions{
     border: none;
-    background-image: url(../images/grayClose.png);
+    height: 25px;
     background-color: white;
-    background-repeat: no-repeat;
-    background-position: 0 50%;
     width: auto;
-    padding-left: 18px;
-    color: #00C6FF;
+    color: black;
+    font-weight: bold;
     cursor: pointer;
+    border-radius: 10px;
 }
 
 .applyChanges{
     border: none;
-    background-image: url(../images/blueClose.png);
+    height: 25px;
     background-color: white;
-    background-repeat: no-repeat;
-    background-position: 0 50%;
     width: auto;
-    padding-left: 18px;
-    color: #00C6FF;
+    color: black;
+    font-weight: bold;
     cursor: pointer;
+    border-radius: 10px;
 }
 
 .qstDelete{
     border: none;
-    background-image: url(../images/boldClose.png);
+    background-image: url(../images/bigBlackClose.png);
     background-color: white;
     background-repeat: no-repeat;
-    background-position: 0 50%;
-    width: auto;
-    padding-left: 28px;
-    line-height: 35px;
+    background-position: 45% 50%;
+    width: 25px;
+    height: 25px;
+    line-height: 25px;
     cursor: pointer;
+    border-radius: 15px;
+    margin: 0 5px;
 }
 
 .qstContent{
@@ -137,23 +145,30 @@ body{
     margin-left: 10px;
     margin-bottom: 10px;
     width: 95%;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    max-height: 100px;
+    overflow-x: hidden;
+    font-family: sans-serif;
     font-size: small;
     border: 3px solid #ccc;
-    -webkit-border-radius: 5px;
     border-radius: 5px;
-    -moz-box-shadow: #dadada -1px 0 4px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
     box-shadow: #dadada -1px 0 4px;
+    color: white;
+    word-break: break-all;
 }
 
 .qstContentDisplay{
     float: left;
     padding: 5px;
     margin: 10px;
-    width: 100%;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    color:#333333;
+    width: 95%;
+    max-height: 120px;
+    overflow-x: hidden;
+    font-family: sans-serif;
+    color: white;
+    border: 1px solid #DFDFDE;
+    border-top-left-radius: 10px;
+    border-bottom-left-radius: 10px;
+    word-break: break-all;
 }
 
 .ansDiv{
@@ -164,13 +179,13 @@ body{
 
 .ansAdd{
     border: none;
-    background: url(../images/blueClose.png) -0px -0px no-repeat;
+    height: 25px;
     background-color: white;
+    font-weight: bold;
     width: auto;
-    padding-left: 20px;
-    line-height: 24px;
-    color: #99ccff;
+    color: black;
     cursor: pointer;
+    border-radius: 10px;
 }
 
 .newAnswer{
@@ -183,8 +198,7 @@ body{
 
 .ansSpan{
     border: none;    
-    background-color: white;
-    color: #00C6FF;
+    color: white;
     font-size: 14px;
     float: left;
     margin: 0 3px;
@@ -192,46 +206,57 @@ body{
 }
 
 .ansSpanDisplay{
-    color: #00C6FF;
+    color: white;
     font-size: 14px;
     float: left;
+    font-weight: bold;
 }
 
 .ansContent{
     padding: 1px 3px 3px 3px;
     margin-left: 5px;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
     font-size: small;
     width: 80%;
+    max-height: 60px;
+    overflow-x: hidden;
     float: left;
     border: 3px solid #ccc;
-    -webkit-border-radius: 5px;
     border-radius: 5px;
-    -moz-box-shadow: #dadada -1px 0 4px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
     box-shadow: #dadada -1px 0 4px;
+    color: white;
+    word-break: break-all;
 }
 
 .ansContentDisplay{
     padding: 1px 3px 3px 3px;
     margin-left: 5px;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
     font-size: small;
+    font-weight: bold;
     width: 80%;
+    max-height: 60px;
+    overflow-x: hidden;
     float: left;
-    -webkit-border-radius: 5px;
-    border-radius: 5px;    
+    border: 1px solid #DFDFDE;
+    border-top-left-radius: 10px;
+    border-bottom-left-radius: 10px;   
+    color: white;
+    word-break: break-all;
 }
 
 .ansDelete{
+    width: 25px;
+    height: 25px;
     float: left;
     border: none;
-    background-image: url(../images/boldGreyClose.png);
-    background-color: white;
+    background-image: url(../images/bigBlackClose.png);
     background-repeat: no-repeat;
-    background-position: 0 50%;
+    background-position: 45% 50%;
+    background-color: white;
     cursor: pointer;
     margin: 0 5px;
+    border-radius: 15px;   
 }
 
 .qstOptChoice{    
@@ -275,7 +300,7 @@ body{
     color: #666666;
     float: left;
     font-size: small;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
     margin: 3px 5px;
     padding: 5px;
 }
@@ -323,7 +348,7 @@ body{
 .textType{
     width: 160px;
     font-size: small;    
-    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-family: sans-serif;
     color: #666;
     padding: 3px;
     margin-left: 20px;
@@ -350,13 +375,13 @@ body{
     position: absolute;
     display: none;
     width: 100px;
-    height: 20px;
+    min-height: 20px;
     top: 0;
     left: 0;
     text-align: center;
     border: 1px solid #B9B9B9;
     background-color: #eaebeb;
-    color: #666;
+    color: black;
     -webkit-border-radius: 5px;
     border-radius: 5px;
     -webkit-box-shadow: #dadada -1px 0 4px;
@@ -368,4 +393,235 @@ body{
     padding: 3px;
     -webkit-border-radius: 3px;
     border-radius: 3px;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+.selected{
+
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../images/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../images/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../images/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../images/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../images/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../images/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../images/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../images/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../images/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../images/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../images/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../images/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../images/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../images/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../images/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../images/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../images/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../images/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../images/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../images/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../images/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../images/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../images/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../images/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../images/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../images/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../images/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
 }
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.png
deleted file mode 100644
index 2f85589..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.svg
new file mode 100644
index 0000000..2db8774
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/icon.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.6655" y1="0" x2="53.6655" y2="107.3335">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<circle fill="#FFFFFF" cx="27.9" cy="26.6" r="8.4"/>
+<circle fill="#FFFFFF" cx="27.9" cy="50.8" r="8.4"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<circle fill="#33342E"  a:adobe-opacity-share="0" cx="29.9" cy="79" r="12.9"/>
+	</g>
+	<g>
+		<circle fill="#FFFFFF" cx="27.9" cy="76" r="12.9"/>
+	</g>
+</g>
+<circle fill="#67C8F0" cx="27.9" cy="76" r="4.7"/>
+<path fill="#67C8F0" d="M27.9,89.2c-7.2,0-13.1-5.9-13.1-13.1s5.9-13.1,13.1-13.1S41,68.8,41,76S35.1,89.2,27.9,89.2z M27.9,66.9
+	c-5,0-9.1,4.1-9.1,9.1s4.1,9.1,9.1,9.1S37,81.1,37,76S32.9,66.9,27.9,66.9z"/>
+<rect x="49" y="23.4" fill="#FFFFFF" width="41.4" height="6.3"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="51" y="75.9" fill="#33342E"  a:adobe-opacity-share="0" width="41.4" height="6.3"/>
+	</g>
+	<g>
+		<rect x="49" y="72.9" fill="#FFFFFF" width="41.4" height="6.3"/>
+	</g>
+</g>
+<rect x="49" y="47.6" fill="#FFFFFF" width="8.9" height="6.3"/>
+<rect x="63.9" y="47.6" fill="#FFFFFF" width="26.5" height="6.3"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bg.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/left.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-left.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-right.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/right.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_left.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_right.png b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/images/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html
index e478b04..054a03f 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/index.html
@@ -9,17 +9,82 @@ and open the template in the editor.
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <link rel="stylesheet" type="text/css" href="css/basic.css"/>
         <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script src="scripts/languages.js" type="text/javascript"></script>
         <script type="text/javascript" src="scripts/selQuestionApp.js"></script>
         <script type="text/javascript">
-            
+            if (parent && parent.loaded)
+                parent.loaded();
+
             $(document).ready(function(){
-                init();
-            });
-            
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    //sankore.enableDropOnWidget(false);
+                    init();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                init();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });            
         </script>
     </head>
     <body>
-
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
     </body>
 </html>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html
new file mode 100644
index 0000000..925a066
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/index.html
@@ -0,0 +1,63 @@
+<!--
+To change this template, choose Tools | Templates
+and open the template in the editor.
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/selQuestionApp.js"></script>
+        <script type="text/javascript">
+            
+            $(document).ready(function(){
+                init();
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
new file mode 100644
index 0000000..720c3b5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
@@ -0,0 +1,793 @@
+/*
+ * 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/>.
+ */
+
+var sankoreLang = {
+    edit: "Modifier",
+    display:"Afficher",
+    question:"La question",
+    example_question:"Ceci est un exemple de question",
+    answer:"Ceci est une réponse possible",
+    q:"Q",
+    add_new_question:" Ajouter une nouvelle question ...",
+    options:"Les options",
+    close:"Fermer",
+    delete_question:"Supprimer la question",
+    delete_answer:"Supprimer la proposition",
+    right_answer:"Bonne réponse",
+    template_question:"Saisir la question ici ...",
+    template_answer:"Saisir une proposition ici ...",
+    add_answer:"Ajouter une proposition",
+    select_text:"Choisir la bonne réponse",
+    options_desc:"Vous pouvez choisir une de ces trois options pour l'affichage des propositions.",
+    radio_desc:"Une seule bonne réponse avec des propositions sous forme de boutons radio.",
+    checkbox_desc:"Plusieurs bonnes réponses avec des propositions sous forme de cases à cocher.",
+    select_desc:"Une seule bonne réponse et les propositions sont affichées sous forme de menu déroulant.",
+    a:"R",
+    wgt_name: "Choisir",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Choisir</h2></p>"+
+"<p><h3>Question à choix multiples (QCM).</h3></p>"+
+
+"<p>Une question est posée avec plusieurs choix de réponses possibles. Le but est de choisir la bonne réponse.</p>"+
+
+"<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+"<p>Le bouton “Modifier” vous permet :</p>"+
+"<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+"<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+"<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Ajouter une nouvelle question …”, puis :</p>"+
+"<ul><li>insérez la question en cliquant sur le champ de texte “Saisir la question ici ...”,</li>"+
+"<li>cliquez sur ”Options” pour choisir l’affichage des propositions (une seule bonne réponse, plusieurs bonnes réponses, liste déroulante). Cliquez sur “Fermer”,</li>"+
+"<li>cliquez sur ”Ajouter une proposition” et saisissez la proposition dans le champ de texte,</li>"+
+"<li>définissez la ou les propositions correctes en cliquant sur la case à cocher à gauche des bonnes réponses.</li>"+
+"<li>Pour supprimer une proposition, cliquez sur la croix située à droite de celle-ci.</li></ul>"+
+
+"<p>Pour supprimer un exercice, cliquez sur la croix à droite du numéro de ”Options”.</p>"+
+
+"<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+theme: "Thème"
+};
+
+var questionArray;
+var currentQstId = "";
+var lang = ""; //locale language
+var begin = true;
+
+function init(){
+
+    //variables
+    var toggleFlag = false;
+    var endFlag = false;
+    var mode = true;
+    questionArray = new Array();  
+    var popupFlag = false
+    var flagForSelect = false;    
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    //popup message
+    var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("#data");
+    
+    // adding question block
+    var addQstDiv = $("<div id='addQstDiv' class='addQstDiv'>").appendTo("#data");
+    var addQstButton = $("<button id='addQstButton' class='addQstButton'>").appendTo("#addQstDiv");    
+    var addQsqSpan1 = $("<span id='addQsqSpan1'>" + sankoreLang.q + "1</span>").appendTo("#addQstButton");
+    var addQsqSpan2 = $("<span id='addQsqSpan2'>" + sankoreLang.add_new_question + "</span>").appendTo("#addQstButton");
+    
+    //import saved data
+    if(window.sankore){
+        if(sankore.preference("qstArrayData","") && sankore.preference("qstArrayData","") != "[]")
+            questionArray = jQuery.parseJSON(sankore.preference("qstArrayData",""));         
+        else
+            questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
+    }
+    else{ 
+        questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
+    }
+    
+    //saving widget data into sankore object for a correct import
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+            sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    if(window.sankore)
+        if(sankore.preference("choisir_style","")){
+            changeStyle(sankore.preference("choisir_style",""));
+            $("#style_select").val(sankore.preference("choisir_style",""));
+        } else
+            changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                displayData(true);
+                mode = true;
+                if(window.sankore){
+                    sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+                    sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+                }
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                editData();
+                mode = false;
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_edit").css("display") == "none")
+            $("#wgt_display").trigger("click");
+        else{
+            editData();
+            mode = false;
+            displayData(true);
+            mode = true;
+        }
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    // add question
+    addQstButton.click(function(){        
+        //question block
+        var id = Math.round(Math.random()*1000);       
+        var obj = new Question();
+        obj.id = id;
+        questionArray.push(obj);
+        
+        addQstBlock(id, sankoreLang.template_question, "","");
+                
+        if(window.sankore)
+            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+    });
+    
+    //set used at this moment question id into the variable 
+    $(".qstDiv").live('mouseover', function() {
+        currentQstId = this.id;
+    });
+    
+    //set used at this moment question id into the variable 
+    $(".qstDivDisplay").live('mouseover', function() {
+        if(!flagForSelect)
+            currentQstId = this.id.replace("qstDivDisplay","");
+    });
+       
+    //adding new answer
+    $(".ansAdd").live('click', function(){
+        
+        var id = Math.round(Math.random()*1000);        
+        var obj = new Answer();
+        obj.id = id;
+        getNeededElement(questionArray, currentQstId).answers.push(obj);
+        
+        addAnsBlock(id, currentQstId, sankoreLang.template_answer);
+    });
+    
+    //set answer text
+    $(".ansContent").live('keyup', function(event){
+        var id = $(event.target).attr("id").replace("ansContent","");
+        getNeededElement(getNeededElement(questionArray, currentQstId).answers,id).text = $(event.target).text();
+    });
+    
+    //set question text
+    $(".qstContent").live('keyup', function(event){
+        var id = $(event.target).attr("id").replace("qstContent","");
+        getNeededElement(questionArray, id).text = $(event.target).text();
+    });
+    
+    //question div border
+    $(".qstContent").live('mouseover', function(event){
+        $(event.target).css({
+            border:"3px solid #00C6FF"
+        });
+    });
+    
+    // deleting question div border
+    $(".qstContent").live('mouseout', function(event){
+        $(event.target).css({
+            border:"3px solid #ccc"
+        });
+    });
+    
+    //answer div border
+    $(".ansContent").live('mouseover', function(event){
+        $(event.target).css({
+            border:"3px solid #00C6FF"
+        });
+    });
+    
+    // deleting answer div border
+    $(".ansContent").live('mouseout', function(event){
+        $(event.target).css({
+            border:"3px solid #ccc"
+        });
+    });
+    
+    //delete answer
+    $(".ansDelete").live('click', function(){
+        popupText.hide();
+        var id = this.id.replace("ansDelete","");
+        $("#" + currentQstId + " #" + id).remove();
+        for(var i in questionArray)
+            if(questionArray[i].id == currentQstId){
+                questionArray[i].rightAns = questionArray[i].rightAns.replace($("#" + currentQstId + " #" + id + " input:checkbox").val(),"");
+                for(var j in questionArray[i].answers)
+                    if(questionArray[i].answers[j].id == id){
+                        if(j == 0)
+                            questionArray[i].answers.shift();
+                        else
+                        if((j+1) == questionArray[i].answers.length)
+                            questionArray[i].answers.pop();
+                        else
+                            questionArray[i].answers = questionArray[i].answers.slice(0,j).concat(questionArray[i].answers.slice(j+1));  
+                        break;
+                    }
+            }
+        refreshAns();
+    });
+    
+    //delete question
+    $(".qstDelete").live('click', function(){
+        popupText.hide();
+        $("#" + currentQstId).remove();
+        for(var i in questionArray)
+            if(questionArray[i].id == currentQstId){
+                if(i == 0)
+                    questionArray.shift();
+                else
+                if((i+1) == questionArray.length)
+                    questionArray.pop();
+                else
+                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
+                break;
+            }
+        refreshQst();
+    });
+    
+    //change options
+    $(".changeOptions").live('click', function(){
+        $("#" + currentQstId + "qstOptions .changeOptions").hide();
+        $("#" + currentQstId + "qstOptions .applyChanges").show();
+        $("#" + currentQstId + "qstOptChoice").show('fast');
+    });
+    
+    //apply changes
+    $(".applyChanges").live('click', function(){
+        $("#" + currentQstId + "qstOptions .applyChanges").hide();
+        $("#" + currentQstId + "qstOptions .changeOptions").show();
+        $("#" + currentQstId + "qstOptChoice").hide('fast');
+    });
+    
+    //select option
+    $(".qstOptChoice input:radio").live('click', function(event){
+        if(!mode){
+            $("#" + currentQstId + "qstOptChoice input:radio").removeAttr("checked");
+            $(event.target).attr("checked", "checked");
+            getNeededElement(questionArray, currentQstId).type = $(event.target).attr("value");
+        }
+    });
+    
+    //select right ansver in edit mode and answer question in display mode
+    $(".newAnswer input").live('click', function(event){
+
+        if(!mode){
+            if(getNeededElement(questionArray, currentQstId).type == "1" || getNeededElement(questionArray, currentQstId).type == "3"){
+                $("#" + currentQstId + "ansDiv input").removeAttr("checked");
+                $(event.target).attr("checked", "checked");
+                getNeededElement(questionArray, currentQstId).rightAns = $(event.target).attr("value");
+            } else {
+                (event.target.checked) ? $(event.target).attr("checked", "checked") : $(event.target).removeAttr("checked", "checked");
+                getNeededElement(questionArray, currentQstId).rightAns = "";
+                for(var i in $("#" + currentQstId + "ansDiv input")){
+                    if($("#" + currentQstId + "ansDiv input")[i].checked)
+                        getNeededElement(questionArray, currentQstId).rightAns += $("#" + currentQstId + "ansDiv input")[i].value + ", ";
+                }
+            }
+        } else {
+            if(event.target.type == "radio"){
+                checkingAnswers("radio", getNeededElement(questionArray, currentQstId).answers, event.target.value);
+                if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
+                    $(event.target).next().next().css("background-color","#6c0");
+                else
+                    $(event.target).next().next().css("background-color","red");
+            } else {
+                checkingAnswers("box", getNeededElement(questionArray, currentQstId).answers, event.target.value, event.target.checked);
+                if(getNeededElement(questionArray, currentQstId).rightAns.replace(/,/g,"").indexOf(event.target.value + " ", 0) != -1)
+                    $(event.target).next().next().css("background-color","#6c0");
+                else
+                    $(event.target).next().next().css("background-color","red");
+            }
+        }
+    });
+    
+    //popup messages
+    $(".qstDelete").live('mouseover', function(evt){
+        popupFlag = true;
+        popupText.text(sankoreLang.delete_question)
+        .css("top", evt.pageY + 15)
+        .css("left", evt.pageX - 40)
+        .css({
+            width:"130px"
+        })
+        .show("fast", function(){
+            if(!popupFlag)
+                popupText.hide();
+        });
+    });
+    
+    $(".ansDelete").live('mouseover', function(evt){
+        popupFlag = true;
+        popupText.text(sankoreLang.delete_answer)
+        .css("top", evt.pageY + 15)
+        .css("left", evt.pageX - 40)
+        .css({
+            width:"130px"
+        })
+        .show("fast", function(){
+            if(!popupFlag)
+                popupText.hide();
+        });
+    });
+    
+    $(".newAnswer input").live('mouseover', function(evt){
+        if(!mode){
+            popupFlag = true;
+            popupText.text(sankoreLang.right_answer)
+            .css("top", evt.pageY + 15)
+            .css("left", evt.pageX - 40)
+            .css({
+                width:"130px"
+            })
+            .show("fast", function(){
+                if(!popupFlag)
+                    popupText.hide();
+            });
+        }
+    });
+    
+    $(".qstDelete, .ansDelete, .newAnswer input").live('mousemove', function(evt){
+        if(!mode){
+            popupText.css("top", evt.pageY + 15)
+            .css("left", evt.pageX - 40);
+        }
+    });
+    
+    $(".qstDelete, .ansDelete, .newAnswer input").live('mouseout', function(evt){
+        if(!mode){
+            popupFlag = false;
+            popupText.hide();
+        }
+    });
+
+    //answer the questions
+    
+    $("select").live('change', function(evt){
+        if(mode){
+            checkingAnswers("sel", getNeededElement(questionArray, currentQstId).answers, event.target.value);
+            if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
+                $(event.target).css("background-color","#6c0");
+            else
+                $(event.target).css("background-color","red");
+            if(event.target.value == 0)
+                $(event.target).css("background-color","");
+            flagForSelect = false;
+        }
+    });
+    
+    $("select").live('mousedown', function(evt){
+        if(mode){
+            flagForSelect = true;
+        }
+    });
+    
+    //toggle button click trigger
+    //toggleButton.trigger("click");
+    //show data in display mode
+    function displayData(){
+        $("#addQstDiv").hide();
+        $(".qstDiv").hide();
+        addToPage(questionArray);
+    }
+    
+    //set widget in edit mode
+    function editData(){
+        for(var i in questionArray)            
+            for(var j in questionArray[i].answers){
+                questionArray[i].answers[j].state = "";
+                questionArray[i].answers[j].was = false
+            }               
+                
+        $(".qstDivDisplay").remove();
+        
+        $("#addQstDiv").show('fast');
+        $(".qstDiv").show('fast');
+    }
+    
+    // show questions and answers in display mode
+    function addToPage(array){
+            var counter = 1;
+            for(var i in array){
+
+                var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
+                var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
+                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
+                var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
+                var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
+
+                var ansCount = 1;
+                var type = array[i].type;
+                var selInput = $("<select>");
+                if(type == 3){
+                    var newAnswer = $("<div class='newAnswer'>"); 
+                    newAnswer.appendTo(ansDiv);
+                    var selectSpan = $("<span id='answerText'>").appendTo(newAnswer);
+                    selInput.appendTo(selectSpan);
+                    $("<option value='0'>" + sankoreLang.select_text + "</option>").appendTo(selInput);
+                }
+                for(var j in array[i].answers){  
+                    switch(type){
+                        case "1":
+                            var local_state = "";
+                            var local_color = "";
+                            if(begin){
+                                local_state = array[i].answers[j].state;
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
+                            newAnswer = $("<div class='newAnswer'>");
+                            var ansInput = $("<input type='radio' name='" + counter + "' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            var ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
+                            var ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            newAnswer.appendTo(ansDiv);
+                            break;
+                        case "2":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"checked":"";
+                                local_color = (array[i].rightAns.replace(/,/g,"").indexOf(array[i].answers[j].value + " ", 0) != -1)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
+                            newAnswer = $("<div class='newAnswer'>");
+                            ansInput = $("<input type='checkbox' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
+                            ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            newAnswer.appendTo(ansDiv);
+                            break;
+                        case "3":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"selected":"";
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"#6c0":""):((array[i].answers[j].was)?"red":"");
+                            }
+                            ansInput = $("<option value='" + array[i].answers[j].value + "' " + local_state + ">" + array[i].answers[j].text + "</option>").appendTo(selInput);
+                            if(local_state && local_color)
+                                selInput.css("background-color",local_color);
+                            break;
+                    }               
+                    ansCount++;
+                }
+                qstDiv.appendTo("#data");
+                counter++;
+            }
+            begin = false;
+    }
+}
+
+//add new question block in a edit mode
+function addQstBlock(id, text, type, style){
+    var qstDiv = $("<div class='qstDiv' id='" + id + "' " + style + ">");
+    var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
+        
+    var count = $(".qstNumber").size();       
+    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
+        
+    var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
+    var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
+    var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
+    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
+        
+    var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
+    var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
+    var optDescImg = $("<div class='optDescImg'>").appendTo(optDesc);
+    var optDescText = $("<div class='optDescText'>" + sankoreLang.options_desc + "</div>").appendTo(optDesc);
+        
+    var type1 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType1 = $("<div class='contentType'>").appendTo(type1);
+    var divType1 = $("<div class='divType1'>").appendTo(contentType1);
+    var textType1 = $("<div class='textType'>" + sankoreLang.radio_desc + "</div>").appendTo(contentType1);
+        
+    var type2 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType2 = $("<div class='contentType'>").appendTo(type2);
+    var divType2 = $("<div class='divType2'>").appendTo(contentType2);
+    var textType2 = $("<div class='textType'>" + sankoreLang.checkbox_desc + "</div>").appendTo(contentType2);
+        
+    var type3 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType3 = $("<div class='contentType'>").appendTo(type3);
+    var divType3 = $("<div class='divType3'>").appendTo(contentType3);
+    var textType3 = $("<div class='textType'>" + sankoreLang.select_desc + "</div>").appendTo(contentType3);
+
+    switch(type){
+        case "1":
+            var radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1' checked/><div></div>").appendTo(type1);
+            var radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            var radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+        case "2":
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2' checked/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+        case "3":
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3' checked/><div></div>").appendTo(type3);
+            break;
+        default:
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+    }
+    
+    var qstContent = $("<div class='qstContent' id='" + id + "qstContent' contenteditable='true'>" + text + "</div>").appendTo(qstDiv);
+        
+    var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
+    var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
+    qstDiv.insertBefore("#addQstDiv");
+    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
+}
+
+//add answers
+function addAnsBlock(id, currId, text, stage, rightAns, type){
+    var newAnswer = $("<div class='newAnswer' id='" + id + "'>");
+    var value;
+    var check = "";
+    if(stage){
+        value = getNeededElement(getNeededElement(questionArray, currId).answers,id).value;
+        if(type != "2"){
+            if(rightAns == value)
+                check = "checked='true'";
+        }
+        else {
+            rightAns = rightAns.replace(/,/g,"");
+            if(rightAns.indexOf(value + " ", 0) != -1)
+                check = "checked='true'";                
+        }
+    }
+    else {
+        value = ($("#" + currId + " .newAnswer input:checkbox").last().val()) ? parseInt($("#" + currId + " .newAnswer input:checkbox").last().val()) + 1 : 1;
+        getNeededElement(getNeededElement(questionArray, currId).answers,id).value = value;
+    }
+    var count = $("#" + currId + " .newAnswer").size() + 1;
+    var input = $("<input type='checkbox' style='float: left;' value='" + value + "' " + check + ">").appendTo(newAnswer);
+    var ansSpan = $("<span class='ansSpan'>" + sankoreLang.a + count + "</span>").appendTo(newAnswer);
+    var ansContent = $("<div class='ansContent' id='" + id +"ansContent' contenteditable='true'>" + text + "</div>").appendTo(newAnswer);
+    var ansDelete = $("<button class='ansDelete' id='" + id + "ansDelete'>").appendTo(newAnswer);
+    newAnswer.insertBefore("#" + currId + "ansDiv .ansAdd");    
+        
+    if(window.sankore)
+        sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+}
+
+//get needed array element
+function getNeededElement(array,id){
+    for(var i in array)
+        if(array[i].id == id)
+            return array[i];
+}
+
+//check on fill
+function checkArrayOnFill(array){
+    var count = 0;
+    
+    for(var i in array)
+        count++;
+    
+    return count;
+}
+
+//refresh answers numbers
+function refreshAns(){
+    var count = $("#" + currentQstId + " .newAnswer").size();        
+    for(var i = 0; i < count; i ++)
+        $($("#" + currentQstId + " .newAnswer span")[i]).text(sankoreLang.a + (i+1));
+}
+
+//refresh questions numbers
+function refreshQst(){
+    var count = $(".qstNumber").size();        
+    for(var i = 0; i < count; i ++)
+        $($(".qstNumber")[i]).text(sankoreLang.q + (i+1));
+    $("#addQsqSpan1").text(sankoreLang.q + ++count);
+}
+
+//check answers
+function checkingAnswers(type, array, value, state){
+    switch(type){
+        case "radio":
+            for(var i in array)
+                if(array[i].value == value){
+                    array[i].state = "checked";
+                    array[i].was = true;
+                } else 
+                    array[i].state = "";                
+            break;
+        case "box":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = state;
+                    array[i].was = true;
+                }     
+            break;
+        case "sel":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = "selected";
+                    array[i].was = true;
+                } else 
+                    array[i].state = ""; 
+            break;
+    }
+}
+
+//question constructor
+function Question(){
+
+    this.text = "";
+    
+    this.type = "1";
+    
+    this.id = "";
+    
+    this.rightAns = "";
+    
+    this.answers = new Array();
+
+}
+
+//answer constructor
+function Answer(){
+    
+    this.id = "";
+    
+    this.text = "";
+    
+    this.value = "";
+    
+    this.state = "";
+    
+    this.was = false;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/index.html
new file mode 100644
index 0000000..925a066
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/index.html
@@ -0,0 +1,63 @@
+<!--
+To change this template, choose Tools | Templates
+and open the template in the editor.
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/selQuestionApp.js"></script>
+        <script type="text/javascript">
+            
+            $(document).ready(function(){
+                init();
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js
new file mode 100644
index 0000000..5c75cf3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/locales/ru/scripts/selQuestionApp.js
@@ -0,0 +1,773 @@
+/*
+ * 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/>.
+ */
+
+var sankoreLang = {
+    edit: "Изменить",
+    display:"Закрыть",
+    question:"Вопрос",
+    example_question:"Это пример вопроса",
+    answer:"Это пример ответа",
+    q:"Ð’",
+    add_new_question:"Добавить новый вопрос ...",
+    options:"Настройки",
+    close:"Закрыть",
+    delete_question:"Удалить вопрос",
+    delete_answer:"Удалить ответ",
+    right_answer:"Правильный ответ",
+    template_question:"Введите Ваш вопрос здесь ...",
+    template_answer:"Введите ответ здесь ...",
+    add_answer:"Добавить ответ",
+    select_text:"Выберите правильный ответ",
+    options_desc:"Вы можете выбрать любой из трех вариантов отображения. Смотрите их краткое описание.",
+    radio_desc:"Эта опция позволяет выбрать только один вариант ответа. Ответы будут показаны как радио-кнопки.",
+    checkbox_desc:"Эта опция позволяет выбрать несколько вариантов ответов. Ответы будут показаны как чекбоксы.",
+    select_desc:"Эта опция позволяет выбрать только один вариант ответа. Ответы будут показаны в виде выпадающего меню.",
+    a:"О",
+    wgt_name: "Выбрать ответ",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+var questionArray;
+var currentQstId = "";
+var lang = ""; //locale language
+var begin = true;
+
+function init(){
+
+    //variables
+    var toggleFlag = false;
+    var endFlag = false;
+    var mode = true;
+    questionArray = new Array();  
+    var popupFlag = false
+    var flagForSelect = false;    
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    //popup message
+    var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("#data");
+    
+    // adding question block
+    var addQstDiv = $("<div id='addQstDiv' class='addQstDiv'>").appendTo("#data");
+    var addQstButton = $("<button id='addQstButton' class='addQstButton'>").appendTo("#addQstDiv");    
+    var addQsqSpan1 = $("<span id='addQsqSpan1'>" + sankoreLang.q + "1</span>").appendTo("#addQstButton");
+    var addQsqSpan2 = $("<span id='addQsqSpan2'>" + sankoreLang.add_new_question + "</span>").appendTo("#addQstButton");
+    
+    //import saved data
+    if(window.sankore){
+        if(sankore.preference("qstArrayData","") && sankore.preference("qstArrayData","") != "[]")
+            questionArray = jQuery.parseJSON(sankore.preference("qstArrayData",""));         
+        else
+            questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
+    }
+    else{ 
+        questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
+    }
+    
+    //saving widget data into sankore object for a correct import
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+            sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    if(window.sankore)
+        if(sankore.preference("choisir_style","")){
+            changeStyle(sankore.preference("choisir_style",""));
+            $("#style_select").val(sankore.preference("choisir_style",""));
+        } else
+            changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                displayData(true);
+                mode = true;
+                if(window.sankore){
+                    sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+                    sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+                }
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                editData();
+                mode = false;
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_edit").css("display") == "none")
+            $("#wgt_display").trigger("click");
+        else{
+            editData();
+            mode = false;
+            displayData(true);
+            mode = true;
+        }
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    // add question
+    addQstButton.click(function(){        
+        //question block
+        var id = Math.round(Math.random()*1000);       
+        var obj = new Question();
+        obj.id = id;
+        questionArray.push(obj);
+        
+        addQstBlock(id, sankoreLang.template_question, "","");
+                
+        if(window.sankore)
+            sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+    });
+    
+    //set used at this moment question id into the variable 
+    $(".qstDiv").live('mouseover', function() {
+        currentQstId = this.id;
+    });
+    
+    //set used at this moment question id into the variable 
+    $(".qstDivDisplay").live('mouseover', function() {
+        if(!flagForSelect)
+            currentQstId = this.id.replace("qstDivDisplay","");
+    });
+       
+    //adding new answer
+    $(".ansAdd").live('click', function(){
+        
+        var id = Math.round(Math.random()*1000);        
+        var obj = new Answer();
+        obj.id = id;
+        getNeededElement(questionArray, currentQstId).answers.push(obj);
+        
+        addAnsBlock(id, currentQstId, sankoreLang.template_answer);
+    });
+    
+    //set answer text
+    $(".ansContent").live('keyup', function(event){
+        var id = $(event.target).attr("id").replace("ansContent","");
+        getNeededElement(getNeededElement(questionArray, currentQstId).answers,id).text = $(event.target).text();
+    });
+    
+    //set question text
+    $(".qstContent").live('keyup', function(event){
+        var id = $(event.target).attr("id").replace("qstContent","");
+        getNeededElement(questionArray, id).text = $(event.target).text();
+    });
+    
+    //question div border
+    $(".qstContent").live('mouseover', function(event){
+        $(event.target).css({
+            border:"3px solid #00C6FF"
+        });
+    });
+    
+    // deleting question div border
+    $(".qstContent").live('mouseout', function(event){
+        $(event.target).css({
+            border:"3px solid #ccc"
+        });
+    });
+    
+    //answer div border
+    $(".ansContent").live('mouseover', function(event){
+        $(event.target).css({
+            border:"3px solid #00C6FF"
+        });
+    });
+    
+    // deleting answer div border
+    $(".ansContent").live('mouseout', function(event){
+        $(event.target).css({
+            border:"3px solid #ccc"
+        });
+    });
+    
+    //delete answer
+    $(".ansDelete").live('click', function(){
+        popupText.hide();
+        var id = this.id.replace("ansDelete","");
+        $("#" + currentQstId + " #" + id).remove();
+        for(var i in questionArray)
+            if(questionArray[i].id == currentQstId){
+                questionArray[i].rightAns = questionArray[i].rightAns.replace($("#" + currentQstId + " #" + id + " input:checkbox").val(),"");
+                for(var j in questionArray[i].answers)
+                    if(questionArray[i].answers[j].id == id){
+                        if(j == 0)
+                            questionArray[i].answers.shift();
+                        else
+                        if((j+1) == questionArray[i].answers.length)
+                            questionArray[i].answers.pop();
+                        else
+                            questionArray[i].answers = questionArray[i].answers.slice(0,j).concat(questionArray[i].answers.slice(j+1));  
+                        break;
+                    }
+            }
+        refreshAns();
+    });
+    
+    //delete question
+    $(".qstDelete").live('click', function(){
+        popupText.hide();
+        $("#" + currentQstId).remove();
+        for(var i in questionArray)
+            if(questionArray[i].id == currentQstId){
+                if(i == 0)
+                    questionArray.shift();
+                else
+                if((i+1) == questionArray.length)
+                    questionArray.pop();
+                else
+                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
+                break;
+            }
+        refreshQst();
+    });
+    
+    //change options
+    $(".changeOptions").live('click', function(){
+        $("#" + currentQstId + "qstOptions .changeOptions").hide();
+        $("#" + currentQstId + "qstOptions .applyChanges").show();
+        $("#" + currentQstId + "qstOptChoice").show('fast');
+    });
+    
+    //apply changes
+    $(".applyChanges").live('click', function(){
+        $("#" + currentQstId + "qstOptions .applyChanges").hide();
+        $("#" + currentQstId + "qstOptions .changeOptions").show();
+        $("#" + currentQstId + "qstOptChoice").hide('fast');
+    });
+    
+    //select option
+    $(".qstOptChoice input:radio").live('click', function(event){
+        if(!mode){
+            $("#" + currentQstId + "qstOptChoice input:radio").removeAttr("checked");
+            $(event.target).attr("checked", "checked");
+            getNeededElement(questionArray, currentQstId).type = $(event.target).attr("value");
+        }
+    });
+    
+    //select right ansver in edit mode and answer question in display mode
+    $(".newAnswer input").live('click', function(event){
+
+        if(!mode){
+            if(getNeededElement(questionArray, currentQstId).type == "1" || getNeededElement(questionArray, currentQstId).type == "3"){
+                $("#" + currentQstId + "ansDiv input").removeAttr("checked");
+                $(event.target).attr("checked", "checked");
+                getNeededElement(questionArray, currentQstId).rightAns = $(event.target).attr("value");
+            } else {
+                (event.target.checked) ? $(event.target).attr("checked", "checked") : $(event.target).removeAttr("checked", "checked");
+                getNeededElement(questionArray, currentQstId).rightAns = "";
+                for(var i in $("#" + currentQstId + "ansDiv input")){
+                    if($("#" + currentQstId + "ansDiv input")[i].checked)
+                        getNeededElement(questionArray, currentQstId).rightAns += $("#" + currentQstId + "ansDiv input")[i].value + ", ";
+                }
+            }
+        } else {
+            if(event.target.type == "radio"){
+                checkingAnswers("radio", getNeededElement(questionArray, currentQstId).answers, event.target.value);
+                if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
+                    $(event.target).next().next().css("background-color","#6c0");
+                else
+                    $(event.target).next().next().css("background-color","red");
+            } else {
+                checkingAnswers("box", getNeededElement(questionArray, currentQstId).answers, event.target.value, event.target.checked);
+                if(getNeededElement(questionArray, currentQstId).rightAns.replace(/,/g,"").indexOf(event.target.value + " ", 0) != -1)
+                    $(event.target).next().next().css("background-color","#6c0");
+                else
+                    $(event.target).next().next().css("background-color","red");
+            }
+        }
+    });
+    
+    //popup messages
+    $(".qstDelete").live('mouseover', function(evt){
+        popupFlag = true;
+        popupText.text(sankoreLang.delete_question)
+        .css("top", evt.pageY + 15)
+        .css("left", evt.pageX - 40)
+        .css({
+            width:"130px"
+        })
+        .show("fast", function(){
+            if(!popupFlag)
+                popupText.hide();
+        });
+    });
+    
+    $(".ansDelete").live('mouseover', function(evt){
+        popupFlag = true;
+        popupText.text(sankoreLang.delete_answer)
+        .css("top", evt.pageY + 15)
+        .css("left", evt.pageX - 40)
+        .css({
+            width:"130px"
+        })
+        .show("fast", function(){
+            if(!popupFlag)
+                popupText.hide();
+        });
+    });
+    
+    $(".newAnswer input").live('mouseover', function(evt){
+        if(!mode){
+            popupFlag = true;
+            popupText.text(sankoreLang.right_answer)
+            .css("top", evt.pageY + 15)
+            .css("left", evt.pageX - 40)
+            .css({
+                width:"130px"
+            })
+            .show("fast", function(){
+                if(!popupFlag)
+                    popupText.hide();
+            });
+        }
+    });
+    
+    $(".qstDelete, .ansDelete, .newAnswer input").live('mousemove', function(evt){
+        if(!mode){
+            popupText.css("top", evt.pageY + 15)
+            .css("left", evt.pageX - 40);
+        }
+    });
+    
+    $(".qstDelete, .ansDelete, .newAnswer input").live('mouseout', function(evt){
+        if(!mode){
+            popupFlag = false;
+            popupText.hide();
+        }
+    });
+
+    //answer the questions
+    
+    $("select").live('change', function(evt){
+        if(mode){
+            checkingAnswers("sel", getNeededElement(questionArray, currentQstId).answers, event.target.value);
+            if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
+                $(event.target).css("background-color","#6c0");
+            else
+                $(event.target).css("background-color","red");
+            if(event.target.value == 0)
+                $(event.target).css("background-color","");
+            flagForSelect = false;
+        }
+    });
+    
+    $("select").live('mousedown', function(evt){
+        if(mode){
+            flagForSelect = true;
+        }
+    });
+    
+    //toggle button click trigger
+    //toggleButton.trigger("click");
+    //show data in display mode
+    function displayData(){
+        $("#addQstDiv").hide();
+        $(".qstDiv").hide();
+        addToPage(questionArray);
+    }
+    
+    //set widget in edit mode
+    function editData(){
+        for(var i in questionArray)            
+            for(var j in questionArray[i].answers){
+                questionArray[i].answers[j].state = "";
+                questionArray[i].answers[j].was = false
+            }               
+                
+        $(".qstDivDisplay").remove();
+        
+        $("#addQstDiv").show('fast');
+        $(".qstDiv").show('fast');
+    }
+    
+    // show questions and answers in display mode
+    function addToPage(array){
+            var counter = 1;
+            for(var i in array){
+
+                var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
+                var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
+                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
+                var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
+                var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
+
+                var ansCount = 1;
+                var type = array[i].type;
+                var selInput = $("<select>");
+                if(type == 3){
+                    var newAnswer = $("<div class='newAnswer'>"); 
+                    newAnswer.appendTo(ansDiv);
+                    var selectSpan = $("<span id='answerText'>").appendTo(newAnswer);
+                    selInput.appendTo(selectSpan);
+                    $("<option value='0'>" + sankoreLang.select_text + "</option>").appendTo(selInput);
+                }
+                for(var j in array[i].answers){  
+                    switch(type){
+                        case "1":
+                            var local_state = "";
+                            var local_color = "";
+                            if(begin){
+                                local_state = array[i].answers[j].state;
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
+                            newAnswer = $("<div class='newAnswer'>");
+                            var ansInput = $("<input type='radio' name='" + counter + "' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            var ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
+                            var ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            newAnswer.appendTo(ansDiv);
+                            break;
+                        case "2":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"checked":"";
+                                local_color = (array[i].rightAns.replace(/,/g,"").indexOf(array[i].answers[j].value + " ", 0) != -1)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
+                            newAnswer = $("<div class='newAnswer'>");
+                            ansInput = $("<input type='checkbox' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
+                            ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            newAnswer.appendTo(ansDiv);
+                            break;
+                        case "3":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"selected":"";
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"#6c0":""):((array[i].answers[j].was)?"red":"");
+                            }
+                            ansInput = $("<option value='" + array[i].answers[j].value + "' " + local_state + ">" + array[i].answers[j].text + "</option>").appendTo(selInput);
+                            if(local_state && local_color)
+                                selInput.css("background-color",local_color);
+                            break;
+                    }               
+                    ansCount++;
+                }
+                qstDiv.appendTo("#data");
+                counter++;
+            }
+            begin = false;
+    }
+}
+
+//add new question block in a edit mode
+function addQstBlock(id, text, type, style){
+    var qstDiv = $("<div class='qstDiv' id='" + id + "' " + style + ">");
+    var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
+        
+    var count = $(".qstNumber").size();       
+    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
+        
+    var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
+    var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
+    var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
+    var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
+        
+    var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
+    var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
+    var optDescImg = $("<div class='optDescImg'>").appendTo(optDesc);
+    var optDescText = $("<div class='optDescText'>" + sankoreLang.options_desc + "</div>").appendTo(optDesc);
+        
+    var type1 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType1 = $("<div class='contentType'>").appendTo(type1);
+    var divType1 = $("<div class='divType1'>").appendTo(contentType1);
+    var textType1 = $("<div class='textType'>" + sankoreLang.radio_desc + "</div>").appendTo(contentType1);
+        
+    var type2 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType2 = $("<div class='contentType'>").appendTo(type2);
+    var divType2 = $("<div class='divType2'>").appendTo(contentType2);
+    var textType2 = $("<div class='textType'>" + sankoreLang.checkbox_desc + "</div>").appendTo(contentType2);
+        
+    var type3 = $("<div class='type'>").appendTo(qstOptChoice);
+    var contentType3 = $("<div class='contentType'>").appendTo(type3);
+    var divType3 = $("<div class='divType3'>").appendTo(contentType3);
+    var textType3 = $("<div class='textType'>" + sankoreLang.select_desc + "</div>").appendTo(contentType3);
+
+    switch(type){
+        case "1":
+            var radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1' checked/><div></div>").appendTo(type1);
+            var radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            var radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+        case "2":
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2' checked/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+        case "3":
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3' checked/><div></div>").appendTo(type3);
+            break;
+        default:
+            radioType1 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='1'/><div></div>").appendTo(type1);
+            radioType2 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='2'/><div></div>").appendTo(type2);
+            radioType3 = $("<div class='radioDiv'><div class='radioType'><input type='radio' value='3'/><div></div>").appendTo(type3);
+            break;
+    }
+    
+    var qstContent = $("<div class='qstContent' id='" + id + "qstContent' contenteditable='true'>" + text + "</div>").appendTo(qstDiv);
+        
+    var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
+    var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
+    qstDiv.insertBefore("#addQstDiv");
+    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
+}
+
+//add answers
+function addAnsBlock(id, currId, text, stage, rightAns, type){
+    var newAnswer = $("<div class='newAnswer' id='" + id + "'>");
+    var value;
+    var check = "";
+    if(stage){
+        value = getNeededElement(getNeededElement(questionArray, currId).answers,id).value;
+        if(type != "2"){
+            if(rightAns == value)
+                check = "checked='true'";
+        }
+        else {
+            rightAns = rightAns.replace(/,/g,"");
+            if(rightAns.indexOf(value + " ", 0) != -1)
+                check = "checked='true'";                
+        }
+    }
+    else {
+        value = ($("#" + currId + " .newAnswer input:checkbox").last().val()) ? parseInt($("#" + currId + " .newAnswer input:checkbox").last().val()) + 1 : 1;
+        getNeededElement(getNeededElement(questionArray, currId).answers,id).value = value;
+    }
+    var count = $("#" + currId + " .newAnswer").size() + 1;
+    var input = $("<input type='checkbox' style='float: left;' value='" + value + "' " + check + ">").appendTo(newAnswer);
+    var ansSpan = $("<span class='ansSpan'>" + sankoreLang.a + count + "</span>").appendTo(newAnswer);
+    var ansContent = $("<div class='ansContent' id='" + id +"ansContent' contenteditable='true'>" + text + "</div>").appendTo(newAnswer);
+    var ansDelete = $("<button class='ansDelete' id='" + id + "ansDelete'>").appendTo(newAnswer);
+    newAnswer.insertBefore("#" + currId + "ansDiv .ansAdd");    
+        
+    if(window.sankore)
+        sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+}
+
+//get needed array element
+function getNeededElement(array,id){
+    for(var i in array)
+        if(array[i].id == id)
+            return array[i];
+}
+
+//check on fill
+function checkArrayOnFill(array){
+    var count = 0;
+    
+    for(var i in array)
+        count++;
+    
+    return count;
+}
+
+//refresh answers numbers
+function refreshAns(){
+    var count = $("#" + currentQstId + " .newAnswer").size();        
+    for(var i = 0; i < count; i ++)
+        $($("#" + currentQstId + " .newAnswer span")[i]).text(sankoreLang.a + (i+1));
+}
+
+//refresh questions numbers
+function refreshQst(){
+    var count = $(".qstNumber").size();        
+    for(var i = 0; i < count; i ++)
+        $($(".qstNumber")[i]).text(sankoreLang.q + (i+1));
+    $("#addQsqSpan1").text(sankoreLang.q + ++count);
+}
+
+//check answers
+function checkingAnswers(type, array, value, state){
+    switch(type){
+        case "radio":
+            for(var i in array)
+                if(array[i].value == value){
+                    array[i].state = "checked";
+                    array[i].was = true;
+                } else 
+                    array[i].state = "";                
+            break;
+        case "box":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = state;
+                    array[i].was = true;
+                }     
+            break;
+        case "sel":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = "selected";
+                    array[i].was = true;
+                } else 
+                    array[i].state = ""; 
+            break;
+    }
+}
+
+//question constructor
+function Question(){
+
+    this.text = "";
+    
+    this.type = "1";
+    
+    this.id = "";
+    
+    this.rightAns = "";
+    
+    this.answers = new Array();
+
+}
+
+//answer constructor
+function Answer(){
+    
+    this.id = "";
+    
+    this.text = "";
+    
+    this.value = "";
+    
+    this.state = "";
+    
+    this.was = false;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/languages.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/languages.js
deleted file mode 100644
index a298984..0000000
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/languages.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var sankoreLang = {
-    "en":{
-        "edit": "Edit",
-        "display":"Display",
-        "question":"Question",
-        "example_question":"This is an example of the question",
-        "answer":"This is an example of the answer",
-        "q":"Q",
-        "add_new_question":"Add a new question ...",
-        "options":"Options",
-        "close":"Close",
-        "delete_question":"Delete the question",
-        "delete_answer":"Delete a possibility",
-        "right_answer":"Right answer",
-        "template_question":"Enter a question here ...",
-        "template_answer":"Enter a possibility here ...",
-        "add_answer":"Add a possibility",
-        "select_text":"Choose the right answer",
-        "options_desc":"Types of question",
-        "radio_desc":"Option 1 : one right answer, possibilities are displayed as radio buttons.",
-        "checkbox_desc":"Option 2 : several right answers, possibilities are displayed as checkboxes.",
-        "select_desc":"Option 3 : one right answer, possibilities are displayed as pull-down menu.",
-        "a":"A"
-    },
-    "ru":{
-        "edit": "Изменить",
-        "display":"Показать",
-        "question":"Вопрос",
-        "example_question":"Это пример вопроса",
-        "answer":"Это пример ответа",
-        "q":"Ð’",
-        "add_new_question":"Добавить новый вопрос ...",
-        "options":"Настройки",
-        "close":"Закрыть",
-        "delete_question":"Удалить вопрос",
-        "delete_answer":"Удалить ответ",
-        "right_answer":"Правильный ответ",
-        "template_question":"Введите Ваш вопрос здесь ...",
-        "template_answer":"Введите ответ здесь ...",
-        "add_answer":"Добавить ответ",
-        "select_text":"Выберите правильный ответ",
-        "options_desc":"Вы можете выбрать любой из трех вариантов отображения. Смотрите их краткое описание.",
-        "radio_desc":"Эта опция позволяет выбрать только один вариант ответа. Ответы будут показаны как радио-кнопки.",
-        "checkbox_desc":"Эта опция позволяет выбрать несколько вариантов ответов. Ответы будут показаны как чекбоксы.",
-        "select_desc":"Эта опция позволяет выбрать только один вариант ответа. Ответы будут показаны в виде выпадающего меню.",
-        "a":"О"
-    },
-    "fr":{
-        "edit": "Modifier",
-        "display":"Afficher",
-        "question":"La question",
-        "example_question":"Ceci est un exemple de question",
-        "answer":"Ceci est un exemple de réponse",
-        "q":"Q",
-        "add_new_question":"Ajouter une nouvelle question ...",
-        "options":"Options",
-        "close":"Fermer",
-        "delete_question":"Supprimer la question",
-        "delete_answer":"Supprimer la possibilité",
-        "right_answer":"Bonne réponse",
-        "template_question":"Saisir la question ici ...",
-        "template_answer":"Saisir une possibilité ici ...",
-        "add_answer":"Ajouter une possibilité",
-        "select_text":"Choisir la bonne réponse",
-        "options_desc":"Types de questions",
-        "radio_desc":"Option 1 : une seule bonne réponse, les possibilités sont affichées sous forme de boutons radio.",
-        "checkbox_desc":"Option 2 : plusieurs bonnes réponses, les possibilités sont affichées sous forme de cases à cocher.",
-        "select_desc":"Option 3 : une seule bonne réponse, les possibilités sont affichées sous forme de menu déroulant.",
-        "a":"R"
-    }
-};
-
diff --git a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js
index 32b72c9..aa323e0 100644
--- a/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js
+++ b/Sankore-3.1/resources/library/interactivities/Choisir.wgt/scripts/selQuestionApp.js
@@ -13,64 +13,196 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+var sankoreLang = {
+    edit: "Edit",
+    display:"Display",
+    question:"Question",
+    example_question:"This is an example of the question",
+    answer:"This is one possible answer",
+    q:"Q",
+    add_new_question:" Add a new question ...",
+    options:"Options",
+    close:"Close",
+    delete_question:"Delete question",
+    delete_answer:"Delete the possibility",
+    right_answer:"Right answer",
+    template_question:"Enter your question here ...",
+    template_answer:"Enter one possible answer here ...",
+    add_answer:"Add one possible answer",
+    select_text:"Choose the right answer",
+    options_desc:"You can choose one of the three options of displaying possibilities.",
+    radio_desc:"One right answer only and the possibilities are displayed as radio buttons.",
+    checkbox_desc:"Several right answers and possibilities are displayed as checkboxes.",
+    select_desc:"One right answer only and possibilities are displayed as pull-down menu.",
+    a:"A",
+    wgt_name: "Choose the right answer",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2> Choose the right answer</h2></p>" +
+"<p><h3> Multiple-Choice Question (MCQ)</h3></p>" +
+"<p>Multiple-choice question. The goal is to choose the correct answer.</p>" +
+"<p>“Reload” button resets the exercises.</p>" +
+
+"<p> Enter the “Edit” mode to :</p>" +
+"<ul><li> choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li> modify an exercise or create a new one.</li></ul>" +
+
+"<p>To create a new exercise :</p>" +
+"<ul> <li> click on “Add a new question”,</li>" +
+"<li>edit the text field clicking on the text field “Enter your question here ... ”,</li>" +
+"<li>click on “Options” to select the type of our MCQ (one correct answer, multiple correct answers, drop down) and close it,</li>" +
+"<li>add a new possible answer if needed,</li>" +
+"<li>modify the text field clicking on it.</li>" +
+"<li>set the correct answer by clicking in the checkbox to the left of the text field.</li></ul>" +
+"<p>To remove a label, click on the cross button on the frame.</p>" +
+"<p>To delete a possible answer click on the cross on the left.</p>" +
+"<p>To delete a question, click on the cross on the left.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
 var questionArray;
 var currentQstId = "";
 var lang = ""; //locale language
+var begin = true;
 
 function init(){
 
     //variables
     var toggleFlag = false;
     var endFlag = false;
-    var mode = false;
+    var mode = true;
     questionArray = new Array();  
     var popupFlag = false
     var flagForSelect = false;    
     
-    if(window.sankore){
-        try{
-            lang = sankore.locale().substr(0,2);
-            sankoreLang[lang].edit;
-        } catch(e){
-            lang = "en";
-        }
-    } else 
-        lang = "en";
-    
-    // toggle button
-    var buttonDiv = $("<div id='buttonDiv' class='buttonDiv'>").appendTo("body");
-    var toggleButton = $("<button id='toggleButton' class='toggleButton'><</button>").appendTo("#buttonDiv");
-    buttonDiv.css({
-        top:"10px",
-        right:0
-    });
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
     
     //popup message
-    var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("body");
+    var popupText = $("<div id='popupWordInfo' class='popupWordInfo'></div>").appendTo("#data");
     
     // adding question block
-    var addQstDiv = $("<div id='addQstDiv' class='addQstDiv'>").appendTo("body");
+    var addQstDiv = $("<div id='addQstDiv' class='addQstDiv'>").appendTo("#data");
     var addQstButton = $("<button id='addQstButton' class='addQstButton'>").appendTo("#addQstDiv");    
-    var addQsqSpan1 = $("<span id='addQsqSpan1'>" + sankoreLang[lang].q + "1</span>").appendTo("#addQstButton");
-    var addQsqSpan2 = $("<span id='addQsqSpan2'>" + sankoreLang[lang].add_new_question + "</span>").appendTo("#addQstButton");
+    var addQsqSpan1 = $("<span id='addQsqSpan1'>" + sankoreLang.q + "1</span>").appendTo("#addQstButton");
+    var addQsqSpan2 = $("<span id='addQsqSpan2'>" + sankoreLang.add_new_question + "</span>").appendTo("#addQstButton");
     
     //import saved data
     if(window.sankore){
-        if(sankore.preference("qstArrayData","")){
-            questionArray = jQuery.parseJSON(sankore.preference("qstArrayData",""));
-            for(var i in questionArray){
-                addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
-                for(var j in questionArray[i].answers)
-                    addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
-            }      
+        if(sankore.preference("qstArrayData","") && sankore.preference("qstArrayData","") != "[]")
+            questionArray = jQuery.parseJSON(sankore.preference("qstArrayData",""));         
+        else
+            questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
         }
+        displayData();
+    }
+    else{ 
+        questionArray = jQuery.parseJSON('[{"text":"' + sankoreLang.example_question + '","type":"1","id":538,"rightAns":"2","answers":[{"id":953,"text":"' + sankoreLang.answer + ' 1.","value":1,"state":"","was":false},{"id":526,"text":"' + sankoreLang.answer + ' 2.","value":2,"state":"","was":false},{"id":473,"text":"' + sankoreLang.answer + ' 3.","value":3,"state":"","was":false}]}]');
+        for(i in questionArray){
+            addQstBlock(questionArray[i].id, questionArray[i].text, questionArray[i].type,"style='display: none;'");
+            for(j in questionArray[i].answers)
+                addAnsBlock(questionArray[i].answers[j].id, questionArray[i].id, questionArray[i].answers[j].text, true, questionArray[i].rightAns, questionArray[i].type);
+        }
+        displayData();
     }
     
     //saving widget data into sankore object for a correct import
-    $("body").mouseout(function(){
-        if(window.sankore)
+    if (window.widget) {
+        window.widget.onleave = function(){
             sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+            sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    if(window.sankore)
+        if(sankore.preference("choisir_style","")){
+            changeStyle(sankore.preference("choisir_style",""));
+            $("#style_select").val(sankore.preference("choisir_style",""));
+        } else
+            changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                displayData(true);
+                mode = true;
+                if(window.sankore){
+                    sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
+                    sankore.setPreference("choisir_style", $("#style_select").find("option:selected").val());
+                }
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                editData();
+                mode = false;
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_edit").css("display") == "none")
+            $("#wgt_display").trigger("click");
+        else{
+            editData();
+            mode = false;
+            displayData(true);
+            mode = true;
+        }
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
     })
+    
     // add question
     addQstButton.click(function(){        
         //question block
@@ -79,59 +211,12 @@ function init(){
         obj.id = id;
         questionArray.push(obj);
         
-        addQstBlock(id, sankoreLang[lang].template_question, "","");
+        addQstBlock(id, sankoreLang.template_question, "","");
                 
         if(window.sankore)
             sankore.setPreference("qstArrayData", JSON.stringify(questionArray));
     });
     
-    //toggle mode
-    toggleButton.click(function(){
-        if(mode){
-            editData();
-            mode = false;
-        } else {
-            
-            if(window.sankore)
-                sankore.setPreference("qstArrayData", JSON.stringify(questionArray));  
-            
-            if(checkArrayOnFill(questionArray) != 0)
-                displayData(true);
-            else
-                displayData(false);
-            mode = true;
-        }
-        toggleButton.trigger("mouseout");
-    });
-    
-    // toggle button events
-    toggleButton.mouseover(function(){
-        if(!toggleFlag && !endFlag){
-            endFlag = true;
-            toggleButton.animate({
-                width:"115px"
-            },"fast",function(){
-                toggleFlag = true;
-                if(!mode)
-                    toggleButton.text(sankoreLang[lang].display);
-                else
-                    toggleButton.text(sankoreLang[lang].edit);
-            });
-        }
-    });
-    
-    toggleButton.mouseout(function(){
-        if(toggleFlag && endFlag){
-            endFlag = false;
-            toggleButton.animate({
-                width:"20px"
-            },"fast", function(){
-                toggleButton.text("<");
-                toggleFlag = false;
-            });
-        }
-    });
-    
     //set used at this moment question id into the variable 
     $(".qstDiv").live('mouseover', function() {
         currentQstId = this.id;
@@ -151,7 +236,7 @@ function init(){
         obj.id = id;
         getNeededElement(questionArray, currentQstId).answers.push(obj);
         
-        addAnsBlock(id, currentQstId, sankoreLang[lang].template_answer);
+        addAnsBlock(id, currentQstId, sankoreLang.template_answer);
     });
     
     //set answer text
@@ -204,7 +289,13 @@ function init(){
                 questionArray[i].rightAns = questionArray[i].rightAns.replace($("#" + currentQstId + " #" + id + " input:checkbox").val(),"");
                 for(var j in questionArray[i].answers)
                     if(questionArray[i].answers[j].id == id){
-                        delete questionArray[i].answers[j];
+                        if(j == 0)
+                            questionArray[i].answers.shift();
+                        else
+                        if((j+1) == questionArray[i].answers.length)
+                            questionArray[i].answers.pop();
+                        else
+                            questionArray[i].answers = questionArray[i].answers.slice(0,j).concat(questionArray[i].answers.slice(j+1));  
                         break;
                     }
             }
@@ -217,7 +308,13 @@ function init(){
         $("#" + currentQstId).remove();
         for(var i in questionArray)
             if(questionArray[i].id == currentQstId){
-                delete questionArray[i];
+                if(i == 0)
+                    questionArray.shift();
+                else
+                if((i+1) == questionArray.length)
+                    questionArray.pop();
+                else
+                    questionArray = questionArray.slice(0,i).concat(questionArray.slice(i+1));                
                 break;
             }
         refreshQst();
@@ -264,15 +361,17 @@ function init(){
             }
         } else {
             if(event.target.type == "radio"){
+                checkingAnswers("radio", getNeededElement(questionArray, currentQstId).answers, event.target.value);
                 if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
-                    $(event.target).next().next().find("span").css("background-color","#6c0");
+                    $(event.target).next().next().css("background-color","#6c0");
                 else
-                    $(event.target).next().next().find("span").css("background-color","red");
+                    $(event.target).next().next().css("background-color","red");
             } else {
+                checkingAnswers("box", getNeededElement(questionArray, currentQstId).answers, event.target.value, event.target.checked);
                 if(getNeededElement(questionArray, currentQstId).rightAns.replace(/,/g,"").indexOf(event.target.value + " ", 0) != -1)
-                    $(event.target).next().next().find("span").css("background-color","#6c0");
+                    $(event.target).next().next().css("background-color","#6c0");
                 else
-                    $(event.target).next().next().find("span").css("background-color","red");
+                    $(event.target).next().next().css("background-color","red");
             }
         }
     });
@@ -280,7 +379,7 @@ function init(){
     //popup messages
     $(".qstDelete").live('mouseover', function(evt){
         popupFlag = true;
-        popupText.text(sankoreLang[lang].delete_question)
+        popupText.text(sankoreLang.delete_question)
         .css("top", evt.pageY + 15)
         .css("left", evt.pageX - 40)
         .css({
@@ -294,7 +393,7 @@ function init(){
     
     $(".ansDelete").live('mouseover', function(evt){
         popupFlag = true;
-        popupText.text(sankoreLang[lang].delete_answer)
+        popupText.text(sankoreLang.delete_answer)
         .css("top", evt.pageY + 15)
         .css("left", evt.pageX - 40)
         .css({
@@ -309,7 +408,7 @@ function init(){
     $(".newAnswer input").live('mouseover', function(evt){
         if(!mode){
             popupFlag = true;
-            popupText.text(sankoreLang[lang].right_answer)
+            popupText.text(sankoreLang.right_answer)
             .css("top", evt.pageY + 15)
             .css("left", evt.pageX - 40)
             .css({
@@ -340,10 +439,13 @@ function init(){
     
     $("select").live('change', function(evt){
         if(mode){
+            checkingAnswers("sel", getNeededElement(questionArray, currentQstId).answers, event.target.value);
             if(event.target.value == getNeededElement(questionArray, currentQstId).rightAns)
-                $(event.target).parent().css("background-color","#6c0");
+                $(event.target).css("background-color","#6c0");
             else
-                $(event.target).parent().css("background-color","red");
+                $(event.target).css("background-color","red");
+            if(event.target.value == 0)
+                $(event.target).css("background-color","");
             flagForSelect = false;
         }
     });
@@ -355,16 +457,22 @@ function init(){
     });
     
     //toggle button click trigger
-    toggleButton.trigger("click");
+    //toggleButton.trigger("click");
     //show data in display mode
-    function displayData(flag){
+    function displayData(){
         $("#addQstDiv").hide();
         $(".qstDiv").hide();
-        addToPage(questionArray, flag);
+        addToPage(questionArray);
     }
     
     //set widget in edit mode
     function editData(){
+        for(var i in questionArray)            
+            for(var j in questionArray[i].answers){
+                questionArray[i].answers[j].state = "";
+                questionArray[i].answers[j].was = false
+            }               
+                
         $(".qstDivDisplay").remove();
         
         $("#addQstDiv").show('fast');
@@ -372,14 +480,13 @@ function init(){
     }
     
     // show questions and answers in display mode
-    function addToPage(array, flag){
-        if(flag){
+    function addToPage(array){
             var counter = 1;
             for(var i in array){
 
                 var qstDiv = $("<div class='qstDivDisplay' id='" + array[i].id + "qstDivDisplay'>");        
                 var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
-                var qstNumber = $("<span class='qstNumber'>" + sankoreLang[lang].question + " " + counter + "</span>").appendTo(spanOptConn);        
+                var qstNumber = $("<span class='qstNumber'>" + sankoreLang.question + " " + counter + "</span>").appendTo(spanOptConn);        
                 var qstContent = $("<div class='qstContentDisplay'>" + array[i].text + "</div>").appendTo(qstDiv);        
                 var ansDiv = $("<div class='ansDiv' id='" + array[i].id + "ansDiv'>").appendTo(qstDiv);
 
@@ -391,52 +498,54 @@ function init(){
                     newAnswer.appendTo(ansDiv);
                     var selectSpan = $("<span id='answerText'>").appendTo(newAnswer);
                     selInput.appendTo(selectSpan);
-                    $("<option value='0'>" + sankoreLang[lang].select_text + "</option>").appendTo(selInput);
+                    $("<option value='0'>" + sankoreLang.select_text + "</option>").appendTo(selInput);
                 }
                 for(var j in array[i].answers){  
                     switch(type){
                         case "1":
+                            var local_state = "";
+                            var local_color = "";
+                            if(begin){
+                                local_state = array[i].answers[j].state;
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
                             newAnswer = $("<div class='newAnswer'>");
-                            var ansInput = $("<input type='radio' name='" + counter + "' value='" + array[i].answers[j].value + "' style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            var ansInput = $("<input type='radio' name='" + counter + "' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
                             var ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
-                            var ansContent = $("<div class='ansContentDisplay'><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            var ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
                             newAnswer.appendTo(ansDiv);
                             break;
                         case "2":
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"checked":"";
+                                local_color = (array[i].rightAns.replace(/,/g,"").indexOf(array[i].answers[j].value + " ", 0) != -1)?((array[i].answers[j].was)?"style='background-color: #6c0;'":""):((array[i].answers[j].was)?"style='background-color: red;'":"");
+                            }
                             newAnswer = $("<div class='newAnswer'>");
-                            ansInput = $("<input type='checkbox' value='" + array[i].answers[j].value + "' style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
+                            ansInput = $("<input type='checkbox' value='" + array[i].answers[j].value + "' " + local_state + " style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
                             ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
-                            ansContent = $("<div class='ansContentDisplay'><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
+                            ansContent = $("<div class='ansContentDisplay' " + local_color + "><span id='answerText'>" + array[i].answers[j].text + "</span></div>").appendTo(newAnswer);
                             newAnswer.appendTo(ansDiv);
                             break;
                         case "3":
-                            ansInput = $("<option value='" + array[i].answers[j].value + "'>" + array[i].answers[j].text + "</option>").appendTo(selInput);
+                            local_state = "";
+                            local_color = "";
+                            if(begin){
+                                local_state = (array[i].answers[j].state)?"selected":"";
+                                local_color = (array[i].answers[j].value == array[i].rightAns)?((array[i].answers[j].was)?"#6c0":""):((array[i].answers[j].was)?"red":"");
+                            }
+                            ansInput = $("<option value='" + array[i].answers[j].value + "' " + local_state + ">" + array[i].answers[j].text + "</option>").appendTo(selInput);
+                            if(local_state && local_color)
+                                selInput.css("background-color",local_color);
                             break;
                     }               
                     ansCount++;
                 }
-                qstDiv.appendTo("body");
+                qstDiv.appendTo("#data");
                 counter++;
             }
-        } else {
-            counter = 1;
-            qstDiv = $("<div class='qstDivDisplay'>");        
-            spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);             
-            qstNumber = $("<span class='qstNumber'>" + sankoreLang[lang].question + " " + counter + "</span>").appendTo(spanOptConn);        
-            qstContent = $("<div class='qstContentDisplay'>" + sankoreLang[lang].example_question + "</div>").appendTo(qstDiv);        
-            ansDiv = $("<div class='ansDiv'>").appendTo(qstDiv);
-            
-            ansCount = 1;
-            for(j = 0; j < 3; j++){  
-                newAnswer = $("<div class='newAnswer'>");
-                ansInput = $("<input type='radio' name='1' style='float: left; margin-right: 10px;'/>").appendTo(newAnswer);
-                ansSpan = $("<span class='ansSpanDisplay'>" + ansCount + ".</span>").appendTo(newAnswer);                        
-                ansContent = $("<div class='ansContentDisplay'>" + sankoreLang[lang].answer + " " + ansCount + ".</div>").appendTo(newAnswer);
-                newAnswer.appendTo(ansDiv);                        
-                ansCount++;
-            }
-            qstDiv.appendTo("body");
-        }
+            begin = false;
     }
 }
 
@@ -446,32 +555,32 @@ function addQstBlock(id, text, type, style){
     var spanOptConn = $("<div class='spanOptConn'>").appendTo(qstDiv);
         
     var count = $(".qstNumber").size();       
-    var qstNumber = $("<span class='qstNumber'>" + sankoreLang[lang].q + (count + 1) + "</span>").appendTo(spanOptConn);
+    var qstNumber = $("<span class='qstNumber'>" + sankoreLang.q + (count + 1) + "</span>").appendTo(spanOptConn);
         
     var qstOptions = $("<div class='qstOptions' id='" + id + "qstOptions'>").appendTo(spanOptConn);
-    var changeOptions = $("<button class='changeOptions'>" + sankoreLang[lang].options + "</button>").appendTo(qstOptions);
-    var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang[lang].close + "</button>").appendTo(qstOptions);
+    var changeOptions = $("<button class='changeOptions'>" + sankoreLang.options + "</button>").appendTo(qstOptions);
+    var applyChanges = $("<button class='applyChanges' style='display: none;'>" + sankoreLang.close + "</button>").appendTo(qstOptions);
     var qstDelete = $("<button class='qstDelete'>").appendTo(qstOptions);
         
     var qstOptChoice = $("<div class='qstOptChoice' id='" + id + "qstOptChoice' style='display: none;'>").appendTo(qstDiv);
     var optDesc = $("<div style='height: 65px;'>").appendTo(qstOptChoice);
     var optDescImg = $("<div class='optDescImg'>").appendTo(optDesc);
-    var optDescText = $("<div class='optDescText'>" + sankoreLang[lang].options_desc + "</div>").appendTo(optDesc);
+    var optDescText = $("<div class='optDescText'>" + sankoreLang.options_desc + "</div>").appendTo(optDesc);
         
     var type1 = $("<div class='type'>").appendTo(qstOptChoice);
     var contentType1 = $("<div class='contentType'>").appendTo(type1);
     var divType1 = $("<div class='divType1'>").appendTo(contentType1);
-    var textType1 = $("<div class='textType'>" + sankoreLang[lang].radio_desc + "</div>").appendTo(contentType1);
+    var textType1 = $("<div class='textType'>" + sankoreLang.radio_desc + "</div>").appendTo(contentType1);
         
     var type2 = $("<div class='type'>").appendTo(qstOptChoice);
     var contentType2 = $("<div class='contentType'>").appendTo(type2);
     var divType2 = $("<div class='divType2'>").appendTo(contentType2);
-    var textType2 = $("<div class='textType'>" + sankoreLang[lang].checkbox_desc + "</div>").appendTo(contentType2);
+    var textType2 = $("<div class='textType'>" + sankoreLang.checkbox_desc + "</div>").appendTo(contentType2);
         
     var type3 = $("<div class='type'>").appendTo(qstOptChoice);
     var contentType3 = $("<div class='contentType'>").appendTo(type3);
     var divType3 = $("<div class='divType3'>").appendTo(contentType3);
-    var textType3 = $("<div class='textType'>" + sankoreLang[lang].select_desc + "</div>").appendTo(contentType3);
+    var textType3 = $("<div class='textType'>" + sankoreLang.select_desc + "</div>").appendTo(contentType3);
 
     switch(type){
         case "1":
@@ -499,9 +608,9 @@ function addQstBlock(id, text, type, style){
     var qstContent = $("<div class='qstContent' id='" + id + "qstContent' contenteditable='true'>" + text + "</div>").appendTo(qstDiv);
         
     var ansDiv = $("<div class='ansDiv' id='" + id + "ansDiv'>").appendTo(qstDiv);
-    var ansAdd = $("<button class='ansAdd'>" + sankoreLang[lang].add_answer + "</button>").appendTo(ansDiv);
+    var ansAdd = $("<button class='ansAdd'>" + sankoreLang.add_answer + "</button>").appendTo(ansDiv);
     qstDiv.insertBefore("#addQstDiv");
-    $("#addQsqSpan1").text(sankoreLang[lang].q + (count + 2));
+    $("#addQsqSpan1").text(sankoreLang.q + (count + 2));
 }
 
 //add answers
@@ -527,7 +636,7 @@ function addAnsBlock(id, currId, text, stage, rightAns, type){
     }
     var count = $("#" + currId + " .newAnswer").size() + 1;
     var input = $("<input type='checkbox' style='float: left;' value='" + value + "' " + check + ">").appendTo(newAnswer);
-    var ansSpan = $("<span class='ansSpan'>" + sankoreLang[lang].a + count + "</span>").appendTo(newAnswer);
+    var ansSpan = $("<span class='ansSpan'>" + sankoreLang.a + count + "</span>").appendTo(newAnswer);
     var ansContent = $("<div class='ansContent' id='" + id +"ansContent' contenteditable='true'>" + text + "</div>").appendTo(newAnswer);
     var ansDelete = $("<button class='ansDelete' id='" + id + "ansDelete'>").appendTo(newAnswer);
     newAnswer.insertBefore("#" + currId + "ansDiv .ansAdd");    
@@ -557,15 +666,44 @@ function checkArrayOnFill(array){
 function refreshAns(){
     var count = $("#" + currentQstId + " .newAnswer").size();        
     for(var i = 0; i < count; i ++)
-        $($("#" + currentQstId + " .newAnswer span")[i]).text(sankoreLang[lang].a + (i+1));
+        $($("#" + currentQstId + " .newAnswer span")[i]).text(sankoreLang.a + (i+1));
 }
 
 //refresh questions numbers
 function refreshQst(){
     var count = $(".qstNumber").size();        
     for(var i = 0; i < count; i ++)
-        $($(".qstNumber")[i]).text(sankoreLang[lang].q + (i+1));
-    $("#addQsqSpan1").text(sankoreLang[lang].q + ++count);
+        $($(".qstNumber")[i]).text(sankoreLang.q + (i+1));
+    $("#addQsqSpan1").text(sankoreLang.q + ++count);
+}
+
+//check answers
+function checkingAnswers(type, array, value, state){
+    switch(type){
+        case "radio":
+            for(var i in array)
+                if(array[i].value == value){
+                    array[i].state = "checked";
+                    array[i].was = true;
+                } else 
+                    array[i].state = "";                
+            break;
+        case "box":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = state;
+                    array[i].was = true;
+                }     
+            break;
+        case "sel":
+            for(i in array)
+                if(array[i].value == value){
+                    array[i].state = "selected";
+                    array[i].was = true;
+                } else 
+                    array[i].state = ""; 
+            break;
+    }
 }
 
 //question constructor
@@ -591,4 +729,65 @@ function Answer(){
     this.text = "";
     
     this.value = "";
-}
\ No newline at end of file
+    
+    this.state = "";
+    
+    this.was = false;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml
new file mode 100644
index 0000000..c7b0cdb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/webbrowser" 
+        version="1.1"
+        width="920"
+        height="600" 
+		ub:resizable="true">   
+		     
+  		<name>Choisir</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Choisir widget</description> 
+
+ 		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css
new file mode 100644
index 0000000..65f6e82
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/css/basic.css
@@ -0,0 +1,435 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../images/bg.png);
+}
+
+.toggleButton, .addButton{
+    width: 20px;
+    height: 28px;
+    border: none;
+    background-image: url(../images/greySquare.png);
+    font-weight: bold;
+    font-family: sans-serif;
+    color: yellow;
+    cursor: pointer;
+    border-top-left-radius: 5px;
+    border-bottom-left-radius: 5px;
+}
+
+.buttonDiv, .addButtonDiv{
+    position: fixed;
+    float: right;
+    z-index: 1;
+}
+
+.addButtonDiv{
+    display: none;
+}
+
+.leftDiv{
+    width: 50%;
+    height: 100%;
+    float: left;
+    background-color: black;
+    border-top-left-radius: 7px;
+    border-bottom-left-radius: 7px;
+}
+
+.rightDiv{
+    width: 50%;
+    height: 100%;
+    float: right;
+    background-color: yellow;
+    border-top-right-radius: 7px;
+    border-bottom-right-radius: 7px;
+}
+
+.shadowDiv{
+    width: 100%;
+    height: 100%;
+    display: none;
+    opacity: 0.7;
+    background-color: black;
+    -webkit-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
+    border-radius: 3px;
+    z-index: 400;
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.popupBack{
+    width: 360px;
+    height: 138px;
+    position: absolute;
+    background-image: url(../images/popupBack.png);
+    background-repeat: repeat;
+    -webkit-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 10px;
+    border-radius: 10px;
+    display: none;
+    z-index: 500;
+}
+
+.popupContainers{
+    float: left;
+    width: 98%;
+    height: 36px;
+    padding: 5px 3px 5px 0;
+    overflow: hidden;
+}
+
+.popupLabels{
+    color: yellow;
+    margin: 0 5px;
+}
+
+.expresionInput{
+    float: right;
+    width: 70%;
+    border: none;
+    font-family: sans-serif;
+    background-color: #ffc;
+    -webkit-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    border-radius: 5px;
+    border-radius: 5px;
+}
+
+.popupButtons{
+    float: right;
+    width: 74px;
+    height: 28px;
+    margin: 4px 5px;
+    border: none;
+    background-image: url(../images/greySquare2.png);
+    font-family: sans-serif;
+    color: yellow;
+    cursor: pointer;
+    -webkit-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    border-radius: 5px;
+    border-radius: 5px;
+}
+
+.readyTask{
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    z-index: 100;
+}
+
+.taskContainer{
+    width: 96%;
+    padding: 2px;
+    float: left;
+    text-align: center;
+    font-family: sans-serif;
+    font-weight: bold;
+    font-size:24px;
+    word-wrap: break-word;
+}
+
+.editContainer{
+    min-width: 200px;
+    max-width: 240px;
+    height: auto;
+    position: absolute;
+    border: 5px solid #c7c7c7;
+    -webkit-border-radius: 5px;
+    -webkit-border-radius: 5px;
+    border-radius: 5px;
+    border-radius: 5px;
+}
+
+.closeItem{
+    width: 30px;
+    height: 30px;
+    position: absolute;
+    background-image: url(../images/icon-close.png);
+    right: -15px;
+    top: -15px;
+}
+
+.rightResize{
+    width: 10px;
+    height: 65%;
+    cursor: e-resize;
+    position: absolute;
+    background-image: url(../images/trgRight.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    right: -10px;
+    top: 18%;
+}
+
+.bottomResize{
+    width: 65%;
+    height: 10px;
+    cursor: n-resize;
+    position: absolute;
+    background-image: url(../images/trgDown.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    bottom: -10px;
+    left: 18%;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+.selected{
+    
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../images/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../images/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../images/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../images/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../images/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../images/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../images/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../images/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../images/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../images/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../images/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_add{
+    margin-left: 10px;
+    padding-right: 10px;
+    border: 1px solid #666;
+    border-radius: 15px;
+    padding-left: 30px;
+    background: url(../images/plus.png) -2px -2px no-repeat;
+    display: inline-block;
+}
+
+#wgt_add:hover{
+    border-color: black;
+    cursor: pointer;
+}
+
+.btl_pad{
+    background-image: url(../images/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../images/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../images/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../images/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../images/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../images/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../images/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../images/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../images/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../images/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../images/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../images/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../images/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../images/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    margin: 40px 0 0 0;
+    padding: 10px 20px;
+    background: url("../images/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../images/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/icon.svg
new file mode 100644
index 0000000..8ee346d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/icon.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.3335">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="11.042" y1="53.667" x2="53.1597" y2="53.667">
+	<stop  offset="0" style="stop-color:#000000"/>
+	<stop  offset="1" style="stop-color:#000000"/>
+	<a:midPointStop  offset="0" style="stop-color:#000000"/>
+	<a:midPointStop  offset="0.5" style="stop-color:#000000"/>
+	<a:midPointStop  offset="1" style="stop-color:#000000"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M53.2,11.7H16c-2.8,0-5,2.2-5,5v73.9c0,2.8,2.2,5,5,5h37.1V11.7z"/>
+<path fill="#FDEA13" d="M90.3,11.7H53.2v83.9h37.1c2.8,0,5-2.2,5-5V16.7C95.3,13.9,93,11.7,90.3,11.7z"/>
+<path fill="#FDEA13" d="M25.2,26.5c0.3-0.7,0.7-1.4,1.2-1.9s1.1-1,1.9-1.3c0.7-0.3,1.5-0.5,2.4-0.5c1.2,0,2.1,0.2,2.9,0.5
+	c0.8,0.3,1.4,0.7,1.9,1.2c0.5,0.5,0.8,1,1,1.5s0.3,1.1,0.3,1.5c0,0.8-0.1,1.4-0.3,1.9c-0.2,0.5-0.5,0.9-0.8,1.3
+	c-0.3,0.4-0.6,0.7-1,0.9c-0.4,0.3-0.7,0.5-1,0.8c-0.3,0.3-0.6,0.5-0.9,0.9c-0.3,0.3-0.4,0.7-0.5,1.2v0.9H29v-1.1
+	c0-0.7,0.2-1.3,0.4-1.8c0.2-0.5,0.5-0.9,0.8-1.2s0.6-0.6,0.9-0.9c0.3-0.2,0.6-0.5,0.9-0.7c0.3-0.2,0.5-0.5,0.7-0.8
+	c0.2-0.3,0.2-0.7,0.2-1.1c0-0.7-0.2-1.3-0.5-1.7c-0.4-0.4-0.9-0.5-1.5-0.5c-0.4,0-0.8,0.1-1.1,0.3s-0.6,0.4-0.8,0.7s-0.4,0.6-0.5,1
+	s-0.1,0.8-0.1,1.2h-3.6C24.7,28.1,24.9,27.3,25.2,26.5z M32.5,37v3.8h-3.8V37H32.5z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="59.8755" y1="78.8154" x2="73.9673" y2="78.8154">
+	<stop  offset="0" style="stop-color:#000000"/>
+	<stop  offset="1" style="stop-color:#000000"/>
+	<a:midPointStop  offset="0" style="stop-color:#000000"/>
+	<a:midPointStop  offset="0.5" style="stop-color:#000000"/>
+	<a:midPointStop  offset="1" style="stop-color:#000000"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M68.6,71.6L74,86h-3.3l-1.1-3.2h-5.4L63.1,86h-3.2l5.5-14.4H68.6z M68.8,80.5l-1.8-5.3h0L65,80.5
+	H68.8z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="76.4858" y1="78.8154" x2="88.5601" y2="78.8154">
+	<stop  offset="0" style="stop-color:#000000"/>
+	<stop  offset="1" style="stop-color:#000000"/>
+	<a:midPointStop  offset="0" style="stop-color:#000000"/>
+	<a:midPointStop  offset="0.5" style="stop-color:#000000"/>
+	<a:midPointStop  offset="1" style="stop-color:#000000"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M83.3,71.6c0.7,0,1.3,0.1,1.9,0.2c0.6,0.1,1,0.3,1.5,0.6c0.4,0.3,0.7,0.6,0.9,1.1
+	c0.2,0.5,0.3,1,0.3,1.7c0,0.7-0.2,1.3-0.5,1.8c-0.3,0.5-0.8,0.9-1.5,1.2c0.9,0.3,1.6,0.7,2,1.3c0.4,0.6,0.7,1.4,0.7,2.3
+	c0,0.7-0.1,1.4-0.4,1.9s-0.7,1-1.1,1.3c-0.5,0.3-1,0.6-1.6,0.7c-0.6,0.2-1.2,0.2-1.9,0.2h-7V71.6H83.3z M82.9,77.4
+	c0.6,0,1-0.1,1.4-0.4c0.4-0.3,0.5-0.7,0.5-1.3c0-0.3-0.1-0.6-0.2-0.8c-0.1-0.2-0.3-0.4-0.5-0.5c-0.2-0.1-0.4-0.2-0.7-0.3
+	c-0.3,0-0.5-0.1-0.8-0.1h-3v3.4H82.9z M83,83.6c0.3,0,0.6,0,0.9-0.1s0.5-0.2,0.7-0.3c0.2-0.1,0.4-0.3,0.5-0.6
+	c0.1-0.2,0.2-0.6,0.2-0.9c0-0.7-0.2-1.3-0.6-1.6c-0.4-0.3-1-0.5-1.7-0.5h-3.5v4H83z"/>
+<path fill="#8B8131" d="M53.2,60.7l0.2,0.2l-0.2,0.3v4.3c8.2,2.4,13.4,4.3,13.4,4.3c-3-8.5-6.9-16.1-6.9-16.1L56.8,57l-3.6-2.6V60.7
+	z"/>
+<path fill="#67C8F0" d="M68.5,66.8c-3-8.5-6.9-16.1-6.9-16.1L58.8,54L38.5,39.2l-0.7,0.9L55.4,58l-3.1,3.7
+	C62.1,64.5,68.5,66.8,68.5,66.8z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bg.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/greySquare.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/greySquare.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/greySquare.png
rename to Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/greySquare2.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/greySquare2.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/greySquare2.png
rename to Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/greySquare2.png
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/icon-close.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png
copy to Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/left.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-left.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-right.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/plus.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/plus.png
new file mode 100644
index 0000000..4ed06b7
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/plus.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/popupBack.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/popupBack.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/popupBack.png
rename to Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/right.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_left.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_right.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/top_right.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png
copy to Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgRight.png b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgRight.png
new file mode 100644
index 0000000..05646be
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/images/trgRight.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html
new file mode 100644
index 0000000..ffce672
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/index.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script src="scripts/jquery.disable.text.select.js" type="text/javascript"></script>
+        <script type="text/javascript" src="scripts/blackYellow.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en")
+                    init();
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                init();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }                
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="parameters">
+                        <div class="inline">
+                            <label>
+                                <select id="style_select">
+                                    <option value="1"></option>
+                                    <option value="2"></option>
+                                    <option value="3"></option>
+                                </select>
+                            </label>
+                            <div id="wgt_add"></div>
+                        </div>
+                    </div>
+                    <div id="data">
+
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html
new file mode 100644
index 0000000..6f4218e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/index.html
@@ -0,0 +1,66 @@
+<!--
+To change this template, choose Tools | Templates
+and open the template in the editor.
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script src="../../scripts/jquery.disable.text.select.js" type="text/javascript"></script>
+        <script type="text/javascript" src="scripts/blackYellow.js"></script>
+        <script type="text/javascript">
+            
+            $(document).ready(function(){
+                init();
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="parameters">
+                        <div class="inline">
+                            <label>
+                                <select id="style_select">
+                                    <option value="1"></option>
+                                    <option value="2"></option>
+                                    <option value="3"></option>
+                                </select>
+                            </label>
+                            <div id="wgt_add"></div>
+                        </div>
+                    </div>
+                    <div id="data">
+
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/scripts/blackYellow.js
new file mode 100644
index 0000000..f7a984e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/fr/scripts/blackYellow.js
@@ -0,0 +1,627 @@
+/*
+ * 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/>.
+ */
+
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    add: "Ajouter", 
+    enter_data: "Saisir la donnée:", 
+    enter_result: "Saisir le résultat:", 
+    ok: "Ok", 
+    cancel: "Annuler",
+    wgt_name: "Contraste",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Contraste</h2></p>"+
+    "<p><h3>Jeu de couleurs.</h3></p>"+
+
+
+    "<p>Cette activité permet de masquer et d’afficher du texte en jouant sur la couleur de fond (jaune ou noir). Le but est de pouvoir faire apparaître des données en passant d’une couleur à l’autre.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “+ Ajouter” en haut, puis</p>"+
+    "<ul><li>saisissez la donnée par exemple “3x15”,</li>"+
+    "<li>saisissez le résultat, par exemple “15” et cliquez sur “OK”.</li></ul>"+
+    "<p>Pour modifier les données ou les résultats, cliquez directement sur l’exercice.</p>"+
+    "<p>Pour supprimer un exercice, cliquez sur la croix en haut à droite de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+};
+
+function init(){
+
+    //variables
+    var toggleFlag = false; // detects toggling in toggle button
+    var endFlag = false; // ending of toggling in toggle button
+    var addToggleStart = false; // detects toggling in add button
+    var addToggleEnd = false; // ending of toggling in add button
+    var shadowOver = false;
+    var mode = false;
+    var popupFlag = false
+    var flagForSelect = false;
+    var dragElement = null; //the element that must be dragging
+    var lang = ""; //locale language
+    var resizeFlag = true;
+    
+    var coords = {
+        left:0,
+        top:0
+    }
+
+    var resizeObj = {
+        y:false,
+        x:false,
+        width:0,
+        height:0
+    }
+    
+    var opacityChanged = false;
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_add").text(sankoreLang.add);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("blackYellowData","")){
+            var importArray = jQuery.parseJSON(sankore.preference("blackYellowData",""));
+            for(var i in importArray){
+                var tmpReadyTask = $("<div class='readyTask'>");
+                var exprContainer = $("<div class='taskContainer' style='color: yellow;'>" + importArray[i].data1 + "</div>").appendTo(tmpReadyTask);
+                var resContainer = $("<div class='taskContainer' style='color: black;'>"+ importArray[i].data2 + "</div>").appendTo(tmpReadyTask);
+                tmpReadyTask.width(importArray[i].width)
+                .height(importArray[i].height)
+                .css("position","absolute")
+                .css("top",importArray[i].top)
+                .css("left",importArray[i].left);                                
+                tmpReadyTask.appendTo("#data");
+            }      
+        }
+        $(document).disableTextSelect();
+    }
+    
+    /* ------------- BUTTONS -------------*/
+    
+    if(window.sankore){
+        if(sankore.preference("by_style","")){
+            changeStyle(sankore.preference("by_style",""));
+            $("#style_select").val(sankore.preference("by_style",""));
+        } else
+            changeStyle("3")
+    } else
+        changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");   
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                resizeFlag = true;
+                window.resizeTo(tmpww, tmpwh - 44)
+                $("#data").css("padding-bottom","");
+                $("#leftDiv").css("border-top-left-radius","7px");
+                $("#rightDiv").css("border-top-right-radius","7px");
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                mode = false;
+                $(".leftDiv, .rightDiv").animate({
+                    "opacity":"1"
+                },"fast",function(){
+                    if(opacityChanged){
+                        if($(".editContainer").size() != 0){
+                            $(".editContainer").each(function(index, domElem){
+                                var tmpReadyTask = $(domElem).find(".readyTask");
+                                tmpReadyTask.width($(domElem).width())
+                                .height($(domElem).height())
+                                .css("position","absolute")
+                                .css("top",$(domElem).position().top - 40)
+                                .css("left",$(domElem).position().left)
+                                .find(".taskContainer").removeAttr("contenteditable");                                
+                                
+                                $(domElem).remove();
+                                tmpReadyTask.appendTo("#data");
+                            });
+                        }
+                        opacityChanged = false;
+                    }
+                });
+                
+                $(document).disableTextSelect(); 
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");   
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                resizeFlag = true;
+                window.resizeTo(tmpww, tmpwh + 44)
+                $("#data").css("padding-bottom","42px");
+                $("#leftDiv").css("border-top-left-radius","0px");
+                $("#rightDiv").css("border-top-right-radius","0px");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                mode = true; 
+                $(document).enableTextSelect(); 
+                $(".leftDiv, .rightDiv").animate({
+                    "opacity":"0.4"
+                },"fast",function(){
+                    if(!opacityChanged){
+                        if($(".readyTask").size() != 0){
+                            var tmp_arr = [];
+                            $(".readyTask").each(function(){
+                                tmp_arr.push($(this));
+                            })
+                            orderItems(tmp_arr);
+                            $(".readyTask").each(function(index, domElem){     
+                                var editContent = $("<div class='editContainer'>").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("#data");
+                                var closeItem = $("<div class='closeItem'>").appendTo(editContent);
+                                editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left);
+                                $(domElem).css("position","static")
+                                .width("100%")
+                                .height("100%")
+                                .find(".taskContainer").attr("contenteditable", "true");
+                                $(domElem).appendTo(editContent);
+                            });
+                        }
+                        opacityChanged = true;
+                    }
+                });
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+                ($("#wgt_edit").hasClass("selected"))?$("#parameters").show():'';
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data, #parameters").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").click(function(){
+        reloadItems();
+    });
+    
+    $("#wgt_add").click(function(){
+        if($("#wgt_help").hasClass("open")){
+            $("#help").slideUp("100", function(){
+                $("#wgt_help").removeClass("open");
+                $("#data").show();
+            });
+        }
+        shadowDiv.show();
+        shadowOver = true;
+        popupBack.show("slow");        
+        $(document).disableTextSelect();
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    /* -------------- END OF WORK WITH BUTTONS ---------------*/
+    
+    //basic divs
+    var leftDiv = $("<div id='leftDiv' class='leftDiv'>").appendTo("#data");
+    var rightDiv = $("<div id='rightDiv' class='rightDiv'>").appendTo("#data");
+    
+    //divs for adding a new item
+    var shadowDiv = $("<div id='shadowDiv' class='shadowDiv'>").appendTo("html");
+    var popupBack = $("<div id='popupBack' class='popupBack'>").appendTo("#data");
+    
+    //input fields and buttons for a popup window
+    var expressionDiv = $("<div id='expressionDiv' class='popupContainers'>").appendTo(popupBack);
+    var experssionLabel = $("<span id='experssionLabel' class='popupLabels'><b>" + sankoreLang.enter_data + "</b></span>").appendTo(expressionDiv);
+    var expresionText = $("<input type='text' id='expresionText' class='expresionInput'/>").appendTo(expressionDiv);
+    
+    var resultDiv = $("<div id='resultDiv' class='popupContainers'>").appendTo(popupBack);
+    var resultLabel = $("<span id='resultLabel' class='popupLabels'><b>" + sankoreLang.enter_result + "</b></span>").appendTo(resultDiv);
+    var resultText = $("<input type='text' id='resultText' class='expresionInput'/>").appendTo(resultDiv);
+    
+    var popupButtonsDiv= $("<div id='popupButtonsDiv' class='popupContainers'>").appendTo(popupBack);
+    var cancelButton = $("<input type='button' id='cancelButton' class='popupButtons' value='" + sankoreLang.cancel + "'/>").appendTo(popupButtonsDiv);
+    var okButton = $("<input type='button' id='okButton' class='popupButtons' value='" + sankoreLang.ok + "'/>").appendTo(popupButtonsDiv);
+    
+    /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/
+    
+    $("#resultText, #expresionText").keyup(function(){
+        if($(this).val()){
+            $(this).css("background-color", "#ff9");
+        }
+    });
+    
+    cancelButton.click(function(){
+        popupBack.hide("slow", function(){
+            $("#resultText, #expresionText").val("")
+            .css("background-color", "#ffc");
+            shadowDiv.hide();
+            shadowOver = false; 
+            $(document).enableTextSelect();
+        });        
+    });
+    
+    okButton.click(function(){
+        if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){
+            popupBack.hide("slow", function(){
+                shadowDiv.hide();
+                shadowOver = false;
+                addTask(expresionText.val(), resultText.val());
+                exportToSankore();
+                $("#resultText, #expresionText").val("")
+                .css("background-color", "#ffc");
+                $(document).enableTextSelect();
+            })
+        }
+    });
+    
+    /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/    
+    
+    // a work with dragging possibility    
+    $("input:text").mouseover(function(){
+        $(document).enableTextSelect(); 
+    });
+                        
+    $("input:text").mouseout(function(){
+        $(document).disableTextSelect(); 
+    });
+                    
+    $(".readyTask, .editContainer").live("mousedown",function(event){
+        if($("#wgt_display").hasClass("selected")){
+            if(!shadowOver){
+                dragElement = $(this);
+                coords.left = event.pageX - $(this).position().left;
+                coords.top = event.pageY - $(this).position().top;
+                resizeObj.width = $(this).width();
+                resizeObj.height = $(this).height();
+            }
+            $(document).disableTextSelect();
+        }
+    });
+    
+    $("body").mouseup(function(event){
+        if($("#wgt_display").hasClass("selected")){
+            if(!shadowOver){
+                if (dragElement) {
+                    exportToSankore();
+                }
+                dragElement = null;
+                resizeObj.x = false;
+                resizeObj.y = false;
+            }
+        }
+    });
+    
+    $("body").mousemove(function(event){
+        if(dragElement && !shadowOver && $("#wgt_display").hasClass("selected")){ 
+            var top = event.pageY - coords.top;
+            var left = event.pageX - coords.left;
+            var bottom = top + dragElement.height();
+            var right = left + dragElement.width();            
+            if(resizeObj.x){
+                if(right < ($(window).width() - 54))
+                    dragElement.width(event.pageX - dragElement.position().left);
+            }
+            else if(resizeObj.y){   
+                if(bottom < ($(window).height() - 54))
+                    dragElement.height(event.pageY - dragElement.position().top);
+            }
+            else {
+                if((top > 54) && (bottom < ($(window).height() - 54)))
+                    dragElement.css("top",event.pageY - coords.top);
+                if((left >= 54) && (right < ($(window).width() - 54))) 
+                    dragElement.css("left", event.pageX - coords.left);
+            }
+        }
+    });
+    
+    //closing item
+    $(".closeItem").live("click", function(){
+        if(!shadowOver){
+            $(this).parent().remove();
+            if($(".editContainer").size() > 0){            
+                var prev = $(".editContainer:first");
+                if((prev.position().left == 54) && (prev.position().top != 60))
+                    prev.css("top", "60px");  
+                var prevBottom = prev.position().top + prev.height(),
+                prevLeft = prev.position().left;
+                if(prev.next().length)
+                    recursionCall(prevBottom, prevLeft, prev.next());
+            }
+        }
+    });
+    
+    $(".taskContainer").live("keyup", function(){
+        if($(".editContainer").size() > 1){            
+            var prev = $(".editContainer:first"),
+            prevBottom = prev.position().top + prev.height(),
+            prevLeft = prev.position().left;
+            recursionCall(prevBottom, prevLeft, prev.next());
+        }
+    })
+    
+    function recursionCall(prevBottom, prevLeft, curr){
+        var curHeight = curr.height(),
+        curLeft = curr.position().left;
+        if(prevLeft == curLeft){
+            if((prevBottom + 15 + curHeight) < ($(window).height() - 54))
+                curr.css("top", prevBottom + 15 + "px");                        
+            else
+                curr.css("top", "100px").css("left", prevLeft + 255 + "px");            
+        } else {
+            if((prevBottom + 15 + curHeight) < ($(window).height() - 54))
+                curr.css("top", prevBottom + 15 + "px").css("left", prevLeft + "px");           
+            else
+                curr.css("top", "100px").css("left", prevLeft + 255 + "px");
+        }
+        prevBottom = curr.position().top + curr.height(),
+        prevLeft = curr.position().left;
+        if(curr.next().length)
+            recursionCall(prevBottom, prevLeft, curr.next());
+    }     
+    
+    //$("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
+    popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
+    popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
+    
+    $(window).resize(function(){
+        if(!resizeFlag){
+            if($("#wgt_edit").hasClass("selected")){
+                if($(".editContainer").size() > 1){            
+                    var prev = $(".editContainer:first"),
+                    prevBottom = prev.position().top + prev.height(),
+                    prevLeft = prev.position().left;
+                    recursionCall(prevBottom, prevLeft, prev.next());
+                }
+            } else {
+                var tmp_array = [];
+                $(".readyTask").each(function(){
+                    tmp_array.push($(this));
+                });
+                orderItems(tmp_array);
+            }
+            popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
+            popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
+        } else 
+            resizeFlag = false;
+    });
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportToSankore();
+            sankore.setPreference("by_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    // export data
+    function exportToSankore(){        
+               
+        var arrayToExport = new Array();        
+        if(mode){            
+            if($(".editContainer").size() != 0){
+                $(".editContainer").each(function(index, domElem){
+                    var objToExport = {
+                        data1:"",
+                        data2:"",
+                        width:0,
+                        height:0,
+                        top:0,
+                        left:0
+                    } 
+                    objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text();
+                    objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text();
+                    objToExport.width = $(domElem).width();
+                    objToExport.height = $(domElem).height();
+                    objToExport.top = $(domElem).position().top - 40;
+                    objToExport.left = $(domElem).position().left;
+                    arrayToExport.push(objToExport);
+                });
+            }
+        } else {      
+            if($(".readyTask").size() != 0){
+                $(".readyTask").each(function(index, domElem){
+                    var objToExport = {
+                        data1:"",
+                        data2:"",
+                        width:0,
+                        height:0,
+                        top:0,
+                        left:0
+                    } 
+                    objToExport.data1 = $(domElem).find(":first-child").text();
+                    objToExport.data2 = $(domElem).find(":last-child").text();
+                    objToExport.width = $(domElem).width();
+                    objToExport.height = $(domElem).height();
+                    objToExport.top = $(domElem).position().top;
+                    objToExport.left = $(domElem).position().left;
+                    arrayToExport.push(objToExport);
+                });
+            }              
+        }
+        if(window.sankore)
+            sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport));
+    }
+}
+
+//checking empty fields
+function checkEmptyFields(field){
+    if(field.val() == ""){
+        field.css("background-color", "red");
+        return false;
+    } else {
+        field.css("background-color", "#ff9");
+        return true;
+    }
+}
+
+//reload
+function reloadItems(){
+    if($("#wgt_edit").hasClass("selected"))
+        $("#wgt_display").trigger("click");
+    else{
+        var tmp_array = [];
+        $(".readyTask").each(function(){
+            tmp_array.push($(this));
+        });
+        tmp_array = shuffle(tmp_array);
+        orderItems(tmp_array);
+    }    
+        
+}
+
+//order items
+function orderItems(items){
+    var bottom = ($("#wgt_edit").hasClass("selected"))?85:45,
+    lastItemLeft = 54; 
+    for (var i in items){
+        if((bottom + items[i].height()) < ($(window).height() - 54)){
+            items[i].css("top", bottom + 15 + "px").css("left", lastItemLeft + "px").appendTo("#data");
+            bottom += items[i].height() + 15;
+        } else {
+            bottom = 100;
+            lastItemLeft += 255;
+            items[i].css("top", bottom + "px").css("left", lastItemLeft + "px").appendTo("#data");
+            bottom += items[i].height();
+        }
+    }        
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//adding a new task to the page
+function addTask(expression, result){
+    var lastItem = $(".editContainer:last"),
+    lastItemPos = lastItem.length ? lastItem.position().top : 85,
+    lastItemHeight = lastItem.length ? lastItem.height() : 0,
+    lastItemLeft = lastItem.length ? lastItem.position().left : 54;
+    var bottom = lastItemPos + lastItemHeight + 85;
+    var editContent = $("<div class='editContainer'>");
+    $("<div class='closeItem'>").appendTo(editContent);
+    var main = $("<div class='readyTask'>");
+    $("<div class='taskContainer' style='color: yellow;' contenteditable='true'>" + expression + "</div>").appendTo(main);
+    $("<div class='taskContainer' style='color: black;' contenteditable='true'>"+ result + "</div>").appendTo(main);
+    if(bottom < ($(window).height() - 54)){
+        editContent.css("top", lastItemPos + lastItemHeight + 15 + "px").css("left", lastItemLeft + "px").appendTo("#data");
+    } else {
+        lastItemPos = 85;
+        editContent.css("top", lastItemPos + 15 + "px").css("left", lastItemLeft + 255 + "px").appendTo("#data");
+    }    
+    main.appendTo(editContent);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+    if($("#wgt_edit").hasClass("selected"))
+        $(document).enableTextSelect(); 
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html
new file mode 100644
index 0000000..3ea9874
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/index.html
@@ -0,0 +1,66 @@
+<!--
+To change this template, choose Tools | Templates
+and open the template in the editor.
+-->
+<!DOCTYPE html>
+<html>
+    <head>
+        <title></title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script src="../../scripts/jquery.disable.text.select.js" type="text/javascript"></script>
+        <script type="text/javascript" src="scripts/blackYellow.js"></script>
+        <script type="text/javascript">
+            
+            $(document).ready(function(){
+                init();
+            });
+            
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                     <div id="parameters">
+                        <div class="inline">
+                            <label>
+                                <select id="style_select">
+                                    <option value="1"></option>
+                                    <option value="2"></option>
+                                    <option value="3"></option>
+                                </select>
+                            </label>
+                            <div id="wgt_add"></div>
+                        </div>
+                    </div>
+                    <div id="data">
+                        
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/scripts/blackYellow.js
new file mode 100644
index 0000000..15d2aff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/locales/ru/scripts/blackYellow.js
@@ -0,0 +1,609 @@
+/*
+ * 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/>.
+ */
+
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    add: "Добавить", 
+    enter_data: "Введите вопрос:", 
+    enter_result: "Введите ответ:", 
+    ok: "Ок", 
+    cancel: "Отмена",
+    wgt_name: "Черный/желтый",
+    reload: "Обновить",
+    slate: "узор",
+    pad: "планшет",
+    none: "нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+function init(){
+
+    //variables
+    var toggleFlag = false; // detects toggling in toggle button
+    var endFlag = false; // ending of toggling in toggle button
+    var addToggleStart = false; // detects toggling in add button
+    var addToggleEnd = false; // ending of toggling in add button
+    var shadowOver = false;
+    var mode = false;
+    var popupFlag = false
+    var flagForSelect = false;
+    var dragElement = null; //the element that must be dragging
+    var lang = ""; //locale language
+    var resizeFlag = true;
+    
+    var coords = {
+        left:0,
+        top:0
+    }
+
+    var resizeObj = {
+        y:false,
+        x:false,
+        width:0,
+        height:0
+    }
+    
+    var opacityChanged = false;
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_add").text(sankoreLang.add);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("blackYellowData","")){
+            var importArray = jQuery.parseJSON(sankore.preference("blackYellowData",""));
+            for(var i in importArray){
+                var tmpReadyTask = $("<div class='readyTask'>");
+                var exprContainer = $("<div class='taskContainer' style='color: yellow;'>" + importArray[i].data1 + "</div>").appendTo(tmpReadyTask);
+                var resContainer = $("<div class='taskContainer' style='color: black;'>"+ importArray[i].data2 + "</div>").appendTo(tmpReadyTask);
+                tmpReadyTask.width(importArray[i].width)
+                .height(importArray[i].height)
+                .css("position","absolute")
+                .css("top",importArray[i].top)
+                .css("left",importArray[i].left);                                
+                tmpReadyTask.appendTo("#data");
+            }      
+        }
+        $(document).disableTextSelect();
+    }
+    
+    /* ------------- BUTTONS -------------*/
+    
+    if(window.sankore){
+        if(sankore.preference("by_style","")){
+            changeStyle(sankore.preference("by_style",""));
+            $("#style_select").val(sankore.preference("by_style",""));
+        } else
+            changeStyle("3")
+    } else
+        changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");   
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                resizeFlag = true;
+                window.resizeTo(tmpww, tmpwh - 44)
+                $("#data").css("padding-bottom","");
+                $("#leftDiv").css("border-top-left-radius","7px");
+                $("#rightDiv").css("border-top-right-radius","7px");
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                mode = false;
+                $(".leftDiv, .rightDiv").animate({
+                    "opacity":"1"
+                },"fast",function(){
+                    if(opacityChanged){
+                        if($(".editContainer").size() != 0){
+                            $(".editContainer").each(function(index, domElem){
+                                var tmpReadyTask = $(domElem).find(".readyTask");
+                                tmpReadyTask.width($(domElem).width())
+                                .height($(domElem).height())
+                                .css("position","absolute")
+                                .css("top",$(domElem).position().top - 40)
+                                .css("left",$(domElem).position().left)
+                                .find(".taskContainer").removeAttr("contenteditable");                                
+                                
+                                $(domElem).remove();
+                                tmpReadyTask.appendTo("#data");
+                            });
+                        }
+                        opacityChanged = false;
+                    }
+                });
+                
+                $(document).disableTextSelect(); 
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");   
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                resizeFlag = true;
+                window.resizeTo(tmpww, tmpwh + 44)
+                $("#data").css("padding-bottom","42px");
+                $("#leftDiv").css("border-top-left-radius","0px");
+                $("#rightDiv").css("border-top-right-radius","0px");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                mode = true; 
+                $(document).enableTextSelect(); 
+                $(".leftDiv, .rightDiv").animate({
+                    "opacity":"0.4"
+                },"fast",function(){
+                    if(!opacityChanged){
+                        if($(".readyTask").size() != 0){
+                            var tmp_arr = [];
+                            $(".readyTask").each(function(){
+                                tmp_arr.push($(this));
+                            })
+                            orderItems(tmp_arr);
+                            $(".readyTask").each(function(index, domElem){     
+                                var editContent = $("<div class='editContainer'>").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("#data");
+                                var closeItem = $("<div class='closeItem'>").appendTo(editContent);
+                                editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left);
+                                $(domElem).css("position","static")
+                                .width("100%")
+                                .height("100%")
+                                .find(".taskContainer").attr("contenteditable", "true");
+                                $(domElem).appendTo(editContent);
+                            });
+                        }
+                        opacityChanged = true;
+                    }
+                });
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+                ($("#wgt_edit").hasClass("selected"))?$("#parameters").show():'';
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data, #parameters").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").click(function(){
+        reloadItems();
+    });
+    
+    $("#wgt_add").click(function(){
+        if($("#wgt_help").hasClass("open")){
+            $("#help").slideUp("100", function(){
+                $("#wgt_help").removeClass("open");
+                $("#data").show();
+            });
+        }
+        shadowDiv.show();
+        shadowOver = true;
+        popupBack.show("slow");        
+        $(document).disableTextSelect();
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    /* -------------- END OF WORK WITH BUTTONS ---------------*/
+    
+    //basic divs
+    var leftDiv = $("<div id='leftDiv' class='leftDiv'>").appendTo("#data");
+    var rightDiv = $("<div id='rightDiv' class='rightDiv'>").appendTo("#data");
+    
+    //divs for adding a new item
+    var shadowDiv = $("<div id='shadowDiv' class='shadowDiv'>").appendTo("html");
+    var popupBack = $("<div id='popupBack' class='popupBack'>").appendTo("#data");
+    
+    //input fields and buttons for a popup window
+    var expressionDiv = $("<div id='expressionDiv' class='popupContainers'>").appendTo(popupBack);
+    var experssionLabel = $("<span id='experssionLabel' class='popupLabels'><b>" + sankoreLang.enter_data + "</b></span>").appendTo(expressionDiv);
+    var expresionText = $("<input type='text' id='expresionText' class='expresionInput'/>").appendTo(expressionDiv);
+    
+    var resultDiv = $("<div id='resultDiv' class='popupContainers'>").appendTo(popupBack);
+    var resultLabel = $("<span id='resultLabel' class='popupLabels'><b>" + sankoreLang.enter_result + "</b></span>").appendTo(resultDiv);
+    var resultText = $("<input type='text' id='resultText' class='expresionInput'/>").appendTo(resultDiv);
+    
+    var popupButtonsDiv= $("<div id='popupButtonsDiv' class='popupContainers'>").appendTo(popupBack);
+    var cancelButton = $("<input type='button' id='cancelButton' class='popupButtons' value='" + sankoreLang.cancel + "'/>").appendTo(popupButtonsDiv);
+    var okButton = $("<input type='button' id='okButton' class='popupButtons' value='" + sankoreLang.ok + "'/>").appendTo(popupButtonsDiv);
+    
+    /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/
+    
+    $("#resultText, #expresionText").keyup(function(){
+        if($(this).val()){
+            $(this).css("background-color", "#ff9");
+        }
+    });
+    
+    cancelButton.click(function(){
+        popupBack.hide("slow", function(){
+            $("#resultText, #expresionText").val("")
+            .css("background-color", "#ffc");
+            shadowDiv.hide();
+            shadowOver = false; 
+            $(document).enableTextSelect();
+        });        
+    });
+    
+    okButton.click(function(){
+        if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){
+            popupBack.hide("slow", function(){
+                shadowDiv.hide();
+                shadowOver = false;
+                addTask(expresionText.val(), resultText.val());
+                exportToSankore();
+                $("#resultText, #expresionText").val("")
+                .css("background-color", "#ffc");
+                $(document).enableTextSelect();
+            })
+        }
+    });
+    
+    /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/    
+    
+    // a work with dragging possibility    
+    $("input:text").mouseover(function(){
+        $(document).enableTextSelect(); 
+    });
+                        
+    $("input:text").mouseout(function(){
+        $(document).disableTextSelect(); 
+    });
+                    
+    $(".readyTask, .editContainer").live("mousedown",function(event){
+        if($("#wgt_display").hasClass("selected")){
+            if(!shadowOver){
+                dragElement = $(this);
+                coords.left = event.pageX - $(this).position().left;
+                coords.top = event.pageY - $(this).position().top;
+                resizeObj.width = $(this).width();
+                resizeObj.height = $(this).height();
+            }
+            $(document).disableTextSelect();
+        }
+    });
+    
+    $("body").mouseup(function(event){
+        if($("#wgt_display").hasClass("selected")){
+            if(!shadowOver){
+                if (dragElement) {
+                    exportToSankore();
+                }
+                dragElement = null;
+                resizeObj.x = false;
+                resizeObj.y = false;
+            }
+        }
+    });
+    
+    $("body").mousemove(function(event){
+        if(dragElement && !shadowOver && $("#wgt_display").hasClass("selected")){ 
+            var top = event.pageY - coords.top;
+            var left = event.pageX - coords.left;
+            var bottom = top + dragElement.height();
+            var right = left + dragElement.width();            
+            if(resizeObj.x){
+                if(right < ($(window).width() - 54))
+                    dragElement.width(event.pageX - dragElement.position().left);
+            }
+            else if(resizeObj.y){   
+                if(bottom < ($(window).height() - 54))
+                    dragElement.height(event.pageY - dragElement.position().top);
+            }
+            else {
+                if((top > 54) && (bottom < ($(window).height() - 54)))
+                    dragElement.css("top",event.pageY - coords.top);
+                if((left >= 54) && (right < ($(window).width() - 54))) 
+                    dragElement.css("left", event.pageX - coords.left);
+            }
+        }
+    });
+    
+    //closing item
+    $(".closeItem").live("click", function(){
+        if(!shadowOver){
+            $(this).parent().remove();
+            if($(".editContainer").size() > 0){            
+                var prev = $(".editContainer:first");
+                if((prev.position().left == 54) && (prev.position().top != 60))
+                    prev.css("top", "60px");  
+                var prevBottom = prev.position().top + prev.height(),
+                prevLeft = prev.position().left;
+                if(prev.next().length)
+                    recursionCall(prevBottom, prevLeft, prev.next());
+            }
+        }
+    });
+    
+    $(".taskContainer").live("keyup", function(){
+        if($(".editContainer").size() > 1){            
+            var prev = $(".editContainer:first"),
+            prevBottom = prev.position().top + prev.height(),
+            prevLeft = prev.position().left;
+            recursionCall(prevBottom, prevLeft, prev.next());
+        }
+    })
+    
+    function recursionCall(prevBottom, prevLeft, curr){
+        var curHeight = curr.height(),
+        curLeft = curr.position().left;
+        if(prevLeft == curLeft){
+            if((prevBottom + 15 + curHeight) < ($(window).height() - 54))
+                curr.css("top", prevBottom + 15 + "px");                        
+            else
+                curr.css("top", "100px").css("left", prevLeft + 255 + "px");            
+        } else {
+            if((prevBottom + 15 + curHeight) < ($(window).height() - 54))
+                curr.css("top", prevBottom + 15 + "px").css("left", prevLeft + "px");           
+            else
+                curr.css("top", "100px").css("left", prevLeft + 255 + "px");
+        }
+        prevBottom = curr.position().top + curr.height(),
+        prevLeft = curr.position().left;
+        if(curr.next().length)
+            recursionCall(prevBottom, prevLeft, curr.next());
+    }     
+    
+    //$("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
+    popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
+    popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
+    
+    $(window).resize(function(){
+        if(!resizeFlag){
+            if($("#wgt_edit").hasClass("selected")){
+                if($(".editContainer").size() > 1){            
+                    var prev = $(".editContainer:first"),
+                    prevBottom = prev.position().top + prev.height(),
+                    prevLeft = prev.position().left;
+                    recursionCall(prevBottom, prevLeft, prev.next());
+                }
+            } else {
+                var tmp_array = [];
+                $(".readyTask").each(function(){
+                    tmp_array.push($(this));
+                });
+                orderItems(tmp_array);
+            }
+            popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
+            popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
+        } else 
+            resizeFlag = false;
+    });
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportToSankore();
+            sankore.setPreference("by_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    // export data
+    function exportToSankore(){        
+               
+        var arrayToExport = new Array();        
+        if(mode){            
+            if($(".editContainer").size() != 0){
+                $(".editContainer").each(function(index, domElem){
+                    var objToExport = {
+                        data1:"",
+                        data2:"",
+                        width:0,
+                        height:0,
+                        top:0,
+                        left:0
+                    } 
+                    objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text();
+                    objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text();
+                    objToExport.width = $(domElem).width();
+                    objToExport.height = $(domElem).height();
+                    objToExport.top = $(domElem).position().top - 40;
+                    objToExport.left = $(domElem).position().left;
+                    arrayToExport.push(objToExport);
+                });
+            }
+        } else {      
+            if($(".readyTask").size() != 0){
+                $(".readyTask").each(function(index, domElem){
+                    var objToExport = {
+                        data1:"",
+                        data2:"",
+                        width:0,
+                        height:0,
+                        top:0,
+                        left:0
+                    } 
+                    objToExport.data1 = $(domElem).find(":first-child").text();
+                    objToExport.data2 = $(domElem).find(":last-child").text();
+                    objToExport.width = $(domElem).width();
+                    objToExport.height = $(domElem).height();
+                    objToExport.top = $(domElem).position().top;
+                    objToExport.left = $(domElem).position().left;
+                    arrayToExport.push(objToExport);
+                });
+            }              
+        }
+        if(window.sankore)
+            sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport));
+    }
+}
+
+//checking empty fields
+function checkEmptyFields(field){
+    if(field.val() == ""){
+        field.css("background-color", "red");
+        return false;
+    } else {
+        field.css("background-color", "#ff9");
+        return true;
+    }
+}
+
+//reload
+function reloadItems(){
+    if($("#wgt_edit").hasClass("selected"))
+        $("#wgt_display").trigger("click");
+    else{
+        var tmp_array = [];
+        $(".readyTask").each(function(){
+            tmp_array.push($(this));
+        });
+        tmp_array = shuffle(tmp_array);
+        orderItems(tmp_array);
+    }    
+        
+}
+
+//order items
+function orderItems(items){
+    var bottom = ($("#wgt_edit").hasClass("selected"))?85:45,
+    lastItemLeft = 54; 
+    for (var i in items){
+        if((bottom + items[i].height()) < ($(window).height() - 54)){
+            items[i].css("top", bottom + 15 + "px").css("left", lastItemLeft + "px").appendTo("#data");
+            bottom += items[i].height() + 15;
+        } else {
+            bottom = 100;
+            lastItemLeft += 255;
+            items[i].css("top", bottom + "px").css("left", lastItemLeft + "px").appendTo("#data");
+            bottom += items[i].height();
+        }
+    }        
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//adding a new task to the page
+function addTask(expression, result){
+    var lastItem = $(".editContainer:last"),
+    lastItemPos = lastItem.length ? lastItem.position().top : 85,
+    lastItemHeight = lastItem.length ? lastItem.height() : 0,
+    lastItemLeft = lastItem.length ? lastItem.position().left : 54;
+    var bottom = lastItemPos + lastItemHeight + 85;
+    var editContent = $("<div class='editContainer'>");
+    $("<div class='closeItem'>").appendTo(editContent);
+    var main = $("<div class='readyTask'>");
+    $("<div class='taskContainer' style='color: yellow;' contenteditable='true'>" + expression + "</div>").appendTo(main);
+    $("<div class='taskContainer' style='color: black;' contenteditable='true'>"+ result + "</div>").appendTo(main);
+    if(bottom < ($(window).height() - 54)){
+        editContent.css("top", lastItemPos + lastItemHeight + 15 + "px").css("left", lastItemLeft + "px").appendTo("#data");
+    } else {
+        lastItemPos = 85;
+        editContent.css("top", lastItemPos + 15 + "px").css("left", lastItemLeft + 255 + "px").appendTo("#data");
+    }    
+    main.appendTo(editContent);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+    if($("#wgt_edit").hasClass("selected"))
+        $(document).enableTextSelect(); 
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/blackYellow.js b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/blackYellow.js
new file mode 100644
index 0000000..8e0e340
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/blackYellow.js
@@ -0,0 +1,625 @@
+/*
+ * 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/>.
+ */
+
+var sankoreLang = {
+    display: "Close", 
+    edit: "Edit", 
+    add: "Add", 
+    enter_data: "Enter data:", 
+    enter_result: "Enter result:", 
+    ok: "Ok", 
+    cancel: "Cancel",
+    wgt_name: "Contrast",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Contrast</h2> </p>" +
+"<p><h3>Color game</h3> </p>" +
+
+"<p>Hide and show text playing with the background color (yellow or black). Hide and show data dragging and dropping text fields to the right or the left.</p> "+
+"<p>“Reload” button resets the exercises.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li>modify an exercise or create a new one.</li></ul>" +
+
+"<p>To create a new label :</p>" +
+"<ul><li> click on “+ Add”,</li>" +
+"<li>Enter the data for example “3x15”,</li>" +
+"<li>Enter the result, for example “15” and click “OK”. </li> </ul>" +
+"<p>To modify data or results, click directly on text fields.</p>" +
+"<p>To delete a label, click on the “X”.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+function init(){
+
+    //variables
+    var toggleFlag = false; // detects toggling in toggle button
+    var endFlag = false; // ending of toggling in toggle button
+    var addToggleStart = false; // detects toggling in add button
+    var addToggleEnd = false; // ending of toggling in add button
+    var shadowOver = false;
+    var mode = false;
+    var popupFlag = false
+    var flagForSelect = false;
+    var dragElement = null; //the element that must be dragging
+    var lang = ""; //locale language
+    var resizeFlag = true;
+    
+    var coords = {
+        left:0,
+        top:0
+    }
+
+    var resizeObj = {
+        y:false,
+        x:false,
+        width:0,
+        height:0
+    }
+    
+    var opacityChanged = false;
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_add").text(sankoreLang.add);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("blackYellowData","")){
+            var importArray = jQuery.parseJSON(sankore.preference("blackYellowData",""));
+            for(var i in importArray){
+                var tmpReadyTask = $("<div class='readyTask'>");
+                var exprContainer = $("<div class='taskContainer' style='color: yellow;'>" + importArray[i].data1 + "</div>").appendTo(tmpReadyTask);
+                var resContainer = $("<div class='taskContainer' style='color: black;'>"+ importArray[i].data2 + "</div>").appendTo(tmpReadyTask);
+                tmpReadyTask.width(importArray[i].width)
+                .height(importArray[i].height)
+                .css("position","absolute")
+                .css("top",importArray[i].top)
+                .css("left",importArray[i].left);                                
+                tmpReadyTask.appendTo("#data");
+            }      
+        }
+        $(document).disableTextSelect();
+    }
+    
+    /* ------------- BUTTONS -------------*/
+    
+    if(window.sankore){
+        if(sankore.preference("by_style","")){
+            changeStyle(sankore.preference("by_style",""));
+            $("#style_select").val(sankore.preference("by_style",""));
+        } else
+            changeStyle("3")
+    } else
+        changeStyle("3")
+
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");   
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                resizeFlag = true;
+                window.resizeTo(tmpww, tmpwh - 44)
+                $("#data").css("padding-bottom","");
+                $("#leftDiv").css("border-top-left-radius","7px");
+                $("#rightDiv").css("border-top-right-radius","7px");
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                mode = false;
+                $(".leftDiv, .rightDiv").animate({
+                    "opacity":"1"
+                },"fast",function(){
+                    if(opacityChanged){
+                        if($(".editContainer").size() != 0){
+                            $(".editContainer").each(function(index, domElem){
+                                var tmpReadyTask = $(domElem).find(".readyTask");
+                                tmpReadyTask.width($(domElem).width())
+                                .height($(domElem).height())
+                                .css("position","absolute")
+                                .css("top",$(domElem).position().top - 40)
+                                .css("left",$(domElem).position().left)
+                                .find(".taskContainer").removeAttr("contenteditable");                                
+                                
+                                $(domElem).remove();
+                                tmpReadyTask.appendTo("#data");
+                            });
+                        }
+                        opacityChanged = false;
+                    }
+                });
+                
+                $(document).disableTextSelect(); 
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");   
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                resizeFlag = true;
+                window.resizeTo(tmpww, tmpwh + 44)
+                $("#data").css("padding-bottom","42px");
+                $("#leftDiv").css("border-top-left-radius","0px");
+                $("#rightDiv").css("border-top-right-radius","0px");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                mode = true; 
+                $(document).enableTextSelect(); 
+                $(".leftDiv, .rightDiv").animate({
+                    "opacity":"0.4"
+                },"fast",function(){
+                    if(!opacityChanged){
+                        if($(".readyTask").size() != 0){
+                            var tmp_arr = [];
+                            $(".readyTask").each(function(){
+                                tmp_arr.push($(this));
+                            })
+                            orderItems(tmp_arr);
+                            $(".readyTask").each(function(index, domElem){     
+                                var editContent = $("<div class='editContainer'>").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("#data");
+                                var closeItem = $("<div class='closeItem'>").appendTo(editContent);
+                                editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left);
+                                $(domElem).css("position","static")
+                                .width("100%")
+                                .height("100%")
+                                .find(".taskContainer").attr("contenteditable", "true");
+                                $(domElem).appendTo(editContent);
+                            });
+                        }
+                        opacityChanged = true;
+                    }
+                });
+            }
+        }
+    });
+
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+                ($("#wgt_edit").hasClass("selected"))?$("#parameters").show():'';
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data, #parameters").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+
+    $("#wgt_reload").click(function(){
+        reloadItems();
+    });
+    
+    $("#wgt_add").click(function(){
+        if($("#wgt_help").hasClass("open")){
+            $("#help").slideUp("100", function(){
+                $("#wgt_help").removeClass("open");
+                $("#data").show();
+            });
+        }
+        shadowDiv.show();
+        shadowOver = true;
+        popupBack.show("slow");        
+        $(document).disableTextSelect();
+    });
+    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    /* -------------- END OF WORK WITH BUTTONS ---------------*/
+    
+    //basic divs
+    var leftDiv = $("<div id='leftDiv' class='leftDiv'>").appendTo("#data");
+    var rightDiv = $("<div id='rightDiv' class='rightDiv'>").appendTo("#data");
+    
+    //divs for adding a new item
+    var shadowDiv = $("<div id='shadowDiv' class='shadowDiv'>").appendTo("html");
+    var popupBack = $("<div id='popupBack' class='popupBack'>").appendTo("#data");
+    
+    //input fields and buttons for a popup window
+    var expressionDiv = $("<div id='expressionDiv' class='popupContainers'>").appendTo(popupBack);
+    var experssionLabel = $("<span id='experssionLabel' class='popupLabels'><b>" + sankoreLang.enter_data + "</b></span>").appendTo(expressionDiv);
+    var expresionText = $("<input type='text' id='expresionText' class='expresionInput'/>").appendTo(expressionDiv);
+    
+    var resultDiv = $("<div id='resultDiv' class='popupContainers'>").appendTo(popupBack);
+    var resultLabel = $("<span id='resultLabel' class='popupLabels'><b>" + sankoreLang.enter_result + "</b></span>").appendTo(resultDiv);
+    var resultText = $("<input type='text' id='resultText' class='expresionInput'/>").appendTo(resultDiv);
+    
+    var popupButtonsDiv= $("<div id='popupButtonsDiv' class='popupContainers'>").appendTo(popupBack);
+    var cancelButton = $("<input type='button' id='cancelButton' class='popupButtons' value='" + sankoreLang.cancel + "'/>").appendTo(popupButtonsDiv);
+    var okButton = $("<input type='button' id='okButton' class='popupButtons' value='" + sankoreLang.ok + "'/>").appendTo(popupButtonsDiv);
+    
+    /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/
+    
+    $("#resultText, #expresionText").keyup(function(){
+        if($(this).val()){
+            $(this).css("background-color", "#ff9");
+        }
+    });
+    
+    cancelButton.click(function(){
+        popupBack.hide("slow", function(){
+            $("#resultText, #expresionText").val("")
+            .css("background-color", "#ffc");
+            shadowDiv.hide();
+            shadowOver = false; 
+            $(document).enableTextSelect();
+        });        
+    });
+    
+    okButton.click(function(){
+        if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){
+            popupBack.hide("slow", function(){
+                shadowDiv.hide();
+                shadowOver = false;
+                addTask(expresionText.val(), resultText.val());
+                exportToSankore();
+                $("#resultText, #expresionText").val("")
+                .css("background-color", "#ffc");
+                $(document).enableTextSelect();
+            })
+        }
+    });
+    
+    /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/    
+    
+    // a work with dragging possibility    
+    $("input:text").mouseover(function(){
+        $(document).enableTextSelect(); 
+    });
+                        
+    $("input:text").mouseout(function(){
+        $(document).disableTextSelect(); 
+    });
+                    
+    $(".readyTask, .editContainer").live("mousedown",function(event){
+        if($("#wgt_display").hasClass("selected")){
+            if(!shadowOver){
+                dragElement = $(this);
+                coords.left = event.pageX - $(this).position().left;
+                coords.top = event.pageY - $(this).position().top;
+                resizeObj.width = $(this).width();
+                resizeObj.height = $(this).height();
+            }
+            $(document).disableTextSelect();
+        }
+    });
+    
+    $("body").mouseup(function(event){
+        if($("#wgt_display").hasClass("selected")){
+            if(!shadowOver){
+                if (dragElement) {
+                    exportToSankore();
+                }
+                dragElement = null;
+                resizeObj.x = false;
+                resizeObj.y = false;
+            }
+        }
+    });
+    
+    $("body").mousemove(function(event){
+        if(dragElement && !shadowOver && $("#wgt_display").hasClass("selected")){ 
+            var top = event.pageY - coords.top;
+            var left = event.pageX - coords.left;
+            var bottom = top + dragElement.height();
+            var right = left + dragElement.width();            
+            if(resizeObj.x){
+                if(right < ($(window).width() - 54))
+                    dragElement.width(event.pageX - dragElement.position().left);
+            }
+            else if(resizeObj.y){   
+                if(bottom < ($(window).height() - 54))
+                    dragElement.height(event.pageY - dragElement.position().top);
+            }
+            else {
+                if((top > 54) && (bottom < ($(window).height() - 54)))
+                    dragElement.css("top",event.pageY - coords.top);
+                if((left >= 54) && (right < ($(window).width() - 54))) 
+                    dragElement.css("left", event.pageX - coords.left);
+            }
+        }
+    });
+    
+    //closing item
+    $(".closeItem").live("click", function(){
+        if(!shadowOver){
+            $(this).parent().remove();
+            if($(".editContainer").size() > 0){            
+                var prev = $(".editContainer:first");
+                if((prev.position().left == 54) && (prev.position().top != 60))
+                    prev.css("top", "60px");  
+                var prevBottom = prev.position().top + prev.height(),
+                prevLeft = prev.position().left;
+                if(prev.next().length)
+                    recursionCall(prevBottom, prevLeft, prev.next());
+            }
+        }
+    });
+    
+    $(".taskContainer").live("keyup", function(){
+        if($(".editContainer").size() > 1){            
+            var prev = $(".editContainer:first"),
+            prevBottom = prev.position().top + prev.height(),
+            prevLeft = prev.position().left;
+            recursionCall(prevBottom, prevLeft, prev.next());
+        }
+    })
+    
+    function recursionCall(prevBottom, prevLeft, curr){
+        var curHeight = curr.height(),
+        curLeft = curr.position().left;
+        if(prevLeft == curLeft){
+            if((prevBottom + 15 + curHeight) < ($(window).height() - 54))
+                curr.css("top", prevBottom + 15 + "px");                        
+            else
+                curr.css("top", "100px").css("left", prevLeft + 255 + "px");            
+        } else {
+            if((prevBottom + 15 + curHeight) < ($(window).height() - 54))
+                curr.css("top", prevBottom + 15 + "px").css("left", prevLeft + "px");           
+            else
+                curr.css("top", "100px").css("left", prevLeft + 255 + "px");
+        }
+        prevBottom = curr.position().top + curr.height(),
+        prevLeft = curr.position().left;
+        if(curr.next().length)
+            recursionCall(prevBottom, prevLeft, curr.next());
+    }     
+    
+    //$("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height());
+    popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
+    popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
+    
+    $(window).resize(function(){
+        if(!resizeFlag){
+            if($("#wgt_edit").hasClass("selected")){
+                if($(".editContainer").size() > 1){            
+                    var prev = $(".editContainer:first"),
+                    prevBottom = prev.position().top + prev.height(),
+                    prevLeft = prev.position().left;
+                    recursionCall(prevBottom, prevLeft, prev.next());
+                }
+            } else {
+                var tmp_array = [];
+                $(".readyTask").each(function(){
+                    tmp_array.push($(this));
+                });
+                orderItems(tmp_array);
+            }
+            popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%");
+            popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%");
+        } else 
+            resizeFlag = false;
+    });
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportToSankore();
+            sankore.setPreference("by_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    // export data
+    function exportToSankore(){        
+               
+        var arrayToExport = new Array();        
+        if(mode){            
+            if($(".editContainer").size() != 0){
+                $(".editContainer").each(function(index, domElem){
+                    var objToExport = {
+                        data1:"",
+                        data2:"",
+                        width:0,
+                        height:0,
+                        top:0,
+                        left:0
+                    } 
+                    objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text();
+                    objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text();
+                    objToExport.width = $(domElem).width();
+                    objToExport.height = $(domElem).height();
+                    objToExport.top = $(domElem).position().top - 40;
+                    objToExport.left = $(domElem).position().left;
+                    arrayToExport.push(objToExport);
+                });
+            }
+        } else {      
+            if($(".readyTask").size() != 0){
+                $(".readyTask").each(function(index, domElem){
+                    var objToExport = {
+                        data1:"",
+                        data2:"",
+                        width:0,
+                        height:0,
+                        top:0,
+                        left:0
+                    } 
+                    objToExport.data1 = $(domElem).find(":first-child").text();
+                    objToExport.data2 = $(domElem).find(":last-child").text();
+                    objToExport.width = $(domElem).width();
+                    objToExport.height = $(domElem).height();
+                    objToExport.top = $(domElem).position().top;
+                    objToExport.left = $(domElem).position().left;
+                    arrayToExport.push(objToExport);
+                });
+            }              
+        }
+        if(window.sankore)
+            sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport));
+    }
+}
+
+//checking empty fields
+function checkEmptyFields(field){
+    if(field.val() == ""){
+        field.css("background-color", "red");
+        return false;
+    } else {
+        field.css("background-color", "#ff9");
+        return true;
+    }
+}
+
+//reload
+function reloadItems(){
+    if($("#wgt_edit").hasClass("selected"))
+        $("#wgt_display").trigger("click");
+    else{
+        var tmp_array = [];
+        $(".readyTask").each(function(){
+            tmp_array.push($(this));
+        });
+        tmp_array = shuffle(tmp_array);
+        orderItems(tmp_array);
+    }    
+        
+}
+
+//order items
+function orderItems(items){
+    var bottom = ($("#wgt_edit").hasClass("selected"))?85:45,
+    lastItemLeft = 54; 
+    for (var i in items){
+        if((bottom + items[i].height()) < ($(window).height() - 54)){
+            items[i].css("top", bottom + 15 + "px").css("left", lastItemLeft + "px").appendTo("#data");
+            bottom += items[i].height() + 15;
+        } else {
+            bottom = 100;
+            lastItemLeft += 255;
+            items[i].css("top", bottom + "px").css("left", lastItemLeft + "px").appendTo("#data");
+            bottom += items[i].height();
+        }
+    }        
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//adding a new task to the page
+function addTask(expression, result){
+    var lastItem = $(".editContainer:last"),
+    lastItemPos = lastItem.length ? lastItem.position().top : 85,
+    lastItemHeight = lastItem.length ? lastItem.height() : 0,
+    lastItemLeft = lastItem.length ? lastItem.position().left : 54;
+    var bottom = lastItemPos + lastItemHeight + 85;
+    var editContent = $("<div class='editContainer'>");
+    $("<div class='closeItem'>").appendTo(editContent);
+    var main = $("<div class='readyTask'>");
+    $("<div class='taskContainer' style='color: yellow;' contenteditable='true'>" + expression + "</div>").appendTo(main);
+    $("<div class='taskContainer' style='color: black;' contenteditable='true'>"+ result + "</div>").appendTo(main);
+    if(bottom < ($(window).height() - 54)){
+        editContent.css("top", lastItemPos + lastItemHeight + 15 + "px").css("left", lastItemLeft + "px").appendTo("#data");
+    } else {
+        lastItemPos = 85;
+        editContent.css("top", lastItemPos + 15 + "px").css("left", lastItemLeft + 255 + "px").appendTo("#data");
+    }    
+    main.appendTo(editContent);
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+    if($("#wgt_edit").hasClass("selected"))
+        $(document).enableTextSelect(); 
+}
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/jquery.disable.text.select.js b/Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/jquery.disable.text.select.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/scripts/jquery.disable.text.select.js
rename to Sankore-3.1/resources/library/interactivities/Contraste.wgt/scripts/jquery.disable.text.select.js
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Des.wgt/config.xml
new file mode 100644
index 0000000..6b89246
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/memory" 
+        version="1.0"
+        width="760"
+        height="610"
+        ub:resizable="false">     
+   
+		<name>Les dés</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description>Un jeu de dés</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/arrow-up.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/arrow-up.png
new file mode 100644
index 0000000..aa7c4ea
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/arrow-up.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/main.css
new file mode 100644
index 0000000..e5b4b0d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/main.css
@@ -0,0 +1,24 @@
+#scene {
+	position: relative;
+}
+
+#dices {
+	display: block;
+	margin: 0 auto;
+}
+
+#launch {
+	text-align: center;
+}
+
+#launch button {
+	width: 120px;
+	margin: 0;
+	padding-top: 90px;	
+	background: url("images/arrow-up.png") center top no-repeat;
+	border: none;
+	cursor: pointer;
+	font-family: "SFToontimeRegular";
+	font-size: 24px;
+	color: #FFF;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Des.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..77a2968
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages.properties
@@ -0,0 +1,14 @@
+fr.njin.i18n.document.title = Dices
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.de.parameters.label.count = Number of dices
+fr.njin.i18n.de.actions.label.launch = Roll !
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..b81566e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,14 @@
+fr.njin.i18n.document.title = Dés
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.de.parameters.label.count = Nombre de dés
+fr.njin.i18n.de.actions.label.launch = Lancer !
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Des.wgt/icon.png
new file mode 100644
index 0000000..7dc1201
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Des.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Des.wgt/index.html
new file mode 100644
index 0000000..d3bb6a5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/index.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+
+	<link rel="stylesheet" href="css/main.css">
+	<link rel="stylesheet" href="css/ubw-main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-css-transform.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-count="3" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+					<div>
+						<canvas id="dices" width="640" height="280"></canvas>
+						<div id="actions">
+							<div id="launch">
+								<button type="button"></button>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js
new file mode 100644
index 0000000..f5cdf8c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help-template.js
@@ -0,0 +1,13 @@
+<h3>Dices</h3>
+<h4>For oral calculation or for various games</h4>
+
+<p>The dices interactivity allows you to display random dices faces.</p>
+<p>By clicking on the arrow or on "Launch" button, you have a new set of results. You can work the oral calculation with the displayed results or play to "the account is good".</p>
+<p>The calculations and reasoning can be written on the white board (outside the App).</p>
+<p>Enter the "Edit" mode to :</p>
+<ul>
+<li>choose the theme of the App : pad, slate, or none (by default : pad),</li>
+<li>determine the number of dices you want to use for your activity (2-6).</li>
+</ul>
+<p>The calculations and reasoning could be written on the page (outside the App).</p>
+<p>"Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..8e06acb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/help_fr-template.js
@@ -0,0 +1,16 @@
+<h3>Dés</h3>
+<h4>Calcul oral ou jeux divers</h4>
+
+<p>L'interactivité “Dés” vous permet d'afficher des faces de dés de manière aléatoire. </p>
+
+<p>En cliquant sur la flèche ou sur "Lancer" vous affichez une nouvelle série de résultats. </p>
+
+<p>Les calculs et le raisonnement peuvent être saisis sur le tableau (en dehors de l'interactivité). </p>
+
+<p>Le bouton “Modifier” vous permet :</p>
+<ul>
+<li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette), </li>
+<li>de déterminer le nombre de dés que vous voulez utiliser pour votre activité (de 2 à 6). </li>
+</ul>
+
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-css-transform.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-css-transform.js
new file mode 100644
index 0000000..241a722
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-css-transform.js
@@ -0,0 +1,112 @@
+(function ($) {
+    // Monkey patch jQuery 1.3.1+ css() method to support CSS 'transform'
+    // property uniformly across Safari/Chrome/Webkit, Firefox 3.5+, IE 9+, and Opera 11+.
+    // 2009-2011 Zachary Johnson www.zachstronaut.com
+    // Updated 2011.05.04 (May the fourth be with you!)
+    function getTransformProperty(element)
+    {
+        // Try transform first for forward compatibility
+        // In some versions of IE9, it is critical for msTransform to be in
+        // this list before MozTranform.
+        var properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'];
+        var p;
+        while (p = properties.shift())
+        {
+            if (typeof element.style[p] != 'undefined')
+            {
+                return p;
+            }
+        }
+        
+        // Default to transform also
+        return 'transform';
+    }
+    
+    var _propsObj = null;
+    
+    var proxied = $.fn.css;
+    $.fn.css = function (arg, val)
+    {
+        // Temporary solution for current 1.6.x incompatibility, while
+        // preserving 1.3.x compatibility, until I can rewrite using CSS Hooks
+        if (_propsObj === null)
+        {
+            if (typeof $.cssProps != 'undefined')
+            {
+                _propsObj = $.cssProps;
+            }
+            else if (typeof $.props != 'undefined')
+            {
+                _propsObj = $.props;
+            }
+            else
+            {
+                _propsObj = {}
+            }
+        }
+        
+        // Find the correct browser specific property and setup the mapping using
+        // $.props which is used internally by jQuery.attr() when setting CSS
+        // properties via either the css(name, value) or css(properties) method.
+        // The problem with doing this once outside of css() method is that you
+        // need a DOM node to find the right CSS property, and there is some risk
+        // that somebody would call the css() method before body has loaded or any
+        // DOM-is-ready events have fired.
+        if
+        (
+            typeof _propsObj['transform'] == 'undefined'
+            &&
+            (
+                arg == 'transform'
+                ||
+                (
+                    typeof arg == 'object'
+                    && typeof arg['transform'] != 'undefined'
+                )
+            )
+        )
+        {
+            _propsObj['transform'] = getTransformProperty(this.get(0));
+        }
+        
+        // We force the property mapping here because jQuery.attr() does
+        // property mapping with jQuery.props when setting a CSS property,
+        // but curCSS() does *not* do property mapping when *getting* a
+        // CSS property.  (It probably should since it manually does it
+        // for 'float' now anyway... but that'd require more testing.)
+        //
+        // But, only do the forced mapping if the correct CSS property
+        // is not 'transform' and is something else.
+        if (_propsObj['transform'] != 'transform')
+        {
+            // Call in form of css('transform' ...)
+            if (arg == 'transform')
+            {
+                arg = _propsObj['transform'];
+                
+                // User wants to GET the transform CSS, and in jQuery 1.4.3
+                // calls to css() for transforms return a matrix rather than
+                // the actual string specified by the user... avoid that
+                // behavior and return the string by calling jQuery.style()
+                // directly
+                if (typeof val == 'undefined' && jQuery.style)
+                {
+                    return jQuery.style(this.get(0), arg);
+                }
+            }
+
+            // Call in form of css({'transform': ...})
+            else if
+            (
+                typeof arg == 'object'
+                && typeof arg['transform'] != 'undefined'
+            )
+            {
+                arg[_propsObj['transform']] = arg['transform'];
+                delete arg['transform'];
+            }
+        }
+        
+        return proxied.apply(this, arguments);
+    };
+})(jQuery);
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-ui-1.8.17.custom.min.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
new file mode 100644
index 0000000..56f6b38
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
@@ -0,0 +1,253 @@
+/*!
+ * 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 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
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/main.js
new file mode 100644
index 0000000..c97170b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/main.js
@@ -0,0 +1,196 @@
+function onTemplateLoadedCallback(app) {
+	$("#launch button").text(fr.njin.i18n.de.actions.label.launch);
+	$("#launch button").click(function(){
+		draw(parseInt(app.parameters.value("count")));
+	});
+}
+
+function reloadApp(app) {
+	draw(parseInt(app.parameters.value("count")));
+}
+
+
+function reloadCallback(parameter) {
+	reloadApp(this);
+}
+
+$(document).ready(function(){
+
+	var callbacks = {
+		onTemplatesLoaded: onTemplateLoadedCallback,
+		onEdit: reloadApp,
+		onView: reloadApp
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+});
+
+
+/**
+* Copyright :: http://www.ceriously.com/projects/dice/
+*/
+var c = "";
+var debug = false;
+var kill = false; //saftey feature to kill script
+
+function drawDice() {
+    if(kill) return;
+    drawSquare(); //replaced old way so stroke is enabled
+
+    //draws glare
+    c.fillStyle = "rgba(200,200,200,0.4)";
+    c.globalAlpha = 1.0;
+    c.beginPath();
+    //c.moveTo(-25,-25);
+    //c.lineTo(-25,25);
+    c.moveTo(-25,25);
+    c.lineTo(25,25);
+    c.bezierCurveTo(0, 15, -10, 15, -25, -25); //gives curve to glare
+    c.closePath();
+    c.fill();
+
+    //draw dots
+    var n = Math.floor(Math.random()*6)+1; //1-6 dots
+    c.save();
+    c.fillStyle = "black";
+    if (n == 1) {
+        //c.fillRect(-4,-4,8,8);
+        drawDot(0,0);
+    } else if (n == 2) {
+        //c.fillRect(12, 12, 8, 8);
+        //c.fillRect(-12, -12, -8, -8);
+        drawDot(16,16);
+        drawDot(-16,-16);
+    } else if (n == 3) {
+        //c.fillRect(12, 12, 8, 8);
+        //c.fillRect(-12, -12, -8, -8);
+        //c.fillRect(-4,-4,8,8);
+        drawDot(0,0);
+        drawDot(16,16);
+        drawDot(-16,-16);
+    } else if (n == 4) {
+        //c.fillRect(12, 12, 8, 8);
+        //c.fillRect(-12, -12, -8, -8);
+        //c.fillRect(12,-12,8,-8);
+        //c.fillRect(-12,12,-8,8);
+        drawDot(16,16);
+        drawDot(-16,-16);
+        drawDot(-16,16);
+        drawDot(16,-16);
+    } else if (n == 5) {
+        //c.fillRect(12, 12, 8, 8);
+        //c.fillRect(-12, -12, -8, -8);
+        //c.fillRect(12,-12,8,-8);
+        //c.fillRect(-12,12,-8,8);
+        //c.fillRect(-4,-4,8,8);
+        drawDot(0,0);
+        drawDot(16,16);
+        drawDot(-16,-16);
+        drawDot(-16,16);
+        drawDot(16,-16);
+    } else { //6
+        //c.fillRect(12, 12, 8, 8);
+        //c.fillRect(-12, -12, -8, -8);
+        //c.fillRect(12,-12,8,-8);
+        //c.fillRect(-12,12,-8,8);
+        //c.fillRect(12,-3,8,8);
+        //c.fillRect(-12,3,-8,-8);
+        drawDot(16,16);
+        drawDot(-16,-16);
+        drawDot(-16,16);
+        drawDot(16,-16);
+        drawDot(16,0);
+        drawDot(-16,0);
+    }
+    c.restore();
+
+}
+
+function drawDot(x,y) {
+    c.beginPath();
+    c.arc(x,y,5,0,Math.PI*2,true);
+    c.closePath();
+    c.fill();
+}
+
+function drawSquare() {
+    c.strokeStyle = "#000000";
+    c.fillStyle = "rgba(250,250,250,1.0)"; //white
+    c.beginPath();
+	var w = 30;
+    c.moveTo(-w, -w);
+    c.lineTo(w,-w);
+    c.lineTo(w,w);
+    c.lineTo(-w,w);
+    c.lineTo(-w,-w);
+    c.closePath();
+    c.stroke();
+    c.fill();
+}
+
+function exists(pos1,pos2, positions) {
+    if(kill) return false;
+    for (var j=0; j<positions.length; j++) {
+        if (pos1+80 >= (positions[j])[0] && pos1-80 <= positions[j][0]) {
+            if (pos2+80 >= positions[j][1] && pos2-80 <= positions[j][1]) {
+				log("Oh No "+pos1+" | "+pos2+" is already used!");
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+function draw(num) {
+    kill = false;
+    var canvas = $("#dices").get(0);
+    c = canvas.getContext("2d");
+    c.clearRect(0,0,canvas.width,canvas.height); //clears previous dice
+
+    // all other translates are relative to this one
+    c.translate(canvas.width / 2, canvas.height / 2);
+
+    //declare variables
+    var pos1 = 0;
+    var pos2 = 0;
+    var positions = new Array(num);
+
+    //this loop creates 2dim array with num rows and 2 columns
+    for (var i=0; i<num; i++) {
+        positions[i] = new Array(2);
+    }
+
+    //this loop draws the num of dice
+    for (var i=0; i<num; i++) {
+
+        log("rolling: " + pos1 + " | " + pos2); //always starts at 0,0
+        var counter = 0;
+
+        while(exists(pos1,pos2,positions)) {
+            pos1 = ( Math.floor(Math.random()*3) - 1 ) * ( Math.floor(Math.random()*(canvas.height / 4) -30) + 60 );
+            pos2 = ( Math.floor(Math.random()*3) - 1 ) * ( Math.floor(Math.random()*(canvas.height / 4) -30) + 60 );
+			log("rolling: " + pos1 + " | " + pos2);
+            counter++;
+            if (counter >= 500000) { //kills script if it takes too long
+                alert("Are you trying to crash your browser!? Ceriously...");
+                kill = true;
+                break;
+            }
+        }
+        if(kill) break;
+
+		var r = (Math.random()*175) * Math.PI / 180;
+		
+        positions[i][0] = pos1;
+        positions[i][1] = pos2;
+
+        c.save();
+        c.translate(pos1, pos2);
+        c.rotate(r);
+        drawDice();
+        c.restore();
+        //get new coordinates
+        pos1 = ( Math.floor(Math.random()*3) - 1 ) * ( Math.floor(Math.random()*(canvas.height / 4) -30) + 60 );
+        pos2 = ( Math.floor(Math.random()*3) - 1 ) * ( Math.floor(Math.random()*(canvas.height / 4) -30) + 60 );
+    }
+    c.translate(-canvas.width / 2, -canvas.height / 2); //moves translation back
+} // end draw()
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js
new file mode 100644
index 0000000..670a9d7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Des.wgt/js/templates.js
@@ -0,0 +1,29 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+			
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.de.parameters.label.count}}'+
+					'<select name="count" role="parameter">'+
+						'<option value="2">2</option>'+
+						'<option value="3">3</option>'+						
+						'<option value="4">4</option>'+						
+						'<option value="5">5</option>'+						
+						'<option value="6">6</option>'+						
+					'</select>'+
+				'</label>'+
+			'</div>';
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml
new file mode 100644
index 0000000..76ba351
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/memory" 
+        version="1.0"
+        width="760"
+        height="580" 
+        ub:resizable="true">     
+   
+		<name>La boite</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description>Pour mémoriser une quantité</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/arrow-down.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/arrow-down.png
new file mode 100644
index 0000000..115babc
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/arrow-down.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/box-bg.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/box-bg.png
new file mode 100644
index 0000000..a34f6cc
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/box-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/trombonne.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/trombonne.png
new file mode 100644
index 0000000..9b5e30b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/images/trombonne.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/main.css
new file mode 100644
index 0000000..81b9e4b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/main.css
@@ -0,0 +1,53 @@
+#scene > div {
+	position: relative;
+	display: table;
+	background: url("images/arrow-down.png") 120px 50px no-repeat;
+}
+
+#scene > div > div {
+	display: table-cell;
+	vertical-align: top;	
+}
+
+#box {
+	position: relative;
+	width: 320px;
+	height: 240px;	
+	margin-top: 140px;
+	background: url("images/box-bg.png") center top no-repeat;	
+}
+
+#box.onReset, #box.ui-state-hover {
+	margin-top: 0px;
+	height: 380px;
+	background-position-x: center;
+	background-position-y: bottom;
+}
+
+#objects {
+	padding: 140px 20px 20px 80px;
+	max-width: 325px;
+}
+
+#objects > div {
+	width: 65px;
+	height: 80px;
+	float: left;
+	background: url("images/trombonne.png") left top no-repeat;
+}
+
+#objects > div .tools {
+	display: none;
+}
+
+.onEdit #objects > div .tools {
+	display: block;
+}
+
+#objects > div.inBox {
+	visibility: hidden;
+}
+
+#objects > div.hasBeenInBox {
+	background-position: 0 -80px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..12e8a5f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages.properties
@@ -0,0 +1,15 @@
+fr.njin.i18n.document.title = Envelope
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.boite.parameters.label.count = Number of paperclip(s)
+fr.njin.i18n.boite.parameters.label.remove = -
+fr.njin.i18n.boite.parameters.label.duplicate = +
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..6f2f622
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,15 @@
+fr.njin.i18n.document.title = Enveloppe
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.boite.parameters.label.count = Nombre de trombone(s)
+fr.njin.i18n.boite.parameters.label.remove = -
+fr.njin.i18n.boite.parameters.label.duplicate = +
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/icon.png
new file mode 100644
index 0000000..349b971
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/index.html
new file mode 100644
index 0000000..98fd4ad
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+	<link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-ui-1.8.17.custom.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-count="6" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+					<div>
+						<div>
+							<div id="box">
+
+							</div>
+						</div>
+						<div>
+							<div id="objects" class="">
+
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help-template.js
new file mode 100644
index 0000000..ec60174
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help-template.js
@@ -0,0 +1,13 @@
+<h3>Envelope</h3>
+<h4>Representation of the number</h4>
+
+<p>Drag and drop the paperclips one by one into the envelope. Simply click on the envelope to make reappear the paperclips on the page. They appear in a different color.</p>
+<p>"Reload" button resets the exercises.</p>
+
+<p>Enter the "Edit" mode to :</p>
+<ul>
+<li>choose the theme of the App : pad, slate, or none (by default pad),</li>
+<li>change the number of paperclip(s).</li>
+</ul>
+
+<p>"Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..44e0fc1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js
@@ -0,0 +1,14 @@
+<h3>Enveloppe</h3>
+<h4>Représentation du nombre.</h4>
+
+<p>Glisser les trombones un à un dans l’enveloppe. Il suffit de cliquer sur l’enveloppe pour faire réapparaître les trombones sur la page. Ces derniers apparaissent dans une autre couleur. </p>
+
+<p>Le bouton "Recharger" replace tous les trombones sur la page.</p>
+
+<p>Le bouton “Modifier” vous permet : </p>
+<ul>
+<li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette), </li>
+<li>de déterminer le nombre de trombone(s) souhaité(s).</li> 
+</ul>
+
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-ui-1.8.17.custom.min.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
new file mode 100644
index 0000000..56f6b38
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
@@ -0,0 +1,253 @@
+/*!
+ * 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 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
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/main.js
new file mode 100644
index 0000000..58ef23f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/main.js
@@ -0,0 +1,202 @@
+function onTemplateLoadedCallback(app) {
+	/*
+	$("button[role=addObject]").click(function() {
+		createObject(app);
+	});
+	*/
+}
+
+function reloadApp(app) {
+	$("#objects").empty();
+	var count = parseInt(app.parameters.value("count"));
+	
+	for(var i=0 ; i<count ; i++) {
+		var objectUi = $(Mustache.render(objectTemplate, window));
+		objectUi.draggable({
+			containment: "#scene",
+			scroll: false,
+			revert: app.onEdit ? false : "invalid"
+		});
+		$("#objects").append(objectUi);
+	}
+	
+	if(!app.onEdit) {
+		$("#box").droppable({
+			hoverClass: "ui-state-hover",
+			activeClass: "ui-state-active",  
+			drop: function(event, ui) {
+				ui.draggable.addClass("inBox");
+			}
+		});
+		$("#box").click(function(){
+			$(this).addClass("onReset");
+			var objects = $("#objects .inBox");
+			var n = objects.size();
+			if(n==0) {
+				$(this).removeClass("onReset");
+			}else {
+				objects.each(function(i, o){
+					$(this).removeClass("inBox");
+					$(this).addClass("hasBeenInBox");
+					$(this).animate({
+						left: null,
+						top: null
+					}, function(){
+						n--;
+						if(n==0) {
+							$("#box").removeClass("onReset");
+						}
+					});
+				});
+			}
+		});
+	}
+	
+	/**
+	* Ce code est pour la version objet personnalisable.
+	* L'app a été simplifié
+	*/
+	/*
+	var objects = app.parameters.value("Objects");
+	
+	if(objects !== undefined) {
+		objects = objects.split(",");
+		for(var i=0 ; i<objects.length ; i++) {
+			var id = objects[i];
+			objectForGUID(app, id, getPositionFor(app.parameters, id));
+		}
+	}
+	
+	if(!app.onEdit) {
+		$("#box").droppable({
+			hoverClass: "ui-state-hover",
+			activeClass: "ui-state-active",  
+			drop: function(event, ui) {
+				ui.draggable.addClass("inBox");
+			}
+		});
+		$("#box").click(function(){
+			$("#objects .inBox").each(function(i, o){
+				$(this).removeClass("inBox");
+				var position = getPositionFor(app.parameters, $(this).attr("id"));
+				log(position);
+				$(this).animate({
+					left: position.left,
+					top: position.top
+				});
+			});
+		});
+	}
+	*/
+}
+
+/**
+* Ce code est pour la version objet personnalisable.
+* L'app a été simplifié
+*/
+/*
+function getIdFor(i) {
+	return "o"+i;
+}
+
+function addObjectWithId(app, id) {
+	var objects = app.parameters.value("Objects");
+	app.parameters.value("Objects", objects === undefined ? id : objects+","+id);
+}
+
+function removeObjectWithId(app, id) {
+	var objects = app.parameters.value("Objects");
+	objects = objects.split(",");
+	for(var i=0 ; i<objects.length ; i++) {
+		if(id === objects[i]) {
+			objects.splice(i, 1);
+			break;
+		}
+	}
+	app.parameters.value("Objects", objects.join(","));	
+}
+
+function createObject(app, duplicateID) {
+	var id = app.utils.guid();
+	addObjectWithId(app, id);
+	
+	var last = $("#objects>div:last");
+	var left = 0;
+	var top = 0;
+
+	if(last.size() > 0) {
+		left = parseInt((last.css("left") || "0").replace("px","")) + 10;
+		top = parseInt((last.css("top") || "0").replace("px",""));
+
+		var count = last.parent().find(">div").size();
+		log(last.parent().width() +"-"+ (left+last.width() * count));
+		if(last.parent().width() <= (left+last.width() * count)){
+			left = -last.width() * count;
+			top += last.height() + 10;
+		}
+	}
+	
+	objectForGUID(app, id, {left: left, top: top});
+	
+	//TODO Duplication : Recupérer les images du dupliqué
+}
+
+function objectForGUID(app, guid, position) {
+	window.object = guid;
+	var objectUi = $(Mustache.render(objectTemplate, window));
+	objectUi.css("left", position.left);
+	objectUi.css("top", position.top);
+	objectUi.draggable({
+		containment: "#scene",
+		scroll: false,
+		revert: app.onEdit ? false : "invalid"
+	});
+	$("#objects").append(objectUi);
+	
+	if(app.onEdit) {
+		objectUi.bind("dragstop", function(event, ui){
+			var id = ui.helper.attr("id");
+			log(id);
+			var left = ui.position.left ;
+			var top = ui.position.top;
+			log(left+"-"+top);
+			setPositionFor(app.parameters, id, ui.position);
+		});
+		objectUi.find("button[role=remove]").click(function(){
+			removeObjectWithId(app, guid);	
+			objectUi.remove();
+		});
+		objectUi.find("button[role=duplicate]").click(function(){
+			createObject(app, guid);	
+		});
+	}
+}
+
+function getPositionFor(parameters, id) {
+	var left = parameters.value("Object#"+id+"left");
+	var top = parameters.value("Object#"+id+"top");
+	if(left === undefined)
+		left = 0;
+	if(top === undefined)
+		top = 0;
+	return {left: parseInt(left), top: parseInt(top)};
+}
+
+function setPositionFor(parameters, id, position) {
+	parameters.value("Object#"+id+"left", position.left);
+	parameters.value("Object#"+id+"top", position.top);
+}
+*/
+
+function reloadCallback(parameter) {
+	reloadApp(this);
+}
+
+$(document).ready(function(){
+	var callbacks = {
+		onTemplatesLoaded: onTemplateLoadedCallback,
+		onEdit: reloadApp,
+		onView: reloadApp
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js
new file mode 100644
index 0000000..60513e9
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Enveloppe.wgt/js/templates.js
@@ -0,0 +1,33 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+						
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.boite.parameters.label.count}}'+
+					'<input class="tiny" type="number" name="count" role="parameter">'
+				'</label>'+
+			'</div>';
+			
+			
+var objectTemplate = 
+			'<div id="{{object}}">'+
+				'<!--<div class="tools">'+
+				'<button role="duplicate">{{fr.njin.i18n.boite.parameters.label.duplicate}}</button>'+
+				'<button role="remove">{{fr.njin.i18n.boite.parameters.label.remove}}</button>'+
+				'</div>-->'+
+			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/config.xml
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_images.wgt/config.xml
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/config.xml
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/css/basic.css
new file mode 100644
index 0000000..72d8608
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/css/basic.css
@@ -0,0 +1,508 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid #999;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.img_block{
+/*    width: 120px;
+    height: 120px;
+    padding: 5px;*/
+    display: inline-block;
+    position: absolute;
+    top: 100px;
+    left: 350px;
+    -webkit-user-select: none;
+}
+
+.img_block img{
+    vertical-align: middle;
+}
+
+.img_gray{
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+}
+
+.close_img {
+    width: 30px;
+    height: 30px;
+    background-repeat: no-repeat;
+    position: absolute;
+    background-image: url(../img/close_img.png);    
+    top: -15px;   
+    right: -15px;
+    cursor: pointer;
+}
+
+.size_up{
+    width: 20px;
+    height: 20px;
+    background-repeat: no-repeat;
+    position: absolute;
+    background-image: url(../img/size_up.png);    
+    top: -15px;   
+    right: 20px;
+    cursor: pointer;
+}
+
+.size_down{
+    width: 20px;
+    height: 20px;
+    background-repeat: no-repeat;
+    position: absolute;
+    background-image: url(../img/size_down.png);
+    top: -15px;   
+    right: 45px;
+    cursor: pointer;
+}
+
+.dropHere{
+    background-color: #ccc;
+}
+
+.dropBack{
+    background-color: #F4F2F2;
+}
+
+.audio_block{
+    width: 120px;
+    height: 30px;
+    padding: 10px 5px;    
+    position: absolute;
+    top: 200px;
+    left: 50px;
+}
+
+.audio_desc{
+    min-height: 30px;
+    margin: 5px 0;
+    float: left;
+    margin-left: 20px;
+}
+
+.play, .stop{
+    height: 30px;
+    width: 70px;    
+    float: left;
+    cursor: pointer;
+}
+
+.play{
+    background-image: url(../img/play.png);
+}
+
+.stop{
+    background-image: url(../img/stop.png);
+}
+
+.replay{
+    height: 30px;
+    width: 32px;
+    margin-left: 10px;
+    float: left;
+    background-image: url(../img/replay.png);
+    background-repeat: no-repeat;
+    cursor: pointer;
+}
+
+.gray{
+    background-color: #ccc;
+}
+
+#slider ul, #slider li{
+    margin:0;
+    padding:0;
+    list-style:none;
+}
+
+#slider{ 
+    height: 100%;
+    width: 100%;
+    overflow:hidden; 
+}
+
+span#prevBtn a{
+    height: 100%;
+    width: 47px;
+    position: absolute;
+    left: 0;
+    top: 0;
+    opacity: 0.7;
+    background-image: url(../img/turn_left.png);
+    background-repeat: no-repeat;
+    background-position: 50% 50%;
+}
+
+span#nextBtn a{
+    height: 100%;
+    width: 47px;
+    position: absolute;
+    opacity: 0.7;
+    right: 0;
+    top: 0;
+    background-image: url(../img/turn_right.png);
+    background-repeat: no-repeat;
+    background-position: 50% 50%;
+}
+
+span#nextBtn a:hover, span#prevBtn a:hover{
+    opacity: 1;
+}
+
+li>div{
+    width: 100%;
+    height: 100%;
+
+    position: relative;
+}
+
+.text_block{
+    margin: 0;
+    padding: 5px;
+    width: 200px;
+    position: absolute;
+    top: 50px;
+    left: 100px;
+    background-color: white;
+    border-radius: 10px;
+}
+
+.real_text{
+    width: 100%;
+    height: 100%;
+    word-wrap: break-word;
+}
+
+.block_border{
+    border: 1px solid #999;
+    border-radius: 5px;
+}
+
+.move_block{
+    width: 30px;
+    height: 30px;
+    background-image: url(../img/moving.png);
+    position: absolute;
+    top: -15px;
+    left: -15px;
+    cursor: pointer;
+}
+
+.resize_block{
+    width: 30px;
+    height: 30px;
+    background-image: url(../img/resize.png);
+    position: absolute;
+    bottom: -13px;
+    right: -13px;
+    cursor: pointer;
+}
+
+.add_left{
+    width: 41px;
+    height: 30px;
+    opacity: 0.5;
+    background-image: url(../img/add_left.png);
+    position: absolute;
+    bottom: 40px;
+    left: 40px;
+    cursor: pointer;
+}
+
+.add_right{
+    width: 41px;
+    height: 30px;
+    opacity: 0.5;
+    background-image: url(../img/add_right.png);
+    position: absolute;
+    bottom: 40px;
+    right: 80px;
+    cursor: pointer;
+}
+
+.close_slide{
+    width: 30px;
+    height: 30px;
+    opacity: 0.5;
+    background-image: url(../img/close_slide.png);
+    position: absolute;
+    top: 40px;
+    right: 80px;
+    cursor: pointer;
+}
+
+.add_text{
+    width: 30px;
+    height: 30px;
+    opacity: 0.5;
+    background-image: url(../img/add_text.png);
+    position: absolute;
+    top: 40px;
+    left: 40px;
+    cursor: pointer;
+}
+
+.add_left:hover, .add_right:hover, .close_slide:hover, .add_text:hover{
+    opacity: 0.8;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/icon.svg
new file mode 100644
index 0000000..4b29218
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/icon.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.6665" y1="0" x2="53.6665" y2="107.334">
+	<stop  offset="0" style="stop-color:#727270"/>
+	<stop  offset="1" style="stop-color:#41413F"/>
+	<a:midPointStop  offset="0" style="stop-color:#727270"/>
+	<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+	<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+<rect x="90.4" y="18.8" fill="#B4B4B1" width="16.9" height="64"/>
+<rect y="18.8" fill="#B4B4B1" width="17.5" height="64"/>
+<rect x="33.4" y="20.3" fill="#3A3A3A" width="49" height="67.8"/>
+<rect x="30.4" y="17.3" fill="#FFFFFF" width="49" height="67.8"/>
+<g>
+	<rect x="36.9" y="20.9" fill-rule="evenodd" fill="#FFFFFF" width="36" height="29.3"/>
+	<g id="PfcyK0_4_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M70.8,30.3c-6.5-0.7-12.4,1.2-19,1.2c-0.3,0-0.5,0-0.8,0c-3.3-0.5-6.2-1.3-9.8-1.4
+					c-0.6-0.1-1.5,0-2.3-0.1c0-2.3,0-4.7,0-7c10.6,0,21.2,0,31.8,0C70.8,25.5,70.8,27.9,70.8,30.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M39,30.1C39,30.1,39,30.1,39,30.1c0.7,0,1.7-0.1,2.3,0C40.5,30.1,39.8,30.1,39,30.1
+					z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M51.1,31.5c0.3,0,0.5,0,0.8,0C51.7,31.6,51.2,31.6,51.1,31.5z"/>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M53.7,34.7c5.7,0,11.3,0,17.1,0c0,1.2,0,2.3,0,3.5c-0.5-0.2-1,0.1-1.5-0.3
+					c-0.4,0.2-0.6,0.3-1.1,0.2c-0.2-0.1-0.7-0.1-1,0c-0.9,0.3-2.1,0-2.8-0.3c-0.3-0.1-0.1,0.3-0.4,0.2c-2-0.4-3.8-1-6.2-1
+					c-0.2-0.1-0.6,0-0.9-0.1c-2.9-0.3-5.9-0.5-8.3-1.3c-0.7,0-1.2-0.2-1.9-0.2c-0.2-0.1-0.6,0-0.9-0.1c-1.1,0.1-1.8-0.1-2.6-0.3
+					c0.7-0.1,1.7,0.2,2.4,0c0.3,0.1,1,0.1,1.3,0c0.2,0,0.3,0,0.4-0.1c0.3,0,0.5,0,0.8,0c0.1,0,0.1,0,0.2,0c0.5,0.1,1.4,0.1,1.9,0
+					c0.6,0,1-0.1,1.5-0.1c0.3,0,0.8,0.1,1-0.1c0.1,0,0.1,0,0.2,0C53.2,34.7,53.6,34.8,53.7,34.7z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M52.9,34.8c0.1-0.1,0.5,0,0.8-0.1C53.6,34.8,53.2,34.7,52.9,34.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M51.8,34.8c0.2-0.1,0.7,0,1-0.1C52.6,34.9,52.1,34.8,51.8,34.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M47.4,35c0.1-0.1,0.7-0.1,0.8,0C47.9,35,47.7,35,47.4,35z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M48.4,35c0.6,0,1.3,0,1.9,0C49.8,35.1,48.8,35.1,48.4,35z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M45.6,35c0.4,0,0.9,0,1.3,0C46.7,35.1,45.9,35.1,45.6,35z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M45.9,35.3c0.3,0,0.7-0.1,0.9,0.1C46.5,35.4,46,35.5,45.9,35.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M57,36.9c0.3,0,0.7-0.1,0.9,0.1C57.6,37,57.1,37.1,57,36.9z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M70.8,42.9c0,0.2,0,0.4,0,0.6c-1.2,0.5-2.5,0.5-4.1,0.6
+					C68,43.6,69.3,43.1,70.8,42.9z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M46.8,35.4c0.7,0,1.3,0.1,1.9,0.2c2.4,0.8,5.3,1.1,8.3,1.3c0.2,0.1,0.6,0,0.9,0.1
+					c2.4,0,4.3,0.5,6.2,1c0.3,0.1,0.1-0.3,0.4-0.2c0.7,0.3,1.9,0.6,2.8,0.3c0.1,0.1,0.6,0,1,0c0.6,0.1,0.7,0,1.1-0.2
+					c0.5,0.4,1,0.1,1.5,0.3c0,1.5,0,3,0,4.5c-0.6-0.1-1.3,0.4-1.8,0.3c0,0,0-0.1,0-0.1c-0.4,0-0.6,0.2-0.9,0.3
+					c-0.1,0-0.3-0.1-0.4-0.1c-0.4,0-1,0.4-1.6,0.4c-0.2,0,0.2-0.2,0-0.5c-0.7,0.2-1.8,0.6-2.3,0.1c-1.8,0.5-4.1,0.9-6.5,0.7
+					c1.3-0.4,3.1-0.5,4.5-0.9c-4.3-0.3-7.3,0.8-11.4,1c0.1-0.3,0.6-0.2,0.8-0.3c2-0.3,4.3-0.7,5.9-1.5c-1.6,0-3.3,0.7-5.1,0.9
+					c-1,0.1-1.9,0-2.8,0.3c1.2-1.1,3.5-1,4.8-1.9c-0.5-0.2-1.2-0.1-1.6,0.1c-0.3,0,0.1-0.1,0.1-0.3c-0.9,0-1.6,0.1-2.4,0.1
+					c-0.2-0.1-0.3-0.1-0.4-0.3c-1.4,0.3-2.4-0.3-3.8,0c0-0.1,0.4-0.1,0.6-0.2c0.3-0.1,0.3-0.3,0.5-0.4c-1.4-0.3-3.1,0.1-3.8-0.9
+					c-2,0.3-2.4-1.5-4.2-1.6c0-0.1,0-0.1-0.1-0.1c0-2.5,0-5,0-7.5c0.8,0,1.5,0,2.3,0c3.6,0.1,6.5,0.9,9.8,1.4c0.1,0.1,0.7,0.1,0.8,0
+					c6.6,0,12.5-1.9,19-1.2c0,1.5,0,2.9,0,4.4c-5.8,0-11.4,0-17.1,0c-0.2,0-0.6-0.1-0.8,0.1c-0.1,0-0.1,0-0.2,0
+					c-0.3,0-0.8-0.1-1,0.1c-0.5,0-1,0.1-1.5,0.1c-0.6,0-1.3,0-1.9,0c-0.1,0-0.1,0-0.2,0c-0.1-0.1-0.7-0.1-0.8,0
+					c-0.1,0-0.2,0.1-0.4,0.1c-0.4,0-0.9,0-1.3,0c-0.7,0.2-1.7-0.1-2.4,0c0.8,0.2,1.5,0.4,2.6,0.3C46,35.5,46.5,35.4,46.8,35.4z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M67.3,38.1c0.2-0.1,0.8-0.1,1,0C67.9,38,67.4,38.1,67.3,38.1z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M39,37.6c0,0,0.1,0.1,0.1,0.1c1.8,0.1,2.2,1.9,4.2,1.6c0.7,1,2.4,0.6,3.8,0.9
+					c-0.2,0.1-0.2,0.2-0.5,0.4c-0.2,0.1-0.5,0.1-0.6,0.2c1.3-0.3,2.4,0.3,3.8,0c0,0.2,0.2,0.3,0.4,0.3c0.8-0.1,1.5-0.2,2.4-0.1
+					c0,0.1-0.4,0.3-0.1,0.3c0.4-0.2,1.1-0.3,1.6-0.1c-1.3,1-3.6,0.9-4.8,1.9c0.9-0.3,1.8-0.2,2.8-0.3c1.8-0.2,3.5-0.9,5.1-0.9
+					c-1.6,0.8-4,1.2-5.9,1.5c-0.2,0-0.7-0.1-0.8,0.3c4.1-0.1,7.1-1.2,11.4-1c-1.4,0.4-3.1,0.4-4.5,0.9c2.4,0.2,4.7-0.2,6.5-0.7
+					c0.5,0.5,1.6,0.1,2.3-0.1c0.2,0.3-0.2,0.5,0,0.5c0.6,0,1.2-0.3,1.6-0.4c0.1,0,0.3,0.1,0.4,0.1c0.3,0,0.5-0.2,0.9-0.3
+					c0,0,0,0.1,0,0.1c0.5,0.2,1.3-0.4,1.8-0.3c0,0.1,0,0.2,0,0.3c-1.6,0.2-2.9,0.6-4.1,1.2c1.6-0.1,2.9-0.1,4.1-0.6c0,1.5,0,3,0,4.5
+					c-10.6,0-21.2,0-31.8,0C39,44.6,39,41.1,39,37.6z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<rect x="39" y="57" fill="#70B0D0" width="31.8" height="2.5"/>
+<rect x="39" y="62.1" fill="#70B0D0" width="31.8" height="2.5"/>
+<rect x="39" y="67.4" fill="#70B0D0" width="13.9" height="2.5"/>
+<circle fill="none" stroke="#FFFFFF" stroke-miterlimit="10" cx="54.9" cy="53.6" r="47.3"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/add_left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/add_left.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/add_left.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/add_left.png
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/add_right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/add_right.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/add_right.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/add_right.png
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/add_text.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/add_text.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/add_text.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/add_text.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/close_slide.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/close_slide.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/close_slide.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/close_slide.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/moving.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/moving.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/moving.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/moving.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/play.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/play.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/play.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/play.png
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/replay.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/replay.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/replay.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/replay.png
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/resize.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/resize.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/resize.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/resize.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_down.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_down.png
new file mode 100644
index 0000000..7de2f90
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_down.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_up.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_up.png
new file mode 100644
index 0000000..b846264
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/size_up.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/stop.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/stop.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/stop.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/stop.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_left.png
new file mode 100644
index 0000000..dec05d2
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_left2.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/left.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_left2.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_right.png
new file mode 100644
index 0000000..d3dec5a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_right11.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/img/right.png
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/img/turn_right11.png
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html
new file mode 100644
index 0000000..002011f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/index.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/easySlider1.5.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){  
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="slider">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                        <ul>							
+                        </ul>
+                    </div>
+                    <span id="prevBtn"><a href="javascript:void(0);"></a></span>
+                    <span id="nextBtn"><a href="javascript:void(0);"></a></span>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/easySlider1.5.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/easySlider1.5.js
new file mode 100644
index 0000000..c5d8b97
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/easySlider1.5.js
@@ -0,0 +1,197 @@
+(function($) {
+
+    var s = 0;
+    var w = 0;
+    var h = 0;
+    var t = 0;
+    var ts = 0;
+        
+    $.fn.setSize = function(width, height){
+        w = width;
+        h = height;        
+        $(this).find("ul").css('width',s*w);	
+        $("ul", $(this)).animate(
+        {
+            marginLeft: (t*w*-1)
+        }, 
+        0
+        );	
+    }
+    
+    $.fn.removeSlide = function(){
+        s = $("li", $(this)).length;     
+        $(this).find("ul").css('width',s*w);
+        ts = s-1;		
+    }
+    
+    $.fn.addSlide = function(place){
+        s = $("li", $(this)).length;          
+        ts = s-1;	
+        $(this).find("ul").css('width',s*w);
+        if(place == "after")
+            $("a","#nextBtn").trigger("click");   
+    }
+
+    $.fn.goToSlide = function(dest){
+        t = dest;
+        p = (t*w*-1);
+        $("ul",$(this)).animate(
+        {
+            marginLeft: p
+        }, 
+        0
+        );
+    }
+    
+    $.fn.getPage = function(){
+        return t;
+    }
+
+    $.fn.easySlider = function(options){
+	  
+        // default configuration properties
+        var defaults = {			
+            prevId: 		'prevBtn',
+            prevText: 		'Previous',
+            nextId: 		'nextBtn',	
+            nextText: 		'Next',
+            controlsShow:           true,
+            controlsBefore:         '',
+            controlsAfter:          '',	
+            controlsFade:           true,
+            firstId: 		'firstBtn',
+            firstText: 		'First',
+            firstShow:		false,
+            lastId: 		'lastBtn',	
+            lastText: 		'Last',
+            lastShow:		false,				
+            vertical:		false,
+            speed: 			800,
+            auto:			false,
+            pause:			2000,
+            continuous:		false
+        }; 
+		
+        options = $.extend(defaults, options);  
+				
+        this.each(function() {  
+            var obj = $(this); 				
+            s = $("li", obj).length;
+            w = $("li", obj).width(); 
+            h = $("li", obj).height(); 
+            obj.width(w); 
+            obj.height(h); 
+            obj.css("overflow","hidden");
+            ts = s-1;
+            t = 0;
+            $("ul", obj).css('width',s*w);			
+            if(!options.vertical) $("li", obj).css('float','left');
+			
+            if(options.controlsShow){
+                var html = options.controlsBefore;
+                if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
+                html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
+                html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
+                if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
+                html += options.controlsAfter;						
+                $(obj).after(html);										
+            };
+	
+            $("a","#"+options.nextId).click(function(){	
+                animate("next",true);
+            });
+            $("a","#"+options.prevId).click(function(){		
+                animate("prev",true);				
+            });	
+            $("a","#"+options.firstId).click(function(){		
+                animate("first",true);
+            });				
+            $("a","#"+options.lastId).click(function(){		
+                animate("last",true);				
+            });		
+			
+            function animate(dir,clicked){
+                var ot = t;
+                switch(dir){
+                    case "next":
+                        t = (ot>=ts) ? (options.continuous ? 0 : ts) : ++t;
+                        break; 
+                    case "prev":
+                        t = (t<=0) ? (options.continuous ? ts : 0) : --t;
+                        break; 
+                    case "first":
+                        t = 0;
+                        break; 
+                    case "last":
+                        t = ts;
+                        break; 
+                    default:
+                        break; 
+                };	
+
+                var diff = Math.abs(ot-t);
+                var speed = diff*options.speed;						
+                if(!options.vertical) {
+                    p = (t*w*-1);
+                    $("ul",obj).animate(
+                    {
+                        marginLeft: p
+                    }, 
+                    speed
+                    );
+                } else {
+                    p = (t*h*-1);
+                    $("ul",obj).animate(
+                    {
+                        marginTop: p
+                    }, 
+                    speed
+                    );					
+                };
+				
+                if(!options.continuous && options.controlsFade){					
+                    if(t==ts){
+                        $("a","#"+options.nextId).hide();
+                        $("a","#"+options.lastId).hide();
+                    } else {
+                        $("a","#"+options.nextId).show();
+                        $("a","#"+options.lastId).show();					
+                    };
+                    if(t==0){
+                        $("a","#"+options.prevId).hide();
+                        $("a","#"+options.firstId).hide();
+                    } else {
+                        $("a","#"+options.prevId).show();
+                        $("a","#"+options.firstId).show();
+                    };					
+                };				
+				
+                if(clicked) clearTimeout(timeout);
+                if(options.auto && dir=="next" && !clicked){
+                    timeout = setTimeout(function(){
+                        animate("next",false);
+                    },diff*options.speed+options.pause);
+                };
+				
+            };
+            // init
+            var timeout;
+            if(options.auto){
+                timeout = setTimeout(function(){
+                    animate("next",false);
+                },options.pause);
+            };		
+		
+            if(!options.continuous && options.controlsFade){					
+                $("a","#"+options.prevId).hide();
+                $("a","#"+options.firstId).hide();				
+            };				
+			
+        });
+	  
+    };
+
+})(jQuery);
+
+
+
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js
new file mode 100644
index 0000000..bcdbf63
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/js/script.js
@@ -0,0 +1,686 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    text_content: "This is an example. Instead of this text you can put your own content.", 
+    new_txt: "New text block",
+    new_slide: "This is new slide.",
+    wgt_name: "Slider",
+    slate: "slate",
+    pad: "tablet",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Slider</h2></p>" +
+"<p><h3>Booklet pages.</h3></p>" +
+"<p>Slider is a booklet with pages. This booklet can be enriched with text, images, sound and videos.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of interactivity : pad, slate or none (none by default),</li>" +
+"<li>edit the pages of the booklet.</li></ul>" +
+"<p>On each page, you can :</p>" +
+"<ul><li> insert text boxes with the “T+” on the left (to modify these text boxes, click inside the text and write),</li>" +
+"<li>insert pictures, sounds and videos dragging and dropping files from the library,</li>" +
+"<li>move texts, pictures, sounds and videos inside the page by clicking and dragging the multidirectional arrows located on the frame,</li>" +
+"<li>enlarge the size of an element with the double arrow at the bottom right of the frame,</li>" +
+"<li>delete an item with the “X”.</li></ul>" +
+"<p>To add a page, click on the “+” green arrow at the bottom.</p>" +
+"<p>To delete a page, click on the red cross.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//some flags
+var mouse_state = false;
+
+//object for resize
+var resize_obj = {
+    object: null,
+    top: 0,
+    left: 0,
+    clicked: false,
+    k: 0
+}
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("etudier","")){
+            var data = jQuery.parseJSON(sankore.preference("etudier",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("etudier_style","")){
+            changeStyle(sankore.preference("etudier_style",""));
+            $("#style_select").val(sankore.preference("etudier_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            if(!$("#wgt_help").hasClass("open")){
+                exportData();
+                sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+                sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+                sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+                sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));
+            }
+        }
+    }
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").hide();
+            tmp.removeClass("open");
+            $("#slider").show();
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            exportData();
+            sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+            sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+            sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+            sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));            
+            $("#slider").hide();
+            $("#help").show();
+            tmp.addClass("open");
+        }
+    });
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh - 44)
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".size_up").remove();
+                        $(this).find(".size_down").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).find(".real_text").removeAttr("contenteditable");
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $(this).find(".close_img").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".add_left").remove();
+                    container.find(".add_right").remove();
+                    container.find(".close_slide").remove();
+                    container.find(".add_text").remove();
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh + 44)
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).css(\"background\",\"none\"); return false;")
+                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                    .attr("ondrop", "$(this).css(\"background\",\"none\"); return onDropTarget(this,event);");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_up' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_down' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).find(".real_text").attr("contenteditable", "true");
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    $("<div class='add_left'>").appendTo(container);
+                    $("<div class='add_right'>").appendTo(container);
+                    $("<div class='close_slide'>").appendTo(container);
+                    $("<div class='add_text'>").appendTo(container);
+                    $(window).trigger("resize")
+                });        
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+     
+    //deleting the img block
+    $(".close_img").live("click", function(){    
+        $(this).parent().remove();        
+    });
+    
+    //increase a size of text
+    $(".size_up").live("click", function(){
+        $(this).parent().height("");
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        $(this).parent().css("font-size", fz+1 + "px");
+    });
+    
+    //decrease a size of text
+    $(".size_down").live("click", function(){    
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        fz = ((fz - 1) < 8)?8:fz-1;
+        $(this).parent().css("font-size", fz + "px");       
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //moving objects
+    $(".move_block").live("mouseover",function(){
+        $(this).parent().draggable();
+    });
+
+    $(".move_block").live("mouseleave",function(){
+        if(!mouse_state)
+            $(this).parent().draggable("destroy");
+    });
+    
+    $(".move_block").live("mousedown",function(){
+        mouse_state = true;
+    });
+    
+    $(".move_block").live("mouseup",function(){
+        mouse_state = false;
+    });
+    
+    //resize block
+    $(".resize_block").live("mousedown", function(){
+        resize_obj.object = $(this);
+        resize_obj.top = event.clientY;
+        resize_obj.left = event.clientX;
+        resize_obj.clicked = true;
+        if($(this).parent().hasClass("img_block"))
+            resize_obj.k = $(this).parent().find("img").width() / $(this).parent().find("img").height();
+    })
+    
+    $("li>div").live("mouseup", function(){
+        resize_obj.object = null;
+        resize_obj.top = 0;
+        resize_obj.left = 0;
+        resize_obj.clicked = false;
+    })
+    
+    $("li>div").live("mousemove", function(){
+        if(resize_obj.clicked){
+            if(resize_obj.object.parent().hasClass("text_block")){ 
+                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().width(width).height("");
+            } else {
+                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
+                var img_height = img_width / resize_obj.k;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().find("img").width(img_width).height(img_height);
+            }
+        }
+    });
+    
+    //closing a slide
+    $(".close_slide").live("click", function(){
+        $(this).parent().parent().remove();
+        $("#slider").removeSlide();
+    });
+    
+    //adding new slides
+    $(".add_left").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertBefore(cur_li);
+        $("#slider").addSlide("before");
+    });
+    
+    $(".add_right").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertAfter(cur_li);
+        $("#slider").addSlide("after");
+    });
+    
+    $(".add_text").live("click", function(){
+        var container = $(this).parent();
+        var text_block = $("<div class='text_block'><div class='real_text' contenteditable='true'>" + sankoreLang.new_txt + "</div></div>").appendTo(container);
+        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
+        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_up' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_down' contenteditable='false'>").appendTo(text_block);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
+        text_block.addClass("block_border");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $("#slider li>div").each(function(){
+        var cont_obj = new Object();
+        cont_obj.w = $(this).parent().width();
+        cont_obj.h = $(this).parent().height();
+        cont_obj.text = [];
+        $(this).find(".text_block").each(function(){
+            var txt_block = new Object();
+            txt_block.top = $(this).position().top;
+            txt_block.left = $(this).position().left;
+            txt_block.w = $(this).width();
+            txt_block.fz = $(this).css("font-size");
+            txt_block.val = $(this).find(".real_text").html();
+            cont_obj.text.push(txt_block);
+        });
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.link = $(this).find("img").attr("src");
+            img_obj.h = $(this).find("img").height();
+            img_obj.w = $(this).find("img").width();
+            img_obj.top = $(this).position().top;
+            img_obj.left = $(this).position().left;
+            cont_obj.imgs.push(img_obj);
+        });
+        cont_obj.audio = [];
+        $(this).find(".audio_block").each(function(){
+            var audio_block = new Object();
+            audio_block.top = $(this).position().top;
+            audio_block.left = $(this).position().left;
+            audio_block.val = $(this).find("source").attr("src");
+            cont_obj.audio.push(audio_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    sankore.setPreference("etudier", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var width = 0;
+    var height = 0;
+    
+    for(var i in data){
+        
+        width = data[i].w;
+        height = data[i].h;
+        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
+        var div = $("<div>").appendTo(li);
+        
+        for(var j in data[i].text){
+            var text_div = $("<div class='text_block'><div class='real_text'>" + data[i].text[j].val + "</div></div>");
+            text_div.draggable().css("position","absolute")
+            .width(data[i].text[j].w)
+            .css("top", data[i].text[j].top)
+            .css("left", data[i].text[j].left)
+            .css("font-size", data[i].text[j].fz)
+            .appendTo(div);
+        }
+        
+        for(j in data[i].imgs){
+            var img_div = $("<div class='img_block' style='text-align: center;'>");            
+            img_div.draggable().css("position","absolute")
+            .css("top", data[i].imgs[j].top)
+            .css("left", data[i].imgs[j].left)
+            .appendTo(div);
+            $("<img src='" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
+        }
+        
+        for(j in data[i].audio){
+            var audio_div = $("<div class='audio_block'>");
+            $("<div class='play'>").appendTo(audio_div);
+            $("<div class='replay'>").appendTo(audio_div);
+            var tmp_audio = $("<audio>").appendTo(audio_div);
+            $("<source src='" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
+            audio_div.draggable().css("position","absolute")
+            .css("top", data[i].audio[j].top)
+            .css("left", data[i].audio[j].left)
+            .appendTo(div);
+        }
+        
+        $("#slider ul").append(li);        
+    }
+    
+    $(window).trigger("resize")
+    $("#slider").width(width).height(height).easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+    $("#slider").goToSlide(sankore.preference("etudier_cur_page",""));
+    $("#prevBtn a").css("display", sankore.preference("etudier_left_nav",""));
+    $("#nextBtn a").css("display", sankore.preference("etudier_right_nav",""));
+}
+
+//example
+function showExample(){
+    
+    var li1 = $("<li>");
+    var div1 = $("<div>").appendTo(li1);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div1)
+    li1.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li1);
+    var li2 = $("<li>");
+    var div2 = $("<div>").appendTo(li2);
+    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
+    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
+    li2.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li2);
+    var li3 = $("<li>");
+    var div3 = $("<div>").appendTo(li3);
+    li3.width($("#slider").width()).height($("#slider").height());
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div3);
+    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "objects/bateaux.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("#slider ul").append(li3);
+    var li4 = $("<li>");
+    var div4 = $("<div>").appendTo(li4);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div4);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
+    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
+    $("<div class='play'>").appendTo(audio_block2);
+    $("<div class='replay'>").appendTo(audio_block2);
+    var source2 = $("<source/>").attr("src", "objects/bateaux.mp3");
+    var audio2 = $("<audio>").appendTo(audio_block2);
+    audio2.append(source2);
+    li4.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li4);
+    $(".text_block, .audio_block, .img_block").each(function(){
+        $(this).css("position","absolute");
+    });
+    $("#slider").easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+}
+
+//string into xml-format
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//drop handler
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){                              
+            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
+            audio_block.css("position","absolute").css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
+            audio_block.addClass("block_border");
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
+            img_block.css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
+            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
+            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
+            img_block.addClass("block_border");
+            var tmp_img = $("<img src=\"" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6)
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
+
+$(window).resize(function(){
+    var slider = $("#slider");
+    slider.width($(this).width() - 108).height($(this).height() - 108);
+    $("#slider li").each(function(){
+        $(this).width(slider.width()).height(slider.height());
+    });
+    slider.setSize(slider.width(), slider.height());
+})
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/index.html
new file mode 100644
index 0000000..f760ffd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/index.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="../../js/easySlider1.5.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                sankore.enableDropOnWidget(false);
+                start();                                
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="slider">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                        <ul>							
+                        </ul>
+                    </div>
+                    <span id="prevBtn"><a href="javascript:void(0);"></a></span>
+                    <span id="nextBtn"><a href="javascript:void(0);"></a></span>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..e5347c0
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js
@@ -0,0 +1,697 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    text_content: "Ceci est un exemple. Au lieu de ce texte, vous pouvez mettre votre propre texte ou glisser-déposer une image, un son ou une vidéo.", 
+    new_txt: "Nouveau bloc de texte",
+    new_slide: "Ceci est une nouvelle diapositive.",
+    wgt_name: "Etudier",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Etudier</h2></p>"+
+    "<p><h3>Livret de pages.</h3></p>"+
+
+    "<p>L’interactivité Etudier permet d’ajouter un livret avec des pages. Ce livret peut être enrichi avec du texte, des images, du son et des vidéos.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de modifier les pages du livret.</li></ul>"+
+
+
+"<p>Sur chaque page, vous pouvez :</p>"+ 
+"<ul><li>insérer des zones de texte avec le bouton “+T” situé en haut à gauche de l’interactivité (pour modifier ces zones de texte, cliquez à l’intérieur et écrivez du texte),</li>"+
+"<li>insérer des images, sons et vidéos par glisser-déposer de fichiers depuis la bibliothèque jusqu’à l’intérieur de la page du livret,</li>"+
+"<li>déplacer les textes, images, sons et vidéos à l’intérieur de la page en cliquant et en déplaçant la flèche multidirectionnelle qui se situe dans le coin supérieur gauche de chaque élément,</li>"+
+"<li>agrandir la taille d’un élément avec la double flèche en bas à droite de celui-ci,</li>"+
+"<li>supprimer un élément avec la case en haut à droite de celui-ci.</li></ul>"+
+
+
+    "<p>Pour ajouter une page, cliquez sur la flèche verte accompagnée d’un “+” se trouvant en bas à gauche et à droite.</p>"+
+    "<p>Pour supprimer une page, cliquez sur la croix rouge située en haut à droite de la page.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+
+};
+
+//some flags
+var mouse_state = false;
+
+//object for resize
+var resize_obj = {
+    object: null,
+    top: 0,
+    left: 0,
+    clicked: false,
+    k: 0
+}
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("etudier","")){
+            var data = jQuery.parseJSON(sankore.preference("etudier",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("etudier_style","")){
+            changeStyle(sankore.preference("etudier_style",""));
+            $("#style_select").val(sankore.preference("etudier_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            if(!$("#wgt_help").hasClass("open")){
+                exportData();
+                sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+                sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+                sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+                sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));
+            }
+        }
+    }
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").hide();
+            tmp.removeClass("open");
+            $("#slider").show();
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            exportData();
+            sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+            sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+            sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+            sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));            
+            $("#slider").hide();
+            $("#help").show();
+            tmp.addClass("open");
+        }
+    });
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh - 44)
+                
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".size_up").remove();
+                        $(this).find(".size_down").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).find(".real_text").removeAttr("contenteditable");
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $(this).find(".close_img").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".add_left").remove();
+                    container.find(".add_right").remove();
+                    container.find(".close_slide").remove();
+                    container.find(".add_text").remove();
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh + 44)
+                
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).css(\"background\",\"none\"); return false;")
+                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                    .attr("ondrop", "$(this).css(\"background\",\"none\"); return onDropTarget(this,event);");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_up' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_down' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).find(".real_text").attr("contenteditable", "true");
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    $("<div class='add_left'>").appendTo(container);
+                    $("<div class='add_right'>").appendTo(container);
+                    $("<div class='close_slide'>").appendTo(container);
+                    $("<div class='add_text'>").appendTo(container);
+                    $(window).trigger("resize")
+                });        
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+     
+    //deleting the img block
+    $(".close_img").live("click", function(){    
+        $(this).parent().remove();        
+    });
+    
+    //increase a size of text
+    $(".size_up").live("click", function(){
+        $(this).parent().height("");
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        $(this).parent().css("font-size", fz+1 + "px");
+    });
+    
+    //decrease a size of text
+    $(".size_down").live("click", function(){    
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        fz = ((fz - 1) < 8)?8:fz-1;
+        $(this).parent().css("font-size", fz + "px");       
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //moving objects
+    $(".move_block").live("mouseover",function(){
+        $(this).parent().draggable();
+    });
+
+    $(".move_block").live("mouseleave",function(){
+        if(!mouse_state)
+            $(this).parent().draggable("destroy");
+    });
+    
+    $(".move_block").live("mousedown",function(){
+        mouse_state = true;
+    });
+    
+    $(".move_block").live("mouseup",function(){
+        mouse_state = false;
+    });
+    
+    //resize block
+    $(".resize_block").live("mousedown", function(){
+        resize_obj.object = $(this);
+        resize_obj.top = event.clientY;
+        resize_obj.left = event.clientX;
+        resize_obj.clicked = true;
+        if($(this).parent().hasClass("img_block"))
+            resize_obj.k = $(this).parent().find("img").width() / $(this).parent().find("img").height();
+    })
+    
+    $("li>div").live("mouseup", function(){
+        resize_obj.object = null;
+        resize_obj.top = 0;
+        resize_obj.left = 0;
+        resize_obj.clicked = false;
+    })
+    
+    $("li>div").live("mousemove", function(){
+        if(resize_obj.clicked){
+            if(resize_obj.object.parent().hasClass("text_block")){                
+                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
+                //var height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().width(width);
+            } else {
+                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
+                var img_height = img_width / resize_obj.k;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().find("img").width(img_width).height(img_height);
+            }
+        }
+    });
+    
+    //closing a slide
+    $(".close_slide").live("click", function(){
+        $(this).parent().parent().remove();
+        $("#slider").removeSlide();
+    });
+    
+    //adding new slides
+    $(".add_left").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertBefore(cur_li);
+        $("#slider").addSlide("before");
+    });
+    
+    $(".add_right").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertAfter(cur_li);
+        $("#slider").addSlide("after");
+    });
+    
+    $(".add_text").live("click", function(){
+        var container = $(this).parent();
+        var text_block = $("<div class='text_block'><div class='real_text' contenteditable='true'>" + sankoreLang.new_txt + "</div></div>").appendTo(container);
+        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
+        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_up' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_down' contenteditable='false'>").appendTo(text_block);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
+        text_block.addClass("block_border");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $("#slider li>div").each(function(){
+        var cont_obj = new Object();
+        cont_obj.w = $(this).parent().width();
+        cont_obj.h = $(this).parent().height();
+        cont_obj.text = [];
+        $(this).find(".text_block").each(function(){
+            var txt_block = new Object();
+            txt_block.top = $(this).position().top;
+            txt_block.left = $(this).position().left;
+            txt_block.w = $(this).width();
+            txt_block.fz = $(this).css("font-size");
+            txt_block.val = $(this).find(".real_text").html();
+            cont_obj.text.push(txt_block);
+        });
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.link = $(this).find("img").attr("src").replace("../../","");
+            img_obj.h = $(this).find("img").height();
+            img_obj.w = $(this).find("img").width();
+            img_obj.top = $(this).position().top;
+            img_obj.left = $(this).position().left;
+            cont_obj.imgs.push(img_obj);
+        });
+        cont_obj.audio = [];
+        $(this).find(".audio_block").each(function(){
+            var audio_block = new Object();
+            audio_block.top = $(this).position().top;
+            audio_block.left = $(this).position().left;
+            audio_block.val = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.audio.push(audio_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    sankore.setPreference("etudier", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var width = 0;
+    var height = 0;
+    
+    for(var i in data){
+        
+        width = data[i].w;
+        height = data[i].h;
+        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
+        var div = $("<div>").appendTo(li);
+        
+        for(var j in data[i].text){
+            var text_div = $("<div class='text_block'><div class='real_text'>" + data[i].text[j].val + "</div></div>");
+            text_div.draggable().css("position","absolute")
+            .width(data[i].text[j].w)
+            .css("top", data[i].text[j].top)
+            .css("left", data[i].text[j].left)
+            .css("font-size", data[i].text[j].fz)
+            .appendTo(div);
+        }
+        
+        for(j in data[i].imgs){
+            var img_div = $("<div class='img_block' style='text-align: center;'>");            
+            img_div.draggable().css("position","absolute")
+            .css("top", data[i].imgs[j].top)
+            .css("left", data[i].imgs[j].left)
+            .appendTo(div);
+            $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
+        }
+        
+        for(j in data[i].audio){
+            var audio_div = $("<div class='audio_block'>");
+            $("<div class='play'>").appendTo(audio_div);
+            $("<div class='replay'>").appendTo(audio_div);
+            var tmp_audio = $("<audio>").appendTo(audio_div);
+            $("<source src='../../" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
+            audio_div.draggable().css("position","absolute")
+            .css("top", data[i].audio[j].top)
+            .css("left", data[i].audio[j].left)
+            .appendTo(div);
+        }
+        
+        $("#slider ul").append(li);
+        
+    }
+    
+    $(window).trigger("resize")
+    
+    $("#slider").width(width).height(height).easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+    $("#slider").goToSlide(sankore.preference("etudier_cur_page",""));
+    $("#prevBtn a").css("display", sankore.preference("etudier_left_nav",""));
+    $("#nextBtn a").css("display", sankore.preference("etudier_right_nav",""));
+}
+
+//example
+function showExample(){
+    
+    var li1 = $("<li>");
+    var div1 = $("<div>").appendTo(li1);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div1)
+    li1.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li1);
+    var li2 = $("<li>");
+    var div2 = $("<div>").appendTo(li2);
+    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
+    li2.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li2);
+    var li3 = $("<li>");
+    var div3 = $("<div>").appendTo(li3);
+    li3.width($("#slider").width()).height($("#slider").height());
+    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/bateaux.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("#slider ul").append(li3);
+    var li4 = $("<li>");
+    var div4 = $("<div>").appendTo(li4);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div4);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
+    $("<div class='play'>").appendTo(audio_block2);
+    $("<div class='replay'>").appendTo(audio_block2);
+    var source2 = $("<source/>").attr("src", "../../objects/bateaux.mp3");
+    var audio2 = $("<audio>").appendTo(audio_block2);
+    audio2.append(source2);
+    li4.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li4);
+    $(".text_block, .audio_block, .img_block").each(function(){
+        $(this).css("position","absolute");
+    });
+    $("#slider").easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+}
+
+//string into xml-format
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//drop handler
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){                              
+            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
+            audio_block.css("position","absolute").css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
+            audio_block.addClass("block_border");
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
+            img_block.css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
+            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
+            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
+            img_block.addClass("block_border");
+            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6)
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
+
+$(window).resize(function(){
+    var slider = $("#slider");
+    slider.width($(this).width() - 108).height($(this).height() - 108);
+    $("#slider li").each(function(){
+        $(this).width(slider.width()).height(slider.height());
+    });
+    slider.setSize(slider.width(), slider.height());
+})
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/index.html
new file mode 100644
index 0000000..f760ffd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/index.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="../../js/easySlider1.5.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                sankore.enableDropOnWidget(false);
+                start();                                
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="slider">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                        <ul>							
+                        </ul>
+                    </div>
+                    <span id="prevBtn"><a href="javascript:void(0);"></a></span>
+                    <span id="nextBtn"><a href="javascript:void(0);"></a></span>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..94e5e83
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/locales/ru/js/script.js
@@ -0,0 +1,675 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить",
+    text_content: "Это - пример. Вместо этого текста вы можете ввести свой собственный контент.", 
+    new_txt: "Новый текстовый блок.",
+    new_slide: "Это - новый слайд.",
+    wgt_name: "Слайдер",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//some flags
+var mouse_state = false;
+
+//object for resize
+var resize_obj = {
+    object: null,
+    top: 0,
+    left: 0,
+    clicked: false,
+    k: 0
+}
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("etudier","")){
+            var data = jQuery.parseJSON(sankore.preference("etudier",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("etudier_style","")){
+            changeStyle(sankore.preference("etudier_style",""));
+            $("#style_select").val(sankore.preference("etudier_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            if(!$("#wgt_help").hasClass("open")){
+                exportData();
+                sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+                sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+                sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+                sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));
+            }
+        }
+    }
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").hide();
+            tmp.removeClass("open");
+            $("#slider").show();
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            exportData();
+            sankore.setPreference("etudier_style", $("#style_select").find("option:selected").val());
+            sankore.setPreference("etudier_cur_page", $("#slider").getPage());
+            sankore.setPreference("etudier_left_nav", $("#prevBtn a").css("display"));
+            sankore.setPreference("etudier_right_nav", $("#nextBtn a").css("display"));            
+            $("#slider").hide();
+            $("#help").show();
+            tmp.addClass("open");
+        }
+    });
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                var tmpwh = $(window).height();
+                var tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh - 44)
+                
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".size_up").remove();
+                        $(this).find(".size_down").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).find(".real_text").removeAttr("contenteditable");
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable();
+                        $(this).find(".close_img").remove();
+                        $(this).find(".move_block").remove();
+                        $(this).find(".resize_block").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $(this).find(".close_img").remove();
+                        $(this).removeClass("block_border");
+                        $(this).css("position","absolute");
+                    });
+                    
+                    container.find(".add_left").remove();
+                    container.find(".add_right").remove();
+                    container.find(".close_slide").remove();
+                    container.find(".add_text").remove();
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                tmpwh = $(window).height();
+                tmpww = $(window).width();
+                window.resizeTo(tmpww, tmpwh + 44)
+                
+                $("#slider li>div").each(function(){
+                    var container = $(this);
+                    container.attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).css(\"background\",\"none\"); return false;")
+                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                    .attr("ondrop", "$(this).css(\"background\",\"none\"); return onDropTarget(this,event);");
+                    
+                    container.find(".text_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_up' contenteditable='false'>").appendTo($(this));
+                        $("<div class='size_down' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).find(".real_text").attr("contenteditable", "true");
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).draggable("destroy");
+                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    container.find(".audio_block").each(function(){
+                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
+                        $(this).addClass("block_border");
+                    });
+                    
+                    $("<div class='add_left'>").appendTo(container);
+                    $("<div class='add_right'>").appendTo(container);
+                    $("<div class='close_slide'>").appendTo(container);
+                    $("<div class='add_text'>").appendTo(container);
+                    $(window).trigger("resize")
+                });        
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+     
+    //deleting the img block
+    $(".close_img").live("click", function(){    
+        $(this).parent().remove();        
+    });
+    
+    //increase a size of text
+    $(".size_up").live("click", function(){
+        $(this).parent().height("");
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        $(this).parent().css("font-size", fz+1 + "px");
+    });
+    
+    //decrease a size of text
+    $(".size_down").live("click", function(){    
+        var fz = parseInt($(this).parent().css("font-size").replace("px", ""));
+        fz = ((fz - 1) < 8)?8:fz-1;
+        $(this).parent().css("font-size", fz + "px");       
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //moving objects
+    $(".move_block").live("mouseover",function(){
+        $(this).parent().draggable();
+    });
+
+    $(".move_block").live("mouseleave",function(){
+        if(!mouse_state)
+            $(this).parent().draggable("destroy");
+    });
+    
+    $(".move_block").live("mousedown",function(){
+        mouse_state = true;
+    });
+    
+    $(".move_block").live("mouseup",function(){
+        mouse_state = false;
+    });
+    
+    //resize block
+    $(".resize_block").live("mousedown", function(){
+        resize_obj.object = $(this);
+        resize_obj.top = event.clientY;
+        resize_obj.left = event.clientX;
+        resize_obj.clicked = true;
+        if($(this).parent().hasClass("img_block"))
+            resize_obj.k = $(this).parent().find("img").width() / $(this).parent().find("img").height();
+    })
+    
+    $("li>div").live("mouseup", function(){
+        resize_obj.object = null;
+        resize_obj.top = 0;
+        resize_obj.left = 0;
+        resize_obj.clicked = false;
+    })
+    
+    $("li>div").live("mousemove", function(){
+        if(resize_obj.clicked){
+            if(resize_obj.object.parent().hasClass("text_block")){                
+                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
+                //var height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().width(width);
+            } else {
+                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
+                var img_height = img_width / resize_obj.k;
+                resize_obj.left = event.clientX;
+                resize_obj.top = event.clientY;
+                resize_obj.object.parent().find("img").width(img_width).height(img_height);
+            }
+        }
+    });
+    
+    //closing a slide
+    $(".close_slide").live("click", function(){
+        $(this).parent().parent().remove();
+        $("#slider").removeSlide();
+    });
+    
+    //adding new slides
+    $(".add_left").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertBefore(cur_li);
+        $("#slider").addSlide("before");
+    });
+    
+    $(".add_right").live("click", function(){
+        var cur_li = $(this).parent().parent();
+        var new_li = $("<li>");
+        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
+        var new_div = $("<div>").appendTo(new_li);
+        new_div.attr("ondragenter", "return false;")
+        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);");
+        var example = $("<div class='text_block' style='position: absolute;'>").addClass("block_border");
+        $("<div class='real_text' contenteditable='true'>" + sankoreLang.new_slide + "</div>").appendTo(example);
+        $("<div class='move_block' contenteditable='false'>").appendTo(example);
+        $("<div class='close_img' contenteditable='false'>").appendTo(example);
+        $("<div class='size_up' contenteditable='false'>").appendTo(example);
+        $("<div class='size_down' contenteditable='false'>").appendTo(example);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
+        example.css("top","40%").css("left","40%");
+        new_div.append(example);
+        $("<div class='add_left'>").appendTo(new_div);
+        $("<div class='add_right'>").appendTo(new_div);
+        $("<div class='close_slide'>").appendTo(new_div);
+        $("<div class='add_text'>").appendTo(new_div);
+        new_li.insertAfter(cur_li);
+        $("#slider").addSlide("after");
+    });
+    
+    $(".add_text").live("click", function(){
+        var container = $(this).parent();
+        var text_block = $("<div class='text_block'><div class='real_text' contenteditable='true'>" + sankoreLang.new_txt + "</div></div>").appendTo(container);
+        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
+        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_up' contenteditable='false'>").appendTo(text_block);
+        $("<div class='size_down' contenteditable='false'>").appendTo(text_block);
+        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
+        text_block.addClass("block_border");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $("#slider li>div").each(function(){
+        var cont_obj = new Object();
+        cont_obj.w = $(this).parent().width();
+        cont_obj.h = $(this).parent().height();
+        cont_obj.text = [];
+        $(this).find(".text_block").each(function(){
+            var txt_block = new Object();
+            txt_block.top = $(this).position().top;
+            txt_block.left = $(this).position().left;
+            txt_block.w = $(this).width();
+            txt_block.fz = $(this).css("font-size");
+            txt_block.val = $(this).find(".real_text").html();
+            cont_obj.text.push(txt_block);
+        });
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.link = $(this).find("img").attr("src").replace("../../","");
+            img_obj.h = $(this).find("img").height();
+            img_obj.w = $(this).find("img").width();
+            img_obj.top = $(this).position().top;
+            img_obj.left = $(this).position().left;
+            cont_obj.imgs.push(img_obj);
+        });
+        cont_obj.audio = [];
+        $(this).find(".audio_block").each(function(){
+            var audio_block = new Object();
+            audio_block.top = $(this).position().top;
+            audio_block.left = $(this).position().left;
+            audio_block.val = $(this).find("source").attr("src").replace("../../","");
+            cont_obj.audio.push(audio_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    sankore.setPreference("etudier", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var width = 0;
+    var height = 0;
+    
+    for(var i in data){
+        
+        width = data[i].w;
+        height = data[i].h;
+        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
+        var div = $("<div>").appendTo(li);
+        
+        for(var j in data[i].text){
+            var text_div = $("<div class='text_block'><div class='real_text'>" + data[i].text[j].val + "</div></div>");
+            text_div.draggable().css("position","absolute")
+            .width(data[i].text[j].w)
+            .css("top", data[i].text[j].top)
+            .css("left", data[i].text[j].left)
+            .css("font-size", data[i].text[j].fz)
+            .appendTo(div);
+        }
+        
+        for(j in data[i].imgs){
+            var img_div = $("<div class='img_block' style='text-align: center;'>");            
+            img_div.draggable().css("position","absolute")
+            .css("top", data[i].imgs[j].top)
+            .css("left", data[i].imgs[j].left)
+            .appendTo(div);
+            $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
+        }
+        
+        for(j in data[i].audio){
+            var audio_div = $("<div class='audio_block'>");
+            $("<div class='play'>").appendTo(audio_div);
+            $("<div class='replay'>").appendTo(audio_div);
+            var tmp_audio = $("<audio>").appendTo(audio_div);
+            $("<source src='../../" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
+            audio_div.draggable().css("position","absolute")
+            .css("top", data[i].audio[j].top)
+            .css("left", data[i].audio[j].left)
+            .appendTo(div);
+        }
+        
+        $("#slider ul").append(li);
+        
+    }
+    
+    $(window).trigger("resize")
+    
+    $("#slider").width(width).height(height).easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+    $("#slider").goToSlide(sankore.preference("etudier_cur_page",""));
+    $("#prevBtn a").css("display", sankore.preference("etudier_left_nav",""));
+    $("#nextBtn a").css("display", sankore.preference("etudier_right_nav",""));
+}
+
+//example
+function showExample(){
+    
+    var li1 = $("<li>");
+    var div1 = $("<div>").appendTo(li1);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div1)
+    li1.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li1);
+    var li2 = $("<li>");
+    var div2 = $("<div>").appendTo(li2);
+    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
+    li2.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li2);
+    var li3 = $("<li>");
+    var div3 = $("<div>").appendTo(li3);
+    li3.width($("#slider").width()).height($("#slider").height());
+    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "../../objects/bateaux.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("#slider ul").append(li3);
+    var li4 = $("<li>");
+    var div4 = $("<div>").appendTo(li4);
+    $("<div class='text_block'><div class='real_text'>" + sankoreLang.text_content + "</div></div>").draggable().appendTo(div4);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
+    $("<div class='play'>").appendTo(audio_block2);
+    $("<div class='replay'>").appendTo(audio_block2);
+    var source2 = $("<source/>").attr("src", "../../objects/bateaux.mp3");
+    var audio2 = $("<audio>").appendTo(audio_block2);
+    audio2.append(source2);
+    li4.width($("#slider").width()).height($("#slider").height());
+    $("#slider ul").append(li4);
+    $(".text_block, .audio_block, .img_block").each(function(){
+        $(this).css("position","absolute");
+    });
+    $("#slider").easySlider({
+        prevText: '',
+        nextText: '',
+        controlsShow: false
+    });
+}
+
+//string into xml-format
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+//drop handler
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){                              
+            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
+            audio_block.css("position","absolute").css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
+            audio_block.addClass("block_border");
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
+            img_block.css("top",event.clientY - 54).css("left",event.clientX - 54);
+            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
+            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
+            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
+            img_block.addClass("block_border");
+            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6)
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
+
+$(window).resize(function(){
+    var slider = $("#slider");
+    slider.width($(this).width() - 108).height($(this).height() - 108);
+    $("#slider li").each(function(){
+        $(this).width(slider.width()).height(slider.height());
+    });
+    slider.setSize(slider.width(), slider.height());
+})
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/objects/1.gif b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/objects/1.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/objects/1.gif
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/objects/1.gif
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/objects/bateaux.mp3 b/Sankore-3.1/resources/library/interactivities/Etudier.wgt/objects/bateaux.mp3
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/etudier.wgt/objects/bateaux.mp3
rename to Sankore-3.1/resources/library/interactivities/Etudier.wgt/objects/bateaux.mp3
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml
new file mode 100644
index 0000000..1b95329
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/memory" 
+        version="1.0"
+        width="820"
+        height="670" 
+        ub:resizable="true">     
+   
+		<name>Memory</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description>Correspondances/mémorisation de cartes deux à deux</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-bg.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-bg.png
new file mode 100644
index 0000000..dd4c4cd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-ondrop-bg.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-ondrop-bg.png
new file mode 100644
index 0000000..d540126
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/drop-label-ondrop-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/flip.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/flip.png
new file mode 100644
index 0000000..1a29fa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/flip.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/mark.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/mark.png
new file mode 100644
index 0000000..108eb41
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/mark.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pile-bg.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pile-bg.png
new file mode 100644
index 0000000..6d694da
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/pile-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/result-bg.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/result-bg.png
new file mode 100644
index 0000000..70a4a90
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/result-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/main.css
new file mode 100644
index 0000000..064d41f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/main.css
@@ -0,0 +1,246 @@
+#table {
+    display: table;
+    text-align: center;
+}
+#table > div {
+    display: table-row;
+}
+#table > div > div {
+    display: table-cell;
+}
+
+.card-container {
+    padding: 20px 10px;
+}
+
+.switch {
+    display: none;
+    color: #FFF;
+}
+
+.onEdit .switch {
+    display: block;
+}
+
+.onEdit .front .switch {
+    visibility: hidden;
+}
+
+.card {
+    position: relative;
+    white-space: normal;
+    width: 180px;
+    height: 180px;
+
+    overflow: hidden;
+
+    -webkit-border-radius: 8px;
+    -moz-border-radius: 8px;
+    -ms-border-radius: 8px;
+    border-radius: 8px;
+}
+
+.front{
+    height: 100%;
+    
+}
+
+.front .card {
+    background: url("images/pile-bg.png") center no-repeat, url("images/mark.png") center no-repeat;
+}
+
+.back .card {
+    -webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+    -moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+    -ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+    box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+
+    background-image: linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+    background-image: -o-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+    background-image: -moz-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+    background-image: -webkit-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+    background-image: -ms-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+
+    background-image: -webkit-gradient(
+        linear,
+        50% top,
+        50% bottom,
+        color-stop(0, rgb(255,255,255)),
+        color-stop(1, rgb(204,204,204))
+        );
+}
+
+.card > div {
+    display: table-cell;
+    vertical-align: middle;
+    text-align: center;
+    width: 180px;
+    height: 180px;
+}
+
+.card .text {
+    padding: 0px 20px;
+    font-family: "SFToontimeRegular";
+    font-size: 28px;
+    color: #000;
+}
+
+.usePicture .card .text, .front .card .text {
+    display: none;
+}
+
+.card .picture {
+    display: none;
+
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+
+    -webkit-border-radius: 8px;
+    -moz-border-radius: 8px;
+    -ms-border-radius: 8px;
+    border-radius: 8px;
+}
+
+.usePicture .card .picture {
+    display: block;
+}
+
+.card .picture > div {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+
+    -webkit-border-radius: 8px;
+    -moz-border-radius: 8px;
+    -ms-border-radius: 8px;
+    border-radius: 8px;
+}
+
+.card .picture > div:first-child {
+    position: relative;
+    display: table-cell;
+    vertical-align: middle;
+    width: 180px;
+    height: 180px;	
+}
+.card .picture > div img {
+    max-width: 100%;
+    max-height: 100%;
+    vertical-align: middle;
+}
+
+.card .picture > div.dropzone {
+    border: 1px dashed black;
+    display: none;
+}
+
+.onEdit .card .picture > div.dropzone {
+    display: block;
+}
+
+.card .picture > div.dropzone div {
+    padding: 10px 10px 10px 50px;
+    text-align: left;
+    color: rgba(255, 255, 255, 0.5);
+    background: rgba(0, 0, 0, 0.4) url("images/drop-label-bg.png") 10px center no-repeat;
+
+    -webkit-border-radius: 8px 8px 0 0;
+    -moz-border-radius: 8px 8px 0 0;
+    -ms-border-radius: 8px 8px 0 0;
+    border-radius: 8px 8px 0 0;
+}
+
+.card .picture > div.dropzone.hover div {
+    background-image: url("images/drop-label-ondrop-bg.png");
+    color: rgba(255, 255, 255, 1);
+}
+
+.card-container .actions {
+    position: relative;
+    margin-top: -35px;
+    display: none;
+    color: #FFF;
+} /*here!!!!!!!!!*/
+
+.onEdit .card-container .actions {
+    display: none;
+}
+
+.actions button[role="flip"] {
+    margin: 0;
+    padding: 0;
+    border: none;
+    cursor: pointer;
+    width: 50px;
+    height: 50px;
+    background: url("images/flip.png") left center no-repeat;
+    text-indent: -99999px;
+}
+
+.card-container {
+    /*-webkit-perspective: 600px;*/
+    position: relative;
+    width: 180px;
+    height: 180px;
+}
+
+.onEdit .card-container {
+    height: 200px;
+}
+
+.cards {
+    position: relative;
+    width:100%;
+    height: 100%;
+    overflow: hidden;
+}
+
+.cards > div {
+    float: left;
+}
+
+.csstransforms3d .cards > div {
+    -webkit-transition: all .5s ease-in-out;
+    /*-webkit-backface-visibility: hidden;*/	
+}
+
+.csstransforms3d .cards > div:first-child {
+    /*-webkit-transform: rotateY( 0deg );*/
+}
+
+.no-csstransforms3d .cards > div:first-child {
+    display: block;
+}
+
+.csstransforms3d .cards > div:last-child {
+    /*    -webkit-transform: rotateY( -180deg );*/
+}
+
+.no-csstransforms3d .cards > div:last-child {
+    display: none;
+}
+
+.csstransforms3d .cards.flip > div:first-child {
+    height: 0;
+    -webkit-transition-property: height;
+    -webkit-transition-duration: 0.5s;
+    /*transition-timing-function: ease;*/
+}
+
+.no-csstransforms3d .cards.flip > div:first-child {
+    display: none;
+}
+
+.csstransforms3d .cards.flip > div:last-child {
+    /*-webkit-transform: rotateY( 0deg );*/
+
+}
+
+.no-csstransforms3d .cards.flip > div:last-child {
+    display: block;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-main.css
new file mode 100644
index 0000000..ef4d23f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+    margin:0;
+    padding: 0;
+    font-family: "helvetica neue";
+    font-size: 14px;
+    color: #666666;
+}
+
+#ubwidget {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+    border-radius: 40px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/pad-bd.png") 52 repeat;
+    -moz-border-image: url("images/pad-bd.png") 52 repeat;
+    border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+    border-radius: 44px;
+    border-width: 52px;
+
+    -webkit-border-image: url("images/slate-bd.png") 52 repeat;
+    -moz-border-image: url("images/slate-bd.png") 52 repeat;
+    border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+    position: absolute;
+    top: 0px;
+    bottom: 0px;
+    left: 0px;
+    right: 0px;
+    overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+    position: absolute;
+    top: -49px;
+    bottom: -5px;
+    left: -5px;
+    right: -5px;
+    overflow: hidden;
+}
+
+#toolbar {
+    display: table;
+    width: 100%;
+    height: 44px;
+    font-size: 24px;
+    color: #FFCC99;
+    padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+    height: 38px;
+    padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+    display: table-cell;
+    height: 100%;
+    vertical-align: middle;
+}
+
+#toolbar .actions {
+    text-align: right;
+}
+
+#toolbar button, h1 {
+    font-weight: normal;
+    font-size: 24px;
+    color: #FFCC99;
+    margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+    border: none;
+    padding: none;
+    outline: none;
+    background: none;
+
+    cursor: pointer;
+    padding-left: 34px;
+    margin-left: 10px;
+    height: 32px;
+}
+
+#toolbar button span {
+    display: block;
+    line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+    background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+    display: none;
+    color: #FFF;
+    background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+    background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+    background: url("images/toolbar-help.png") left top no-repeat;	
+    display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+    display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+    color: #FFF;
+    background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+    background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+    text-shadow: #7F613F 0 -1px 0;
+    background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+    background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+    background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+    display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+    display: none;
+}
+
+#help {
+    width: 300px;
+    height: 400px;
+    position: absolute;
+    margin-top: 10px;
+    right: 10px;
+    z-index: 10000;
+    display: none;
+}
+
+.showHelp #help {
+    display: block;
+}
+
+#content {
+    position: absolute;
+    top: 44px;
+    bottom: 0;
+    overflow: auto;
+    left: 0;
+    right: 0;
+
+    background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+    background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+    display:none;
+    padding: 10px 20px;
+    background: url("images/parameters-bg.png");
+
+    -webkit-border-radius: 4px 4px 0 0;
+    -moz-border-radius: 4px 4px 0 0;
+    -mz-border-radius: 4px 4px 0 0;
+    border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+    margin-left: 10px;
+}
+
+#parameters > div.inline {
+    display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+    margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+    height: 26px;
+    border: 1px solid #BBB;
+    background-color: #FFF;
+
+    padding: 0 4px;
+
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    -ms-border-radius: 4px;
+    border-radius: 4px;
+
+    -webkit-box-shadow: 0 1px 0 #FFF;
+    -moz-box-shadow: 0 1px 0 #FFF;
+    -ms-box-shadow: 0 1px 0 #FFF;
+    box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+    width: 40px;
+}
+
+#parameters input.small {
+    width: 80px;
+}
+
+#parameters input.medium {
+    width: 120px;
+}
+
+#parameters input.long {
+    width: 160px;
+}
+
+#scene {
+    padding: 20px;
+}
+
+#scene > * {
+    margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+    display: block;
+}
+
+/*
+.card-container {
+        -webkit-perspective: 600px;
+        width:100%;
+        height: 100%;
+}
+.card {
+        position: relative;
+        width:100%;
+        height: 100%;
+}
+.card > div {
+        position: absolute;
+        width:100%;
+        height: 100%;
+        -webkit-transform-style: preserve-3d;
+        -webkit-transition: all .5s ease-in-out;
+        -webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+        -webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+        -webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+        -webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+        -webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Memory.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..82c422a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages.properties
@@ -0,0 +1,19 @@
+fr.njin.i18n.document.title = Memory
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.memory.parameters.label.cards = Cards
+fr.njin.i18n.memory.parameters.option.cards = {0} cards
+fr.njin.i18n.memory.parameters.label.timeout = Timeout
+
+fr.njin.i18n.memory.label.usePicture = Image
+fr.njin.i18n.memory.label.drop = Drag and drop here
+fr.njin.i18n.memory.action.flip = Flip
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..36552ee
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,19 @@
+fr.njin.i18n.document.title = Memory
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.memory.parameters.label.cards = Cartes
+fr.njin.i18n.memory.parameters.option.cards = {0} cartes
+fr.njin.i18n.memory.parameters.label.timeout = Délai
+
+fr.njin.i18n.memory.label.usePicture = Utiliser une image
+fr.njin.i18n.memory.label.drop = Glisser une ressource ici
+fr.njin.i18n.memory.action.flip = Tourner
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Memory.wgt/icon.png
new file mode 100644
index 0000000..c82260b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Memory.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Memory.wgt/index.html
new file mode 100644
index 0000000..ce7ecfa
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-count="6" data-timeout="1" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help-template.js
new file mode 100644
index 0000000..7b0533b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help-template.js
@@ -0,0 +1,24 @@
+<h3> Memory </h3>
+<h4>Mental calculation, matching game</h4>
+
+<p>The goal of the App Memory is to make pairs and remembering the location of the various cards.</p>
+
+<p>Cards are laid out in a grid face down. The player turns two cards. If the two cards match, cards are not covered. If they do not match, the cards are turned back over.</p>
+<p>The game is over when all pairs have been found.</p>
+
+<p>Cards are randomly arranged in the game mode.</p>
+<p> "Reload" button resets the game. </p>
+
+
+<p> Enter the "Edit" mode to : </p>
+<ul> <li> choose the theme of interactivity : pad, slate or none (by default : pad),</li>
+<li> choose the number of cards (4, 6 or 8 cards),</li>
+<li> select the displayed time of returned cards,</li>
+<li> edit a card (insert a picture or change the text).</li> </ul>
+
+<p> Place pairs of cards in the same column (same figure in each card). </p>
+<p> Cards have a default text field. </p>
+<p> Click on the field to insert text. </p>
+<p> Click on the box before dragging and dropping picture from your library. </p>
+
+<p> "Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..5c29215
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/help_fr-template.js
@@ -0,0 +1,16 @@
+<h3>Memory</h3>
+<h4>Calcul mental, jeu d’association de cartes</h4>
+<p>L’App Memory a pour but de faire des paires tout en mémorisant l’emplacement des différentes cartes.</p>
+<p>Les cartes sont retournées face contre table de façon à ce que les images ne soient pas visibles. Le joueur découvre 2 cartes. Si elles sont identiques, elles restent découvertes. Si elles sont différentes, elles se retournent à nouveau.</p>
+<p>La partie est terminée quand toutes les paires ont été trouvées.</p>
+
+<p>Le bouton "éditer" vous permet de :</p>
+<ul>
+	<li>modifier le thème de l'interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+	<li>choisir le nombre de cartes (4, 6 ou 8 cartes),</li>
+	<li>sélectionner le délai d’affichage des cartes retournées,</li>
+	<li>éditer directement une carte.</li>
+</ul>
+<p>Les cartes possèdent par défaut un champ texte. Pour insérer du texte, cliquez sur cette dernière et saisissez le texte désiré. Pour ajouter une image depuis votre bibliothèque, cochez la case “utiliser une image” et utilisez le glisser-déposer.</p>
+<p>Attention, la paire de cartes doit être disposée en colonne lors de l'édition.</p>
+<p>Les cartes sont disposées de manière aléatoire dans le mode jeu.</p>								
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..1319acc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/lib/ubw-main.js
@@ -0,0 +1,272 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+    console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+    document.title = fr.njin.i18n.document.title;
+	
+    var ubwidget = $("#ubwidget");
+	
+    var parameters = Object.create(Parameters,{
+        container: {
+            value: ubwidget
+        },
+        delegate: {
+            value: window.sankore || Object.create(ParametersDelegate)
+        }
+    });
+	
+    var app = Object.create(App, {
+        container: {
+            value: ubwidget
+        },
+        parameters: {
+            value: parameters
+        },
+        reload: {
+            value: reload
+        }
+    });
+
+    app.init();
+    app.onEdit = false;
+	
+    if(templates.toolbar) {
+        $("#toolbar").html(Mustache.render(templates.toolbar, window));
+    }
+    if(templates.parameters) {
+        $("#parameters").html(Mustache.render(templates.parameters, window));
+    }
+	
+    if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+        callbacks.onTemplatesLoaded(app);
+    }
+	
+    log("Update setting views with stored parameters");
+    $("#parameters (input|select)[role=parameter]").each(function(i, input) {
+        (function(input){
+            var key = input.name;
+            var type = input.type;
+            var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+            var stored = parameters.value(key);
+            if(isRadioOrcheckbox)
+                $(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+            else
+                $(input).val(stored);
+            $(input).change(function(){
+                var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+                parameters.value(key, val);
+            });
+        })(input);
+    });
+	
+    log("Toobar Initialisation");
+    $("button[role=edit]").click(function(){
+        app.onEdit = true;
+        $(document.body).addClass("onEdit");
+        if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+            callbacks.onEdit(app);
+        }
+    });
+    $("button[role=view]").click(function(){
+        app.onEdit = false;		
+        $(document.body).removeClass("onEdit");
+        if(callbacks.onView && typeof callbacks.onView === 'function') {
+            callbacks.onView(app);
+        }
+    });
+    $("button[role=reload]").click(function(){
+        app.reload();
+    });
+    $("button[role=help]").click(function(){
+        $("body").toggleClass("showHelp");
+    });
+	
+    $("select[name='themes']").change(function() {
+        $("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+        $("body").addClass("theme-"+$(this).val());
+    });
+    $("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+    var locale = window.sankore ? sankore.locale() : "";
+    $.i18n.properties({
+        name: 'Messages', 
+        path: 'i18n/',
+        language: locale,
+        callback: function(){ 
+            initAfterI18nMessagesLoaded(reload, templates, callbacks);
+        }
+    });
+}
+
+var Parameters = (function(){
+    var self = Object.create({}, {
+        container: {
+            value: null
+        },
+        delegate: {
+            value: null
+        },
+        value: {
+            value: function(key, value) {
+                if(value === undefined) {
+                    var val = this.delegate.preference(key);
+                    log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+                    return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+                }
+                else {
+                    log("Set parameter value ["+value+"] for key : ["+key+"]");
+                    this.delegate.setPreference(key, value);
+                    this.container.trigger("preferenceChange", {
+                        key: key, 
+                        value: value
+                    });					
+                }
+            }
+        }
+    });
+    return self;
+})();
+
+var ParametersDelegate = (function(){
+    var self = Object.create({}, {
+        preference: {
+            value: function(key) {
+                return this[key];
+            }
+        },
+        setPreference: {
+            value: function(key, value) {
+                this[key] = value;
+            }
+        }
+    });
+    return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+        container: {
+            value: null
+        },
+        parameters: {
+            value: null
+        },
+        init: {
+            value: function() {
+                var that = this;
+                this.container.bind("preferenceChange", function(evt, parameter) {
+                    that.reload(parameter);
+                });
+                this.reload();
+            }
+        },
+        reload: {
+            value: function(parameter) {
+                if(parameter === undefined)
+                    log("Reload");
+                else
+                    log("Update");
+            }
+        },
+        utils: {
+            value: Object.create({}, {
+                shuffle: {
+                    value: function(array) {
+                        var unpickedSize = array.length;
+                        while(unpickedSize > 0) {
+                            var n = Math.floor(Math.random()*unpickedSize);
+                            var temp = array[unpickedSize-1];
+                            array[unpickedSize-1] = array[n];
+                            array[n] = temp;
+                            unpickedSize--;
+                        }
+                    }
+                },
+                guid: {
+                    value: function() {
+                        var S4 = function() {
+                            return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+                        };
+                        return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+                    }
+                },
+                droppable: {
+                    value: function($e, callback) {							
+                        $e.bind("dragover", function(){
+                            $(this).addClass("hover");
+                            return false;
+                        });
+                        $e.bind("dragleave", function(){
+                            $(this).removeClass("hover");
+                            return false;
+                        });
+                        $e.bind("drop", function(e){
+                            $(this).removeClass("hover");
+                            e = e || window.event;
+                            e.preventDefault();
+                            // jQuery wraps the originalEvent, so we try to detect that here...
+                            e = e.originalEvent || e;
+							
+                            if(window.sankore) {
+                                function stringToXML(text){
+                                    if (window.ActiveXObject){
+                                        var doc=new ActiveXObject('Microsoft.XMLDOM');
+                                        doc.async='false';
+                                        doc.loadXML(text);
+                                    } else {
+                                        var parser=new DOMParser();
+                                        doc=parser.parseFromString(text,'text/xml');
+                                    }
+                                    return doc;
+                                }
+                                var file = stringToXML(e.dataTransfer.getData("text/plain"));
+                                callback({
+                                    src: $(file).find("path:eq(0)").text()
+                                });
+                                return false;
+                            }
+
+                            // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+                            var files = (e.files || e.dataTransfer.files);
+                            for (var i = 0; i < files.length; i++) {
+                                // Loop through our files with a closure so each of our FileReader's are isolated.
+                                (function (i) {
+                                    if(typeof FileReader !== "undefined") {
+                                        var reader = new FileReader();
+                                        reader.onload = function (event) {
+                                            callback({
+                                                src: event.target.result,
+                                                title: (files[i].name),
+                                                alt: (files[i].name)
+                                            });
+                                        };
+                                        reader.readAsDataURL(files[i]);
+                                    }
+                                })(i);
+                            }
+                            return false;
+                        });
+                    }
+                }
+            })
+        }
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/main.js
new file mode 100644
index 0000000..1becd0c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/main.js
@@ -0,0 +1,244 @@
+var defaults = ["1/1", "2-1", "3*(3+2)", "5*3", "4+12", "0+16"];
+
+var Card = (function() {
+    var self = Object.create({}, {
+        val: {
+            value: -1,
+            writable: true
+        },
+        id: {
+            value: -1,
+            writable: true
+        },
+        index: {
+            value: -1,
+            writable: true
+        },
+        isMatch: {
+            value: function(card) {
+                if (this.val == card.val) {
+                    return true;
+                }
+                return false;
+            }
+        }
+    });
+    return self;
+})();
+
+var Game = (function() {
+    var self = Object.create({}, {
+        cards: {
+            value: null,
+            enumarable: true,
+            writable: true
+        },
+        matches: {
+            value: 0,
+            writable: true
+        },
+        init: {
+            value: function(count) {
+                if(typeof count !== "number"){
+                    log("Cards count must be an number");	
+                    return;
+                }
+                this.cards = new Array(count);
+                for (i = 0; i < this.cards.length / 2; i++) {
+                    var card = Object.create(Card, {
+                        val: {
+                            value: i+1
+                        },
+                        id: {
+                            value: i*2
+                        }
+                    });
+                    card.index = card.id;
+                    var card2 = Object.create(Card, {
+                        val: {
+                            value: i+1
+                        },
+                        id: {
+                            value: card.index+1
+                        }
+                    });
+                    card2.index = card2.id;
+                    this.cards[card.index] = card;
+                    this.cards[card2.index] = card2;
+                }
+            }
+        },
+        selected: {
+            value: null,
+            writable: true
+        }
+    });
+    return self;
+})();
+
+function onTemplateLoadedCallback() {
+    $("select[name=count]").each(function(i, select) {
+        var min = $(select).data("min");
+        var max = $(select).data("max");
+        for(var i = min ; i <= max ; i=i+2) {
+            var option = $("<option/>");
+            option.val(i);
+            option.text(fr.njin.i18n.memory.parameters.option.cards(i));
+            $(select).append(option);
+        }
+    });
+/*
+	$("#timeoutValue").text($("input[name=timeout]").val());	
+	$("input[name=timeout]").change(function(){
+		$("#timeoutValue").text($(this).val());
+	});
+	*/
+}
+
+function reloadApp(app) {
+    var cardsCount = parseInt(app.parameters.value("count"));
+    var timeout = parseInt(app.parameters.value("timeout"))*1000;
+	
+    var scene = $("#scene");
+    var table = $("<div id='table'/>");
+    scene.empty();
+    scene.append(table);
+
+    var game = Object.create(Game);
+    game.init(cardsCount);
+
+    var rows = new Array(game.cards.length/2);
+    for(i = 0 ; i < game.cards.length/2 ; i++) {
+        var row = $("<div/>");
+        table.append(row);
+        rows[i] = row;
+    }
+
+    if(!app.onEdit)
+        app.utils.shuffle(game.cards);
+		
+    for(i = 0 ; i < game.cards.length ; i++) {
+        (function(){
+            var card = game.cards[i];
+            var defaultValue = defaults[card.index]
+            card.index = i;
+
+            var pFrontTextKey = cardTextParameterKey(card, 0);
+            var pBackTextKey = cardTextParameterKey(card, 1);
+            window.card = card;
+            window.frontDisplayValue = app.parameters.value(pFrontTextKey) || "?";
+            window.backDisplayValue = app.parameters.value(pBackTextKey) || defaultValue;
+
+            var cardView = $(Mustache.render(cardTemplate, window));
+            rows[i%2].append(cardView);
+            cardView.data("card", card);
+
+            var checkbox = cardView.find("input[name='switch']");
+            function setSwicth(index) {
+                var val = app.parameters.value("#UsePicture"+cardParameterKey(card, index)) === "true";
+                var $p = cardView.find(".cards > div").eq(index);
+                if(val) {
+                    $p.addClass("usePicture");
+                }else {
+                    $p.removeClass("usePicture");
+                }
+                checkbox.eq(index).attr("checked", val);
+            }
+            checkbox.each(function(index) {
+                $(this).change(function() {
+                    app.parameters.value("#UsePicture"+cardParameterKey(card, index), $(this).is(':checked'));
+                    setSwicth(index);
+                });
+            });
+            setSwicth(0);
+            setSwicth(1);
+			
+            var dropzone = cardView.find(".dropzone");
+			
+            function setPicture(index) {
+                var f = $.parseJSON(app.parameters.value("#Picture"+cardParameterKey(card, index)));
+                var pictureHolder = dropzone.eq(index).parent().find(">div:eq(0)");
+                if(f !== null) {
+                    var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
+                    pictureHolder.empty();
+                    pictureHolder.append($img);
+                }
+            }
+            dropzone.each(function(index){
+                app.utils.droppable($(this), function(f) {
+                    app.parameters.value("#Picture"+cardParameterKey(card, index), JSON.stringify(f));
+                    setPicture(index);
+                });
+            });
+            setPicture(0);
+            setPicture(1);
+        })();
+    }
+    if(!app.onEdit) {
+        $(".cards>div:first-child").click(function(){            
+            var cardView = $(this).parent();
+            var card = cardView.parent().parent().data("card");
+            cardView.toggleClass("flip");
+            log("Flip card at index "+card.index+" w/ value "+card.val);
+            if(game.selected == null)
+                game.selected = card;
+            else{
+                var toCompare = game.selected;
+                log("Compare w/ card at index "+toCompare.index+" w/ value "+toCompare.val);
+                var isMatch = card.isMatch(toCompare);
+                if(!isMatch) {
+                    var index = toCompare.index;
+                    var otherCardView = rows[index%2].find(">div").eq(Math.floor(index/2)).find(".cards:eq(0)");
+                    setTimeout(function(){
+                        cardView.toggleClass("flip");
+                        otherCardView.toggleClass("flip");
+                    }, timeout);
+                }else{
+                    game.matches++;
+                }
+                game.selected = null;
+            }
+        });
+    }else{
+        $(".card .text > div").each(function(i, e) {
+            var card = $(e).parent().parent().parent().parent().parent().parent().data("card");
+            var pKey = cardTextParameterKey(card, i);
+            e.contentEditable = true;
+            $(e).bind('blur keyup paste', function(){
+                app.parameters.value(pKey, $(this).text());
+            });
+        });
+        $(".card-container .actions button[role=flip]").click(function(){
+            var cardView = $(this).parent().parent().find(">.cards:eq(0)");
+            cardView.toggleClass("flip");
+        });
+        $(".card-container .actions button[role=flip]").click();
+    }
+    if(window.sankore)
+        window.sankore.enableDropOnWidget(app.onEdit);
+}
+
+function cardParameterKey(card, i) {
+    return "card"+card.id+(i%2==0 ? "Front":"Back");
+}
+
+function cardTextParameterKey(card, i) {
+    return cardParameterKey(card, i)+"Text";
+}
+
+function reloadCallback(parameter) {
+    if(parameter === undefined || parameter.key === "count")
+        reloadApp(this);
+}
+
+$(document).ready(function(){
+    var callbacks = {
+        onTemplatesLoaded: onTemplateLoadedCallback,
+        onEdit: reloadApp,
+        onView: reloadApp
+    };
+    init(reloadCallback, {
+        toolbar: toolbarTemplate, 
+        parameters: parametersTemplate
+    }, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/templates.js
new file mode 100644
index 0000000..d322048
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Memory.wgt/js/templates.js
@@ -0,0 +1,75 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.memory.parameters.label.cards}}'+
+					'<select name="count" role="parameter" data-min="4" data-max="8">'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.memory.parameters.label.timeout}}'+
+					'<input name="timeout" role="parameter" type="text" min="1" max="60" value="1"/><span> (s)</span>'+
+				'</label>'+
+			'</div>';
+			
+			
+var cardTemplate = 
+			'<div>'+
+				'<div class="card-container">'+
+					'<div class="cards">'+
+						'<div class="front">'+
+							"<div class='switch'>"+
+								"<label>{{fr.njin.i18n.memory.label.usePicture}}<input type='checkbox' name='switch'></label>"+
+							"</div>"+
+							"<div class='card'>"+
+								"<div class='text'>"+
+									"<div>{{frontDisplayValue}}</div>"+
+								"</div>"+
+								"<div class='picture'>"+
+									"<div></div>"+
+									"<div class='dropzone'>"+
+										"<div>{{fr.njin.i18n.memory.label.drop}}</div>"+
+									"</div>"+
+								"</div>"+
+							"</div>"+
+						'</div>'+
+						'<div class="back">'+
+							"<div class='switch'>"+
+								"<label>{{fr.njin.i18n.memory.label.usePicture}}<input type='checkbox' name='switch'></label>"+
+							"</div>"+
+							"<div class='card'>"+
+								"<div class='text'>"+
+									"<div>{{backDisplayValue}}</div>"+
+								"</div>"+
+								"<div class='picture'>"+
+									"<div></div>"+
+									"<div class='dropzone'>"+
+										"<div>{{fr.njin.i18n.memory.label.drop}}</div>"+
+									"</div>"+
+								"</div>"+
+							"</div>"+
+						'</div>'+
+					'</div>'+
+					'<div class="actions">'+
+						'<button role="flip">{{fr.njin.i18n.memory.action.flip}}</button>'+
+						'<div>{{card.val}}</div>'+
+					'</div>'+
+				'</div>'+
+			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/config.xml
new file mode 100644
index 0000000..3c3a48c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/morpion" 
+        version="1.0"
+        width="760"
+        height="610" 
+        ub:resizable="false">     
+   
+		<name>Morpion</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description>Le jeu du morpion</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player1.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player1.png
new file mode 100644
index 0000000..4af63e4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player1.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player2.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player2.png
new file mode 100644
index 0000000..8977de5
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/player2.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/result-bg.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/result-bg.png
new file mode 100644
index 0000000..70a4a90
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/result-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/submit.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/submit.png
new file mode 100644
index 0000000..c72877a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/submit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/main.css
new file mode 100644
index 0000000..b093384
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/main.css
@@ -0,0 +1,248 @@
+.debug {
+	display: none;
+}
+
+#scene {
+	font-family: "SFToontimeRegular";
+	font-size: 24px;
+	color: #FFF;
+}
+
+#table {
+	display: table;
+	border-collapse: collapse;
+	text-align: center;
+}
+
+#table > div {
+	display: table-row;
+
+	border-top: 2px solid rgba(255, 255, 255, 0.25);
+	border-bottom: 2px solid rgba(255, 255, 255, 0.25);		
+}
+
+#table > div:first-child {
+	border-top: none;
+}
+
+#table > div:last-child {
+	border-bottom: none;
+}
+
+
+#table > div > div {
+	display: table-cell;
+	vertical-align: middle;
+	width: 180px;
+	height: 100px;
+	
+	padding: 0 10px;
+	
+	border-left: 2px solid rgba(255, 255, 255, 0.25);
+	border-right: 2px solid rgba(255, 255, 255, 0.25);
+	
+	-webkit-transition: opacity 0.25s ease-in;
+	   -moz-transition: opacity 0.25s ease-in;
+		-ms-transition: opacity 0.25s ease-in;
+			transition: opacity 0.25s ease-in;
+}
+
+#table > div > div:first-child {
+	border-left: none;
+}
+
+#table > div > div:last-child {
+	border-right: none;
+}
+
+
+#table .actions {
+	margin-top: 5px;
+	height: 26px;
+}
+
+
+#table > div > div.answered.succeed .actions {
+	display: none;
+}
+
+#table .actions .player {
+	font-size: 82px;
+	line-height: 45px;
+}
+
+#table > div > div button {
+	display: none;
+	vertical-align: top;
+	margin: 0;
+	padding: 0;
+	width: 32px;
+	height: 26px;
+	border: none;
+	text-indent: -9999px;
+	background: url("images/submit.png") top center no-repeat;
+	cursor: pointer;
+}
+
+#table .operation {
+	margin-right: 5px;
+}
+
+.onEdit #table .operation {
+	background-color: #FFF;
+	font-family: "helvetica neue";
+	padding: 6px;
+	font-size: 14px;
+	color: #666666;
+	border: 1px solid #000;
+	border-radius: 3px;
+}
+
+.onEdit #table .equal {
+	display: none;
+}
+
+#table span.result {
+	display: inline-block;
+	margin: 0 0 0 5px;
+	padding: 0 5px;
+	min-width: 30px;
+	font-family: "SFToontimeRegular";
+	font-size: 24px;
+	color: #FFF;
+	text-align: center;
+	background: url("images/result-bg.png") center bottom no-repeat;
+}
+
+#table .onAnswer span.result,
+#table > div > div.answered.succeed span.result {
+	background: none;
+}
+
+.onEdit #table span.result {
+	display: none;
+}
+
+#table > div > div.onAnswer button {
+	display: inline-block;
+}
+
+#table > div > div.answered.succeed {
+	padding-top: 112px;
+	height: auto;
+}
+
+.answered.succeed.player1 {
+	background: url("images/player1.png") center 10px no-repeat;
+}
+
+.answered.succeed.player2 {
+	background: url("images/player2.png") center 10px no-repeat;
+}
+
+#table.finish > div > div {
+	opacity: 0.3;
+}
+
+.win {
+	opacity: 1 !important;
+}
+
+.feedback {
+	overflow: hidden;
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	width: 0;
+}
+
+.feedback.closed {
+	-webkit-transition: width 0s 0.5s linear;
+	   -moz-transition: width 0s 0.5s linear;
+	    -ms-transition: width 0s 0.5s linear;
+			transition: width 0s 0.5s linear;
+}
+
+.feedback.expand {
+	width: 100%;
+	-webkit-transition-delay: 0;
+	   -moz-transition-delay: 0;
+		-ms-transition-delay: 0;
+			transition-delay: 0;
+}
+
+.feedback > div {
+	max-height: 100%;
+	text-align: center;
+}
+
+.feedback img {
+	max-height: 100%;
+	opacity: 0;
+	-webkit-transform:scale(0) rotate(0deg);
+}
+
+.feedback.closed img {	
+	/*
+	-webkit-animation: hide .4s ease-in;
+	   -moz-animation: hide .4s ease-in;
+	    -ms-animation: hide .4s ease-in;
+			animation: hide .4s ease-in;
+	*/
+}
+
+.feedback.expand img {
+	opacity: 1;
+	-webkit-transform:scale(1) rotate(360deg);
+	/*
+	-webkit-animation: expand .4s ease-in;
+	   -moz-animation: expand .4s ease-in;
+	    -ms-animation: expand .4s ease-in;
+			animation: expand .4s ease-in;
+	*/			
+}
+
+ at -webkit-keyframes expand {
+	0% {
+		opacity: 0;
+	    -webkit-transform:scale(0) rotate(0deg);
+	}
+	100% {
+		opacity: 1;
+	    -webkit-transform:scale(1) rotate(360deg);
+	}
+}
+
+ at -moz-keyframes expand {
+	0% {
+		opacity: 0;
+	    -webkit-transform:scale(0) rotate(0deg);
+	}
+	100% {
+		opacity: 1;
+	    -webkit-transform:scale(1) rotate(360deg);
+	}
+}
+
+ at -webkit-keyframes hide {
+	0% {
+		opacity: 1;
+	    -webkit-transform:scale(1) rotate(360deg);
+	}
+	100% {
+		opacity: 0;
+	    -webkit-transform:scale(0) rotate(0deg);
+	}
+}
+
+ at -moz-keyframes hide {
+	0% {
+		opacity: 1;
+	    -webkit-transform:scale(1) rotate(360deg);
+	}
+	100% {
+		opacity: 0;
+	    -webkit-transform:scale(0) rotate(0deg);
+	}
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..a64c04f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages.properties
@@ -0,0 +1,14 @@
+fr.njin.i18n.document.title = Tic tac toe
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.morpion.playerInfo = Player {0} ({1})
+fr.njin.i18n.morpion.cell.submit = Ok
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..89c6e3a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,14 @@
+fr.njin.i18n.document.title = Morpion
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.morpion.playerInfo = Joueur {0} ({1})
+fr.njin.i18n.morpion.cell.submit = Ok
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/icon.png
new file mode 100644
index 0000000..8e106b5
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/failed.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/failed.png
new file mode 100644
index 0000000..2539c15
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/failed.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/succeed.png b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/succeed.png
new file mode 100644
index 0000000..db3e2de
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/images/succeed.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/index.html
new file mode 100644
index 0000000..b860afe
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/index.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+	<link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+				<div id="feedback-succeed" class="feedback">
+					<div>
+						<img src="images/succeed.png" alt="Succeed"/>
+					</div>
+				</div>
+				<div id="feedback-failed" class="feedback">
+					<div>
+						<img src="images/failed.png" alt="Failed"/>
+					</div>
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help-template.js
new file mode 100644
index 0000000..b61583a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help-template.js
@@ -0,0 +1,17 @@
+<h3> Tic tac toe </ h3>
+<h4> Mental calculation version </h4>
+<p> The two players choose, complete and valid an operation in turn. </p>
+<p> Click the "check" button to verify the entry. The App is able to verify the calculation. </p>
+<p> If the answer is correct, the box is marked with a cross (X) or a circle (O) according to the player.</p>
+<p> If the answer is false, the other player takes the hand and begins to play.</p>
+<p> The name of the player is displayed on the left : Player 1 (X), Player 2 (O).</p>
+<p> The first player to get 3 of his marks ( X or O) in a row (up, down, across, or diagonally) is the winner.</p>
+<p> The "Reload" button restarts the game. </p>
+<p> Enter the "Edit" mode to : </p>
+
+<ul> <li> choose the theme of interactivity : pad, slate or none (by default : pad),</li>
+<li> modify the calculations that you want to use for your activity. </li> </ul>
+
+<p> Insert the calculation in each field. <b> Results of operations are automatically calculated by the interactivity. </b> </p>
+<p> The App is able to identify mathematical signs ("+", "*", "-", "/" and parentheses). </p>
+<p> "Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..b42e7e9
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/help_fr-template.js
@@ -0,0 +1,21 @@
+<h3>Morpion</h3>
+<h3>Version calcul mental</h3>
+
+<p>
+Les deux joueurs choisissent, répondent et font valider tour à tour une opération dans une case.<br/>
+Une fois la réponse saisie, la “coche” permet de vérifier la réponse. L’App corrige la réponse.<br/>
+Si la réponse est correcte, la case est marquée d’une croix (X) ou d’un cercle (O) selon le joueur.<br/>
+Si la réponse est fausse, l’autre joueur prend la main.
+</p>
+<p>Le nom du joueur figure à gauche : JOUEUR 1 (X), JOUEUR 2 (O).</p>
+
+<p>Le premier joueur qui parvient à aligner trois de ses symboles (X ou O)  gagne la partie.</p>
+
+<p>Le bouton "éditer" vous permet de :</p>
+<ul>
+	<li>choisir le thème de l'interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+	<li>modifier les calculs que vous voulez utiliser pour votre activité.</li>
+</ul>
+<p>L’App est capable d’identifier les écritures mathématiques (signes autorisés : “+”, “*”, “-”, “/” et les parenthèses).</p>
+
+<p>Le bouton "Recharger" permet de recommencer le jeu.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/main.js
new file mode 100644
index 0000000..1473f7e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/main.js
@@ -0,0 +1,163 @@
+var player;
+
+var defaults = [["1/1", "3*(3+2)", "5-4"],["12+5", "(3*3)+2", "35/5"],["9*9", "3+2", "11+4"]];
+
+function operationParameterKey(i,j) {
+	return "cell"+i+","+j;
+}
+
+
+function cellOperationParameterKey(cell) {
+	return operationParameterKey(cell.data("i"),cell.data("j"));
+}
+
+function reloadApp(app) {
+	var scene = $("#scene");
+	scene.empty();
+
+	var playerInfo = $("<div id='playerInfo'/>");
+	scene.append(playerInfo);
+	
+	var table = $("<div id='table'/>");
+	scene.append(table);
+
+	var gameEnd = false;
+	
+	player = 0;
+	changePlayer();
+
+	for(i = 0 ; i < 3 ; i++) {
+		var row = $("<div/>");
+		table.append(row);
+		for(j = 0 ; j < 3 ; j++) {
+			var key = operationParameterKey(i,j);
+			window.cell = {i: i , j: j, operation: app.parameters.value(key) || defaults[i][j]};
+			var cell = $(Mustache.render(cellTemplate, window));
+			row.append(cell);
+			if(!app.onEdit) {
+				cell.find("span.result:eq(0)").get(0).contentEditable = true;
+				cell.find("span.result:eq(0)").focus(function(){
+					var input = $(this);
+					var parentCell = input.parent().parent();
+					log(parentCell.data("player"));
+					if(!gameEnd && parentCell.data("player") === undefined) {
+						parentCell.parent().parent().find(".onAnswer").removeClass("onAnswer");
+						parentCell.addClass("onAnswer");
+					}
+				});
+				cell.find("span.result:eq(0)").bind('blur', function(){
+					var v = parseInt($(this).text().trim());
+					if(isNaN(v)) {
+						$(this).text("");
+						var parentCell = $(this).parent().parent();
+						parentCell.removeClass("onAnswer");
+					}
+				});
+				
+				cell.find("button[role=submit]").click(function(e){
+					e.stopPropagation();
+					var parentCell = $(this).parent().parent().parent();
+					var input = parentCell.find("span.result:eq(0)");
+					if(!gameEnd && parentCell.data("player") === undefined) {
+						parentCell.parent().parent().find(".onAnswer").removeClass("onAnswer");
+						var operation = input.data("operation");
+						var toCompare = eval(operation);
+						var submitted = input.text();
+						log("Compare "+toCompare+" to submitted "+submitted);
+						if(toCompare == submitted) {
+							log("Player "+player+" successfull answer.");
+							
+							input.get(0).contentEditable = false;
+							
+							parentCell.addClass("answered succeed player"+player);
+							parentCell.data("player", player);
+														
+							$("#feedback-succeed").addClass("expand");
+							setTimeout(function(){
+								$("#feedback-succeed").addClass("closed");
+								$("#feedback-succeed").removeClass("expand");
+							}, 2000);
+
+							var debug = parentCell.find(".debug");
+							debug.text(debug.text()+":"+player);
+							
+							var wincells = isGameEnd(parentCell.data("i"), parentCell.data("j"));
+							if(wincells != null) {
+								gameEnd = true;
+								table.addClass("finish");
+								wincells.addClass("win");
+							}
+						}else{
+							log("Player "+player+" unsuccessfull answer.");						
+							parentCell.addClass("answered failed");
+							$("#feedback-failed").addClass("expand");
+							setTimeout(function(){
+								parentCell.removeClass("answered failed");
+								input.text("");
+							}, 1000);
+							setTimeout(function(){
+								$("#feedback-failed").addClass("closed");
+								$("#feedback-failed").removeClass("expand");
+							}, 2000);
+						}
+						if(!gameEnd)
+							changePlayer();
+					}
+				});
+			}else{
+				cell.find(".operation").each(function(i, operation){
+					var c = $(operation).parent().parent();
+					var key = cellOperationParameterKey(c);
+					operation.contentEditable = true;
+					$(operation).bind('blur keyup paste', function(){
+						app.parameters.value(key, $(this).text());
+					});
+				});
+			}			
+		}
+	}
+}
+
+function reloadCallback(parameter) {
+	if(parameter === undefined)
+		reloadApp(this);
+}
+
+function changePlayer() {
+	log("Change player");
+	player=player%2+1;
+	$("#playerInfo").text( fr.njin.i18n.morpion.playerInfo(player, getSignForPlayer(player)));
+}
+
+function getSignForPlayer(player) {
+	return player === 1 ? "X" : "O";
+}
+
+function isGameEnd(i, j) {
+	var cells = isCellsWin($("#table>div:eq("+i+")>div"));
+	if(cells)
+		return cells;
+	cells =	isCellsWin($("#table>div:eq(0)>div:eq("+j+") , #table>div:eq(1)>div:eq("+j+") , #table>div:eq(2)>div:eq("+j+")"));
+	if(cells)
+		return cells;
+	cells = isCellsWin($("#table>div:eq(0)>div:eq(0) , #table>div:eq(1)>div:eq(1) , #table>div:eq(2)>div:eq(2)"));
+	if(cells)
+		return cells;
+	cells = isCellsWin($("#table>div:eq(2)>div:eq(0) , #table>div:eq(1)>div:eq(1) , #table>div:eq(0)>div:eq(2)"));
+	return cells;
+}
+
+function isCellsWin(cells) {
+	var n = ((3*player) - (parseInt(cells.eq(0).data("player")) + parseInt(cells.eq(1).data("player")) + parseInt(cells.eq(2).data("player"))));
+	if( n == 0 )
+		return cells;
+	return null;
+}
+
+$(document).ready(function(){
+	var callbacks = {
+		onEdit: reloadApp,
+		onView: reloadApp
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/templates.js
new file mode 100644
index 0000000..f05ce37
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Morpion.wgt/js/templates.js
@@ -0,0 +1,35 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+			
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>';
+						
+			
+var cellTemplate = 
+			'<div data-i={{cell.i}} data-j={{cell.j}}>'+
+				'<div class="debug">'+
+					'<span>{{cell.i}},{{cell.j}}</span>'+
+				'</div>'+
+				'<div>'+
+					'<span class="operation">{{cell.operation}}</span>'+
+					'<span class="equal">=</span>'+
+					'<span class="result" data-operation="{{cell.operation}}"></span>'+
+					'<div class="actions">'+
+						'<button role="submit">{{fr.njin.i18n.morpion.cell.submit}}</button>'+
+					'</div>'+
+				'</div>'+
+			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml
new file mode 100644
index 0000000..a7ce92c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="600" 
+        ub:resizable="true">     
+   
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Ordonner des images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/css/basic.css
new file mode 100644
index 0000000..2efef45
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/css/basic.css	
@@ -0,0 +1,393 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid black;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+    
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid black;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 5px 0;
+    min-height: 60px;
+}
+
+.imgs_cont{
+    width: 100%;
+    margin: 0;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    width: 80%;
+    min-height: 40px;
+    max-height: 60px;
+    float: right;
+    overflow-x: hidden;
+    background-color: #ccc;
+    border-top-left-radius: 10px;
+    border-bottom-left-radius: 10px;
+    padding-left: 10px;  
+    word-break: break-all;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.add_img{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    background-image: url(../img/add_img.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    display: inline-block;
+}
+
+.img_block{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    cursor: pointer;
+    display: inline-block;
+    position: relative;
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+}
+
+.close_img, .clear_img, .numb_img {
+    width: 30px;
+    height: 30px;    
+    background-repeat: no-repeat;
+    position: absolute;    
+    right: -15px;
+    cursor: pointer;
+}
+
+.close_img{
+    background-image: url(../img/close_img.png);
+    top: -15px;
+}
+
+.clear_img{
+    background-image: url(../img/clear_img.png);
+    top: 15px;
+}
+
+.numb_img{
+    background-image: url(../img/numb_img.png); 
+    left: -15px;
+    top: -15px;
+    color: white;
+    font-weight: bold;
+    font-size: 130%;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/icon.svg
new file mode 100644
index 0000000..04b593a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/icon.svg	
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.6665" y1="0" x2="53.6665" y2="107.333">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<rect x="8.6" y="46.7" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+	<g id="PfcyK0_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M47.6,57.5c-7.5-0.8-14.2,1.4-21.8,1.4c-0.3,0-0.6,0-0.9,0
+					c-3.8-0.5-7.1-1.5-11.3-1.6c-0.7-0.2-1.8,0-2.6-0.1c0-2.7,0-5.4,0-8.1c12.2,0,24.4,0,36.6,0C47.6,51.9,47.6,54.7,47.6,57.5z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M11,57.3C11,57.2,11,57.2,11,57.3c0.9,0,1.9-0.2,2.6,0C12.7,57.3,11.9,57.3,11,57.3
+					z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M24.9,58.9c0.3,0,0.6,0,0.9,0C25.7,59,25,59,24.9,58.9z"/>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M27.9,62.5c6.6,0,13,0,19.7,0c0,1.3,0,2.7,0,4c-0.6-0.2-1.1,0.1-1.7-0.4
+					c-0.5,0.2-0.6,0.4-1.3,0.2c-0.2-0.2-0.9-0.1-1.1,0c-1.1,0.3-2.4,0-3.2-0.4c-0.3-0.1-0.1,0.3-0.4,0.2c-2.3-0.5-4.4-1.1-7.2-1.1
+					c-0.2-0.2-0.7,0-1-0.1c-3.4-0.3-6.8-0.6-9.5-1.5c-0.7-0.1-1.4-0.3-2.2-0.2c-0.2-0.2-0.7,0-1-0.1c-1.2,0.1-2.1-0.1-3-0.4
+					c0.8-0.2,1.9,0.2,2.7,0c0.3,0.1,1.2,0.1,1.5,0c0.2,0,0.3,0,0.5-0.1c0.3,0,0.6,0,0.9,0c0.1,0,0.1,0,0.2,0c0.6,0.1,1.6,0.1,2.2,0
+					c0.6,0,1.2-0.1,1.8-0.1c0.3,0,0.9,0.1,1.1-0.1c0.1,0,0.1,0,0.2,0C27.3,62.6,27.8,62.7,27.9,62.5z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M27,62.6c0.1-0.2,0.6,0,0.9-0.1C27.8,62.7,27.3,62.6,27,62.6z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M25.7,62.7c0.2-0.2,0.8,0,1.1-0.1C26.6,62.8,26,62.6,25.7,62.7z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M20.6,62.8c0.1-0.1,0.8-0.1,0.9,0C21.2,62.8,20.9,62.8,20.6,62.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M21.7,62.8c0.7,0,1.5,0,2.2,0C23.4,63,22.3,63,21.7,62.8z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M18.6,62.9c0.5,0,1,0,1.5,0C19.8,63,18.9,63,18.6,62.9z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M18.9,63.3c0.3,0,0.8-0.1,1,0.1C19.6,63.3,19.1,63.4,18.9,63.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M31.6,65.1c0.3,0,0.8-0.1,1,0.1C32.3,65.1,31.8,65.3,31.6,65.1z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M47.6,72c0,0.2,0,0.4,0,0.7c-1.4,0.6-2.9,0.6-4.7,0.7C44.3,72.7,45.8,72.2,47.6,72z
+					"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M19.9,63.4c0.8,0,1.4,0.2,2.2,0.2c2.7,1,6.1,1.2,9.5,1.5c0.2,0.2,0.7,0,1,0.1
+					c2.8,0,4.9,0.6,7.2,1.1c0.3,0.1,0.1-0.3,0.4-0.2c0.8,0.4,2.2,0.7,3.2,0.4c0.2,0.1,0.7-0.1,1.1,0c0.7,0.1,0.8,0,1.3-0.2
+					c0.6,0.4,1.1,0.2,1.7,0.4c0,1.7,0,3.4,0,5.1c-0.7-0.2-1.5,0.5-2.1,0.3c-0.1,0,0-0.1,0-0.1c-0.4,0.1-0.7,0.3-1,0.3
+					c-0.1,0-0.3-0.2-0.4-0.1c-0.5,0.1-1.1,0.5-1.8,0.4c-0.3,0,0.3-0.3,0-0.6c-0.8,0.2-2.1,0.7-2.6,0.1c-2.1,0.6-4.8,1-7.5,0.8
+					c1.5-0.5,3.5-0.6,5.1-1c-4.9-0.3-8.5,0.9-13.1,1.1c0.1-0.4,0.7-0.2,1-0.3c2.3-0.4,5-0.8,6.8-1.8c-1.8,0-3.8,0.8-5.9,1
+					c-1.1,0.1-2.2,0-3.2,0.4c1.3-1.2,4-1.1,5.5-2.2c-0.5-0.3-1.3-0.1-1.8,0.1c-0.3,0,0.1-0.2,0.1-0.3c-1,0-1.8,0.1-2.7,0.1
+					c-0.2-0.1-0.4-0.1-0.4-0.4c-1.6,0.3-2.8-0.4-4.3,0c0-0.2,0.4-0.1,0.7-0.2c0.3-0.2,0.3-0.3,0.6-0.4c-1.6-0.4-3.6,0.1-4.4-1
+					c-2.3,0.4-2.8-1.7-4.8-1.8c0-0.1,0-0.1-0.1-0.1c0-2.9,0-5.8,0-8.6c0.9,0,1.8,0,2.6,0c4.2,0.1,7.5,1.1,11.3,1.6
+					c0.1,0.1,0.8,0.1,0.9,0c7.6,0,14.3-2.2,21.8-1.4c0,1.7,0,3.4,0,5.1c-6.7,0-13.1,0-19.7,0c-0.3,0-0.7-0.1-0.9,0.1
+					c-0.1,0-0.1,0-0.2,0c-0.3,0-0.9-0.1-1.1,0.1c-0.6,0-1.1,0.2-1.8,0.1c-0.7,0-1.5,0-2.2,0c-0.1,0-0.1,0-0.2,0
+					c-0.1-0.1-0.8-0.1-0.9,0c-0.2,0-0.3,0.1-0.5,0.1c-0.5,0-1,0-1.5,0c-0.8,0.2-1.9-0.2-2.7,0c0.9,0.2,1.8,0.5,3,0.4
+					C19.1,63.4,19.6,63.3,19.9,63.4z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M43.5,66.4c0.2-0.1,0.9-0.2,1.1,0C44.2,66.4,43.7,66.5,43.5,66.4z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M11,65.9c0.1,0,0.1,0.1,0.1,0.1c2,0.2,2.5,2.2,4.8,1.8c0.8,1.2,2.8,0.6,4.4,1
+					C20,69,20,69.2,19.7,69.4c-0.2,0.1-0.6,0.1-0.7,0.2c1.5-0.4,2.7,0.3,4.3,0c0,0.2,0.2,0.3,0.4,0.4c0.9-0.1,1.7-0.2,2.7-0.1
+					c0,0.1-0.4,0.3-0.1,0.3c0.5-0.2,1.3-0.3,1.8-0.1c-1.5,1.1-4.1,1-5.5,2.2c1-0.4,2.1-0.3,3.2-0.4c2.1-0.2,4-1,5.9-1
+					c-1.8,0.9-4.6,1.4-6.8,1.8c-0.3,0-0.8-0.1-1,0.3c4.7-0.2,8.2-1.4,13.1-1.1c-1.6,0.5-3.6,0.5-5.1,1c2.7,0.2,5.4-0.2,7.5-0.8
+					c0.6,0.6,1.8,0.1,2.6-0.1c0.3,0.3-0.3,0.6,0,0.6c0.7,0,1.4-0.4,1.8-0.4c0.1,0,0.3,0.1,0.4,0.1c0.3,0,0.6-0.2,1-0.3
+					c0,0-0.1,0.1,0,0.1c0.6,0.2,1.5-0.5,2.1-0.3c0,0.1,0,0.2,0,0.3c-1.8,0.2-3.3,0.7-4.7,1.4c1.8-0.1,3.3-0.1,4.7-0.7
+					c0,1.7,0,3.5,0,5.2c-12.2,0-24.4,0-36.6,0C11,73.9,11,69.9,11,65.9z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<rect x="58.9" y="45.4" fill-rule="evenodd" fill="#33342E" width="41.5" height="33.7"/>
+<path fill-rule="evenodd" fill="#33342E" d="M84,52c0.2,0,0.6-0.1,0.7,0.1C84.5,52,84.1,52.1,84,52z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M90.2,57.4c0.4,0,0.2,0.4,0.1,0.5C90.1,58,90.1,57.5,90.2,57.4z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M91.7,59.5c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+	C91.3,59.4,91.7,59.4,91.7,59.5z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M74.6,62.4c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1c0,0.5-0.8,0.6-0.5,1.2
+	c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2c0.6-0.5,1.7-0.3,2.3-0.1
+	c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9c-1.2,0.5-2.5-0.3-3-1
+	c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4c-0.6,0-1-0.3-1.3-0.5
+	c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3c-0.7,0.3-1.3-0.1-1.9,0
+	c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1c0-0.3-0.3-0.3-0.3-0.6
+	c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8c0.1,0.3,0.6,0.2,0.9,0.3
+	c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3c-0.4,0.1-0.7,0.2-1.1,0.2
+	c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C74.7,62.9,74.4,62.4,74.6,62.4z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M89.1,67.8c0.4,0,0.6,0.3,1,0.3C89.9,68.2,89.1,68.2,89.1,67.8z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M92.4,58.8c0.4-0.1,0.8,0.1,1,0.4c-0.1-0.3-0.6-0.1-0.7-0.4
+	C92.6,58.8,92.6,59,92.4,58.8C92.4,58.9,92.4,58.9,92.4,58.8z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M88.2,53c0,0.3,0.2,0.3,0.2,0.5c-0.2-0.1-0.4-0.3-0.7-0.5c0.3,0,0.2,0.3,0.4,0.3
+	C88.1,53.2,88,52.8,88.2,53z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M82.2,51.4c0.4-0.2,0.6,0.3,0.8,0.5C82.7,51.8,82.7,51.4,82.2,51.4z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M76.7,56.3c0,0.4-0.2,0.5-0.4,0.7C76.4,56.7,76.6,56.5,76.7,56.3z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M76.8,58.2c-0.2,0.4,0.3,0.8-0.1,1C77,58.9,76.5,58.5,76.8,58.2z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M93.6,61.3c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5c-0.1,0-0.2,0-0.3,0
+	c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4c-0.6,0.7-0.4,2.7,0.7,2.8
+	c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0c1.1,0.2,2.2,0.8,3.3,0.7
+	c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2c0,3.4,0,4.8,0,8.1
+	c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+	c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+	c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+	c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+	c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+	c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+	c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+	c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+	c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1c0,0,0-0.1,0-0.1
+	c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5c0.2-0.2,0.7-0.3,0.4-0.7
+	c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6c0.1-0.1,0.1,0,0.2,0
+	c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2c0.2,0.2,0.4,0.4,0.7,0.5
+	c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7c1.1-0.4,1.6,0.9,2.2,1.4
+	c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3c0,0,0,0,0,0.1
+	c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C94,59.7,93.9,60.6,93.6,61.3z M90.3,58c0.1-0.1,0.3-0.6-0.1-0.5
+	C90.1,57.5,90.1,58,90.3,58z M91.2,59.5c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3C91.7,59.4,91.3,59.4,91.2,59.5z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M98,61c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2c0.1,0.1,0.5,0.2,0.4,0.3
+	c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0c0.1,0.1,0.2,0.2,0.1,0.4
+	c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4c1.3-0.1,3,0.4,3.8-0.4
+	c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5c-0.3-0.7,0.2-0.8,0.2-1.6
+	C95.1,61.5,96.5,61,98,61z M90.1,68.1c-0.4,0-0.5-0.3-1-0.3C89.1,68.2,89.9,68.2,90.1,68.1z"/>
+<path fill-rule="evenodd" fill="#33342E" d="M98,61c-1.5,0-2.9,0.5-4.4,0.3c0.3-0.7,0.4-1.6-0.1-2.1c-0.2-0.3-0.7-0.5-1-0.4
+	c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9c0.3,0.2,0.2-0.2,0.4-0.3c-0.6-0.6-1.1-1.8-2.2-1.4
+	c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3c-0.1-0.2,0,0.2,0,0.3C88,53.2,88,53,87.7,53
+	c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4c-0.3-0.3-0.7,0.1-0.8-0.2c-0.1-0.2-0.5,0-0.7-0.1c-0.1,0-0.1-0.1-0.2,0
+	c0,0.3,0.2,0.6-0.1,0.6C83.4,52.4,83.4,52,83,52c-0.2-0.2-0.4-0.7-0.8-0.5c-0.6,0-1,0.3-1.3,0.6c0.3,0.5-0.2,0.6-0.4,0.7
+	c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1
+	c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2
+	c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6c12.2,0,24.4,0,36.6,0C98,52.9,98,56,98,61z"/>
+<g>
+	<rect x="55.9" y="42.4" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+	<g id="tykqki_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M81,49c0.2,0,0.6-0.1,0.7,0.1C81.5,49,81.1,49.1,81,49z"/>
+				<path fill-rule="evenodd" fill="#D9D931" d="M87.2,54.4c0.4,0,0.2,0.4,0.1,0.5C87.1,55,87.1,54.5,87.2,54.4z"/>
+				<path fill-rule="evenodd" fill="#D9D931" d="M88.7,56.5c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+					C88.3,56.4,88.7,56.4,88.7,56.5z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M71.6,59.4c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1c0,0.5-0.8,0.6-0.5,1.2
+					c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2c0.6-0.5,1.7-0.3,2.3-0.1
+					c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9c-1.2,0.5-2.5-0.3-3-1
+					c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4c-0.6,0-1-0.3-1.3-0.5
+					c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3c-0.7,0.3-1.3-0.1-1.9,0
+					c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1c0-0.3-0.3-0.3-0.3-0.6
+					c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8c0.1,0.3,0.6,0.2,0.9,0.3
+					c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3c-0.4,0.1-0.7,0.2-1.1,0.2
+					c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C71.7,59.9,71.4,59.4,71.6,59.4z"/>
+				<path fill-rule="evenodd" fill="#9DAD3A" d="M86.1,64.8c0.4,0,0.6,0.3,1,0.3C86.9,65.2,86.1,65.2,86.1,64.8z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M89.4,55.8c0.4-0.1,0.8,0.1,1,0.4c-0.1-0.3-0.6-0.1-0.7-0.4
+					C89.6,55.8,89.6,56,89.4,55.8C89.4,55.9,89.4,55.9,89.4,55.8z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M85.2,50c0,0.3,0.2,0.3,0.2,0.5c-0.2-0.1-0.4-0.3-0.7-0.5c0.3,0,0.2,0.3,0.4,0.3
+					C85.1,50.2,85,49.8,85.2,50z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M79.2,48.4c0.4-0.2,0.6,0.3,0.8,0.5C79.7,48.8,79.7,48.4,79.2,48.4z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M73.7,53.3c0,0.4-0.2,0.5-0.4,0.7C73.4,53.7,73.6,53.5,73.7,53.3z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M73.8,55.2c-0.2,0.4,0.3,0.8-0.1,1C74,55.9,73.5,55.5,73.8,55.2z"/>
+				<path fill-rule="evenodd" fill="#9DAD3A" d="M90.6,58.3c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5c-0.1,0-0.2,0-0.3,0
+					c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4c-0.6,0.7-0.4,2.7,0.7,2.8
+					c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0c1.1,0.2,2.2,0.8,3.3,0.7
+					c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2c0,3.4,0,4.8,0,8.1
+					c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+					c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+					c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+					c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+					c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+					c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+					c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+					c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+					c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1c0,0,0-0.1,0-0.1
+					c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5c0.2-0.2,0.7-0.3,0.4-0.7
+					c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6c0.1-0.1,0.1,0,0.2,0
+					c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2c0.2,0.2,0.4,0.4,0.7,0.5
+					c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7c1.1-0.4,1.6,0.9,2.2,1.4
+					c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3c0,0,0,0,0,0.1
+					c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C91,56.7,90.9,57.6,90.6,58.3z M87.3,55c0.1-0.1,0.3-0.6-0.1-0.5
+					C87.1,54.5,87.1,55,87.3,55z M88.2,56.5c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3C88.7,56.4,88.3,56.4,88.2,56.5z"/>
+				<path fill-rule="evenodd" fill="#BDCF31" d="M95,58c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2c0.1,0.1,0.5,0.2,0.4,0.3
+					c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0c0.1,0.1,0.2,0.2,0.1,0.4
+					c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4c1.3-0.1,3,0.4,3.8-0.4
+					c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5c-0.3-0.7,0.2-0.8,0.2-1.6
+					C92.1,58.5,93.5,58,95,58z M87.1,65.1c-0.4,0-0.5-0.3-1-0.3C86.1,65.2,86.9,65.2,87.1,65.1z"/>
+				<path fill-rule="evenodd" fill="#D9D931" d="M95,58c-1.5,0-2.9,0.5-4.4,0.3c0.3-0.7,0.4-1.6-0.1-2.1c-0.2-0.3-0.7-0.5-1-0.4
+					c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9c0.3,0.2,0.2-0.2,0.4-0.3c-0.6-0.6-1.1-1.8-2.2-1.4
+					c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3c-0.1-0.2,0,0.2,0,0.3C85,50.2,85,50,84.7,50
+					c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4c-0.3-0.3-0.7,0.1-0.8-0.2c-0.1-0.2-0.5,0-0.7-0.1c-0.1,0-0.1-0.1-0.2,0
+					c0,0.3,0.2,0.6-0.1,0.6C80.4,49.4,80.4,49,80,49c-0.2-0.2-0.4-0.7-0.8-0.5c-0.6,0-1,0.3-1.3,0.6c0.3,0.5-0.2,0.6-0.4,0.7
+					c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1
+					c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2
+					c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6c12.2,0,24.4,0,36.6,0C95,49.9,95,53,95,58z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<path fill="#33342E" d="M71.3,25.5c-10.2-1.1-18.2,3.2-19.6,3.9l-4.2-7c0,0-8.6,18-10.8,21.8l22.5-2.4l-4.3-7.1
+	c2.7-1.4,7.5-4,15.8-4c10,0,13.2,5.9,14.3,15.5l1-0.4C85.9,45.9,87.7,27.3,71.3,25.5z"/>
+<path fill="#67C8F0" d="M69.3,22.5c-10.2-0.8-18.2,3.2-19.6,3.9l-4.2-7c0,0-8.6,18-10.8,21.8l22.5-2.4l-4.3-7.1
+	c2.7-1.4,8.5-4,16.8-4c10,0,15.2,9,15.2,18.5l1-0.4C85.9,45.9,87.4,24,69.3,22.5z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/add_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/add_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/add_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/add_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/clear_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/clear_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/clear_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/clear_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/fill_hor.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/fill_hor.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/fill_hor.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/fill_hor.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/fill_vert.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/fill_vert.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/fill_vert.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/fill_vert.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/numb_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/numb_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/numb_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/numb_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html
new file mode 100644
index 0000000..e79952a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/index.html	
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js
new file mode 100644
index 0000000..9200e21
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/js/script.js	
@@ -0,0 +1,571 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Place the pictures in ascending order.", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    wgt_name: "Order pictures",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2> Order pictures </h2> </p>" +
+"<p> <h3> Sort pictures in the order requested</h3> </p>" +
+
+"<p> The number on the frame indicates the order in which the images should be classified. Drag and drop to rank pictures. Once all pictures are correctly classified, the area turns in green. </p> "+
+"<p> Reload “button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of interactivity : pad, slate or none (by default : none),</li>" +
+"<li> modify an exercise or create a new one. </li> </ul>" +
+
+"<p>To create a new exercise : </p>" +
+"<ul> <li> click on “New block”,</li>" +
+"<li> insert an instruction clicking on the text field “Enter your instruction here ... ”,</li>" +
+"<li> add picture frames clicking on the “+”,</li>" +
+"<li> drag an drop pictures from your library,</li>" +
+"<li> change the order of images by dragging them.</li> </ul>" +
+
+"<p> To delete a frame, click the cross (X).</p>" +
+"<p> To change a picture, click the “reload” button on the frame.</p>" +
+
+"<p> To delete a whole exercise, click the cross to the left. </p>" +
+
+"<p> “Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("odr_des_imgs","")){
+            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".numb_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop");
+                            $(this).find("input").val(++tmp_i)
+                            tmp_right += tmp_i + "*";
+                        } else 
+                            $(this).remove();
+                    });
+                    container.find(".imgs_cont>input").val(tmp_right);
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").sortable( {
+                        update: checkResult
+                    } );
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    //container.find(".imgs_cont").sortable("destroy");
+                    container.find(".imgs_cont").css("background-color", "");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        //.css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
+                    });
+                    rightOrder(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();
+        if(tmp_obj.find(".img_block").size() > 0){
+            refreshImgNumbers(tmp_obj);
+        }
+        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        //$(this).parent().find(".fill_img").remove();
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var container = $(this);
+            var tmp_right = "";
+            var tmp_i = 0;
+            container.find(".img_block").each(function(){
+                if($(this).html().match(/<img/)){
+                    $(this).find("input").val(++tmp_i)
+                    tmp_right += tmp_i + "*";
+                }
+            });
+            container.find(".imgs_cont>input").val(tmp_right);
+        });
+    }
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.right = $(this).find(".imgs_cont>input").val();
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.value = $(this).find("input").val();
+            img_obj.link = $(this).find("img").attr("src");
+            img_obj.ht = $(this).find("img").height();
+            img_obj.wd = $(this).find("img").width();
+            cont_obj.imgs.push(img_obj);
+        });
+        array_to_export.push(cont_obj);
+    });
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    if(window.sankore)
+        sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected")){
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "display");
+    }
+    else{
+        if(window.sankore)
+            sankore.setPreference("odr_des_imgs_state", "edit");
+    }
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }
+        else {
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+    
+            $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block' style='text-align: center;'>");
+                var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            if(sankore.preference("odr_des_imgs_state","")){
+                if(sankore.preference("odr_des_imgs_state","") == "edit")
+                    tmp_array = shuffle(tmp_array);
+            } else 
+                tmp_array = shuffle(tmp_array);
+            
+            for(j = 0; j<tmp_array.length;j++)
+                tmp_array[j].appendTo(imgs_container);
+            imgs_container.sortable().bind('sortupdate', function(event, ui) {
+                checkResult(event);
+            }); 
+            container.appendTo("#data"); 
+            imgs_container.trigger("sortupdate")                          
+        }        
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img1);
+    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img2);
+    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='3'/>").appendTo(img3);
+    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='4'/>").appendTo(img4);
+    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='5'/>").appendTo(img5);
+    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+
+    container.appendTo("#data");
+}
+
+//check result
+function checkResult(event)
+{
+    if($("#wgt_display").hasClass("selected")){
+        var str = "";
+        var right_str = $(event.target).find("input").val();
+        $(event.target).find(".img_block").each(function(){
+            str += $(this).find("input").val() + "*";
+        });
+        if(str == right_str)
+            $(event.target).css("background-color","#9f9");
+        else
+            $(event.target).css("background-color","");
+    } else {
+        refreshImgNumbers($(event.target));
+    }
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
+    var tmp_counter = dest.parent().find(".img_block").size();
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
+    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//regulation the images in right order
+function rightOrder(source){
+    var tmp_arr = [];
+    var tmp_var;
+    source.find(".img_block").each(function(){
+        tmp_arr.push($(this));
+        $(this).remove();
+    });
+    for(var i = 0; i < tmp_arr.length; i++)
+        for(var j = 0; j < tmp_arr.length - 1; j++){
+            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
+                tmp_var = tmp_arr[j];
+                tmp_arr[j] = tmp_arr[j+1];
+                tmp_arr[j+1] = tmp_var;
+            }
+        }
+    for(i in tmp_arr)
+        source.append(tmp_arr[i]);
+}
+
+//refresh the numbers of the images
+function refreshImgNumbers(source){
+    var tmp = 1;
+    source.find(".img_block").each(function(){
+        $(this).find("input").val(tmp);
+        $(this).find(".numb_img").text(tmp);
+        tmp++;
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/index.html
new file mode 100644
index 0000000..f4acd17
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..cef5bfb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/fr/js/script.js	
@@ -0,0 +1,562 @@
+
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    short_desc: "Placez les images dans l'ordre croissant.", 
+    add: "Nouveau bloc",
+    enter: "Saisir votre consigne ici ...",
+    wgt_name: "Ordonner des images",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Ordonner des images</h2></p>"+
+    "<p><h3>Classer des images dans l’ordre demandé.</h3></p>"+
+
+    "<p>La consigne indique dans quel ordre les images doivent être classées. Le classement des images s’effectue par un glisser-déposer. Une fois que toutes les images sont correctement classées, la zone se colore en vert.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité.</li></ul>"+
+
+    "<p>Pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
+    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir votre consigne ici …”,</li>"+
+    "<li>insérez des images dans les zones de dépôt par glisser-déposer des images à partir de votre bibliothèque,</li>"+
+    "<li>modifiez éventuellement l’ordre des images par un glisser-déposer de l’image concernée pour la mettre au bon endroit dans la suite.</li></ul>"+
+
+    "<p>Pour ajouter une zone image, cliquez sur le gros “+” en bas.</p>"+
+    "<p>Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.</p>"+
+    "<p>Pour changer d’image, cliquez sur l’icône située au milieu à droite de l’image.</p>"+ 
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("odr_des_imgs","")){
+            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".numb_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop");
+                            $(this).find("input").val(++tmp_i)
+                            tmp_right += tmp_i + "*";
+                        } else 
+                            $(this).remove();
+                    });
+                    container.find(".imgs_cont>input").val(tmp_right);
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").sortable( {
+                        update: checkResult
+                    } );
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    //container.find(".imgs_cont").sortable("destroy");
+                    container.find(".imgs_cont").css("background-color", "");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        //.css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
+                    });
+                    rightOrder(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();
+        if(tmp_obj.find(".img_block").size() > 0){
+            refreshImgNumbers(tmp_obj);
+        }
+        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        //$(this).parent().find(".fill_img").remove();
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var container = $(this);
+            var tmp_right = "";
+            var tmp_i = 0;
+            container.find(".img_block").each(function(){
+                if($(this).html().match(/<img/)){
+                    $(this).find("input").val(++tmp_i)
+                    tmp_right += tmp_i + "*";
+                }
+            });
+            container.find(".imgs_cont>input").val(tmp_right);
+        });
+    }
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.right = $(this).find(".imgs_cont>input").val();
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.value = $(this).find("input").val();
+            img_obj.link = $(this).find("img").attr("src").replace("../../","");
+            img_obj.ht = $(this).find("img").height();
+            img_obj.wd = $(this).find("img").width();
+            cont_obj.imgs.push(img_obj);
+        });
+        array_to_export.push(cont_obj);
+    });
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("odr_des_imgs_state", "display");
+    else
+        sankore.setPreference("odr_des_imgs_state", "edit");
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }else{
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+    
+            $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block' style='text-align: center;'>");
+                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            if(sankore.preference("odr_des_imgs_state","")){
+                if(sankore.preference("odr_des_imgs_state","") == "edit")
+                    tmp_array = shuffle(tmp_array);
+            } else 
+                tmp_array = shuffle(tmp_array);
+            
+            for(j = 0; j<tmp_array.length;j++)
+                tmp_array[j].appendTo(imgs_container);
+            imgs_container.sortable().bind('sortupdate', function(event, ui) {
+                checkResult(event);
+            }); 
+            container.appendTo("#data"); 
+            imgs_container.trigger("sortupdate")  
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='3'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='4'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='5'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+
+    container.appendTo("#data");
+}
+
+//check result
+function checkResult(event)
+{
+    if($("#wgt_display").hasClass("selected")){
+        var str = "";
+        var right_str = $(event.target).find("input").val();
+        $(event.target).find(".img_block").each(function(){
+            str += $(this).find("input").val() + "*";
+        });
+        if(str == right_str)
+            $(event.target).css("background-color","#9f9");
+        else
+            $(event.target).css("background-color","");
+    } else {
+        refreshImgNumbers($(event.target));
+    }
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
+    var tmp_counter = dest.parent().find(".img_block").size();
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
+    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//regulation the images in right order
+function rightOrder(source){
+    var tmp_arr = [];
+    var tmp_var;
+    source.find(".img_block").each(function(){
+        tmp_arr.push($(this));
+        $(this).remove();
+    });
+    for(var i = 0; i < tmp_arr.length; i++)
+        for(var j = 0; j < tmp_arr.length - 1; j++){
+            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
+                tmp_var = tmp_arr[j];
+                tmp_arr[j] = tmp_arr[j+1];
+                tmp_arr[j+1] = tmp_var;
+            }
+        }
+    for(i in tmp_arr)
+        source.append(tmp_arr[i]);
+}
+
+//refresh the numbers of the images
+function refreshImgNumbers(source){
+    var tmp = 1;
+    source.find(".img_block").each(function(){
+        $(this).find("input").val(tmp);
+        $(this).find(".numb_img").text(tmp);
+        tmp++;
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/img/drop_img.png b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/img/drop_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/img/drop_img.png
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/img/drop_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/index.html
new file mode 100644
index 0000000..f4acd17
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/index.html	
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..0bce573
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/locales/ru/js/script.js	
@@ -0,0 +1,539 @@
+
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    short_desc: "Расположите картинки в порядке возрастания цифр.", 
+    add: "Новый блок",
+    enter: "Введите текст ...",
+    wgt_name: "Верный порядок",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("odr_des_imgs","")){
+            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
+            importData(data);
+        } else {
+            showExample();
+        }
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_i = 0;
+                    var tmp_right = "";
+                    var tmp_array = [];
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".img_block").each(function(){
+                        if($(this).find("img").attr("src") != "img/drop_img.png"){
+                            $(this).find(".close_img").remove();
+                            $(this).find(".clear_img").remove();
+                            $(this).find(".numb_img").remove();
+                            $(this).removeAttr("ondragenter")
+                            .removeAttr("ondragleave")
+                            .removeAttr("ondragover")
+                            .removeAttr("ondrop");
+                            $(this).find("input").val(++tmp_i)
+                            tmp_right += tmp_i + "*";
+                        } else 
+                            $(this).remove();
+                    });
+                    container.find(".imgs_cont>input").val(tmp_right);
+                    
+                    container.find(".img_block").each(function(){
+                        $(this).css("float","");
+                        tmp_array.push($(this));
+                    });                    
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").sortable( {
+                        update: checkResult
+                    } );
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    //container.find(".imgs_cont").sortable("destroy");
+                    container.find(".imgs_cont").css("background-color", "");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block").each(function(){
+                        $(this).attr("ondragenter", "return false;")
+                        .attr("ondragleave", "$(this).css(\"background-color\",\"\"); return false;")
+                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
+                        .attr("ondrop", "$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);")
+                        //.css("float","left");
+                        $("<div class='close_img'>").appendTo($(this));
+                        $("<div class='clear_img'>").appendTo($(this));
+                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
+                    });
+                    rightOrder(container.find(".imgs_cont"));
+                    container.find(".imgs_cont").append(add_img)
+                });                
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();
+        if(tmp_obj.find(".img_block").size() > 0){
+            refreshImgNumbers(tmp_obj);
+        }
+        
+    });
+    
+    //cleaning an image
+    $(".clear_img").live("click",function(){
+        //$(this).parent().find(".fill_img").remove();
+        $(this).parent().find("img").attr("src","img/drop_img.png");
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var container = $(this);
+            var tmp_right = "";
+            var tmp_i = 0;
+            container.find(".img_block").each(function(){
+                if($(this).html().match(/<img/)){
+                    $(this).find("input").val(++tmp_i)
+                    tmp_right += tmp_i + "*";
+                }
+            });
+            container.find(".imgs_cont>input").val(tmp_right);
+        });
+    }
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.right = $(this).find(".imgs_cont>input").val();
+        cont_obj.imgs = [];
+        $(this).find(".img_block").each(function(){
+            var img_obj = new Object();
+            img_obj.value = $(this).find("input").val();
+            img_obj.link = $(this).find("img").attr("src").replace("../../","");
+            img_obj.ht = $(this).find("img").height();
+            img_obj.wd = $(this).find("img").width();
+            cont_obj.imgs.push(img_obj);
+        });
+        array_to_export.push(cont_obj);
+    });
+    
+    if($(".cont").size() == 0){
+        var cont_obj = new Object();
+        cont_obj.style = $("#style_select").find("option:selected").val();
+        cont_obj.tmp = "clear";
+        array_to_export.push(cont_obj);
+    }
+    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("odr_des_imgs_state", "display");
+    else
+        sankore.setPreference("odr_des_imgs_state", "edit");
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        if(data[i].tmp){
+            changeStyle(data[i].style);
+            $("#style_select").val(data[i].style);
+        }else{
+            if(i == 0){
+                changeStyle(data[i].style);
+                $("#style_select").val(data[i].style);
+            }
+            var tmp_array = [];
+            var container = $("<div class='cont'>");
+            var sub_container = $("<div class='sub_cont'>").appendTo(container);
+            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
+        
+            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+    
+            $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
+        
+            for(var j in data[i].imgs){
+                var img_block = $("<div class='img_block' style='text-align: center;'>");
+                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
+                img.height(data[i].imgs[j].ht);
+                if((120 - data[i].imgs[j].ht) > 0)
+                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
+                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
+                img_block.append(hidden_input).append(img);
+                tmp_array.push(img_block);
+            }
+            if(sankore.preference("odr_des_imgs_state","")){
+                if(sankore.preference("odr_des_imgs_state","") == "edit")
+                    tmp_array = shuffle(tmp_array);
+            } else 
+                tmp_array = shuffle(tmp_array);
+            
+            for(j = 0; j<tmp_array.length;j++)
+                tmp_array[j].appendTo(imgs_container);
+            imgs_container.sortable().bind('sortupdate', function(event, ui) {
+                checkResult(event);
+            }); 
+            container.appendTo("#data"); 
+            imgs_container.trigger("sortupdate")  
+        }
+    }
+}
+
+//example
+function showExample(){
+    
+    changeStyle("3");
+    var tmp_array = [];
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    
+    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='1'/>").appendTo(img1);
+    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
+    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='2'/>").appendTo(img2);
+    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
+    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='3'/>").appendTo(img3);
+    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
+    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='4'/>").appendTo(img4);
+    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
+    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
+    $("<input type='hidden' value='5'/>").appendTo(img5);
+    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
+    
+    tmp_array.push(img1, img2, img3, img4, img5);
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+
+    container.appendTo("#data");
+}
+
+//check result
+function checkResult(event)
+{
+    if($("#wgt_display").hasClass("selected")){
+        var str = "";
+        var right_str = $(event.target).find("input").val();
+        $(event.target).find(".img_block").each(function(){
+            str += $(this).find("input").val() + "*";
+        });
+        if(str == right_str)
+            $(event.target).css("background-color","#9f9");
+        else
+            $(event.target).css("background-color","");
+    } else {
+        refreshImgNumbers($(event.target));
+    }
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    var close = $("<div class='close_cont'>").appendTo(container);
+    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
+    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addImgBlock(dest){
+    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
+    var tmp_counter = dest.parent().find(".img_block").size();
+    $("<div class='close_img'>").appendTo(img_block);
+    $("<div class='clear_img'>").appendTo(img_block);
+    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
+    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
+    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//regulation the images in right order
+function rightOrder(source){
+    var tmp_arr = [];
+    var tmp_var;
+    source.find(".img_block").each(function(){
+        tmp_arr.push($(this));
+        $(this).remove();
+    });
+    for(var i = 0; i < tmp_arr.length; i++)
+        for(var j = 0; j < tmp_arr.length - 1; j++){
+            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
+                tmp_var = tmp_arr[j];
+                tmp_arr[j] = tmp_arr[j+1];
+                tmp_arr[j+1] = tmp_var;
+            }
+        }
+    for(i in tmp_arr)
+        source.append(tmp_arr[i]);
+}
+
+//refresh the numbers of the images
+function refreshImgNumbers(source){
+    var tmp = 1;
+    source.find(".img_block").each(function(){
+        $(this).find("input").val(tmp);
+        $(this).find(".numb_img").text(tmp);
+        tmp++;
+    });
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+function onDropTarget(obj, event) {
+    $(obj).find("img").remove();
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
+        $(obj).append(tmp_img);
+        setTimeout(function(){
+            if(tmp_img.height() >= tmp_img.width())
+                tmp_img.attr("height", "120");
+            else{
+                tmp_img.attr("width","120");
+                var h = tmp_img.height();
+                tmp_img.attr("height",h);
+                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+            }
+        }, 6)
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/0.gif b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/0.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/0.gif
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/0.gif
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/1.gif b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/1.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/1.gif
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/1.gif
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/2.gif b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/2.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/2.gif
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/2.gif
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/3.gif b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/3.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/3.gif
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/3.gif
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/4.gif b/Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/4.gif
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/objects/4.gif
rename to Sankore-3.1/resources/library/interactivities/Ordre images.wgt/objects/4.gif
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/config.xml
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/config.xml
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/config.xml
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/css/basic.css
new file mode 100644
index 0000000..756f8a0
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/css/basic.css	
@@ -0,0 +1,454 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid #999;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid #999;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 0 0;
+    min-height: 60px;
+}
+
+.imgs_answers_gray{
+
+}
+
+.imgs_answers_green{
+    background-color: #9f9;
+}
+
+.imgs_answers_red{
+    background-color: #f99;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    width: 80%;
+    min-height: 40px;
+    float: right;
+    background-color: #999;
+    border-top-left-radius: 20px;
+    border-bottom-left-radius: 20px;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+#sortable{
+/*    width: 100%;
+    min-height: 62px;
+    margin: 0;*/
+    list-style-type: none;
+    margin: 10px 0 10px 20px;
+    padding: 0;
+}
+
+#sortable li{
+/*    width: 50px;
+    height: 50px;
+    margin: 5px 10px;
+    cursor: pointer;
+    float: left;
+    display: inline-block;
+    position: relative;
+    background-color: white;
+    border: 1px solid #ccc;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+    font-size: 230%;*/
+    margin: 5px 10px;
+    display: inline-table;
+    width: 50px;
+    height: 50px;
+    background-color: white;
+    font-size: 230%;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;
+    text-align: center;
+}
+
+.highlight { 
+    background-color: #999 !important;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.dropHere{
+    background-color: #ccc;
+}
+
+.dropBack{
+
+}
+
+.audio_block{
+    width: 120px;
+    height: 30px;
+    padding: 5px 0 5px 10px;    
+    float: left;
+    border-right: 3px solid white;
+}
+
+.audio_gray{
+    border-top-left-radius: 15px;
+    border-bottom-left-radius: 15px;
+    background-color: white;
+}
+
+.audio_desc{
+    width: 73%;
+    max-height: 40px;
+    overflow-x: hidden;
+    float: right;
+    margin-left: 20px;
+    word-break: break-all;
+}
+
+.play, .stop{
+    height: 30px;
+    width: 70px;    
+    float: left;
+    cursor: pointer;
+}
+
+.play{
+    background-image: url(../img/play.png);
+}
+
+.stop{
+    background-image: url(../img/stop.png);
+}
+
+.replay{
+    height: 30px;
+    width: 32px;
+    margin-left: 10px;
+    float: left;
+    background-image: url(../img/replay.png);
+    background-repeat: no-repeat;
+    cursor: pointer;
+}
+
+.gray{
+    background-color: #ccc;
+}
+
+.audio_answer{
+    min-height: 50px;
+    min-width: 200px;
+    max-width: 700px;
+    margin: 5px 10px;
+    padding: 0 10px;
+    background-color: white;
+    border: 1px solid #ccc;
+    box-shadow: #ccc -1px 0 4px;
+    font-size: 230%;
+    word-wrap: break-word;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/icon.svg
new file mode 100644
index 0000000..99ddc90
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/icon.svg	
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.334">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<path fill="#33342E"  a:adobe-opacity-share="0" d="M75,59.5c-0.3-0.5-0.6-0.9-1.1-1.2c-0.4-0.3-0.9-0.6-1.4-0.8
+			c-0.5-0.2-1.1-0.3-1.7-0.3c-1.1,0-2,0.2-2.7,0.6c-0.7,0.4-1.4,1-1.8,1.7s-0.8,1.5-1,2.4c-0.2,0.9-0.3,1.8-0.3,2.8
+			c0,0.9,0.1,1.8,0.3,2.7c0.2,0.9,0.6,1.6,1,2.3c0.5,0.7,1.1,1.2,1.8,1.7s1.7,0.6,2.7,0.6c1.5,0,2.6-0.4,3.4-1.3
+			c0.8-0.9,1.3-2.1,1.5-3.5h4.6c-0.1,1.4-0.4,2.6-0.9,3.7c-0.5,1.1-1.2,2-2,2.8c-0.8,0.8-1.8,1.4-2.9,1.8s-2.3,0.6-3.7,0.6
+			c-1.7,0-3.1-0.3-4.5-0.9c-1.3-0.6-2.4-1.4-3.3-2.4c-0.9-1-1.6-2.2-2.1-3.6s-0.7-2.8-0.7-4.4c0-1.6,0.2-3.1,0.7-4.5
+			c0.5-1.4,1.2-2.6,2.1-3.6c0.9-1,2-1.8,3.3-2.4c1.3-0.6,2.8-0.9,4.5-0.9c1.2,0,2.3,0.2,3.4,0.5c1.1,0.3,2,0.8,2.8,1.5
+			c0.8,0.7,1.5,1.5,2.1,2.4c0.5,1,0.9,2.1,1,3.3h-4.6C75.5,60.4,75.3,59.9,75,59.5z"/>
+		<path fill="#33342E"  a:adobe-opacity-share="0" d="M92.9,53.7c1.4,0,2.7,0.2,3.9,0.7c1.2,0.4,2.2,1.1,3.1,2
+			c0.9,0.9,1.6,2,2.1,3.3c0.5,1.3,0.7,2.9,0.7,4.7c0,1.6-0.2,3-0.6,4.4c-0.4,1.3-1,2.5-1.8,3.5c-0.8,1-1.8,1.7-3.1,2.3
+			s-2.7,0.8-4.3,0.8h-9.3V53.7H92.9z M92.6,71.4c0.7,0,1.4-0.1,2-0.3c0.6-0.2,1.2-0.6,1.7-1.1s0.9-1.2,1.2-2c0.3-0.8,0.5-1.8,0.5-3
+			c0-1.1-0.1-2.1-0.3-3c-0.2-0.9-0.6-1.6-1-2.3c-0.5-0.6-1.1-1.1-1.9-1.4s-1.8-0.5-3-0.5h-3.4v13.6H92.6z"/>
+	</g>
+	<g>
+		<path fill="#FFFFFF" d="M72,56.5c-0.3-0.5-0.6-0.9-1.1-1.2c-0.4-0.3-0.9-0.6-1.4-0.8c-0.5-0.2-1.1-0.3-1.7-0.3
+			c-1.1,0-2,0.2-2.7,0.6c-0.7,0.4-1.4,1-1.8,1.7s-0.8,1.5-1,2.4c-0.2,0.9-0.3,1.8-0.3,2.8c0,0.9,0.1,1.8,0.3,2.7
+			c0.2,0.9,0.6,1.6,1,2.3c0.5,0.7,1.1,1.2,1.8,1.7s1.7,0.6,2.7,0.6c1.5,0,2.6-0.4,3.4-1.3c0.8-0.9,1.3-2.1,1.5-3.5h4.6
+			c-0.1,1.4-0.4,2.6-0.9,3.7c-0.5,1.1-1.2,2-2,2.8c-0.8,0.8-1.8,1.4-2.9,1.8s-2.3,0.6-3.7,0.6c-1.7,0-3.1-0.3-4.5-0.9
+			c-1.3-0.6-2.4-1.4-3.3-2.4c-0.9-1-1.6-2.2-2.1-3.6s-0.7-2.8-0.7-4.4c0-1.6,0.2-3.1,0.7-4.5c0.5-1.4,1.2-2.6,2.1-3.6
+			c0.9-1,2-1.8,3.3-2.4c1.3-0.6,2.8-0.9,4.5-0.9c1.2,0,2.3,0.2,3.4,0.5c1.1,0.3,2,0.8,2.8,1.5c0.8,0.7,1.5,1.5,2.1,2.4
+			c0.5,1,0.9,2.1,1,3.3h-4.6C72.5,57.4,72.3,56.9,72,56.5z"/>
+		<path fill="#FFFFFF" d="M89.9,50.7c1.4,0,2.7,0.2,3.9,0.7c1.2,0.4,2.2,1.1,3.1,2s1.6,2,2.1,3.3c0.5,1.3,0.7,2.9,0.7,4.7
+			c0,1.6-0.2,3-0.6,4.4c-0.4,1.3-1,2.5-1.8,3.5c-0.8,1-1.8,1.7-3.1,2.3s-2.7,0.8-4.3,0.8h-9.3V50.7H89.9z M89.6,68.4
+			c0.7,0,1.4-0.1,2-0.3c0.6-0.2,1.2-0.6,1.7-1.1s0.9-1.2,1.2-2c0.3-0.8,0.5-1.8,0.5-3c0-1.1-0.1-2.1-0.3-3c-0.2-0.9-0.6-1.6-1-2.3
+			c-0.5-0.6-1.1-1.1-1.9-1.4c-0.8-0.3-1.8-0.5-3-0.5h-3.4v13.6H89.6z"/>
+	</g>
+</g>
+<path fill="#33342E" d="M69.2,25.5c-10.2-1.1-18.2,3.2-19.6,3.9l-4.2-7c0,0-8.6,18-10.8,21.8L57,41.8l-4.3-7.1c2.7-1.4,7.5-4,15.8-4
+	c10,0,13.2,5.9,14.3,15.5l1-0.4C83.8,45.9,85.5,27.3,69.2,25.5z"/>
+<path fill="#67C8F0" d="M67.2,22.5c-10.2-0.8-18.2,3.2-19.6,3.9l-4.2-7c0,0-8.6,18-10.8,21.8L55,38.8l-4.3-7.1c2.7-1.4,8.5-4,16.8-4
+	c10,0,15.2,9,15.2,18.5l1-0.4C83.8,45.9,85.3,24,67.2,22.5z"/>
+<path fill="#FFFFFF" d="M21.6,57.7l8.1,21.7h-5l-1.6-4.8H15l-1.7,4.8H8.5l8.2-21.7H21.6z M21.9,71l-2.7-8h-0.1l-2.8,8H21.9z"/>
+<path fill="#FFFFFF" d="M43.7,57.7c1,0,2,0.1,2.8,0.3c0.9,0.2,1.6,0.5,2.2,0.9c0.6,0.4,1.1,1,1.4,1.7c0.3,0.7,0.5,1.5,0.5,2.6
+	c0,1.1-0.2,2-0.7,2.7c-0.5,0.7-1.2,1.3-2.2,1.8c1.3,0.4,2.3,1.1,3,2c0.7,1,1,2.1,1,3.5c0,1.1-0.2,2-0.6,2.8s-1,1.5-1.7,2
+	c-0.7,0.5-1.5,0.9-2.5,1.1C46,79.3,45,79.4,44,79.4H33.5V57.7H43.7z M43.1,66.5c0.9,0,1.6-0.2,2.1-0.6c0.5-0.4,0.8-1.1,0.8-2
+	c0-0.5-0.1-0.9-0.3-1.2s-0.4-0.6-0.7-0.8c-0.3-0.2-0.7-0.3-1-0.4c-0.4-0.1-0.8-0.1-1.2-0.1h-4.5v5.1H43.1z M43.4,75.7
+	c0.5,0,0.9,0,1.3-0.1c0.4-0.1,0.8-0.2,1.1-0.5c0.3-0.2,0.6-0.5,0.8-0.9c0.2-0.4,0.3-0.8,0.3-1.4c0-1.1-0.3-1.9-0.9-2.4
+	c-0.6-0.5-1.5-0.7-2.5-0.7h-5.2v6H43.4z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down.png
new file mode 100644
index 0000000..a20fab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down_white.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down_white.png
new file mode 100644
index 0000000..4a1d133
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/ar_down_white.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/play.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/play.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/play.png
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/play.png
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/replay.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/replay.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/replay.png
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/replay.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/stop.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/stop.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/stop.png
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/stop.png
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html
new file mode 100644
index 0000000..1dd4865
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/index.html	
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script src="js/jquery-1.8.0.min.js"></script>
+        <script src="js/jquery-ui-1.8.23.custom.min.js"></script>        
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){  
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-1.8.0.min.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-1.8.0.min.js
new file mode 100644
index 0000000..066d72c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-1.8.0.min.js	
@@ -0,0 +1,2 @@
+/*! jQuery v at 1.8.0 jquery.com | jquery.org/license */
+(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bX(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bV.length;while(e--){b=bV[e]+c;if(b in a)return b}return d}function bY(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function bZ(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bY(c)&&(e[f]=p._data(c,"olddisplay",cb(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b$(a,b,c){var d=bO.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function b_(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bU[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bU[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bU[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bU[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bU[e]+"Width"))||0));return f}function ca(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bP.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+b_(a,b,c||(f?"border":"content"),e)+"px"}function cb(a){if(bR[a])return bR[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cz(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cu;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cz(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cz(a,c,d,e,"*",g)),h}function cA(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cB(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cC(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cK(){try{return new a.XMLHttpRequest}catch(b){}}function cL(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cT(){return setTimeout(function(){cM=b},0),cM=p.now()}function cU(a,b){p.each(b,function(b,c){var d=(cS[b]||[]).concat(cS["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cV(a,b,c){var d,e=0,f=0,g=cR.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cM||cT(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cM||cT(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cW(k,j.opts.specialEasing);for(;e<g;e++){d=cR[e].call(j,a,k,j.opts);if(d)return d}return cU(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cW(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cX(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bY(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cb(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cO.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cY(a,b,c,d,e){return new cY.prototype.init(a,b,c,d,e)}function cZ(a,b){var c,d={height:a},e=0;for(;e<4;e+=2-b)c=bU[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function c_(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=r.test(" ")?/^[\s\xA0]+|[\s\xA0]+$/g:/^\s+|\s+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,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(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":a.toString().replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.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=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||f.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete"||e.readyState!=="loading"&&e.addEventListener)setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){p.isFunction(c)&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")===0&&(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",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){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)(d=p._data(g[h],a+"queueHooks"))&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,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=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);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{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)~f.indexOf(" "+b[g]+" ")||(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._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,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.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,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.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,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.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):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.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;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,k,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=[].slice.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click")){g=p(this),g.context=this;for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){i={},k=[],g[0]=f;for(d=0;d<q;d++)l=o[d],m=l.selector,i[m]===b&&(i[m]=g.is(m)),i[m]&&k.push(l);k.length&&u.push({elem:f,matches:k})}}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){j=u[d],c.currentTarget=j.elem;for(e=0;e<j.matches.length&&!c.isImmediatePropagationStopped();e++){l=j.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,h=((p.event.special[l.origType]||{}).handle||l.handler).apply(j.elem,r),h!==b&&(c.result=h,h===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),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){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{ready:{setup:p.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(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(){return p.event.remove(this,"._change"),V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);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=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.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){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),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(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),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)}}),p.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){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)Z(a,b[e],c,d)}function be(a,b,c,d,e,f){var g,h=$.setFilters[b.toLowerCase()];return h||Z.error(b),(a||!(g=e))&&bd(a||"*",d,g=[],e),g.length>0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;a<c;a++)arguments[a]===b&&(g[a]=b)};for(;p<q;p++){s.exec(""),a=f[p],j=[],i=0,k=e;while(g=s.exec(a)){n=s.lastIndex=g.index+g[0].length;if(n>i){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="<a name='"+q+"'></a><div name='"+q+"'></div>",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},odd:function(a,b,c){var d=[],e=c?0:1,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},lt:function(a,b,c){return c?a.slice(+b):a.slice(0,+b)},gt:function(a,b,c){return c?a.slice(0,+b+1):a.slice(+b+1)},eq:function(a,b,c){var d=a.splice(+b,1);return c?a:d}}};$.setFilters.nth=$.setFilters.eq,$.filters=$.pseudos,X||($.attrHandle={href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}}),V&&($.order.push("NAME"),$.find.NAME=function(a,b){if(typeof b.getElementsByName!==j)return b.getElementsByName(a)}),Y&&($.order.splice(1,0,"CLASS"),$.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!==j&&!c)return b.getElementsByClassName(a)});try{n.call(i.childNodes,0)[0].nodeType}catch(_){n=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}var ba=Z.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},bb=Z.contains=i.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc=Z.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=bc(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=bc(b);return c};Z.attr=function(a,b){var c,d=ba(a);return d||(b=b.toLowerCase()),$.attrHandle[b]?$.attrHandle[b](a):U||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},Z.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},[0,0].sort(function(){return l=0}),i.compareDocumentPosition?e=function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:(e=function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],g=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return f(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)g.unshift(j),j=j.parentNode;c=e.length,d=g.length;for(var l=0;l<c&&l<d;l++)if(e[l]!==g[l])return f(e[l],g[l]);return l===c?f(a,g[l],-1):f(e[l],b,1)},f=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}),Z.uniqueSort=function(a){var b,c=1;if(e){k=l,a.sort(e);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1)}return a};var bl=Z.compile=function(a,b,c){var d,e,f,g=O[a];if(g&&g.context===b)return g;e=bg(a,b,c);for(f=0;d=e[f];f++)e[f]=bj(d,b,c);return g=O[a]=bk(e),g.context=b,g.runs=g.dirruns=0,P.push(a),P.length>$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j<k;j++){p=$.order[j];if(s=L[p].exec(m)){h=$.find[p]((s[1]||"").replace(K,""),q,g);if(h==null)continue;m===r&&(a=a.slice(0,a.length-r.length)+m.replace(L[p],""),a||o.apply(e,n.call(h,0)));break}}}if(a){i=bl(a,b,g),d=i.dirruns++,h==null&&(h=$.find.TAG("*",G.test(a)&&b.parentNode||b));for(j=0;l=h[j];j++)c=i.runs++,i(l,b)&&e.push(l)}return e};h.querySelectorAll&&function(){var a,b=bm,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[],f=[":active"],g=i.matchesSelector||i.mozMatchesSelector||i.webkitMatchesSelector||i.oMatchesSelector||i.msMatchesSelector;T(function(a){a.innerHTML="<select><option selected></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={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,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(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){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=(c[0]||c).ownerDocument||c[0]||c,typeof c.createDocumentFragment=="undefined"&&(c=e),a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cS[c]=cS[c]||[],cS[c].unshift(b)},prefilter:function(a,b){b?cR.unshift(a):cR.push(a)}}),p.Tween=cY,cY.prototype={constructor:cY,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cY.propHooks[this.prop];return a&&a.get?a.get(this):cY.propHooks._default.get(this)},run:function(a){var b,c=cY.propHooks[this.prop];return this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration),this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cY.propHooks._default.set(this),this}},cY.prototype.init.prototype=cY.prototype,cY.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cY.propHooks.scrollTop=cY.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(cZ(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bY).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cV(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cQ.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:cZ("show"),slideUp:cZ("hide"),slideToggle:cZ("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cY.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cN&&(cN=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cN),cN=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c$=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j,k,l,m=this[0],n=m&&m.ownerDocument;if(!n)return;return(e=n.body)===m?p.offset.bodyOffset(m):(d=n.documentElement,p.contains(d,m)?(c=m.getBoundingClientRect(),f=c_(n),g=d.clientTop||e.clientTop||0,h=d.clientLeft||e.clientLeft||0,i=f.pageYOffset||d.scrollTop,j=f.pageXOffset||d.scrollLeft,k=c.top+i-g,l=c.left+j-h,{top:k,left:l}):{top:0,left:0})},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-ui-1.8.23.custom.min.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-ui-1.8.23.custom.min.js
new file mode 100644
index 0000000..7835454
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/jquery-ui-1.8.23.custom.min.js	
@@ -0,0 +1,125 @@
+/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.core.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.23",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;return 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),/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("<a>").outerWidth(1).jquery||a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return 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)}),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){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):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"));c.offsetHeight,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.curCSS||(a.curCSS=a.css),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)return;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;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.widget.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),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;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?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)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),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}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),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]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.mouse.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;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)return b.preventDefault(),!0}return!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,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return 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)),!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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.position.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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;return 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],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)return;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)return;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];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),a.curCSS||(a.curCSS=a.css),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&&a.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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.draggable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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"))return;return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options;return this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(b),this.handle?(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")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this.helper.addClass("ui-draggable-dragging"),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(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!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)return this._mouseUp({}),!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";return a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!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);var d=this.element[0],e=!1;while(d&&(d=d.parentNode))d==document&&(e=!0);if(!e&&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 f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",b)!==!1&&f._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){return this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;return a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)}),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;return 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"),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){return d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),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.23"}),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)return;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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.droppable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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);return this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable"),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;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;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;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;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;return 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))return e=!0,!1}),e?!1: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)),this.element):!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.23"}),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();g:for(var h=0;h<d.length;h++){if(d[h].options.disabled||b&&!d[h].accept.call(d[h].element[0],b.currentItem||b.element))continue;for(var i=0;i<f.length;i++)if(f[i]==d[h].element[0]){d[h].proportions.height=0;continue g}d[h].visible=d[h].element.css("display")!="none";if(!d[h].visible)continue;e=="mousedown"&&d[h]._activate.call(d[h],c),d[h].offset=d[h].element.offset(),d[h].proportions={width:d[h].element[0].offsetWidth,height:d[h].element[0].offsetHeight}}},drop:function(b,c){var d=!1;return a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!this.options)return;!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))}),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)return;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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.resizable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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)&&(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>');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(){if(c.disabled)return;a(this).removeClass("ui-resizable-autohide"),b._handles.show()},function(){if(c.disabled)return;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()}return this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement),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}),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");return a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b),!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);return 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()),!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()}return a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!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;return 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)),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;return p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null),a},_proportionallyResize:function(){var b=this.options;if(!this._proportionallyResizeElements.length)return;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)e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0});else continue}},_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.23"}),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)})})};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,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){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)return;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/d.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*d.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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.selectable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(){return this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy(),this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(this.options.disabled)return;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");return 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}),!1}})},_mouseDrag:function(b){var c=this;this.dragged=!0;if(this.options.disabled)return;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}return 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])return;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})))}),!1},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;return 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(),!1}}),a.extend(a.ui.selectable,{version:"1.8.23"})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.sortable.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",ready:!1,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(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].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)return e=a(this),!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}return this.currentItem=e,this._removeCurrentsFromItems(),!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},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),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));return 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),!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}}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(!b)return;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)}return 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)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return 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+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),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=this.options.axis==="x"||a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=this.options.axis==="y"||a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return e?this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1):!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){return this._refreshItems(a),this.refreshPositions(),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&&this.ready)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];return e||(b.style.visibility="hidden"),b},update:function(a,b){if(e&&!d.forcePlaceholderSize)return;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)return;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.containers[d].floating?this.items[i].item.offset().left:this.items[i].item.offset().top;Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i],this.direction=j-h>0?"down":"up")}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;return 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()),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 this.fromOutside=!1,!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())}return this.fromOutside=!1,!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.23"})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.accordion.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(){if(c.disabled)return;a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){if(c.disabled)return;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");return(b.autoHeight||b.fillHeight)&&c.css("height",""),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)return;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()}return f?(a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus(),!1):!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];return this._clickHandler({target:b},b),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)return;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;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;if(this.running)return;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.23",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);return}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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.autocomplete.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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.isMultiLine=this.element.is("textarea"),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"))return;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._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);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(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),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,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):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;return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this._response())},_response:function(){var a=this,b=++c;return function(d){b===c&&a.__response(d),a.pending--,a.pending||a.element.removeClass("ui-autocomplete-loading")}},__response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close()},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){return b.length&&b[0].label&&b[0].value?b:a.map(b,function(b){return typeof b=="string"?{label:b,value:b}: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);return}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},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),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){if(!a(c.target).closest(".ui-menu-item a").length)return;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(){if(!this.active)return;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));return}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(),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:first")),this.activate(b,e)}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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.button.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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([]);return c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form})),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.element.propAttr("disabled",this.options.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.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){if(h.disabled)return;a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active")}).bind("mouseleave.button",function(){if(h.disabled)return;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(){if(f)return;b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){if(h.disabled)return;f=!1,d=a.pageX,e=a.pageY}).bind("mouseup.button",function(a){if(h.disabled)return;if(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);if(b==="disabled"){c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1);return}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);return}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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.dialog.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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};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||" ",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){return b.close(a),!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;return 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),a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1===c._trigger("beforeClose",b))return;return 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),c},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;return e.modal&&!b||!e.stack&&!e.modal?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),d)},open:function(){if(this._isOpen)return;var b=this,c=b.options,d=b.uiDialog;return 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)return;var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey)return d.focus(1),!1;if(b.target===d[0]&&b.shiftKey)return e.focus(1),!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"),b},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),f=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(f);a.each(d,function(a,b){if(a==="click")return;a in e?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||" "))}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.23",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");return b||(this.uuid+=1,b=this.uuid),"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()});return a.fn.bgiframe&&c.bgiframe(),this.instances.push(c),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;return 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),b<c?a(window).height()+"px":b+"px"):a(document).height()+"px"},width:function(){var b,c;return a.browser.msie?(b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),b<c?a(window).width()+"px":b+"px"):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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.slider.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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=a(this).data("index.ui-slider-handle"),f,g,h,i;if(b.options.disabled)return;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:d.preventDefault();if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),f=b._start(d,e);if(f===!1)return}}i=b.options.step,b.options.values&&b.options.values.length?g=h=b.values(e):g=h=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:h=b._valueMin();break;case a.ui.keyCode.END:h=b._valueMax();break;case a.ui.keyCode.PAGE_UP:h=b._trimAlignValue(g+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(g-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g===b._valueMax())return;h=b._trimAlignValue(g+i);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g===b._valueMin())return;h=b._trimAlignValue(g-i)}b._slide(d,e,h)}).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(){return 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(),this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;return c.disabled?!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),j===!1?!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,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return 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,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return 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,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),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);return}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);return}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;return a=this._trimAlignValue(a),a},_values:function(a){var b,c,d;if(arguments.length)return b=this.options.values[a],b=this._trimAlignValue(b),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;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),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.23"})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.tabs.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){function e(){return++c}function f(){return++d}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…</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)return e.selected=a,!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)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!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){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return 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),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);return 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])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return 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])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return 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])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return 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]))),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;return this.anchors.eq(a).trigger(this.options.event+".tabs"),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");return}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)}return 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"),this},abort:function(){return 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(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.23"}),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){e()}:function(a){a.clientX&&c.rotate(null)});return 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),this}})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.datepicker.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(function($,undefined){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>'))}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);if(!c.length)return;c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);if($.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])||!d.length)return;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 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 isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}$.extend($.ui,{datepicker:{version:"1.8.23"}});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){return extendRemove(this._defaults,a||{}),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=$([]);if(c.hasClass(this.markerClassName))return;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(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]),!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);if(c.hasClass(this.markerClassName))return;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;"/>'),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]}return 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),this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;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))return;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))return;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);return c&&!c.inline&&this._setDateFromField(c,b),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(d){$.datepicker.log(d)}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)return;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(){return e|=$(this).css("position")=="fixed",!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)),this._attachHandlers(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+(c?0:$(document).scrollLeft()),i=document.documentElement.clientHeight+(c?0:$(document).scrollTop());return 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),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))return;if(this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=function(){$.datepicker._tidyDialog(b)};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,e):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e),c||e(),this._datepickerShowing=!1;var f=this._get(b,"onClose");f&&f.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)return;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.closest("."+$.datepicker._triggerClass).length&&$.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]);if(this._isDisabledDatepicker(d[0]))return;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]))return;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();return b.setMonth(0),b.setDate(1),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;return c&&s++,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;return r+=f[0].length,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())return f=c[0],r+=d.length,!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;do{var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}while(!0)}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;return c&&m++,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;return c&&e++,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)return;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;return b.setDate(b.getDate()+a),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());return f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0)),this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){return a?(a.setHours(a.getHours()>12?a.getHours()+2:0),a):null},_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},_attachHandlers:function(a){var b=this._get(a,"stepMonths"),c="#"+a.id.replace(/\\\\/g,"\\");a.dpDiv.find("[data-handler]").map(function(){var a={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(c,-b,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(c,+b,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(c)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(c,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(c,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(c,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),a[this.getAttribute("data-handler")])})},_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" data-handler="prev" data-event="click" 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" data-handler="next" data-event="click" 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" data-handler="hide" data-event="click">'+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" data-handler="today" data-event="click">'+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?"":' data-handler="selectDay" data-event="click" data-month="'+Y.getMonth()+'" data-year="'+Y.getFullYear()+'"')+">"+(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}return 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,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" data-handler="selectMonth" data-event="change">';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" data-handler="selectYear" data-event="change">';for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}return l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>",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;return e=d&&e>d?d:e,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));return b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth())),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");return b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10),{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);return typeof a!="string"||a!="isDisabled"&&a!="getDate"&&a!="widget"?a=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b)):this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)}):$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.23",window["DP_jQuery_"+dpuuid]=$})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.progressbar.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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){return a===b?this._value():(this._setOption("value",a),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;return typeof a!="number"&&(a=0),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.23"})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.core.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+jQuery.effects||function(a,b){function c(b){var c;return b&&b.constructor==Array&&b.length==3?b:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))?[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))?[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:(c=/rgba\(0, 0, 0, 0\)/.exec(b))?e.transparent:e[a.trim(b).toLowerCase()]}function d(b,d){var e;do{e=(a.curCSS||a.css)(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}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 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 j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}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={};return 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,[b,c,d,e]}function l(b){return!b||typeof b=="number"||a.fx.speeds[b]?!0:typeof b=="string"&&!a.effects[b]?!0:!1}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){return a.isFunction(d)&&(e=d,d=null),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.23",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){return b=="toggle"&&(b=a.is(":hidden")?"show":"hide"),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;try{e.id}catch(f){e=document.body}return 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"})),d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;return b.parent().is(".ui-effects-wrapper")?(c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus(),c):b},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),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];return a.fx.off||!i?h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)}):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);return b[1].mode="show",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);return b[1].mode="hide",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);return c[1].mode="toggle",this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d}});var m={};a.each(["Quad","Cubic","Quart","Quint","Expo"],function(a,b){m[b]=function(b){return Math.pow(b,a+2)}}),a.extend(m,{Sine:function(a){return 1-Math.cos(a*Math.PI/2)},Circ:function(a){return 1-Math.sqrt(1-a*a)},Elastic:function(a){return a===0||a===1?a:-Math.pow(2,8*(a-1))*Math.sin(((a-1)*80-7.5)*Math.PI/15)},Back:function(a){return a*a*(3*a-2)},Bounce:function(a){var b,c=4;while(a<((b=Math.pow(2,--c))-1)/11);return 1/Math.pow(4,3-c)-7.5625*Math.pow((b*3-2)/22-a,2)}}),a.each(m,function(b,c){a.easing["easeIn"+b]=c,a.easing["easeOut"+b]=function(a){return 1-c(1-a)},a.easing["easeInOut"+b]=function(a){return a<.5?c(a*2)/2:c(a*-2+2)/-2+1}})}(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.blind.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.bounce.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(!0)/3:c.outerWidth(!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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.clip.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.drop.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(!0)/2:c.outerWidth(!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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.explode.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.fade.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.fold.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.highlight.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.pulsate.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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"),e=(b.options.times||5)*2-1,f=b.duration?b.duration/2:a.fx.speeds._default/2,g=c.is(":visible"),h=0;g||(c.css("opacity",0).show(),h=1),(d=="hide"&&g||d=="show"&&!g)&&e--;for(var i=0;i<e;i++)c.animate({opacity:h},f,b.options.easing),h=(h+1)%2;c.animate({opacity:h},f,b.options.easing,function(){h==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.scale.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(){var c=a(this);k&&a.effects.save(c,f);var d={height:c.height(),width:c.width()};c.from={height:d.height*q.from.y,width:d.width*q.from.x},c.to={height:d.height*q.to.y,width:d.width*q.to.x},q.from.y!=q.to.y&&(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&&(c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to)),c.css(c.from),c.animate(c.to,b.duration,b.options.easing,function(){k&&a.effects.restore(c,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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.shake.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.slide.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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(!0):c.outerWidth(!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 - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.effects.transfer.js
+* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */
+(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
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js
new file mode 100644
index 0000000..2aa2504
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/js/script.js	
@@ -0,0 +1,566 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Listen to the sound and make the correct word.", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    example: "example",
+    wgt_name: "Order letters",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2> Order letters </ h2> </p>" +
+"<p> <h3>Drag and drop labels in the correct order</h3> </p>" +
+"<p>  Listen to the audio file and drag and drop labels in the correct order. If the result is correct, the area turns in green. </p> "+
+
+"<p> You can also use this activity with numbers.</p>" +
+
+"<p>“Reload” button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> modify an exercise or to create a new one.</li> </ul>" +
+ "<p>To create a new exercise : </p>" +
+"<ul> <li> click on “New block”,</li>" +
+"<li>insert an instruction the field dragging an audio file from your library, </li>" +
+"<li>edit the text field “Enter your instruction here...”,</li>" +
+"<li>Write the desired word instead of “example”,</li>" +
+"<li>set the correct image of your activity clicking on the submit button “v” on the frame. </li> </ul>" +
+"<p> To replace an audio file, drag a new one from your library. </p>" +
+"<p> To delete a whole block, click on the cross on the left.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("ord_let","")){
+            var data = jQuery.parseJSON(sankore.preference("ord_let",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("ord_let_style","")){
+            changeStyle(sankore.preference("ord_let_style",""));
+            $("#style_select").val(sankore.preference("ord_let_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("ord_let_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            setTimeout('$("#wgt_display").trigger("click")', 10)
+            $("#wgt_edit").trigger("click");            
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_array = [];
+                    var ans_container = container.find(".audio_answer");
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".close_cont").remove();
+                    var answer = ans_container.text();
+                    ans_container.prev().val(answer)
+                    ans_container.remove();
+                    var ul_cont = $("<ul id='sortable' class='imgs_answers_gray'>").insertAfter(container.find(".sub_cont"));
+                    for(var j in answer){
+                        var tmp_letter = $("<li class='ui-state-default'>" + answer[j] + "</li>");
+                        tmp_array.push(tmp_letter);
+                    }                        
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(ul_cont);
+                    ul_cont.sortable({revert: true, placeholder: "highlight", update: checkResult});
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find("#sortable").removeClass("imgs_answers_red")
+                    .removeClass("imgs_answers_green")
+                    .addClass("imgs_answers_gray")
+                    .sortable("destroy");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");                    
+                    $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
+                    container.find("ul").remove();
+                });                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find("ul").next().val(); 
+            cont_obj.cur_answer = getAnswer($(this).find("ul"));
+            array_to_export.push(cont_obj);
+        });
+    }
+    if(window.sankore){
+        sankore.setPreference("ord_let", JSON.stringify(array_to_export));
+        sankore.setPreference("ord_let_locale", "en");
+    }
+    if($("#wgt_display").hasClass("selected")){
+        if(window.sankore)
+            sankore.setPreference("ord_let_state", "display");
+    }
+    else{
+        if(window.sankore)
+            sankore.setPreference("ord_let_state", "edit");
+    }
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){        
+        var tmp_array = [];
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
+        
+        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        var text = $("<div class='text_cont'>").appendTo(sub_container);
+        var audio_block = $("<div class='audio_block'>").appendTo(text);
+        $("<div class='play'>").appendTo(audio_block);
+        $("<div class='replay'>").appendTo(audio_block);
+        var source = $("<source/>").attr("src", data[i].audio);
+        var audio = $("<audio>").appendTo(audio_block);
+        audio.append(source);
+        $("<input type='hidden'/>").appendTo(audio_block);
+        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(container);
+        
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<li class='ui-state-default'>" + data[i].cur_answer[j] + "</li>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<li class='ui-state-default'>" + data[i].answer[j] + "</li>");                
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("ord_let_state","")){
+            if(sankore.preference("ord_let_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
+        for(j = 0; j<tmp_array.length;j++)
+            tmp_array[j].appendTo(imgs_container);
+        
+        imgs_container.sortable({revert: true, placeholder: "highlight"}).bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate") 
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "objects/beep.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(container);
+    
+    for(var j in sankoreLang.example){
+        var tmp_letter = $("<li class='ui-state-default'>" + sankoreLang.example[j] + "</li>");
+        tmp_array.push(tmp_letter);
+    } 
+    
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable({revert: true, placeholder: "highlight"}).bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+   
+    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);    
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    audio_block.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+    
+    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
+    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
+    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).next().val();
+    $(event.target).find("li.ui-state-default").each(function(){
+        str += $(this).text();
+    });
+    if(str == right_str)
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_red")
+        .addClass("imgs_answers_green");
+    else
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_green");
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){       
+            $(obj).find("audio").remove();
+            $(obj).find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", tmp);
+            var audio = $("<audio>").appendTo($(obj));
+            audio.append(source);            
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find("li.ui-state-default").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/index.html
new file mode 100644
index 0000000..1986d41
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.8.0.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.23.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..450caf6
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js	
@@ -0,0 +1,568 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    short_desc: "Ecoutez le son et replacez les lettres dans l'ordre.", 
+    add: "Nouveau bloc",
+    enter: "Saisir la consigne ici ...",
+    example: "exemple",
+    wgt_name: "Ordonner des lettres",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Ordonner des lettres</h2></p>"+
+    "<p><h3>Ordonner des lettres pour reconstituer un mot.</h3></p>"+
+
+    "<p>L’intégration d’un fichier son (facultatif) permet d’écouter le mot à reconstituer. Lorsque les lettres sont dans le bon ordre, l’interactivité se colore en vert.</p>"+
+
+    "<p>L’activité s’effectue par un glisser-déposer des étiquettes pour remettre les lettres en ordre.<b> NB : vous pouvez également utiliser cette activité avec des chiffres.</b></p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de déterminer le mot à reconstituer.</li></ul>"+
+ 
+    "<p>Pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
+    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir la consigne ici ...”,</li>"+
+    "<li>insérez un son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque (facultatif),</li>"+
+    "<li>écrivez le mot souhaité à la place de “exemple”.</li></ul>"+
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("ord_let","")){
+            var data = jQuery.parseJSON(sankore.preference("ord_let",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("ord_let_style","")){
+            changeStyle(sankore.preference("ord_let_style",""));
+            $("#style_select").val(sankore.preference("ord_let_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("ord_let_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            setTimeout('$("#wgt_display").trigger("click")', 10)
+            $("#wgt_edit").trigger("click");            
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_array = [];
+                    var ans_container = container.find(".audio_answer");
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".close_cont").remove();
+                    var answer = ans_container.text();
+                    ans_container.prev().val(answer)
+                    ans_container.remove();
+                    var ul_cont = $("<ul id='sortable' class='imgs_answers_gray'>").insertAfter(container.find(".sub_cont"));
+                    for(var j in answer){
+                        var tmp_letter = $("<li class='ui-state-default'>" + answer[j] + "</li>");
+                        tmp_array.push(tmp_letter);
+                    }                        
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(ul_cont);
+                    ul_cont.sortable({
+                        revert: true, 
+                        placeholder: "highlight", 
+                        update: checkResult
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find("#sortable").removeClass("imgs_answers_red")
+                    .removeClass("imgs_answers_green")
+                    .addClass("imgs_answers_gray")
+                    .sortable("destroy");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");                    
+                    $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
+                    container.find("ul").remove();
+                });                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";            
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find("ul").next().val(); 
+            cont_obj.cur_answer = getAnswer($(this).find("ul"));
+            array_to_export.push(cont_obj);
+        });
+    }
+    sankore.setPreference("ord_let", JSON.stringify(array_to_export));
+    sankore.setPreference("ord_let_locale", sankore.locale().substr(0,2));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("ord_let_state", "display");
+    else
+        sankore.setPreference("ord_let_state", "edit");
+}
+
+//import
+function importData(data){
+    var tmp_loc = sankore.preference("ord_let_locale","")
+    var tmp = 0;    
+    for(var i in data){        
+        var tmp_array = [];
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
+        
+        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        var text = $("<div class='text_cont'>").appendTo(sub_container);
+        var audio_block = $("<div class='audio_block'>").appendTo(text);
+        $("<div class='play'>").appendTo(audio_block);
+        $("<div class='replay'>").appendTo(audio_block);
+        var source = $("<source/>").attr("src",((tmp_loc != "en")?"":"../../") + data[i].audio);
+        var audio = $("<audio>").appendTo(audio_block);
+        audio.append(source);
+        $("<input type='hidden'/>").appendTo(audio_block);
+        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(container);
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<li class='ui-state-default'>" + data[i].cur_answer[j] + "</li>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<li class='ui-state-default'>" + data[i].answer[j] + "</li>");                
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("ord_let_state","")){
+            if(sankore.preference("ord_let_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
+        for(j = 0; j<tmp_array.length;j++)
+            tmp_array[j].appendTo(imgs_container);
+        
+        imgs_container.sortable({
+            revert: true, 
+            placeholder: "highlight"
+        }).bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate")
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "objects/exemple.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(container);
+    
+    for(var j in sankoreLang.example){
+        var tmp_letter = $("<li class='ui-state-default'>" + sankoreLang.example[j] + "</li>");
+        tmp_array.push(tmp_letter);
+    } 
+    
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable({
+        revert: true, 
+        placeholder: "highlight"
+    }).bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+   
+    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    audio_block.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+    
+    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
+    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
+    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).next().val();
+    $(event.target).find("li.ui-state-default").each(function(){
+        str += $(this).text();
+    });
+    if(str == right_str)
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_red")
+        .addClass("imgs_answers_green");
+    else
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_green");
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){            
+            $(obj).find("audio").remove();
+            $(obj).find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo($(obj));
+            audio.append(source);   
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find("li.ui-state-default").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/objects/exemple.mp3 b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/objects/exemple.mp3
new file mode 100644
index 0000000..6931ccf
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/fr/objects/exemple.mp3 differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/index.html
new file mode 100644
index 0000000..1986d41
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/index.html	
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.8.0.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.23.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>       
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..1a00bd2
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/js/script.js	
@@ -0,0 +1,548 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    short_desc: "Прослушайте звук и составьте корректное слово.", 
+    add: "Новый блок",
+    enter: "Введите описание ...",
+    example: "пример",
+    wgt_name: "Порядок букв",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//main function
+function start(){
+
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("ord_let","")){
+            var data = jQuery.parseJSON(sankore.preference("ord_let",""));
+            importData(data);
+        }
+        else 
+            showExample();
+        if(sankore.preference("ord_let_style","")){
+            changeStyle(sankore.preference("ord_let_style",""));
+            $("#style_select").val(sankore.preference("ord_let_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("ord_let_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            setTimeout('$("#wgt_display").trigger("click")', 10)
+            $("#wgt_edit").trigger("click");            
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    var tmp_array = [];
+                    var ans_container = container.find(".audio_answer");
+                    
+                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
+                    container.find(".audio_block").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop")
+                    container.find(".close_cont").remove();
+                    var answer = ans_container.text();
+                    ans_container.prev().val(answer)
+                    ans_container.remove();
+                    var ul_cont = $("<ul id='sortable' class='imgs_answers_gray'>").insertAfter(container.find(".sub_cont"));
+                    for(var j in answer){
+                        var tmp_letter = $("<li class='ui-state-default'>" + answer[j] + "</li>");
+                        tmp_array.push(tmp_letter);
+                    }                        
+                    tmp_array = shuffle(tmp_array);
+                    for(var i = 0; i<tmp_array.length;i++)
+                        tmp_array[i].appendTo(ul_cont);
+                    ul_cont.sortable({
+                        revert: true, 
+                        placeholder: "highlight", 
+                        update: checkResult
+                    });
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                $(".cont").each(function(){
+                    var container = $(this);
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find("#sortable").removeClass("imgs_answers_red")
+                    .removeClass("imgs_answers_green")
+                    .addClass("imgs_answers_gray")
+                    .sortable("destroy");
+                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");                    
+                    $("<div class='audio_answer' contenteditable>" + container.find("ul").next().val() + "</div>").appendTo(container);
+                    container.find("ul").remove();
+                });                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+        
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+        
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addImgBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        var i = 0;
+        var tmp_obj = $(this).parent().parent();        
+        $(this).parent().remove();        
+    });
+    
+    //correct image
+    $(".true_img").live("click",function(){        
+        $(this).parent().parent().find(".img_block").each(function(){
+            $(this).find("input").val(0);
+            var tmp_div = $(this).find(".false_img");
+            if(tmp_div)
+                tmp_div.removeClass("false_img").addClass("true_img");
+        })
+        $(this).parent().find("input").val(1);
+        $(this).removeClass("true_img").addClass("false_img");
+    });
+    
+    //wrong image
+    $(".false_img").live("click",function(){
+        $(this).parent().find("input").val(0);
+        $(this).removeClass("false_img").addClass("true_img");
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    if($("#wgt_edit").hasClass("selected")){
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";            
+            array_to_export.push(cont_obj);
+        });
+    } else {
+        $(".cont").each(function(){
+            var cont_obj = new Object();
+            cont_obj.text = $(this).find(".audio_desc").text();
+            cont_obj.audio = $(this).find("source").attr("src");
+            cont_obj.answer = $(this).find("ul").next().val(); 
+            cont_obj.cur_answer = getAnswer($(this).find("ul"));
+            array_to_export.push(cont_obj);
+        });
+    }
+    sankore.setPreference("ord_let", JSON.stringify(array_to_export));
+    sankore.setPreference("ord_let_locale", sankore.locale().substr(0,2));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("ord_let_state", "display");
+    else
+        sankore.setPreference("ord_let_state", "edit");
+}
+
+//import
+function importData(data){
+    var tmp_loc = sankore.preference("ord_let_locale","")
+    var tmp = 0;    
+    for(var i in data){        
+        var tmp_array = [];
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);   
+        
+        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
+        var text = $("<div class='text_cont'>").appendTo(sub_container);
+        var audio_block = $("<div class='audio_block'>").appendTo(text);
+        $("<div class='play'>").appendTo(audio_block);
+        $("<div class='replay'>").appendTo(audio_block);
+        var source = $("<source/>").attr("src",((tmp_loc != "en")?"":"../../") + data[i].audio);
+        var audio = $("<audio>").appendTo(audio_block);
+        audio.append(source);
+        $("<input type='hidden'/>").appendTo(audio_block);
+        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
+        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(container);
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<li class='ui-state-default'>" + data[i].cur_answer[j] + "</li>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<li class='ui-state-default'>" + data[i].answer[j] + "</li>");                
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("ord_let_state","")){
+            if(sankore.preference("ord_let_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
+        for(j = 0; j<tmp_array.length;j++)
+            tmp_array[j].appendTo(imgs_container);
+        
+        imgs_container.sortable({
+            revert: true, 
+            placeholder: "highlight"
+        }).bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate")
+    }
+}
+
+//example
+function showExample(){
+    
+    var tmp_array = [];    
+    var container = $("<div class='cont'>").appendTo("#data");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<ul id='sortable' class='imgs_answers_gray'>").appendTo(container);
+
+    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "objects/example.mp3");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
+    
+    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(container);
+    
+    for(var j in sankoreLang.example){
+        var tmp_letter = $("<li class='ui-state-default'>" + sankoreLang.example[j] + "</li>");
+        tmp_array.push(tmp_letter);
+    } 
+    
+    tmp_array = shuffle(tmp_array);
+    for(var i = 0; i<tmp_array.length;i++)
+        tmp_array[i].appendTo(imgs_container);
+    imgs_container.sortable({
+        revert: true, 
+        placeholder: "highlight"
+    }).bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+   
+    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont'>").appendTo(sub_container);
+    var audio_block = $("<div class='audio_block'>").appendTo(text);
+    audio_block.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
+    $("<div class='play'>").appendTo(audio_block);
+    $("<div class='replay'>").appendTo(audio_block);
+    var source = $("<source/>").attr("src", "");
+    var audio = $("<audio>").appendTo(audio_block);
+    audio.append(source);
+    $("<input type='hidden'/>").appendTo(audio_block);
+    $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
+    
+    var tmp_input = $("<input type='hidden' value=''/>").insertAfter(sub_container);
+    var close = $("<div class='close_cont'>").insertAfter(tmp_input);
+    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").insertAfter(close);
+    container.insertBefore($(".add_block"));
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+//shuffles an array
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+//check result
+function checkResult(event)
+{
+    var str = "";
+    var right_str = $(event.target).next().val();
+    $(event.target).find("li.ui-state-default").each(function(){
+        str += $(this).text();
+    });
+    if(str == right_str)
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_red")
+        .addClass("imgs_answers_green");
+    else
+        $(event.target).removeClass("imgs_answers_gray")
+        .removeClass("imgs_answers_green");
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropAudio(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){            
+            $(obj).find("audio").remove();
+            $(obj).find(":first-child").removeClass("stop").addClass("play");
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo($(obj));
+            audio.append(source);   
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find("li.ui-state-default").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
+if (window.widget) {
+    window.widget.onremove = function(){
+        $("audio").each(function(){
+            this.pause();
+            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
+        });
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/objects/example.mp3 b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/objects/example.mp3
new file mode 100644
index 0000000..4862c0b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/locales/ru/objects/example.mp3 differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.mp3 b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.mp3
new file mode 100644
index 0000000..4cb889a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.mp3 differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/objects/beep.wav b/Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.wav
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/objects/beep.wav
rename to Sankore-3.1/resources/library/interactivities/Ordre lettres.wgt/objects/beep.wav
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml
new file mode 100644
index 0000000..0c0cf70
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.example.net/widgets/helloworld" 
+        version="1.1"
+        width="850"
+        height="420" 
+	ub:resizable="true">
+		
+		<name>Words/Letters sortable</name>
+		<description>Sort the words/letters to make the right phrase/word.</description>
+		<preference name="skin"
+		            value="uniboard"/>
+		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/icon.svg
new file mode 100644
index 0000000..016e50a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/icon.svg	
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.334">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<path fill="#33342E" d="M69.9,28.5c-10.2-1.1-18.2,3.2-19.6,3.9l-4.2-7c0,0-8.6,18-10.8,21.8l22.5-2.4l-4.3-7.1
+	c2.7-1.4,7.5-4,15.8-4c10,0,13.2,5.9,14.3,15.5l1-0.4C84.5,48.9,86.3,30.3,69.9,28.5z"/>
+<path fill="#67C8F0" d="M67.9,25.5c-10.2-0.8-18.2,3.2-19.6,3.9l-4.2-7c0,0-8.6,18-10.8,21.8l22.5-2.4l-4.3-7.1
+	c2.7-1.4,8.5-4,16.8-4c10,0,15.2,9,15.2,18.5l1-0.4C84.5,48.9,86,27,67.9,25.5z"/>
+<rect x="10.5" y="59.5" fill="#FFFFFF" width="26.8" height="13.3"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="70.8" y="57.9" fill="#33342E"  a:adobe-opacity-share="0" width="29.2" height="13.3"/>
+	</g>
+	<g>
+		<rect x="68.8" y="54.9" fill="#FFFFFF" width="29.2" height="13.3"/>
+	</g>
+</g>
+<rect x="42.8" y="59.5" fill="#FFFFFF" width="13.4" height="13.3"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html
new file mode 100644
index 0000000..2b442a4
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/index.html	
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="styles/master.css">
+        <link rel="stylesheet" type="text/css" href="styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="scripts/template2.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                    modeView();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                if(window.sankore)
+                                    sankore.enableDropOnWidget(false);
+                                modeView();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/index.html
new file mode 100644
index 0000000..a1df831
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/index.html	
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="scripts/template2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){                
+                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                modeView();                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/scripts/template2.js
new file mode 100644
index 0000000..f0b20bf
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/fr/scripts/template2.js	
@@ -0,0 +1,435 @@
+
+/*
+	Sankore API
+*/
+
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    view: "Afficher", 
+    edit: "Modifier",
+    example: "Il*était*une*fois*...",
+    wgt_name: "Ordonner des mots",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Ordonner des mots</h2></p>"+
+    "<p><h3>Ordonner des mots pour reconstituer une phrase.</h3></p>"+
+
+    "<p>Des étiquettes avec des mots sont dans le désordre. Le but est de les remettre en ordre pour avoir un énoncé compréhensible et correct. Lorsque l’énoncé est en ordre, l’interactivité se colore en vert. L’activité s’effectue par un glisser-déposer des étiquettes pour remettre les mots en ordre.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de déterminer la phrase à reconstituer et les séparations dans l’énoncé.</li></ul>"+
+
+    "<p>Pour insérer du texte dans la zone, cliquez sur la zone et saisissez la phrase souhaitée. </p>"+
+    "<p>Pour ajouter des espaces dans la phrase, insérer une étoile * entre chaque mot. Votre texte sera séparé autant de fois qu’il y a d’étoiles.<b> NB : une (*) correspond à un espace. Ne pas en mettre ni au début ni à la fin de votre phrase.</b></p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité. </p>",
+    theme:"Thème"
+};
+
+var word = "";
+var curWord = "";
+
+if(window.sankore){
+    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
+    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
+} else {
+    word = sankoreLang.example;
+}
+
+// array of dom elements
+var letters = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+var min_view_width = 400;
+
+
+$(document).ready(function(){
+    if(window.sankore){
+        if(sankore.preference("ord_words_style","")){
+            changeStyle(sankore.preference("ord_words_style",""));
+        } else
+            changeStyle("3")
+    } else 
+        changeStyle("3")
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            // create new set of letters
+            var letters;
+            letters = shuffle( createWordLetters( word ) );
+    
+            for( i in letters ){
+                $("#mp_word").append( letters[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkWord
+                } );
+            } else $( "#mp_word" ).sortable();
+
+            // adjustWidth
+            var totalLettersWidth = 0;
+            for( i in letters ){
+                var currentWidth = $( letters[i] ).outerWidth( true );
+                totalLettersWidth += currentWidth;
+            }
+            totalLettersWidth += 1;
+
+            var width = Math.max(
+                totalLettersWidth,
+                min_view_width
+                );
+	
+            // shift the words to the right to center them
+            if( width > totalLettersWidth ){
+                $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+            }
+            else{
+                $( "#mp_word" ).css( "margin-left", 0 );
+            }
+        }
+    });    
+    
+})
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createWordLetters( word )
+{
+    var ch, el;
+    var letters = [];
+	
+    if( word.indexOf( '*' ) != -1 )
+    {
+        var tmp = word.split( '*' );
+        for( i in tmp )
+        {
+            ch = tmp[i];
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    else
+    {
+        for( var i = 0; i < word.length; i++ )
+        {
+            ch = word.charAt( i );
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    return letters;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+/*
+=====================
+checkWord
+=====================
+scans the letters and checks 
+if they are in the right order
+*/
+function checkWord()
+{	
+    var str = "";
+    $( "#mp_word .letter" ).each( function(){
+        str += $(this).text();
+    });
+    var w = word;
+    while( w.indexOf( '*' ) != -1 )
+    {
+        w = w.replace( '*', '' );
+    }
+    //alert(str + " | " + w)
+    if( str == w ){
+        $( "#mp_word .letter" ).addClass( "right" );
+    //message( "Right!" );
+    } else {
+        $( "#mp_word .letter" ).removeClass( "right" );
+    }
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        word = $( "#mp_word .wgt_cont" ).val();
+    }
+    
+    wgtState = false;
+	
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    // create new set of letters
+    var letters;
+    if(window.sankore && curWord && !editMode)
+        letters = createWordLetters( curWord );
+    else
+        letters = shuffle( createWordLetters( word ) );
+    
+    for( i in letters ){
+        $("#mp_word").append( letters[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkWord
+        } );
+    } else $( "#mp_word" ).sortable();
+
+    // adjustWidth
+    var totalLettersWidth = 0;
+    for( i in letters ){
+        var currentWidth = $( letters[i] ).outerWidth( true );
+        totalLettersWidth += currentWidth;
+    }
+    totalLettersWidth += 1;
+
+    var width = Math.max(
+        totalLettersWidth,
+        min_view_width
+        );
+	
+    // shift the words to the right to center them
+    if( width > totalLettersWidth ){
+        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+    }
+    else{
+        $( "#mp_word" ).css( "margin-left", 0 );
+    }
+	
+    checkWord();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+    $( "#mp_word").sortable( "destroy" );
+    $( "#mp_word").css( "margin-left", 0 ).empty().append('<textarea class="wgt_cont">'+word+'</textarea>');
+
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_words_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word .wgt_cont" ).val())
+        {
+            modeView();
+            var str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);           
+            modeEdit();
+        }
+        else{
+            str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);
+        }
+        sankore.setPreference("rightOrdWords", word);
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/index.html
new file mode 100644
index 0000000..e323447
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/index.html	
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="scripts/template2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){                
+                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                modeView();                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/scripts/template2.js
new file mode 100644
index 0000000..b7b0494
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/locales/ru/scripts/template2.js	
@@ -0,0 +1,421 @@
+
+/*
+	Sankore API
+*/
+
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    view: "Закрыть", 
+    edit: "Изменить",
+    example: "много*,*много*лет*назад*...",
+    wgt_name: "Порядок слов",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+var word = "";
+var curWord = "";
+
+if(window.sankore){
+    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
+    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
+} else {
+    word = sankoreLang.example;
+}
+
+// array of dom elements
+var letters = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+var min_view_width = 400;
+
+
+$(document).ready(function(){
+    if(window.sankore){
+        if(sankore.preference("ord_words_style","")){
+            changeStyle(sankore.preference("ord_words_style",""));
+        } else
+            changeStyle("3")
+    } else 
+        changeStyle("3")
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            // create new set of letters
+            var letters;
+            letters = shuffle( createWordLetters( word ) );
+    
+            for( i in letters ){
+                $("#mp_word").append( letters[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkWord
+                } );
+            } else $( "#mp_word" ).sortable();
+
+            // adjustWidth
+            var totalLettersWidth = 0;
+            for( i in letters ){
+                var currentWidth = $( letters[i] ).outerWidth( true );
+                totalLettersWidth += currentWidth;
+            }
+            totalLettersWidth += 1;
+
+            var width = Math.max(
+                totalLettersWidth,
+                min_view_width
+                );
+	
+            // shift the words to the right to center them
+            if( width > totalLettersWidth ){
+                $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+            }
+            else{
+                $( "#mp_word" ).css( "margin-left", 0 );
+            }
+        }
+    });    
+    
+})
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createWordLetters( word )
+{
+    var ch, el;
+    var letters = [];
+	
+    if( word.indexOf( '*' ) != -1 )
+    {
+        var tmp = word.split( '*' );
+        for( i in tmp )
+        {
+            ch = tmp[i];
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    else
+    {
+        for( var i = 0; i < word.length; i++ )
+        {
+            ch = word.charAt( i );
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    return letters;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+/*
+=====================
+checkWord
+=====================
+scans the letters and checks 
+if they are in the right order
+*/
+function checkWord()
+{	
+    var str = "";
+    $( "#mp_word .letter" ).each( function(){
+        str += $(this).text();
+    });
+    var w = word;
+    while( w.indexOf( '*' ) != -1 )
+    {
+        w = w.replace( '*', '' );
+    }
+    //alert(str + " | " + w)
+    if( str == w ){
+        $( "#mp_word .letter" ).addClass( "right" );
+    //message( "Right!" );
+    } else {
+        $( "#mp_word .letter" ).removeClass( "right" );
+    }
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        word = $( "#mp_word .wgt_cont" ).val();
+    }
+    
+    wgtState = false;
+	
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    // create new set of letters
+    var letters;
+    if(window.sankore && curWord && !editMode)
+        letters = createWordLetters( curWord );
+    else
+        letters = shuffle( createWordLetters( word ) );
+    
+    for( i in letters ){
+        $("#mp_word").append( letters[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkWord
+        } );
+    } else $( "#mp_word" ).sortable();
+
+    // adjustWidth
+    var totalLettersWidth = 0;
+    for( i in letters ){
+        var currentWidth = $( letters[i] ).outerWidth( true );
+        totalLettersWidth += currentWidth;
+    }
+    totalLettersWidth += 1;
+
+    var width = Math.max(
+        totalLettersWidth,
+        min_view_width
+        );
+	
+    // shift the words to the right to center them
+    if( width > totalLettersWidth ){
+        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+    }
+    else{
+        $( "#mp_word" ).css( "margin-left", 0 );
+    }
+	
+    checkWord();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+    $( "#mp_word").sortable( "destroy" );
+    $( "#mp_word").css( "margin-left", 0 ).empty().append('<textarea class="wgt_cont">'+word+'</textarea>');
+
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_words_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word .wgt_cont" ).val())
+        {
+            modeView();
+            var str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);           
+            modeEdit();
+        }
+        else{
+            str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);
+        }
+        sankore.setPreference("rightOrdWords", word);
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js
new file mode 100644
index 0000000..127157e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/scripts/template2.js	
@@ -0,0 +1,435 @@
+
+/*
+	Sankore API
+*/
+
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "a*long*,*long*time*ago*...",
+    wgt_name: "Order words",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Order words </h2> </p>" +
+"<p><h3>Order words to reconstruct a correct sentence</h3></p>" +
+
+"<p>The interactivity displays labels in a random order. Drag and drop words in correct order. If the result is correct, the area turns in green.</p> "+
+"<p>“Reload” button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none), </li>" +
+"<li> Determine the sentence and place separation between words. </li> </ul>" +
+
+ "<p>To create a new exercise : </p>" +
+"<ul><li>insert the desired sentence,</li>" +
+"<li> To add spaces in the sentence, insert “*” between each word. Do not place a star at the beginning or the end of your sentence.</li></ul>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+var word = "";
+var curWord = "";
+
+if(window.sankore){
+    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
+    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
+} else {
+    word = sankoreLang.example;
+}
+
+// array of dom elements
+var letters = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+var min_view_width = 400;
+
+
+$(document).ready(function(){
+    if(window.sankore){
+        if(sankore.preference("ord_words_style","")){
+            changeStyle(sankore.preference("ord_words_style",""));
+        } else
+            changeStyle("3")
+    } else 
+        changeStyle("3")
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            // create new set of letters
+            var letters;
+            letters = shuffle( createWordLetters( word ) );
+    
+            for( i in letters ){
+                $("#mp_word").append( letters[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkWord
+                } );
+            } else $( "#mp_word" ).sortable();
+
+            // adjustWidth
+            var totalLettersWidth = 0;
+            for( i in letters ){
+                var currentWidth = $( letters[i] ).outerWidth( true );
+                totalLettersWidth += currentWidth;
+            }
+            totalLettersWidth += 1;
+
+            var width = Math.max(
+                totalLettersWidth,
+                min_view_width
+                );
+	
+            // shift the words to the right to center them
+            if( width > totalLettersWidth ){
+                $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+            }
+            else{
+                $( "#mp_word" ).css( "margin-left", 0 );
+            }
+        }
+    });    
+    
+})
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createWordLetters( word )
+{
+    var ch, el;
+    var letters = [];
+	
+    if( word.indexOf( '*' ) != -1 )
+    {
+        var tmp = word.split( '*' );
+        for( i in tmp )
+        {
+            ch = tmp[i];
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    else
+    {
+        for( var i = 0; i < word.length; i++ )
+        {
+            ch = word.charAt( i );
+            el = document.createElement( "div" );
+            $(el).addClass( "letter" ).text( ch );
+            letters.push( el );
+        }
+    }
+    return letters;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+/*
+=====================
+checkWord
+=====================
+scans the letters and checks 
+if they are in the right order
+*/
+function checkWord()
+{	
+    var str = "";
+    $( "#mp_word .letter" ).each( function(){
+        str += $(this).text();
+    });
+    var w = word;
+    while( w.indexOf( '*' ) != -1 )
+    {
+        w = w.replace( '*', '' );
+    }
+    //alert(str + " | " + w)
+    if( str == w ){
+        $( "#mp_word .letter" ).addClass( "right" );
+    //message( "Right!" );
+    } else {
+        $( "#mp_word .letter" ).removeClass( "right" );
+    }
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        word = $( "#mp_word .wgt_cont" ).val();
+    }
+    
+    wgtState = false;
+	
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    // create new set of letters
+    var letters;
+    if(window.sankore && curWord && !editMode)
+        letters = createWordLetters( curWord );
+    else
+        letters = shuffle( createWordLetters( word ) );
+    
+    for( i in letters ){
+        $("#mp_word").append( letters[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkWord
+        } );
+    } else $( "#mp_word" ).sortable();
+
+    // adjustWidth
+    var totalLettersWidth = 0;
+    for( i in letters ){
+        var currentWidth = $( letters[i] ).outerWidth( true );
+        totalLettersWidth += currentWidth;
+    }
+    totalLettersWidth += 1;
+
+    var width = Math.max(
+        totalLettersWidth,
+        min_view_width
+        );
+	
+    // shift the words to the right to center them
+    if( width > totalLettersWidth ){
+        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
+    }
+    else{
+        $( "#mp_word" ).css( "margin-left", 0 );
+    }
+	
+    checkWord();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+    $( "#mp_word").sortable( "destroy" );
+    $( "#mp_word").css( "margin-left", 0 ).empty().append('<textarea class="wgt_cont">'+word+'</textarea>');
+
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_words_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word .wgt_cont" ).val())
+        {
+            modeView();
+            var str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);           
+            modeEdit();
+        }
+        else{
+            str = "";
+            $( "#mp_word .letter" ).each( function(){
+                str += $(this).text() + "*";
+            });        
+            str = str.substr(0, str.length - 1);        
+            sankore.setPreference("currentOrdWords", str);
+        }
+        sankore.setPreference("rightOrdWords", word);
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/master.css
new file mode 100644
index 0000000..a2855e8
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/master.css	
@@ -0,0 +1,15 @@
+h1{
+    font-size:18px;
+    margin-bottom:20px;
+    margin-top:0px;
+}
+#ub-widget{
+    width: 100%;
+    height: 100%;    
+    min-height: 200px;
+    overflow: auto;
+}
+
+.inputbox{
+    width:50px;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/of_puppets.css b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/of_puppets.css
new file mode 100644
index 0000000..e67f008
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre mots.wgt/styles/of_puppets.css	
@@ -0,0 +1,296 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.letter{
+    min-width: 30px; 
+    max-width: 600px;
+    height: 40px;
+    overflow: hidden;
+    border: solid 1px #ccc;
+    margin: 4px;
+    padding: 4px 10px;
+    float: left;
+    font: 28px tahoma;
+    text-align: center;
+    cursor: pointer;
+    background-color: #fff;
+}
+
+.right{
+    background-color: #cfb;
+}
+
+#mp_setup{
+    text-align: right;
+}
+
+#mp_img{
+    text-align: center;
+    padding: 40px;
+}
+
+#mp_word{
+    height: 60px;
+    text-align: center;
+}
+
+#mp_word .wgt_cont{
+    margin-top: 20px;
+    font: 32px tahoma;
+    letter-spacing: 0.1em;
+    width: 98%;
+    min-height: 200px;
+    resize: vertical;
+}
+
+#mp_msg{
+    position: absolute;
+    left: 120px; top: 160px;
+    background-color: #eee;
+    border: solid 1px #ddd;
+    width: 160px;
+    padding: 40px;
+    text-align: center;
+}
+
+/*new design*/
+
+.selected{
+
+}
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml
new file mode 100644
index 0000000..356b87b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.example.net/widgets/helloworld" 
+        version="1.0"
+        width="850"
+        height="400" 
+		ub:resizable="true">
+		
+		<name>Phrases sortable</name>
+		<description>Sort the phrases to make the right sentence.</description>
+		<preference name="skin"
+		            value="uniboard"/>
+		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/icon.svg
new file mode 100644
index 0000000..502b9a4
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/icon.svg	
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.334">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="38.3" y="69.8" fill="#33342E"  a:adobe-opacity-share="0" width="25.2" height="8"/>
+	</g>
+	<g>
+		<rect x="36.3" y="66.8" fill="#FFFFFF" width="25.2" height="8"/>
+	</g>
+</g>
+<rect x="14.7" y="47.9" fill="#FFFFFF" width="25.2" height="8"/>
+<rect x="44.4" y="47.9" fill="#FFFFFF" width="14.1" height="8"/>
+<rect x="64" y="47.9" fill="#FFFFFF" width="27.1" height="8"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="19.7" y="69.8" fill="#33342E"  a:adobe-opacity-share="0" width="10.2" height="8"/>
+	</g>
+	<g>
+		<rect x="17.7" y="66.8" fill="#FFFFFF" width="10.2" height="8"/>
+	</g>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="69" y="69.8" fill="#33342E"  a:adobe-opacity-share="0" width="27.1" height="8"/>
+	</g>
+	<g>
+		<rect x="67" y="66.8" fill="#FFFFFF" width="27.1" height="8"/>
+	</g>
+</g>
+<path fill="#33342E" d="M92.4,49.3C89,39.7,81.1,34.7,79.8,33.8l4.2-7c0,0-19.9,0.7-24.3,0.6l12.5,18.8l4.3-7.1
+	c2.5,1.8,7.5,5.7,11.3,13c4.6,8.9,4.4,15-4,19.4l1.6,0.4C85.6,71.9,98.4,66.3,92.4,49.3z"/>
+<path fill="#67C8F0" d="M92.4,45.3c-4-9.4-11.3-14.7-12.6-15.6l4.2-7c0,0-19.9,0.7-24.3,0.6l12.5,18.8l4.3-7.1
+	c2.5,1.8,8.3,5.3,11.3,13c3.8,9.7,2.6,17.1-4,23.4l1.6,0.4C85.6,71.9,99.5,62.1,92.4,45.3z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html
new file mode 100644
index 0000000..b733713
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/index.html	
@@ -0,0 +1,94 @@
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="styles/master.css">
+        <link rel="stylesheet" type="text/css" href="styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="scripts/template2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                    modeView();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                if(window.sankore)
+                                    sankore.enableDropOnWidget(false);
+                                modeView();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/index.html
new file mode 100644
index 0000000..9f04393
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/index.html	
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="script/template2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){          
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                modeView();
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/script/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/script/template2.js
new file mode 100644
index 0000000..bc8ce88
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/fr/script/template2.js	
@@ -0,0 +1,387 @@
+
+/*
+	Sankore API
+*/
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    view: "Afficher", 
+    edit: "Modifier",
+    example: "Cette phrase\nest un\nexemple",
+    wgt_name: "Ordonner des phrases",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Ordonner des phrases</h2></p>"+
+    "<p><h3>Ordonner des segments de phrases pour reconstituer le texte.</h3></p>"+
+
+    "<p>Des étiquettes avec des phrases sont dans le désordre. Le but est de les remettre en ordre pour avoir un texte compréhensible et correct. Lorsque le texte est en ordre, l’interactivité se colore en vert. L’activité s’effectue par un glisser-déposer des étiquettes pour remettre le texte en ordre.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet : </p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de déterminer le texte à reconstituer et le nombre de séparations dans l’énoncé.</li></ul>"+
+
+    "<p>Pour insérer du texte dans la zone, cliquez sur la zone et saisissez le texte souhaité.</p>"+
+    "<p>Pour ajouter des séparations dans l’énoncé, retournez à la ligne. Votre texte sera séparé lors d'un retour à la ligne.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme:"Thème"
+};
+
+var sentence = "";
+var curSentence = "";
+
+if(window.sankore){
+    sentence = (sankore.preference("rightOrdPhrases", ""))?sankore.preference("rightOrdPhrases", ""):sankoreLang.example;
+    curSentence = (sankore.preference("currentOrdPhrases", ""))?sankore.preference("currentOrdPhrases", ""):"";
+} else {
+    sentence = sankoreLang.example;
+}
+
+var doCheck = true;
+
+// array of dom elements
+var phrases = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+
+$(document).ready(function(){
+    if(window.sankore)
+        if(sankore.preference("ord_phrases_style","")){
+            changeStyle(sankore.preference("ord_phrases_style",""));
+            $("#style_select").val(sankore.preference("ord_phrases_style",""));
+        } else
+            changeStyle("3")
+        
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);    
+    
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {      
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            var phrases;
+            phrases = shuffle( createElements( sentence ) );
+    
+            for( i in phrases ){
+                $("#mp_word").append( phrases[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            $( "#mp_word" ).sortable();
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkSentence
+                } );
+            } else 
+                $( "#mp_word" ).sortable();
+        }
+    });
+    
+    
+})
+
+function str_replace( w, b, s ){
+    while( s.indexOf( w ) != -1 ){
+        s = s.replace( w, b );
+    }
+    return s;
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createElements( sentence )
+{
+    var el;
+    var elements = [];
+    var phrases = sentence.split( "\n" );
+	
+    for( i in phrases )
+    {
+        el = document.createElement( "div" );
+        $( el ).addClass( "phrase" ).text( phrases[i] );
+        elements.push( el );
+    }
+    return elements;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function checkSentence()
+{
+    if( !doCheck )
+        return;
+		
+    var ph = [];
+    $( "#mp_word .phrase" ).each( function()
+    {
+        ph.push( $( this ).text() );
+    });
+    if( ph.join( "\n" ) == str_replace( "\r", "", sentence ) ){
+        $( "#mp_word .phrase" ).addClass( "right" );
+    } else {
+        $( "#mp_word .phrase" ).removeClass( "right" );
+    }
+}
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        sentence = str_replace( "\r", "", $( "#mp_word textarea" ).attr( "value" ) );
+        var p = sentence.split( "\n" );
+        var p2 = [];
+        var t;
+        for( var i in p )
+        {
+            t = jQuery.trim( p[i] );
+            if( t ) p2.push( t );
+        }
+        sentence = p2.join( "\n" );
+    }
+	
+    wgtState = false;
+    
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    var phrases;
+    // create new set of elements
+    if(window.sankore && curSentence && !editMode)
+        phrases = createElements( curSentence );
+    else
+        phrases = shuffle( createElements( sentence ) );
+    
+    for( i in phrases ){
+        $("#mp_word").append( phrases[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    $( "#mp_word" ).sortable();
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkSentence
+        } );
+    } else 
+        $( "#mp_word" ).sortable();
+    
+    checkSentence();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+
+    $( "#mp_word").css( "margin-left", 0 ).empty()
+    .append('<textarea cols="50" rows="5">'+sentence+'</textarea>');
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_phrases_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word textarea" ).val())
+        {
+            modeView();
+            var ph = [];
+            $( "#mp_word .phrase" ).each( function()
+            {
+                ph.push( $( this ).text() );
+            });	
+            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));            
+            modeEdit();
+        }
+        else{
+            ph = [];
+            $( "#mp_word .phrase" ).each( function()
+            {
+                ph.push( $( this ).text() );
+            });		
+            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));
+        }
+        sankore.setPreference("rightOrdPhrases", sentence);
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/index.html
new file mode 100644
index 0000000..9f04393
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/index.html	
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="script/template2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){          
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
+                modeView();
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/script/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/script/template2.js
new file mode 100644
index 0000000..398d9fa
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/locales/ru/script/template2.js	
@@ -0,0 +1,373 @@
+
+/*
+	Sankore API
+*/
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    edit: "Изменить",
+    view: "Закрыть",
+    example: "это\nпример\nпредложения",
+    wgt_name: "Порядок фраз",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+}
+
+var sentence = "";
+var curSentence = "";
+
+if(window.sankore){
+    sentence = (sankore.preference("rightOrdPhrases", ""))?sankore.preference("rightOrdPhrases", ""):sankoreLang.example;
+    curSentence = (sankore.preference("currentOrdPhrases", ""))?sankore.preference("currentOrdPhrases", ""):"";
+} else {
+    sentence = sankoreLang.example;
+}
+
+var doCheck = true;
+
+// array of dom elements
+var phrases = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+
+$(document).ready(function(){
+    if(window.sankore)
+        if(sankore.preference("ord_phrases_style","")){
+            changeStyle(sankore.preference("ord_phrases_style",""));
+            $("#style_select").val(sankore.preference("ord_phrases_style",""));
+        } else
+            changeStyle("3")
+        
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);    
+    
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {      
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            var phrases;
+            phrases = shuffle( createElements( sentence ) );
+    
+            for( i in phrases ){
+                $("#mp_word").append( phrases[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            $( "#mp_word" ).sortable();
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkSentence
+                } );
+            } else 
+                $( "#mp_word" ).sortable();
+        }
+    });
+    
+    
+})
+
+function str_replace( w, b, s ){
+    while( s.indexOf( w ) != -1 ){
+        s = s.replace( w, b );
+    }
+    return s;
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createElements( sentence )
+{
+    var el;
+    var elements = [];
+    var phrases = sentence.split( "\n" );
+	
+    for( i in phrases )
+    {
+        el = document.createElement( "div" );
+        $( el ).addClass( "phrase" ).text( phrases[i] );
+        elements.push( el );
+    }
+    return elements;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function checkSentence()
+{
+    if( !doCheck )
+        return;
+		
+    var ph = [];
+    $( "#mp_word .phrase" ).each( function()
+    {
+        ph.push( $( this ).text() );
+    });
+    if( ph.join( "\n" ) == str_replace( "\r", "", sentence ) ){
+        $( "#mp_word .phrase" ).addClass( "right" );
+    } else {
+        $( "#mp_word .phrase" ).removeClass( "right" );
+    }
+}
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        sentence = str_replace( "\r", "", $( "#mp_word textarea" ).attr( "value" ) );
+        var p = sentence.split( "\n" );
+        var p2 = [];
+        var t;
+        for( var i in p )
+        {
+            t = jQuery.trim( p[i] );
+            if( t ) p2.push( t );
+        }
+        sentence = p2.join( "\n" );
+    }
+	
+    wgtState = false;
+    
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    var phrases;
+    // create new set of elements
+    if(window.sankore && curSentence && !editMode)
+        phrases = createElements( curSentence );
+    else
+        phrases = shuffle( createElements( sentence ) );
+    
+    for( i in phrases ){
+        $("#mp_word").append( phrases[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    $( "#mp_word" ).sortable();
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkSentence
+        } );
+    } else 
+        $( "#mp_word" ).sortable();
+    
+    checkSentence();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+
+    $( "#mp_word").css( "margin-left", 0 ).empty()
+    .append('<textarea cols="50" rows="5">'+sentence+'</textarea>');
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_phrases_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word textarea" ).val())
+        {
+            modeView();
+            var ph = [];
+            $( "#mp_word .phrase" ).each( function()
+            {
+                ph.push( $( this ).text() );
+            });	
+            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));            
+            modeEdit();
+        }
+        else{
+            ph = [];
+            $( "#mp_word .phrase" ).each( function()
+            {
+                ph.push( $( this ).text() );
+            });		
+            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));
+        }
+        sankore.setPreference("rightOrdPhrases", sentence);
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/template2.js
new file mode 100644
index 0000000..7077b2b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/scripts/template2.js	
@@ -0,0 +1,389 @@
+
+/*
+	Sankore API
+*/
+
+function startEditing()
+{
+    modeEdit();
+}
+
+function stopEditing()
+{
+    modeView();
+}
+
+function initialize()
+{
+	
+}
+
+function checkResponse()
+{
+    checkWord();
+}
+/*
+	/ END sankore api
+*/
+
+var sankoreLang = {
+    edit: "Edit",
+    view: "Display",
+    example: "this is\nan example\nsentence",
+    wgt_name: "Order sentences",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2> Order sentences</h2></p>" +
+"<p><h3> Order fragments of the sentence to reconstruct the text.</h3> </p>" +
+"<p>The interactivity displays labels in a random order. Drag and drop fragments in correct order. If the result is correct, the area turns in green.</p> "+
+
+"<p>“Reload “button resets the exercises. </p>" +
+
+"<p> Enter the “Edit” mode to : </p>" +
+"<ul> <li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li>determine the text and fragments. </li></ul>" +
+
+"<p>To create a new exercise : </p>" +
+"<ul><li>insert the desired text in the text field,</li>" +
+"<li>create fragments adding a new line.</li></ul> "+
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+}
+
+
+var sentence = "";
+var curSentence = "";
+
+if(window.sankore){
+    sentence = (sankore.preference("rightOrdPhrases", ""))?sankore.preference("rightOrdPhrases", ""):sankoreLang.example;
+    curSentence = (sankore.preference("currentOrdPhrases", ""))?sankore.preference("currentOrdPhrases", ""):"";
+} else {
+    sentence = sankoreLang.example;
+}
+
+var doCheck = true;
+
+// array of dom elements
+var phrases = [];
+
+var editMode = false; // just a flag
+
+var wgtState = false; // just another flag
+
+// if use the "edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+// hardcoded parameters, not very good
+var input_width = 606;
+var widget_padding = 0;
+
+$(document).ready(function(){
+    if(window.sankore)
+        if(sankore.preference("ord_phrases_style","")){
+            changeStyle(sankore.preference("ord_phrases_style",""));
+            $("#style_select").val(sankore.preference("ord_phrases_style",""));
+        } else
+            changeStyle("3")
+        
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);    
+    
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {      
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if(wgtState)
+            $("#wgt_display").trigger("click");
+        else
+        {
+            $( "#mp_word" ).empty();
+	
+            var phrases;
+            phrases = shuffle( createElements( sentence ) );
+    
+            for( i in phrases ){
+                $("#mp_word").append( phrases[i] );
+            }
+	
+            // in sankore api there would be a function to check 
+            // the answer, so no update parameter would be needed
+            $( "#mp_word" ).sortable();
+            if( !isSankore ){
+                $( "#mp_word" ).sortable( {
+                    update: checkSentence
+                } );
+            } else 
+                $( "#mp_word" ).sortable();
+        }
+    });
+    
+    
+})
+
+function str_replace( w, b, s ){
+    while( s.indexOf( w ) != -1 ){
+        s = s.replace( w, b );
+    }
+    return s;
+}
+
+/*
+==============
+shuffle
+==============
+shuffles an array
+*/
+function shuffle( arr )
+{
+    var pos, tmp;
+	
+    for( var i = 0; i < arr.length; i++ )
+    {
+        pos = Math.round( Math.random() * ( arr.length - 1 ) );
+        tmp = arr[pos];
+        arr[pos] = arr[i];
+        arr[i] = tmp;
+    }
+    return arr;
+}
+
+/*
+=================
+createWordLetters
+=================
+returns array of dom elements
+*/
+function createElements( sentence )
+{
+    var el;
+    var elements = [];
+    var phrases = sentence.split( "\n" );
+	
+    for( i in phrases )
+    {
+        el = document.createElement( "div" );
+        $( el ).addClass( "phrase" ).text( phrases[i] );
+        elements.push( el );
+    }
+    return elements;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select option:first").attr('selected',true);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:first").next().attr('selected',true);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select option:last").attr('selected',true);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function checkSentence()
+{
+    if( !doCheck )
+        return;
+		
+    var ph = [];
+    $( "#mp_word .phrase" ).each( function()
+    {
+        ph.push( $( this ).text() );
+    });
+    if( ph.join( "\n" ) == str_replace( "\r", "", sentence ) ){
+        $( "#mp_word .phrase" ).addClass( "right" );
+    } else {
+        $( "#mp_word .phrase" ).removeClass( "right" );
+    }
+}
+
+/*
+==================
+modeView()
+==================
+turns the widget into the view mode
+*/
+function modeView()
+{
+    if( editMode ){
+        sentence = str_replace( "\r", "", $( "#mp_word textarea" ).attr( "value" ) );
+        var p = sentence.split( "\n" );
+        var p2 = [];
+        var t;
+        for( var i in p )
+        {
+            t = jQuery.trim( p[i] );
+            if( t ) p2.push( t );
+        }
+        sentence = p2.join( "\n" );
+    }
+	
+    wgtState = false;
+    
+    // clean the previous word
+    $( "#mp_word" ).empty();
+	
+    var phrases;
+    // create new set of elements
+    if(window.sankore && curSentence && !editMode)
+        phrases = createElements( curSentence );
+    else
+        phrases = shuffle( createElements( sentence ) );
+    
+    for( i in phrases ){
+        $("#mp_word").append( phrases[i] );
+    }
+	
+    // in sankore api there would be a function to check 
+    // the answer, so no update parameter would be needed
+    $( "#mp_word" ).sortable();
+    if( !isSankore ){
+        $( "#mp_word" ).sortable( {
+            update: checkSentence
+        } );
+    } else 
+        $( "#mp_word" ).sortable();
+    
+    checkSentence();
+}
+
+/*
+================
+modeEdit
+================
+*/
+function modeEdit()
+{
+    editMode = true;
+    wgtState = true;
+
+    $( "#mp_word").css( "margin-left", 0 ).empty()
+    .append('<textarea cols="50" rows="5">'+sentence+'</textarea>');
+}
+
+if (window.widget) {
+    window.widget.onleave = function(){
+        sankore.setPreference("ord_phrases_style", $("#style_select").find("option:selected").val());
+        if($( "#mp_word textarea" ).val())
+        {
+            modeView();
+            var ph = [];
+            $( "#mp_word .phrase" ).each( function()
+            {
+                ph.push( $( this ).text() );
+            });	
+            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));            
+            modeEdit();
+        }
+        else{
+            ph = [];
+            $( "#mp_word .phrase" ).each( function()
+            {
+                ph.push( $( this ).text() );
+            });		
+            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));
+        }
+        sankore.setPreference("rightOrdPhrases", sentence);
+    }
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/master.css
new file mode 100644
index 0000000..563affc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/master.css	
@@ -0,0 +1,15 @@
+h1{
+    font-size:18px;
+    margin-bottom:20px;
+    margin-top:0px;
+}
+#ub-widget{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+.inputbox{
+    width:50px;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/of_puppets.css b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/of_puppets.css
new file mode 100644
index 0000000..06f0d0e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Ordre phrase.wgt/styles/of_puppets.css	
@@ -0,0 +1,305 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.letter{
+    min-width: 30px; height: 40px;
+    border: solid 1px #ccc;
+    margin: 4px;
+    padding: 4px 10px;
+
+    float: left;
+    font: 28px tahoma;
+    text-align: center;
+    cursor: pointer;
+    text-transform: uppercase;
+    background-color: #fff;
+}
+.phrase{
+    min-height: 40px;
+    border: solid 1px #ccc;
+    margin: 4px;
+    padding: 4px 10px;
+    background-color: #fff;
+    font: 28px tahoma;
+    text-align: center;
+    cursor: pointer;
+    overflow: hidden;
+}
+
+.right{
+    background-color: #cfb;
+}
+
+textarea{
+    font: 32px tahoma;
+    letter-spacing: 0.1em;
+    width: 98%;
+    min-height: 200px;
+    resize: vertical;
+}
+
+
+#mp_setup{
+    text-align: right;
+}
+
+#mp_word{
+
+}
+
+#mp_word input{
+    font: 32px tahoma;
+    letter-spacing: 0.1em;
+    width: 600px;
+}
+
+#mp_msg{
+    position: absolute;
+    left: 120px; top: 160px;
+    background-color: #eee;
+    border: solid 1px #ddd;
+    width: 160px;
+    padding: 40px;
+    text-align: center;
+}
+/*new design*/
+
+.selected{
+
+}
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml
new file mode 100644
index 0000000..a7ce92c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://uniboard.mnemis.com/widgets/notes" 
+        version="1.2"
+        width="950"
+        height="600" 
+        ub:resizable="true">     
+   
+		<name>Notes</name>
+		<author href="http://www.getuniboard.com"
+	            email="info at mnemis.com">Mnemis SA</author>
+		<description>Ordonner des images</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/css/basic.css
new file mode 100644
index 0000000..8444c1b
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/css/basic.css
@@ -0,0 +1,470 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+.toggle_mode{
+    width: 100%;
+    height: 25px;
+    border-bottom: 1px solid black;
+    background-color: #ccc;
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 2;
+}
+
+#display_img, #edit_img{
+    width: 15px;
+    height: 15px;
+    margin: 5px 10px;
+}
+
+#display_text, #edit_text{
+    height: 19px;
+    padding: 3px 0 0 0;
+}
+
+.selected{
+
+}
+
+#display:hover, #edit:hover{
+    background-color: #999;
+}
+
+.cont{
+    width: 100%;
+    border-bottom: 1px solid black;
+    margin: 0;
+    padding: 0;
+    position: relative;
+}
+
+.sub_cont{
+    width: 100%;
+    padding: 0;
+    margin: 20px 0 0 0;
+    min-height: 60px;
+}
+
+.imgs_cont{
+    width: 100%;
+    margin: 0;
+}
+
+.number_cont{
+    width: 40px;
+    height: 33px;
+    margin-left: 40px;
+    margin-right: 10px;
+    background-image: url(../img/circle.png);
+    background-repeat: no-repeat;
+    text-align: center;
+    float: left;
+    font-size: 130%;
+    padding-top: 7px;
+    font-weight: bold;
+}
+
+.text_cont{
+    width: 80%;
+    min-height: 40px;
+    max-height: 60px;
+    float: right;
+    overflow-x: hidden;
+    background-color: #ccc;
+    border-top-left-radius: 10px;
+    border-bottom-left-radius: 10px;
+    padding-left: 10px; 
+    display: block;
+    word-break: break-all;
+}
+
+.close_cont{
+    width: 20px;
+    height: 20px;
+    background-image: url(../img/close_cont.png);
+    cursor: pointer;
+    position: absolute;
+    top: -15px;
+    left: 5px;
+}
+
+.add_img{
+    width: 120px;
+    height: 120px;
+    margin: 10px 20px;
+    background-image: url(../img/add_text.png);
+    background-position: center;
+    background-repeat: no-repeat;
+    cursor: pointer;
+    float: left;
+    display: inline-block;
+}
+
+.img_block{
+    display: inline-block;
+}
+
+.img_block, .text_block{
+    width: 120px;
+    height: 119px;
+    max-height: 120px;
+    margin: 10px 20px;
+    cursor: pointer;
+    float: left;
+    position: relative;
+    border: 1px solid #ccc;
+    -moz-box-shadow: #ccc -1px 0 4px;
+    -webkit-box-shadow: #ccc -1px 0 4px;
+    box-shadow: #ccc -1px 0 4px;    
+}
+
+.text_block{    
+    display: table;
+    text-align: center;
+    background-color: white;
+}
+
+.audio_block{
+    width: 120px;
+    height: 30px;
+    margin: 44px 5px;
+    position: relative;
+    float: left;
+    display: inline-block;
+}
+
+.text_subblock{
+    max-height: 120px;
+    min-width: 116px;
+    max-width: 200px;
+    display: table-cell;
+    vertical-align: middle;
+    font-size: 120%;
+    word-wrap: break-word;
+}
+
+.close_img, .clear_img, .numb_img {
+    width: 30px;
+    height: 30px;    
+    background-repeat: no-repeat;
+    position: absolute;    
+    right: -15px;
+    cursor: pointer;
+}
+
+.close_img{
+    background-image: url(../img/close_img.png);
+    top: -15px;
+}
+
+.clear_img{
+    background-image: url(../img/clear_img.png);
+    top: 15px;
+}
+
+.numb_img{
+    background-image: url(../img/numb_img.png); 
+    left: -15px;
+    top: -15px;
+    color: white;
+    font-weight: bold;
+    font-size: 130%;
+}
+
+.add_block{
+    margin: 20px 0 0 20px;
+    width: 110px;
+    height: 25px;
+    background-image: url(../img/add_block.png);
+    background-repeat: no-repeat;
+    padding-left: 40px;
+    padding-top: 5px;
+    cursor: pointer;
+    background-color: #ccc;
+    -webkit-border-radius: 15px;
+    border-radius: 15px;    
+}
+
+.ch_box{
+    margin: 0;
+    padding: 0;
+    position: absolute;
+    bottom: 0;
+    right: 0;
+}
+
+.right{
+    background-color: #9f9;
+}
+
+.clear{
+    clear: both;
+}
+
+.over{
+    background-color: #ccc;
+}
+
+.play, .stop{
+    height: 30px;
+    width: 70px;    
+    float: left;
+    cursor: pointer;
+}
+
+.play{
+    background-image: url(../img/play.png);
+}
+
+.stop{
+    background-image: url(../img/stop.png);
+}
+
+.replay{
+    height: 30px;
+    width: 32px;
+    margin-left: 10px;
+    float: left;
+    background-image: url(../img/replay.png);
+    background-repeat: no-repeat;
+    cursor: pointer;
+}
+
+/*new design*/
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/icon.svg
new file mode 100644
index 0000000..af0d41e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/icon.svg
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.6655" y1="0" x2="53.6655" y2="107.3335">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<circle fill="#FFFFFF" cx="30.8" cy="75.7" r="8.4"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<circle fill="#33342E"  a:adobe-opacity-share="0" cx="79.8" cy="78.7" r="12.9"/>
+	</g>
+	<g>
+		<circle fill="#FFFFFF" cx="77.8" cy="75.7" r="12.9"/>
+	</g>
+</g>
+<circle fill="#67C8F0" cx="77.8" cy="75.7" r="4.7"/>
+<path fill="#67C8F0" d="M77.8,88.9c-7.2,0-13.1-5.9-13.1-13.1s5.9-13.1,13.1-13.1c7.2,0,13.1,5.9,13.1,13.1S85.1,88.9,77.8,88.9z
+	 M77.8,66.6c-5,0-9.1,4.1-9.1,9.1s4.1,9.1,9.1,9.1c5,0,9.1-4.1,9.1-9.1S82.9,66.6,77.8,66.6z"/>
+<g>
+	<rect x="9.4" y="20.4" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+	<g id="PfcyK0_2_">
+		<g>
+			<g>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M48.5,31.2c-7.5-0.8-14.2,1.4-21.8,1.4c-0.3,0-0.6,0-0.9,0C22,32,18.6,31.1,14.5,31
+					c-0.7-0.2-1.8,0-2.6-0.1c0-2.7,0-5.4,0-8.1c12.2,0,24.4,0,36.6,0C48.5,25.6,48.5,28.4,48.5,31.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M11.8,31C11.8,30.9,11.8,30.9,11.8,31c0.9,0,1.9-0.2,2.6,0C13.6,31,12.7,31,11.8,31
+					z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M25.7,32.6c0.3,0,0.6,0,0.9,0C26.5,32.7,25.9,32.7,25.7,32.6z"/>
+				<path fill-rule="evenodd" fill="#9CD1EA" d="M28.7,36.2c6.6,0,13,0,19.7,0c0,1.3,0,2.7,0,4c-0.6-0.2-1.1,0.1-1.7-0.4
+					c-0.5,0.2-0.6,0.4-1.3,0.2c-0.2-0.2-0.9-0.1-1.1,0c-1.1,0.3-2.4,0-3.2-0.4c-0.3-0.1-0.1,0.3-0.4,0.2c-2.3-0.5-4.4-1.1-7.2-1.1
+					c-0.2-0.2-0.7,0-1-0.1c-3.4-0.3-6.8-0.6-9.5-1.5c-0.7-0.1-1.4-0.3-2.2-0.2c-0.2-0.2-0.7,0-1-0.1c-1.2,0.1-2.1-0.1-3-0.4
+					c0.8-0.2,1.9,0.2,2.7,0c0.3,0.1,1.2,0.1,1.5,0c0.2,0,0.3,0,0.5-0.1c0.3,0,0.6,0,0.9,0c0.1,0,0.1,0,0.2,0c0.6,0.1,1.6,0.1,2.2,0
+					c0.6,0,1.2-0.1,1.8-0.1c0.3,0,0.9,0.1,1.1-0.1c0.1,0,0.1,0,0.2,0C28.1,36.3,28.6,36.4,28.7,36.2z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M27.9,36.3c0.1-0.2,0.6,0,0.9-0.1C28.6,36.4,28.1,36.3,27.9,36.3z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M26.5,36.4c0.2-0.2,0.8,0,1.1-0.1C27.4,36.5,26.9,36.3,26.5,36.4z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M21.5,36.5c0.1-0.1,0.8-0.1,0.9,0C22.1,36.5,21.8,36.5,21.5,36.5z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M22.6,36.5c0.7,0,1.5,0,2.2,0C24.2,36.7,23.2,36.7,22.6,36.5z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M19.4,36.6c0.5,0,1,0,1.5,0C20.6,36.7,19.8,36.7,19.4,36.6z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M19.7,37c0.3,0,0.8-0.1,1,0.1C20.4,37,19.9,37.2,19.7,37z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M32.5,38.8c0.3,0,0.8-0.1,1,0.1C33.2,38.8,32.7,39,32.5,38.8z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M48.5,45.7c0,0.2,0,0.4,0,0.7c-1.4,0.6-2.9,0.6-4.7,0.7
+					C45.1,46.4,46.7,45.9,48.5,45.7z"/>
+				<path fill-rule="evenodd" fill="#5A9FC1" d="M20.8,37.1c0.8,0,1.4,0.2,2.2,0.2c2.7,1,6.1,1.2,9.5,1.5c0.2,0.2,0.7,0,1,0.1
+					c2.8,0,4.9,0.6,7.2,1.1c0.3,0.1,0.1-0.3,0.4-0.2c0.8,0.4,2.2,0.7,3.2,0.4c0.2,0.1,0.7-0.1,1.1,0c0.7,0.1,0.8,0,1.3-0.2
+					c0.6,0.4,1.1,0.2,1.7,0.4c0,1.7,0,3.4,0,5.1c-0.7-0.2-1.5,0.5-2.1,0.3c-0.1,0,0-0.1,0-0.1c-0.4,0.1-0.7,0.3-1,0.3
+					c-0.1,0-0.3-0.2-0.4-0.1c-0.5,0.1-1.1,0.5-1.8,0.4c-0.3,0,0.3-0.3,0-0.6c-0.8,0.2-2.1,0.7-2.6,0.1c-2.1,0.6-4.8,1-7.5,0.8
+					c1.5-0.5,3.5-0.6,5.1-1c-4.9-0.3-8.5,0.9-13.1,1.1c0.1-0.4,0.7-0.2,1-0.3c2.3-0.4,5-0.8,6.8-1.8c-1.8,0-3.8,0.8-5.9,1
+					c-1.1,0.1-2.2,0-3.2,0.4c1.3-1.2,4-1.1,5.5-2.2c-0.5-0.3-1.3-0.1-1.8,0.1c-0.3,0,0.1-0.2,0.1-0.3c-1,0-1.8,0.1-2.7,0.1
+					c-0.2-0.1-0.4-0.1-0.4-0.4c-1.6,0.3-2.8-0.4-4.3,0c0-0.2,0.4-0.1,0.7-0.2c0.3-0.2,0.3-0.3,0.6-0.4c-1.6-0.4-3.6,0.1-4.4-1
+					c-2.3,0.4-2.8-1.7-4.8-1.8c0-0.1,0-0.1-0.1-0.1c0-2.9,0-5.8,0-8.6c0.9,0,1.8,0,2.6,0c4.2,0.1,7.5,1.1,11.3,1.6
+					c0.1,0.1,0.8,0.1,0.9,0c7.6,0,14.3-2.2,21.8-1.4c0,1.7,0,3.4,0,5.1c-6.7,0-13.1,0-19.7,0c-0.3,0-0.7-0.1-0.9,0.1
+					c-0.1,0-0.1,0-0.2,0c-0.3,0-0.9-0.1-1.1,0.1c-0.6,0-1.1,0.2-1.8,0.1c-0.7,0-1.5,0-2.2,0c-0.1,0-0.1,0-0.2,0
+					c-0.1-0.1-0.8-0.1-0.9,0c-0.2,0-0.3,0.1-0.5,0.1c-0.5,0-1,0-1.5,0c-0.8,0.2-1.9-0.2-2.7,0c0.9,0.2,1.8,0.5,3,0.4
+					C19.9,37.2,20.4,37,20.8,37.1z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M44.4,40.1c0.2-0.1,0.9-0.2,1.1,0C45.1,40.1,44.5,40.2,44.4,40.1z"/>
+				<path fill-rule="evenodd" fill="#70B0D0" d="M11.8,39.6c0.1,0,0.1,0.1,0.1,0.1c2,0.2,2.5,2.2,4.8,1.8c0.8,1.2,2.8,0.6,4.4,1
+					c-0.3,0.1-0.3,0.3-0.6,0.4c-0.2,0.1-0.6,0.1-0.7,0.2c1.5-0.4,2.7,0.3,4.3,0c0,0.2,0.2,0.3,0.4,0.4c0.9-0.1,1.7-0.2,2.7-0.1
+					c0,0.1-0.4,0.3-0.1,0.3c0.5-0.2,1.3-0.3,1.8-0.1c-1.5,1.1-4.1,1-5.5,2.2c1-0.4,2.1-0.3,3.2-0.4c2.1-0.2,4-1,5.9-1
+					c-1.8,0.9-4.6,1.4-6.8,1.8c-0.3,0-0.8-0.1-1,0.3c4.7-0.2,8.2-1.4,13.1-1.1c-1.6,0.5-3.6,0.5-5.1,1c2.7,0.2,5.4-0.2,7.5-0.8
+					c0.6,0.6,1.8,0.1,2.6-0.1c0.3,0.3-0.3,0.6,0,0.6c0.7,0,1.4-0.4,1.8-0.4c0.1,0,0.4,0.1,0.4,0.1c0.3,0,0.6-0.2,1-0.3
+					c0,0-0.1,0.1,0,0.1c0.6,0.2,1.5-0.5,2.1-0.3c0,0.1,0,0.2,0,0.3c-1.8,0.2-3.3,0.7-4.7,1.4c1.8-0.1,3.3-0.1,4.7-0.7
+					c0,1.7,0,3.5,0,5.2c-12.2,0-24.4,0-36.6,0C11.8,47.6,11.8,43.6,11.8,39.6z"/>
+			</g>
+		</g>
+	</g>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<rect x="59.8" y="23.4" fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" width="41.5" height="33.7"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M84.8,29.9c0.2,0,0.6-0.1,0.7,0.1
+			C85.3,29.9,84.9,30.1,84.8,29.9z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M91,35.4c0.4,0,0.2,0.4,0.1,0.5
+			C90.9,35.9,90.9,35.5,91,35.4z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M92.6,37.5c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+			C92.1,37.4,92.5,37.4,92.6,37.5z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M75.4,40.4c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1
+			c0,0.5-0.8,0.6-0.5,1.2c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2
+			c0.6-0.5,1.7-0.3,2.3-0.1c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9
+			c-1.2,0.5-2.5-0.3-3-1c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4
+			c-0.6,0-1-0.3-1.3-0.5c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3
+			c-0.7,0.3-1.3-0.1-1.9,0c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1
+			c0-0.3-0.3-0.3-0.3-0.6c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8
+			c0.1,0.3,0.6,0.2,0.9,0.3c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3
+			c-0.4,0.1-0.7,0.2-1.1,0.2c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C75.5,40.8,75.2,40.3,75.4,40.4z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M89.9,45.8c0.4,0,0.6,0.3,1,0.3
+			C90.7,46.1,89.9,46.1,89.9,45.8z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M93.2,36.8c0.4-0.1,0.8,0.1,1,0.4
+			c-0.1-0.3-0.6-0.1-0.7-0.4C93.4,36.8,93.4,36.9,93.2,36.8C93.2,36.8,93.2,36.8,93.2,36.8z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M89,30.9c0,0.3,0.2,0.3,0.2,0.5c-0.2-0.1-0.4-0.3-0.7-0.5
+			c0.3,0,0.2,0.2,0.4,0.3C88.9,31.1,88.8,30.7,89,30.9z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M83,29.4c0.4-0.2,0.6,0.3,0.8,0.5
+			C83.5,29.8,83.5,29.3,83,29.4z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M77.5,34.2c0,0.4-0.2,0.5-0.4,0.7
+			C77.2,34.6,77.4,34.4,77.5,34.2z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M77.6,36.1c-0.2,0.4,0.3,0.8-0.1,1
+			C77.8,36.8,77.3,36.4,77.6,36.1z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M94.4,39.2c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5
+			c-0.1,0-0.2,0-0.3,0c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4
+			c-0.6,0.7-0.4,2.7,0.7,2.8c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0
+			c1.1,0.2,2.2,0.8,3.3,0.7c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2
+			c0,3.4,0,4.8,0,8.1c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+			c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+			c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+			c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+			c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+			c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+			c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+			c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+			c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1c0,0,0-0.1,0-0.1
+			c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5c0.2-0.2,0.7-0.3,0.4-0.7
+			c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6c0.1-0.1,0.1,0,0.2,0
+			c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2c0.2,0.2,0.4,0.4,0.7,0.5
+			c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7c1.1-0.4,1.6,0.9,2.2,1.4
+			c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3c0,0,0,0,0,0.1
+			c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C94.8,37.6,94.7,38.5,94.4,39.2z M91.1,35.9c0.1-0.1,0.3-0.6-0.1-0.5
+			C90.9,35.5,90.9,35.9,91.1,35.9z M92,37.5c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3C92.5,37.4,92.1,37.4,92,37.5z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M98.8,38.9c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2
+			c0.1,0.1,0.5,0.2,0.4,0.3c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0
+			c0.1,0.1,0.2,0.2,0.1,0.4c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4
+			c1.3-0.1,3,0.4,3.8-0.4c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5
+			c-0.3-0.7,0.2-0.8,0.2-1.6C95.9,39.5,97.3,39,98.8,38.9z M90.9,46.1c-0.4,0-0.5-0.3-1-0.3C89.9,46.1,90.7,46.1,90.9,46.1z"/>
+		<path fill-rule="evenodd" fill="#33342E"  a:adobe-opacity-share="0" d="M98.8,38.9c-1.5,0-2.9,0.5-4.4,0.3
+			c0.3-0.7,0.4-1.6-0.1-2.1c-0.2-0.3-0.7-0.5-1-0.4c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9
+			c0.3,0.2,0.2-0.2,0.4-0.3c-0.6-0.6-1.1-1.8-2.2-1.4c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3
+			c-0.1-0.2,0,0.2,0,0.3c-0.2,0-0.2-0.3-0.4-0.3c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4c-0.3-0.3-0.7,0.1-0.8-0.2
+			c-0.1-0.2-0.5,0-0.7-0.1c-0.1,0-0.1-0.1-0.2,0c0,0.3,0.2,0.6-0.1,0.6c-0.2-0.2-0.2-0.6-0.6-0.6c-0.2-0.2-0.4-0.7-0.8-0.5
+			c-0.6,0-1,0.3-1.3,0.6c0.3,0.5-0.2,0.6-0.4,0.7c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3
+			c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2
+			c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6
+			c12.2,0,24.4,0,36.6,0C98.8,30.9,98.8,33.9,98.8,38.9z"/>
+	</g>
+	<g>
+		<g>
+			<rect x="56.8" y="20.4" fill-rule="evenodd" fill="#FFFFFF" width="41.5" height="33.7"/>
+			<g id="tykqki_2_">
+				<g>
+					<g>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M81.8,26.9c0.2,0,0.6-0.1,0.7,0.1C82.3,26.9,81.9,27.1,81.8,26.9z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M88,32.4c0.4,0,0.2,0.4,0.1,0.5C87.9,32.9,87.9,32.5,88,32.4z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M89.6,34.5c0,0.2-0.1,0.2-0.2,0.3c-0.2,0-0.3-0.1-0.3-0.3
+							C89.1,34.4,89.5,34.4,89.6,34.5z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M72.4,37.4c-0.1,0.7,0.2,1,0.2,1.6c0.7,0.2,1.1,0.5,1.1,1c0,0.5-0.8,0.6-0.5,1.2
+							c0,0.2,0.2-0.1,0.4,0c0.5,0.7,1.8,0.5,2.9,0.6c-0.1,0.2-0.4,0.2-0.4,0.5c0.6,0,1.6-0.3,2.6-0.2c0.6-0.5,1.7-0.3,2.3-0.1
+							c-0.1,0.6-0.2,1.7,0,2.3c-0.2,0.2-0.7,0-1,0.1c-0.8,1.4-3,0.3-3.9-0.3c0.2,0.6,0.8,0.7,1.3,0.9c-1.2,0.5-2.5-0.3-3-1
+							c-0.3,0,0,0.5-0.3,0.4c0.3,0.1,0.5,0.3,0.7,0.5c-0.4,0.2-1.1,0-1.5-0.1c-0.2,0.1,0.3,0.2,0.1,0.4c-0.6,0-1-0.3-1.3-0.5
+							c-0.2,0.2,0.2,0.4,0.1,0.7c-0.6-0.1-0.9-0.4-1.5-0.7c-0.5,0.3-1.1,0.1-1.8,0c0.1,0.2,0.4,0.2,0.6,0.3c-0.7,0.3-1.3-0.1-1.9,0
+							c-1,0.1-1.8,1.2-2.7,0.5c0.2-0.6,1.1-0.6,1.7-0.9c0-0.3-0.4-0.2-0.4-0.4c-0.1-0.2,0.2-0.1,0.4-0.1c0-0.3-0.3-0.3-0.3-0.6
+							c-0.5,0.2-0.7-0.6-1-0.9c-1.1-0.1-1.7,0.4-2,1.1c0.1,0.1,0.2,0.1,0.3,0.2c-0.5,0-0.8,0.3-0.8,0.8c0.1,0.3,0.6,0.2,0.9,0.3
+							c0,0.3-0.3,0.2-0.4,0.1c0,0.2,0.2,0.2,0.2,0.3c0.2-0.2,0.8,0.1,1.2,0.2c-0.9,1.3-2.9,0.6-4.4,0.3c-0.4,0.1-0.7,0.2-1.1,0.2
+							c0-2.6,0-5.1,0-7.7c4.9,0.3,8.3-0.8,13.1-0.6C72.5,37.8,72.2,37.3,72.4,37.4z"/>
+						<path fill-rule="evenodd" fill="#9DAD3A" d="M86.9,42.8c0.4,0,0.6,0.3,1,0.3C87.7,43.1,86.9,43.1,86.9,42.8z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M90.2,33.8c0.4-0.1,0.8,0.1,1,0.4c-0.1-0.3-0.6-0.1-0.7-0.4
+							C90.4,33.8,90.4,33.9,90.2,33.8C90.2,33.8,90.2,33.8,90.2,33.8z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M86,27.9c0,0.3,0.2,0.3,0.2,0.5c-0.2-0.1-0.4-0.3-0.7-0.5c0.3,0,0.2,0.2,0.4,0.3
+							C85.9,28.1,85.8,27.7,86,27.9z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M80,26.4c0.4-0.2,0.6,0.3,0.8,0.5C80.5,26.8,80.5,26.3,80,26.4z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M74.5,31.2c0,0.4-0.2,0.5-0.4,0.7C74.2,31.6,74.4,31.4,74.5,31.2z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M74.6,33.1c-0.2,0.4,0.3,0.8-0.1,1C74.8,33.8,74.3,33.4,74.6,33.1z"/>
+						<path fill-rule="evenodd" fill="#9DAD3A" d="M91.4,36.2c0,0.8-0.5,0.9-0.2,1.6c-0.4,0.3-0.6,1-0.1,1.5c-0.1,0-0.2,0-0.3,0
+							c0.2,0.8-1,0.9-0.5,1.6c0.4,0,0.5-0.6,0.9-0.2c-0.8,0.8-2.5,0.3-3.8,0.4c-0.6,1.6-2.9,0.2-4.1,0.4c-0.6,0.7-0.4,2.7,0.7,2.8
+							c0.6-0.5,2.1,0.1,2.4-0.7c0.8,0,1.6,0.5,2.3,0.1c0-0.2,0-0.3-0.1-0.4c0.4-0.1,1.2,0.7,1.5,0c1.1,0.2,2.2,0.8,3.3,0.7
+							c0.2-0.1,0.3-0.4,0.1-0.6c0.5,0,0.8,0.1,1.2,0c0.2-0.1-0.3-0.2-0.4-0.3c0.3,0,0.9,0.3,1.5,0.2c0,3.4,0,4.8,0,8.1
+							c-12.2,0-24.4,0-36.6,0c0-2.5,0-3,0-5.5c0.4,0,0.7-0.2,1.1-0.2c1.5,0.3,3.5,1,4.4-0.3c-0.5-0.2-1-0.4-1.2-0.2
+							c-0.1-0.1-0.2-0.1-0.2-0.3c0.2,0.1,0.4,0.1,0.4-0.1c-0.3-0.1-0.7,0-0.9-0.3c0.1-0.5,0.3-0.8,0.8-0.8c-0.1-0.1-0.2-0.1-0.3-0.2
+							c0.3-0.7,0.9-1.2,2-1.1c0.3,0.3,0.5,1,1,0.9c0,0.3,0.3,0.3,0.3,0.6c-0.1,0-0.4-0.1-0.4,0.1c0,0.3,0.4,0.2,0.4,0.4
+							c-0.5,0.3-1.5,0.3-1.7,0.9c0.9,0.6,1.7-0.4,2.7-0.5c0.6-0.1,1.2,0.3,1.9,0c-0.2-0.1-0.5-0.1-0.6-0.3c0.7,0.1,1.2,0.3,1.8,0
+							c0.6,0.2,0.9,0.5,1.5,0.7c0.1-0.3-0.3-0.5-0.1-0.7c0.4,0.3,0.7,0.5,1.3,0.5c0.2-0.2-0.3-0.3-0.1-0.4c0.4,0.1,1.1,0.3,1.5,0.1
+							c-0.2-0.2-0.4-0.4-0.7-0.5c0.3,0,0-0.5,0.3-0.4c0.6,0.7,1.8,1.4,3,1c-0.5-0.2-1.2-0.3-1.3-0.9c0.9,0.6,3.1,1.7,3.9,0.3
+							c0.3,0,0.8,0.1,1-0.1c-0.2-0.6-0.1-1.7,0-2.3c-0.6-0.2-1.7-0.4-2.3,0.1c-0.9,0-1.9,0.2-2.6,0.2c0-0.3,0.3-0.3,0.4-0.5
+							c-1-0.1-2.4,0.1-2.9-0.6c-0.2-0.1-0.4,0.2-0.4,0c-0.3-0.6,0.5-0.7,0.5-1.2c0-0.5-0.4-0.9-1.1-1c0-0.6-0.3-0.9-0.2-1.6
+							c0-0.4,0-0.8,0-1.2c1.4,0,0.3-1.6,0.8-2.2c0.5-0.1,0.8,0.4,1.2,0.2c0.5-0.2,0-0.7,0.1-1c-0.1-0.5-0.3-0.8-0.5-1
+							c0,0,0-0.1,0-0.1c0.2-0.2,0.4-0.4,0.4-0.7c0.7-1.1,1.1-2.5,2.3-3c0.3,0.3,1.2,0.4,1.5,0.1c0-0.2-0.2-0.2-0.1-0.5
+							c0.2-0.2,0.7-0.3,0.4-0.7c0.4-0.3,0.7-0.6,1.3-0.6c0.5,0,0.5,0.4,0.8,0.5c0.4,0,0.4,0.4,0.6,0.6c0.4,0,0.1-0.3,0.1-0.6
+							c0.1-0.1,0.1,0,0.2,0c0.1,0.2,0.5,0,0.7,0.1c0.1,0.4,0.5-0.1,0.8,0.2c0.2-0.5,0.6-0.6,1.2-0.4c-0.3,0.7,0.5,0.9,1,1.2
+							c0.2,0.2,0.4,0.4,0.7,0.5c0-0.2-0.2-0.3-0.2-0.5c0.6,0.3,1.1,0.7,1.4,1.3c0.3,0.1,0.2-0.2,0.4-0.1c0.1,0.4-0.1,0.5-0.1,0.7
+							c1.1-0.4,1.6,0.9,2.2,1.4c-0.2,0.1-0.1,0.5-0.4,0.3c0.1,0.9,0.6,1.4,1,1.9c-0.3,0-1.1,0.3-0.6,0.7c0.3,0.1,0-0.4,0.4-0.3
+							c0,0,0,0,0,0.1c0.2,0.1,0.2-0.1,0.4-0.1c0.1,0.3,0.6,0.1,0.7,0.4C91.8,34.6,91.7,35.5,91.4,36.2z M88.1,32.9
+							c0.1-0.1,0.3-0.6-0.1-0.5C87.9,32.5,87.9,32.9,88.1,32.9z M89,34.5c0,0.2,0.1,0.3,0.3,0.3c0.1-0.1,0.2-0.1,0.2-0.3
+							C89.5,34.4,89.1,34.4,89,34.5z"/>
+						<path fill-rule="evenodd" fill="#BDCF31" d="M95.8,35.9c0,2.5,0,5,0,7.5c-0.6,0.1-1.2-0.3-1.5-0.2c0.1,0.1,0.5,0.2,0.4,0.3
+							c-0.4,0.1-0.8,0-1.2,0c0.1,0.2,0.1,0.5-0.1,0.6c-1.1,0.1-2.2-0.5-3.3-0.7c-0.3,0.7-1.2-0.1-1.5,0c0.1,0.1,0.2,0.2,0.1,0.4
+							c-0.7,0.3-1.5-0.1-2.3-0.1c-0.3,0.7-1.9,0.2-2.4,0.7c-1.1-0.1-1.3-2.1-0.7-2.8c1.2-0.2,3.5,1.2,4.1-0.4c1.3-0.1,3,0.4,3.8-0.4
+							c-0.4-0.4-0.5,0.2-0.9,0.2c-0.5-0.7,0.7-0.8,0.5-1.6c0.1,0,0.2,0,0.3,0c-0.5-0.4-0.3-1.1,0.1-1.5c-0.3-0.7,0.2-0.8,0.2-1.6
+							C92.9,36.5,94.3,36,95.8,35.9z M87.9,43.1c-0.4,0-0.5-0.3-1-0.3C86.9,43.1,87.7,43.1,87.9,43.1z"/>
+						<path fill-rule="evenodd" fill="#D9D931" d="M95.8,35.9c-1.5,0-2.9,0.5-4.4,0.3c0.3-0.7,0.4-1.6-0.1-2.1
+							c-0.2-0.3-0.7-0.5-1-0.4c-0.3-0.1-0.1,0.4-0.4,0.3c-0.5-0.4,0.2-0.7,0.6-0.7c-0.5-0.5-0.9-1-1-1.9c0.3,0.2,0.2-0.2,0.4-0.3
+							c-0.6-0.6-1.1-1.8-2.2-1.4c0-0.2,0.2-0.4,0.1-0.7c-0.2,0-0.2,0.2-0.4,0.1c-0.3-0.6-0.8-1-1.4-1.3c-0.1-0.2,0,0.2,0,0.3
+							c-0.2,0-0.2-0.3-0.4-0.3c-0.4-0.3-1.3-0.5-1-1.2c-0.6-0.1-1.1-0.1-1.2,0.4c-0.3-0.3-0.7,0.1-0.8-0.2c-0.1-0.2-0.5,0-0.7-0.1
+							c-0.1,0-0.1-0.1-0.2,0c0,0.3,0.2,0.6-0.1,0.6c-0.2-0.2-0.2-0.6-0.6-0.6c-0.2-0.2-0.4-0.7-0.8-0.5c-0.6,0-1,0.3-1.3,0.6
+							c0.3,0.5-0.2,0.6-0.4,0.7c-0.1,0.3,0.2,0.3,0.1,0.5c-0.4,0.4-1.2,0.3-1.5-0.1c-1.2,0.6-1.7,1.9-2.3,3
+							c-0.2,0.2-0.3,0.4-0.4,0.7c0,0,0,0.1,0,0.1c0.3,0.3,0.4,0.6,0.5,1c-0.3,0.3,0.2,0.7-0.1,1c-0.5,0.2-0.7-0.3-1.2-0.2
+							c-0.5,0.6,0.6,2.2-0.8,2.2c0,0.4,0,0.8,0,1.2c-0.2,0,0.1,0.5-0.1,0.4c-4.8-0.2-8.3,0.9-13.1,0.6c0-5.8,0-9.7,0-15.6
+							c12.2,0,24.4,0,36.6,0C95.8,27.9,95.8,30.9,95.8,35.9z"/>
+					</g>
+				</g>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/add_block.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/add_block.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/add_block.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/add_block.png
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/add_text.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/add_text.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/add_text.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/add_text.png
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/circle.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/circle.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/circle.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/circle.png
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/close_cont.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/close_cont.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/close_cont.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/close_cont.png
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/close_img.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/close_img.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/close_img.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/close_img.png
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/play.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/play.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/play.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/play.png
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/replay.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/replay.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/replay.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/replay.png
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/stop.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/stop.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/stop.png
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/stop.png
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html
new file mode 100644
index 0000000..6f206bb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/index.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang == "en"){
+                    if(window.sankore)
+                        sankore.enableDropOnWidget(false);
+                    start();
+                }
+                else{
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                start();
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js
new file mode 100644
index 0000000..369719d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/js/script.js
@@ -0,0 +1,563 @@
+var sankoreLang = {
+    display: "Display", 
+    edit: "Edit", 
+    short_desc: "Select animals from the following list:", 
+    add: "Add new block",
+    enter: "Enter your instruction here ...",
+    cat: "cat",
+    ball: "ball",
+    shovel: "shovel",
+    dog: "dog",
+    tree: "tree",
+    wgt_name: "Select",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p> <h2>Select</h2> </p>" +
+"<p> <h3> Select the correct element in the list </h3> </p>" +
+"<p> Choose correct element(s). If the result is correct, the area turns in green.</p>" +
+"<p> “Reload “button resets the exercises.</p>" +
+"<p> Enter the “Edit” mode to :</p>" +
+"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li> modify an exercise or create new ones in the same activity.</li></ul>" +
+"<p>To create a new exercise :</p>" +
+"<ul> <li> click on “New block”,</li>" +
+"<li> insert an instruction clicking on the text field “Enter your instruction here ... ”,</li>" +
+"<li> add text fields with “+T”,</li>" +
+"<li> select the correct answer clicking in the box,</li>" +
+"<li> change the order of images by dragging them.</li> </ul>" +
+"<p> To delete a frame, click the cross (X).</p>" +
+"<p> To delete a whole exercise, click the cross to the left. </p>" +
+"<p> “Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("selectionner","")){
+            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
+            importData(data);
+        } else 
+            showExample();
+        if(sankore.preference("sel_style","")){
+            changeStyle(sankore.preference("sel_style",""));
+            $("#style_select").val(sankore.preference("sel_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("sel_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $(".cont").each(function(){
+                var container = $(this);
+                container.find(".img_block, .text_block").each(function(){
+                    $(this).find("input:checkbox").removeAttr("checked");
+                    $(this).find("input:checkbox").parent().parent().removeClass("right");
+                });          
+            });
+        }
+        else
+            $("#wgt_display").trigger("click");
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    container.find(".img_block, .text_block").each(function(){
+                        $(this).find(".close_img").remove();  
+                        $(this).find(".text_subblock").removeAttr("contenteditable");
+                        $(this).find("input:checkbox").removeAttr("checked")
+                    });                    
+                
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    container.find(".imgs_cont").removeClass("right")
+                    .attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+                    .attr("ondragover", "$(this).addClass('over'); return false;")
+                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block, .text_block").each(function(){
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input:hidden").val() == 0)
+                            $(this).find("input:checkbox").attr('checked', false);
+                        else
+                            $(this).find("input:checkbox").attr('checked', true);
+                        $(this).find(".text_subblock").attr("contenteditable","true");                        
+                    });
+                    add_img.insertBefore(container.find(".clear"));
+                });
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //checkbox events
+    $("input:checkbox").live("click", function(){
+        if($("#wgt_display").hasClass("selected")){
+            var flag = true;
+            var block = $(this).parent().parent();
+            block.find(".text_block, .img_block, .audio_block").each(function(){
+                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                    flag = false;                
+                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                    flag = false;          
+            });
+            if(flag)
+                block.addClass("right");
+            else
+                block.removeClass("right");
+        } else {
+            if($(this).is(":checked"))
+                $(this).parent().find("input:hidden").val(1);
+            else
+                $(this).parent().find("input:hidden").val(0);
+        }
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addTextBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        $(this).parent().remove();
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").live("mouseover",function(){
+        exportData();
+    })
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.blocks = [];
+        $(this).find(".img_block, .audio_block, .text_block").each(function(){
+            var tmp_block = new Object();
+            if($("#wgt_display").hasClass("selected"))
+                tmp_block.state = "display";
+            else
+                tmp_block.state = "edit";
+            if($(this).hasClass("img_block")){
+                if($(this).find(".audio_block").size() == 0){
+                    tmp_block.src = $(this).find("img").attr("src");
+                    tmp_block.hidden = $(this).find("input:hidden").val();
+                    tmp_block.h = $(this).find("img").height();
+                    tmp_block.w = $(this).find("img").width(); 
+                    tmp_block.type = "img";
+                    tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+                }
+            }
+            if($(this).hasClass("audio_block")){
+                tmp_block.src = $(this).find("source").attr("src");
+                tmp_block.hidden = $(this).parent().find("input:hidden").val();
+                tmp_block.type = "audio";
+                tmp_block.checked = $(this).parent().find("input:checkbox").attr("checked");
+            }
+            if($(this).hasClass("text_block")){
+                tmp_block.text = $(this).find(".text_subblock").text();
+                tmp_block.hidden = $(this).find("input:hidden").val();
+                tmp_block.type = "text";
+                tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+            }           
+            cont_obj.blocks.push(tmp_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    if(window.sankore)
+        sankore.setPreference("selectionner", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
+        $("<div class='clear'>").appendTo(imgs_container);
+        
+        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+        for(var j in data[i].blocks){
+            switch(data[i].blocks[j].type){
+                case "text":
+                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
+                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(text_block);
+                    break;
+                case "img":
+                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_block)
+                    var img = $("<img src=\"" + data[i].blocks[j].src + "\" style=\"display: inline;\"/>").appendTo(img_block);
+                    img.height(data[i].blocks[j].h);
+                    if((120 - data[i].blocks[j].h) > 0)
+                        img.css("margin",(120 - data[i].blocks[j].h)/2 + "px 0");
+                    break;
+                case "audio":
+                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
+                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
+                    $("<div class='play'>").appendTo(audio_block);
+                    $("<div class='replay'>").appendTo(audio_block);
+                    var source = $("<source/>").attr("src", data[i].blocks[j].src);
+                    var audio = $("<audio>").appendTo(audio_block);
+                    audio.append(source);
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_tmp)
+                    break;
+            }
+        }
+    }
+    
+    var block = $("input:checkbox").parent().parent();
+    block.each(function(){
+        var flag = true;
+        $(this).find(".text_block, .img_block, .audio_block").each(function(){
+            if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                flag = false;                
+            else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                flag = false;          
+        });
+        if(flag)
+            $(this).addClass("right");
+        else
+            $(this).removeClass("right");
+    })
+}
+
+//example
+function showExample(){
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
+    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
+    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
+    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
+    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
+    $("<div class='clear'>").appendTo(imgs_container);
+    
+    container.appendTo("#data")
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+    .attr("ondragover", "$(this).addClass('over'); return false;")
+    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+    
+    $("<div class='close_cont'>").appendTo(container);
+    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<div class='add_img'>").appendTo(imgs_container);
+    $("<div class='clear'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addTextBlock(dest){
+    var tmp = $("<div class='text_block'>").insertBefore(dest)
+    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
+    $("<div class='close_img'>").appendTo(tmp);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){  
+            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
+            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
+            $("<div class='close_img'>").appendTo(img_tmp);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
+            $("<div class='close_img'>").appendTo(img_block);
+            $("<input type='hidden' value='0'/>").appendTo(img_block); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
+            var tmp_img = $("<img src=\"" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+    
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
+
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/index.html
new file mode 100644
index 0000000..bc5e9a1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/index.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){    
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>        
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js
new file mode 100644
index 0000000..8788b5c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js
@@ -0,0 +1,563 @@
+var sankoreLang = {
+    display: "Afficher", 
+    edit: "Modifier", 
+    short_desc: "Sélectionner les animaux dans la liste suivante :", 
+    add: "Nouveau bloc",
+    enter: "Texte",
+    cat: "chat",
+    ball: "balle",
+    shovel: "pelle",
+    dog: "chien",
+    tree: "arbre",
+    wgt_name: "Sélectionner",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Sélectionner</h2></p>"+
+    "<p><h3>Trouver les éléments correspondants à la consigne.</h3></p>"+
+
+    "<p>Une consigne est écrite précisant le ou les éléments à chercher parmi tous les éléments proposés. Le but est de trouver les éléments correspondants à la consigne. L’activité s’effectue en cochant les cases sous les éléments correspondants. Une fois que tous les éléments corrects sont cochés, la zone se colore en vert.</p>"+
+
+    "<p>Le bouton “Recharger” réinitialise les exercices.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),</li>"+
+    "<li>de modifier un exercice ou d’en créer de nouveaux dans la même activité. </li></ul>"+
+
+    "<p>En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis</p>"+
+    "<ul><li>insérez une consigne en cliquant sur le champ de texte “Saisir votre consigne ici ...”, </li>"+
+    "<li>ajoutez des zones de texte en cliquant sur le gros “+T” vert en dessous puis entrez le texte voulu.</li></ul>"+
+    "<p>Pour supprimer une zone de texte, cliquez sur la croix située dans le coin supérieur de celle-ci.</p>"+ 
+
+    "<p>Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme:"Thème"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("selectionner","")){
+            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
+            importData(data);
+        } else 
+            showExample();
+        if(sankore.preference("sel_style","")){
+            changeStyle(sankore.preference("sel_style",""));
+            $("#style_select").val(sankore.preference("sel_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("sel_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $(".cont").each(function(){
+                var container = $(this);
+                container.find(".img_block, .text_block").each(function(){
+                    $(this).find("input:checkbox").removeAttr("checked");
+                    $(this).find("input:checkbox").parent().parent().removeClass("right");
+                });          
+            });
+        }
+        else
+            $("#wgt_display").trigger("click");
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    container.find(".img_block, .text_block").each(function(){
+                        $(this).find(".close_img").remove();  
+                        $(this).find(".text_subblock").removeAttr("contenteditable");
+                        $(this).find("input:checkbox").removeAttr("checked")
+                    });                    
+                
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    container.find(".imgs_cont").removeClass("right")
+                    .attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+                    .attr("ondragover", "$(this).addClass('over'); return false;")
+                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block, .text_block").each(function(){
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input:hidden").val() == 0)
+                            $(this).find("input:checkbox").attr('checked', false);
+                        else
+                            $(this).find("input:checkbox").attr('checked', true);
+                        $(this).find(".text_subblock").attr("contenteditable","true");                        
+                    });
+                    add_img.insertBefore(container.find(".clear"));
+                });
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //checkbox events
+    $("input:checkbox").live("click", function(){
+        if($("#wgt_display").hasClass("selected")){
+            var flag = true;
+            var block = $(this).parent().parent();
+            block.find(".text_block, .img_block, .audio_block").each(function(){
+                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                    flag = false;                
+                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                    flag = false;          
+            });
+            if(flag)
+                block.addClass("right");
+            else
+                block.removeClass("right");
+        } else {
+            if($(this).is(":checked"))
+                $(this).parent().find("input:hidden").val(1);
+            else
+                $(this).parent().find("input:hidden").val(0);
+        }
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addTextBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        $(this).parent().remove();
+    });
+
+    
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.blocks = [];
+        $(this).find(".img_block, .audio_block, .text_block").each(function(){
+            var tmp_block = new Object();
+            if($("#wgt_display").hasClass("selected"))
+                tmp_block.state = "display";
+            else
+                tmp_block.state = "edit";
+            if($(this).hasClass("img_block")){
+                if($(this).find(".audio_block").size() == 0){
+                    tmp_block.src = $(this).find("img").attr("src").replace("../../","");
+                    tmp_block.hidden = $(this).find("input:hidden").val();
+                    tmp_block.h = $(this).find("img").height();
+                    tmp_block.w = $(this).find("img").width(); 
+                    tmp_block.type = "img";
+                    tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+                }
+            }
+            if($(this).hasClass("audio_block")){
+                tmp_block.src = $(this).find("source").attr("src").replace("../../","");
+                tmp_block.hidden = $(this).parent().find("input:hidden").val();
+                tmp_block.type = "audio";
+                tmp_block.checked = $(this).parent().find("input:checkbox").attr("checked");
+            }
+            if($(this).hasClass("text_block")){
+                tmp_block.text = $(this).find(".text_subblock").text();
+                tmp_block.hidden = $(this).find("input:hidden").val();
+                tmp_block.type = "text";
+                tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+            }           
+            cont_obj.blocks.push(tmp_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    
+    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
+        $("<div class='clear'>").appendTo(imgs_container);
+        
+        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+        for(var j in data[i].blocks){
+            switch(data[i].blocks[j].type){
+                case "text":
+                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
+                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(text_block);
+                    break;
+                case "img":
+                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_block)
+                    var img = $("<img src=\"../../" + data[i].blocks[j].src + "\" style=\"display: inline;\"/>").appendTo(img_block);
+                    img.height(data[i].blocks[j].h);
+                    if((120 - data[i].blocks[j].h) > 0)
+                        img.css("margin",(120 - data[i].blocks[j].h)/2 + "px 0");
+                    break;
+                case "audio":
+                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
+                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
+                    $("<div class='play'>").appendTo(audio_block);
+                    $("<div class='replay'>").appendTo(audio_block);
+                    var source = $("<source/>").attr("src", "../../" + data[i].blocks[j].src);
+                    var audio = $("<audio>").appendTo(audio_block);
+                    audio.append(source);
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_tmp)
+                    break;
+            }
+        }
+    }
+    
+    var block = $("input:checkbox").parent().parent();
+    block.each(function(){
+        var flag = true;
+        $(this).find(".text_block, .img_block, .audio_block").each(function(){
+            if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                flag = false;                
+            else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                flag = false;          
+        });
+        if(flag)
+            $(this).addClass("right");
+        else
+            $(this).removeClass("right");
+    })
+}
+
+//example
+function showExample(){
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
+    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
+    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
+    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
+    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
+    $("<div class='clear'>").appendTo(imgs_container);
+    
+    container.appendTo("#data")
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+    .attr("ondragover", "$(this).addClass('over'); return false;")
+    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+    
+    $("<div class='close_cont'>").appendTo(container);
+    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<div class='add_img'>").appendTo(imgs_container);
+    $("<div class='clear'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addTextBlock(dest){
+    var tmp = $("<div class='text_block'>").insertBefore(dest)
+    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
+    $("<div class='close_img'>").appendTo(tmp);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){  
+            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
+            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
+            $("<div class='close_img'>").appendTo(img_tmp);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
+            $("<div class='close_img'>").appendTo(img_block);
+            $("<input type='hidden' value='0'/>").appendTo(img_block); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
+            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+    
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/index.html
new file mode 100644
index 0000000..c6eb485
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/index.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>D'n'd</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
+        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="js/script.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){ 
+                sankore.enableDropOnWidget(false);
+                start();
+            });
+        </script>
+    </head>
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+       
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="data">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+        
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js
new file mode 100644
index 0000000..8f4f358
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Selectionner.wgt/locales/ru/js/script.js
@@ -0,0 +1,545 @@
+var sankoreLang = {
+    display: "Закрыть", 
+    edit: "Изменить", 
+    short_desc: "Выберите животных из следующего списка:", 
+    add: "Новый блок",
+    enter: "Введите текст ...",
+    cat: "кот",
+    ball: "мяч",
+    shovel: "лопата",
+    dog: "собака",
+    tree: "дерево",
+    wgt_name: "Выбрать верное",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+//main function
+function start(){
+    
+    $("#wgt_display").text(sankoreLang.display);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    $("#wgt_reload").text(sankoreLang.reload);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    if(window.sankore){
+        if(sankore.preference("selectionner","")){
+            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
+            importData(data);
+        } else 
+            showExample();
+        if(sankore.preference("sel_style","")){
+            changeStyle(sankore.preference("sel_style",""));
+            $("#style_select").val(sankore.preference("sel_style",""));
+        } else
+            changeStyle("3")
+    } 
+    else 
+        showExample();
+    
+    //events
+    if (window.widget) {
+        window.widget.onleave = function(){
+            exportData();
+            sankore.setPreference("sel_style", $("#style_select").find("option:selected").val());
+        }
+    }
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#data").show();
+            });
+        } else {
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#data").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $(".cont").each(function(){
+                var container = $(this);
+                container.find(".img_block, .text_block").each(function(){
+                    $(this).find("input:checkbox").removeAttr("checked");
+                    $(this).find("input:checkbox").parent().parent().removeClass("right");
+                });          
+            });
+        }
+        else
+            $("#wgt_display").trigger("click");
+    });
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");
+                $(".add_block").remove();
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    container.find(".text_cont").removeAttr("contenteditable");
+                    container.find(".add_img").remove();
+                    container.find(".close_cont").remove();
+                    container.find(".imgs_cont").removeAttr("ondragenter")
+                    .removeAttr("ondragleave")
+                    .removeAttr("ondragover")
+                    .removeAttr("ondrop");
+                    container.find(".img_block, .text_block").each(function(){
+                        $(this).find(".close_img").remove();  
+                        $(this).find(".text_subblock").removeAttr("contenteditable");
+                        $(this).find("input:checkbox").removeAttr("checked")
+                    });                    
+                
+                });
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(true);
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");
+                
+                $(".cont").each(function(){
+                    var container = $(this);
+                    
+                    $("<div class='close_cont'>").appendTo(container);
+                    container.find(".text_cont").attr("contenteditable","true");
+                    container.find(".imgs_cont").removeClass("right")
+                    .attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+                    .attr("ondragover", "$(this).addClass('over'); return false;")
+                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+                    
+                    var add_img = $("<div class='add_img'>");
+                    container.find(".img_block, .text_block").each(function(){
+                        $("<div class='close_img'>").appendTo($(this));
+                        if($(this).find("input:hidden").val() == 0)
+                            $(this).find("input:checkbox").attr('checked', false);
+                        else
+                            $(this).find("input:checkbox").attr('checked', true);
+                        $(this).find(".text_subblock").attr("contenteditable","true");                        
+                    });
+                    add_img.insertBefore(container.find(".clear"));
+                });
+                
+                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("#data");
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+            }
+        }
+    });
+    
+    //add new block
+    $(".add_block").live("click", function(){
+        addContainer();
+    });
+    
+    //checkbox events
+    $("input:checkbox").live("click", function(){
+        if($("#wgt_display").hasClass("selected")){
+            var flag = true;
+            var block = $(this).parent().parent();
+            block.find(".text_block, .img_block, .audio_block").each(function(){
+                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                    flag = false;                
+                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                    flag = false;          
+            });
+            if(flag)
+                block.addClass("right");
+            else
+                block.removeClass("right");
+        } else {
+            if($(this).is(":checked"))
+                $(this).parent().find("input:hidden").val(1);
+            else
+                $(this).parent().find("input:hidden").val(0);
+        }
+    });
+    
+    //play/pause event
+    $(".play, .stop").live("click", function(){
+        var tmp_audio = $(this);
+        var audio = tmp_audio.parent().find("audio").get(0);
+        if($(this).hasClass("play")){            
+            if(tmp_audio.parent().find("source").attr("src")){
+                tmp_audio.removeClass("play").addClass("stop");
+                var id = setInterval(function(){
+                    if(audio.currentTime == audio.duration){
+                        clearInterval(id);
+                        tmp_audio.removeClass("stop").addClass("play");
+                    }
+                }, 10);
+                tmp_audio.parent().find("input").val(id);
+                audio.play();
+            }
+        } else {
+            $(this).removeClass("stop").addClass("play");
+            clearInterval( tmp_audio.parent().find("input").val())
+            audio.pause();
+        }
+    });
+    
+    $(".replay").live("click", function(){
+        var tmp_audio = $(this).prev();
+        var audio = $(this).parent().find("audio").get(0); 
+        if(tmp_audio.parent().find("source").attr("src")){
+            $(this).prev().removeClass("play").addClass("stop");
+            clearInterval($(this).parent().find("input").val());
+            var id = setInterval(function(){
+                if(audio.currentTime == audio.duration){
+                    clearInterval(id);
+                    tmp_audio.removeClass("stop").addClass("play");
+                }
+            }, 10);
+            tmp_audio.parent().find("input").val(id);
+            audio.currentTime = 0;
+            audio.play();
+        }
+    });
+    
+    //adding new img
+    $(".add_img").live("click", function(){
+        addTextBlock($(this));
+    });
+    
+    //deleting a block
+    $(".close_cont").live("click",function(){
+        $(this).parent().remove();
+        refreshBlockNumbers();
+    });
+    
+    //deleting the img block
+    $(".close_img").live("click", function(){
+        $(this).parent().remove();
+    });
+
+    
+}
+
+//export
+function exportData(){
+    var array_to_export = [];
+    $(".cont").each(function(){
+        var cont_obj = new Object();
+        cont_obj.text = $(this).find(".text_cont").text();
+        cont_obj.blocks = [];
+        $(this).find(".img_block, .audio_block, .text_block").each(function(){
+            var tmp_block = new Object();
+            if($("#wgt_display").hasClass("selected"))
+                tmp_block.state = "display";
+            else
+                tmp_block.state = "edit";
+            if($(this).hasClass("img_block")){
+                if($(this).find(".audio_block").size() == 0){
+                    tmp_block.src = $(this).find("img").attr("src").replace("../../","");
+                    tmp_block.hidden = $(this).find("input:hidden").val();
+                    tmp_block.h = $(this).find("img").height();
+                    tmp_block.w = $(this).find("img").width(); 
+                    tmp_block.type = "img";
+                    tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+                }
+            }
+            if($(this).hasClass("audio_block")){
+                tmp_block.src = $(this).find("source").attr("src").replace("../../","");
+                tmp_block.hidden = $(this).parent().find("input:hidden").val();
+                tmp_block.type = "audio";
+                tmp_block.checked = $(this).parent().find("input:checkbox").attr("checked");
+            }
+            if($(this).hasClass("text_block")){
+                tmp_block.text = $(this).find(".text_subblock").text();
+                tmp_block.hidden = $(this).find("input:hidden").val();
+                tmp_block.type = "text";
+                tmp_block.checked = $(this).find("input:checkbox").attr("checked");
+            }           
+            cont_obj.blocks.push(tmp_block);
+        });
+        array_to_export.push(cont_obj);
+    });
+    
+    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
+}
+
+//import
+function importData(data){
+    
+    var tmp = 0;    
+    for(var i in data){
+        
+        var container = $("<div class='cont'>").appendTo("#data");
+        var sub_container = $("<div class='sub_cont'>").appendTo(container);
+        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
+        $("<div class='clear'>").appendTo(imgs_container);
+        
+        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
+        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
+        
+        for(var j in data[i].blocks){
+            switch(data[i].blocks[j].type){
+                case "text":
+                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
+                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(text_block);
+                    break;
+                case "img":
+                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_block)
+                    var img = $("<img src=\"../../" + data[i].blocks[j].src + "\" style=\"display: inline;\"/>").appendTo(img_block);
+                    img.height(data[i].blocks[j].h);
+                    if((120 - data[i].blocks[j].h) > 0)
+                        img.css("margin",(120 - data[i].blocks[j].h)/2 + "px 0");
+                    break;
+                case "audio":
+                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
+                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
+                    $("<div class='play'>").appendTo(audio_block);
+                    $("<div class='replay'>").appendTo(audio_block);
+                    var source = $("<source/>").attr("src", "../../" + data[i].blocks[j].src);
+                    var audio = $("<audio>").appendTo(audio_block);
+                    audio.append(source);
+                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
+                    $("<input type='checkbox' class='ch_box'/>").attr("checked",(data[i].blocks[j].state == "display")?((data[i].blocks[j].checked == "checked")?true:false):false).appendTo(img_tmp)
+                    break;
+            }
+        }
+    }
+    
+    var block = $("input:checkbox").parent().parent();
+    block.each(function(){
+        var flag = true;
+        $(this).find(".text_block, .img_block, .audio_block").each(function(){
+            if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
+                flag = false;                
+            else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
+                flag = false;          
+        });
+        if(flag)
+            $(this).addClass("right");
+        else
+            $(this).removeClass("right");
+    })
+}
+
+//example
+function showExample(){
+    
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    
+    $("<div class='number_cont'>1</div>").appendTo(sub_container);
+    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
+    
+    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
+    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
+    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
+    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
+    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
+    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
+    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
+    $("<div class='clear'>").appendTo(imgs_container);
+    
+    container.appendTo("#data")
+}
+
+//add new container
+function addContainer(){
+    var container = $("<div class='cont'>");
+    var sub_container = $("<div class='sub_cont'>").appendTo(container);
+    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
+    imgs_container.attr("ondragenter", "return false;")
+    .attr("ondragleave", "$(this).removeClass('over'); return false;")
+    .attr("ondragover", "$(this).addClass('over'); return false;")
+    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
+    
+    $("<div class='close_cont'>").appendTo(container);
+    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
+    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
+    
+    $("<div class='add_img'>").appendTo(imgs_container);
+    $("<div class='clear'>").appendTo(imgs_container);
+    container.insertBefore($(".add_block"));
+}
+
+//add new img block
+function addTextBlock(dest){
+    var tmp = $("<div class='text_block'>").insertBefore(dest)
+    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
+    $("<input type='hidden' value='0'/>").appendTo(tmp); 
+    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
+    $("<div class='close_img'>").appendTo(tmp);
+}
+
+function refreshBlockNumbers(){
+    var i = 0;
+    $(".cont").each(function(){
+        $(this).find(".number_cont").text(++i);
+    })
+}
+
+function stringToXML(text){
+    if (window.ActiveXObject){
+        var doc=new ActiveXObject('Microsoft.XMLDOM');
+        doc.async='false';
+        doc.loadXML(text);
+    } else {
+        var parser=new DOMParser();
+        doc=parser.parseFromString(text,'text/xml');
+    }
+    return doc;
+}
+
+
+//changing the style
+function changeStyle(val){
+    switch(val){
+        case "1":
+            $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+            $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+            $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+            $("#wgt_name").removeClass("pad_color");
+            $("#wgt_display").addClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").addClass("radius_ft");
+            break;
+        case "2":
+            $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+            $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+            $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+            $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+            $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+            $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+            $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+            $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").removeClass("without_radius").removeClass("radius_ft");
+            break;
+        case "3":
+            $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+            $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+            $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+            $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+            $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+            $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+            $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+            $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+            $("#wgt_help").addClass("pad_color").addClass("pad_help");
+            $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+            $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+            $("#wgt_name").addClass("pad_color");
+            $("#wgt_display").removeClass("display_wood");
+            $("#style_select").val(val);
+            $("body, html").addClass("without_radius").removeClass("radius_ft");
+            break;
+    }
+}
+
+function onDropTarget(obj, event) {
+    if (event.dataTransfer) {
+        var format = "text/plain";
+        var textData = event.dataTransfer.getData(format);
+        if (!textData) {
+            alert(":(");
+        }
+        textData = stringToXML(textData);
+        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
+        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
+        if(tmp_type.substr(0, 5) == "audio"){  
+            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
+            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
+            $("<div class='close_img'>").appendTo(img_tmp);
+            $("<div class='play'>").appendTo(audio_block);
+            $("<div class='replay'>").appendTo(audio_block);
+            var source = $("<source/>").attr("src", "../../" + tmp);
+            var audio = $("<audio>").appendTo(audio_block);
+            audio.append(source);
+            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
+        } else {
+            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
+            $("<div class='close_img'>").appendTo(img_block);
+            $("<input type='hidden' value='0'/>").appendTo(img_block); 
+            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
+            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
+            setTimeout(function(){
+                if(tmp_img.height() >= tmp_img.width())
+                    tmp_img.attr("height", "120");
+                else{
+                    tmp_img.attr("width","120");
+                    var h = tmp_img.height();
+                    tmp_img.attr("height",h);
+                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
+                }
+            }, 6);
+        }
+    }
+    else {
+        alert ("Your browser does not support the dataTransfer object.");
+    }
+    
+    if (event.stopPropagation) {
+        event.stopPropagation ();
+    }
+    else {
+        event.cancelBubble = true;
+    }
+    return false;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml
new file mode 100644
index 0000000..b622376
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.example.net/widgets/helloworld" 
+        version="1.0"
+        width="850"
+        height="350" 
+	ub:resizable="true">
+		
+		<name>Split a phrase</name>
+		<description>Split a phrase into words</description>
+		<preference name="skin"
+		            value="uniboard"/>
+		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/icon.svg
new file mode 100644
index 0000000..a80c336
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/icon.svg	
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.333">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<path fill="#33342E"  a:adobe-opacity-share="0" d="M44.9,15C44,20.9,38.4,67,40.2,85.1c0.9,8.7,2.2,13,2.2,13s2.3-25.8,2.5-35.7
+			c0.2-9.9,2.6-42.4,2.4-46.4S45.3,12.6,44.9,15z"/>
+	</g>
+	<g>
+		<path fill="#67C8F0" d="M42.9,12C42,17.9,36.4,64,38.2,82.1c0.9,8.7,2.2,13,2.2,13s2.3-25.8,2.5-35.7c0.2-9.9,2.6-42.4,2.4-46.4
+			S43.3,9.6,42.9,12z"/>
+	</g>
+</g>
+<rect x="10.7" y="49.4" fill="#FFFFFF" width="21" height="8"/>
+<rect x="67.6" y="49.4" fill="#FFFFFF" width="16.8" height="8"/>
+<rect x="50.2" y="49.4" fill="#FFFFFF" width="11.7" height="8"/>
+<rect x="89.7" y="49.4" fill="#FFFFFF" width="7.9" height="8"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html
new file mode 100644
index 0000000..f9f600c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/index.html	
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="styles/master.css">
+        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="styles/app.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="scripts/app.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang != "en"){
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                            },
+                            200: function(){
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/index.html
new file mode 100644
index 0000000..f3465b0
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/index.html	
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/app.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                     
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js
new file mode 100644
index 0000000..910b19f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/fr/scripts/wcontainer.js	
@@ -0,0 +1,218 @@
+var sankoreLang = {
+    view: "Afficher", 
+    edit: "Modifier",
+    example: "Ceci est une série de mots à séparer correctement",
+    wgt_name: "Séparer une phrase",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Séparer une phrase</h2></p>"+
+    "<p><h3>Séparer les mots d’une phrase.</h3></p>"+
+
+    "<p>Une phrase est écrite sans que les mots ne soient séparés. Le but de cette activité est d’insérer les espaces aux bons endroits. Une fois que les séparations sont placées correctement, la phrase se colore en vert.</p>"+
+
+    "<p>Pour ajouter des séparations entre les mots, déplacez le curseur et cliquez entre deux lettres, une séparation s’ajoute alors.</p>"+
+
+
+    "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
+    "<li>de déterminer la phrase sur laquelle travailler.</li></ul>"+
+
+    "<p>Ecrivez simplement une phrase dans la zone de texte.</p>"+
+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // set to 0 for no max width restriction
+    this.maxWidth = 0;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 			
+        '<div id="mp_content">' +
+        '<div class="viewmode" id="mp_view">' +
+        '</div>' +
+        '<div class="editmode" id="mp_edit">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.subcontainer = container.find( "#mp_content" );
+        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+    //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+    //this.adjustSize();
+    };
+	
+	
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/index.html
new file mode 100644
index 0000000..500b251
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/index.html	
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/app.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                         
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/scripts/wcontainer.js
new file mode 100644
index 0000000..9eb8a67
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/locales/ru/scripts/wcontainer.js	
@@ -0,0 +1,198 @@
+var sankoreLang = {
+    view: "Закрыть", 
+    edit: "Изменить",
+    example: "это группа слов которую нужно разделить",
+    wgt_name: "Разделить фразу",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // set to 0 for no max width restriction
+    this.maxWidth = 0;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 			
+        '<div id="mp_content">' +
+        '<div class="viewmode" id="mp_view">' +
+        '</div>' +
+        '<div class="editmode" id="mp_edit">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.subcontainer = container.find( "#mp_content" );
+        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+    //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+    //this.adjustSize();
+    };
+	
+	
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/app.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/app.js
new file mode 100644
index 0000000..ac172ea
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/app.js	
@@ -0,0 +1,331 @@
+//just a flag
+var flag = true;
+
+
+function createElements( phrase )
+{
+    var s = '';
+    for( var i = 0; i < phrase.length; i++ )
+    {
+        ch = phrase.charAt( i );
+        if( ch == " " ){
+            ch = " ";
+        }
+		
+        s += '<div class="letter">' + ch + '</div>' +
+        '<div class="dash"> </div>';
+    }
+    return s;
+}
+
+function createChain( phrase )
+{
+    var arr = phrase.split(" ");
+    var result = "";
+    for( var i = 0; i < arr.length; i++ )    	
+        result += '<div class="letterCont">' + createElements(arr[i]) + '</div>';    
+    return result;
+}
+
+
+$(document).ready(function()
+{    
+    var w = new wcontainer( "#ub-widget" );
+    var sentence = "";
+        
+    if(window.sankore)
+        sentence = (sankore.preference("ordSplPhrases", ""))?sankore.preference("ordSplPhrases", ""):sankoreLang.example;
+    else
+        sentence = sankoreLang.example;
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("spl_phrase_style", $("#style_select").find("option:selected").val());
+            if(w.editMode){
+                sankore.setPreference("ordSplPhrases", w.elements.container.find( "textarea" ).val());
+                sankore.setPreference("ordSplPhrasesState", "0");
+            }
+            else{
+                sankore.setPreference("ordSplPhrasesCode", $("#mp_view").html());
+                sankore.setPreference("ordSplPhrasesState", "1");
+                sankore.setPreference("ordSplPhrasesAnswer", ($("#mp_view").hasClass("answerRight"))?"answerRight":"");
+                sankore.setPreference("ordSplPhrases", w.getData("phrase"));                
+            }
+        }
+    }
+    
+    if(window.sankore && sankore.preference("spl_phrase_style","")){
+        changeStyle(sankore.preference("spl_phrase_style",""));
+    } else
+        changeStyle("3")
+    
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);    
+    
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                w.modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                w.modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {     
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    w.maxWidth = 600;
+	
+    w.setEditContent( '<div class="inputwrap"><textarea class="percent">' + sentence + '</textarea></div>' );
+    w.setViewContent( '<div class="upper"><div class="dash fixed">. </div></div>' );
+    w.setData( "dashWidth", w.elements.container.find( ".dash" ).outerWidth() );
+    w.setViewContent( '<div class="upper"><div class="dash fixed">M</div></div>' );
+    w.setData( "lineHeight", w.elements.container.find( ".dash" ).outerHeight() );
+    w.setViewContent( "" );
+	
+	
+    // onViewMode
+    w.onViewMode = function()
+    {
+        
+        // clean up the text
+        var phrase = w.elements.container.find( "textarea" ).val()
+        .replace( /\r/g, '' ).replace( /\n/g, ' ' ).replace( /  /g, ' ' ).trim();
+		
+        // store the text
+        w.setData( "phrase", phrase );
+        // remove all dots (they are to be set during the exercise)
+        //phrase = phrase.replace( / /g, '' );
+		
+        // create the html
+        if(window.sankore && sankore.preference("ordSplPhrasesState", "") == "1" && flag){
+            $("#mp_view").html(sankore.preference("ordSplPhrasesCode", ""));
+            if(sankore.preference("ordSplPhrasesAnswer", ""))
+                $("#mp_view").addClass(sankore.preference("ordSplPhrasesAnswer", ""));
+            flag = false;
+        } 
+        else
+            w.setViewContent( createChain( phrase ) );
+		
+		
+        // the behaviour
+        w.elements.containerView.find( ".letter" )
+        .mouseover( function()
+        {
+            var el = $( this ).next();
+			
+            // determine new hover class
+            var is_fixed = ( el.get( 0 ).className.indexOf( "fixed" ) != -1 );
+            var hover_class = is_fixed?
+            "dash_hover_fixed" : "dash_hover";
+			
+            // assign new hover class
+            el.addClass( hover_class )
+            .data( "hc", hover_class );
+        })
+        .mouseout( function()
+        {
+            var el = $( this ).next();
+            // remove current hover class
+            var hc = el.data( "hc" );
+            el.removeClass( hc );
+        })
+        .click( function()
+        {
+            var el = $( this ).next();
+			
+            // remove current hover class
+            $( this ).trigger( "mouseout" );
+			
+            // toggle fixed class
+            el.toggleClass( "fixed" );
+			
+            // determine new hover class
+            // assign new hover class
+            $( this ).trigger( "mouseover" );
+			
+            w.checkAnswer();
+        });
+		
+        w.checkAnswer();
+    };
+	
+    // viewSize
+    w.viewSize = function()
+    {
+        var w = 0;
+        var h = 0;
+		
+        var dh = winstance.getData( "lineHeight" );
+        var dw = winstance.getData( "dashWidth" );
+		
+        winstance.elements.containerView.find( "div:visible" ).each( function()
+        {
+            w += $( this ).outerWidth();
+            h = Math.max( h, $( this ).outerHeight( true ) );
+        });
+		
+        var square = w*h;
+        h = Math.max( h, $( winstance.elements.containerView ).height() );
+		
+        if( winstance.maxWidth )
+        {
+            w = Math.min( w, winstance.maxWidth );
+            h = parseInt( square / w );
+        }
+		
+        return {
+            w: w, 
+            h: h+dh
+        };
+    };
+	
+    // editSize
+    w.editSize = function()
+    {
+        return {
+            w: winstance.elements.containerEdit.find( "textarea" ).parent().outerWidth( true ),
+            h: winstance.elements.containerEdit.find( "textarea" ).parent().outerHeight( true )
+        };
+    };
+	
+	
+    w.checkAnswer = function()
+    {
+        var phrase = "";
+        var ch = "";
+        this.elements.containerView.find( "div:visible" ).each( function()
+        {
+            if( this.className.indexOf( "fixed" ) != -1 ){
+                phrase += ' ';
+            }
+            else if( (this.className.indexOf( "dash" ) != -1) || (this.className.indexOf( "letterCont" ) != -1) ){
+                return;
+            }
+            else{
+                ch = $( this ).html();
+                phrase += ch;
+            }
+        });
+        if( phrase == this.getData( "phrase" ) ){
+            this.elements.containerView.addClass( "answerRight" );
+        }
+        else{
+            this.elements.containerView.removeClass( "answerRight" );
+        }
+    };
+
+	
+    window.w = w;
+    window.winstance = w;
+
+    w.modeView();
+    
+    //changing the style
+    function changeStyle(val){
+        switch(val){
+            case "1":
+                $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+                $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+                $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+                $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+                $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+                $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+                $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+                $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+                $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+                $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+                $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+                $("#wgt_name").removeClass("pad_color");
+                $("#wgt_display").addClass("display_wood");
+                $("#style_select option:first").attr('selected',true);
+                $("body, html").removeClass("without_radius").addClass("radius_ft");
+                break;
+            case "2":
+                $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+                $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+                $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+                $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+                $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+                $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+                $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+                $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+                $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+                $("#wgt_help").addClass("pad_color").addClass("pad_help");
+                $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+                $("#wgt_name").addClass("pad_color");
+                $("#wgt_display").removeClass("display_wood");
+                $("#style_select option:first").next().attr('selected',true);
+                $("body, html").removeClass("without_radius").removeClass("radius_ft");
+                break;
+            case "3":
+                $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+                $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+                $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+                $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+                $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+                $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+                $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+                $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+                $("#wgt_help").addClass("pad_color").addClass("pad_help");
+                $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+                $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+                $("#wgt_name").addClass("pad_color");
+                $("#wgt_display").removeClass("display_wood");
+                $("#style_select option:last").attr('selected',true);
+                $("body, html").addClass("without_radius").removeClass("radius_ft");
+                break;
+        }
+    }
+	
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/ext.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/ext.js
new file mode 100644
index 0000000..f22c8b3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/ext.js	
@@ -0,0 +1,41 @@
+Array.prototype.shuffle = function( b )
+{
+	var i = this.length, j, t;
+	while( i )
+	{
+		j = Math.floor( ( i-- ) * Math.random() );
+		t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
+		this[i] = this[j];
+		this[j] = t;
+	}
+	return this;
+};
+
+
+String.prototype.copy = function()
+{
+	return this.substring( 0, this.length );
+};
+
+String.prototype.trim = function( ext )
+{
+	var chars = [
+		" ", "\t", "\n", "\r"
+	];
+	
+	var s = this.copy();
+	
+	if( arguments.length > 0 ){
+		for( var i in ext ){
+			chars.push( ext[i] );
+		}
+	}
+	
+	while( chars.indexOf( s.charAt( 0 ) ) != -1 ){
+		s = s.substring( 1, s.length );
+	}
+	while( chars.indexOf( s.charAt( s.length-1 ) ) != -1 ){
+		s = s.substring( 0, s.length-1 );
+	}
+	return s;
+};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/wcontainer.js
new file mode 100644
index 0000000..46f58cd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/scripts/wcontainer.js	
@@ -0,0 +1,210 @@
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "this is a bunch of words which should be split apart",
+    wgt_name: "Split a sentence",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Split a sentence</h2></p>" +
+"<p><h3> Separate words in a sentence</h3></p>" +
+"<p>The sentence is written without separations between words. The goal is to insert spaces in right places. If the result is correct, the area turns in green.</p> "+
+
+"<p>To add separations between words, move the cursor and click between two characters, a separation is then added.</p>" +
+"<p>“Reload” button resets the exercise.</p>" +
+
+
+"<p>Enter the “Edit” mode to : </p>" +
+"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li>modify the sentence (select the text field).</li></ul>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+	// some protecred variables
+	var thisInstance = this;
+	this.editMode = false;
+	var data = {}; // see setData and getData
+	
+	// widget size parameters
+	this.minHeight = 100;
+	this.minWidth = 400;
+	
+	// set to 0 for no max width restriction
+	this.maxWidth = 0;
+	
+	// links to the elements of the widget
+	this.elements = {};
+	
+	/*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+	this.create = function( containerID )
+	{
+		var html = 			
+			'<div id="mp_content">' +
+				'<div class="viewmode" id="mp_view">' +
+				'</div>' +
+				'<div class="editmode" id="mp_edit">' +
+				'</div>' +
+			'</div>';
+		
+		var container = $( containerID );
+		
+		container.append( html );
+		this.elements.edit = container.find( ".editmode" );
+		this.elements.view = container.find( ".viewmode" );
+		this.elements.container = container;
+		this.elements.subcontainer = container.find( "#mp_content" );
+		this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+		this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+		$("#wgt_edit").live("click", function(){
+			thisInstance.modeEdit();
+		} );
+		
+		$("#wgt_display").live("click", function(){
+			thisInstance.modeView();
+		} );
+	};
+	
+	
+	/*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+	this.setViewContent = function( html )
+	{
+		this.elements.container.find( "#mp_content .viewmode" ).html( html );
+	};
+	
+	/*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+	this.setEditContent = function( html )
+	{
+		this.elements.container.find( "#mp_content .editmode" ).html( html );
+	};
+	
+	
+	
+	/*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+	this.modeEdit = function()
+	{
+		this.onEditMode();
+		this.editMode = true;
+		this.elements.edit.removeClass( "hide" );
+		this.elements.view.addClass( "hide" );
+		
+		//this.adjustSize();
+	};
+	this.modeView = function()
+	{
+		this.onViewMode();
+		this.editMode = false;
+		this.elements.edit.addClass( "hide" );
+		this.elements.view.removeClass( "hide" );
+		
+		//this.adjustSize();
+	};
+	
+	
+	/*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+	this.setData = function( name, value ){
+		data[name] = value;
+	};
+	this.getData = function( name ){
+		if( typeof( data[name] ) == "undefined" ){
+			return null;
+		} else return data[name];
+	};
+	
+	
+	// redefinable methods
+	
+	/*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+	this.onEditMode = function(){
+		//
+	};
+	this.onViewMode = function(){
+		//
+	};
+	
+	/*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+	this.viewSize = function(){
+		return {
+			w: this.elements.containerView.outerWidth(),
+			h: this.elements.containerView.outerHeight()
+		};
+	};
+	this.editSize = function(){
+		return {
+			w: this.elements.containerEdit.outerWidth(),
+			h: this.elements.containerEdit.outerHeight()
+		};
+	};
+	
+	/*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+	this.checkAnswer = function()
+	{
+		//
+	};
+	
+	
+	// constructor end
+	
+	// if the constructor was called with a parameter,
+	// call create() automatically
+	if( arguments.length > 0 ){
+		this.create( containerID );
+	}
+	this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+	this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+	window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/app.css b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/app.css
new file mode 100644
index 0000000..6583e4e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/app.css	
@@ -0,0 +1,264 @@
+/* custom */
+
+#mp_view{
+	font-size: 24pt;
+	word-wrap: normal;
+}
+
+#mp_view div{
+	display: inline-block;
+	cursor: pointer;
+}
+
+#mp_view.answerRight div{
+    color: #66cc00;
+}
+
+#mp_view div.dash{
+	display: none;
+	width: 30px;
+}
+
+#mp_view div.dash_hover{
+	display: inline-block;
+	background-image: url( "separator-hover.png" );
+}
+#mp_view div.dash_hover_fixed{
+	display: inline-block;
+	background-image: url( "separator-activated.png" );
+}
+
+#mp_view div.fixed{
+	display: inline-block;
+}
+
+/*new design*/
+
+.selected{
+    
+}
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/master.css
new file mode 100644
index 0000000..d7266bc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/master.css	
@@ -0,0 +1,52 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+h1{
+    font-size:18px;
+    margin-bottom:20px;
+    margin-top:0px;
+}
+
+#ub-widget{
+    width: 100%;
+    height: 100%;    
+    min-height: 180px;
+    overflow: auto;
+    color: white;
+    word-wrap: break-word;
+}
+
+input{
+    font-size: 14pt;
+}
+
+.inputbox{
+    width:50px;
+}
+
+button{
+    width: 80px;
+}
+
+textarea{
+    font: 32px tahoma;
+    letter-spacing: 0.1em;
+    width: 98%;
+    min-height: 160px;
+    resize: vertical;
+}
+
+.inputwrap{
+
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/separator-activated.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/separator-activated.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/separator-activated.png
rename to Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/separator-activated.png
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/separator-hover.png b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/separator-hover.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/separator-hover.png
rename to Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/separator-hover.png
diff --git a/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/wcontainer.css b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/wcontainer.css
new file mode 100644
index 0000000..c78b832
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe phrase.wgt/styles/wcontainer.css	
@@ -0,0 +1,19 @@
+/* frame */
+
+#mp_setup{
+	text-align: right;
+}
+
+#mp_content{
+	margin-top: 5px;
+}
+
+.viewmode{
+	/* empty */
+}
+.editmode{
+	/* empty */
+}
+.hide{
+	display: none;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml
new file mode 100644
index 0000000..3f3b11a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/config.xml	
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.example.net/widgets/helloworld" 
+        version="1.0"
+        width="850"
+        height="400" 
+		ub:resizable="true">
+		
+		<name>Split a text [alt]</name>
+		<description>Split a text into sentences</description>
+		<preference name="skin"
+		            value="uniboard"/>
+		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/icon.svg
new file mode 100644
index 0000000..170180f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/icon.svg	
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.333">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<path fill="#33342E"  a:adobe-opacity-share="0" d="M55,15c-0.9,5.9-6.5,51.9-4.7,70.1c0.9,8.7,2.2,13,2.2,13s2.3-25.8,2.5-35.7
+			c0.2-9.9,2.6-42.4,2.4-46.4C57.3,12.1,55.4,12.6,55,15z"/>
+	</g>
+	<g>
+		<path fill="#67C8F0" d="M53,12c-0.9,5.9-6.5,51.9-4.7,70.1c0.9,8.7,2.2,13,2.2,13s2.3-25.8,2.5-35.7c0.2-9.9,2.6-42.4,2.4-46.4
+			C55.3,9.1,53.4,9.6,53,12z"/>
+	</g>
+</g>
+<rect x="13.1" y="22.8" fill="#FFFFFF" width="31.8" height="6.3"/>
+<rect x="13.1" y="32.8" fill="#FFFFFF" width="19.5" height="6.3"/>
+<rect x="37.1" y="32.8" fill="#FFFFFF" width="7.8" height="6.3"/>
+<rect x="13.1" y="43.3" fill="#FFFFFF" width="13.9" height="6.3"/>
+<rect x="61.4" y="57.4" fill="#FFFFFF" width="19.5" height="6.3"/>
+<rect x="85.4" y="57.4" fill="#FFFFFF" width="7.8" height="6.3"/>
+<rect x="61.4" y="78.3" fill="#FFFFFF" width="13.9" height="6.3"/>
+<rect x="61.4" y="67.8" fill="#FFFFFF" width="31.8" height="6.3"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html
new file mode 100644
index 0000000..35a23fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/index.html	
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="styles/master.css">
+        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="styles/app.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="scripts/app2.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang != "en"){
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                alert(lang)
+                            },
+                            200: function(){
+                                
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>                    
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/index.html
new file mode 100644
index 0000000..73a7c75
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/index.html	
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/app2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                      
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js
new file mode 100644
index 0000000..e40b9fe
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/fr/scripts/wcontainer.js	
@@ -0,0 +1,219 @@
+var sankoreLang = {
+    view: "Afficher", 
+    edit: "Modifier",
+    example: "bonjour, ceci est la première phrase. salut, c'est la deuxième phrase. bonjour à nouveau, c'est la troisième phrase. bonjour, c'est la quatrième phrase. salut, désolé, je suis en retard, je suis la cinquième phrase.",
+    wgt_name: "Séparer un texte",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: 
+    "<p><h2>Séparer un texte</h2></p>"+
+"<p><h3>Séparer les phrases d’un texte.</h3></p>"+
+    "<p>Un texte est écrit sans que les points entre les phrases n’apparaissent. Le but de cette activité est d’insérer les points aux bons endroits. Une fois que les points sont placés correctement, la phrase se colore en vert.</p>"+
+
+    "<p>Pour ajouter les points entre les phrases, déplacez le curseur et cliquez entre deux mots, un point s’ajoute alors.</p>"+
+
+
+    "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun), </li>"+
+    "<li>de déterminer le texte sur lequel travailler.</li></ul>"+
+
+    "<p>Ecrivez simplement dans la zone de texte les différentes phrases séparées par des points.<b> NB : Les points d’interrogation, les deux points “:”, les points-virgules “;” et les points d’exclamation ne sont pas pris en compte.</b></p>"+
+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // set to 0 for no max width restriction
+    this.maxWidth = 0;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+     */
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode" id="mp_view">' +
+        '</div>' +
+        '<div class="editmode" id="mp_edit">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.subcontainer = container.find( "#mp_content" );
+        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+     */
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+     */
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+     * for customization extend onEditMode and onViewMode
+     */
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+    //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+    //this.adjustSize();
+    };
+	
+	
+	
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+     */
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+     */
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+     * they are likely to be redefined for each particular widget
+     */
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+     * redefine it for each particular widget
+     */
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/index.html
new file mode 100644
index 0000000..73a7c75
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/index.html	
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/app2.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                      
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/scripts/wcontainer.js
new file mode 100644
index 0000000..b0bc311
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/locales/ru/scripts/wcontainer.js	
@@ -0,0 +1,198 @@
+var sankoreLang = {
+    view: "Закрыть", 
+    edit: "Изменить",
+    example: "привет, это первое предложение. а это второе предложение. и снова привет, это третье предложение. добрый день, это четвертое предложение. привет, извини, но я последнее предложение.",
+    wgt_name: "Разделить текст",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // set to 0 for no max width restriction
+    this.maxWidth = 0;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 			
+        '<div id="mp_content">' +
+        '<div class="viewmode" id="mp_view">' +
+        '</div>' +
+        '<div class="editmode" id="mp_edit">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.subcontainer = container.find( "#mp_content" );
+        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+    //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+    //this.adjustSize();
+    };
+	
+	
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/app2.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/app2.js
new file mode 100644
index 0000000..db3ed1a
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/app2.js	
@@ -0,0 +1,328 @@
+//just a flag
+var flag = true;
+
+function createElements( text )
+{
+    var s = '';
+	
+    var words = text.split( " " );
+	
+    for( var i = 0; i < words.length; i++ )
+    {
+        if( i ){
+            s += '<div> </div>';
+        }
+        s += '<div class="letter">' + words[i] + '</div>' + 
+        '<div class="dash">.</div>';
+    }
+	
+    return s;
+}
+
+$(document).ready(function()
+{
+    var w = new wcontainer( "#ub-widget" );
+    
+    var sentences = "";
+    
+    if(window.sankore)
+        sentences = (sankore.preference("ordSplText", ""))?sankore.preference("ordSplText", ""):sankoreLang.example;
+    else
+        sentences = sankoreLang.example;
+    
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("spl_text_style", $("#style_select").find("option:selected").val());
+            if(w.editMode){
+                sankore.setPreference("ordSplText", w.elements.container.find( "textarea" ).val());
+                sankore.setPreference("ordSplTextState", "0");
+            }
+            else{
+                sankore.setPreference("ordSplTextCode", $("#mp_view").html());
+                sankore.setPreference("ordSplTextState", "1");
+                sankore.setPreference("ordSplTextAnswer", ($("#mp_view").hasClass("answerRight"))?"answerRight":"");
+                sankore.setPreference("ordSplText", w.getData( "text" ));              
+            }
+        }
+    }
+    
+    if(sankore.preference("spl_text_style","")){
+        changeStyle(sankore.preference("spl_text_style",""));
+        $("#style_select").val(sankore.preference("spl_text_style",""));
+    } else
+        changeStyle("3")
+    
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })  
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                w.modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                w.modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    w.maxWidth = 600;
+	
+    w.setEditContent( '<div class="inputwrap"><textarea class="percent">' + sentences + '</textarea></div>' );
+    w.setViewContent( '<div class="upper"><div class="dash fixed">. </div></div>' );
+    w.setData( "dashWidth", w.elements.container.find( ".dash" ).outerWidth() );
+    w.setViewContent( '<div class="upper"><div class="dash fixed">M</div></div>' );
+    w.setData( "lineHeight", w.elements.container.find( ".dash" ).outerHeight() );
+    w.setViewContent( "" );
+	
+	
+    // onViewMode
+    w.onViewMode = function()
+    {
+        // clean up the text
+        var text = w.elements.container.find( "textarea" ).val()
+        .replace( /\r/g, '' ).replace( /\n/g, ' ' ).replace( /  /g, ' ' );
+		
+        // store the text
+        w.setData( "text", text );
+		
+        // remove all dots (they are to be set during the exercise)
+        text = text.replace( /\. /g, ' ' ).trim( ["."] );
+		
+        // create the html
+        if(sankore.preference("ordSplTextState", "") == "1" && flag){
+            $("#mp_view").html(sankore.preference("ordSplTextCode", ""));
+            if(sankore.preference("ordSplTextAnswer", ""))
+                $("#mp_view").addClass(sankore.preference("ordSplTextAnswer", ""));
+            flag = false;
+        } 
+        else
+            w.setViewContent( createElements( text ) );
+        
+		
+        // the behaviour
+        w.elements.containerView.find( ".letter" )
+        .mouseover( function()
+        {
+            var el = $( this ).next();
+			
+            // determine new hover class
+            var is_fixed = ( el.get( 0 ).className.indexOf( "fixed" ) != -1 );
+            var hover_class = is_fixed?
+            "dash_hover_fixed" : "dash_hover";
+			
+            // assign new hover class
+            el.addClass( hover_class )
+            .data( "hc", hover_class );
+        })
+        .mouseout( function()
+        {
+            var el = $( this ).next();
+            // remove current hover class
+            var hc = el.data( "hc" );
+            el.removeClass( hc );
+        })
+        .click( function()
+        {
+            var el = $( this ).next();
+			
+            // remove current hover class
+            $( this ).trigger( "mouseout" );
+			
+            // toggle fixed class
+            el.toggleClass( "fixed" );
+			
+            // determine new hover class
+            // assign new hover class
+            $( this ).trigger( "mouseover" );
+			
+            w.checkAnswer();
+        });
+		
+        w.checkAnswer();
+    };
+	
+    // viewSize
+    w.viewSize = function()
+    {
+        var w = 0;
+        var h = 0;
+		
+        var dh = winstance.getData( "lineHeight" );
+        var dw = winstance.getData( "dashWidth" );
+		
+        winstance.elements.containerView.find( "div:visible" ).each( function()
+        {
+            w += $( this ).outerWidth();
+            h = Math.max( h, $( this ).outerHeight( true ) );
+        });
+		
+        var square = w*h;
+        h = Math.max( h, $( winstance.elements.containerView ).height() );
+		
+        if( winstance.maxWidth )
+        {
+            w = Math.min( w, winstance.maxWidth );
+            h = parseInt( square / w );
+        }
+		
+        return {
+            w: w, 
+            h: h+dh
+        };
+    };
+	
+    // editSize
+    w.editSize = function()
+    {
+        return {
+            w: winstance.elements.containerEdit.find( "textarea" ).parent().outerWidth( true ),
+            h: winstance.elements.containerEdit.find( "textarea" ).parent().outerHeight( true )
+        };
+    };
+	
+	
+    w.checkAnswer = function()
+    {
+        var text = "";
+        var ch = "";
+        this.elements.containerView.find( "div:visible" ).each( function()
+        {
+            if( this.className.indexOf( "fixed" ) != -1 ){
+                text += '.';
+            }
+            else if( this.className.indexOf( "dash" ) != -1 ){
+                return;
+            }
+            else{
+                ch = $( this ).html();
+                if( ch == " " ){
+                    ch = " ";
+                }
+                text += ch;
+            }
+        });
+		
+        if( text == this.getData( "text" ) ){
+            this.elements.containerView.addClass( "answerRight" );
+        }
+        else{
+            this.elements.containerView.removeClass( "answerRight" );
+        }
+    };
+
+	
+    window.w = w;
+    window.winstance = w;
+	
+    w.modeView();
+    
+    //changing the style
+    function changeStyle(val){
+        switch(val){
+            case "1":
+                $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+                $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+                $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+                $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+                $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+                $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+                $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+                $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+                $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+                $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+                $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+                $("#wgt_name").removeClass("pad_color");
+                $("#wgt_display").addClass("display_wood");
+                $("#style_select option:first").attr('selected',true);
+                $("body, html").removeClass("without_radius").addClass("radius_ft");
+                break;
+            case "2":
+                $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+                $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+                $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+                $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+                $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+                $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+                $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+                $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+                $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+                $("#wgt_help").addClass("pad_color").addClass("pad_help");
+                $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+                $("#wgt_name").addClass("pad_color");
+                $("#wgt_display").removeClass("display_wood");
+                $("#style_select option:first").next().attr('selected',true);
+                $("body, html").removeClass("without_radius").removeClass("radius_ft");
+                break;
+            case "3":
+                $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+                $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+                $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+                $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+                $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+                $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+                $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+                $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+                $("#wgt_help").addClass("pad_color").addClass("pad_help");
+                $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+                $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+                $("#wgt_name").addClass("pad_color");
+                $("#wgt_display").removeClass("display_wood");
+                $("#style_select option:last").attr('selected',true);
+                $("body, html").addClass("without_radius").removeClass("radius_ft");
+                break;
+        }
+    }
+    
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/ext.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/ext.js
new file mode 100644
index 0000000..f22c8b3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/ext.js	
@@ -0,0 +1,41 @@
+Array.prototype.shuffle = function( b )
+{
+	var i = this.length, j, t;
+	while( i )
+	{
+		j = Math.floor( ( i-- ) * Math.random() );
+		t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
+		this[i] = this[j];
+		this[j] = t;
+	}
+	return this;
+};
+
+
+String.prototype.copy = function()
+{
+	return this.substring( 0, this.length );
+};
+
+String.prototype.trim = function( ext )
+{
+	var chars = [
+		" ", "\t", "\n", "\r"
+	];
+	
+	var s = this.copy();
+	
+	if( arguments.length > 0 ){
+		for( var i in ext ){
+			chars.push( ext[i] );
+		}
+	}
+	
+	while( chars.indexOf( s.charAt( 0 ) ) != -1 ){
+		s = s.substring( 1, s.length );
+	}
+	while( chars.indexOf( s.charAt( s.length-1 ) ) != -1 ){
+		s = s.substring( 0, s.length-1 );
+	}
+	return s;
+};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js
new file mode 100644
index 0000000..22a313c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/scripts/wcontainer.js	
@@ -0,0 +1,207 @@
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "hello, this is the first sentence. hi, this is the second sentence. hello again, this is the third sentence. good morning, this is the fourth sentence. hi, sorry, i\'m late, i\'m the fifth sentence.",
+    wgt_name: "Split a text",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2>Split a text</h2></p>" +
+"<p><h3>Separate sentences in a text</h3></p>" +
+"<p>Text is written without the dots between sentences. The goal is to split the text correctly. If the result is correct, the area turns in green.</p>" +
+"<p>To add points between sentences, move the cursor and click between two words.</p>" +
+"<p>“Reload” button resets the exercise.</p>" +
+"<p>Enter the “Edit” mode to :</p>" +
+"<ul><li>choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li>modify the text (write in the text field different phrases separated by dots.)</li></ul>" +
+"<p>Do not use question and exclamation mark.</p>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // set to 0 for no max width restriction
+    this.maxWidth = 0;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode" id="mp_view">' +
+        '</div>' +
+        '<div class="editmode" id="mp_edit">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.subcontainer = container.find( "#mp_content" );
+        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
+        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+        //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+        //this.adjustSize();
+    };
+	
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/app.css b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/app.css
new file mode 100644
index 0000000..288a4cc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/app.css	
@@ -0,0 +1,265 @@
+/* custom */
+
+#mp_view{
+    font-size: 24pt;
+    word-wrap: normal;
+}
+
+#mp_view div{
+    display: inline-block;
+    cursor: pointer;
+}
+
+#mp_view.answerRight div{
+    color: #66cc00;
+}
+
+#mp_view div.dash{
+    display: none;
+    width: 30px;
+}
+
+#mp_view div.dash_hover{
+    display: inline-block;
+    background-image: url( "separator-hover.png" );
+}
+#mp_view div.dash_hover_fixed{
+    display: inline-block;
+    background-image: url( "separator-activated.png" );
+}
+
+#mp_view div.fixed{
+    display: inline-block;
+}
+
+
+/*new design*/
+
+.selected{
+
+}
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/master.css
new file mode 100644
index 0000000..54a6415
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/master.css	
@@ -0,0 +1,50 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+h1{
+    font-size:18px;
+    margin-bottom:20px;
+    margin-top:0px;
+}
+#ub-widget{
+    width: 100%;
+    height: 100%;    
+    min-height: 180px;
+    overflow: auto;
+    color: white;
+    word-wrap: break-word;
+}
+
+input{
+    font-size: 14pt;
+}
+
+.inputbox{
+    width:50px;
+}
+
+button{
+    width: 80px;
+}
+
+textarea{
+    font: 32px tahoma;
+    letter-spacing: 0.1em;
+    width: 98%;
+    min-height: 200px;
+    resize: vertical;
+}
+.inputwrap{
+
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/separator-activated.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/separator-activated.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/separator-activated.png
rename to Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/separator-activated.png
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/separator-hover.png b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/separator-hover.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/separator-hover.png
rename to Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/separator-hover.png
diff --git a/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/wcontainer.css b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/wcontainer.css
new file mode 100644
index 0000000..c78b832
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Separe texte.wgt/styles/wcontainer.css	
@@ -0,0 +1,19 @@
+/* frame */
+
+#mp_setup{
+	text-align: right;
+}
+
+#mp_content{
+	margin-top: 5px;
+}
+
+.viewmode{
+	/* empty */
+}
+.editmode{
+	/* empty */
+}
+.hide{
+	display: none;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml
new file mode 100644
index 0000000..aa5f882
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.example.net/widgets/helloworld" 
+        version="1.0"
+        width="770"
+        height="320" 
+		ub:resizable="true">
+		
+		<name>Split a word</name>
+		<description>Split a word into syllables</description>
+		<preference name="skin"
+		            value="uniboard"/>
+		<content src="index.html"/> 
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/icon.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/icon.png
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/icon.png
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/icon.svg b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/icon.svg
new file mode 100644
index 0000000..09cee13
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/icon.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+	<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.2" baseProfile="tiny"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+	 x="0px" y="0px" width="107px" height="107px" viewBox="0 0 107 107" overflow="visible" xml:space="preserve">
+<defs>
+</defs>
+<g>
+	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="53.666" y1="0" x2="53.666" y2="107.333">
+		<stop  offset="0" style="stop-color:#727270"/>
+		<stop  offset="1" style="stop-color:#41413F"/>
+		<a:midPointStop  offset="0" style="stop-color:#727270"/>
+		<a:midPointStop  offset="0.5" style="stop-color:#727270"/>
+		<a:midPointStop  offset="1" style="stop-color:#41413F"/>
+	</linearGradient>
+	<path fill="url(#SVGID_1_)" d="M107.3,99.3c0,4.4-3.6,8-8,8H8c-4.4,0-8-3.6-8-8V8c0-4.4,3.6-8,8-8h91.3c4.4,0,8,3.6,8,8V99.3z"/>
+</g>
+<path fill="#FFFFFF" d="M65.6,64.2v-2.8h-0.1c-0.4,0.6-0.8,1.1-1.2,1.5c-0.4,0.4-0.9,0.7-1.4,1c-0.5,0.3-0.9,0.5-1.3,0.6
+	c-0.4,0.1-0.8,0.2-1.1,0.2c-0.8,0-1.4-0.1-1.8-0.2c-0.5-0.2-0.8-0.4-1-0.6v7.3h-5.5V44.4h5.5v11.2c0,1.6,0.3,2.9,0.8,3.7
+	c0.5,0.8,1.4,1.2,2.7,1.2c1.5,0,2.6-0.4,3.2-1.3s1-2.3,1-4.4V44.4h5.5v19.9H65.6z"/>
+<path fill="#FFFFFF" d="M14,44.1c0.2-1.1,0.7-2.1,1.3-3s1.6-1.6,2.7-2.2c1.2-0.6,2.7-0.8,4.7-0.8c1.2,0,2.3,0.1,3.3,0.4
+	c1.1,0.3,2,0.7,2.8,1.3c0.8,0.6,1.4,1.4,1.9,2.3c0.5,0.9,0.7,2,0.7,3.3c0,1.2-0.3,2.3-1,3.3c-0.7,1-1.5,1.7-2.6,2v0.1
+	c0.8,0.2,1.6,0.5,2.2,0.9c0.6,0.4,1.1,0.9,1.6,1.6c0.4,0.6,0.7,1.3,0.9,2.1c0.2,0.8,0.3,1.5,0.3,2.4c0,1.2-0.2,2.3-0.6,3.4
+	c-0.4,1.1-1,2-1.7,2.8c-0.7,0.8-1.6,1.5-2.6,1.9c-1,0.5-2.1,0.7-3.4,0.7c-1.1,0-2.1-0.1-3.2-0.2v-4.4c0.3,0.1,0.5,0.1,0.8,0.2
+	c0.3,0,0.5,0,0.8,0c0.7,0,1.3-0.1,1.8-0.4c0.5-0.2,1-0.6,1.4-1c0.4-0.4,0.7-0.9,0.9-1.5c0.2-0.6,0.3-1.2,0.3-1.8
+	c0-1.4-0.4-2.5-1.1-3.4c-0.8-0.9-1.9-1.3-3.6-1.3c-0.2,0-0.4,0-0.7,0c-0.2,0-0.5,0-0.7,0.1v-3.6c0.2,0,0.3,0,0.4,0.1
+	c0.1,0,0.3,0,0.4,0c0.5,0,1-0.1,1.5-0.2c0.5-0.1,0.9-0.3,1.3-0.6c0.4-0.3,0.7-0.6,0.9-1.1c0.2-0.4,0.3-0.9,0.3-1.5
+	c0-0.8-0.1-1.5-0.4-1.9c-0.3-0.4-0.6-0.8-1-1c-0.4-0.2-0.8-0.4-1.2-0.4c-0.4-0.1-0.8-0.1-1.1-0.1c-1.1,0-1.9,0.3-2.5,1
+	c-0.6,0.7-0.9,1.6-0.9,2.7v19.8h-5.5V47.4C13.7,46.3,13.8,45.2,14,44.1z"/>
+<g>
+	<g  a:adobe-opacity-share="1">
+		<path fill="#33342E"  a:adobe-opacity-share="0" d="M46.4,15c-0.9,5.9-6.5,51.9-4.7,70.1c0.9,8.7,2.2,13,2.2,13s2.3-25.8,2.5-35.7
+			c0.2-9.9,2.6-42.4,2.4-46.4S46.8,12.6,46.4,15z"/>
+	</g>
+	<g>
+		<path fill="#67C8F0" d="M44.4,12c-0.9,5.9-6.5,51.9-4.7,70.1c0.9,8.7,2.2,13,2.2,13s2.3-25.8,2.5-35.7c0.2-9.9,2.6-42.4,2.4-46.4
+			S44.8,9.6,44.4,12z"/>
+	</g>
+</g>
+<path fill="#FFFFFF" d="M76.7,54.3c0-1.6,0.2-3,0.7-4.3c0.5-1.3,1.2-2.4,2.1-3.3c0.9-0.9,2-1.6,3.2-2.1c1.3-0.5,2.7-0.8,4.2-0.8
+	c2.5,0,4.5,0.6,6.3,1.8l2-2.3l1.4,1.2l-2.1,2.3c0.8,0.9,1.5,2,2,3.2s0.7,2.7,0.7,4.2c0,1.6-0.2,3-0.7,4.3c-0.5,1.3-1.2,2.4-2.1,3.3
+	c-0.9,0.9-2,1.6-3.2,2.1c-1.3,0.5-2.7,0.7-4.2,0.7c-2.5,0-4.6-0.6-6.3-1.9l-2.3,2.5l-1.4-1.2l2.3-2.6C77.6,59.7,76.7,57.3,76.7,54.3
+	z M87,47.9c-0.9,0-1.7,0.2-2.3,0.6c-0.6,0.4-1.1,0.9-1.5,1.4c-0.4,0.6-0.6,1.3-0.8,2c-0.2,0.8-0.2,1.6-0.2,2.3c0,0.6,0,1.2,0.1,1.7
+	c0.1,0.6,0.2,1.1,0.4,1.6l7.4-8.5C89.4,48.4,88.3,47.9,87,47.9z M85.1,60.3c0.5,0.2,1.2,0.3,1.9,0.3c0.9,0,1.7-0.2,2.3-0.5
+	s1.1-0.8,1.5-1.4c0.4-0.6,0.6-1.3,0.8-2c0.2-0.8,0.2-1.5,0.2-2.3c0-0.6-0.1-1.2-0.2-1.8c-0.1-0.6-0.3-1.2-0.5-1.7l-7.5,8.5
+	C84.1,59.8,84.5,60.1,85.1,60.3z"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bg.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom.png
new file mode 100644
index 0000000..31e6afd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_left.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_left.png
new file mode 100644
index 0000000..31d1741
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_right.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_right.png
new file mode 100644
index 0000000..ec6e186
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/bottom_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/left.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/left.png
new file mode 100644
index 0000000..270652a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-left.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-left.png
new file mode 100644
index 0000000..9a2bb34
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-right.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-right.png
new file mode 100644
index 0000000..82d24c3
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom.png
new file mode 100644
index 0000000..4560a69
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-bottom.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-left.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-left.png
new file mode 100644
index 0000000..60c9fa4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-right.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-right.png
new file mode 100644
index 0000000..e31482c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-left.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-left.png
new file mode 100644
index 0000000..ea0d756
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-right.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-right.png
new file mode 100644
index 0000000..5d22aa6
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top-right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top.png
new file mode 100644
index 0000000..8dae00d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/pad-top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/right.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/right.png
new file mode 100644
index 0000000..0dec63b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top.png
new file mode 100644
index 0000000..78d6ac4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_left.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_left.png
new file mode 100644
index 0000000..8280ab4
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_left.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_right.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_right.png
new file mode 100644
index 0000000..fe0286d
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/img/top_right.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html
new file mode 100644
index 0000000..dcbdbbb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/index.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="styles/master.css">
+        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="styles/spl-word.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="scripts/spl-word.js"></script>
+        <script type="text/javascript">
+            if (parent && parent.loaded)
+                parent.loaded();
+
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);
+                var lang = ""; //locale language
+                if(window.sankore){
+                    lang = sankore.locale().substr(0,2);    
+                } else 
+                    lang = "en";
+                if(lang != "en"){
+                    returnStatus(lang);
+                }
+                
+                function returnStatus(lang){
+                    $.ajax({
+                        type: 'POST',
+                        url:'locales/' + lang + '/index.html',
+                        statusCode: {
+                            404: function() {
+                                alert(lang)
+                            },
+                            200: function(){                                
+                                window.location.href = 'locales/' + lang + '/index.html';
+                            }
+                        }
+                    });                    
+                }                
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/index.html
new file mode 100644
index 0000000..46752ab
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/index.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/spl-word.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/spl-word.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                           
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js
new file mode 100644
index 0000000..c0859bc
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/fr/scripts/wcontainer.js
@@ -0,0 +1,209 @@
+var sankoreLang = {
+    view: "Afficher", 
+    edit: "Modifier",
+    example: "so*phis*ti*qué",
+    wgt_name: "Syllabes",
+    reload: "Recharger",
+    slate: "ardoise",
+    pad: "tablette",
+    none: "aucun",
+    help: "Aide",
+    help_content: "<p><h2>Syllabes</h2></p>"+
+    "<p><h3>Séparer les syllabes d’un mot.</h3></p>"+
+
+    "<p>Un mot est écrit et le but est de découper le mot en syllabes. Une fois que le découpage est correct, le mot se colore en vert.</p>"+
+    "<p>Pour ajouter une séparation entre deux syllabes, déplacez le curseur et cliquez entre deux lettres, une séparation s’ajoute. </p>"+
+
+    "<p>Le bouton “Recharger” réinitialise l’exercice.</p>"+
+
+    "<p>Le bouton “Modifier” vous permet :</p>"+
+    "<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette), </li>"+
+    "<li>de déterminer le mot sur lequel travailler.</li></ul>"+
+
+    "<p>Ecrivez simplement dans la zone de texte le mot en insérant entre les syllabes une étoile *.</p>"+
+
+    "<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>",
+    theme: "Thème"
+
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode">' +
+        '</div>' +
+        '<div class="editmode">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.containerView = container.find( "#mp_content .viewmode" );
+        this.elements.containerEdit = container.find( "#mp_content .editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+    //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+    //this.adjustSize();
+    };
+	
+
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/index.html
new file mode 100644
index 0000000..46752ab
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/index.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+        <title>Template</title>
+
+        <!--Styles-->
+        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
+        <link rel="stylesheet" type="text/css" href="../../styles/spl-word.css">
+        <!--Scripts-->
+        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
+        <script type="text/javascript" src="../../scripts/ext.js"></script>
+        <script type="text/javascript" src="scripts/wcontainer.js"></script>
+        <script type="text/javascript" src="../../scripts/spl-word.js"></script>
+        <script type="text/javascript">
+            $(document).ready(function(){
+                if(window.sankore)
+                    sankore.enableDropOnWidget(false);                           
+            });
+        </script>
+    </head>
+
+    <body>
+        <table class="body_table" cellpadding=0 cellspacing=0>
+            <tr style="height: 54px;">
+                <td class="b_top_left"> </td>
+                <td class="b_top_center">
+                    <div id="wgt_name"></div>
+                    <div id="wgt_help"></div> 
+                    <div id="wgt_reload"></div>                    
+                    <div id="wgt_display" class="selected"></div>
+                    <div id="wgt_edit"></div>
+                </td>
+                <td class="b_top_right"> </td>
+            </tr>
+
+            <tr>
+                <td class="b_center_left"> </td>
+                <td>
+                    <div id="help"></div>
+                    <div id="ub-widget">
+                        <div id="parameters">
+                            <div class="inline">
+                                <label>
+                                    <select id="style_select">
+                                        <option value="1"></option>
+                                        <option value="2"></option>
+                                        <option value="3"></option>
+                                    </select>
+                                </label>
+                            </div>
+                        </div>
+                    </div>
+                </td>
+                <td class="b_center_right"> </td>
+            </tr>     
+
+            <tr style="height: 54px;">
+                <td class="b_bottom_left"> </td>
+                <td class="b_bottom_center"> </td>
+                <td class="b_bottom_right"> </td>
+            </tr>
+        </table>
+    </body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/scripts/wcontainer.js
new file mode 100644
index 0000000..cde55e7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/locales/ru/scripts/wcontainer.js
@@ -0,0 +1,194 @@
+var sankoreLang = {
+    view: "Закрыть", 
+    edit: "Изменить",
+    example: "слож*ный",
+    wgt_name: "Разделить слово",
+    reload: "Обновить",
+    slate: "Узор",
+    pad: "Планшет",
+    none: "Нет",
+    help: "Помощь",
+    help_content: "Пример текста помощи ...",
+    theme: "Тема"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode">' +
+        '</div>' +
+        '<div class="editmode">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.containerView = container.find( "#mp_content .viewmode" );
+        this.elements.containerEdit = container.find( "#mp_content .editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+        //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+        //this.adjustSize();
+    };
+	
+
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/ext.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/ext.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/ext.js
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/ext.js
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/jquery-1.6.2.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/jquery-1.6.2.min.js
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/jquery-1.6.2.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/jquery-ui-1.8.9.custom.min.js
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/jquery-ui-1.8.9.custom.min.js
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/jquery-ui-1.8.9.custom.min.js
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/spl-word.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/spl-word.js
new file mode 100644
index 0000000..9c2309d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/spl-word.js
@@ -0,0 +1,263 @@
+//just a flag
+var flag = true;
+
+function createWord( word )
+{
+    var s = '';
+    for( var i = 0; i < word.length; i++ )
+    {
+        ch = word.charAt( i );
+        s += 
+        '<span class="upper">' +
+        '<span>' + ch + '</span>' +
+        (( i < word.length - 1 ) ?
+            '<span class="dash">–</span>' : '' ) +
+        '</span>';
+    }
+    return s;
+}
+
+var w;
+
+$(document).ready(function()
+{
+    var w = new wcontainer( "#ub-widget" );
+    var words = "";
+        
+    if(window.sankore)
+        words = (sankore.preference("ordSplWords", ""))?sankore.preference("ordSplWords", ""):sankoreLang.example;
+    else
+        words = sankoreLang.example;
+    
+    w.setEditContent( '<div class="inputwrap"><input class="percent" value="' + words + '"></div>' );
+    w.setViewContent( '<span class="upper"><span class="dash fixed">—</span></span>' );
+    w.setData( "dashWidth", w.elements.container.find( "span.dash" ).outerWidth() );
+    w.setViewContent( "" );
+
+    if (window.widget) {
+        window.widget.onleave = function(){
+            sankore.setPreference("spl_word_style", $("#style_select").find("option:selected").val());
+            if(w.editMode){
+                sankore.setPreference("ordSplWords", w.elements.container.find( "input" ).val().trim( ['*'] ));
+                sankore.setPreference("ordSplWordsState", "0");
+            }
+            else{
+                sankore.setPreference("ordSplWordsCode", $(".viewmode").html());
+                sankore.setPreference("ordSplWordsState", "1");
+                sankore.setPreference("ordSplWordsAnswer", ($("#ub-widget").hasClass("answerRight"))?"answerRight":"");
+                sankore.setPreference("ordSplWords", w.getData( "word" ));              
+            }
+        }
+    }
+
+    if(sankore.preference("spl_word_style","")){
+        changeStyle(sankore.preference("spl_word_style",""));
+        $("#style_select").val(sankore.preference("spl_word_style",""));
+    } else
+        changeStyle("3")
+
+    $("#wgt_display").text(sankoreLang.view);
+    $("#wgt_edit").text(sankoreLang.edit);
+    $("#wgt_help").text(sankoreLang.help);
+    $("#help").html(sankoreLang.help_content);    
+    $("#style_select option[value='1']").text(sankoreLang.slate);
+    $("#style_select option[value='2']").text(sankoreLang.pad);
+    $("#style_select option[value='3']").text(sankoreLang.none);
+    
+    var tmpl = $("div.inline label").html();
+    $("div.inline label").html(sankoreLang.theme + tmpl)
+    
+    $("#style_select").change(function (event){
+        changeStyle($(this).find("option:selected").val());
+    })
+    
+    $("#wgt_display, #wgt_edit").click(function(event){
+        if(this.id == "wgt_display"){
+            if(!$(this).hasClass("selected")){                
+                $(this).addClass("selected");
+                $("#wgt_edit").removeClass("selected");
+                $("#parameters").css("display","none");                
+                $(this).css("display", "none");
+                $("#wgt_edit").css("display", "block");
+                w.modeView();
+            }
+        } else {            
+            if(!$(this).hasClass("selected")){
+                $(this).addClass("selected");
+                $("#wgt_display").removeClass("selected");
+                $("#parameters").css("display","block");                
+                $(this).css("display", "none");
+                $("#wgt_display").css("display", "block");
+                w.modeEdit();
+            }
+        }
+    });
+    
+    $("#wgt_name").text(sankoreLang.wgt_name);
+    
+    $("#wgt_help").click(function(){
+        var tmp = $(this);
+        if($(this).hasClass("open")){
+            $(this).removeClass("help_pad").removeClass("help_wood")
+            $("#help").slideUp("100", function(){
+                tmp.removeClass("open");
+                $("#ub-widget").show();
+            });
+        } else {            
+            ($("#style_select").val() == 1)?$(this).removeClass("help_pad").addClass("help_wood"):$(this).removeClass("help_wood").addClass("help_pad");
+            $("#ub-widget").hide();
+            $("#help").slideDown("100", function(){
+                tmp.addClass("open");
+            });
+        }
+    });
+    
+    $("#wgt_reload").text(sankoreLang.reload).click(function(){
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+
+    // onViewMode
+    w.onViewMode = function()
+    {
+        var word = w.elements.container.find( "input" ).val().trim( ['*'] );
+        w.setData( "word", word );
+        word = word.replace( /\*/g, '' );
+        
+        if(sankore.preference("ordSplWordsState", "") == "1" && flag){
+            $(".viewmode").html(sankore.preference("ordSplWordsCode", ""));
+            if(sankore.preference("ordSplWordsAnswer", ""))
+                $("#ub-widget").addClass(sankore.preference("ordSplWordAnswer", ""));
+            flag = false;
+        } 
+        else
+            w.setViewContent( createWord( word ) );
+        
+        w.elements.container.find( "span.upper" ).click( function(){
+            $( this ).find( "span.dash" ).toggleClass( "fixed" );
+            w.checkAnswer();
+        });
+        w.checkAnswer();
+    };
+	
+    // viewSize
+    w.viewSize = function()
+    {
+        var w = 0;
+        var h = 0;
+		
+        winstance.elements.containerView.find( "span.upper span:visible" ).each( function()
+        {
+            w += $( this ).outerWidth();
+            h = Math.max( h, $( this ).outerHeight() );
+        });
+        var dw = winstance.getData( "dashWidth" );
+		
+        return {
+            w: w+dw, 
+            h: h
+        };
+    };
+	
+    // editSize
+    w.editSize = function()
+    {
+        return {
+            w: winstance.elements.containerEdit.find( "input" ).outerWidth( true ),
+            h: winstance.elements.containerEdit.find( "input" ).outerHeight( true )
+        };
+    };
+	
+	
+    w.checkAnswer = function()
+    {
+        var word = "";
+        this.elements.container.find( "span.upper span:visible" ).each( function()
+        {
+            if( this.className.indexOf( "fixed" ) != -1 ){
+                word += '*';
+            }
+            else if( this.className.indexOf( "dash" ) != -1 ){
+                return;
+            }
+            else{
+                word += $( this ).text();
+            }
+        });
+		
+        if( word == this.getData( "word" ) ){
+            this.elements.container.addClass( "answerRight" );
+        }
+        else{
+            this.elements.container.removeClass( "answerRight" );
+        }
+    };
+
+	
+    window.w = w;
+    window.winstance = w;
+	
+    w.modeView();
+    
+    //changing the style
+    function changeStyle(val){
+        switch(val){
+            case "1":
+                $(".b_top_left").removeClass("btl_pad").removeClass("without_back");
+                $(".b_top_center").removeClass("btc_pad").removeClass("without_back");
+                $(".b_top_right").removeClass("btr_pad").removeClass("without_back");
+                $(".b_center_left").removeClass("bcl_pad").removeClass("without_back");
+                $(".b_center_right").removeClass("bcr_pad").removeClass("without_back");
+                $(".b_bottom_right").removeClass("bbr_pad").removeClass("without_back");
+                $(".b_bottom_left").removeClass("bbl_pad").removeClass("without_back");
+                $(".b_bottom_center").removeClass("bbc_pad").removeClass("without_back");
+                $("#wgt_reload").removeClass("pad_color").removeClass("pad_reload");
+                $("#wgt_help").removeClass("pad_color").removeClass("pad_help");
+                $("#wgt_edit").removeClass("pad_color").removeClass("pad_edit");
+                $("#wgt_name").removeClass("pad_color");
+                $("#wgt_display").addClass("display_wood");
+                $("#style_select option:first").attr('selected',true);
+                $("body, html").removeClass("without_radius").addClass("radius_ft");
+                break;
+            case "2":
+                $(".b_top_left").addClass("btl_pad").removeClass("without_back");
+                $(".b_top_center").addClass("btc_pad").removeClass("without_back");
+                $(".b_top_right").addClass("btr_pad").removeClass("without_back");
+                $(".b_center_left").addClass("bcl_pad").removeClass("without_back");
+                $(".b_center_right").addClass("bcr_pad").removeClass("without_back");
+                $(".b_bottom_right").addClass("bbr_pad").removeClass("without_back");
+                $(".b_bottom_left").addClass("bbl_pad").removeClass("without_back");
+                $(".b_bottom_center").addClass("bbc_pad").removeClass("without_back");
+                $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+                $("#wgt_help").addClass("pad_color").addClass("pad_help");
+                $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+                $("#wgt_name").addClass("pad_color");
+                $("#wgt_display").removeClass("display_wood");
+                $("#style_select option:first").next().attr('selected',true);
+                $("body, html").removeClass("without_radius").removeClass("radius_ft");
+                break;
+            case "3":
+                $(".b_top_left").addClass("without_back").removeClass("btl_pad");
+                $(".b_top_center").addClass("without_back").removeClass("btc_pad");
+                $(".b_top_right").addClass("without_back").removeClass("btr_pad");
+                $(".b_center_left").addClass("without_back").removeClass("bcl_pad");
+                $(".b_center_right").addClass("without_back").removeClass("bcr_pad");
+                $(".b_bottom_right").addClass("without_back").removeClass("bbr_pad");
+                $(".b_bottom_left").addClass("without_back").removeClass("bbl_pad");
+                $(".b_bottom_center").addClass("without_back").removeClass("bbc_pad");
+                $("#wgt_help").addClass("pad_color").addClass("pad_help");
+                $("#wgt_reload").addClass("pad_color").addClass("pad_reload");
+                $("#wgt_edit").addClass("pad_color").addClass("pad_edit");
+                $("#wgt_name").addClass("pad_color");
+                $("#wgt_display").removeClass("display_wood");
+                $("#style_select option:last").attr('selected',true);
+                $("body, html").addClass("without_radius").removeClass("radius_ft");
+                break;
+        }
+    }
+	
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js
new file mode 100644
index 0000000..489fe74
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/scripts/wcontainer.js
@@ -0,0 +1,205 @@
+var sankoreLang = {
+    view: "Display", 
+    edit: "Edit",
+    example: "so*phis*ti*ca*ted",
+    wgt_name: "Syllables",
+    reload: "Reload",
+    slate: "slate",
+    pad: "pad",
+    none: "none",
+    help: "Help",
+    help_content: 
+"<p><h2> Syllables </h2></p>" +
+"<p><h3> Separate the syllables of a word</h3></p>" +
+
+"<p>The goal is split the word correctly. If the result is correct, the area turns in green. </p>" +
+"<p>To add a separation between two syllables, move the cursor and click between two characters.</p>" +
+"<p>“Reload” button resets the exercise. </ P>" +
+
+"<p>Enter the “Edit” mode to : </p>" +
+"<ul><li> choose the theme of the App : pad, slate, or none (by default : none),</li>" +
+"<li>modify the word (write in the text field and separate syllables with *).</li> </ul>" +
+"<p>“Display” button comes back to the activity.</p>",
+    theme: "Theme"
+};
+
+// if use the "view/edit" button or rely on the api instead
+var isSankore = false;
+// whether to do window.resize or not (window = widget area)
+var isBrowser = ( typeof( widget ) == "undefined" );
+
+function wcontainer( containerID )
+{
+    // some protecred variables
+    var thisInstance = this;
+    this.editMode = false;
+    var data = {}; // see setData and getData
+	
+    // widget size parameters
+    this.minHeight = 100;
+    this.minWidth = 400;
+	
+    // links to the elements of the widget
+    this.elements = {};
+	
+    /*
+	============
+	create
+	============
+	- creates html base, inits this.elements, assings events
+	*/
+    this.create = function( containerID )
+    {
+        var html = 
+        '<div id="mp_content">' +
+        '<div class="viewmode">' +
+        '</div>' +
+        '<div class="editmode">' +
+        '</div>' +
+        '</div>';
+		
+        var container = $( containerID );
+		
+        container.append( html );
+        this.elements.edit = container.find( ".editmode" );
+        this.elements.view = container.find( ".viewmode" );
+        this.elements.container = container;
+        this.elements.containerView = container.find( "#mp_content .viewmode" );
+        this.elements.containerEdit = container.find( "#mp_content .editmode" );
+		
+        $("#wgt_edit").live("click", function(){
+            thisInstance.modeEdit();
+        } );
+		
+        $("#wgt_display").live("click", function(){
+            thisInstance.modeView();
+        } );
+    };
+	
+	
+    /*
+	===============
+	setViewContent
+	===============
+	- assigns custom html to the viewmode container
+	*/
+    this.setViewContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .viewmode" ).html( html );
+    };
+	
+    /*
+	===============
+	setEditContent
+	===============
+	- assigns custom html to the editmode container
+	*/
+    this.setEditContent = function( html )
+    {
+        this.elements.container.find( "#mp_content .editmode" ).html( html );
+    };
+	
+	
+	
+    /*
+	=========================
+	modeEdit and modeView
+	=========================
+	- switch the widget betweed modes
+	* for customization extend onEditMode and onViewMode
+	*/
+    this.modeEdit = function()
+    {
+        this.onEditMode();
+        this.editMode = true;
+        this.elements.edit.removeClass( "hide" );
+        this.elements.view.addClass( "hide" );
+		
+        //this.adjustSize();
+    };
+    this.modeView = function()
+    {
+        this.onViewMode();
+        this.editMode = false;
+        this.elements.edit.addClass( "hide" );
+        this.elements.view.removeClass( "hide" );
+		
+        //this.adjustSize();
+    };
+	
+
+    /*
+	======================
+	setData and getData
+	======================
+	- store some data inside
+	*/
+    this.setData = function( name, value ){
+        data[name] = value;
+    };
+    this.getData = function( name ){
+        if( typeof( data[name] ) == "undefined" ){
+            return null;
+        } else return data[name];
+    };
+	
+	
+    // redefinable methods
+	
+    /*
+	==========================
+	onEditMode and onViewMode
+	==========================
+	- these are called when the mode is being changed
+	*/
+    this.onEditMode = function(){
+    //
+    };
+    this.onViewMode = function(){
+    //
+    };
+	
+    /*
+	======================
+	viewSize and editSize
+	======================
+	- calculate container size for the adjustSize method
+	* they are likely to be redefined for each particular widget
+	*/
+    this.viewSize = function(){
+        return {
+            w: this.elements.containerView.outerWidth(),
+            h: this.elements.containerView.outerHeight()
+        };
+    };
+    this.editSize = function(){
+        return {
+            w: this.elements.containerEdit.outerWidth(),
+            h: this.elements.containerEdit.outerHeight()
+        };
+    };
+	
+    /*
+	=====================
+	checkAnswer
+	=====================
+	- check if the exercise in the view mode was done right
+	* redefine it for each particular widget
+	*/
+    this.checkAnswer = function()
+    {
+    //
+    };
+	
+	
+    // constructor end
+	
+    // if the constructor was called with a parameter,
+    // call create() automatically
+    if( arguments.length > 0 ){
+        this.create( containerID );
+    }
+    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
+    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
+    window.winstance = thisInstance;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/master.css
new file mode 100644
index 0000000..2cad7c0
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/master.css
@@ -0,0 +1,52 @@
+html, body{
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;    
+    border-radius: 35px;
+    overflow: hidden;
+    font-family: sans-serif;
+}
+
+body{
+    background-image: url(../img/bg.png);
+}
+
+h1{
+    font-size:18px;
+    margin-bottom:20px;
+    margin-top:0px;
+}
+
+#ub-widget{
+    width: 100%;
+    height: 100%;    
+    min-height: 180px;
+    overflow: auto;
+    color: white;
+    word-wrap: break-word;
+}
+
+input{
+    font-size: 14pt;
+}
+
+.inputbox{
+    width:50px;
+}
+
+button{
+    width: 80px;
+}
+
+input.percent{
+    width: 100%;
+    margin: 0px; padding: 0px;
+    border-width: 0px;
+}
+.inputwrap{
+    border-style: solid;
+    border-width: 1px;
+    border-color: #dbdfe6;
+    border-top-color: #abadb3;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/separator-activated.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/separator-activated.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/separator-activated.png
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/separator-activated.png
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/separator-hover.png b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/separator-hover.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/separator-hover.png
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/separator-hover.png
diff --git a/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/spl-word.css b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/spl-word.css
new file mode 100644
index 0000000..5ef9ca2
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/spl-word.css
@@ -0,0 +1,266 @@
+/* custom */
+
+#mp_content span.upper{
+    font-size: 24pt;
+    cursor: pointer;
+}
+#mp_content span.upper span.dash{
+    display: none;
+    color: black;
+    text-align: center;
+}
+#mp_content span.upper:hover span.dash{
+    display: inline-block;
+    width: 30px; height: 30px;
+    background-image: url( "separator-hover.png" );
+    background-position: 0px 5px;
+    color: transparent;
+}
+
+#mp_content span.upper span.fixed{
+    display: inline-block;
+    color: #66cc00;
+    width: 30px; height: 30px;
+    background-image: none;
+}
+#mp_content span.upper:hover span.fixed, #mp_content span.upper span.fixed:hover{
+    color: transparent;
+    width: 30px; height: 30px;
+    background-image: url( "separator-activated.png" );
+    background-position: 0px 5px;
+}
+
+.answerRight span.upper{
+    color: #66cc00;
+}
+
+/*new design*/
+
+.selected{
+
+}
+
+.body_table{
+    width: 100%;
+    height: 100%;
+    border-spacing: 0;
+}
+
+/*top*/
+
+.b_top_left{
+    width: 54px;
+    background-image: url(../img/top_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_right{
+    width: 54px;
+    background-image: url(../img/top_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_top_center{
+    height: 54px;
+    background-image: url(../img/top.png);
+    background-repeat: repeat-x;
+}
+
+/*bottom*/
+
+.b_bottom_left{
+    width: 54px;
+    background-image: url(../img/bottom_left.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_right{
+    width: 54px;
+    background-image: url(../img/bottom_right.png);
+    background-repeat: no-repeat;
+}
+
+.b_bottom_center{
+    background-image: url(../img/bottom.png);
+    background-repeat: repeat-x;
+}
+
+/*center*/
+
+.b_center_left{
+    width: 54px;
+    background-image: url(../img/left.png);
+    background-repeat: repeat-y;
+}
+
+.b_center_right{
+    width: 54px;
+    background-image: url(../img/right.png);
+    background-repeat: repeat-y;
+}
+
+#data{
+    width: 100%;
+    height: 100%;    
+    min-height: 250px;
+    overflow: auto;
+}
+
+#wgt_name{
+    height: 44px;
+    margin: 10px 10px 0 10px;
+    padding: 0;
+    float: left;
+    font-family: sans-serif;
+    font-size: 24px;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload, #wgt_edit, #wgt_display, #wgt_help{
+    cursor: pointer;
+    margin: 10px 10px 0 0;
+    float: right;
+    font-family: sans-serif;
+    font-size: 24px;    
+    line-height: 32px;
+}
+
+#wgt_display{
+    padding-left: 35px;
+    background: url(../img/toolbar-edit.png) left -32px no-repeat;
+    color: white;
+    display: none;
+}
+
+#wgt_edit{    
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-edit.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#wgt_reload{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-reload.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+.btl_pad{
+    background-image: url(../img/pad-top-left.png) !important;
+}
+
+.btc_pad{
+    background-image: url(../img/pad-top.png) !important;
+}
+
+.btr_pad{
+    background-image: url(../img/pad-top-right.png) !important;
+}
+
+.bcl_pad{
+    background-image: url(../img/pad-left.png) !important;
+}
+
+.bcr_pad{
+    background-image: url(../img/pad-right.png) !important;
+}
+
+.bbl_pad{
+    background-image: url(../img/pad-bottom-left.png) !important;
+}
+
+.bbc_pad{
+    background-image: url(../img/pad-bottom.png) !important;
+}
+
+.bbr_pad{
+    background-image: url(../img/pad-bottom-right.png) !important;
+}
+
+.without_radius{
+    border-radius: 0 !important;
+}
+
+.without_back{
+    background: none !important;
+}
+
+.pad_color{
+    color: #FC9 !important;
+    text-shadow: none !important;
+}
+
+.pad_reload{
+    background: url(../img/toolbar-reload.png) left top no-repeat !important;
+}
+
+.pad_edit{
+    background: url(../img/toolbar-edit.png) left top no-repeat !important;    
+}
+
+.pad_help{
+    background: url(../img/toolbar-help.png) left top no-repeat !important;
+}
+
+.help_wood{
+    background: url(../img/slate-toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+    text-shadow: #7F613F 0 -1px 0 !important;
+}
+
+.help_pad{
+    background: url(../img/toolbar-help.png) left -32px no-repeat !important;
+    color: white !important;
+}
+
+#wgt_help{
+    padding-left: 35px;
+    background: url(../img/slate-toolbar-help.png) left top no-repeat;
+    color: #7F613F;
+    text-shadow: #FFDCA9 0 1px 0;
+}
+
+#help{
+    height: 100%;    
+    overflow: auto;
+    display: none;
+    background-color: #ccc;
+    padding: 5px;
+}
+
+.open{
+
+}
+
+#parameters{    
+    display: none;
+    padding: 10px 20px;
+    background: url("../img/parameters-bg.png");
+    border-radius: 4px 4px 0 0;
+}
+
+.inline{
+    display: inline-block;
+    font-family: sans-serif;
+    font-size: 14px;
+    color: #666;
+}
+
+#parameters label {
+    font-style: italic;
+}
+
+#style_select{   
+    margin-left: 10px;
+}
+
+.display_wood{
+    background: url(../img/slate-toolbar-edit.png) left -32px no-repeat !important;
+    text-shadow: #7F613F 0 -1px 0;
+}
+
+.radius_ft{
+    border-radius: 45px !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/wcontainer.css b/Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/wcontainer.css
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/wcontainer.css
rename to Sankore-3.1/resources/library/interactivities/Syllabes.wgt/styles/wcontainer.css
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Tables.wgt/config.xml
new file mode 100644
index 0000000..5336399
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/tableur" 
+        version="1.0"
+        width="850"
+        height="750" 
+        ub:resizable="false">     
+   
+		<name>Tableur</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description>Compléter une table d'opération</description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/rature.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/rature.png
new file mode 100644
index 0000000..215201e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/rature.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/sens-lecture.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/sens-lecture.png
new file mode 100644
index 0000000..67d31c1
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/sens-lecture.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/table-bg.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/table-bg.png
new file mode 100644
index 0000000..36af3a5
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/table-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/main.css
new file mode 100644
index 0000000..b7c98ee
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/main.css
@@ -0,0 +1,102 @@
+#lecture {
+	position: absolute;
+	background: url("images/sens-lecture.png") left top no-repeat;
+	width: 50px;
+	height: 40px;
+	left: -25px;
+	top: -25px;
+}
+
+#table {
+	display: table;
+	table-layout: fixed;
+	text-align: center;
+	border-collapse: collapse;
+	font-family: "SFToontimeRegular";
+	font-size: 24px;
+	color: #FFF;
+	margin-top: 25px;
+}
+
+#table > div {
+	display: table-row;
+	border-top: 1px solid #999;
+	border-bottom: 1px solid #999;	
+}
+
+#table > div:first-child, #table > div:first-child > div {
+	border-top: none;
+	border-bottom: 1px solid #FFF;
+}
+
+#table > div:last-child, #table > div:last-child > div {
+	border-bottom: none;
+	height: 18px;
+}
+
+#table > div > div {
+	display: table-cell;
+	width: 52px;
+	height: 35px;
+	border-left: 1px solid #999;
+	border-right: 1px solid #999;
+	position: relative;	
+}
+
+#table > div > div:first-child {
+	border-left: none;
+	border-right: 1px solid #FFF;
+	width: 25px;
+}
+
+#table > div > div:last-child {
+	border-right: none;
+	width: 25px;
+}
+
+#table .head {
+	width: 100%;
+	height: 100%;
+}
+
+#table .head, .card > div {
+	line-height: 35px;
+}
+
+.card {
+	cursor: pointer;
+}
+
+.card-container {
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+}
+
+.card > div:first-child {
+	background: url("images/rature.png") center no-repeat;
+	text-indent: -99999px;
+}
+.card > div:last-child {
+	visibility: hidden;
+}
+
+.card > div:last-child > div {
+	display: inline;
+	font-size: 13px;
+}
+.card.flip > div:first-child {
+	visibility: hidden;
+}
+.card.flip > div:last-child {
+	visibility: visible;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Tables.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..4c0997c
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages.properties
@@ -0,0 +1,16 @@
+fr.njin.i18n.document.title = Tables
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.tableur.parameters.label.operator = Operation
+fr.njin.i18n.tableur.parameters.label.row = Row(s)
+fr.njin.i18n.tableur.parameters.label.col = Column(s)
+fr.njin.i18n.tableur.parameters.label.reste = Afficher le reste de la division
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..1872cf5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,16 @@
+fr.njin.i18n.document.title = Tables
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.tableur.parameters.label.operator = Opération
+fr.njin.i18n.tableur.parameters.label.row = Ligne(s)
+fr.njin.i18n.tableur.parameters.label.col = Colonne(s)
+fr.njin.i18n.tableur.parameters.label.reste = Afficher le reste de la division
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Tables.wgt/icon.png
new file mode 100644
index 0000000..9248360
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Tables.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Tables.wgt/index.html
new file mode 100644
index 0000000..3eda5a2
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-operator="*" data-reste="true" data-row="10" data-col="10" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help-template.js
new file mode 100644
index 0000000..109656e
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help-template.js
@@ -0,0 +1,17 @@
+<h3> Tables</h3>
+<h4> Mental calculation, properties of operations </h4>
+
+<p>With the table App you can work on properties of the various operations and review tables of addition, subtraction, multiplication, and division. Click on the case to display or to hide the answer.</p>
+
+<p>The arrow on the board indicates the sense of reading.</p>
+
+<p> Reload "button resets the exercise. </p>
+
+
+<p> Enter the "Edit" mode to choose the : </p>
+
+<ul> <li>  theme of interactivity : pad, slate or none (by default : pad),</li>
+<li> desired operation: addition, subtraction, multiplication or division,</ li>
+<li> number of rows and columns (1 to 12). </li> </ul>
+
+<p> "Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..0cba609
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/help_fr-template.js
@@ -0,0 +1,15 @@
+<h3>Tables</h3>
+<h4>Calcul mental,  propriétés des opérations</h4>
+
+<p>L’interactivité permet de réviser les tables d’addition, de soustraction, de multiplication et de division et de vérifier certaines propriétés.</p>
+
+<p>La flèche sur le tableau indique le sens de lecture.</p>
+
+<p>Le bouton “Recharger” réinitialise l’exercice.</p>
+
+<p>Le bouton "Modifier" vous permet de choisir : </p>
+<ul><li>le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+<li>l’opération souhaitée : addition, soustraction, multiplication ou division,</li>
+<li>le nombre de lignes et de colonnes (1 à 12).</li></ul>
+
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/main.js
new file mode 100644
index 0000000..72a6105
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/main.js
@@ -0,0 +1,95 @@
+function head(text) {
+	var c = $("<div/>");
+	c.addClass("head");	
+	c.text(text);
+	return c;
+}
+function cell(text) {
+	if(isNaN(text) || text === Infinity)
+		text = "-";
+	else
+		text = parseInt(text);
+	var c = $("<div/>");
+	c.text(text);
+	return c;
+}
+
+function onTemplateLoadedCallback() {
+	$("select[name=row], select[name=col]").each(function(i, select) {
+		var min = $(select).data("min");
+		var max = $(select).data("max");
+		for(var i = min ; i <= max ; i++) {
+			var option = $("<option/>");
+			option.val(i);
+			option.text(i);
+			$(select).append(option);
+		}
+	});
+}
+
+function reloadCallback(parameters) {
+	var row = parseInt(this.parameters.value("row"));
+	var col = parseInt(this.parameters.value("col"));
+	var operator = this.parameters.value("operator");
+	var showReste = this.parameters.value("reste");
+	showReste = typeof showReste === "string" ? showReste === "true" : showReste;
+	
+	var scene = $("#scene");
+	var table = $("<div id='table'/>");
+	scene.empty();
+	scene.append(table);
+				
+	for(var i=-1 ; i<=row ; i++) {
+		var r = $("<div/>");
+		table.append(r);
+							
+		if(i!=-1) {
+			var rh = $("<div/>");
+			rh.append(head(i));
+			r.append(rh);
+		}else{
+			var op = $("<div/>");
+			op.append("<div id='lecture'/>");
+			op.append(head(operator));
+			r.append(op);
+		}
+
+		for(var j=0 ; j<=col ; j++) {
+			var c = $("<div/>");
+			r.append(c);
+			
+			if(i==-1) {
+				c.append(head(j));
+			}else{
+				c.addClass("card-container");
+				var card = $("<div class='card'/>");
+				c.append(card);
+				card.append(cell("?"));					
+				var compute = cell(eval(i+operator+j));
+				card.append(compute);
+				if(operator === "/" && showReste)
+					compute.append(cell(eval(i%j)));
+			}
+		}
+		var c = $("<div/>");
+		r.append(c);
+	}
+	
+	var r = $("<div/>");
+	table.append(r);
+	for(var j=0 ; j<=col+2 ; j++) {
+		var c = $("<div/>");
+		r.append(c);
+	}
+	
+	$(".card>div").click(function(){
+		$(this).parent().toggleClass("flip");
+	});
+}
+
+$(document).ready(function(){
+	var callbacks = {
+		onTemplatesLoaded: onTemplateLoadedCallback
+	};
+	init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/templates.js
new file mode 100644
index 0000000..50b8faf
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Tables.wgt/js/templates.js
@@ -0,0 +1,46 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+						
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.tableur.parameters.label.operator}}'+
+					'<select name="operator" role="parameter">'+
+						'<option value="*">*</option>'+
+						'<option value="+">+</option>'+						
+						'<option value="-">-</option>'+						
+						'<option value="/">/</option>'+						
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.tableur.parameters.label.row}}'+ 
+					'<select name="row" role="parameter" data-min="1" data-max="12">'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.tableur.parameters.label.col}}'+ 
+					'<select name="col" role="parameter" data-min="1" data-max="12">'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div style="display:none;">'+
+				'<label>{{fr.njin.i18n.tableur.parameters.label.reste}}'+ 
+					'<input type="checkbox" name="reste" role="parameter">'+
+				'</label>'+
+			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Train.wgt/config.xml
new file mode 100644
index 0000000..e529ce1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/Le train" 
+        version="1.0"
+        width="940"
+        height="580" 
+        ub:resizable="false">     
+   
+		<name>Le train</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description></description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/main.css
new file mode 100644
index 0000000..1cba172
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/main.css
@@ -0,0 +1,59 @@
+#labels,
+#drops {
+	text-align: center;
+}
+
+#labels {
+	margin-bottom: 40px;
+}
+
+#labels > div,
+#drops > div {
+	display: inline-block;	
+	vertical-align: middle;
+}
+
+#labels > div+div,
+#drops > div+div {
+	margin-left: 20px;
+}
+
+#labels .label {
+	padding: 5px 10px;
+	width: 60px;
+	font-size: 28px;
+	color: #000;
+	background-color: #FFF;
+	border-radius: 2px;
+
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	   -moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+		-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+			box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	
+	background-image: linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -o-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -moz-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -webkit-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -ms-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+
+	background-image: -webkit-gradient(
+		linear,
+		50% top,
+		50% bottom,
+		color-stop(0, rgb(255,255,255)),
+		color-stop(1, rgb(204,204,204))
+	);
+}
+
+#drops > .drop {
+	width: 80px;
+	height: 44px;
+	border-radius: 2px;
+	box-shadow: inset 0px 0px 4px #000;
+}
+
+#drops .operator {
+	font-size: 18px;
+	color: #FFF;
+}
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Train.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..b71dfbe
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages.properties
@@ -0,0 +1,15 @@
+fr.njin.i18n.document.title = Train
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.train.parameters.label.count = Number of labels
+fr.njin.i18n.train.parameters.label.range = Magnitude
+fr.njin.i18n.train.parameters.label.operator = Order
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..f09f0b7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,15 @@
+fr.njin.i18n.document.title = Train
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.train.parameters.label.count = Nombre de chiffres
+fr.njin.i18n.train.parameters.label.range = Ordre de grandeur
+fr.njin.i18n.train.parameters.label.operator = Opérateur
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Train.wgt/icon.png
new file mode 100644
index 0000000..c0bad89
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Train.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Train.wgt/index.html
new file mode 100644
index 0000000..63c10b9
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/index.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-ui-1.8.17.custom.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-themes="pad" data-count="3" data-range="10" data-operator="<">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/help-template.js
new file mode 100644
index 0000000..25f6b19
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/help-template.js
@@ -0,0 +1,16 @@
+ <h3> Train </h3>
+<h4>Ascending or descending numbers</h4>
+ 
+<p>The goal is to put the numbers in the correct order by dragging and dropping labels to the right place.</p>
+
+<p>Interactivity does not correct the exercise.</p>
+ 
+<p>"Reload" button generates new labels numbers.</p>
+<p>Enter the "Edit" mode to choose :</p>
+
+<ul><li> choose the theme of interactivity : pad, slate or none (by default : pad),</li>
+<li>the number of labels (2-6),</li>
+<li>magnitude of proposed numbers,</li>
+<li>the order to class numbers (ascending or descending).</li></ul>
+
+<p>"Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..337f3b5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/help_fr-template.js
@@ -0,0 +1,16 @@
+<h3>Train</h3>
+<h4>Ranger par ordre croissant ou décroissant des nombres.</h4>
+ 
+<p>L’interactivité permet de travailler l'ordre croissant ou décroissant des nombres. Le but est de replacer les nombres dans le bon ordre en glissant-déposant les étiquettes au bon endroit.</p>
+
+<p>L'interactivité ne corrige pas le placement des nombres dans la série.</p>
+ 
+<p>Le bouton “Recharger” génère automatiquement de nouvelles étiquettes de nombres.</p>
+
+<p>Le bouton "Modifier" vous permet de choisir :</p>
+<ul><li>le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+<li>le nombre d'éléments à ranger (2 à 6),</li>
+<li>l’ordre de grandeur des nombres proposés,</li>
+<li>l’ordre dans lequel classer les nombres (croissant ou décroissant).</li></ul>
+ 
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-ui-1.8.17.custom.min.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
new file mode 100644
index 0000000..56f6b38
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery-ui-1.8.17.custom.min.js
@@ -0,0 +1,253 @@
+/*!
+ * 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 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
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..c5121b1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/lib/ubw-main.js
@@ -0,0 +1,279 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+    console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+    document.title = fr.njin.i18n.document.title;
+	
+    var ubwidget = $("#ubwidget");
+	
+    var parameters = Object.create(Parameters,{
+        container: {
+            value: ubwidget
+        },
+        delegate: {
+            value: window.sankore || Object.create(ParametersDelegate)
+        }
+    });
+	
+    var app = Object.create(App, {
+        container: {
+            value: ubwidget
+        },
+        parameters: {
+            value: parameters
+        },
+        reload: {
+            value: reload
+        }
+    });
+
+    app.init();
+    app.onEdit = false;
+	
+    if(templates.toolbar) {
+        $("#toolbar").html(Mustache.render(templates.toolbar, window));
+    }
+    if(templates.parameters) {
+        $("#parameters").html(Mustache.render(templates.parameters, window));
+    }
+	
+    if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+        callbacks.onTemplatesLoaded(app);
+    }
+	
+    log("Update setting views with stored parameters");
+    $("#parameters (input|select)[role=parameter]").each(function(i, input) {
+        (function(input){
+            var key = input.name;
+            var type = input.type;
+            var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+            var stored = parameters.value(key);
+            if(isRadioOrcheckbox)
+                $(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+            else
+                $(input).val(stored);
+            $(input).change(function(){
+                var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+                parameters.value(key, val);
+                if(key != "themes"){
+                    parameters.value("show", "3");
+                    app.reload();                   
+                }
+            });
+        })(input);
+    });
+	
+    log("Toobar Initialisation");
+    $("button[role=edit]").click(function(){
+        app.onEdit = true;
+        $(document.body).addClass("onEdit");
+        if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+            parameters.value("show", "1");
+            callbacks.onEdit(app);
+        }
+    });
+    $("button[role=view]").click(function(){
+        app.onEdit = false;		
+        $(document.body).removeClass("onEdit");
+        if(callbacks.onView && typeof callbacks.onView === 'function') {
+            parameters.value("show", "2");
+            callbacks.onView(app);
+        }
+    });
+    $("button[role=reload]").click(function(){
+        parameters.value("show", "3");
+        app.reload();
+    });
+    $("button[role=help]").click(function(){
+        $("body").toggleClass("showHelp");
+    });
+	
+    $("select[name='themes']").change(function() {
+        $("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+        $("body").addClass("theme-"+$(this).val());
+    });
+    $("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+    var locale = window.sankore ? sankore.locale() : "";
+    $.i18n.properties({
+        name: 'Messages', 
+        path: 'i18n/',
+        language: locale,
+        callback: function(){ 
+            initAfterI18nMessagesLoaded(reload, templates, callbacks);
+        }
+    });
+}
+
+var Parameters = (function(){
+    var self = Object.create({}, {
+        container: {
+            value: null
+        },
+        delegate: {
+            value: null
+        },
+        value: {
+            value: function(key, value) {
+                if(value === undefined) {
+                    var val = this.delegate.preference(key);
+                    log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+                    return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+                }
+                else {
+                    log("Set parameter value ["+value+"] for key : ["+key+"]");
+                    this.delegate.setPreference(key, value);
+                    this.container.trigger("preferenceChange", {
+                        key: key, 
+                        value: value
+                    });	                    
+                }
+            }
+        }
+    });
+    return self;
+})();
+
+var ParametersDelegate = (function(){
+    var self = Object.create({}, {
+        preference: {
+            value: function(key) {
+                return this[key];
+            }
+        },
+        setPreference: {
+            value: function(key, value) {
+                this[key] = value;
+            }
+        }
+    });
+    return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+        container: {
+            value: null
+        },
+        parameters: {
+            value: null
+        },
+        init: {
+            value: function() {
+                var that = this;
+                this.container.bind("preferenceChange", function(evt, parameter) {
+                    that.reload(parameter);
+                });
+                this.reload();
+            }
+        },
+        reload: {
+            value: function(parameter) {
+                if(parameter === undefined)
+                    log("Reload");
+                else
+                    log("Update");
+            }
+        },
+        utils: {
+            value: Object.create({}, {
+                shuffle: {
+                    value: function(array) {
+                        var unpickedSize = array.length;
+                        while(unpickedSize > 0) {
+                            var n = Math.floor(Math.random()*unpickedSize);
+                            var temp = array[unpickedSize-1];
+                            array[unpickedSize-1] = array[n];
+                            array[n] = temp;
+                            unpickedSize--;
+                        }
+                    }
+                },
+                guid: {
+                    value: function() {
+                        var S4 = function() {
+                            return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+                        };
+                        return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+                    }
+                },
+                droppable: {
+                    value: function($e, callback) {							
+                        $e.bind("dragover", function(){
+                            $(this).addClass("hover");
+                            return false;
+                        });
+                        $e.bind("dragleave", function(){
+                            $(this).removeClass("hover");
+                            return false;
+                        });
+                        $e.bind("drop", function(e){
+                            $(this).removeClass("hover");
+                            e = e || window.event;
+                            e.preventDefault();
+                            // jQuery wraps the originalEvent, so we try to detect that here...
+                            e = e.originalEvent || e;
+							
+                            if(window.sankore) {
+                                function stringToXML(text){
+                                    if (window.ActiveXObject){
+                                        var doc=new ActiveXObject('Microsoft.XMLDOM');
+                                        doc.async='false';
+                                        doc.loadXML(text);
+                                    } else {
+                                        var parser=new DOMParser();
+                                        doc=parser.parseFromString(text,'text/xml');
+                                    }
+                                    return doc;
+                                }
+                                var file = stringToXML(e.dataTransfer.getData("text/plain"));
+                                callback({
+                                    src: $(file).find("path:eq(0)").text()
+                                });
+                                return false;
+                            }
+
+                            // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+                            var files = (e.files || e.dataTransfer.files);
+                            for (var i = 0; i < files.length; i++) {
+                                // Loop through our files with a closure so each of our FileReader's are isolated.
+                                (function (i) {
+                                    if(typeof FileReader !== "undefined") {
+                                        var reader = new FileReader();
+                                        reader.onload = function (event) {
+                                            callback({
+                                                src: event.target.result,
+                                                title: (files[i].name),
+                                                alt: (files[i].name)
+                                            });
+                                        };
+                                        reader.readAsDataURL(files[i]);
+                                    }
+                                })(i);
+                            }
+                            return false;
+                        });
+                    }
+                }
+            })
+        }
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/main.js
new file mode 100644
index 0000000..33104a5
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/main.js
@@ -0,0 +1,117 @@
+var just_a_flag = false;
+
+function onTemplateLoadedCallback() {
+
+}
+
+function revert($e) {
+    var elmt = $e.css("left","auto").css("top", "auto").removeClass("inBox").get(0);
+    if(elmt)
+        elmt.className = elmt.className.replace(/(d(\d+))/, "");
+}
+
+function getN(range) {
+    if(range > 1)
+        return Math.floor(Math.random()*range);
+    else if(range == 1)
+        return Math.round(Math.random()*10)/10; 
+    else if(range == 0.1)
+        return Math.round(Math.random()*0.1*100)/100; 
+}
+
+function reloadApp(app) {
+    var operator = app.parameters.value("operator");
+    var range = parseFloat(app.parameters.value("range"));
+    var count = parseInt(app.parameters.value("count"));
+    var show = app.parameters.value("show");
+    if(!just_a_flag){
+        just_a_flag = true;
+        show = "3";
+    }
+    switch(show){
+        case "1":
+            $("#labels div div").each(function(){
+                $(this).css("top","auto").css("left","auto")
+            })
+            break;
+        case "2":
+            break;
+        default:
+            $scene = $("#scene");
+            $scene.empty();
+
+            $labels = $("<div id='labels'></div>");
+            $scene.append($labels);
+
+            $drops = $("<div id='drops'></div>");
+            $scene.append($drops);
+
+            var meeted = [];
+
+            for (var i = 0; i < count; i++) {
+
+                var n = getN(range);
+		
+                while($.inArray(n, meeted) != -1)
+                    n = getN(range);
+
+                meeted.push(n);
+	
+                $label = $("<div id='l"+i+"' class='label'>"+n+"</div>");
+                $labels.append($label);
+                $label.wrap("<div/>");
+
+                $label.draggable({
+                    containment: "#scene",
+                    scroll: false,
+                    snap: ".drop",
+                    snapMode: "inner"
+                });
+
+                $drop = $("<div id='d"+i+"' class='drop'></div>");
+                $drops.append($drop);
+                $drop.droppable({
+                    hoverClass: "ui-state-hover",
+                    activeClass: "ui-state-active",  
+                    greedy: true,
+                    drop: function(event, ui) {
+                        var id = $(this).attr("id");
+                        var $current = $(".inBox."+id);
+                        if($current.size() > 0 && $current.attr("id") != ui.draggable.attr("id"))
+                            revert($current);
+                        ui.draggable.get(0).className = ui.draggable.get(0).className.replace(/(d(\d+))/, "");
+                        ui.draggable.addClass("inBox").addClass(id);
+                    }
+                });
+                if(i != count-1) {
+                    $("<div class='operator'>"+operator+"</div>").appendTo($drops);
+                }
+            }
+
+            $scene.droppable({
+                drop: function(event, ui) {
+                    revert(ui.draggable);
+                }
+            });
+            break;
+    }
+	
+    
+}
+
+function reloadCallback(parameter) {
+    if(parameter === undefined)
+        reloadApp(this);
+}
+
+$(document).ready(function(){
+    var callbacks = {
+        onTemplatesLoaded: onTemplateLoadedCallback,
+        onEdit: reloadApp,
+        onView: reloadApp
+    };
+    init(reloadCallback, {
+        toolbar: toolbarTemplate, 
+        parameters: parametersTemplate
+    }, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Train.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/templates.js
new file mode 100644
index 0000000..f53d27d
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Train.wgt/js/templates.js
@@ -0,0 +1,49 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+				
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.train.parameters.label.count}}'+
+					'<select name="count" role="parameter">'+
+						'<option value="2">2</option>'+
+						'<option value="3">3</option>'+						
+						'<option value="4">4</option>'+						
+						'<option value="5">5</option>'+						
+						'<option value="6">6</option>'+						
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.train.parameters.label.range}}'+
+					'<select name="range" role="parameter">'+
+						'<option value="0.1">< 0.1</option>'+
+						'<option value="1">< 1</option>'+
+						'<option value="10">< 10</option>'+
+						'<option value="100">< 100</option>'+						
+						'<option value="1000">< 1000</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.train.parameters.label.operator}}'+
+					'<select name="operator" role="parameter">'+
+						'<option value="<"><</option>'+
+						'<option value=">">></option>'+					
+					'</select>'+
+				'</label>'+
+			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml
new file mode 100644
index 0000000..44588cf
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/config.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" 
+		xmlns:ub="http://uniboard.mnemis.com/widgets"
+        id="http://www.njin.fr/sankore/apps/tableur" 
+        version="1.0"
+        width="1050"
+        height="560" 
+        ub:resizable="true">     
+   
+		<name>La boite à transformation</name>
+		<author href="http://www.njin.fr" email="contact at njin.fr">njin</author>
+		<description></description>
+		
+		<content src="index.html"/>
+</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/bg.png
new file mode 100644
index 0000000..61c3c6f
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/box-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/box-bg.png
new file mode 100644
index 0000000..de8715b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/box-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/card-closed-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/card-closed-bg.png
new file mode 100644
index 0000000..fcb1d2b
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/card-closed-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-bg.png
new file mode 100644
index 0000000..dd4c4cd
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-ondrop-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-ondrop-bg.png
new file mode 100644
index 0000000..d540126
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/drop-label-ondrop-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pad-bd.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pad-bd.png
new file mode 100644
index 0000000..91b7c70
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pad-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/parameters-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/parameters-bg.png
new file mode 100644
index 0000000..36f648e
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/parameters-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-bg.png
new file mode 100644
index 0000000..6d694da
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-with-card-bg.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-with-card-bg.png
new file mode 100644
index 0000000..c169942
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/pile-with-card-bg.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-bd.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-bd.png
new file mode 100644
index 0000000..bc8bded
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-bd.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-edit.png
new file mode 100644
index 0000000..f3896d0
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-help.png
new file mode 100644
index 0000000..fb7cdeb
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-reload.png
new file mode 100644
index 0000000..844169a
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/slate-toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-edit.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-edit.png
new file mode 100644
index 0000000..daa338c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-edit.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-help.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-help.png
new file mode 100644
index 0000000..6c4454c
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-help.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-reload.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-reload.png
new file mode 100644
index 0000000..340d737
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/images/toolbar-reload.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/main.css b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/main.css
new file mode 100644
index 0000000..3c06922
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/main.css
@@ -0,0 +1,237 @@
+#edit-cards {
+	padding: 20px 0;
+	overflow-x: auto;
+	white-space: nowrap;
+}
+
+#edit-cards > div {
+	display: inline-block;
+}
+
+#edit-cards > div .label {
+
+}
+
+#edit-cards > div .switch,
+#edit-cards > div .label {
+	margin-bottom: 5px;
+}
+
+#edit-cards > div .cards {
+	padding: 20px;	
+
+	background-color: rgba(0, 0, 0, 0.15);
+
+	-webkit-border-radius: 10px;
+	   -moz-border-radius: 10px;
+		-ms-border-radius: 10px;
+			border-radius: 10px;
+}
+
+#edit-cards > div + div {
+	margin-left: 30px;
+}
+
+#edit-cards div[rel="before"],
+#edit-cards div[rel="after"] {
+	display: inline-block;
+	vertical-align: top;
+}
+
+#edit-cards div[rel="after"] {
+	margin-left: 20px;
+}
+
+.card {
+	position: relative;
+	white-space: normal;
+	width: 180px;
+	height: 180px;
+	
+	overflow: hidden;
+	
+	-webkit-border-radius: 8px;
+	   -moz-border-radius: 8px;
+		-ms-border-radius: 8px;
+			border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	   -moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+		-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+			box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	
+	background-image: linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -o-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -moz-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -webkit-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+	background-image: -ms-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
+
+	background-image: -webkit-gradient(
+		linear,
+		50% top,
+		50% bottom,
+		color-stop(0, rgb(255,255,255)),
+		color-stop(1, rgb(204,204,204))
+	);
+}
+
+.card > div {
+	display: table-cell;
+	vertical-align: middle;
+	text-align: center;
+	width: 180px;
+	height: 180px;
+}
+
+.card .text {
+	padding: 0px 20px;
+	font-family: "SFToontimeRegular";
+	font-size: 28px;
+	color: #000;
+}
+
+.usePicture .card .text {
+	display: none;
+}
+
+
+.card .picture {
+	display: none;
+	
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	
+	-webkit-border-radius: 8px;
+	   -moz-border-radius: 8px;
+		-ms-border-radius: 8px;
+			border-radius: 8px;
+}
+
+.usePicture .card .picture {
+	display: block;
+}
+
+.card .picture > div {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	
+	-webkit-border-radius: 8px;
+	   -moz-border-radius: 8px;
+		-ms-border-radius: 8px;
+			border-radius: 8px;
+}
+
+.card .picture > div:first-child {
+	position: relative;
+	display: table-cell;
+	vertical-align: middle;
+	width: 180px;
+	height: 180px;	
+}
+.card .picture > div img {
+	max-width: 100%;
+	max-height: 100%;
+	vertical-align: middle;
+}
+
+.card .picture > div.dropzone {
+	border: 1px dashed black;
+}
+
+.card .picture > div.dropzone div {
+	padding: 10px 10px 10px 50px;
+	text-align: left;
+	color: rgba(255, 255, 255, 0.5);
+	background: rgba(0, 0, 0, 0.4) url("images/drop-label-bg.png") 10px center no-repeat;
+	
+	-webkit-border-radius: 8px 8px 0 0;
+	   -moz-border-radius: 8px 8px 0 0;
+		-ms-border-radius: 8px 8px 0 0;
+			border-radius: 8px 8px 0 0;
+}
+
+.card .picture > div.dropzone.hover div {
+	background-image: url("images/drop-label-ondrop-bg.png");
+	color: rgba(255, 255, 255, 1);
+}
+
+#edit-cards .cards .label {
+	margin-top: 5px;
+	text-align: center;
+	font-style: italic;
+	text-shadow: 0 1px 0 #FFF;
+}
+
+#table {
+	display: table;
+	width: 840px;
+}
+
+#table > div {
+	display: table-cell;
+	vertical-align: middle;
+}
+
+#table > .deck {
+	width: 180px;
+	height: 180px;
+	background: url("images/pile-bg.png") center no-repeat;
+}
+
+#table > .deck > div {
+	height: 180px;
+	position: relative;
+	/*background: url("images/pile-with-card-bg.png") center no-repeat;*/
+	-webkit-border-radius: 8px;
+	   -moz-border-radius: 8px;
+		-ms-border-radius: 8px;
+			border-radius: 8px;
+}
+
+#table > .deck.empty > div {
+	background: none;
+}
+
+#table .box {
+	padding: 0 100px;
+	width: 280px;
+	height: 260px;
+}
+
+#table .box > div {
+	position: relative;
+	width: 100%;
+	height: 100%;
+	background: url("images/box-bg.png") center no-repeat;
+}
+
+#table .part {
+	position: absolute;
+	width: 100%;
+	top: 0;
+	left: 0;
+	bottom: 0;
+}
+
+.deck.before .part {
+	cursor: pointer;
+}
+
+.part.closed:after {
+	content: " ";
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	width: 100%;
+	background: url("images/card-closed-bg.png") center no-repeat;
+	-webkit-border-radius: 8px;
+	   -moz-border-radius: 8px;
+		-ms-border-radius: 8px;
+			border-radius: 8px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-help.css b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-help.css
new file mode 100644
index 0000000..57c83fd
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-help.css
@@ -0,0 +1,46 @@
+html, body {
+	margin:0;
+	padding: 0;
+	height: 100%;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#body {
+	
+}
+
+#core {
+	width: 100%;
+	height: 100%;
+	
+	position: relative;
+	
+	-webkit-border-radius: 8px;
+	-moz-border-radius: 8px;
+	-ms-border-radius: 8px;
+	border-radius: 8px;
+	
+	-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
+	background-image: linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
+	background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
+}
+
+#core .wrapper {
+	width: 100%;
+	height: 100%;
+	
+	overflow: auto;
+}
+
+#core .wrapper > div {
+	padding: 10px 20px;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css
new file mode 100644
index 0000000..66280eb
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/css/ubw-main.css
@@ -0,0 +1,308 @@
+html, body {
+	margin:0;
+	padding: 0;
+	font-family: "helvetica neue";
+	font-size: 14px;
+	color: #666666;
+}
+
+#ubwidget {
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	background: url("images/bg.png");
+}
+
+.theme-pad #ubwidget {
+	border-radius: 40px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/pad-bd.png") 52 repeat;
+	   -moz-border-image: url("images/pad-bd.png") 52 repeat;
+			border-image: url("images/pad-bd.png") 52 repeat;
+}
+
+.theme-slate #ubwidget {
+	border-radius: 44px;
+	border-width: 52px;
+	
+	-webkit-border-image: url("images/slate-bd.png") 52 repeat;
+	   -moz-border-image: url("images/slate-bd.png") 52 repeat;
+			border-image: url("images/slate-bd.png") 52 repeat;
+}
+
+#ubwidget > .wrapper {
+	position: absolute;
+	top: 0px;
+	bottom: 0px;
+	left: 0px;
+	right: 0px;
+	overflow: hidden;
+}
+
+
+.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
+	position: absolute;
+	top: -49px;
+	bottom: -5px;
+	left: -5px;
+	right: -5px;
+	overflow: hidden;
+}
+
+#toolbar {
+	display: table;
+	width: 100%;
+	height: 44px;
+	font-size: 24px;
+	color: #FFCC99;
+	padding:0 10px;
+}
+
+.theme-pad #toolbar, .theme-slate #toolbar {
+	height: 38px;
+	padding: 6px 0 0;
+}
+
+.theme-slate #toolbar {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+
+#toolbar > * {
+	display: table-cell;
+	height: 100%;
+	vertical-align: middle;
+}
+
+#toolbar .actions {
+	text-align: right;
+}
+
+#toolbar button, h1 {
+	font-weight: normal;
+	font-size: 24px;
+	color: #FFCC99;
+	margin: 0;
+}
+
+.theme-slate #toolbar button, .theme-slate h1 {
+	color: #7F613F;
+	text-shadow: #FFDCA9 0 1px 0;
+}
+
+#toolbar button {
+	border: none;
+	padding: none;
+	outline: none;
+	background: none;
+	
+	cursor: pointer;
+	padding-left: 34px;
+	margin-left: 10px;
+	height: 32px;
+}
+
+#toolbar button span {
+	display: block;
+	line-height: 32px;
+}
+
+#toolbar button[role='edit'] {
+	background: url("images/toolbar-edit.png") left top no-repeat;	
+}
+
+#toolbar button[role='view'] {
+	display: none;
+	color: #FFF;
+	background: url("images/toolbar-edit.png") left -32px no-repeat;
+}
+
+#toolbar button[role='reload'] {
+	background: url("images/toolbar-reload.png") left top no-repeat;	
+}
+
+#toolbar button[role='help'] {
+	background: url("images/toolbar-help.png") left top no-repeat;	
+	display: none;
+}
+
+.hasHelp #toolbar button[role='help'] {
+	display: inline-block;
+}
+
+.showHelp #toolbar button[role='help'] {
+	color: #FFF;
+	background-position: left -32px;
+}
+
+.theme-slate #toolbar button[role='edit'] {
+	background-image: url("images/slate-toolbar-edit.png");
+}
+
+.theme-slate #toolbar button[role='view'] {
+	text-shadow: #7F613F 0 -1px 0;
+	background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
+}
+
+.theme-slate #toolbar button[role='reload'] {
+	background-image: url("images/slate-toolbar-reload.png");
+}
+
+.theme-slate #toolbar button[role='help'] {
+	background-image: url("images/slate-toolbar-help.png");
+}
+
+.showHelp.theme-slate #toolbar button[role='help'] {
+	text-shadow: #7F613F 0 -1px 0;
+}
+
+
+.onEdit #toolbar button[role='view'] {
+	display: inline-block;
+}
+
+.onEdit #toolbar button[role='edit'] {
+	display: none;
+}
+
+#help {
+	width: 300px;
+	height: 400px;
+	position: absolute;
+	margin-top: 10px;
+	right: 10px;
+	z-index: 10000;
+	display: none;
+}
+
+.showHelp #help {
+	display: block;
+}
+
+#content {
+	position: absolute;
+	top: 44px;
+	bottom: 0;
+	overflow: auto;
+	left: 0;
+	right: 0;
+
+	background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+	background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
+}
+
+#parameters {
+	display:none;
+	padding: 10px 20px;
+	background: url("images/parameters-bg.png");
+	
+	-webkit-border-radius: 4px 4px 0 0;
+	   -moz-border-radius: 4px 4px 0 0;
+		-mz-border-radius: 4px 4px 0 0;
+			border-radius: 4px 4px 0 0;
+}
+
+#parameters label {
+	font-style: italic;
+}
+
+#parameters  label > select, #parameters  label > input{
+	margin-left: 10px;
+}
+
+#parameters > div.inline {
+	display: inline-block;
+}
+
+#parameters > div.inline+div.inline {
+	margin-left: 20px;
+}
+
+#parameters input[type=text],
+#parameters input[type=number] {
+	height: 26px;
+	border: 1px solid #BBB;
+	background-color: #FFF;
+	
+	padding: 0 4px;
+	
+	-webkit-border-radius: 4px;
+	   -moz-border-radius: 4px;
+	    -ms-border-radius: 4px;
+			border-radius: 4px;
+	
+	-webkit-box-shadow: 0 1px 0 #FFF;
+	   -moz-box-shadow: 0 1px 0 #FFF;
+	    -ms-box-shadow: 0 1px 0 #FFF;
+			box-shadow: 0 1px 0 #FFF;
+}
+
+#parameters input.tiny {
+	width: 40px;
+}
+
+#parameters input.small {
+	width: 80px;
+}
+
+#parameters input.medium {
+	width: 120px;
+}
+
+#parameters input.long {
+	width: 160px;
+}
+
+#scene {
+	padding: 20px;
+}
+
+#scene > * {
+	margin: 0 auto;
+}
+.onEdit #scene {
+}
+
+.onEdit #parameters {
+	display: block;
+}
+
+/*
+.card-container {
+  	-webkit-perspective: 600px;
+	width:100%;
+	height: 100%;
+}
+.card {
+	position: relative;
+	width:100%;
+	height: 100%;
+}
+.card > div {
+	position: absolute;
+	width:100%;
+	height: 100%;
+	-webkit-transform-style: preserve-3d;
+  	-webkit-transition: all .5s ease-in-out;
+	-webkit-backface-visibility: hidden;
+}
+.card > div:first-child {
+	-webkit-transform: rotateY( 0deg );
+}
+.card > div:last-child {
+	-webkit-transform: rotateY( -180deg );
+}
+.card.flip > div:first-child {
+	-webkit-transform: rotateY( 180deg );
+}
+.card.flip > div:last-child {
+	-webkit-transform: rotateY( 0deg );
+}
+*/
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html
new file mode 100644
index 0000000..c8cd974
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/help.html
@@ -0,0 +1,58 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	<link rel="stylesheet" href="css/ubw-help.css">
+
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+</head>
+
+<body>
+    <div id="core">
+		<div class="wrapper">
+			<div>
+				<script>
+					function loadFile(filename, locale) {
+						var toload = filename;
+						var nextlocale = undefined;
+						
+						if(locale.length >= 5) {
+							toload += '_' + locale.substring(0, 5) +'-template.js';
+							nextlocale = locale.substring(0, 2);
+						}
+							
+						else if(locale.length >= 2){
+							toload += '_' + locale.substring(0, 2) +'-template.js';
+							nextlocale = '';
+						}
+						else
+							toload += '-template.js';
+						    
+						$.ajax({
+					        url:        toload,
+					        async:      false,
+					        contentType:'text/plain;charset=UTF-8',
+					        dataType:   'text',
+					        success:    function(data, status) {
+											$("#core>.wrapper>div").html(Mustache.render(data, window));                   
+										}
+						})
+						.fail(function() {
+									if(nextlocale !== undefined)
+										loadFile(filename, nextlocale);
+						});
+					}
+					$(document).ready(function(){
+						var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
+						loadFile("js/help", locale);
+					});
+				</script>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages.properties b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages.properties
new file mode 100644
index 0000000..a0805a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages.properties
@@ -0,0 +1,19 @@
+fr.njin.i18n.document.title = Magic box
+
+fr.njin.i18n.toolbar.edit = Edit
+fr.njin.i18n.toolbar.view = Display
+fr.njin.i18n.toolbar.reload = Reload
+fr.njin.i18n.toolbar.help = Help
+
+fr.njin.i18n.parameters.label.themes = Theme
+fr.njin.i18n.parameters.label.slate.themes = slate
+fr.njin.i18n.parameters.label.pad.themes = pad
+fr.njin.i18n.parameters.label.none.themes = none
+
+fr.njin.i18n.transformation.parameters.label.number = Number of card(s)
+fr.njin.i18n.transformation.label.usePicture = Image
+fr.njin.i18n.transformation.label.before = Before
+fr.njin.i18n.transformation.label.after = After
+fr.njin.i18n.transformation.row.label = Card {0}
+
+fr.njin.i18n.transformation.label.drop = Drag and drop here
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties
new file mode 100644
index 0000000..0c788b0
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties
@@ -0,0 +1,19 @@
+fr.njin.i18n.document.title = Boîte à transformation
+
+fr.njin.i18n.toolbar.edit = Modifier
+fr.njin.i18n.toolbar.view = Afficher
+fr.njin.i18n.toolbar.reload = Recharger
+fr.njin.i18n.toolbar.help = Aide
+
+fr.njin.i18n.parameters.label.themes = Thème
+fr.njin.i18n.parameters.label.slate.themes = ardoise
+fr.njin.i18n.parameters.label.pad.themes = tablette
+fr.njin.i18n.parameters.label.none.themes = aucun
+
+fr.njin.i18n.transformation.parameters.label.number = Nombre de carte(s)
+fr.njin.i18n.transformation.label.usePicture = Image
+fr.njin.i18n.transformation.label.before = Avant la transformation
+fr.njin.i18n.transformation.label.after = Après la transformation
+fr.njin.i18n.transformation.row.label = Carte {0}
+
+fr.njin.i18n.transformation.label.drop = Glisser une ressource ici
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/icon.png
new file mode 100644
index 0000000..2e93d41
Binary files /dev/null and b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/icon.png differ
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html
new file mode 100644
index 0000000..f81722f
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/index.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+	
+	<link rel="stylesheet" href="css/ubw-main.css">
+    <link rel="stylesheet" href="css/main.css">
+
+	<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
+	
+	<script src="js/lib/modernizr.js" type="text/javascript"></script>
+	<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
+	<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
+	<script src="js/lib/mustache.js" type="text/javascript"></script>
+	<script src="js/lib/ubw-main.js" type="text/javascript"></script>
+	<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
+	
+</head>
+
+<body class="hasHelp">
+    <div id="ubwidget" data-number="2" data-themes="pad">
+		<div class="wrapper">
+			<div id="toolbar">
+			</div>
+			<div id="help">
+				<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
+			</div>
+			<div id="content">
+				<div id="parameters">
+				</div>
+				<div id="scene">
+				</div>
+			</div>
+		</div>
+    </div>
+</body>
+
+</html>
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help-template.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help-template.js
new file mode 100644
index 0000000..42bb4f6
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help-template.js
@@ -0,0 +1,19 @@
+<h3>Magic box</h3
+<h4>Assumptions</h4>
+
+<p>The cards pass through a box and are transformed. The goal is to identify the operation done by the box using a minimum of cards.</p>
+<p> To move a card through the box, just click on it. </p>
+
+<p>The assumptions may be written on the white board (outside the App).</p>
+
+<p>The "Reload" button replaces cards on the left stack.</p>
+
+<p> Enter the "Edit" mode to choose : </p>
+
+<ul><li> choose the theme of interactivity : pad, slate or none (by default : pad),</li>
+<li>set the number of cards that you want to use,</li>
+<li>set the cards before and after transformation.</li></ul>
+	
+<p>The cards have by default a text field. To insert text, click on it. To drag and drop an image from your library, select the checkbox “use image”.</p>	
+
+<p> "Display" button comes back to the activity.</p>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help_fr-template.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help_fr-template.js
new file mode 100644
index 0000000..2261853
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/help_fr-template.js
@@ -0,0 +1,20 @@
+<h3>Boîte à transformation</h3>
+<h4>Emettre des hypothèses</h4>
+
+<p>Les cartes passent à travers une boîte et subissent une action. Le but est d’identifier l'opération effectuée par cette dernière en utilisant un minimum de cartes.</p> 
+<p>Pour faire passer une carte à travers la boîte, il suffit de cliquer sur celle-ci.</p>
+
+<p>Les hypothèses peuvent être saisies sur le tableau (en dehors de l'interactivité).</p>
+
+<p>Le bouton “Recharger” réinitialise l'exercice.</p>
+
+<p>Le bouton "Modifier" vous permet :</p>
+<ul><li>de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
+<li>de déterminer le nombre de cartes que vous voulez utiliser,</li>
+<li>de déterminer les cartes avant et après transformation.</li></ul>
+
+<p>Les cartes possèdent par défaut un champ texte.</p> 
+<p>Pour insérer du texte, cliquez sur la carte et saisissez le texte souhaité.</p> 
+<p>Pour ajouter une image depuis votre bibliothèque, cochez la case image et utilisez le glisser-déposer depuis votre bibliothèque jusqu’à l’emplacement prévu.</p>
+
+<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery-1.7.1.min.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery-1.7.1.min.js
new file mode 100644
index 0000000..198b3ff
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery-1.7.1.min.js
@@ -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
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
new file mode 100644
index 0000000..059b490
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js
@@ -0,0 +1,9 @@
+(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
+"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
+j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
+cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
+c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
+a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
+if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
+a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
+f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/modernizr.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/modernizr.js
new file mode 100644
index 0000000..4ace4a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/modernizr.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.5.3 (Custom Build) | MIT & BSD
+ * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a)if(j[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.substr(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function L(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(k),g.offsetWidth,e=k.value!=l,g.removeChild(k)):e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.5.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­","<style>",a,"</style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e});var K=function(c,d){var f=c.join(""),g=d.length;y(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch||(j.touch&&j.touch.offsetTop)===9,e.csstransforms3d=(j.csstransforms3d&&j.csstransforms3d.offsetLeft)===9&&j.csstransforms3d.offsetHeight===3,e.generatedcontent=(j.generatedcontent&&j.generatedcontent.offsetHeight)>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",n.join("touch-enabled),("),h,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",n.join("transform-3d),("),h,")","{#csstransforms3d{left:9px;position:absolute;height:3px;}}"].join(""),['#generatedcontent:after{content:"',l,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);s.flexbox=function(){return J("flexOrder")},s["flexbox-legacy"]=function(){return J("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){try{var d=b.createElement("canvas"),e;e=!(!a.WebGLRenderingContext||!d.getContext("experimental-webgl")&&!d.getContext("webgl")),d=c}catch(f){e=!1}return e},s.touch=function(){return e.touch},s.geolocation=function(){return!!navigator.geolocation},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){return e.fontface},s.generatedcontent=function(){return e.generatedcontent},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var M in s)C(s,M)&&(x=M.toLowerCase(),e[x]=s[M](),v.push((e[x]?"":"no-")+x));return e.input||L(),D(""),i=k=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/mustache.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/mustache.js
new file mode 100644
index 0000000..90a66d3
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/mustache.js
@@ -0,0 +1,536 @@
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+var Mustache = (typeof module !== "undefined" && module.exports) || {};
+
+(function (exports) {
+
+  exports.name = "mustache.js";
+  exports.version = "0.5.0-dev";
+  exports.tags = ["{{", "}}"];
+  exports.parse = parse;
+  exports.compile = compile;
+  exports.render = render;
+  exports.clearCache = clearCache;
+
+  // This is here for backwards compatibility with 0.4.x.
+  exports.to_html = function (template, view, partials, send) {
+    var result = render(template, view, partials);
+
+    if (typeof send === "function") {
+      send(result);
+    } else {
+      return result;
+    }
+  };
+
+  var _toString = Object.prototype.toString;
+  var _isArray = Array.isArray;
+  var _forEach = Array.prototype.forEach;
+  var _trim = String.prototype.trim;
+
+  var isArray;
+  if (_isArray) {
+    isArray = _isArray;
+  } else {
+    isArray = function (obj) {
+      return _toString.call(obj) === "[object Array]";
+    };
+  }
+
+  var forEach;
+  if (_forEach) {
+    forEach = function (obj, callback, scope) {
+      return _forEach.call(obj, callback, scope);
+    };
+  } else {
+    forEach = function (obj, callback, scope) {
+      for (var i = 0, len = obj.length; i < len; ++i) {
+        callback.call(scope, obj[i], i, obj);
+      }
+    };
+  }
+
+  var spaceRe = /^\s*$/;
+
+  function isWhitespace(string) {
+    return spaceRe.test(string);
+  }
+
+  var trim;
+  if (_trim) {
+    trim = function (string) {
+      return string == null ? "" : _trim.call(string);
+    };
+  } else {
+    var trimLeft, trimRight;
+
+    if (isWhitespace("\xA0")) {
+      trimLeft = /^\s+/;
+      trimRight = /\s+$/;
+    } else {
+      // IE doesn't match non-breaking spaces with \s, thanks jQuery.
+      trimLeft = /^[\s\xA0]+/;
+      trimRight = /[\s\xA0]+$/;
+    }
+
+    trim = function (string) {
+      return string == null ? "" :
+        String(string).replace(trimLeft, "").replace(trimRight, "");
+    };
+  }
+
+  var escapeMap = {
+    "&": "&",
+    "<": "<",
+    ">": ">",
+    '"': '"',
+    "'": '''
+  };
+
+  function escapeHTML(string) {
+    return String(string).replace(/&(?!\w+;)|[<>"']/g, function (s) {
+      return escapeMap[s] || s;
+    });
+  }
+
+  /**
+   * Adds the `template`, `line`, and `file` properties to the given error
+   * object and alters the message to provide more useful debugging information.
+   */
+  function debug(e, template, line, file) {
+    file = file || "<template>";
+
+    var lines = template.split("\n"),
+        start = Math.max(line - 3, 0),
+        end = Math.min(lines.length, line + 3),
+        context = lines.slice(start, end);
+
+    var c;
+    for (var i = 0, len = context.length; i < len; ++i) {
+      c = i + start + 1;
+      context[i] = (c === line ? " >> " : "    ") + context[i];
+    }
+
+    e.template = template;
+    e.line = line;
+    e.file = file;
+    e.message = [file + ":" + line, context.join("\n"), "", e.message].join("\n");
+
+    return e;
+  }
+
+  /**
+   * Looks up the value of the given `name` in the given context `stack`.
+   */
+  function lookup(name, stack, defaultValue) {
+    if (name === ".") {
+      return stack[stack.length - 1];
+    }
+
+    var names = name.split(".");
+    var lastIndex = names.length - 1;
+    var target = names[lastIndex];
+
+    var value, context, i = stack.length, j, localStack;
+    while (i) {
+      localStack = stack.slice(0);
+      context = stack[--i];
+
+      j = 0;
+      while (j < lastIndex) {
+        context = context[names[j++]];
+
+        if (context == null) {
+          break;
+        }
+
+        localStack.push(context);
+      }
+
+      if (context && target in context) {
+        value = context[target];
+        break;
+      }
+    }
+
+    // If the value is a function, call it in the current context.
+    if (typeof value === "function") {
+      value = value.call(localStack[localStack.length - 1]);
+    }
+
+    if (value == null)  {
+      return defaultValue;
+    }
+
+    return value;
+  }
+
+  function renderSection(name, stack, callback, inverted) {
+    var buffer = "";
+    var value =  lookup(name, stack);
+
+    if (inverted) {
+      // From the spec: inverted sections may render text once based on the
+      // inverse value of the key. That is, they will be rendered if the key
+      // doesn't exist, is false, or is an empty list.
+      if (value == null || value === false || (isArray(value) && value.length === 0)) {
+        buffer += callback();
+      }
+    } else if (isArray(value)) {
+      forEach(value, function (value) {
+        stack.push(value);
+        buffer += callback();
+        stack.pop();
+      });
+    } else if (typeof value === "object") {
+      stack.push(value);
+      buffer += callback();
+      stack.pop();
+    } else if (typeof value === "function") {
+      var scope = stack[stack.length - 1];
+      var scopedRender = function (template) {
+        return render(template, scope);
+      };
+      buffer += value.call(scope, callback(), scopedRender) || "";
+    } else if (value) {
+      buffer += callback();
+    }
+
+    return buffer;
+  }
+
+  /**
+   * Parses the given `template` and returns the source of a function that,
+   * with the proper arguments, will render the template. Recognized options
+   * include the following:
+   *
+   *   - file     The name of the file the template comes from (displayed in
+   *              error messages)
+   *   - tags     An array of open and close tags the `template` uses. Defaults
+   *              to the value of Mustache.tags
+   *   - debug    Set `true` to log the body of the generated function to the
+   *              console
+   *   - space    Set `true` to preserve whitespace from lines that otherwise
+   *              contain only a {{tag}}. Defaults to `false`
+   */
+  function parse(template, options) {
+    options = options || {};
+
+    var tags = options.tags || exports.tags,
+        openTag = tags[0],
+        closeTag = tags[tags.length - 1];
+
+    var code = [
+      'var buffer = "";', // output buffer
+      "\nvar line = 1;", // keep track of source line number
+      "\ntry {",
+      '\nbuffer += "'
+    ];
+
+    var spaces = [],      // indices of whitespace in code on the current line
+        hasTag = false,   // is there a {{tag}} on the current line?
+        nonSpace = false; // is there a non-space char on the current line?
+
+    // Strips all space characters from the code array for the current line
+    // if there was a {{tag}} on it and otherwise only spaces.
+    var stripSpace = function () {
+      if (hasTag && !nonSpace && !options.space) {
+        while (spaces.length) {
+          code.splice(spaces.pop(), 1);
+        }
+      } else {
+        spaces = [];
+      }
+
+      hasTag = false;
+      nonSpace = false;
+    };
+
+    var sectionStack = [], updateLine, nextOpenTag, nextCloseTag;
+
+    var setTags = function (source) {
+      tags = trim(source).split(/\s+/);
+      nextOpenTag = tags[0];
+      nextCloseTag = tags[tags.length - 1];
+    };
+
+    var includePartial = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nvar partial = partials["' + trim(source) + '"];',
+        '\nif (partial) {',
+        '\n  buffer += render(partial,stack[stack.length - 1],partials);',
+        '\n}',
+        '\nbuffer += "'
+      );
+    };
+
+    var openSection = function (source, inverted) {
+      var name = trim(source);
+
+      if (name === "") {
+        throw debug(new Error("Section name may not be empty"), template, line, options.file);
+      }
+
+      sectionStack.push({name: name, inverted: inverted});
+
+      code.push(
+        '";',
+        updateLine,
+        '\nvar name = "' + name + '";',
+        '\nvar callback = (function () {',
+        '\n  return function () {',
+        '\n    var buffer = "";',
+        '\nbuffer += "'
+      );
+    };
+
+    var openInvertedSection = function (source) {
+      openSection(source, true);
+    };
+
+    var closeSection = function (source) {
+      var name = trim(source);
+      var openName = sectionStack.length != 0 && sectionStack[sectionStack.length - 1].name;
+
+      if (!openName || name != openName) {
+        throw debug(new Error('Section named "' + name + '" was never opened'), template, line, options.file);
+      }
+
+      var section = sectionStack.pop();
+
+      code.push(
+        '";',
+        '\n    return buffer;',
+        '\n  };',
+        '\n})();'
+      );
+
+      if (section.inverted) {
+        code.push("\nbuffer += renderSection(name,stack,callback,true);");
+      } else {
+        code.push("\nbuffer += renderSection(name,stack,callback);");
+      }
+
+      code.push('\nbuffer += "');
+    };
+
+    var sendPlain = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += lookup("' + trim(source) + '",stack,"");',
+        '\nbuffer += "'
+      );
+    };
+
+    var sendEscaped = function (source) {
+      code.push(
+        '";',
+        updateLine,
+        '\nbuffer += escapeHTML(lookup("' + trim(source) + '",stack,""));',
+        '\nbuffer += "'
+      );
+    };
+
+    var line = 1, c, callback;
+    for (var i = 0, len = template.length; i < len; ++i) {
+      if (template.slice(i, i + openTag.length) === openTag) {
+        i += openTag.length;
+        c = template.substr(i, 1);
+        updateLine = '\nline = ' + line + ';';
+        nextOpenTag = openTag;
+        nextCloseTag = closeTag;
+        hasTag = true;
+
+        switch (c) {
+        case "!": // comment
+          i++;
+          callback = null;
+          break;
+        case "=": // change open/close tags, e.g. {{=<% %>=}}
+          i++;
+          closeTag = "=" + closeTag;
+          callback = setTags;
+          break;
+        case ">": // include partial
+          i++;
+          callback = includePartial;
+          break;
+        case "#": // start section
+          i++;
+          callback = openSection;
+          break;
+        case "^": // start inverted section
+          i++;
+          callback = openInvertedSection;
+          break;
+        case "/": // end section
+          i++;
+          callback = closeSection;
+          break;
+        case "{": // plain variable
+          closeTag = "}" + closeTag;
+          // fall through
+        case "&": // plain variable
+          i++;
+          nonSpace = true;
+          callback = sendPlain;
+          break;
+        default: // escaped variable
+          nonSpace = true;
+          callback = sendEscaped;
+        }
+
+        var end = template.indexOf(closeTag, i);
+
+        if (end === -1) {
+          throw debug(new Error('Tag "' + openTag + '" was not closed properly'), template, line, options.file);
+        }
+
+        var source = template.substring(i, end);
+
+        if (callback) {
+          callback(source);
+        }
+
+        // Maintain line count for \n in source.
+        var n = 0;
+        while (~(n = source.indexOf("\n", n))) {
+          line++;
+          n++;
+        }
+
+        i = end + closeTag.length - 1;
+        openTag = nextOpenTag;
+        closeTag = nextCloseTag;
+      } else {
+        c = template.substr(i, 1);
+
+        switch (c) {
+        case '"':
+        case "\\":
+          nonSpace = true;
+          code.push("\\" + c);
+          break;
+        case "\r":
+          // Ignore carriage returns.
+          break;
+        case "\n":
+          spaces.push(code.length);
+          code.push("\\n");
+          stripSpace(); // Check for whitespace on the current line.
+          line++;
+          break;
+        default:
+          if (isWhitespace(c)) {
+            spaces.push(code.length);
+          } else {
+            nonSpace = true;
+          }
+
+          code.push(c);
+        }
+      }
+    }
+
+    if (sectionStack.length != 0) {
+      throw debug(new Error('Section "' + sectionStack[sectionStack.length - 1].name + '" was not closed properly'), template, line, options.file);
+    }
+
+    // Clean up any whitespace from a closing {{tag}} that was at the end
+    // of the template without a trailing \n.
+    stripSpace();
+
+    code.push(
+      '";',
+      "\nreturn buffer;",
+      "\n} catch (e) { throw {error: e, line: line}; }"
+    );
+
+    // Ignore `buffer += "";` statements.
+    var body = code.join("").replace(/buffer \+= "";\n/g, "");
+
+    if (options.debug) {
+      if (typeof console != "undefined" && console.log) {
+        console.log(body);
+      } else if (typeof print === "function") {
+        print(body);
+      }
+    }
+
+    return body;
+  }
+
+  /**
+   * Used by `compile` to generate a reusable function for the given `template`.
+   */
+  function _compile(template, options) {
+    var args = "view,partials,stack,lookup,escapeHTML,renderSection,render";
+    var body = parse(template, options);
+    var fn = new Function(args, body);
+
+    // This anonymous function wraps the generated function so we can do
+    // argument coercion, setup some variables, and handle any errors
+    // encountered while executing it.
+    return function (view, partials) {
+      partials = partials || {};
+
+      var stack = [view]; // context stack
+
+      try {
+        return fn(view, partials, stack, lookup, escapeHTML, renderSection, render);
+      } catch (e) {
+        throw debug(e.error, template, e.line, options.file);
+      }
+    };
+  }
+
+  // Cache of pre-compiled templates.
+  var _cache = {};
+
+  /**
+   * Clear the cache of compiled templates.
+   */
+  function clearCache() {
+    _cache = {};
+  }
+
+  /**
+   * Compiles the given `template` into a reusable function using the given
+   * `options`. In addition to the options accepted by Mustache.parse,
+   * recognized options include the following:
+   *
+   *   - cache    Set `false` to bypass any pre-compiled version of the given
+   *              template. Otherwise, a given `template` string will be cached
+   *              the first time it is parsed
+   */
+  function compile(template, options) {
+    options = options || {};
+
+    // Use a pre-compiled version from the cache if we have one.
+    if (options.cache !== false) {
+      if (!_cache[template]) {
+        _cache[template] = _compile(template, options);
+      }
+
+      return _cache[template];
+    }
+
+    return _compile(template, options);
+  }
+
+  /**
+   * High-level function that renders the given `template` using the given
+   * `view` and `partials`. If you need to use any of the template options (see
+   * `compile` above), you must compile in a separate step, and then call that
+   * compiled function.
+   */
+  function render(template, view, partials) {
+    return compile(template)(view, partials);
+  }
+
+})(Mustache);
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
new file mode 100644
index 0000000..06213d1
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
@@ -0,0 +1,269 @@
+/*
+ * 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/>.
+*/
+function log(object) {
+	console.log(object);
+}
+
+function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
+	document.title = fr.njin.i18n.document.title;
+	
+	var ubwidget = $("#ubwidget");
+	
+	var parameters = Object.create(Parameters,{
+		container: {
+			value: ubwidget
+		},
+		delegate: {
+			value: window.sankore || Object.create(ParametersDelegate)
+		}
+	});
+	
+	var app = Object.create(App, {
+		container: {
+			value: ubwidget
+		},
+		parameters: {
+			value: parameters
+		},
+		reload: {
+			value: reload
+		}
+	});
+
+	app.init();
+	app.onEdit = false;
+	
+	if(templates.toolbar) {
+		$("#toolbar").html(Mustache.render(templates.toolbar, window));
+	}
+	if(templates.parameters) {
+		$("#parameters").html(Mustache.render(templates.parameters, window));
+	}
+	
+	if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
+		callbacks.onTemplatesLoaded(app);
+	}
+	
+	log("Update setting views with stored parameters");
+	$("#parameters (input|select)[role=parameter]").each(function(i, input) {
+		(function(input){
+			var key = input.name;
+			var type = input.type;
+			var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
+			var stored = parameters.value(key);
+			if(isRadioOrcheckbox)
+				$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
+			else
+				$(input).val(stored);
+			$(input).change(function(){
+				var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
+				parameters.value(key, val);
+			});
+		})(input);
+	});
+	
+	log("Toobar Initialisation");
+	$("button[role=edit]").click(function(){
+		app.onEdit = true;
+		$(document.body).addClass("onEdit");
+		if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
+			callbacks.onEdit(app);
+		}
+	});
+	$("button[role=view]").click(function(){
+		app.onEdit = false;		
+		$(document.body).removeClass("onEdit");
+		if(callbacks.onView && typeof callbacks.onView === 'function') {
+			callbacks.onView(app);
+		}
+	});
+	$("button[role=reload]").click(function(){
+		app.reload();
+	});
+	$("button[role=help]").click(function(){
+		$("body").toggleClass("showHelp");
+	});
+	
+	$("select[name='themes']").change(function() {
+		$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
+		$("body").addClass("theme-"+$(this).val());
+	});
+	$("body").addClass("theme-"+$("select[name='themes']").val());
+}
+
+function init(reload, templates, callbacks){
+	var locale = window.sankore ? sankore.locale() : "";
+	$.i18n.properties({
+	  	name: 'Messages', 
+		path: 'i18n/',
+		language: locale,
+	  	callback: function(){ 
+			initAfterI18nMessagesLoaded(reload, templates, callbacks);
+		}
+	});
+}
+
+var Parameters = (function(){
+	var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		delegate: {
+			value: null
+		},
+		value: {
+			value: function(key, value) {
+				if(value === undefined) {
+					var val = this.delegate.preference(key);
+					log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
+					return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
+				}
+				else {
+					log("Set parameter value ["+value+"] for key : ["+key+"]");
+					this.delegate.setPreference(key, value);
+					this.container.trigger("preferenceChange", {key: key, value: value});					
+				}
+			}
+		}
+	});
+	return self;
+})();
+
+var ParametersDelegate = (function(){
+	var self = Object.create({}, {
+		preference: {
+			value: function(key) {
+				return this[key];
+			}
+		},
+		setPreference: {
+			value: function(key, value) {
+				this[key] = value;
+			}
+		}
+	});
+	return self;
+})();
+
+var App = (function() {
+    var self = Object.create({}, {
+		container: {
+			value: null
+		},
+		parameters: {
+			value: null
+		},
+        init: {
+			value: function() {
+				var that = this;
+				this.container.bind("preferenceChange", function(evt, parameter) {
+					that.reload(parameter);
+				});
+				this.reload();
+			}
+        },
+		reload: {
+			value: function(parameter) {
+				if(parameter === undefined)
+					log("Reload");
+				else
+					log("Update");
+			}
+		},
+		utils: {
+			value: Object.create({}, {
+				shuffle: {
+					value: function(array) {
+						var unpickedSize = array.length;
+						while(unpickedSize > 0) {
+							var n = Math.floor(Math.random()*unpickedSize);
+							var temp = array[unpickedSize-1];
+							array[unpickedSize-1] = array[n];
+							array[n] = temp;
+							unpickedSize--;
+						}
+					}
+				},
+				guid: {
+					value: function() {
+					    var S4 = function() {
+					       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+					    };
+					    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
+					}
+				},
+				droppable: {
+					value: function($e, callback) {							
+						$e.bind("dragover", function(){
+							$(this).addClass("hover");
+							return false;
+						});
+						$e.bind("dragleave", function(){
+							$(this).removeClass("hover");
+							return false;
+						});
+						$e.bind("drop", function(e){
+							$(this).removeClass("hover");
+							e = e || window.event;
+							e.preventDefault();
+					        // jQuery wraps the originalEvent, so we try to detect that here...
+					        e = e.originalEvent || e;
+							
+							if(window.sankore) {
+								function stringToXML(text){
+								    if (window.ActiveXObject){
+								        var doc=new ActiveXObject('Microsoft.XMLDOM');
+								        doc.async='false';
+								        doc.loadXML(text);
+								    } else {
+								        var parser=new DOMParser();
+								        doc=parser.parseFromString(text,'text/xml');
+								    }
+								    return doc;
+								}
+								var file = stringToXML(e.dataTransfer.getData("text/plain"));
+								callback({
+			                        src: $(file).find("path:eq(0)").text()
+								});
+								return false;
+							}
+
+					        // Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
+					        var files = (e.files || e.dataTransfer.files);
+					        for (var i = 0; i < files.length; i++) {
+								// Loop through our files with a closure so each of our FileReader's are isolated.
+					            (function (i) {
+									if(typeof FileReader !== "undefined") {
+										var reader = new FileReader();
+						                reader.onload = function (event) {
+											callback({
+						                        src: event.target.result,
+						                        title: (files[i].name),
+						                        alt: (files[i].name)
+						                    });
+						                };
+						                reader.readAsDataURL(files[i]);
+									}
+					            })(i);
+					        }
+					        return false;
+						});
+					}
+				}
+			})
+		}
+    });
+    return self;
+})();
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js
new file mode 100644
index 0000000..c896992
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/main.js
@@ -0,0 +1,207 @@
+function onTemplateLoadedCallback() {
+
+}
+
+function editRow(app, index) {
+    var parameters = app.parameters;
+    var row = $("<div/>");
+    row.append("<div class='label'><div>"+fr.njin.i18n.transformation.row.label(index+1)+"</div></div>");
+    var cards = $("<div class='cards'/>");
+    row.append(cards);
+	
+    var beforecontent = parameters.value("#"+index+"before");
+    var aftercontent = parameters.value("#"+index+"after");
+	
+    var before = $("<div rel='before'><div class='switch'><label>"+fr.njin.i18n.transformation.label.usePicture+"<input type='checkbox' name='switch'></label></div><div class='card'><div class='text'><div>"+( beforecontent !== undefined ? beforecontent : "" )+"</div></div><div class='picture'><div></div><div class='dropzone'><div>"+fr.njin.i18n.transformation.label.drop+"</div></div></div></div><div class='label'>"+fr.njin.i18n.transformation.label.before+"</div></div>");
+    var after = $("<div rel='after'><div class='switch'><label>"+fr.njin.i18n.transformation.label.usePicture+"<input type='checkbox' name='switch'></label></div><div class='card'><div class='text'><div>"+( aftercontent !== undefined ? aftercontent : "" )+"</div></div><div class='picture'><div></div><div class='dropzone'><div>"+fr.njin.i18n.transformation.label.drop+"</div></div></div></div><div class='label'>"+fr.njin.i18n.transformation.label.after+"</div></div>");
+	
+    makeEditable(app, before, index);
+    makeEditable(app, after, index);
+	
+    cards.append(before);
+    cards.append(after);
+	
+    return row;
+}
+
+function cards(app, index) {
+    var parameters = app.parameters;
+    var beforecard = $("<div class='part before closed'/>");
+    var aftercard = $("<div class='part after'/>");
+	
+    var beforecontent = parameters.value("#"+index+"before");
+    var aftercontent = parameters.value("#"+index+"after");
+	
+    var before = $("<div rel='before'><div class='card'><div class='text'><div>"+( beforecontent !== undefined ? beforecontent : "" )+"</div></div><div class='picture'><div></div></div></div></div>");
+    var after = $("<div rel='after'><div class='card'><div class='text'><div>"+( aftercontent !== undefined ? aftercontent : "" )+"</div></div><div class='picture'><div></div></div></div></div>");
+	
+    var usePicture = parameters.value("#UsePicture"+index+"before") === "true"
+    || parameters.value("#UsePicture"+index+"before") == true;
+	
+    if(usePicture) {
+        before.addClass("usePicture");	
+        var f = $.parseJSON(parameters.value("#Picture"+index+"before"));
+        if(f !== null) {
+            var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
+            before.find(".picture>div:eq(0)").append($img);	
+        }
+    }
+	
+    usePicture = parameters.value("#UsePicture"+index+"after") === "true"
+    || parameters.value("#UsePicture"+index+"after") == true;
+	
+    if(usePicture) {
+        after.addClass("usePicture");
+        var f = $.parseJSON(parameters.value("#Picture"+index+"after"));
+        if(f !== null) {
+            var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
+            after.find(".picture>div:eq(0)").append($img);
+        }
+    }
+	
+    beforecard.append(before);
+    aftercard.append(after);
+	
+    return [beforecard, aftercard];
+}
+
+function makeEditable(app, row, index) {
+    var parameters = app.parameters;
+    var editable = row.find(".text>div").eq(0);
+    var key = index+editable.parent().parent().parent().attr('rel');	
+    editable.get(0).contentEditable = true;
+    editable.bind('blur keyup paste', function(){
+        parameters.value("#"+key, $(this).html());
+    });
+	
+    var checkbox = row.find("input[name='switch']");
+	
+    function setSwicth() {
+        var val = parameters.value("#UsePicture"+key) === "true"
+        || parameters.value("#UsePicture"+key) === true;
+        if(val) {
+            row.addClass("usePicture");
+        }else {
+            row.removeClass("usePicture");
+        }
+        checkbox.attr("checked", val);
+    }
+	
+    checkbox.change(function() {
+        parameters.value("#UsePicture"+key, $(this).is(':checked'));
+        setSwicth();
+    });
+    setSwicth();
+	
+    var dropzone = row.find(".dropzone");
+    var pictureHolder = dropzone.parent().find(">div:eq(0)");
+					
+    function setPicture() {
+        var f = $.parseJSON(parameters.value("#Picture"+key));
+        if(f !== null) {
+            var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
+            pictureHolder.empty();
+            pictureHolder.append($img);
+        }
+    }
+					
+    app.utils.droppable(dropzone, function(f) {
+        parameters.value("#Picture"+key, JSON.stringify(f));
+        setPicture();
+    });
+    setPicture();
+}
+
+function reloadApp(app) {
+    var number = app.parameters.value("number");
+	
+    var scene = $("#scene");
+    scene.empty();
+	
+    if(app.onEdit) {
+        var editcards = $("#edit-cards");
+        editcards.empty();
+        for(var i=0 ; i<number ; i++) {
+            editcards.append(editRow(app, i));
+        }
+        if(window.sankore)
+            window.sankore.enableDropOnWidget(app.onEdit);
+        return;
+    }
+	
+    var table = $("<div id='table'/>");
+    scene.append(table);
+	
+    var before = $("<div class='deck before'><div></div></div>");
+    var box = $("<div class='box'><div></div></div>");
+    var after = $("<div class='deck after'><div></div></div>");
+	
+    if(number === 0)
+        before.addClass("empty");
+    after.addClass("empty");
+	
+    table.append(before);
+    table.append(box);
+    table.append(after);
+	
+    box.find(">div").css("z-index", number+1);				
+	
+    var beforeDeck = before.find(">div");
+    var afterDeck = after.find(">div");
+    var beforeLeftPosition = box.find(">div").position().left - beforeDeck.position().left + 10 + 40; //10px de padding dans la box + 40px d'ombre dans l'image
+	
+    function makeCard(i, cards) {
+        beforeDeck.append(cards[0]);
+        afterDeck.append(cards[1]);
+        cards[1].css("left", -beforeLeftPosition+"px");				
+        cards[1].css("z-index", i);				
+		
+        cards[0].click(function(e) {
+            var c = $(this);
+            c.removeClass("closed");
+            c.unbind(e);
+            setTimeout(function(){
+                c.animate({
+                    left : beforeLeftPosition
+                }, 1000, function(){			
+                    setTimeout(function(){
+                        cards[1].animate({
+                            left: 0
+                        }, 1000, function(){
+                            after.removeClass("empty");
+                        });
+                    }, 1000);
+                    c.remove();	
+                });
+                if(i === 0) {
+                    before.addClass("empty");
+                }
+            }, 3000);
+			
+        });
+    }
+		
+    for(var i=number ; i>0 ; i--) {
+        makeCard(i-1, cards(app, i-1));
+    }
+	
+    if(window.sankore)
+        window.sankore.enableDropOnWidget(app.onEdit);
+}
+
+function reloadCallback(parameter) {
+    if(parameter === undefined || parameter.key === "number" )
+        reloadApp(this);
+}
+
+$(document).ready(function(){
+    var callbacks = {
+        onTemplatesLoaded: onTemplateLoadedCallback,
+        onEdit: reloadApp,
+        onView: reloadApp
+    };
+    init(reloadCallback, {
+        toolbar: toolbarTemplate, 
+        parameters: parametersTemplate
+    }, callbacks);
+});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js
new file mode 100644
index 0000000..7200068
--- /dev/null
+++ b/Sankore-3.1/resources/library/interactivities/Transformation.wgt/js/templates.js
@@ -0,0 +1,26 @@
+var toolbarTemplate = 	
+			'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
+			'<div class="actions">'+
+				'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
+				'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
+				'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
+				'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
+			'</div>';
+				
+var parametersTemplate = 
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.parameters.label.themes}}'+
+					'<select name="themes" role="parameter">'+
+						'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+					
+						'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
+						'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
+					'</select>'+
+				'</label>'+
+			'</div>'+
+			'<div class="inline">'+
+				'<label>{{fr.njin.i18n.transformation.parameters.label.number}}'+
+					'<input  class="tiny" type="number" name="number" min="2" role="parameter">'+
+				'</label>'+
+			'</div>'+
+			'<div id="edit-cards">'+
+			'</div>';
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/css/basic.css
deleted file mode 100644
index fa3d740..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/css/basic.css
+++ /dev/null
@@ -1,236 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid black;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid black;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 60px;
-}
-
-.imgs_cont{
-    width: 100%;
-    min-height: 142px;
-    margin: 0;
-}
-
-.imgs_answers{
-    width: 162px;
-    margin: 0 auto;
-    margin-bottom: 10px;
-    min-height: 142px;
-    border: 2px dashed #ccc;
-    text-align: center;
-}
-
-.imgs_answers_gray{
-    background-color: #f4f2f2;
-}
-
-.imgs_answers_green{
-    background-color: #9f9;
-}
-
-.imgs_answers_red{
-    background-color: #f99;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 80%;
-    min-height: 40px;
-    float: right;
-    background-color: #ccc;
-    border-top-left-radius: 10px;
-    border-bottom-left-radius: 10px;
-    padding-left: 10px;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.add_img{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    background-image: url(../img/add_img.png);
-    background-position: center;
-    background-repeat: no-repeat;
-    cursor: pointer;
-    display: inline-block;
-}
-
-.img_block{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    cursor: pointer;
-    display: inline-block;
-    position: relative;
-    background-color: white;
-}
-
-.img_gray{
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-}
-
-.close_img, .clear_img, .true_img, .false_img{
-    width: 30px;
-    height: 30px;
-    background-repeat: no-repeat;
-    position: absolute;
-    right: -15px;
-    cursor: pointer;
-}
-
-.close_img{    
-    background-image: url(../img/close_img.png);    
-    top: -15px;   
-}
-
-.clear_img{
-    background-image: url(../img/clear_img.png);
-    top: 15px;
-}
-
-.true_img{
-    background-image: url(../img/false.png);
-    top: 45px;
-}
-
-.false_img{
-    background-image: url(../img/true.png);
-    top: 45px;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.dropHere{
-    background-color: #ccc;
-}
-
-.dropBack{
-    background-color: #F4F2F2;
-}
-
-
-
-
-
-
-
-
-
-
-.black_overlay{
-    display: none;
-    position: absolute;
-    top: 0%;
-    left: 0%;
-    width: 100%;
-    height: 100%;
-    background-color: black;
-    z-index:1001;
-    -moz-opacity: 0.8;
-    opacity:.80;
-    filter: alpha(opacity=80);
-}
-
-.white_content {
-    display: none;
-    position:fixed;
-    top: 50%;
-    left: 50%;
-    width: 340px;
-    height: 480px;
-    padding: 16px;
-    background-color: white;
-    z-index:1002;
-    overflow: auto;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/index.html
deleted file mode 100644
index 0a54583..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/index.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-                //here you can put your code
-                if(window.sankore)
-                    sankore.enableDropOnWidget();
-            });
-        </script>
-    </head>
-    <body>
-        <!--<div class="dnd_container">
-            <div class="dnd_1" id="dnd_1" ondragenter="return false;" ondragleave="$(this).css('border-color','#ccc'); return false;" ondragover="$(this).css('border-color','orange'); return false;" ondrop="$(this).css('border-color','#ccc'); return onDropTarget1(event);">Drop the item here ...</div>
-            <div class="dnd_2" id="dnd_2" ondragenter="return false;" ondragleave="$(this).css('border-color','#ccc'); return false;" ondragover="$(this).css('border-color','orange'); return false;" ondrop="$(this).css('border-color','#ccc'); return onDropTarget2(event);">Drop the item here ...</div>
-        </div>
-        <div class='black_overlay' id='fade'></div>
-        <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'">открыть</a></p>
-    <div id="light" class="white_content">
-        Содержание<a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">закрыть</a></div>-->
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;">Display</div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;">Edit</div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/script.js
deleted file mode 100644
index 339cc3e..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/js/script.js
+++ /dev/null
@@ -1,658 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Select the number \"three\".", 
-    add: "Add new block",
-    enter: "Enter what to do here..."
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer","")){
-            var data = jQuery.parseJSON(sankore.preference("associer",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "white");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-//container.appendTo("body")
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src", tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/index.html
deleted file mode 100644
index c7f3b07..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/js/script.js
deleted file mode 100644
index d535038..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,659 +0,0 @@
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier", 
-    short_desc: "Sélectionner le numéro «trois».", 
-    add: "Nouveau bloc",
-    enter: "Saisir la consigne ici ..."
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer","")){
-            var data = jQuery.parseJSON(sankore.preference("associer",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "white");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-//container.appendTo("body")
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length);
-        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/index.html
deleted file mode 100644
index 8b39b00..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){ 
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/js/script.js
deleted file mode 100644
index 028734c..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_images.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,659 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    short_desc: "Выберите число \"три\".", 
-    add: "Новый блок",
-    enter: "Введите условие ..."
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer","")){
-            var data = jQuery.parseJSON(sankore.preference("associer",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "white");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".text_cont").text();
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-//container.appendTo("body")
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length);
-        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/css/basic.css
deleted file mode 100644
index cc011b1..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/css/basic.css
+++ /dev/null
@@ -1,238 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid black;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid black;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 60px;
-}
-
-.imgs_cont{
-    width: 100%;
-    min-height: 142px;
-    margin: 0;
-}
-
-.imgs_answers{
-    width: 162px;
-    margin: 0 auto;
-    margin-bottom: 10px;
-    min-height: 142px;
-    border: 2px dashed #ccc;
-    text-align: center;
-}
-
-.imgs_answers_gray{
-    background-color: #f4f2f2;
-}
-
-.imgs_answers_green{
-    background-color: #9f9;
-}
-
-.imgs_answers_red{
-    background-color: #f99;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 80%;
-    min-height: 40px;
-    float: right;
-    background-color: #999;
-    border-top-left-radius: 20px;
-    border-bottom-left-radius: 20px;
-    padding-left: 10px;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.add_img{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    background-image: url(../img/add_img.png);
-    background-position: center;
-    background-repeat: no-repeat;
-    cursor: pointer;
-    display: inline-block;
-}
-
-.img_block{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    cursor: pointer;
-    display: inline-block;
-    position: relative;
-    background-color: white;
-}
-
-.img_gray{
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-}
-
-.close_img, .true_img, .false_img{
-    width: 30px;
-    height: 30px;
-    background-repeat: no-repeat;
-    position: absolute;
-    right: -15px;
-    cursor: pointer;
-}
-
-.close_img{    
-    background-image: url(../img/close_img.png);    
-    top: -15px;   
-}
-
-.true_img{
-    background-image: url(../img/false.png);
-    top: 15px;
-}
-
-.false_img{
-    background-image: url(../img/true.png);
-    top: 15px;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.dropHere{
-    background-color: #ccc;
-}
-
-.dropBack{
-    background-color: #F4F2F2;
-}
-
-.audio_block{
-    width: 120px;
-    height: 30px;
-    margin: 5px 0;    
-    float: left;
-}
-
-.audio_desc{
-    min-height: 30px;
-    margin: 5px 0;
-    float: left;
-    margin-left: 20px;
-}
-
-.play, .stop{
-    height: 30px;
-    width: 70px;    
-    float: left;
-    cursor: pointer;
-}
-
-.play{
-    background-image: url(../img/play.png);
-}
-
-.stop{
-    background-image: url(../img/stop.png);
-}
-
-.replay{
-    height: 30px;
-    width: 32px;
-    margin-left: 10px;
-    float: left;
-    background-image: url(../img/replay.png);
-    background-repeat: no-repeat;
-    cursor: pointer;
-}
-
-.gray{
-    background-color: #ccc;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/index.html b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/index.html
deleted file mode 100644
index 8680276..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){  
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;">Display</div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;">Edit</div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/script.js
deleted file mode 100644
index d81a293..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/js/script.js
+++ /dev/null
@@ -1,784 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "How many signals do you hear?", 
-    add: "Add new block",
-    enter: "Enter your description here ..."
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").css("background-color", "white");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>").appendTo(sub_container);
-            var audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", data[i].audio);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>").appendTo(sub_container);
-            audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            source = $("<source/>").attr("src", data[i].audio);
-            audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    text.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-    .attr("ondragover", "$(this).addClass('gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_img = $("<img/>").attr("src", tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj).find(".audio_block");
-            tmp = tmp.substr(1, tmp.length);            
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/index.html
deleted file mode 100644
index c7f3b07..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/js/script.js
deleted file mode 100644
index 26f4b7e..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,771 +0,0 @@
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier", 
-    short_desc: "Combien de signaux sonores entendez-vous?", 
-    add: "Nouveau bloc",
-    enter: "Saisir votre description ici ..."
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").css("background-color", "white");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){      
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>").appendTo(sub_container);
-            var audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src","../../" + data[i].audio);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>").appendTo(sub_container);
-            audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            source = $("<source/>").attr("src","../../" + data[i].audio);
-            audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "../../objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    text.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-    .attr("ondragover", "$(this).addClass('gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length);
-        var tmp_img = $("<img/>").attr("src","../../" + tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj).find(".audio_block");
-            tmp = tmp.substr(1, tmp.length);            
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/index.html
deleted file mode 100644
index 8b39b00..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){ 
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/js/script.js
deleted file mode 100644
index 07be155..0000000
--- a/Sankore-3.1/resources/library/interactivities/associer_sounds.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,771 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    short_desc: "Сколько сигналов вы слышите?", 
-    add: "Новый блок",
-    enter: "Введите описание ..."
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".true_img").remove();
-                            $(this).find(".false_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop")
-                            .addClass("img_gray");
-                        } else 
-                            $(this).remove();
-                    });
-                    var img_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").insertAfter(container.find(".sub_cont"));
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    }
-                    
-                    img_answers.droppable({
-                        hoverClass: 'dropHere',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if($(this).children()[0].tagName == "IMG")
-                                    $(this).children().remove();
-                                else
-                                    $(ui.draggable).parent().append($(this).children());
-                                $(this).append($(ui.draggable));  
-                                if($(this).children().length == 1){                
-                                    if($(this).children().find("input").val() == "1")
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_green");
-                                    else
-                                        $(this).removeClass("imgs_answers_gray")
-                                        .removeClass("imgs_answers_green")
-                                        .addClass("imgs_answers_red");
-                                }                    
-                            }
-                        }
-                    });
-                    
-                    container.find(".imgs_cont").droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_cont = $(ui.draggable).parent();
-                                    $(this).append($(ui.draggable));
-                                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                                    var answers = "";
-                                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                        answers += $(this).find("input").val();
-                                    });
-                                    if(tmp_cont.children()[0].tagName == "IMG")
-                                        tmp_cont.removeClass("imgs_answers_green")
-                                        .removeClass("imgs_answers_red")
-                                        .addClass("imgs_answers_gray");
-                                    else
-                                    if(tmp_cont.children().length == 1){                
-                                        if(tmp_cont.children().find("input").val() == "1")
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_red")
-                                            .addClass("imgs_answers_green");
-                                        else
-                                            tmp_cont.removeClass("imgs_answers_gray")
-                                            .removeClass("imgs_answers_green")
-                                            .addClass("imgs_answers_red");
-                                    }    
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    container.find(".imgs_answers").find(".img_block").each(function(){
-                        $(this).appendTo(container.find(".imgs_cont"))
-                    });
-                    container.find(".imgs_answers").remove();
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").css("background-color", "white");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        .css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input").val() == "1"){
-                            $("<div class='false_img'>").appendTo($(this));
-                        }
-                        else{
-                            $("<div class='true_img'>").appendTo($(this));
-                        }
-                    });
-                    container.find(".imgs_cont").append(add_img)
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){      
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.mode = "edit";
-            cont_obj.imgs = [];
-            $(this).find(".img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.mode = "display";
-            cont_obj.imgs = [];
-            if($(this).find(".imgs_answers").children()[0].tagName == "DIV"){
-                var tmp_cont = $(this).find(".imgs_answers").find(".img_block");
-                var img_obj = new Object();
-                img_obj.value = tmp_cont.find("input").val();
-                img_obj.link = tmp_cont.find("img").attr("src").replace("../../","");
-                img_obj.ht = tmp_cont.find("img").height();
-                img_obj.wd = tmp_cont.find("img").width();
-                img_obj.cont = "answers";
-                cont_obj.imgs.push(img_obj);
-            }
-            $(this).find(".imgs_cont .img_block").each(function(){
-                var img_obj = new Object();
-                img_obj.value = $(this).find("input").val();
-                img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                img_obj.ht = $(this).find("img").height();
-                img_obj.wd = $(this).find("img").width();
-                img_obj.cont = "cont";
-                cont_obj.imgs.push(img_obj);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);
-            var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-            var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            var text = $("<div class='text_cont'>").appendTo(sub_container);
-            var audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src","../../" + data[i].audio);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(var j in data[i].imgs){
-                var img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                tmp_array.push(img_block);
-            }
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(imgs_container);
-            }
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);
-            imgs_answers = $("<div class='imgs_answers'></div>").appendTo(container);
-            $("<img src='img/drop_img.png' style='margin-top: 11px;'/>").appendTo(imgs_answers);
-            imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-            number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-            text = $("<div class='text_cont'>").appendTo(sub_container);
-            audio_block = $("<div class='audio_block'>").appendTo(text);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            source = $("<source/>").attr("src","../../" + data[i].audio);
-            audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden'/>").appendTo(audio_block);
-            $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        
-            for(j in data[i].imgs){
-                img_block = $("<div class='img_block img_gray' style='text-align: center;'>");
-                img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-                img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-                if((120 - data[i].imgs[j].ht) > 0)
-                    img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-                hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-                img_block.append(hidden_input).append(img);
-                img_block.draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                if(data[i].imgs[j].cont == "cont")
-                    img_block.appendTo(imgs_container);
-                else{
-                    imgs_answers.empty();
-                    img_block.appendTo(imgs_answers);
-                    if(data[i].imgs[j].value == "1")
-                        imgs_answers.addClass("imgs_answers_green");
-                    else
-                        imgs_answers.addClass("imgs_answers_red");
-                }
-            }
-            
-            imgs_answers.droppable({
-                hoverClass: 'dropHere',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if($(this).children()[0].tagName == "IMG")
-                            $(this).children().remove();
-                        else
-                            $(ui.draggable).parent().append($(this).children());
-                        $(this).append($(ui.draggable));  
-                        if($(this).children().length == 1){                
-                            if($(this).children().find("input").val() == "1")
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_green");
-                            else
-                                $(this).removeClass("imgs_answers_gray")
-                                .removeClass("imgs_answers_green")
-                                .addClass("imgs_answers_red");
-                        }                    
-                    }
-                }
-            });
-            imgs_container.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_cont = $(ui.draggable).parent();
-                            $(this).append($(ui.draggable));
-                            tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                            var answers = "";
-                            $(this).parent().find(".imgs_answers .img_block").each(function(){
-                                answers += $(this).find("input").val();
-                            });
-                            if(tmp_cont.children()[0].tagName == "IMG")
-                                tmp_cont.removeClass("imgs_answers_green")
-                                .removeClass("imgs_answers_red")
-                                .addClass("imgs_answers_gray");
-                            else
-                            if(tmp_cont.children().length == 1){                
-                                if(tmp_cont.children().find("input").val() == "1")
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_red")
-                                    .addClass("imgs_answers_green");
-                                else
-                                    tmp_cont.removeClass("imgs_answers_gray")
-                                    .removeClass("imgs_answers_green")
-                                    .addClass("imgs_answers_red");
-                            }    
-                        }
-                    }
-                }
-            }); 
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_answers = $("<div class='imgs_answers imgs_answers_gray'><img src='img/drop_img.png' style='margin-top: 11px;'/></div>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "../../objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block img_gray' style='text-align: center;'></div>");
-    $("<input type='hidden' value='0'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(imgs_container);
-    }
-    imgs_answers.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if($(this).children()[0].tagName == "IMG")
-                    $(this).children().remove();
-                else
-                    $(ui.draggable).parent().append($(this).children());
-                $(this).append($(ui.draggable));  
-                if($(this).children().length == 1){                
-                    if($(this).children().find("input").val() == "1")
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_green");
-                    else
-                        $(this).removeClass("imgs_answers_gray")
-                        .removeClass("imgs_answers_green")
-                        .addClass("imgs_answers_red");
-                }                    
-            }
-        }
-    });
-    imgs_container.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_cont = $(ui.draggable).parent();
-                    $(this).append($(ui.draggable));
-                    tmp_cont.append("<img src='img/drop_img.png' style='margin-top: 11px;'/>");
-                    var answers = "";
-                    $(this).parent().find(".imgs_answers .img_block").each(function(){
-                        answers += $(this).find("input").val();
-                    });
-                    if(tmp_cont.children()[0].tagName == "IMG")
-                        tmp_cont.removeClass("imgs_answers_green")
-                        .removeClass("imgs_answers_red")
-                        .addClass("imgs_answers_gray");
-                    else
-                    if(tmp_cont.children().length == 1){                
-                        if(tmp_cont.children().find("input").val() == "1")
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_red")
-                            .addClass("imgs_answers_green");
-                        else
-                            tmp_cont.removeClass("imgs_answers_gray")
-                            .removeClass("imgs_answers_green")
-                            .addClass("imgs_answers_red");
-                    }    
-                }
-            }
-        }
-    });
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    text.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-    .attr("ondragover", "$(this).addClass('gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='1'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block img_gray' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center; float: left;'></div>").insertBefore(dest);
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='true_img'>").appendTo(img_block);
-    $("<input type='hidden' value='0'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length);
-        var tmp_img = $("<img/>").attr("src","../../" + tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj).find(".audio_block");
-            tmp = tmp.substr(1, tmp.length);            
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/config.xml
deleted file mode 100644
index 6f2794b..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/config.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="800"
-        height="600" 
-        ub:resizable="true">     
-   
-    <name>Notes</name>
-    <author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA
-    </author>
-    <description>Ordonner des images</description>
-		
-    <content src="index.html"/>
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/css/basic.css
deleted file mode 100644
index ba3924d..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/css/basic.css
+++ /dev/null
@@ -1,199 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid #666;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid #666;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 45px;
-}
-
-.imgs_cont{
-    min-width: 170px;
-    min-height: 174px;
-    margin: 0;
-    border-top: 2px dashed #ccc;
-    border-bottom: 2px dashed #ccc;
-    margin-bottom: 5px;
-}
-
-.all_imgs{
-    min-width: 170px;
-    min-height: 142px;
-    background-color: #ccc;
-    margin: 0;
-    border-top: 2px dashed #e6f6ff;
-    border-bottom: 2px dashed #e6f6ff;
-    margin-bottom: 5px;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-/*.text_cont{
-    width: 80%;
-    min-height: 40px;
-    float: right;
-    background-color: #ccc;
-    border-top-left-radius: 10px;
-    border-bottom-left-radius: 10px;
-    padding-left: 10px;
-}*/
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.img_block{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    cursor: pointer;
-    display: inline-block;
-    position: relative;
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-    background-color: white;
-}
-
-.close_img{
-    width: 30px;
-    height: 30px;    
-    background-repeat: no-repeat;
-    position: absolute;    
-    right: -15px;
-    background-image: url(../img/close_img.png);
-    top: -15px;
-    cursor: pointer;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.del_category, .add_category{
-    margin: 0 10px;
-    width: 30px;
-    height: 30px;
-    float: right;
-    cursor: pointer;
-    background-color: white;
-    border: none;
-}
-
-.del_category{
-
-}
-
-.add_category{
-
-}
-
-.cat_desc{
-    width: 100%;
-    height: 25px;
-    margin-bottom: 5px;
-    text-align: center;
-    border: none;
-    background-color: #c3e9ff;
-}
-
-.dropHere{
-    background-color: #C3E9FF !important;
-}
-
-.dropBack{
-    background-color: #F4F2F2 !important;
-}
-
-.def_cont{
-    background-color: #E6F6FF;
-}
-
-.red_cont{
-    background-color: #f99;
-}
-
-.green_cont{
-    background-color: #9f9;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/index.html
deleted file mode 100644
index 6602e56..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/index.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/script.js
deleted file mode 100644
index 8ec8462..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/js/script.js
+++ /dev/null
@@ -1,670 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    first_desc: "Odd numbers", 
-    second_desc: "Even numbers", 
-    enter: "Enter a category name here ...",
-    add: "Add new block"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_images","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                sankore.enableDropOnWidget(false);
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    checkOnDrop($(this), $(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                sankore.enableDropOnWidget(true);
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'>-</button>").appendTo($(this));
-                        $("<button class='add_category'>+</button>").appendTo($(this));
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);")
-                        .removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src");
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src");
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.link = $(this).find("img").attr("src");
-                img.ht = $(this).find("img").height();
-                img.wd = $(this).find("img").width();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-            for(var j in data[i].conts){
-                var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(var k in data[i].conts[j].imgs){
-                    var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                    var img = $("<img src=\"" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    if(data[i].conts[j].imgs[k].ht >= data[i].conts[j].imgs[k].wd)
-                        img.attr("height", "120");
-                    else{
-                        img.attr("width","120");
-                        img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                    }
-                    tmp_array.push(block_img);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });                                
-            }
-            
-            var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(all_imgs);
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });
-            
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].conts){
-                var tmp_img_array = [];
-                imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(k in data[i].conts[j].imgs){
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                    img = $("<img src=\"" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    if(data[i].conts[j].imgs[k].ht >= data[i].conts[j].imgs[k].wd)
-                        img.attr("height", "120");
-                    else{
-                        img.attr("width","120");
-                        img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                    }
-                    tmp_img_array.push(block_img);
-                }
-                
-                tmp_img_array = shuffle(tmp_img_array);
-                for(k in tmp_img_array){
-                    tmp_img_array[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: 'body'
-                    });
-                    tmp_img_array[k].appendTo(imgs_container);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });        
-                checkCorrectness(imgs_container);
-            }
-            
-            all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            var all_imgs_arr = [];
-            for(j in data[i].all_imgs){            
-                block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
-                $("<img src=\"" + data[i].all_imgs[j].link + "\" style=\"display: inline;\" height=\"" + data[i].all_imgs[j].ht + "\"/>").appendTo(block_img);
-                all_imgs_arr.push(block_img);
-            } 
-            
-            all_imgs_arr = shuffle(all_imgs_arr);
-            for(k in all_imgs_arr){
-                all_imgs_arr[k].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                all_imgs_arr[k].appendTo(all_imgs);
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });            
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'>-</button>").appendTo(imgs_container);
-    $("<button class='add_category'>+</button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'>-</button>").appendTo(imgs_container);
-    $("<button class='add_category'>+</button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest, source){
-    dest.append(source); 
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont")
-            .removeClass("red_cont")
-            .addClass("green_cont");
-        else
-            dest.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont")
-        .removeClass("green_cont")
-        .addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        var tmp_count = source.find("input[name='count']").val();
-        var tmp_mask = source.find("input[name='mask']").val();
-        if(source.find(".img_block").size() == tmp_count){
-            var tmp_right = true;                    
-            source.find(".img_block").each(function(){
-                if($(this).find("input").val() != tmp_mask)
-                    tmp_right = false;
-            });
-                    
-            if(tmp_right)
-                source.removeClass("def_cont")
-                .removeClass("red_cont")
-                .addClass("green_cont");
-            else
-                source.removeClass("def_cont")
-                .removeClass("green_cont")
-                .addClass("red_cont");
-        } else 
-            source.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    }
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
-            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            $("<div class='close_img'>").appendTo(img_block);            
-            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
-            var tmp_img = $("<img style='display: inline;'/>").attr("src", tmp).appendTo(img_block);
-            img_block.draggable({
-                helper:'clone',
-                zIndex:100,
-                appendTo: 'body'
-            });
-            $(obj).append(img_block);
-            
-            if(tmp_img.height() == 0){
-                var tmp_id = setInterval(function(){
-                    if(tmp_img.height() != 0){
-                        if(tmp_img.height() >= tmp_img.width())
-                            tmp_img.attr("height", "120");
-                        else{
-                            tmp_img.attr("width","120");
-                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                        }
-                        clearInterval(tmp_id);
-                    }
-                }, 10);
-            } else {
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }  
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/index.html
deleted file mode 100644
index 5a58eee..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){    
-                sankore.enableDropOnWidget(false);
-                start();                   
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 130px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 130px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/js/script.js
deleted file mode 100644
index f0f8b5e..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,674 +0,0 @@
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier",
-    first_desc: "Les nombres impairs", 
-    second_desc: "Les nombres pairs", 
-    enter: "Saisir le nom de la catégorie ici ...",
-    add: "Nouveau bloc"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_images","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                sankore.enableDropOnWidget(false);
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    checkOnDrop($(this), $(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                sankore.enableDropOnWidget(true);
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'>-</button>").appendTo($(this));
-                        $("<button class='add_category'>+</button>").appendTo($(this));
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);")
-                        .removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                    ;
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");
-                    ;
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.link = $(this).find("img").attr("src").replace("../../","");
-                ;
-                img.ht = $(this).find("img").height();
-                img.wd = $(this).find("img").width();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-            for(var j in data[i].conts){
-                var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(var k in data[i].conts[j].imgs){
-                    var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                    var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    if(data[i].conts[j].imgs[k].ht >= data[i].conts[j].imgs[k].wd)
-                        img.attr("height", "120");
-                    else{
-                        img.attr("width","120");
-                        img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                    }
-                    tmp_array.push(block_img);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });                                
-            }
-            
-            var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(all_imgs);
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });
-            
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].conts){
-                var tmp_img_array = [];
-                imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(k in data[i].conts[j].imgs){
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                    img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    if(data[i].conts[j].imgs[k].ht >= data[i].conts[j].imgs[k].wd)
-                        img.attr("height", "120");
-                    else{
-                        img.attr("width","120");
-                        img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                    }
-                    tmp_img_array.push(block_img);
-                }
-                
-                tmp_img_array = shuffle(tmp_img_array);
-                for(k in tmp_img_array){
-                    tmp_img_array[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: 'body'
-                    });
-                    tmp_img_array[k].appendTo(imgs_container);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });   
-                checkCorrectness(imgs_container);
-            }
-            
-            all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            var all_imgs_arr = [];
-            for(j in data[i].all_imgs){            
-                block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
-                $("<img src=\"../../" + data[i].all_imgs[j].link + "\" style=\"display: inline;\" height=\"" + data[i].all_imgs[j].ht + "\"/>").appendTo(block_img);
-                all_imgs_arr.push(block_img);
-            } 
-            
-            all_imgs_arr = shuffle(all_imgs_arr);
-            for(k in all_imgs_arr){
-                all_imgs_arr[k].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                all_imgs_arr[k].appendTo(all_imgs);
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });            
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'>-</button>").appendTo(imgs_container);
-    $("<button class='add_category'>+</button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'>-</button>").appendTo(imgs_container);
-    $("<button class='add_category'>+</button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest, source){
-    dest.append(source); 
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont")
-            .removeClass("red_cont")
-            .addClass("green_cont");
-        else
-            dest.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont")
-        .removeClass("green_cont")
-        .addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        var tmp_count = source.find("input[name='count']").val();
-        var tmp_mask = source.find("input[name='mask']").val();
-        if(source.find(".img_block").size() == tmp_count){
-            var tmp_right = true;                    
-            source.find(".img_block").each(function(){
-                if($(this).find("input").val() != tmp_mask)
-                    tmp_right = false;
-            });
-                    
-            if(tmp_right)
-                source.removeClass("def_cont")
-                .removeClass("red_cont")
-                .addClass("green_cont");
-            else
-                source.removeClass("def_cont")
-                .removeClass("green_cont")
-                .addClass("red_cont");
-        } else 
-            source.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    }
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
-            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-            tmp = tmp.substr(1, tmp.length);       
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            $("<div class='close_img'>").appendTo(img_block);            
-            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
-            var tmp_img = $("<img style='display: inline;'/>").attr("src", "../../" + tmp).appendTo(img_block);
-            img_block.draggable({
-                helper:'clone',
-                zIndex:100,
-                appendTo: 'body'
-            });
-            $(obj).append(img_block);
-            
-            if(tmp_img.height() == 0){
-                var tmp_id = setInterval(function(){
-                    if(tmp_img.height() != 0){
-                        if(tmp_img.height() >= tmp_img.width())
-                            tmp_img.attr("height", "120");
-                        else{
-                            tmp_img.attr("width","120");
-                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                        }
-                        clearInterval(tmp_id);
-                    }
-                }, 10);
-            } else {
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }  
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/index.html
deleted file mode 100644
index ddf9b5a..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){   
-                sankore.enableDropOnWidget(false);
-                start();                    
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/js/script.js
deleted file mode 100644
index 78056bd..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_images.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,671 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    first_desc: "Нечетные числа", 
-    second_desc: "Четные числа", 
-    enter: "Введите название категории ...",
-    add: "Новый блок"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_images","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_images",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                sankore.enableDropOnWidget(false);
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    checkOnDrop($(this), $(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                sankore.enableDropOnWidget(true);
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'>-</button>").appendTo($(this));
-                        $("<button class='add_category'>+</button>").appendTo($(this));
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);")
-                        .removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");;
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.link = $(this).find("img").attr("src").replace("../../","");;
-                    img_obj.ht = $(this).find("img").height();
-                    img_obj.wd = $(this).find("img").width();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.link = $(this).find("img").attr("src").replace("../../","");;
-                img.ht = $(this).find("img").height();
-                img.wd = $(this).find("img").width();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("categoriser_images", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-            for(var j in data[i].conts){
-                var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(var k in data[i].conts[j].imgs){
-                    var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                    var img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    if(data[i].conts[j].imgs[k].ht >= data[i].conts[j].imgs[k].wd)
-                        img.attr("height", "120");
-                    else{
-                        img.attr("width","120");
-                        img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                    }
-                    tmp_array.push(block_img);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });                
-            }
-            
-            var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(all_imgs);
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });
-            
-            container.appendTo("body");
-        } else {
-            container = $("<div class='cont'>");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].conts){
-                var tmp_img_array = [];
-                imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(k in data[i].conts[j].imgs){
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);
-                    img = $("<img src=\"../../" + data[i].conts[j].imgs[k].link + "\" style=\"display: inline;\"/>").appendTo(block_img);
-                    if(data[i].conts[j].imgs[k].ht >= data[i].conts[j].imgs[k].wd)
-                        img.attr("height", "120");
-                    else{
-                        img.attr("width","120");
-                        img.css("margin",(120 - data[i].conts[j].imgs[k].ht)/2 + "px 0");
-                    }
-                    tmp_img_array.push(block_img);
-                }
-                
-                tmp_img_array = shuffle(tmp_img_array);
-                for(k in tmp_img_array){
-                    tmp_img_array[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: 'body'
-                    });
-                    tmp_img_array[k].appendTo(imgs_container);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }); 
-                checkCorrectness(imgs_container);
-            }
-            
-            all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            var all_imgs_arr = [];
-            for(j in data[i].all_imgs){            
-                block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);
-                $("<img src=\"../../" + data[i].all_imgs[j].link + "\" style=\"display: inline;\" height=\"" + data[i].all_imgs[j].ht + "\"/>").appendTo(block_img);
-                all_imgs_arr.push(block_img);
-            } 
-            
-            all_imgs_arr = shuffle(all_imgs_arr);
-            for(k in all_imgs_arr){
-                all_imgs_arr[k].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                all_imgs_arr[k].appendTo(all_imgs);
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });            
-            container.appendTo("body");
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'>-</button>").appendTo(imgs_container);
-    $("<button class='add_category'>+</button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'>-</button>").appendTo(imgs_container);
-    $("<button class='add_category'>+</button>").appendTo(imgs_container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).css(\"background-color\",\"#e6f6ff\"); return false;")
-    .attr("ondragover", "$(this).css(\"background-color\",\"#c3e9ff\"); return false;")
-    .attr("ondrop", "$(this).css(\"background-color\",\"#e6f6ff\"); return onDropTarget(this,event);");
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest, source){
-    dest.append(source); 
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont")
-            .removeClass("red_cont")
-            .addClass("green_cont");
-        else
-            dest.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont")
-        .removeClass("green_cont")
-        .addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        var tmp_count = source.find("input[name='count']").val();
-        var tmp_mask = source.find("input[name='mask']").val();
-        if(source.find(".img_block").size() == tmp_count){
-            var tmp_right = true;                    
-            source.find(".img_block").each(function(){
-                if($(this).find("input").val() != tmp_mask)
-                    tmp_right = false;
-            });
-                    
-            if(tmp_right)
-                source.removeClass("def_cont")
-                .removeClass("red_cont")
-                .addClass("green_cont");
-            else
-                source.removeClass("def_cont")
-                .removeClass("green_cont")
-                .addClass("red_cont");
-        } else 
-            source.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    }
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        if(textData.getElementsByTagName("ready")[0].firstChild.textContent == "true"){
-            var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-            tmp = tmp.substr(1, tmp.length);       
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            $("<div class='close_img'>").appendTo(img_block);            
-            $("<input type='hidden' value='" + $(obj).find("input[name='mask']").val() + "'/>").appendTo(img_block);
-            var tmp_img = $("<img style='display: inline;'/>").attr("src", "../../" + tmp).appendTo(img_block);
-            img_block.draggable({
-                helper:'clone',
-                zIndex:100,
-                appendTo: 'body'
-            });
-            $(obj).append(img_block);
-            
-            if(tmp_img.height() == 0){
-                var tmp_id = setInterval(function(){
-                    if(tmp_img.height() != 0){
-                        if(tmp_img.height() >= tmp_img.width())
-                            tmp_img.attr("height", "120");
-                        else{
-                            tmp_img.attr("width","120");
-                            tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                        }
-                        clearInterval(tmp_id);
-                    }
-                }, 10);
-            } else {
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }  
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/config.xml
deleted file mode 100644
index 4932036..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/config.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="900"
-        height="450" 
-        ub:resizable="true">     
-   
-    <name>Notes</name>
-    <author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA
-    </author>
-    <description>Ordonner des images</description>
-		
-    <content src="index.html"/>
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/css/basic.css
deleted file mode 100644
index e4b1562..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/css/basic.css
+++ /dev/null
@@ -1,205 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid #666;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid #666;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 45px;
-}
-
-.imgs_cont{
-    min-width: 170px;
-    min-height: 100px;
-    margin: 0;
-    border-top: 2px dashed #ccc;
-    border-bottom: 2px dashed #ccc;
-    margin-bottom: 5px;
-}
-
-.all_imgs{
-    min-width: 170px;
-    min-height: 70px;
-    background-color: #ccc;
-    margin: 0;
-    border-top: 2px dashed #e6f6ff;
-    border-bottom: 2px dashed #e6f6ff;
-    margin-bottom: 5px;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 100%;
-    min-height: 20px;
-    display: block;
-    cursor: pointer;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.img_block{
-    width: 150px;
-    height: 60px;
-    margin: 10px;
-    display: inline-table;
-    position: relative;
-    border: 1px solid #ccc;
-    border-radius: 10px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-    background-color: white;
-}
-
-.close_img{
-    width: 30px;
-    height: 30px;    
-    background-repeat: no-repeat;
-    position: absolute;    
-    right: -15px;
-    background-image: url(../img/close_img.png);
-    top: -15px;
-    cursor: pointer;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.add_img{
-    width: 62px;
-    height: 62px;
-    margin: 10px;
-    cursor: pointer;
-    display: inline-table;
-    position: relative;
-    background-image: url(../img/img_plus.png);
-}
-
-.del_category, .add_category{
-    margin: 0 10px;
-    width: 30px;
-    height: 30px;
-    float: right;
-    cursor: pointer;
-    border: none;
-    background-color: transparent;
-}
-
-.del_category{
-    background-image: url(../img/minus.png);
-}
-
-.add_category{
-    background-image: url(../img/plus.png);
-}
-
-.cat_desc{
-    width: 100%;
-    height: 25px;
-    margin-bottom: 5px;
-    text-align: center;
-    border: none;
-    background-color: #c3e9ff;
-}
-
-.dropHere{
-    background-color: #C3E9FF !important;
-}
-
-.dropBack{
-    background-color: #F4F2F2 !important;
-}
-
-.def_cont{
-    background-color: #E6F6FF;
-}
-
-.red_cont{
-    background-color: #f99;
-}
-
-.green_cont{
-    background-color: #9f9;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/green_point.png
deleted file mode 100644
index a2a4468..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/green_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/red_point.png
deleted file mode 100644
index f6daa19..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/img/red_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/index.html b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/index.html
deleted file mode 100644
index 41b2ed8..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/script.js
deleted file mode 100644
index a649129..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/js/script.js
+++ /dev/null
@@ -1,611 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    first_desc: "Fruits", 
-    second_desc: "Vegetables",
-    potatoes: "Potato",
-    carrot: "Carrot",
-    onion: "Onion",
-    apple: "Apple",
-    pear: "Pear",
-    enter: "Enter a category name here ...",
-    add: "Add new block",
-    text: "Some text"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_text","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_img").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            var tmp_text = $(this).find(".text_cont");
-                            tmp_text.removeAttr("contenteditable")
-                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    checkOnDrop($(this), $(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'></button>").appendTo($(this));
-                        $("<button class='add_category'></button>").appendTo($(this));
-                        $(this).removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            $(this).draggable("destroy")
-                            .find(".text_cont").attr("contenteditable","true")
-                            .removeAttr("style");
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                        $("<div class='add_img'>").appendTo($(this));
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addText($(this).parent(), $(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.text = $(this).find(".text_cont").text();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>").appendTo("body");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-            for(var j in data[i].conts){
-                var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(var k in data[i].conts[j].imgs){
-                    var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
-                    $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                    tmp_array.push(block_img);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });                                
-            }
-            
-            var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(all_imgs);
-                var tmp_text = tmp_array[j].find(".text_cont");
-                tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });
-        } else {
-            container = $("<div class='cont'>").appendTo("body");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].conts){
-                var tmp_img_array = [];
-                imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(k in data[i].conts[j].imgs){
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
-                    $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                    tmp_img_array.push(block_img);
-                }
-                
-                tmp_img_array = shuffle(tmp_img_array);
-                for(k in tmp_img_array){
-                    tmp_img_array[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: 'body'
-                    });
-                    tmp_img_array[k].appendTo(imgs_container);
-                    tmp_text = tmp_img_array[k].find(".text_cont");
-                    tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });        
-                checkCorrectness(imgs_container);
-            }
-            
-            all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            var all_imgs_arr = [];
-            for(j in data[i].all_imgs){            
-                block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
-                $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
-                all_imgs_arr.push(block_img);
-            } 
-            
-            all_imgs_arr = shuffle(all_imgs_arr);
-            for(k in all_imgs_arr){
-                all_imgs_arr[k].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                all_imgs_arr[k].appendTo(all_imgs);
-                tmp_text = all_imgs_arr[k].find(".text_cont");
-                tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });            
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text1);
-    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
-    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text2);
-    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
-    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text3);
-    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
-    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text4);
-    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
-    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text5);
-    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
-    
-    tmp_array.push(text1, text2, text3, text4, text5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//add text block
-function addText(dest, source){
- 
-    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
-    $("<div class='close_img'>").appendTo(text_block);            
-    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
-    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest, source){
-    dest.append(source); 
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont")
-            .removeClass("red_cont")
-            .addClass("green_cont");
-        else
-            dest.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont")
-        .removeClass("green_cont")
-        .addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        var tmp_count = source.find("input[name='count']").val();
-        var tmp_mask = source.find("input[name='mask']").val();
-        if(source.find(".img_block").size() == tmp_count){
-            var tmp_right = true;                    
-            source.find(".img_block").each(function(){
-                if($(this).find("input").val() != tmp_mask)
-                    tmp_right = false;
-            });
-                    
-            if(tmp_right)
-                source.removeClass("def_cont")
-                .removeClass("red_cont")
-                .addClass("green_cont");
-            else
-                source.removeClass("def_cont")
-                .removeClass("green_cont")
-                .addClass("red_cont");
-        } else 
-            source.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/index.html
deleted file mode 100644
index 5a58eee..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){    
-                sankore.enableDropOnWidget(false);
-                start();                   
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 130px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 130px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/js/script.js
deleted file mode 100644
index 01ec59d..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,611 +0,0 @@
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier", 
-    first_desc: "Fruits", 
-    second_desc: "Légumes",
-    potatoes: "Pomme de terre",
-    carrot: "Carotte",
-    onion: "Oignon",
-    apple: "Pomme",
-    pear: "Poire",
-    enter: "Saisir le nom de la catégorie ici ...",
-    add: "Nouveau bloc",
-    text: "Texte"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_text","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_img").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            var tmp_text = $(this).find(".text_cont");
-                            tmp_text.removeAttr("contenteditable")
-                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    checkOnDrop($(this), $(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'></button>").appendTo($(this));
-                        $("<button class='add_category'></button>").appendTo($(this));
-                        $(this).removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            $(this).draggable("destroy")
-                            .find(".text_cont").attr("contenteditable","true")
-                            .removeAttr("style");
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                        $("<div class='add_img'>").appendTo($(this));
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addText($(this).parent(), $(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.text = $(this).find(".text_cont").text();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>").appendTo("body");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-            for(var j in data[i].conts){
-                var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(var k in data[i].conts[j].imgs){
-                    var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
-                    $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                    tmp_array.push(block_img);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });                                
-            }
-            
-            var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(all_imgs);
-                var tmp_text = tmp_array[j].find(".text_cont");
-                tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });
-        } else {
-            container = $("<div class='cont'>").appendTo("body");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].conts){
-                var tmp_img_array = [];
-                imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(k in data[i].conts[j].imgs){
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
-                    $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                    tmp_img_array.push(block_img);
-                }
-                
-                tmp_img_array = shuffle(tmp_img_array);
-                for(k in tmp_img_array){
-                    tmp_img_array[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: 'body'
-                    });
-                    tmp_img_array[k].appendTo(imgs_container);
-                    tmp_text = tmp_img_array[k].find(".text_cont");
-                    tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });        
-                checkCorrectness(imgs_container);
-            }
-            
-            all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            var all_imgs_arr = [];
-            for(j in data[i].all_imgs){            
-                block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
-                $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
-                all_imgs_arr.push(block_img);
-            } 
-            
-            all_imgs_arr = shuffle(all_imgs_arr);
-            for(k in all_imgs_arr){
-                all_imgs_arr[k].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                all_imgs_arr[k].appendTo(all_imgs);
-                tmp_text = all_imgs_arr[k].find(".text_cont");
-                tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });            
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text1);
-    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
-    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text2);
-    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
-    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text3);
-    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
-    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text4);
-    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
-    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text5);
-    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
-    
-    tmp_array.push(text1, text2, text3, text4, text5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//add text block
-function addText(dest, source){
- 
-    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
-    $("<div class='close_img'>").appendTo(text_block);            
-    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
-    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest, source){
-    dest.append(source); 
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont")
-            .removeClass("red_cont")
-            .addClass("green_cont");
-        else
-            dest.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont")
-        .removeClass("green_cont")
-        .addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        var tmp_count = source.find("input[name='count']").val();
-        var tmp_mask = source.find("input[name='mask']").val();
-        if(source.find(".img_block").size() == tmp_count){
-            var tmp_right = true;                    
-            source.find(".img_block").each(function(){
-                if($(this).find("input").val() != tmp_mask)
-                    tmp_right = false;
-            });
-                    
-            if(tmp_right)
-                source.removeClass("def_cont")
-                .removeClass("red_cont")
-                .addClass("green_cont");
-            else
-                source.removeClass("def_cont")
-                .removeClass("green_cont")
-                .addClass("red_cont");
-        } else 
-            source.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/index.html
deleted file mode 100644
index ddf9b5a..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){   
-                sankore.enableDropOnWidget(false);
-                start();                    
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/js/script.js
deleted file mode 100644
index 2bd9dcc..0000000
--- a/Sankore-3.1/resources/library/interactivities/categoriser_text.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,611 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    first_desc: "Фрукты", 
-    second_desc: "Овощи",
-    potatoes: "Картофель",
-    carrot: "Морковь",
-    onion: "Лук",
-    apple: "Яблоко",
-    pear: "Груша",
-    enter: "Введите название категории ...",
-    add: "Новый блок",
-    text: "Какой-то текст"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("categoriser_text","")){
-            var data = jQuery.parseJSON(sankore.preference("categoriser_text",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").each(function(){                        
-                        $(this).find(".del_category").remove();
-                        $(this).find(".add_img").remove();
-                        $(this).find(".add_category").remove();                        
-                        $(this).removeAttr("ondragenter")
-                        .removeAttr("ondragleave")
-                        .removeAttr("ondragover")
-                        .removeAttr("ondrop")                        
-                        .find(".cat_desc").attr("disabled","disabled");
-                        var tmp_count = $(this).find(".img_block").size();
-                        $(this).find("input[name='count']").val(tmp_count);
-                        $(this).find(".img_block").each(function(){
-                            $(this).find(".close_img").remove();
-                            var tmp_text = $(this).find(".text_cont");
-                            tmp_text.removeAttr("contenteditable")
-                            .css("margin", ($(this).height() - tmp_text.height())/2 + "px 0px");
-                            tmp_array.push($(this));
-                            $(this).remove();
-                        });
-                        $(this).droppable({
-                            hoverClass: 'dropHere',
-                            drop: function(event, ui) {
-                                if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                    var tmp_ui = $(ui.draggable).parent();
-                                    checkOnDrop($(this), $(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        });
-                        $(this).removeAttr("style");
-                    });
-                    
-                    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++){
-                        tmp_array[i].draggable({
-                            helper:'clone',
-                            zIndex:100,
-                            appendTo: 'body'
-                        });
-                        tmp_array[i].appendTo(all_imgs);
-                    }
-                    
-                    all_imgs.droppable({
-                        hoverClass: 'dropBack',
-                        drop: function(event, ui) {
-                            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                                if(this != $(ui.draggable).parent()[0]){
-                                    var tmp_ui = $(ui.draggable).parent();                    
-                                    $(this).append($(ui.draggable));
-                                    checkCorrectness(tmp_ui);
-                                }
-                            }
-                        }
-                    });
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").each(function(){
-                        $("<button class='del_category'></button>").appendTo($(this));
-                        $("<button class='add_category'></button>").appendTo($(this));
-                        $(this).removeClass("red_cont")
-                        .removeClass("green_cont")
-                        .addClass("def_cont")
-                        .droppable("destroy")
-                        .find(".cat_desc").removeAttr("disabled");
-                        var tmp_img_cont = $(this);
-                        var tmp_mask = $(this).find("input[name='mask']").val();
-                        container.find(".img_block").each(function(){
-                            $(this).draggable("destroy")
-                            .find(".text_cont").attr("contenteditable","true")
-                            .removeAttr("style");
-                            if($(this).find("input").val() == tmp_mask){
-                                $("<div class='close_img'>").appendTo($(this));
-                                $(this).appendTo(tmp_img_cont);
-                            }
-                        });
-                        $("<div class='add_img'>").appendTo($(this));
-                    });
-                    container.find(".all_imgs").remove();
-                });
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addText($(this).parent(), $(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){       
-        $(this).parent().remove();        
-    });
-    
-    //adding new category
-    $(".add_category").live("click",function(){
-        addCategory($(this).parent());
-    });
-    
-    //deleting the category
-    $(".del_category").live("click",function(){
-        if($(this).parent().parent().find(".imgs_cont").size() == 1){
-            $(this).parent().find(".img_block").remove();
-            $(this).parent().find(".cat_desc").val(sankoreLang.enter);
-        } else {
-            $(this).parent().remove();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "edit";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find(".img_block").size();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.mode = "display";
-            cont_obj.conts = [];
-            $(this).find(".imgs_cont").each(function(){
-                var img_cont = new Object();
-                img_cont.mask = $(this).find("input[name='mask']").val();
-                img_cont.count = $(this).find("input[name='count']").val();
-                img_cont.text = $(this).find(".cat_desc").val();
-                img_cont.imgs = [];
-                $(this).find(".img_block").each(function(){
-                    var img_obj = new Object();
-                    img_obj.value = $(this).find("input").val();
-                    img_obj.text = $(this).find(".text_cont").text();
-                    img_cont.imgs.push(img_obj);
-                });
-                cont_obj.conts.push(img_cont);
-            });
-            cont_obj.all_imgs = [];
-            $(this).find(".all_imgs .img_block").each(function(){
-                var img = new Object();
-                img.value = $(this).find("input").val();
-                img.text = $(this).find(".text_cont").text();
-                cont_obj.all_imgs.push(img);
-            });
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("categoriser_text", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        if(data[i].mode == "edit"){          
-            var tmp_array = [];
-            var container = $("<div class='cont'>").appendTo("body");
-            var sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        
-            for(var j in data[i].conts){
-                var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(var k in data[i].conts[j].imgs){
-                    var block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                    
-                    $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                    tmp_array.push(block_img);
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });                                
-            }
-            
-            var all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            
-            tmp_array = shuffle(tmp_array);
-            for(j in tmp_array){
-                tmp_array[j].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                tmp_array[j].appendTo(all_imgs);
-                var tmp_text = tmp_array[j].find(".text_cont");
-                tmp_text.css("margin", (tmp_array[j].height() - tmp_text.height())/2 + "px 0px");
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });
-        } else {
-            container = $("<div class='cont'>").appendTo("body");
-            sub_container = $("<div class='sub_cont'>").appendTo(container);                  
-            $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        
-            for(j in data[i].conts){
-                var tmp_img_array = [];
-                imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);    
-                $("<input type='hidden' name='mask' value='" + data[i].conts[j].mask + "'/>").appendTo(imgs_container);
-                $("<input type='hidden' name='count' value='" + data[i].conts[j].count + "'/>").appendTo(imgs_container);
-                tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-                $("<input type='text' class='cat_desc' value='" + data[i].conts[j].text + "' disabled/>").appendTo(tmp_div);
-                for(k in data[i].conts[j].imgs){
-                    block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                    $("<input type='hidden' value='" + data[i].conts[j].imgs[k].value + "'/>").appendTo(block_img);                   
-                    $("<div class='text_cont'>" + data[i].conts[j].imgs[k].text + "</div>").appendTo(block_img);
-                    tmp_img_array.push(block_img);
-                }
-                
-                tmp_img_array = shuffle(tmp_img_array);
-                for(k in tmp_img_array){
-                    tmp_img_array[k].draggable({
-                        helper:'clone',
-                        zIndex:100,
-                        appendTo: 'body'
-                    });
-                    tmp_img_array[k].appendTo(imgs_container);
-                    tmp_text = tmp_img_array[k].find(".text_cont");
-                    tmp_text.css("margin", (tmp_img_array[k].height() - tmp_text.height())/2 + "px 0px");
-                }
-                
-                imgs_container.droppable({
-                    hoverClass: 'dropHere',
-                    drop: function(event, ui) {
-                        if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                            var tmp_ui = $(ui.draggable).parent();
-                            checkOnDrop($(this), $(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                });        
-                checkCorrectness(imgs_container);
-            }
-            
-            all_imgs = $("<div class='all_imgs'>").appendTo(container); 
-            var all_imgs_arr = [];
-            for(j in data[i].all_imgs){            
-                block_img = $("<div class='img_block' style='text-align: center;'></div>");
-                $("<input type='hidden' value='" + data[i].all_imgs[j].value + "'/>").appendTo(block_img);                
-                $("<div class='text_cont'>" + data[i].all_imgs[j].text + "</div>").appendTo(block_img);
-                all_imgs_arr.push(block_img);
-            } 
-            
-            all_imgs_arr = shuffle(all_imgs_arr);
-            for(k in all_imgs_arr){
-                all_imgs_arr[k].draggable({
-                    helper:'clone',
-                    zIndex:100,
-                    appendTo: 'body'
-                });
-                all_imgs_arr[k].appendTo(all_imgs);
-                tmp_text = all_imgs_arr[k].find(".text_cont");
-                tmp_text.css("margin", (all_imgs_arr[k].height() - tmp_text.height())/2 + "px 0px");
-            }
-            
-            all_imgs.sortable();
-            
-            all_imgs.droppable({
-                hoverClass: 'dropBack',
-                drop: function(event, ui) {
-                    if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                        if(this != $(ui.draggable).parent()[0]){
-                            var tmp_ui = $(ui.draggable).parent();                    
-                            $(this).append($(ui.draggable));
-                            checkCorrectness(tmp_ui);
-                        }
-                    }
-                }
-            });            
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container_one = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var imgs_container_two = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    var all_imgs = $("<div class='all_imgs'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='1'/>").appendTo(imgs_container_one);
-    $("<input type='hidden' name='count' value='2'/>").appendTo(imgs_container_one);
-    var tmp_div_one = $("<div style='width: 100%'>").appendTo(imgs_container_one);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.first_desc + "' disabled/>").appendTo(tmp_div_one);
-    
-    $("<input type='hidden' name='mask' value='2'/>").appendTo(imgs_container_two);
-    $("<input type='hidden' name='count' value='3'/>").appendTo(imgs_container_two);
-    var tmp_div_two = $("<div style='width: 100%'>").appendTo(imgs_container_two);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.second_desc + "' disabled/>").appendTo(tmp_div_two);
-    
-    var text1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text1);
-    $("<div class='text_cont'>" + sankoreLang.potatoes + "</div>").appendTo(text1);
-    var text2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text2);
-    $("<div class='text_cont'>" + sankoreLang.apple + "</div>").appendTo(text2);
-    var text3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text3);
-    $("<div class='text_cont'>" + sankoreLang.carrot + "</div>").appendTo(text3);
-    var text4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(text4);
-    $("<div class='text_cont'>" + sankoreLang.pear + "</div>").appendTo(text4);
-    var text5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(text5);
-    $("<div class='text_cont'>" + sankoreLang.onion + "</div>").appendTo(text5);  
-    
-    tmp_array.push(text1, text2, text3, text4, text5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++){
-        tmp_array[i].draggable({
-            helper:'clone',
-            zIndex:100,
-            appendTo: 'body'
-        });
-        tmp_array[i].find(".text_cont").css("margin", "21px 0px");
-        tmp_array[i].appendTo(all_imgs);
-    }
-    all_imgs.sortable();
-    
-    imgs_container_one.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    imgs_container_two.droppable({
-        hoverClass: 'dropHere',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                var tmp_ui = $(ui.draggable).parent();
-                checkOnDrop($(this), $(ui.draggable));
-                checkCorrectness(tmp_ui);
-            }
-        }
-    });
-    
-    all_imgs.droppable({
-        hoverClass: 'dropBack',
-        drop: function(event, ui) {
-            if($(ui.draggable).parent().parent().html() == $(this).parent().html()){
-                if(this != $(ui.draggable).parent()[0]){
-                    var tmp_ui = $(ui.draggable).parent();                    
-                    $(this).append($(ui.draggable));
-                    checkCorrectness(tmp_ui);
-                }
-            }
-        }
-    });
-}
-
-//add text block
-function addText(dest, source){
- 
-    var text_block = $("<div class='img_block' style='text-align: center;'>").insertBefore(source);
-    $("<div class='close_img'>").appendTo(text_block);            
-    $("<input type='hidden' value='" + dest.find("input[name='mask']").val() + "'/>").appendTo(text_block);
-    $("<div class='text_cont' contenteditable='true'>" + sankoreLang.text + "</div>").appendTo(text_block);    
-}
-
-//function that allows to add new category
-function addCategory(obj){
-    var imgs_container = $("<div class='imgs_cont def_cont'>").insertAfter(obj);    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);   
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'>").appendTo(tmp_div);  
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont def_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' name='mask' value='" + returnId() + "'/>").appendTo(imgs_container);
-    $("<input type='hidden' name='count' value=''/>").appendTo(imgs_container); 
-    var tmp_div = $("<div style='width: 100%'>").appendTo(imgs_container);
-    $("<input type='text' class='cat_desc' value='" + sankoreLang.enter + "'/>").appendTo(tmp_div);    
-    $("<button class='del_category'></button>").appendTo(imgs_container);
-    $("<button class='add_category'></button>").appendTo(imgs_container);
-    $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//return id
-function returnId(){
-    var tmp = Math.random().toString();
-    return tmp.substr(2);
-}
-
-//a func for checking when smth will drop
-function checkOnDrop(dest, source){
-    dest.append(source); 
-    var tmp_count = dest.find("input[name='count']").val();
-    var tmp_mask = dest.find("input[name='mask']").val();
-    if(dest.find(".img_block").size() == tmp_count){
-        var tmp_right = true;                    
-        dest.find(".img_block").each(function(){
-            if($(this).find("input").val() != tmp_mask)
-                tmp_right = false;
-        });          
-        if(tmp_right)
-            dest.removeClass("def_cont")
-            .removeClass("red_cont")
-            .addClass("green_cont");
-        else
-            dest.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    } else 
-        dest.removeClass("def_cont")
-        .removeClass("green_cont")
-        .addClass("red_cont");
-}
-
-//checking source on correctness
-function checkCorrectness(source){
-    if(!source.hasClass("all_imgs")){
-        var tmp_count = source.find("input[name='count']").val();
-        var tmp_mask = source.find("input[name='mask']").val();
-        if(source.find(".img_block").size() == tmp_count){
-            var tmp_right = true;                    
-            source.find(".img_block").each(function(){
-                if($(this).find("input").val() != tmp_mask)
-                    tmp_right = false;
-            });
-                    
-            if(tmp_right)
-                source.removeClass("def_cont")
-                .removeClass("red_cont")
-                .addClass("green_cont");
-            else
-                source.removeClass("def_cont")
-                .removeClass("green_cont")
-                .addClass("red_cont");
-        } else 
-            source.removeClass("def_cont")
-            .removeClass("green_cont")
-            .addClass("red_cont");
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/etudier.wgt/config.xml
deleted file mode 100644
index 95c9e84..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="900"
-        height="450" 
-        ub:resizable="true">     
-   
-		<name>Notes</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Associer images</description>
-		
-		<content src="index.html"/>
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/etudier.wgt/css/basic.css
deleted file mode 100644
index dd6adda..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/css/basic.css
+++ /dev/null
@@ -1,257 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid #999;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.img_block{
-    width: 120px;
-    height: 120px;
-    padding: 5px;
-    display: inline-block;
-    position: absolute;
-    top: 100px;
-    left: 350px;
-}
-
-.img_gray{
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-}
-
-.close_img {
-    width: 30px;
-    height: 30px;
-    background-repeat: no-repeat;
-    position: absolute;
-    background-image: url(../img/close_img.png);    
-    top: -15px;   
-    right: -15px;
-    cursor: pointer;
-}
-
-.dropHere{
-    background-color: #ccc;
-}
-
-.dropBack{
-    background-color: #F4F2F2;
-}
-
-.audio_block{
-    width: 120px;
-    height: 30px;
-    padding: 10px 5px;    
-    position: absolute;
-    top: 200px;
-    left: 50px;
-}
-
-.audio_desc{
-    min-height: 30px;
-    margin: 5px 0;
-    float: left;
-    margin-left: 20px;
-}
-
-.play, .stop{
-    height: 30px;
-    width: 70px;    
-    float: left;
-    cursor: pointer;
-}
-
-.play{
-    background-image: url(../img/play.png);
-}
-
-.stop{
-    background-image: url(../img/stop.png);
-}
-
-.replay{
-    height: 30px;
-    width: 32px;
-    margin-left: 10px;
-    float: left;
-    background-image: url(../img/replay.png);
-    background-repeat: no-repeat;
-    cursor: pointer;
-}
-
-.gray{
-    background-color: #ccc;
-}
-
-#slider ul, #slider li{
-    margin:0;
-    padding:0;
-    list-style:none;
-}
-
-#slider{ 
-    height: 100%;
-    margin-top: -25px;
-    overflow:hidden; 
-}
-
-span#prevBtn a{
-    height: 100%;
-    width: 20px;
-    background-color: #999;
-    position: absolute;
-    left: 0;
-    top: 0;
-    opacity: 0.5;
-    background-image: url(../img/left.png);
-    background-repeat: no-repeat;
-    background-position: 0 54%;
-}
-
-span#nextBtn a{
-    height: 100%;
-    width: 20px;
-    background-color: #999;
-    position: absolute;
-    right: 0;
-    top: 0;
-    opacity: 0.5;
-    background-image: url(../img/right.png);
-    background-repeat: no-repeat;
-    background-position: 0 52%;
-}
-
-span#nextBtn a:hover, span#prevBtn a:hover{
-    opacity: 0.7;
-}
-
-li>div{
-    width: 100%;
-    height: 100%;
-    padding: 30px 0 0 25px;
-    position: relative;
-}
-
-.text_block{
-    margin: 0;
-    padding: 5px;
-    width: 200px;
-    position: absolute;
-    top: 50px;
-    left: 100px;
-}
-
-.block_border{
-    border: 1px solid #999;
-    border-radius: 5px;
-}
-
-.move_block{
-    width: 30px;
-    height: 30px;
-    background-image: url(../img/moving.png);
-    position: absolute;
-    top: -15px;
-    left: -15px;
-    cursor: pointer;
-}
-
-.resize_block{
-    width: 30px;
-    height: 30px;
-    background-image: url(../img/resize.png);
-    position: absolute;
-    bottom: -13px;
-    right: -13px;
-    cursor: pointer;
-}
-
-.add_left{
-    width: 41px;
-    height: 30px;
-    opacity: 0.5;
-    background-image: url(../img/add_left.png);
-    position: absolute;
-    bottom: 40px;
-    left: 40px;
-    cursor: pointer;
-}
-
-.add_right{
-    width: 41px;
-    height: 30px;
-    opacity: 0.5;
-    background-image: url(../img/add_right.png);
-    position: absolute;
-    bottom: 40px;
-    right: 80px;
-    cursor: pointer;
-}
-
-.close_slide{
-    width: 30px;
-    height: 30px;
-    opacity: 0.5;
-    background-image: url(../img/close_slide.png);
-    position: absolute;
-    top: 40px;
-    right: 80px;
-    cursor: pointer;
-}
-
-.add_text{
-    width: 30px;
-    height: 30px;
-    opacity: 0.5;
-    background-image: url(../img/add_text.png);
-    position: absolute;
-    top: 40px;
-    left: 40px;
-    cursor: pointer;
-}
-
-.add_left:hover, .add_right:hover, .close_slide:hover, .add_text:hover{
-    opacity: 0.8;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/green_point.png
deleted file mode 100644
index a2a4468..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/green_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/red_point.png
deleted file mode 100644
index f6daa19..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/etudier.wgt/img/red_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/index.html b/Sankore-3.1/resources/library/interactivities/etudier.wgt/index.html
deleted file mode 100644
index fcb8180..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/index.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/easySlider1.5.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){  
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-        <div id="slider">
-            <ul>							
-            </ul>
-        </div>
-        <span id="prevBtn"><a href="javascript:void(0);"></a></span>
-        <span id="nextBtn"><a href="javascript:void(0);"></a></span>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/easySlider1.5.js b/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/easySlider1.5.js
deleted file mode 100644
index ea9cf30..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/easySlider1.5.js
+++ /dev/null
@@ -1,183 +0,0 @@
-(function($) {
-
-    var s = 0;
-    var w = 0;
-    var h = 0;
-    var t = 0;
-    var ts = 0;
-        
-    $.fn.setSize = function(width, height){
-        w = width;
-        h = height;        
-        $(this).find("ul").css('width',s*w);	
-        $("ul", $(this)).animate(
-        {
-            marginLeft: (t*w*-1)
-        }, 
-        0
-        );	
-    }
-    
-    $.fn.removeSlide = function(){
-        s = $("li", $(this)).length;     
-        $(this).find("ul").css('width',s*w);
-        ts = s-1;		
-    }
-    
-    $.fn.addSlide = function(place){
-        s = $("li", $(this)).length;          
-        ts = s-1;	
-        $(this).find("ul").css('width',s*w);
-        if(place == "after")
-            $("a","#nextBtn").trigger("click");   
-    }
-
-    $.fn.easySlider = function(options){
-	  
-        // default configuration properties
-        var defaults = {			
-            prevId: 		'prevBtn',
-            prevText: 		'Previous',
-            nextId: 		'nextBtn',	
-            nextText: 		'Next',
-            controlsShow:           true,
-            controlsBefore:         '',
-            controlsAfter:          '',	
-            controlsFade:           true,
-            firstId: 		'firstBtn',
-            firstText: 		'First',
-            firstShow:		false,
-            lastId: 		'lastBtn',	
-            lastText: 		'Last',
-            lastShow:		false,				
-            vertical:		false,
-            speed: 			800,
-            auto:			false,
-            pause:			2000,
-            continuous:		false
-        }; 
-		
-        options = $.extend(defaults, options);  
-				
-        this.each(function() {  
-            var obj = $(this); 				
-            s = $("li", obj).length;
-            w = $("li", obj).width(); 
-            h = $("li", obj).height(); 
-            obj.width(w); 
-            obj.height(h); 
-            obj.css("overflow","hidden");
-            ts = s-1;
-            t = 0;
-            $("ul", obj).css('width',s*w);			
-            if(!options.vertical) $("li", obj).css('float','left');
-			
-            if(options.controlsShow){
-                var html = options.controlsBefore;
-                if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
-                html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
-                html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
-                if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';
-                html += options.controlsAfter;						
-                $(obj).after(html);										
-            };
-	
-            $("a","#"+options.nextId).click(function(){	
-                animate("next",true);
-            });
-            $("a","#"+options.prevId).click(function(){		
-                animate("prev",true);				
-            });	
-            $("a","#"+options.firstId).click(function(){		
-                animate("first",true);
-            });				
-            $("a","#"+options.lastId).click(function(){		
-                animate("last",true);				
-            });		
-			
-            function animate(dir,clicked){
-                var ot = t;				
-                switch(dir){
-                    case "next":
-                        t = (ot>=ts) ? (options.continuous ? 0 : ts) : t+1;						
-                        break; 
-                    case "prev":
-                        t = (t<=0) ? (options.continuous ? ts : 0) : t-1;
-                        break; 
-                    case "first":
-                        t = 0;
-                        break; 
-                    case "last":
-                        t = ts;
-                        break; 
-                    default:
-                        break; 
-                };	
-				
-                var diff = Math.abs(ot-t);
-                var speed = diff*options.speed;						
-                if(!options.vertical) {
-                    p = (t*w*-1);
-                    console.log(w + " | " + h + " | " + p);
-                    $("ul",obj).animate(
-                    {
-                        marginLeft: p
-                    }, 
-                    speed
-                    );				
-                } else {
-                    p = (t*h*-1);
-                    $("ul",obj).animate(
-                    {
-                        marginTop: p
-                    }, 
-                    speed
-                    );					
-                };
-				
-                if(!options.continuous && options.controlsFade){					
-                    if(t==ts){
-                        $("a","#"+options.nextId).hide();
-                        $("a","#"+options.lastId).hide();
-                    } else {
-                        $("a","#"+options.nextId).show();
-                        $("a","#"+options.lastId).show();					
-                    };
-                    if(t==0){
-                        $("a","#"+options.prevId).hide();
-                        $("a","#"+options.firstId).hide();
-                    } else {
-                        $("a","#"+options.prevId).show();
-                        $("a","#"+options.firstId).show();
-                    };					
-                };				
-				
-                if(clicked) clearTimeout(timeout);
-                if(options.auto && dir=="next" && !clicked){
-                    timeout = setTimeout(function(){
-                        animate("next",false);
-                    },diff*options.speed+options.pause);
-                };
-				
-            };
-            // init
-            var timeout;
-            if(options.auto){
-                timeout = setTimeout(function(){
-                    animate("next",false);
-                },options.pause);
-            };		
-		
-            if(!options.continuous && options.controlsFade){					
-                $("a","#"+options.prevId).hide();
-                $("a","#"+options.firstId).hide();				
-            };				
-			
-        });
-	  
-    };
-
-})(jQuery);
-
-
-
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/script.js
deleted file mode 100644
index 1ce3fb3..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/js/script.js
+++ /dev/null
@@ -1,532 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    text_content: "This is an example. Instead of this text you can put your own content or drag an drop a picture or an audio file", 
-    new_txt: "New text block",
-    new_slide: "This is a new slide."
-};
-
-//some flags
-var mouse_state = false;
-
-//object for resize
-var resize_obj = {
-    object: null,
-    top: 0,
-    left: 0,
-    clicked: false
-}
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("etudier","")){
-            var data = jQuery.parseJSON(sankore.preference("etudier",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeAttr("contenteditable").removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $(this).find(".close_img").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".add_left").remove();
-                    container.find(".add_right").remove();
-                    container.find(".close_slide").remove();
-                    container.find(".add_text").remove();
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                    .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).attr("contenteditable", "true").addClass("block_border");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    $("<div class='add_left'>").appendTo(container);
-                    $("<div class='add_right'>").appendTo(container);
-                    $("<div class='close_slide'>").appendTo(container);
-                    $("<div class='add_text'>").appendTo(container);
-                });           
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-     
-    //deleting the img block
-    $(".close_img").live("click", function(){    
-        $(this).parent().remove();        
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //moving objects
-    $(".move_block").live("mouseover",function(){
-        $(this).parent().draggable();
-    });
-
-    $(".move_block").live("mouseleave",function(){
-        if(!mouse_state)
-            $(this).parent().draggable("destroy");
-    });
-    
-    $(".move_block").live("mousedown",function(){
-        mouse_state = true;
-    });
-    
-    $(".move_block").live("mouseup",function(){
-        mouse_state = false;
-    });
-    
-    //resize block
-    $(".resize_block").live("mousedown", function(){
-        resize_obj.object = $(this);
-        resize_obj.top = event.clientY;
-        resize_obj.left = event.clientX;
-        resize_obj.clicked = true;
-    })
-    
-    $("li>div").live("mouseup", function(){
-        resize_obj.object = null;
-        resize_obj.top = 0;
-        resize_obj.left = 0;
-        resize_obj.clicked = false;
-    })
-    
-    $("li>div").live("mousemove", function(){
-        if(resize_obj.clicked){
-            if(resize_obj.object.parent().hasClass("text_block")){                
-                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                var height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().css("width", width).css("height",height);
-            } else {
-                width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
-                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
-                var img_height = resize_obj.object.parent().find("img").height() - resize_obj.top + event.clientY;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().css("width", width).css("height",height);
-                resize_obj.object.parent().find("img").css("width", img_width).css("height", img_height);
-            }
-        }
-    });
-    
-    //closing a slide
-    $(".close_slide").live("click", function(){
-        $(this).parent().parent().remove();
-        $("#slider").removeSlide();
-    });
-    
-    //adding new slides
-    $(".add_left").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' contenteditable='true'>" + sankoreLang.new_slide + "</div>").addClass("block_border");
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertBefore(cur_li);
-        $("#slider").addSlide("before");
-    });
-    
-    $(".add_right").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' contenteditable='true'>" + sankoreLang.new_slide + "</div>").addClass("block_border");
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertAfter(cur_li);
-        $("#slider").addSlide("after");
-    });
-    
-    $(".add_text").live("click", function(){
-        var container = $(this).parent();
-        var text_block = $("<div class='text_block'>" + sankoreLang.new_txt + "</div>").appendTo(container);
-        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
-        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
-        text_block.attr("contenteditable", "true").addClass("block_border");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $("#slider li>div").each(function(){
-        var cont_obj = new Object();
-        cont_obj.w = $(this).parent().width();
-        cont_obj.h = $(this).parent().height();
-        cont_obj.text = [];
-        $(this).find(".text_block").each(function(){
-            var txt_block = new Object();
-            txt_block.top = $(this).position().top;
-            txt_block.left = $(this).position().left;
-            txt_block.h = $(this).height();
-            txt_block.w = $(this).width();
-            txt_block.val = $(this).text();
-            cont_obj.text.push(txt_block);
-        });
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.link = $(this).find("img").attr("src");
-            img_obj.h = $(this).find("img").height();
-            img_obj.w = $(this).find("img").width();
-            img_obj.block_h = $(this).height();
-            img_obj.block_w = $(this).width();
-            img_obj.top = $(this).position().top;
-            img_obj.left = $(this).position().left;
-            cont_obj.imgs.push(img_obj);
-        });
-        cont_obj.audio = [];
-        $(this).find(".audio_block").each(function(){
-            var audio_block = new Object();
-            audio_block.top = $(this).position().top;
-            audio_block.left = $(this).position().left;
-            audio_block.val = $(this).find("source").attr("src");
-            cont_obj.audio.push(audio_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    sankore.setPreference("etudier", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var width = 0;
-    var height = 0;
-    
-    for(var i in data){
-        
-        width = data[i].w;
-        height = data[i].h;
-        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
-        var div = $("<div>").appendTo(li);
-        
-        for(var j in data[i].text){
-            var text_div = $("<div class='text_block'>" + data[i].text[j].val + "</div>");
-            text_div.draggable().css("position","absolute")
-            .width(data[i].text[j].w)
-            .height(data[i].text[j].h)
-            .css("top", data[i].text[j].top)
-            .css("left", data[i].text[j].left)
-            .appendTo(div);
-        }
-        
-        for(j in data[i].imgs){
-            var img_div = $("<div class='img_block' style='text-align: center;'>");            
-            img_div.draggable().css("position","absolute")
-            .width(data[i].imgs[j].block_w)
-            .height(data[i].imgs[j].block_h)
-            .css("top", data[i].imgs[j].top)
-            .css("left", data[i].imgs[j].left)
-            .appendTo(div);
-            $("<img src='" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
-        }
-        
-        for(j in data[i].audio){
-            var audio_div = $("<div class='audio_block'>");
-            $("<div class='play'>").appendTo(audio_div);
-            $("<div class='replay'>").appendTo(audio_div);
-            var tmp_audio = $("<audio>").appendTo(audio_div);
-            $("<source src='" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
-            audio_div.draggable().css("position","absolute")
-            .css("top", data[i].audio[j].top)
-            .css("left", data[i].audio[j].left)
-            .appendTo(div);
-        }
-        
-        $("#slider ul").append(li);        
-    }
-    
-    $("#slider").width(width).height(height).easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//example
-function showExample(){
-    
-    var li1 = $("<li>");
-    var div1 = $("<div>").appendTo(li1);
-    $("<div class='text_block'>" + sankoreLang.text_content + "</div>").draggable().appendTo(div1)
-    li1.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li1);
-    var li2 = $("<li>");
-    var div2 = $("<div>").appendTo(li2);
-    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
-    li2.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li2);
-    var li3 = $("<li>");
-    var div3 = $("<div>").appendTo(li3);
-    li3.width($("#slider").width()).height($("#slider").height());
-    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/bateaux.mp3");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("#slider ul").append(li3);
-    var li4 = $("<li>");
-    var div4 = $("<div>").appendTo(li4);
-    $("<div class='text_block'>" + sankoreLang.text_content + "</div>").draggable().appendTo(div4);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
-    $("<div class='play'>").appendTo(audio_block2);
-    $("<div class='replay'>").appendTo(audio_block2);
-    var source2 = $("<source/>").attr("src", "objects/bateaux.mp3");
-    var audio2 = $("<audio>").appendTo(audio_block2);
-    audio2.append(source2);
-    li4.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li4);
-    $(".text_block, .audio_block, .img_block").each(function(){
-        $(this).css("position","absolute");
-    });
-    $("#slider").easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//string into xml-format
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//drop handler
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){                              
-            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
-            audio_block.css("position","absolute").css("top",event.clientY).css("left",event.clientX);
-            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
-            audio_block.addClass("block_border");
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
-            img_block.css("top",event.clientY).css("left",event.clientX);
-            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
-            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
-            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
-            img_block.addClass("block_border");
-            var tmp_img = $("<img src=\"" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6)
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
-
-$(window).resize(function(){
-    var slider = $("#slider");
-    slider.width($(this).width()).height($(this).height());
-    $("#slider li").each(function(){
-        $(this).width(slider.width()).height(slider.height());
-    });
-    slider.setSize(slider.width(), slider.height());
-})
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/index.html
deleted file mode 100644
index cc6be9f..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="../../js/easySlider1.5.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                sankore.enableDropOnWidget(false);
-                start();                                
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-        <div id="slider">
-            <ul>							
-            </ul>
-        </div>
-        <span id="prevBtn"><a href="javascript:void(0);"></a></span>
-        <span id="nextBtn"><a href="javascript:void(0);"></a></span>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/js/script.js
deleted file mode 100644
index d066031..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,534 +0,0 @@
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier", 
-    text_content: "Ceci est un exemple. Au lieu de ce texte, vous pouvez saisir votre propre texte ou glisser-dŽposer une image, un son.", 
-    new_txt: "Nouveau bloc de texte",
-    new_slide: "Ceci est une nouvelle diapositive."
-};
-
-//some flags
-var mouse_state = false;
-
-//object for resize
-var resize_obj = {
-    object: null,
-    top: 0,
-    left: 0,
-    clicked: false
-}
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("etudier","")){
-            var data = jQuery.parseJSON(sankore.preference("etudier",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeAttr("contenteditable").removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $(this).find(".close_img").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".add_left").remove();
-                    container.find(".add_right").remove();
-                    container.find(".close_slide").remove();
-                    container.find(".add_text").remove();
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                    .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).attr("contenteditable", "true").addClass("block_border");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    $("<div class='add_left'>").appendTo(container);
-                    $("<div class='add_right'>").appendTo(container);
-                    $("<div class='close_slide'>").appendTo(container);
-                    $("<div class='add_text'>").appendTo(container);
-                });           
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-     
-    //deleting the img block
-    $(".close_img").live("click", function(){    
-        $(this).parent().remove();        
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //moving objects
-    $(".move_block").live("mouseover",function(){
-        $(this).parent().draggable();
-    });
-
-    $(".move_block").live("mouseleave",function(){
-        if(!mouse_state)
-            $(this).parent().draggable("destroy");
-    });
-    
-    $(".move_block").live("mousedown",function(){
-        mouse_state = true;
-    });
-    
-    $(".move_block").live("mouseup",function(){
-        mouse_state = false;
-    });
-    
-    //resize block
-    $(".resize_block").live("mousedown", function(){
-        resize_obj.object = $(this);
-        resize_obj.top = event.clientY;
-        resize_obj.left = event.clientX;
-        resize_obj.clicked = true;
-    })
-    
-    $("li>div").live("mouseup", function(){
-        resize_obj.object = null;
-        resize_obj.top = 0;
-        resize_obj.left = 0;
-        resize_obj.clicked = false;
-    })
-    
-    $("li>div").live("mousemove", function(){
-        if(resize_obj.clicked){
-            if(resize_obj.object.parent().hasClass("text_block")){                
-                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                var height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().css("width", width).css("height",height);
-            } else {
-                width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
-                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
-                var img_height = resize_obj.object.parent().find("img").height() - resize_obj.top + event.clientY;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().css("width", width).css("height",height);
-                resize_obj.object.parent().find("img").css("width", img_width).css("height", img_height);
-            }
-        }
-    });
-    
-    //closing a slide
-    $(".close_slide").live("click", function(){
-        $(this).parent().parent().remove();
-        $("#slider").removeSlide();
-    });
-    
-    //adding new slides
-    $(".add_left").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' contenteditable='true'>" + sankoreLang.new_slide + "</div>").addClass("block_border");
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertBefore(cur_li);
-        $("#slider").addSlide("before");
-    });
-    
-    $(".add_right").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' contenteditable='true'>" + sankoreLang.new_slide + "</div>").addClass("block_border");
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertAfter(cur_li);
-        $("#slider").addSlide("after");
-    });
-    
-    $(".add_text").live("click", function(){
-        var container = $(this).parent();
-        var text_block = $("<div class='text_block'>" + sankoreLang.new_txt + "</div>").appendTo(container);
-        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
-        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
-        text_block.attr("contenteditable", "true").addClass("block_border");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $("#slider li>div").each(function(){
-        var cont_obj = new Object();
-        cont_obj.w = $(this).parent().width();
-        cont_obj.h = $(this).parent().height();
-        cont_obj.text = [];
-        $(this).find(".text_block").each(function(){
-            var txt_block = new Object();
-            txt_block.top = $(this).position().top;
-            txt_block.left = $(this).position().left;
-            txt_block.h = $(this).height();
-            txt_block.w = $(this).width();
-            txt_block.val = $(this).text();
-            cont_obj.text.push(txt_block);
-        });
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.link = $(this).find("img").attr("src").replace("../../","");
-            img_obj.h = $(this).find("img").height();
-            img_obj.w = $(this).find("img").width();
-            img_obj.block_h = $(this).height();
-            img_obj.block_w = $(this).width();
-            img_obj.top = $(this).position().top;
-            img_obj.left = $(this).position().left;
-            cont_obj.imgs.push(img_obj);
-        });
-        cont_obj.audio = [];
-        $(this).find(".audio_block").each(function(){
-            var audio_block = new Object();
-            audio_block.top = $(this).position().top;
-            audio_block.left = $(this).position().left;
-            audio_block.val = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.audio.push(audio_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    sankore.setPreference("etudier", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var width = 0;
-    var height = 0;
-    
-    for(var i in data){
-        
-        width = data[i].w;
-        height = data[i].h;
-        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
-        var div = $("<div>").appendTo(li);
-        
-        for(var j in data[i].text){
-            var text_div = $("<div class='text_block'>" + data[i].text[j].val + "</div>");
-            text_div.draggable().css("position","absolute")
-            .width(data[i].text[j].w)
-            .height(data[i].text[j].h)
-            .css("top", data[i].text[j].top)
-            .css("left", data[i].text[j].left)
-            .appendTo(div);
-        }
-        
-        for(j in data[i].imgs){
-            var img_div = $("<div class='img_block' style='text-align: center;'>");            
-            img_div.draggable().css("position","absolute")
-            .width(data[i].imgs[j].block_w)
-            .height(data[i].imgs[j].block_h)
-            .css("top", data[i].imgs[j].top)
-            .css("left", data[i].imgs[j].left)
-            .appendTo(div);
-            $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
-        }
-        
-        for(j in data[i].audio){
-            var audio_div = $("<div class='audio_block'>");
-            $("<div class='play'>").appendTo(audio_div);
-            $("<div class='replay'>").appendTo(audio_div);
-            var tmp_audio = $("<audio>").appendTo(audio_div);
-            $("<source src='../../" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
-            audio_div.draggable().css("position","absolute")
-            .css("top", data[i].audio[j].top)
-            .css("left", data[i].audio[j].left)
-            .appendTo(div);
-        }
-        
-        $("#slider ul").append(li);
-        
-    }
-    
-    $("#slider").width(width).height(height).easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//example
-function showExample(){
-    
-    var li1 = $("<li>");
-    var div1 = $("<div>").appendTo(li1);
-    $("<div class='text_block'>" + sankoreLang.text_content + "</div>").draggable().appendTo(div1)
-    li1.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li1);
-    var li2 = $("<li>");
-    var div2 = $("<div>").appendTo(li2);
-    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
-    li2.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li2);
-    var li3 = $("<li>");
-    var div3 = $("<div>").appendTo(li3);
-    li3.width($("#slider").width()).height($("#slider").height());
-    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "../../objects/bateaux.mp3");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("#slider ul").append(li3);
-    var li4 = $("<li>");
-    var div4 = $("<div>").appendTo(li4);
-    $("<div class='text_block'>" + sankoreLang.text_content + "</div>").draggable().appendTo(div4);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
-    $("<div class='play'>").appendTo(audio_block2);
-    $("<div class='replay'>").appendTo(audio_block2);
-    var source2 = $("<source/>").attr("src", "../../objects/bateaux.mp3");
-    var audio2 = $("<audio>").appendTo(audio_block2);
-    audio2.append(source2);
-    li4.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li4);
-    $(".text_block, .audio_block, .img_block").each(function(){
-        $(this).css("position","absolute");
-    });
-    $("#slider").easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//string into xml-format
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//drop handler
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length); 
-        if(tmp_type.substr(0, 5) == "audio"){                              
-            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
-            audio_block.css("position","absolute").css("top",event.clientY).css("left",event.clientX);
-            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
-            audio_block.addClass("block_border");
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
-            img_block.css("top",event.clientY).css("left",event.clientX);
-            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
-            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
-            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
-            img_block.addClass("block_border");
-            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6)
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
-
-$(window).resize(function(){
-    var slider = $("#slider");
-    slider.width($(this).width()).height($(this).height());
-    $("#slider li").each(function(){
-        $(this).width(slider.width()).height(slider.height());
-    });
-    slider.setSize(slider.width(), slider.height());
-})
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/index.html
deleted file mode 100644
index cc6be9f..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="../../js/easySlider1.5.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                sankore.enableDropOnWidget(false);
-                start();                                
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-        <div id="slider">
-            <ul>							
-            </ul>
-        </div>
-        <span id="prevBtn"><a href="javascript:void(0);"></a></span>
-        <span id="nextBtn"><a href="javascript:void(0);"></a></span>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/js/script.js
deleted file mode 100644
index 4cf9f3d..0000000
--- a/Sankore-3.1/resources/library/interactivities/etudier.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,534 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить",
-    text_content: "Это - пример. Вместо этого текста вы можете ввести свой собственный контент.", 
-    new_txt: "Новый текстовый блок.",
-    new_slide: "Это - новый слайд."
-};
-
-//some flags
-var mouse_state = false;
-
-//object for resize
-var resize_obj = {
-    object: null,
-    top: 0,
-    left: 0,
-    clicked: false
-}
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("etudier","")){
-            var data = jQuery.parseJSON(sankore.preference("etudier",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeAttr("contenteditable").removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable();
-                        $(this).find(".close_img").remove();
-                        $(this).find(".move_block").remove();
-                        $(this).find(".resize_block").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $(this).find(".close_img").remove();
-                        $(this).removeClass("block_border");
-                        $(this).css("position","absolute");
-                    });
-                    
-                    container.find(".add_left").remove();
-                    container.find(".add_right").remove();
-                    container.find(".close_slide").remove();
-                    container.find(".add_text").remove();
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $("#slider li>div").each(function(){
-                    var container = $(this);
-                    container.attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                    .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                    .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-                    
-                    container.find(".text_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).attr("contenteditable", "true").addClass("block_border");
-                    });
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).draggable("destroy");
-                        $("<div class='move_block' contenteditable='false'>").appendTo($(this));
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $("<div class='resize_block' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    container.find(".audio_block").each(function(){
-                        $("<div class='close_img' contenteditable='false'>").appendTo($(this));
-                        $(this).addClass("block_border");
-                    });
-                    
-                    $("<div class='add_left'>").appendTo(container);
-                    $("<div class='add_right'>").appendTo(container);
-                    $("<div class='close_slide'>").appendTo(container);
-                    $("<div class='add_text'>").appendTo(container);
-                });           
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-     
-    //deleting the img block
-    $(".close_img").live("click", function(){    
-        $(this).parent().remove();        
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //moving objects
-    $(".move_block").live("mouseover",function(){
-        $(this).parent().draggable();
-    });
-
-    $(".move_block").live("mouseleave",function(){
-        if(!mouse_state)
-            $(this).parent().draggable("destroy");
-    });
-    
-    $(".move_block").live("mousedown",function(){
-        mouse_state = true;
-    });
-    
-    $(".move_block").live("mouseup",function(){
-        mouse_state = false;
-    });
-    
-    //resize block
-    $(".resize_block").live("mousedown", function(){
-        resize_obj.object = $(this);
-        resize_obj.top = event.clientY;
-        resize_obj.left = event.clientX;
-        resize_obj.clicked = true;
-    })
-    
-    $("li>div").live("mouseup", function(){
-        resize_obj.object = null;
-        resize_obj.top = 0;
-        resize_obj.left = 0;
-        resize_obj.clicked = false;
-    })
-    
-    $("li>div").live("mousemove", function(){
-        if(resize_obj.clicked){
-            if(resize_obj.object.parent().hasClass("text_block")){                
-                var width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                var height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().css("width", width).css("height",height);
-            } else {
-                width = resize_obj.object.parent().width() - resize_obj.left + event.clientX;
-                height = resize_obj.object.parent().height() - resize_obj.top + event.clientY;
-                var img_width = resize_obj.object.parent().find("img").width() - resize_obj.left + event.clientX;
-                var img_height = resize_obj.object.parent().find("img").height() - resize_obj.top + event.clientY;
-                resize_obj.left = event.clientX;
-                resize_obj.top = event.clientY;
-                resize_obj.object.parent().css("width", width).css("height",height);
-                resize_obj.object.parent().find("img").css("width", img_width).css("height", img_height);
-            }
-        }
-    });
-    
-    //closing a slide
-    $(".close_slide").live("click", function(){
-        $(this).parent().parent().remove();
-        $("#slider").removeSlide();
-    });
-    
-    //adding new slides
-    $(".add_left").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' contenteditable='true'>" + sankoreLang.new_slide + "</div>").addClass("block_border");
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertBefore(cur_li);
-        $("#slider").addSlide("before");
-    });
-    
-    $(".add_right").live("click", function(){
-        var cur_li = $(this).parent().parent();
-        var new_li = $("<li>");
-        new_li.width(cur_li.width()).height(cur_li.height()).css("float","left");
-        var new_div = $("<div>").appendTo(new_li);
-        new_div.attr("ondragenter", "return false;")
-        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);");
-        var example = $("<div class='text_block' contenteditable='true'>" + sankoreLang.new_slide + "</div>").addClass("block_border");
-        $("<div class='move_block' contenteditable='false'>").appendTo(example);
-        $("<div class='close_img' contenteditable='false'>").appendTo(example);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(example);
-        example.css("top","40%").css("left","40%");
-        new_div.append(example);
-        $("<div class='add_left'>").appendTo(new_div);
-        $("<div class='add_right'>").appendTo(new_div);
-        $("<div class='close_slide'>").appendTo(new_div);
-        $("<div class='add_text'>").appendTo(new_div);
-        new_li.insertAfter(cur_li);
-        $("#slider").addSlide("after");
-    });
-    
-    $(".add_text").live("click", function(){
-        var container = $(this).parent();
-        var text_block = $("<div class='text_block'>" + sankoreLang.new_txt + "</div>").appendTo(container);
-        $("<div class='move_block' contenteditable='false'>").appendTo(text_block);
-        $("<div class='close_img' contenteditable='false'>").appendTo(text_block);
-        $("<div class='resize_block' contenteditable='false'>").appendTo(text_block);
-        text_block.attr("contenteditable", "true").addClass("block_border");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $("#slider li>div").each(function(){
-        var cont_obj = new Object();
-        cont_obj.w = $(this).parent().width();
-        cont_obj.h = $(this).parent().height();
-        cont_obj.text = [];
-        $(this).find(".text_block").each(function(){
-            var txt_block = new Object();
-            txt_block.top = $(this).position().top;
-            txt_block.left = $(this).position().left;
-            txt_block.h = $(this).height();
-            txt_block.w = $(this).width();
-            txt_block.val = $(this).text();
-            cont_obj.text.push(txt_block);
-        });
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.link = $(this).find("img").attr("src").replace("../../","");
-            img_obj.h = $(this).find("img").height();
-            img_obj.w = $(this).find("img").width();
-            img_obj.block_h = $(this).height();
-            img_obj.block_w = $(this).width();
-            img_obj.top = $(this).position().top;
-            img_obj.left = $(this).position().left;
-            cont_obj.imgs.push(img_obj);
-        });
-        cont_obj.audio = [];
-        $(this).find(".audio_block").each(function(){
-            var audio_block = new Object();
-            audio_block.top = $(this).position().top;
-            audio_block.left = $(this).position().left;
-            audio_block.val = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.audio.push(audio_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    sankore.setPreference("etudier", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var width = 0;
-    var height = 0;
-    
-    for(var i in data){
-        
-        width = data[i].w;
-        height = data[i].h;
-        var li = $("<li style='float: left; width: " + data[i].w + "; height: " + data[i].h + ";'>");
-        var div = $("<div>").appendTo(li);
-        
-        for(var j in data[i].text){
-            var text_div = $("<div class='text_block'>" + data[i].text[j].val + "</div>");
-            text_div.draggable().css("position","absolute")
-            .width(data[i].text[j].w)
-            .height(data[i].text[j].h)
-            .css("top", data[i].text[j].top)
-            .css("left", data[i].text[j].left)
-            .appendTo(div);
-        }
-        
-        for(j in data[i].imgs){
-            var img_div = $("<div class='img_block' style='text-align: center;'>");            
-            img_div.draggable().css("position","absolute")
-            .width(data[i].imgs[j].block_w)
-            .height(data[i].imgs[j].block_h)
-            .css("top", data[i].imgs[j].top)
-            .css("left", data[i].imgs[j].left)
-            .appendTo(div);
-            $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;' width='" + data[i].imgs[j].w + "' height='" + data[i].imgs[j].h + "'/>").appendTo(img_div);
-        }
-        
-        for(j in data[i].audio){
-            var audio_div = $("<div class='audio_block'>");
-            $("<div class='play'>").appendTo(audio_div);
-            $("<div class='replay'>").appendTo(audio_div);
-            var tmp_audio = $("<audio>").appendTo(audio_div);
-            $("<source src='../../" + data[i].audio[j].val + "' />").appendTo(tmp_audio);
-            audio_div.draggable().css("position","absolute")
-            .css("top", data[i].audio[j].top)
-            .css("left", data[i].audio[j].left)
-            .appendTo(div);
-        }
-        
-        $("#slider ul").append(li);
-        
-    }
-    
-    $("#slider").width(width).height(height).easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//example
-function showExample(){
-    
-    var li1 = $("<li>");
-    var div1 = $("<div>").appendTo(li1);
-    $("<div class='text_block'>" + sankoreLang.text_content + "</div>").draggable().appendTo(div1)
-    li1.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li1);
-    var li2 = $("<li>");
-    var div2 = $("<div>").appendTo(li2);
-    var img = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img);
-    li2.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li2);
-    var li3 = $("<li>");
-    var div3 = $("<div>").appendTo(li3);
-    li3.width($("#slider").width()).height($("#slider").height());
-    var audio_block = $("<div class='audio_block'>").draggable().appendTo(div3);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "../../objects/bateaux.mp3");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("#slider ul").append(li3);
-    var li4 = $("<li>");
-    var div4 = $("<div>").appendTo(li4);
-    $("<div class='text_block'>" + sankoreLang.text_content + "</div>").draggable().appendTo(div4);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>").draggable().appendTo(div4);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var audio_block2 = $("<div class='audio_block'>").draggable().appendTo(div4);
-    $("<div class='play'>").appendTo(audio_block2);
-    $("<div class='replay'>").appendTo(audio_block2);
-    var source2 = $("<source/>").attr("src", "../../objects/bateaux.mp3");
-    var audio2 = $("<audio>").appendTo(audio_block2);
-    audio2.append(source2);
-    li4.width($("#slider").width()).height($("#slider").height());
-    $("#slider ul").append(li4);
-    $(".text_block, .audio_block, .img_block").each(function(){
-        $(this).css("position","absolute");
-    });
-    $("#slider").easySlider({
-        prevText: '',
-        nextText: '',
-        controlsShow: false
-    });
-}
-
-//string into xml-format
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-//drop handler
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length); 
-        if(tmp_type.substr(0, 5) == "audio"){                              
-            var audio_block = $("<div class='audio_block'>").draggable().appendTo($(obj));
-            audio_block.css("position","absolute").css("top",event.clientY).css("left",event.clientX);
-            $("<div class='close_img' contenteditable='false'>").appendTo(audio_block);
-            audio_block.addClass("block_border");
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").appendTo($(obj));
-            img_block.css("top",event.clientY).css("left",event.clientX);
-            $("<div class='move_block' contenteditable='false'>").appendTo(img_block);
-            $("<div class='close_img' contenteditable='false'>").appendTo(img_block);
-            $("<div class='resize_block' contenteditable='false'>").appendTo(img_block);
-            img_block.addClass("block_border");
-            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6)
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
-
-$(window).resize(function(){
-    var slider = $("#slider");
-    slider.width($(this).width()).height($(this).height());
-    $("#slider li").each(function(){
-        $(this).width(slider.width()).height(slider.height());
-    });
-    slider.setSize(slider.width(), slider.height());
-})
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/config.xml
deleted file mode 100644
index b754557..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://www.example.net/widgets/helloworld" 
-        version="1.0"
-        width="650"
-        height="320" 
-		ub:resizable="false">
-		
-		<name>Phrases sortable</name>
-		<description>Sort the phrases to make the right sentence.</description>
-		<preference name="skin"
-		            value="uniboard"/>
-		<content src="index.html"/> 
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/index.html b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/index.html
deleted file mode 100644
index 0859a07..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/index.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/of_puppets.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/template2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                    modeView();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                if(window.sankore)
-                                    sankore.enableDropOnWidget(false);
-                                modeView();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/index.html
deleted file mode 100644
index 1f3089a..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="script/template2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){          
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                modeView();
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/script/template2.js b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/script/template2.js
deleted file mode 100644
index 717a36c..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/fr/script/template2.js
+++ /dev/null
@@ -1,248 +0,0 @@
-
-/*
-	Sankore API
-*/
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    view: "Afficher", 
-    edit: "Modifier",
-    example: "Cette phrase\nest un\nexemple."
-};
-
-
-var sentence = "";
-var curSentence = "";
-
-if(window.sankore){
-    sentence = (sankore.preference("rightOrdPhrases", ""))?sankore.preference("rightOrdPhrases", ""):sankoreLang.example;
-    curSentence = (sankore.preference("currentOrdPhrases", ""))?sankore.preference("currentOrdPhrases", ""):"";
-} else {
-    sentence = sankoreLang.example;
-}
-
-var doCheck = true;
-
-// array of dom elements
-var phrases = [];
-
-var editMode = false; // just a flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 100;
-
-
-function str_replace( w, b, s ){
-    while( s.indexOf( w ) != -1 ){
-        s = s.replace( w, b );
-    }
-    return s;
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createElements( sentence )
-{
-    var el;
-    var elements = [];
-    var phrases = sentence.split( "\n" );
-	
-    for( i in phrases )
-    {
-        el = document.createElement( "div" );
-        $( el ).addClass( "phrase" ).text( phrases[i] );
-        elements.push( el );
-    }
-    return elements;
-}
-
-
-function checkSentence()
-{
-    if( !doCheck )
-        return;
-		
-    var ph = [];
-    $( "#mp_word .phrase" ).each( function()
-    {
-        ph.push( $( this ).text() );
-    });
-	
-    if( ph.join( "\n" ) == str_replace( "\r", "", sentence ) ){
-        $( "#mp_word .phrase" ).addClass( "right" );
-    }
-}
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        sentence = str_replace( "\r", "", $( "#mp_word textarea" ).attr( "value" ) );
-        var p = sentence.split( "\n" );
-        var p2 = [];
-        var t;
-        for( var i in p )
-        {
-            t = jQuery.trim( p[i] );
-            if( t ) p2.push( t );
-        }
-        sentence = p2.join( "\n" );
-    }
-	
-    // if no sankore api, insert edit button
-    if( !isSankore ){
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.edit + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeEdit();
-        });
-    }
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    var phrases;
-    // create new set of elements
-    if(window.sankore && curSentence && !editMode)
-        phrases = createElements( curSentence );
-    else
-        phrases = shuffle( createElements( sentence ) );
-    
-    for( i in phrases ){
-        $("#mp_word").append( phrases[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    $( "#mp_word" ).sortable();
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkSentence
-        } );
-    } else 
-        $( "#mp_word" ).sortable();
-
-    // adjustHeight
-    var aHeight = $( phrases[0] ).outerHeight( true );
-	
-    // apply new width
-    adjust( aHeight * phrases.length );
-	
-}
-
-/*
-============
-adjust width or height
-============
-*/
-function adjust( height )
-{
-    $( "#mp_word" ).animate( {
-        height: height
-    } );
-    // if viewed as a widget, resize the window
-    if( !isBrowser ){
-        window.resizeTo( widget.width, height + widget_padding );
-    }
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    // if no sankore api, insert ok button
-    if( !isSankore )
-    {
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.view + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeView();
-        });
-    }
-    $( "#mp_word").css( "margin-left", 0 ).empty()
-    .append('<textarea cols="50" rows="5">'+sentence+'</textarea>');
-    adjust( $( "#mp_word textarea" ).outerHeight() );
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){
-        if($( "#mp_word textarea" ).val())
-        {
-            modeView();
-            var ph = [];
-            $( "#mp_word .phrase" ).each( function()
-            {
-                ph.push( $( this ).text() );
-            });	
-            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));            
-            modeEdit();
-        }
-        else{
-            ph = [];
-            $( "#mp_word .phrase" ).each( function()
-            {
-                ph.push( $( this ).text() );
-            });		
-            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));
-        }
-        sankore.setPreference("rightOrdPhrases", sentence);
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/index.html
deleted file mode 100644
index 1f3089a..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="script/template2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){          
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                modeView();
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/script/template2.js b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/script/template2.js
deleted file mode 100644
index 51560c5..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/locales/ru/script/template2.js
+++ /dev/null
@@ -1,248 +0,0 @@
-
-/*
-	Sankore API
-*/
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    edit: "Изменить",
-    view: "Просмотр",
-    example: "это\nпример\nпредложения"
-}
-
-
-var sentence = "";
-var curSentence = "";
-
-if(window.sankore){
-    sentence = (sankore.preference("rightOrdPhrases", ""))?sankore.preference("rightOrdPhrases", ""):sankoreLang.example;
-    curSentence = (sankore.preference("currentOrdPhrases", ""))?sankore.preference("currentOrdPhrases", ""):"";
-} else {
-    sentence = sankoreLang.example;
-}
-
-var doCheck = true;
-
-// array of dom elements
-var phrases = [];
-
-var editMode = false; // just a flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 100;
-
-
-function str_replace( w, b, s ){
-    while( s.indexOf( w ) != -1 ){
-        s = s.replace( w, b );
-    }
-    return s;
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createElements( sentence )
-{
-    var el;
-    var elements = [];
-    var phrases = sentence.split( "\n" );
-	
-    for( i in phrases )
-    {
-        el = document.createElement( "div" );
-        $( el ).addClass( "phrase" ).text( phrases[i] );
-        elements.push( el );
-    }
-    return elements;
-}
-
-
-function checkSentence()
-{
-    if( !doCheck )
-        return;
-		
-    var ph = [];
-    $( "#mp_word .phrase" ).each( function()
-    {
-        ph.push( $( this ).text() );
-    });
-	
-    if( ph.join( "\n" ) == str_replace( "\r", "", sentence ) ){
-        $( "#mp_word .phrase" ).addClass( "right" );
-    }
-}
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        sentence = str_replace( "\r", "", $( "#mp_word textarea" ).attr( "value" ) );
-        var p = sentence.split( "\n" );
-        var p2 = [];
-        var t;
-        for( var i in p )
-        {
-            t = jQuery.trim( p[i] );
-            if( t ) p2.push( t );
-        }
-        sentence = p2.join( "\n" );
-    }
-	
-    // if no sankore api, insert edit button
-    if( !isSankore ){
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.edit + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeEdit();
-        });
-    }
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    var phrases;
-    // create new set of elements
-    if(window.sankore && curSentence && !editMode)
-        phrases = createElements( curSentence );
-    else
-        phrases = shuffle( createElements( sentence ) );
-    
-    for( i in phrases ){
-        $("#mp_word").append( phrases[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    $( "#mp_word" ).sortable();
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkSentence
-        } );
-    } else 
-        $( "#mp_word" ).sortable();
-
-    // adjustHeight
-    var aHeight = $( phrases[0] ).outerHeight( true );
-	
-    // apply new width
-    adjust( aHeight * phrases.length );
-	
-}
-
-/*
-============
-adjust width or height
-============
-*/
-function adjust( height )
-{
-    $( "#mp_word" ).animate( {
-        height: height
-    } );
-    // if viewed as a widget, resize the window
-    if( !isBrowser ){
-        window.resizeTo( widget.width, height + widget_padding );
-    }
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    // if no sankore api, insert ok button
-    if( !isSankore )
-    {
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.view + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeView();
-        });
-    }
-    $( "#mp_word").css( "margin-left", 0 ).empty()
-    .append('<textarea cols="50" rows="5">'+sentence+'</textarea>');
-    adjust( $( "#mp_word textarea" ).outerHeight() );
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){
-        if($( "#mp_word textarea" ).val())
-        {
-            modeView();
-            var ph = [];
-            $( "#mp_word .phrase" ).each( function()
-            {
-                ph.push( $( this ).text() );
-            });	
-            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));            
-            modeEdit();
-        }
-        else{
-            ph = [];
-            $( "#mp_word .phrase" ).each( function()
-            {
-                ph.push( $( this ).text() );
-            });		
-            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));
-        }
-        sankore.setPreference("rightOrdPhrases", sentence);
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/template2.js
deleted file mode 100644
index 4d79a0e..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/scripts/template2.js
+++ /dev/null
@@ -1,249 +0,0 @@
-
-/*
-	Sankore API
-*/
-
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    edit: "Edit",
-    view: "View",
-    example: "this is\nan example\nsentence"
-}
-
-
-var sentence = "";
-var curSentence = "";
-
-if(window.sankore){
-    sentence = (sankore.preference("rightOrdPhrases", ""))?sankore.preference("rightOrdPhrases", ""):sankoreLang.example;
-    curSentence = (sankore.preference("currentOrdPhrases", ""))?sankore.preference("currentOrdPhrases", ""):"";
-} else {
-    sentence = sankoreLang.example;
-}
-
-var doCheck = true;
-
-// array of dom elements
-var phrases = [];
-
-var editMode = false; // just a flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 100;
-
-
-function str_replace( w, b, s ){
-    while( s.indexOf( w ) != -1 ){
-        s = s.replace( w, b );
-    }
-    return s;
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createElements( sentence )
-{
-    var el;
-    var elements = [];
-    var phrases = sentence.split( "\n" );
-	
-    for( i in phrases )
-    {
-        el = document.createElement( "div" );
-        $( el ).addClass( "phrase" ).text( phrases[i] );
-        elements.push( el );
-    }
-    return elements;
-}
-
-
-function checkSentence()
-{
-    if( !doCheck )
-        return;
-		
-    var ph = [];
-    $( "#mp_word .phrase" ).each( function()
-    {
-        ph.push( $( this ).text() );
-    });
-	
-    if( ph.join( "\n" ) == str_replace( "\r", "", sentence ) ){
-        $( "#mp_word .phrase" ).addClass( "right" );
-    }
-}
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        sentence = str_replace( "\r", "", $( "#mp_word textarea" ).attr( "value" ) );
-        var p = sentence.split( "\n" );
-        var p2 = [];
-        var t;
-        for( var i in p )
-        {
-            t = jQuery.trim( p[i] );
-            if( t ) p2.push( t );
-        }
-        sentence = p2.join( "\n" );
-    }
-	
-    // if no sankore api, insert edit button
-    if( !isSankore ){
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.edit + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeEdit();
-        });
-    }
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    var phrases;
-    // create new set of elements
-    if(window.sankore && curSentence && !editMode)
-        phrases = createElements( curSentence );
-    else
-        phrases = shuffle( createElements( sentence ) );
-    
-    for( i in phrases ){
-        $("#mp_word").append( phrases[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    $( "#mp_word" ).sortable();
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkSentence
-        } );
-    } else 
-        $( "#mp_word" ).sortable();
-
-    // adjustHeight
-    var aHeight = $( phrases[0] ).outerHeight( true );
-	
-    // apply new width
-    adjust( aHeight * phrases.length );
-	
-}
-
-/*
-============
-adjust width or height
-============
-*/
-function adjust( height )
-{
-    $( "#mp_word" ).animate( {
-        height: height
-    } );
-    // if viewed as a widget, resize the window
-    if( !isBrowser ){
-        window.resizeTo( widget.width, height + widget_padding );
-    }
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    // if no sankore api, insert ok button
-    if( !isSankore )
-    {
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.view + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeView();
-        });
-    }
-    $( "#mp_word").css( "margin-left", 0 ).empty()
-    .append('<textarea cols="50" rows="5">'+sentence+'</textarea>');
-    adjust( $( "#mp_word textarea" ).outerHeight() );
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){
-        if($( "#mp_word textarea" ).val())
-        {
-            modeView();
-            var ph = [];
-            $( "#mp_word .phrase" ).each( function()
-            {
-                ph.push( $( this ).text() );
-            });	
-            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));            
-            modeEdit();
-        }
-        else{
-            ph = [];
-            $( "#mp_word .phrase" ).each( function()
-            {
-                ph.push( $( this ).text() );
-            });		
-            sankore.setPreference("currentOrdPhrases", ph.join( "\n" ));
-        }
-        sankore.setPreference("rightOrdPhrases", sentence);
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/master.css
deleted file mode 100644
index 4f1db13..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/master.css
+++ /dev/null
@@ -1,14 +0,0 @@
-h1{
-	font-size:18px;
-	margin-bottom:20px;
-	margin-top:0px;
-}
-#ub-widget{
-	background-color:white;
-	padding:20px;
-	border:3px solid #aaaaaa;
-}
-
-.inputbox{
-	width:50px;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/of_puppets.css b/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/of_puppets.css
deleted file mode 100644
index 46c0634..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-phrases.wgt/styles/of_puppets.css
+++ /dev/null
@@ -1,62 +0,0 @@
-body{
-	background-color: #fff;
-}
-
-.letter{
-	min-width: 30px; height: 40px;
-	border: solid 1px #ccc;
-	margin: 4px;
-	padding: 4px 10px;
-	
-	float: left;
-	font: 28px tahoma;
-	text-align: center;
-	cursor: pointer;
-	text-transform: uppercase;
-	background-color: #fff;
-}
-.phrase{
-	height: 40px;
-	border: solid 1px #ccc;
-	margin: 4px;
-	padding: 4px 10px;
-	background-color: #fff;
-	font: 28px tahoma;
-	text-align: center;
-	cursor: pointer;
-	text-transform: uppercase;
-
-}
-
-.right{
-	background-color: #cfb;
-}
-
-#ub-widget{
-	width: 560px;
-}
-
-#mp_setup{
-	text-align: right;
-}
-
-#mp_word{
-	
-}
-
-#mp_word input{
-	font: 32px tahoma;
-	letter-spacing: 0.1em;
-	width: 600px;
-}
-
-#mp_msg{
-	position: absolute;
-	left: 120px; top: 160px;
-	background-color: #eee;
-	border: solid 1px #ddd;
-	width: 160px;
-	padding: 40px;
-	text-align: center;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/config.xml
deleted file mode 100644
index d20f6e5..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://www.example.net/widgets/helloworld" 
-        version="1.1"
-        width="538"
-        height="170" 
-		ub:resizable="false">
-		
-		<name>Words/Letters sortable</name>
-		<description>Sort the words/letters to make the right phrase/word.</description>
-		<preference name="skin"
-		            value="uniboard"/>
-		<content src="index.html"/> 
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/icon.png
deleted file mode 100644
index ffd2b41..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/index.html b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/index.html
deleted file mode 100644
index 850f0d7..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/of_puppets.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/template2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                    modeView();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                if(window.sankore)
-                                    sankore.enableDropOnWidget(false);
-                                modeView();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/index.html
deleted file mode 100644
index 41c44bd..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/template2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){                
-                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                modeView();                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/scripts/template2.js
deleted file mode 100644
index fe887a3..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/fr/scripts/template2.js
+++ /dev/null
@@ -1,274 +0,0 @@
-
-/*
-	Sankore API
-*/
-
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    view: "Afficher", 
-    edit: "Modifier",
-    example: "Il*était*une*fois*..."
-};
-
-var word = "";
-var curWord = "";
-
-if(window.sankore){
-    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
-    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
-} else {
-    word = sankoreLang.example;
-}
-
-var doCheckWord = true;
-
-// array of dom elements
-var letters = [];
-
-var editMode = false; // just a flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 65;
-var min_view_width = 400;
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createWordLetters( word )
-{
-    var ch, el;
-    var letters = [];
-	
-    if( word.indexOf( '*' ) != -1 )
-    {
-        var tmp = word.split( '*' );
-        for( i in tmp )
-        {
-            ch = tmp[i];
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    else
-    {
-        for( var i = 0; i < word.length; i++ )
-        {
-            ch = word.charAt( i );
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    return letters;
-}
-
-
-/*
-=====================
-checkWord
-=====================
-scans the letters and checks 
-if they are in the right order
-*/
-function checkWord()
-{
-    if( !doCheckWord )
-        return;
-		
-    var str = "";
-    $( "#mp_word .letter" ).each( function(){
-        str += $(this).text();
-    });
-    var w = word;
-    while( w.indexOf( '*' ) != -1 )
-    {
-        w = w.replace( '*', '' );
-    }
-    if( str == w ){
-        $( "#mp_word .letter" ).addClass( "right" );
-    //message( "Right!" );
-    }
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        word = $( "#mp_word input:text" ).attr( "value" );
-    }
-	
-    // if no sankore api, insert edit button
-    if( !isSankore ){
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.edit + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeEdit();
-        });
-    }
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    // create new set of letters
-    var letters;
-    if(window.sankore && curWord && !editMode)
-        letters = createWordLetters( curWord );
-    else
-        letters = shuffle( createWordLetters( word ) );
-    
-    for( i in letters ){
-        $("#mp_word").append( letters[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkWord
-        } );
-    } else $( "#mp_word" ).sortable();
-
-    // adjustWidth
-    var totalLettersWidth = 0;
-    for( i in letters ){
-        var currentWidth = $( letters[i] ).outerWidth( true );
-        totalLettersWidth += currentWidth;
-    }
-    totalLettersWidth += 1;
-
-    var width = Math.max(
-        totalLettersWidth,
-        min_view_width
-        );
-	
-    // shift the words to the right to center them
-    if( width > totalLettersWidth ){
-        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
-    }
-    else{
-        $( "#mp_word" ).css( "margin-left", 0 );
-    }
-	
-    // apply new width
-    adjustWidth( width );
-	
-}
-
-/*
-============
-adjustWidth
-============
-*/
-function adjustWidth( width )
-{
-    $( "#ub-widget" ).animate( {
-        width: width
-    } );
-    // if viewed as a widget, resize the window
-    if( !isBrowser ){
-        window.resizeTo( width + widget_padding, widget.height );
-    }
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    // if no sankore api, insert ok button
-    if( !isSankore )
-    {
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.view + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeView();
-        });
-    }
-    $( "#mp_word").css( "margin-left", 0 ).empty().append('<input value="'+word+'">');
-    adjustWidth( input_width );
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){
-        if($( "#mp_word input:text" ).attr( "value" ))
-        {
-            modeView();
-            var str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);           
-            modeEdit();
-        }
-        else{
-            str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);
-        }
-        sankore.setPreference("rightOrdWords", word);
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/index.html
deleted file mode 100644
index 41c44bd..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/of_puppets.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/template2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){                
-                $("#ub-widget").append('<div id="mp_setup"></div><div id="mp_word"></div>');
-                modeView();                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/scripts/template2.js
deleted file mode 100644
index 902bc56..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/locales/ru/scripts/template2.js
+++ /dev/null
@@ -1,274 +0,0 @@
-
-/*
-	Sankore API
-*/
-
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    view: "Показать", 
-    edit: "Изменить",
-    example: "много*,*много*лет*назад*..."
-};
-
-var word = "";
-var curWord = "";
-
-if(window.sankore){
-    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
-    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
-} else {
-    word = sankoreLang.example;
-}
-
-var doCheckWord = true;
-
-// array of dom elements
-var letters = [];
-
-var editMode = false; // just a flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 65;
-var min_view_width = 400;
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createWordLetters( word )
-{
-    var ch, el;
-    var letters = [];
-	
-    if( word.indexOf( '*' ) != -1 )
-    {
-        var tmp = word.split( '*' );
-        for( i in tmp )
-        {
-            ch = tmp[i];
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    else
-    {
-        for( var i = 0; i < word.length; i++ )
-        {
-            ch = word.charAt( i );
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    return letters;
-}
-
-
-/*
-=====================
-checkWord
-=====================
-scans the letters and checks 
-if they are in the right order
-*/
-function checkWord()
-{
-    if( !doCheckWord )
-        return;
-		
-    var str = "";
-    $( "#mp_word .letter" ).each( function(){
-        str += $(this).text();
-    });
-    var w = word;
-    while( w.indexOf( '*' ) != -1 )
-    {
-        w = w.replace( '*', '' );
-    }
-    if( str == w ){
-        $( "#mp_word .letter" ).addClass( "right" );
-    //message( "Right!" );
-    }
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        word = $( "#mp_word input:text" ).attr( "value" );
-    }
-	
-    // if no sankore api, insert edit button
-    if( !isSankore ){
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.edit + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeEdit();
-        });
-    }
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    // create new set of letters
-    var letters;
-    if(window.sankore && curWord && !editMode)
-        letters = createWordLetters( curWord );
-    else
-        letters = shuffle( createWordLetters( word ) );
-    
-    for( i in letters ){
-        $("#mp_word").append( letters[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkWord
-        } );
-    } else $( "#mp_word" ).sortable();
-
-    // adjustWidth
-    var totalLettersWidth = 0;
-    for( i in letters ){
-        var currentWidth = $( letters[i] ).outerWidth( true );
-        totalLettersWidth += currentWidth;
-    }
-    totalLettersWidth += 1;
-
-    var width = Math.max(
-        totalLettersWidth,
-        min_view_width
-        );
-	
-    // shift the words to the right to center them
-    if( width > totalLettersWidth ){
-        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
-    }
-    else{
-        $( "#mp_word" ).css( "margin-left", 0 );
-    }
-	
-    // apply new width
-    adjustWidth( width );
-	
-}
-
-/*
-============
-adjustWidth
-============
-*/
-function adjustWidth( width )
-{
-    $( "#ub-widget" ).animate( {
-        width: width
-    } );
-    // if viewed as a widget, resize the window
-    if( !isBrowser ){
-        window.resizeTo( width + widget_padding, widget.height );
-    }
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    // if no sankore api, insert ok button
-    if( !isSankore )
-    {
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.view + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeView();
-        });
-    }
-    $( "#mp_word").css( "margin-left", 0 ).empty().append('<input value="'+word+'">');
-    adjustWidth( input_width );
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){       
-        if($( "#mp_word input:text" ).attr( "value" ))
-        {
-            modeView();
-            var str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);           
-            modeEdit();
-        }
-        else{
-            str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);
-        }
-        sankore.setPreference("rightOrdWords", word);
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/template2.js b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/template2.js
deleted file mode 100644
index 4b9a77b..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/scripts/template2.js
+++ /dev/null
@@ -1,274 +0,0 @@
-
-/*
-	Sankore API
-*/
-
-function startEditing()
-{
-    modeEdit();
-}
-
-function stopEditing()
-{
-    modeView();
-}
-
-function initialize()
-{
-	
-}
-
-function checkResponse()
-{
-    checkWord();
-}
-/*
-	/ END sankore api
-*/
-
-var sankoreLang = {
-    view: "View", 
-    edit: "Edit",
-    example: "a*long*,*long*time*ago*..."
-};
-
-var word = "";
-var curWord = "";
-
-if(window.sankore){
-    word = (sankore.preference("rightOrdWords", ""))?sankore.preference("rightOrdWords", ""):sankoreLang.example;
-    curWord = (sankore.preference("currentOrdWords", ""))?sankore.preference("currentOrdWords", ""):"";
-} else {
-    word = sankoreLang.example;
-}
-
-var doCheckWord = true;
-
-// array of dom elements
-var letters = [];
-
-var editMode = false; // just a flag
-
-// if use the "edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-// hardcoded parameters, not very good
-var input_width = 606;
-var widget_padding = 65;
-var min_view_width = 400;
-
-/*
-=================
-createWordLetters
-=================
-returns array of dom elements
-*/
-function createWordLetters( word )
-{
-    var ch, el;
-    var letters = [];
-	
-    if( word.indexOf( '*' ) != -1 )
-    {
-        var tmp = word.split( '*' );
-        for( i in tmp )
-        {
-            ch = tmp[i];
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    else
-    {
-        for( var i = 0; i < word.length; i++ )
-        {
-            ch = word.charAt( i );
-            el = document.createElement( "div" );
-            $(el).addClass( "letter" ).text( ch );
-            letters.push( el );
-        }
-    }
-    return letters;
-}
-
-
-/*
-=====================
-checkWord
-=====================
-scans the letters and checks 
-if they are in the right order
-*/
-function checkWord()
-{
-    if( !doCheckWord )
-        return;
-		
-    var str = "";
-    $( "#mp_word .letter" ).each( function(){
-        str += $(this).text();
-    });
-    var w = word;
-    while( w.indexOf( '*' ) != -1 )
-    {
-        w = w.replace( '*', '' );
-    }
-    if( str == w ){
-        $( "#mp_word .letter" ).addClass( "right" );
-    //message( "Right!" );
-    }
-}
-
-/*
-==============
-shuffle
-==============
-shuffles an array
-*/
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-
-
-/*
-==================
-modeView()
-==================
-turns the widget into the view mode
-*/
-function modeView()
-{
-    if( editMode ){
-        word = $( "#mp_word input:text" ).attr( "value" );
-    }
-	
-    // if no sankore api, insert edit button
-    if( !isSankore ){
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.edit + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeEdit();
-        });
-    }
-	
-    // clean the previous word
-    $( "#mp_word" ).empty();
-	
-    // create new set of letters
-    var letters;
-    if(window.sankore && curWord && !editMode)
-        letters = createWordLetters( curWord );
-    else
-        letters = shuffle( createWordLetters( word ) );
-    
-    for( i in letters ){
-        $("#mp_word").append( letters[i] );
-    }
-	
-    // in sankore api there would be a function to check 
-    // the answer, so no update parameter would be needed
-    if( !isSankore ){
-        $( "#mp_word" ).sortable( {
-            update: checkWord
-        } );
-    } else $( "#mp_word" ).sortable();
-
-    // adjustWidth
-    var totalLettersWidth = 0;
-    for( i in letters ){
-        var currentWidth = $( letters[i] ).outerWidth( true );
-        totalLettersWidth += currentWidth;
-    }
-    totalLettersWidth += 1;
-
-    var width = Math.max(
-        totalLettersWidth,
-        min_view_width
-        );
-	
-    // shift the words to the right to center them
-    if( width > totalLettersWidth ){
-        $( "#mp_word" ).css( "margin-left", Math.round( (width - totalLettersWidth)/2 ) );
-    }
-    else{
-        $( "#mp_word" ).css( "margin-left", 0 );
-    }
-	
-    // apply new width
-    adjustWidth( width );
-	
-}
-
-/*
-============
-adjustWidth
-============
-*/
-function adjustWidth( width )
-{
-    $( "#ub-widget" ).animate( {
-        width: width
-    } );
-    // if viewed as a widget, resize the window
-    if( !isBrowser ){
-        window.resizeTo( width + widget_padding, widget.height );
-    }
-}
-
-/*
-================
-modeEdit
-================
-*/
-function modeEdit()
-{
-    editMode = true;
-    // if no sankore api, insert ok button
-    if( !isSankore )
-    {
-        $( "#mp_setup" ).empty().append( '<input type="button" value="' + sankoreLang.view + '">' );
-        $( "#mp_setup input:button" ).click( function(){
-            modeView();
-        });
-    }
-    $( "#mp_word").css( "margin-left", 0 ).empty().append('<input value="'+word+'">');
-    adjustWidth( input_width );
-}
-
-if (window.widget) {
-    window.widget.onleave = function(){
-        if($( "#mp_word input:text" ).attr( "value" ))
-        {
-            modeView();
-            var str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);           
-            modeEdit();
-        }
-        else{
-            str = "";
-            $( "#mp_word .letter" ).each( function(){
-                str += $(this).text() + "*";
-            });        
-            str = str.substr(0, str.length - 1);        
-            sankore.setPreference("currentOrdWords", str);
-        }
-        sankore.setPreference("rightOrdWords", word);
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/master.css
deleted file mode 100644
index 4f1db13..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/master.css
+++ /dev/null
@@ -1,14 +0,0 @@
-h1{
-	font-size:18px;
-	margin-bottom:20px;
-	margin-top:0px;
-}
-#ub-widget{
-	background-color:white;
-	padding:20px;
-	border:3px solid #aaaaaa;
-}
-
-.inputbox{
-	width:50px;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/of_puppets.css b/Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/of_puppets.css
deleted file mode 100644
index 8c27993..0000000
--- a/Sankore-3.1/resources/library/interactivities/ord-words.wgt/styles/of_puppets.css
+++ /dev/null
@@ -1,56 +0,0 @@
-body{
-	background-color: #fff;
-}
-
-.letter{
-	min-width: 30px; height: 40px;
-	border: solid 1px #ccc;
-	margin: 4px;
-	padding: 4px 10px;
-	
-	float: left;
-	font: 28px tahoma;
-	text-align: center;
-	cursor: pointer;
-	text-transform: uppercase;
-	background-color: #fff;
-}
-
-.right{
-	background-color: #cfb;
-}
-
-#ub-widget{
-	width: 560px;
-}
-
-#mp_setup{
-	text-align: right;
-}
-
-#mp_img{
-	text-align: center;
-	padding: 40px;
-}
-
-#mp_word{
-	height: 60px;
-	text-align: center;
-}
-
-#mp_word input{
-	font: 32px tahoma;
-	letter-spacing: 0.1em;
-	width: 600px;
-}
-
-#mp_msg{
-	position: absolute;
-	left: 120px; top: 160px;
-	background-color: #eee;
-	border: solid 1px #ddd;
-	width: 160px;
-	padding: 40px;
-	text-align: center;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/config.xml
deleted file mode 100644
index dc9eb18..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="700"
-        height="400" 
-        ub:resizable="true">     
-   
-		<name>Notes</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Ordonner des images</description>
-		
-		<content src="index.html"/>
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/css/basic.css
deleted file mode 100644
index dc78a0d..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/css/basic.css
+++ /dev/null
@@ -1,217 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid black;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid black;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 60px;
-}
-
-.imgs_cont{
-    width: 100%;
-    margin: 0;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 80%;
-    min-height: 40px;
-    float: right;
-    background-color: #ccc;
-    border-top-left-radius: 10px;
-    border-bottom-left-radius: 10px;
-    padding-left: 10px;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.add_img{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    background-image: url(../img/add_img.png);
-    background-position: center;
-    background-repeat: no-repeat;
-    cursor: pointer;
-    display: inline-block;
-}
-
-.img_block{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    cursor: pointer;
-    display: inline-block;
-    position: relative;
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-    background-color: white;
-}
-
-.close_img, .clear_img, .numb_img {
-    width: 30px;
-    height: 30px;    
-    background-repeat: no-repeat;
-    position: absolute;    
-    right: -15px;
-    cursor: pointer;
-}
-
-.close_img{
-    background-image: url(../img/close_img.png);
-    top: -15px;
-}
-
-.clear_img{
-    background-image: url(../img/clear_img.png);
-    top: 15px;
-}
-
-.numb_img{
-    background-image: url(../img/numb_img.png); 
-    left: -15px;
-    top: -15px;
-    color: white;
-    font-weight: bold;
-    font-size: 130%;
-}
-
-/*.fill_img{
-    width: 30px;
-    height: 30px;
-    background-image: url(../img/fill_hor.png);
-    background-repeat: no-repeat;
-    position: absolute;
-    top: -15px;
-    right: 17px; 
-    cursor: pointer;
-}*/
-
-
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-
-
-
-
-
-
-
-
-
-
-
-.black_overlay{
-    display: none;
-    position: absolute;
-    top: 0%;
-    left: 0%;
-    width: 100%;
-    height: 100%;
-    background-color: black;
-    z-index:1001;
-    -moz-opacity: 0.8;
-    opacity:.80;
-    filter: alpha(opacity=80);
-}
-
-.white_content {
-    display: none;
-    position:fixed;
-    top: 50%;
-    left: 50%;
-    width: 340px;
-    height: 480px;
-    padding: 16px;
-    background-color: white;
-    z-index:1002;
-    overflow: auto;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/green_point.png
deleted file mode 100644
index a2a4468..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/green_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/red_point.png
deleted file mode 100644
index f6daa19..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/img/red_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/index.html b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/index.html
deleted file mode 100644
index a732a90..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/languages.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/script.js
deleted file mode 100644
index 5f04b2a..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/js/script.js
+++ /dev/null
@@ -1,439 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Place the pictures in ascending order.", 
-    add: "Add new block",
-    enter: "Enter your text here ..."
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("odr_des_imgs","")){
-            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".numb_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop");
-                            $(this).find("input").val(++tmp_i)
-                            tmp_right += tmp_i + "*";
-                        } else 
-                            $(this).remove();
-                    });
-                    container.find(".imgs_cont>input").val(tmp_right);
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").sortable( {
-                        update: checkResult
-                    } );
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "white");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        //.css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
-                    });
-                    rightOrder(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").append(add_img)
-                });
-                
-                //                $(".img_block").css("overflow", "auto");
-                //                setTimeout(function(){
-                //                    $(".img_block").css("overflow", "").width(121);
-                //                    setTimeout(function(){
-                //                        $(".img_block").width(120);
-                //                    }, 1);
-                //                }, 1);
-                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();
-        if(tmp_obj.find(".img_block").size() > 0){
-            refreshImgNumbers(tmp_obj);
-        }
-        
-    });
-    
-    //    //turning an image
-    //    $(".fill_img").live("click",function(){
-    //        var tmp_back = $(this).css("background-image");
-    //        var lclImg = $(this).parent().find("img");
-    //        if(tmp_back.match(/fill_hor/)){
-    //            lclImg.removeAttr("height").attr("width", "120");
-    //            $(this).css("background-image","url(img/fill_vert.png)");
-    //        }
-    //        else{
-    //            lclImg.removeAttr("width").attr("height", "120");
-    //            $(this).css("background-image","url(img/fill_hor.png)");
-    //        }
-    //    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        //$(this).parent().find(".fill_img").remove();
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var container = $(this);
-            var tmp_right = "";
-            var tmp_i = 0;
-            container.find(".img_block").each(function(){
-                if($(this).html().match(/<img/)){
-                    $(this).find("input").val(++tmp_i)
-                    tmp_right += tmp_i + "*";
-                }
-            });
-            container.find(".imgs_cont>input").val(tmp_right);
-        });
-    }
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.right = $(this).find(".imgs_cont>input").val();
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.value = $(this).find("input").val();
-            img_obj.link = $(this).find("img").attr("src");
-            img_obj.ht = $(this).find("img").height();
-            img_obj.wd = $(this).find("img").width();
-            cont_obj.imgs.push(img_obj);
-        });
-        array_to_export.push(cont_obj);
-    });
-    //console.log(JSON.stringify(array_to_import));
-    //alert(JSON.stringify(array_to_export))
-    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        var tmp_array = [];
-        var container = $("<div class='cont'>");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-        var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-    
-        $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
-        
-        for(var j in data[i].imgs){
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            var img = $("<img src='" + data[i].imgs[j].link + "' style='display: inline;'>");
-            img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-            if((120 - data[i].imgs[j].ht) > 0)
-                img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-            var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-            img_block.append(hidden_input).append(img);
-            tmp_array.push(img_block);
-        }
-        tmp_array = shuffle(tmp_array);
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );   
-        container.appendTo("body");
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img1);
-    $("<img src=\"objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img2);
-    $("<img src=\"objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='3'/>").appendTo(img3);
-    $("<img src=\"objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='4'/>").appendTo(img4);
-    $("<img src=\"objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='5'/>").appendTo(img5);
-    $("<img src=\"objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
-
-    container.appendTo("body")
-}
-
-//check result
-function checkResult(event)
-{
-    if($("#display").hasClass("selected")){
-        var str = "";
-        var right_str = $(event.target).find("input").val();
-        $(event.target).find(".img_block").each(function(){
-            str += $(this).find("input").val() + "*";
-        });
-        if(str == right_str)
-            $(event.target).css("background-color","#9f9");
-    } else {
-        refreshImgNumbers($(event.target));
-    }
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
-    var tmp_counter = dest.parent().find(".img_block").size();
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
-    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//regulation the images in right order
-function rightOrder(source){
-    var tmp_arr = [];
-    var tmp_var;
-    source.find(".img_block").each(function(){
-        tmp_arr.push($(this));
-        $(this).remove();
-    });
-    for(var i = 0; i < tmp_arr.length; i++)
-        for(var j = 0; j < tmp_arr.length - 1; j++){
-            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
-                tmp_var = tmp_arr[j];
-                tmp_arr[j] = tmp_arr[j+1];
-                tmp_arr[j+1] = tmp_var;
-            }
-        }
-    for(i in tmp_arr)
-        source.append(tmp_arr[i]);
-}
-
-//refresh the numbers of the images
-function refreshImgNumbers(source){
-    var tmp = 1;
-    source.find(".img_block").each(function(){
-        $(this).find("input").val(tmp);
-        $(this).find(".numb_img").text(tmp);
-        tmp++;
-    });
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    //alert(tmp_img.width() + " | " + tmp_img.height() + " | " + tmp_img.attr("src"));
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        //alert(textData.getElementsByTagName("type")[0].firstChild.textContent + " | " + textData.getElementsByTagName("path")[0].firstChild.textContent);
-        var tmp_img = $("<img/>").attr("src", tmp);
-        //alert(1)
-        //alert(tmp_img.width() + " | " + tmp_img.height() + " | " + tmp_img.attr("src"));
-        //$("#dnd_1").html(textData);        
-        //tmp_img.css("display", "none");
-        $(obj).append(tmp_img);
-        //alert(tmp_img.width() + " | " + tmp_img.height())
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    //alert(tmp_img.width() + " | " + tmp_img.height())
-    //        $(".img_block").css("overflow", "auto");
-    //        setTimeout(function(){
-    //            $(".img_block").css("overflow", "").width(121);
-    //            setTimeout(function(){
-    //                $(".img_block").width(120);
-    //            }, 1);
-    //        }, 1);
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/index.html
deleted file mode 100644
index ff5b5f5..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){    
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 130px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 130px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/js/script.js
deleted file mode 100644
index 4594411..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,400 +0,0 @@
-
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier", 
-    short_desc: "Placer les photos dans l'ordre croissant.", 
-    add: "Nouveau bloc",
-    enter: "Saisir votre texte ici ..."
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("odr_des_imgs","")){
-            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".numb_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop");
-                            $(this).find("input").val(++tmp_i)
-                            tmp_right += tmp_i + "*";
-                        } else 
-                            $(this).remove();
-                    });
-                    container.find(".imgs_cont>input").val(tmp_right);
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").sortable( {
-                        update: checkResult
-                    } );
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "white");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        //.css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
-                    });
-                    rightOrder(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").append(add_img)
-                });
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();
-        if(tmp_obj.find(".img_block").size() > 0){
-            refreshImgNumbers(tmp_obj);
-        }
-        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        //$(this).parent().find(".fill_img").remove();
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var container = $(this);
-            var tmp_right = "";
-            var tmp_i = 0;
-            container.find(".img_block").each(function(){
-                if($(this).html().match(/<img/)){
-                    $(this).find("input").val(++tmp_i)
-                    tmp_right += tmp_i + "*";
-                }
-            });
-            container.find(".imgs_cont>input").val(tmp_right);
-        });
-    }
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.right = $(this).find(".imgs_cont>input").val();
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.value = $(this).find("input").val();
-            img_obj.link = $(this).find("img").attr("src").replace("../../","");
-            img_obj.ht = $(this).find("img").height();
-            img_obj.wd = $(this).find("img").width();
-            cont_obj.imgs.push(img_obj);
-        });
-        array_to_export.push(cont_obj);
-    });
-    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        var tmp_array = [];
-        var container = $("<div class='cont'>");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-        var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-    
-        $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
-        
-        for(var j in data[i].imgs){
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-            img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-            if((120 - data[i].imgs[j].ht) > 0)
-                img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-            var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-            img_block.append(hidden_input).append(img);
-            tmp_array.push(img_block);
-        }
-        tmp_array = shuffle(tmp_array);
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );   
-        container.appendTo("body");
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='3'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='4'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='5'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
-
-    container.appendTo("body")
-}
-
-//check result
-function checkResult(event)
-{
-    if($("#display").hasClass("selected")){
-        var str = "";
-        var right_str = $(event.target).find("input").val();
-        $(event.target).find(".img_block").each(function(){
-            str += $(this).find("input").val() + "*";
-        });
-        if(str == right_str)
-            $(event.target).css("background-color","#9f9");
-    } else {
-        refreshImgNumbers($(event.target));
-    }
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
-    var tmp_counter = dest.parent().find(".img_block").size();
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
-    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//regulation the images in right order
-function rightOrder(source){
-    var tmp_arr = [];
-    var tmp_var;
-    source.find(".img_block").each(function(){
-        tmp_arr.push($(this));
-        $(this).remove();
-    });
-    for(var i = 0; i < tmp_arr.length; i++)
-        for(var j = 0; j < tmp_arr.length - 1; j++){
-            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
-                tmp_var = tmp_arr[j];
-                tmp_arr[j] = tmp_arr[j+1];
-                tmp_arr[j+1] = tmp_var;
-            }
-        }
-    for(i in tmp_arr)
-        source.append(tmp_arr[i]);
-}
-
-//refresh the numbers of the images
-function refreshImgNumbers(source){
-    var tmp = 1;
-    source.find(".img_block").each(function(){
-        $(this).find("input").val(tmp);
-        $(this).find(".numb_img").text(tmp);
-        tmp++;
-    });
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length);       
-        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/index.html
deleted file mode 100644
index e7e9038..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){ 
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/js/script.js
deleted file mode 100644
index e54bf0a..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_images.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,400 +0,0 @@
-
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    short_desc: "Расположите картинки в порядке возрастания цифр.", 
-    add: "Новый блок",
-    enter: "Введите текст ..."
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("odr_des_imgs","")){
-            var data = jQuery.parseJSON(sankore.preference("odr_des_imgs",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_i = 0;
-                    var tmp_right = "";
-                    var tmp_array = [];
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".img_block").each(function(){
-                        if($(this).find("img").attr("src") != "img/drop_img.png"){
-                            $(this).find(".close_img").remove();
-                            $(this).find(".clear_img").remove();
-                            $(this).find(".numb_img").remove();
-                            $(this).removeAttr("ondragenter")
-                            .removeAttr("ondragleave")
-                            .removeAttr("ondragover")
-                            .removeAttr("ondrop");
-                            $(this).find("input").val(++tmp_i)
-                            tmp_right += tmp_i + "*";
-                        } else 
-                            $(this).remove();
-                    });
-                    container.find(".imgs_cont>input").val(tmp_right);
-                    
-                    container.find(".img_block").each(function(){
-                        $(this).css("float","");
-                        tmp_array.push($(this));
-                    });                    
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").sortable( {
-                        update: checkResult
-                    } );
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    //container.find(".imgs_cont").sortable("destroy");
-                    container.find(".imgs_cont").css("background-color", "white");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block").each(function(){
-                        $(this).attr("ondragenter", "return false;")
-                        .attr("ondragleave", "$(this).css(\"background-color\",\"white\"); return false;")
-                        .attr("ondragover", "$(this).css(\"background-color\",\"#ccc\"); return false;")
-                        .attr("ondrop", "$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);")
-                        //.css("float","left");
-                        $("<div class='close_img'>").appendTo($(this));
-                        $("<div class='clear_img'>").appendTo($(this));
-                        $("<div class='numb_img'>" + $(this).find("input").val() + "</div>").appendTo($(this));
-                    });
-                    rightOrder(container.find(".imgs_cont"));
-                    container.find(".imgs_cont").append(add_img)
-                });
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();
-        if(tmp_obj.find(".img_block").size() > 0){
-            refreshImgNumbers(tmp_obj);
-        }
-        
-    });
-    
-    //cleaning an image
-    $(".clear_img").live("click",function(){
-        //$(this).parent().find(".fill_img").remove();
-        $(this).parent().find("img").attr("src","img/drop_img.png");
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var container = $(this);
-            var tmp_right = "";
-            var tmp_i = 0;
-            container.find(".img_block").each(function(){
-                if($(this).html().match(/<img/)){
-                    $(this).find("input").val(++tmp_i)
-                    tmp_right += tmp_i + "*";
-                }
-            });
-            container.find(".imgs_cont>input").val(tmp_right);
-        });
-    }
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.right = $(this).find(".imgs_cont>input").val();
-        cont_obj.imgs = [];
-        $(this).find(".img_block").each(function(){
-            var img_obj = new Object();
-            img_obj.value = $(this).find("input").val();
-            img_obj.link = $(this).find("img").attr("src").replace("../../","");
-            img_obj.ht = $(this).find("img").height();
-            img_obj.wd = $(this).find("img").width();
-            cont_obj.imgs.push(img_obj);
-        });
-        array_to_export.push(cont_obj);
-    });
-    sankore.setPreference("odr_des_imgs", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        var tmp_array = [];
-        var container = $("<div class='cont'>");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container);    
-        
-        var number = $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-    
-        $("<input type='hidden' value='" + data[i].right + "'/>").appendTo(imgs_container);
-        
-        for(var j in data[i].imgs){
-            var img_block = $("<div class='img_block' style='text-align: center;'>");
-            var img = $("<img src='../../" + data[i].imgs[j].link + "' style='display: inline;'>");
-            img.height(data[i].imgs[j].ht).width(data[i].imgs[j].wd);
-            if((120 - data[i].imgs[j].ht) > 0)
-                img.css("margin",(120 - data[i].imgs[j].ht)/2 + "px 0");
-            var hidden_input = $("<input type='hidden'>").val(data[i].imgs[j].value);
-            img_block.append(hidden_input).append(img);
-            tmp_array.push(img_block);
-        }
-        tmp_array = shuffle(tmp_array);
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );   
-        container.appendTo("body");
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    
-    var img1 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='1'/>").appendTo(img1);
-    $("<img src=\"../../objects/0.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img1);
-    var img2 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='2'/>").appendTo(img2);
-    $("<img src=\"../../objects/1.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img2);
-    var img3 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='3'/>").appendTo(img3);
-    $("<img src=\"../../objects/2.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img3);
-    var img4 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='4'/>").appendTo(img4);
-    $("<img src=\"../../objects/3.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img4);
-    var img5 = $("<div class='img_block' style='text-align: center;'></div>");
-    $("<input type='hidden' value='5'/>").appendTo(img5);
-    $("<img src=\"../../objects/4.gif\" style=\"display: inline;\" height=\"120\"/>").appendTo(img5);  
-    
-    tmp_array.push(img1, img2, img3, img4, img5);
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
-
-    container.appendTo("body")
-}
-
-//check result
-function checkResult(event)
-{
-    if($("#display").hasClass("selected")){
-        var str = "";
-        var right_str = $(event.target).find("input").val();
-        $(event.target).find(".img_block").each(function(){
-            str += $(this).find("input").val() + "*";
-        });
-        if(str == right_str)
-            $(event.target).css("background-color","#9f9");
-    } else {
-        refreshImgNumbers($(event.target));
-    }
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<input type='hidden' value='1*2*3*4*5*'/>").appendTo(imgs_container);
-    var add_img = $("<div class='add_img'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addImgBlock(dest){
-    var img_block = $("<div class='img_block' ondragenter='return false;' ondragleave='$(this).css(\"background-color\",\"white\"); return false;' ondragover='$(this).css(\"background-color\",\"#ccc\"); return false;' ondrop='$(this).css(\"background-color\",\"white\"); return onDropTarget(this,event);' style='text-align: center;'></div>").insertBefore(dest);
-    var tmp_counter = dest.parent().find(".img_block").size();
-    $("<div class='close_img'>").appendTo(img_block);
-    $("<div class='clear_img'>").appendTo(img_block);
-    $("<div class='numb_img'>" + tmp_counter + "</div>").appendTo(img_block);
-    $("<input type='hidden' value='" + tmp_counter + "'/>").appendTo(img_block);
-    $("<img src='img/drop_img.png' height='120'/>").appendTo(img_block);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//regulation the images in right order
-function rightOrder(source){
-    var tmp_arr = [];
-    var tmp_var;
-    source.find(".img_block").each(function(){
-        tmp_arr.push($(this));
-        $(this).remove();
-    });
-    for(var i = 0; i < tmp_arr.length; i++)
-        for(var j = 0; j < tmp_arr.length - 1; j++){
-            if(tmp_arr[j].find("input").val() > tmp_arr[j+1].find("input").val()){
-                tmp_var = tmp_arr[j];
-                tmp_arr[j] = tmp_arr[j+1];
-                tmp_arr[j+1] = tmp_var;
-            }
-        }
-    for(i in tmp_arr)
-        source.append(tmp_arr[i]);
-}
-
-//refresh the numbers of the images
-function refreshImgNumbers(source){
-    var tmp = 1;
-    source.find(".img_block").each(function(){
-        $(this).find("input").val(tmp);
-        $(this).find(".numb_img").text(tmp);
-        tmp++;
-    });
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    $(obj).find("img").remove();
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length);       
-        var tmp_img = $("<img/>").attr("src", "../../" + tmp);
-        $(obj).append(tmp_img);
-        setTimeout(function(){
-            if(tmp_img.height() >= tmp_img.width())
-                tmp_img.attr("height", "120");
-            else{
-                tmp_img.attr("width","120");
-                tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-            }
-        }, 6)
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/config.xml
deleted file mode 100644
index 95c9e84..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="900"
-        height="450" 
-        ub:resizable="true">     
-   
-		<name>Notes</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Associer images</description>
-		
-		<content src="index.html"/>
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/css/basic.css
deleted file mode 100644
index a5b368d..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/css/basic.css
+++ /dev/null
@@ -1,206 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid #999;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid #999;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 60px;
-}
-
-.imgs_cont{
-    width: 100%;
-    min-height: 62px;
-    margin: 0;
-}
-
-.imgs_answers_gray{
-    background-color: #f4f2f2;
-}
-
-.imgs_answers_green{
-    background-color: #9f9;
-}
-
-.imgs_answers_red{
-    background-color: #f99;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 80%;
-    min-height: 40px;
-    float: right;
-    background-color: #999;
-    border-top-left-radius: 20px;
-    border-bottom-left-radius: 20px;
-    padding-left: 10px;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.img_block{
-    width: 50px;
-    height: 50px;
-    margin: 5px 10px;
-    cursor: pointer;
-    display: inline-block;
-    position: relative;
-    background-color: white;
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-    font-size: 230%;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.dropHere{
-    background-color: #ccc;
-}
-
-.dropBack{
-    background-color: #F4F2F2;
-}
-
-.audio_block{
-    width: 120px;
-    height: 30px;
-    margin: 5px 0;    
-    float: left;
-}
-
-.audio_desc{
-    min-height: 30px;
-    margin: 5px 0;
-    float: left;
-    margin-left: 20px;
-}
-
-.play, .stop{
-    height: 30px;
-    width: 70px;    
-    float: left;
-    cursor: pointer;
-}
-
-.play{
-    background-image: url(../img/play.png);
-}
-
-.stop{
-    background-image: url(../img/stop.png);
-}
-
-.replay{
-    height: 30px;
-    width: 32px;
-    margin-left: 10px;
-    float: left;
-    background-image: url(../img/replay.png);
-    background-repeat: no-repeat;
-    cursor: pointer;
-}
-
-.gray{
-    background-color: #ccc;
-}
-
-.audio_answer{
-    min-height: 50px;
-    margin: 5px 10px;
-    padding: 0 10px;
-    background-color: white;
-    display: inline-block;
-    position: relative;
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-    font-size: 230%;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/green_point.png
deleted file mode 100644
index a2a4468..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/green_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/red_point.png
deleted file mode 100644
index f6daa19..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/img/red_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/index.html b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/index.html
deleted file mode 100644
index 8680276..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/index.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){  
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;">Display</div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;">Edit</div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/script.js
deleted file mode 100644
index 25c4c92..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/js/script.js
+++ /dev/null
@@ -1,411 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Listen to the sound and make the correct word.", 
-    add: "Add new block",
-    enter: "Enter your description here ...",
-    example: "example"
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_array = [];
-                    var imgs_container = container.find(".imgs_cont");
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".close_cont").remove();
-                    var answer = imgs_container.find(".audio_answer").text();
-                    imgs_container.find(".audio_answer").remove();
-                    imgs_container.find("input").val(answer);
-                    for(var j in answer){
-                        var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + answer[j] + "</div>");
-                        tmp_array.push(tmp_letter);
-                    }                        
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(imgs_container);
-                    imgs_container.sortable( {
-                        update: checkResult
-                    } );
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").removeClass("imgs_answers_red")
-                    .removeClass("imgs_answers_green")
-                    .addClass("imgs_answers_gray")
-                    .sortable("destroy");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-                    container.find(".img_block").remove();
-                    $("<div class='audio_answer' contenteditable>" + container.find(".imgs_cont input").val() + "</div>").appendTo(container.find(".imgs_cont"));
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.answer = $(this).find(".audio_answer").text();            
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.answer = $(this).find(".imgs_cont input").val(); 
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){        
-        var tmp_array = [];
-        var container = $("<div class='cont'>").appendTo("body");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);    
-        
-        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>").appendTo(sub_container);
-        var audio_block = $("<div class='audio_block'>").appendTo(text);
-        $("<div class='play'>").appendTo(audio_block);
-        $("<div class='replay'>").appendTo(audio_block);
-        var source = $("<source/>").attr("src", data[i].audio);
-        var audio = $("<audio>").appendTo(audio_block);
-        audio.append(source);
-        $("<input type='hidden'/>").appendTo(audio_block);
-        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(imgs_container);
-        for(var j in data[i].answer){
-            var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
-            tmp_array.push(tmp_letter);
-        }                        
-        tmp_array = shuffle(tmp_array);
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(imgs_container);
-    
-    for(var j in sankoreLang.example){
-        var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + sankoreLang.example[j] + "</div>");
-        tmp_array.push(tmp_letter);
-    } 
-    
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    text.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-    .attr("ondragover", "$(this).addClass('gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value=''/>").appendTo(imgs_container);
-    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).text();
-    });
-    if(str == right_str)
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_red")
-        .addClass("imgs_answers_green");
-    else
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_green")
-        .addClass("imgs_answers_red");
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj).find(".audio_block");
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/index.html
deleted file mode 100644
index c7f3b07..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>       
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/js/script.js
deleted file mode 100644
index 6530c52..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,412 +0,0 @@
-var sankoreLang = {
-    display: "Afficher", 
-    edit: "Modifier", 
-    short_desc: "Ecouter le son et replacer les lettres dans l'ordre.", 
-    add: "Nouveau bloc",
-    enter: "Saisir la consigne ici ...",
-    example: "exemple"
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_array = [];
-                    var imgs_container = container.find(".imgs_cont");
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".close_cont").remove();
-                    var answer = imgs_container.find(".audio_answer").text();
-                    imgs_container.find(".audio_answer").remove();
-                    imgs_container.find("input").val(answer);
-                    for(var j in answer){
-                        var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + answer[j] + "</div>");
-                        tmp_array.push(tmp_letter);
-                    }                        
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(imgs_container);
-                    imgs_container.sortable( {
-                        update: checkResult
-                    } );
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").removeClass("imgs_answers_red")
-                    .removeClass("imgs_answers_green")
-                    .addClass("imgs_answers_gray")
-                    .sortable("destroy");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-                    container.find(".img_block").remove();
-                    $("<div class='audio_answer' contenteditable>" + container.find(".imgs_cont input").val() + "</div>").appendTo(container.find(".imgs_cont"));
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.answer = $(this).find(".audio_answer").text();            
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.answer = $(this).find(".imgs_cont input").val(); 
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){        
-        var tmp_array = [];
-        var container = $("<div class='cont'>").appendTo("body");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);    
-        
-        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>").appendTo(sub_container);
-        var audio_block = $("<div class='audio_block'>").appendTo(text);
-        $("<div class='play'>").appendTo(audio_block);
-        $("<div class='replay'>").appendTo(audio_block);
-        var source = $("<source/>").attr("src", "../../" + data[i].audio);
-        var audio = $("<audio>").appendTo(audio_block);
-        audio.append(source);
-        $("<input type='hidden'/>").appendTo(audio_block);
-        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(imgs_container);
-        for(var j in data[i].answer){
-            var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
-            tmp_array.push(tmp_letter);
-        }                        
-        tmp_array = shuffle(tmp_array);
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "../../objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(imgs_container);
-    
-    for(var j in sankoreLang.example){
-        var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + sankoreLang.example[j] + "</div>");
-        tmp_array.push(tmp_letter);
-    } 
-    
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    text.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-    .attr("ondragover", "$(this).addClass('gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value=''/>").appendTo(imgs_container);
-    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).text();
-    });
-    if(str == right_str)
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_red")
-        .addClass("imgs_answers_green");
-    else
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_green")
-        .addClass("imgs_answers_red");
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj).find(".audio_block");
-            tmp = tmp.substr(1, tmp.length);            
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/index.html
deleted file mode 100644
index 8b39b00..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){ 
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/js/script.js
deleted file mode 100644
index 3528fda..0000000
--- a/Sankore-3.1/resources/library/interactivities/ordonner_des_letters.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,412 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    short_desc: "Прослушайте звук и составьте корректное слово.", 
-    add: "Новый блок",
-    enter: "Введите описание ...",
-    example: "пример"
-};
-
-//main function
-function start(){
-
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("associer_sound","")){
-            var data = jQuery.parseJSON(sankore.preference("associer_sound",""));
-            importData(data);
-        }
-        else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    var tmp_array = [];
-                    var imgs_container = container.find(".imgs_cont");
-                    
-                    container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop")
-                    container.find(".close_cont").remove();
-                    var answer = imgs_container.find(".audio_answer").text();
-                    imgs_container.find(".audio_answer").remove();
-                    imgs_container.find("input").val(answer);
-                    for(var j in answer){
-                        var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + answer[j] + "</div>");
-                        tmp_array.push(tmp_letter);
-                    }                        
-                    tmp_array = shuffle(tmp_array);
-                    for(var i = 0; i<tmp_array.length;i++)
-                        tmp_array[i].appendTo(imgs_container);
-                    imgs_container.sortable( {
-                        update: checkResult
-                    } );
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".imgs_cont").removeClass("imgs_answers_red")
-                    .removeClass("imgs_answers_green")
-                    .addClass("imgs_answers_gray")
-                    .sortable("destroy");
-                    container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-                    container.find(".img_block").remove();
-                    $("<div class='audio_answer' contenteditable>" + container.find(".imgs_cont input").val() + "</div>").appendTo(container.find(".imgs_cont"));
-                });                
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-        
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-        
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addImgBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        var i = 0;
-        var tmp_obj = $(this).parent().parent();        
-        $(this).parent().remove();        
-    });
-    
-    //correct image
-    $(".true_img").live("click",function(){        
-        $(this).parent().parent().find(".img_block").each(function(){
-            $(this).find("input").val(0);
-            var tmp_div = $(this).find(".false_img");
-            if(tmp_div)
-                tmp_div.removeClass("false_img").addClass("true_img");
-        })
-        $(this).parent().find("input").val(1);
-        $(this).removeClass("true_img").addClass("false_img");
-    });
-    
-    //wrong image
-    $(".false_img").live("click",function(){
-        $(this).parent().find("input").val(0);
-        $(this).removeClass("false_img").addClass("true_img");
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    if($("#edit").hasClass("selected")){
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.answer = $(this).find(".audio_answer").text();            
-            array_to_export.push(cont_obj);
-        });
-    } else {
-        $(".cont").each(function(){
-            var cont_obj = new Object();
-            cont_obj.text = $(this).find(".audio_desc").text();
-            cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.answer = $(this).find(".imgs_cont input").val(); 
-            array_to_export.push(cont_obj);
-        });
-    }
-    sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){        
-        var tmp_array = [];
-        var container = $("<div class='cont'>").appendTo("body");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);    
-        
-        $("<div class='number_cont'>"+ (++tmp) +"</div>").appendTo(sub_container);
-        var text = $("<div class='text_cont'>").appendTo(sub_container);
-        var audio_block = $("<div class='audio_block'>").appendTo(text);
-        $("<div class='play'>").appendTo(audio_block);
-        $("<div class='replay'>").appendTo(audio_block);
-        var source = $("<source/>").attr("src", "../../" + data[i].audio);
-        var audio = $("<audio>").appendTo(audio_block);
-        audio.append(source);
-        $("<input type='hidden'/>").appendTo(audio_block);
-        $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
-        $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(imgs_container);
-        for(var j in data[i].answer){
-            var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
-            tmp_array.push(tmp_letter);
-        }                        
-        tmp_array = shuffle(tmp_array);
-        for(j = 0; j<tmp_array.length;j++)
-            tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );
-    }
-}
-
-//example
-function showExample(){
-    
-    var tmp_array = [];
-    
-    var container = $("<div class='cont'>").appendTo("body");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);
-
-    var number = $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "../../objects/beep.wav");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc'>" + sankoreLang.short_desc + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value='" + sankoreLang.example + "'/>").appendTo(imgs_container);
-    
-    for(var j in sankoreLang.example){
-        var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + sankoreLang.example[j] + "</div>");
-        tmp_array.push(tmp_letter);
-    } 
-    
-    tmp_array = shuffle(tmp_array);
-    for(var i = 0; i<tmp_array.length;i++)
-        tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).find("input").val() + "*";
-    });
-    if(str == right_str)
-        $(event.target).css("background-color","#9f9");
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont imgs_answers_gray'>").appendTo(container);
-    
-    var close = $("<div class='close_cont'>").appendTo(container);
-    var number = $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont'>").appendTo(sub_container);
-    text.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-    .attr("ondragover", "$(this).addClass('gray'); return false;")
-    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
-    var audio_block = $("<div class='audio_block'>").appendTo(text);
-    $("<div class='play'>").appendTo(audio_block);
-    $("<div class='replay'>").appendTo(audio_block);
-    var source = $("<source/>").attr("src", "");
-    var audio = $("<audio>").appendTo(audio_block);
-    audio.append(source);
-    $("<input type='hidden'/>").appendTo(audio_block);
-    var audio_desc = $("<div class='audio_desc' contenteditable>" + sankoreLang.enter + "</div>").appendTo(text);
-    
-    $("<input type='hidden' value=''/>").appendTo(imgs_container);
-    $("<div class='audio_answer' contenteditable>" + sankoreLang.example + "</div>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-//shuffles an array
-function shuffle( arr )
-{
-    var pos, tmp;
-	
-    for( var i = 0; i < arr.length; i++ )
-    {
-        pos = Math.round( Math.random() * ( arr.length - 1 ) );
-        tmp = arr[pos];
-        arr[pos] = arr[i];
-        arr[i] = tmp;
-    }
-    return arr;
-}
-
-//check result
-function checkResult(event)
-{
-    var str = "";
-    var right_str = $(event.target).find("input").val();
-    $(event.target).find(".img_block").each(function(){
-        str += $(this).text();
-    });
-    if(str == right_str)
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_red")
-        .addClass("imgs_answers_green");
-    else
-        $(event.target).removeClass("imgs_answers_gray")
-        .removeClass("imgs_answers_green")
-        .addClass("imgs_answers_red");
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropAudio(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){       
-            var audio_block = $(obj).find(".audio_block");
-            tmp = tmp.substr(1, tmp.length);            
-            $(obj).find("audio").remove();
-            audio_block.find(":first-child").removeClass("stop").addClass("play");
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
-if (window.widget) {
-    window.widget.onremove = function(){
-        $("audio").each(function(){
-            this.pause();
-            $(this).parent().find(":first-child").removeClass("stop").addClass("play");
-        });
-    }
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/config.xml
deleted file mode 100644
index 3560e2a..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://uniboard.mnemis.com/widgets/notes" 
-        version="1.2"
-        width="800"
-        height="400" 
-        ub:resizable="true">     
-   
-		<name>Notes</name>
-		<author href="http://www.getuniboard.com"
-	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Ordonner des images</description>
-		
-		<content src="index.html"/>
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/css/basic.css b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/css/basic.css
deleted file mode 100644
index b093d46..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/css/basic.css
+++ /dev/null
@@ -1,236 +0,0 @@
-html, body{
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    background-color: white;
-}
-
-.toggle_mode{
-    width: 100%;
-    height: 25px;
-    border-bottom: 1px solid black;
-    background-color: #ccc;
-    position: fixed;
-    top: 0;
-    left: 0;
-    z-index: 2;
-}
-
-#display_img, #edit_img{
-    width: 15px;
-    height: 15px;
-    margin: 5px 10px;
-}
-
-.green_point{
-    background-image: url(../img/green_point.png);
-}
-
-.red_point{
-    background-image: url(../img/red_point.png);
-}
-
-#display_text, #edit_text{
-    height: 19px;
-    padding: 3px 0 0 0;
-}
-
-.selected{
-    background-color: #666;
-}
-
-#display:hover, #edit:hover{
-    background-color: #999;
-}
-
-.cont{
-    width: 100%;
-    border-bottom: 1px solid black;
-    margin: 0;
-    padding: 0;
-    position: relative;
-}
-
-.sub_cont{
-    width: 100%;
-    padding: 0;
-    margin: 20px 0 0 0;
-    min-height: 60px;
-}
-
-.imgs_cont{
-    width: 100%;
-    margin: 0;
-}
-
-.number_cont{
-    width: 40px;
-    height: 33px;
-    margin-left: 40px;
-    margin-right: 10px;
-    background-image: url(../img/circle.png);
-    background-repeat: no-repeat;
-    text-align: center;
-    float: left;
-    font-size: 130%;
-    padding-top: 7px;
-    font-weight: bold;
-}
-
-.text_cont{
-    width: 80%;
-    min-height: 40px;
-    float: right;
-    background-color: #ccc;
-    border-top-left-radius: 10px;
-    border-bottom-left-radius: 10px;
-    padding-left: 10px;
-}
-
-.close_cont{
-    width: 20px;
-    height: 20px;
-    background-image: url(../img/close_cont.png);
-    cursor: pointer;
-    position: absolute;
-    top: -15px;
-    left: 5px;
-}
-
-.add_img{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    background-image: url(../img/add_text.png);
-    background-position: center;
-    background-repeat: no-repeat;
-    cursor: pointer;
-    float: left;
-    display: inline-block;
-}
-
-.img_block{
-    display: inline-block;
-}
-
-.img_block, .text_block{
-    width: 120px;
-    height: 120px;
-    margin: 10px 20px;
-    cursor: pointer;
-    float: left;
-    position: relative;
-    border: 1px solid #ccc;
-    -moz-box-shadow: #ccc -1px 0 4px;
-    -webkit-box-shadow: #ccc -1px 0 4px;
-    box-shadow: #ccc -1px 0 4px;
-    background-color: white;
-}
-
-.text_block{
-    display: table;
-    text-align: center;
-}
-
-.audio_block{
-    width: 120px;
-    height: 30px;
-    margin: 44px 5px;
-    position: relative;
-    float: left;
-    display: inline-block;
-}
-
-.text_subblock{
-    display: table-cell;
-    vertical-align: middle;
-    font-size: 120%;
-}
-
-.close_img, .clear_img, .numb_img {
-    width: 30px;
-    height: 30px;    
-    background-repeat: no-repeat;
-    position: absolute;    
-    right: -15px;
-    cursor: pointer;
-}
-
-.close_img{
-    background-image: url(../img/close_img.png);
-    top: -15px;
-}
-
-.clear_img{
-    background-image: url(../img/clear_img.png);
-    top: 15px;
-}
-
-.numb_img{
-    background-image: url(../img/numb_img.png); 
-    left: -15px;
-    top: -15px;
-    color: white;
-    font-weight: bold;
-    font-size: 130%;
-}
-
-.add_block{
-    margin: 20px 0 0 20px;
-    width: 110px;
-    height: 25px;
-    background-image: url(../img/add_block.png);
-    background-repeat: no-repeat;
-    padding-left: 40px;
-    padding-top: 5px;
-    cursor: pointer;
-    background-color: #ccc;
-    -webkit-border-radius: 15px;
-    border-radius: 15px;    
-}
-
-.ch_box{
-    margin: 0;
-    padding: 0;
-    position: absolute;
-    bottom: 0;
-    right: 0;
-}
-
-.right{
-    background-color: #9f9;
-}
-
-.clear{
-    clear: both;
-}
-
-.over{
-    background-color: #ccc;
-}
-
-.play, .stop{
-    height: 30px;
-    width: 70px;    
-    float: left;
-    cursor: pointer;
-}
-
-.play{
-    background-image: url(../img/play.png);
-}
-
-.stop{
-    background-image: url(../img/stop.png);
-}
-
-.replay{
-    height: 30px;
-    width: 32px;
-    margin-left: 10px;
-    float: left;
-    background-image: url(../img/replay.png);
-    background-repeat: no-repeat;
-    cursor: pointer;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/green_point.png b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/green_point.png
deleted file mode 100644
index a2a4468..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/green_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/red_point.png b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/red_point.png
deleted file mode 100644
index f6daa19..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/img/red_point.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/index.html b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/index.html
deleted file mode 100644
index 53d8421..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang == "en"){
-                    if(window.sankore)
-                        sankore.enableDropOnWidget(false);
-                    start();
-                }
-                else{
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                start();
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 90px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 90px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/script.js b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/script.js
deleted file mode 100644
index dc2c9d7..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/js/script.js
+++ /dev/null
@@ -1,401 +0,0 @@
-var sankoreLang = {
-    display: "Display", 
-    edit: "Edit", 
-    short_desc: "Select animals from the following list:", 
-    add: "Add new block",
-    enter: "Enter your text here ...",
-    cat: "cat",
-    ball: "ball",
-    shovel: "shovel",
-    dog: "dog",
-    tree: "tree"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("selectionner","")){
-            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    container.find(".img_block, .text_block").each(function(){
-                        $(this).find(".close_img").remove();  
-                        $(this).find(".text_subblock").removeAttr("contenteditable");
-                        $(this).find("input:checkbox").removeAttr("checked")
-                    });                    
-                
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    container.find(".imgs_cont").removeClass("right")
-                    .attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-                    .attr("ondragover", "$(this).addClass('over'); return false;")
-                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block, .text_block").each(function(){
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input:hidden").val() == 0)
-                            $(this).find("input:checkbox").attr('checked', false);
-                        else
-                            $(this).find("input:checkbox").attr('checked', true);
-                        $(this).find(".text_subblock").attr("contenteditable","true");                        
-                    });
-                    add_img.insertBefore(container.find(".clear"));
-                });
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //checkbox events
-    $("input:checkbox").live("click", function(){
-        if($("#display").hasClass("selected")){
-            var flag = true;
-            var block = $(this).parent().parent();
-            block.find(".text_block, .img_block, .audio_block").each(function(){
-                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
-                    flag = false;                
-                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
-                    flag = false;          
-            });
-            if(flag)
-                block.addClass("right");
-            else
-                block.removeClass("right");
-        } else {
-            if($(this).is(":checked"))
-                $(this).parent().find("input:hidden").val(1);
-            else
-                $(this).parent().find("input:hidden").val(0);
-        }
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addTextBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        $(this).parent().remove();
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.blocks = [];
-        $(this).find(".img_block, .audio_block, .text_block").each(function(){
-            var tmp_block = new Object();
-            if($(this).hasClass("img_block")){
-                if($(this).find(".audio_block").size() == 0){
-                    tmp_block.src = $(this).find("img").attr("src");
-                    tmp_block.hidden = $(this).find("input:hidden").val();
-                    tmp_block.h = $(this).find("img").height();
-                    tmp_block.w = $(this).find("img").width(); 
-                    tmp_block.type = "img";
-                }
-            }
-            if($(this).hasClass("audio_block")){
-                tmp_block.src = $(this).find("source").attr("src");
-                tmp_block.hidden = $(this).parent().find("input:hidden").val();
-                tmp_block.type = "audio";
-            }
-            if($(this).hasClass("text_block")){
-                tmp_block.text = $(this).find(".text_subblock").text();
-                tmp_block.hidden = $(this).find("input:hidden").val();
-                tmp_block.type = "text";
-            }           
-            cont_obj.blocks.push(tmp_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    
-    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        
-        var container = $("<div class='cont'>").appendTo("body");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
-        $("<div class='clear'>").appendTo(imgs_container);
-        
-        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-        for(var j in data[i].blocks){
-            switch(data[i].blocks[j].type){
-                case "text":
-                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
-                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(text_block);
-                    break;
-                case "img":
-                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-                    $("<img src=\"" + data[i].blocks[j].src + "\" width='" + data[i].blocks[j].w + "' height='" + data[i].blocks[j].h + "' style=\"display: inline;\"/>").appendTo(img_block);
-                    break;
-                case "audio":
-                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
-                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
-                    $("<div class='close_img'>").appendTo(img_tmp);
-                    $("<div class='play'>").appendTo(audio_block);
-                    $("<div class='replay'>").appendTo(audio_block);
-                    var source = $("<source/>").attr("src", data[i].blocks[j].src);
-                    var audio = $("<audio>").appendTo(audio_block);
-                    audio.append(source);
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-                    break;
-            }
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
-    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
-    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
-    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
-    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
-    $("<div class='clear'>").appendTo(imgs_container);
-    
-    container.appendTo("body")
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-    .attr("ondragover", "$(this).addClass('over'); return false;")
-    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-    
-    $("<div class='close_cont'>").appendTo(container);
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<div class='add_img'>").appendTo(imgs_container);
-    $("<div class='clear'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addTextBlock(dest){
-    var tmp = $("<div class='text_block'>").insertBefore(dest)
-    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
-    $("<div class='close_img'>").appendTo(tmp);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        if(tmp_type.substr(0, 5) == "audio"){  
-            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
-            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
-            $("<div class='close_img'>").appendTo(img_tmp);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
-            $("<div class='close_img'>").appendTo(img_block);
-            $("<input type='hidden' value='0'/>").appendTo(img_block); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-            var tmp_img = $("<img src=\"" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-    
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
-
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/index.html
deleted file mode 100644
index ff5b5f5..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){    
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>        
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 130px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 130px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/js/script.js b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/js/script.js
deleted file mode 100644
index 093aad5..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/fr/js/script.js
+++ /dev/null
@@ -1,401 +0,0 @@
-var sankoreLang = {
-    display: "Affichage", 
-    edit: "Modifier", 
-    short_desc: "Sélectionner les animaux dans la liste suivante :", 
-    add: "Nouveau bloc",
-    enter: "Saisir le texte ici ...",
-    cat: "chat",
-    ball: "balle",
-    shovel: "pelle",
-    dog: "chien",
-    tree: "arbre"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("selectionner","")){
-            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    container.find(".img_block, .text_block").each(function(){
-                        $(this).find(".close_img").remove();  
-                        $(this).find(".text_subblock").removeAttr("contenteditable");
-                        $(this).find("input:checkbox").removeAttr("checked")
-                    });                    
-                
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    container.find(".imgs_cont").removeClass("right")
-                    .attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-                    .attr("ondragover", "$(this).addClass('over'); return false;")
-                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block, .text_block").each(function(){
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input:hidden").val() == 0)
-                            $(this).find("input:checkbox").attr('checked', false);
-                        else
-                            $(this).find("input:checkbox").attr('checked', true);
-                        $(this).find(".text_subblock").attr("contenteditable","true");                        
-                    });
-                    add_img.insertBefore(container.find(".clear"));
-                });
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //checkbox events
-    $("input:checkbox").live("click", function(){
-        if($("#display").hasClass("selected")){
-            var flag = true;
-            var block = $(this).parent().parent();
-            block.find(".text_block, .img_block, .audio_block").each(function(){
-                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
-                    flag = false;                
-                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
-                    flag = false;          
-            });
-            if(flag)
-                block.addClass("right");
-            else
-                block.removeClass("right");
-        } else {
-            if($(this).is(":checked"))
-                $(this).parent().find("input:hidden").val(1);
-            else
-                $(this).parent().find("input:hidden").val(0);
-        }
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addTextBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        $(this).parent().remove();
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.blocks = [];
-        $(this).find(".img_block, .audio_block, .text_block").each(function(){
-            var tmp_block = new Object();
-            if($(this).hasClass("img_block")){
-                if($(this).find(".audio_block").size() == 0){
-                    tmp_block.src = $(this).find("img").attr("src").replace("../../","");
-                    tmp_block.hidden = $(this).find("input:hidden").val();
-                    tmp_block.h = $(this).find("img").height();
-                    tmp_block.w = $(this).find("img").width(); 
-                    tmp_block.type = "img";
-                }
-            }
-            if($(this).hasClass("audio_block")){
-                tmp_block.src = $(this).find("source").attr("src").replace("../../","");
-                tmp_block.hidden = $(this).parent().find("input:hidden").val();
-                tmp_block.type = "audio";
-            }
-            if($(this).hasClass("text_block")){
-                tmp_block.text = $(this).find(".text_subblock").text();
-                tmp_block.hidden = $(this).find("input:hidden").val();
-                tmp_block.type = "text";
-            }           
-            cont_obj.blocks.push(tmp_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    
-    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        
-        var container = $("<div class='cont'>").appendTo("body");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
-        $("<div class='clear'>").appendTo(imgs_container);
-        
-        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-        for(var j in data[i].blocks){
-            switch(data[i].blocks[j].type){
-                case "text":
-                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
-                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(text_block);
-                    break;
-                case "img":
-                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-                    $("<img src=\"../../" + data[i].blocks[j].src + "\" width='" + data[i].blocks[j].w + "' height='" + data[i].blocks[j].h + "' style=\"display: inline;\"/>").appendTo(img_block);
-                    break;
-                case "audio":
-                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
-                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
-                    $("<div class='close_img'>").appendTo(img_tmp);
-                    $("<div class='play'>").appendTo(audio_block);
-                    $("<div class='replay'>").appendTo(audio_block);
-                    var source = $("<source/>").attr("src", "../../" + data[i].blocks[j].src);
-                    var audio = $("<audio>").appendTo(audio_block);
-                    audio.append(source);
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-                    break;
-            }
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
-    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
-    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
-    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
-    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
-    $("<div class='clear'>").appendTo(imgs_container);
-    
-    container.appendTo("body")
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-    .attr("ondragover", "$(this).addClass('over'); return false;")
-    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-    
-    $("<div class='close_cont'>").appendTo(container);
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<div class='add_img'>").appendTo(imgs_container);
-    $("<div class='clear'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addTextBlock(dest){
-    var tmp = $("<div class='text_block'>").insertBefore(dest)
-    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
-    $("<div class='close_img'>").appendTo(tmp);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length); 
-        if(tmp_type.substr(0, 5) == "audio"){  
-            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
-            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
-            $("<div class='close_img'>").appendTo(img_tmp);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
-            $("<div class='close_img'>").appendTo(img_block);
-            $("<input type='hidden' value='0'/>").appendTo(img_block); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-    
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/index.html
deleted file mode 100644
index e7e9038..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>D'n'd</title>
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <link rel="stylesheet" type="text/css" href="../../css/basic.css"/>
-        <script type="text/javascript" src="../../js/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../js/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="js/script.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){ 
-                sankore.enableDropOnWidget(false);
-                start();
-            });
-        </script>
-    </head>
-    <body>
-        <div class="toggle_mode">
-            <div style="width: 50%; height: 100%; float: left;">
-                <div id="display" style="float: right; width: 120px; cursor: pointer;" class="selected">
-                    <div id="display_img" style="float: right;" class="green_point"></div>
-                    <div id="display_text" style="float: right;"></div>                    
-                </div>
-            </div>
-            <div style="width: 50%; height: 100%; float: right;">
-                <div id="edit" style="float: left; width: 120px; cursor: pointer;">                    
-                    <div id="edit_img" style="float: left;" class="red_point"></div>
-                    <div id="edit_text" style="float: left;"></div>
-                </div>
-            </div>
-        </div>
-        <div style="width: 100%; height: 25px;"></div>
-
-    </body>
-</html>
diff --git a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/js/script.js b/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/js/script.js
deleted file mode 100644
index 4ac9a53..0000000
--- a/Sankore-3.1/resources/library/interactivities/selectionner.wgt/locales/ru/js/script.js
+++ /dev/null
@@ -1,401 +0,0 @@
-var sankoreLang = {
-    display: "Показать", 
-    edit: "Изменить", 
-    short_desc: "Выберите животных из следующего списка:", 
-    add: "Новый блок",
-    enter: "Введите текст ...",
-    cat: "кот",
-    ball: "мяч",
-    shovel: "лопата",
-    dog: "собака",
-    tree: "дерево"
-};
-
-//main function
-function start(){
-    
-    $("#display_text").text(sankoreLang.display);
-    $("#edit_text").text(sankoreLang.edit);
-    
-    if(window.sankore){
-        if(sankore.preference("selectionner","")){
-            var data = jQuery.parseJSON(sankore.preference("selectionner",""));
-            importData(data);
-        } else {
-            showExample();
-        }
-    } 
-    else 
-        showExample();
-    
-    //events
-    if (window.widget) {
-        window.widget.onleave = function(){
-            exportData();
-        }
-    }
-    
-    $("#display, #edit").click(function(event){
-        if(this.id == "display"){
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                $(this).addClass("selected");
-                $("#display_img").removeClass("red_point").addClass("green_point");
-                $("#edit_img").removeClass("green_point").addClass("red_point");
-                $("#edit").removeClass("selected");
-                $(".add_block").remove();
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    container.find(".text_cont").removeAttr("contenteditable");
-                    container.find(".add_img").remove();
-                    container.find(".close_cont").remove();
-                    container.find(".imgs_cont").removeAttr("ondragenter")
-                    .removeAttr("ondragleave")
-                    .removeAttr("ondragover")
-                    .removeAttr("ondrop");
-                    container.find(".img_block, .text_block").each(function(){
-                        $(this).find(".close_img").remove();  
-                        $(this).find(".text_subblock").removeAttr("contenteditable");
-                        $(this).find("input:checkbox").removeAttr("checked")
-                    });                    
-                
-                });
-            }
-        } else {            
-            if(!$(this).hasClass("selected")){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(true);
-                $(this).addClass("selected");
-                $("#edit_img").removeClass("red_point").addClass("green_point");
-                $("#display_img").removeClass("green_point").addClass("red_point");
-                $("#display").removeClass("selected");
-                
-                $(".cont").each(function(){
-                    var container = $(this);
-                    
-                    $("<div class='close_cont'>").appendTo(container);
-                    container.find(".text_cont").attr("contenteditable","true");
-                    container.find(".imgs_cont").removeClass("right")
-                    .attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-                    .attr("ondragover", "$(this).addClass('over'); return false;")
-                    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-                    
-                    var add_img = $("<div class='add_img'>");
-                    container.find(".img_block, .text_block").each(function(){
-                        $("<div class='close_img'>").appendTo($(this));
-                        if($(this).find("input:hidden").val() == 0)
-                            $(this).find("input:checkbox").attr('checked', false);
-                        else
-                            $(this).find("input:checkbox").attr('checked', true);
-                        $(this).find(".text_subblock").attr("contenteditable","true");                        
-                    });
-                    add_img.insertBefore(container.find(".clear"));
-                });
-                
-                $("<div class='add_block'>" + sankoreLang.add + "</div>").appendTo("body");
-            }
-        }
-    });
-    
-    //add new block
-    $(".add_block").live("click", function(){
-        addContainer();
-    });
-    
-    //checkbox events
-    $("input:checkbox").live("click", function(){
-        if($("#display").hasClass("selected")){
-            var flag = true;
-            var block = $(this).parent().parent();
-            block.find(".text_block, .img_block, .audio_block").each(function(){
-                if($(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 0)                    
-                    flag = false;                
-                else if(!$(this).find("input:checkbox").is(':checked') && $(this).find("input:hidden").val() == 1)
-                    flag = false;          
-            });
-            if(flag)
-                block.addClass("right");
-            else
-                block.removeClass("right");
-        } else {
-            if($(this).is(":checked"))
-                $(this).parent().find("input:hidden").val(1);
-            else
-                $(this).parent().find("input:hidden").val(0);
-        }
-    });
-    
-    //play/pause event
-    $(".play, .stop").live("click", function(){
-        var tmp_audio = $(this);
-        var audio = tmp_audio.parent().find("audio").get(0);
-        if($(this).hasClass("play")){            
-            if(tmp_audio.parent().find("source").attr("src")){
-                tmp_audio.removeClass("play").addClass("stop");
-                var id = setInterval(function(){
-                    if(audio.currentTime == audio.duration){
-                        clearInterval(id);
-                        tmp_audio.removeClass("stop").addClass("play");
-                    }
-                }, 10);
-                tmp_audio.parent().find("input").val(id);
-                audio.play();
-            }
-        } else {
-            $(this).removeClass("stop").addClass("play");
-            clearInterval( tmp_audio.parent().find("input").val())
-            audio.pause();
-        }
-    });
-    
-    $(".replay").live("click", function(){
-        var tmp_audio = $(this).prev();
-        var audio = $(this).parent().find("audio").get(0); 
-        if(tmp_audio.parent().find("source").attr("src")){
-            $(this).prev().removeClass("play").addClass("stop");
-            clearInterval($(this).parent().find("input").val());
-            var id = setInterval(function(){
-                if(audio.currentTime == audio.duration){
-                    clearInterval(id);
-                    tmp_audio.removeClass("stop").addClass("play");
-                }
-            }, 10);
-            tmp_audio.parent().find("input").val(id);
-            audio.currentTime = 0;
-            audio.play();
-        }
-    });
-    
-    //adding new img
-    $(".add_img").live("click", function(){
-        addTextBlock($(this));
-    });
-    
-    //deleting a block
-    $(".close_cont").live("click",function(){
-        $(this).parent().remove();
-        refreshBlockNumbers();
-    });
-    
-    //deleting the img block
-    $(".close_img").live("click", function(){
-        $(this).parent().remove();
-    });
-}
-
-//export
-function exportData(){
-    var array_to_export = [];
-    $(".cont").each(function(){
-        var cont_obj = new Object();
-        cont_obj.text = $(this).find(".text_cont").text();
-        cont_obj.blocks = [];
-        $(this).find(".img_block, .audio_block, .text_block").each(function(){
-            var tmp_block = new Object();
-            if($(this).hasClass("img_block")){
-                if($(this).find(".audio_block").size() == 0){
-                    tmp_block.src = $(this).find("img").attr("src").replace("../../","");
-                    tmp_block.hidden = $(this).find("input:hidden").val();
-                    tmp_block.h = $(this).find("img").height();
-                    tmp_block.w = $(this).find("img").width(); 
-                    tmp_block.type = "img";
-                }
-            }
-            if($(this).hasClass("audio_block")){
-                tmp_block.src = $(this).find("source").attr("src").replace("../../","");
-                tmp_block.hidden = $(this).parent().find("input:hidden").val();
-                tmp_block.type = "audio";
-            }
-            if($(this).hasClass("text_block")){
-                tmp_block.text = $(this).find(".text_subblock").text();
-                tmp_block.hidden = $(this).find("input:hidden").val();
-                tmp_block.type = "text";
-            }           
-            cont_obj.blocks.push(tmp_block);
-        });
-        array_to_export.push(cont_obj);
-    });
-    
-    sankore.setPreference("selectionner", JSON.stringify(array_to_export));
-}
-
-//import
-function importData(data){
-    
-    var tmp = 0;    
-    for(var i in data){
-        
-        var container = $("<div class='cont'>").appendTo("body");
-        var sub_container = $("<div class='sub_cont'>").appendTo(container);
-        var imgs_container = $("<div class='imgs_cont'>").appendTo(container); 
-        $("<div class='clear'>").appendTo(imgs_container);
-        
-        $("<div class='number_cont'>" + (++tmp) + "</div>").appendTo(sub_container);
-        $("<div class='text_cont'>" + data[i].text + "</div>").appendTo(sub_container);
-        
-        for(var j in data[i].blocks){
-            switch(data[i].blocks[j].type){
-                case "text":
-                    var text_block = $("<div class='text_block'>").insertBefore(imgs_container.find(".clear"));
-                    $("<div class='text_subblock'>" + data[i].blocks[j].text + "</div>").appendTo(text_block); 
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(text_block); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(text_block);
-                    break;
-                case "img":
-                    var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore(imgs_container.find(".clear"));
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_block); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-                    $("<img src=\"../../" + data[i].blocks[j].src + "\" width='" + data[i].blocks[j].w + "' height='" + data[i].blocks[j].h + "' style=\"display: inline;\"/>").appendTo(img_block);
-                    break;
-                case "audio":
-                    var img_tmp = $("<div class='img_block'>").insertBefore(imgs_container.find(".clear"));
-                    var audio_block = $("<div class='audio_block'>").appendTo(img_tmp);
-                    $("<div class='close_img'>").appendTo(img_tmp);
-                    $("<div class='play'>").appendTo(audio_block);
-                    $("<div class='replay'>").appendTo(audio_block);
-                    var source = $("<source/>").attr("src", "../../" + data[i].blocks[j].src);
-                    var audio = $("<audio>").appendTo(audio_block);
-                    audio.append(source);
-                    $("<input type='hidden' value='" + data[i].blocks[j].hidden + "'/>").appendTo(img_tmp); 
-                    $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-                    break;
-            }
-        }
-    }
-}
-
-//example
-function showExample(){
-    
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    
-    $("<div class='number_cont'>1</div>").appendTo(sub_container);
-    $("<div class='text_cont'>" + sankoreLang.short_desc + "</div>").appendTo(sub_container);
-    
-    var tmp1 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.cat + "</div>").appendTo(tmp1); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp1); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp1)
-    var tmp2 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.ball + "</div>").appendTo(tmp2); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp2); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp2)
-    var tmp3 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.shovel + "</div>").appendTo(tmp3); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp3); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp3)
-    var tmp4 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.dog + "</div>").appendTo(tmp4); 
-    $("<input type='hidden' value='1'/>").appendTo(tmp4); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp4)
-    var tmp5 = $("<div class='text_block'>").appendTo(imgs_container); 
-    $("<div class='text_subblock'>" + sankoreLang.tree + "</div>").appendTo(tmp5); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp5); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp5)
-    $("<div class='clear'>").appendTo(imgs_container);
-    
-    container.appendTo("body")
-}
-
-//add new container
-function addContainer(){
-    var container = $("<div class='cont'>");
-    var sub_container = $("<div class='sub_cont'>").appendTo(container);
-    var imgs_container = $("<div class='imgs_cont'>").appendTo(container);
-    imgs_container.attr("ondragenter", "return false;")
-    .attr("ondragleave", "$(this).removeClass('over'); return false;")
-    .attr("ondragover", "$(this).addClass('over'); return false;")
-    .attr("ondrop", "$(this).removeClass('over'); return onDropTarget(this,event);");
-    
-    $("<div class='close_cont'>").appendTo(container);
-    $("<div class='number_cont'>"+ ($(".cont").size() + 1) +"</div>").appendTo(sub_container);
-    var text = $("<div class='text_cont' contenteditable>" + sankoreLang.enter + "</div>").appendTo(sub_container);
-    
-    $("<div class='add_img'>").appendTo(imgs_container);
-    $("<div class='clear'>").appendTo(imgs_container);
-    container.insertBefore($(".add_block"));
-}
-
-//add new img block
-function addTextBlock(dest){
-    var tmp = $("<div class='text_block'>").insertBefore(dest)
-    $("<div class='text_subblock' contenteditable='true'>" + sankoreLang.enter + "</div>").appendTo(tmp); 
-    $("<input type='hidden' value='0'/>").appendTo(tmp); 
-    $("<input type='checkbox' class='ch_box'/>").appendTo(tmp);
-    $("<div class='close_img'>").appendTo(tmp);
-}
-
-function refreshBlockNumbers(){
-    var i = 0;
-    $(".cont").each(function(){
-        $(this).find(".number_cont").text(++i);
-    })
-}
-
-function stringToXML(text){
-    if (window.ActiveXObject){
-        var doc=new ActiveXObject('Microsoft.XMLDOM');
-        doc.async='false';
-        doc.loadXML(text);
-    } else {
-        var parser=new DOMParser();
-        doc=parser.parseFromString(text,'text/xml');
-    }
-    return doc;
-}
-
-function onDropTarget(obj, event) {
-    if (event.dataTransfer) {
-        var format = "text/plain";
-        var textData = event.dataTransfer.getData(format);
-        if (!textData) {
-            alert(":(");
-        }
-        textData = stringToXML(textData);
-        var tmp = textData.getElementsByTagName("path")[0].firstChild.textContent;
-        var tmp_type = textData.getElementsByTagName("type")[0].firstChild.textContent;
-        tmp = tmp.substr(1, tmp.length); 
-        if(tmp_type.substr(0, 5) == "audio"){  
-            var img_tmp = $("<div class='img_block'>").insertBefore($(obj).find(".add_img"));
-            var audio_block = $("<div class='audio_block'>").appendTo(img_tmp)
-            $("<div class='close_img'>").appendTo(img_tmp);
-            $("<div class='play'>").appendTo(audio_block);
-            $("<div class='replay'>").appendTo(audio_block);
-            var source = $("<source/>").attr("src", "../../" + tmp);
-            var audio = $("<audio>").appendTo(audio_block);
-            audio.append(source);
-            $("<input type='hidden' value='0'/>").appendTo(img_tmp); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_tmp)
-        } else {
-            var img_block = $("<div class='img_block' style='text-align: center;'></div>").insertBefore($(obj).find(".add_img"));
-            $("<div class='close_img'>").appendTo(img_block);
-            $("<input type='hidden' value='0'/>").appendTo(img_block); 
-            $("<input type='checkbox' class='ch_box'/>").appendTo(img_block)
-            var tmp_img = $("<img src=\"../../" + tmp + "\" style=\"display: inline;\"/>").appendTo(img_block);
-            setTimeout(function(){
-                if(tmp_img.height() >= tmp_img.width())
-                    tmp_img.attr("height", "120");
-                else{
-                    tmp_img.attr("width","120");
-                    tmp_img.css("margin",(120 - tmp_img.height())/2 + "px 0");
-                }
-            }, 6);
-        }
-    }
-    else {
-        alert ("Your browser does not support the dataTransfer object.");
-    }
-    
-    if (event.stopPropagation) {
-        event.stopPropagation ();
-    }
-    else {
-        event.cancelBubble = true;
-    }
-    return false;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/config.xml
deleted file mode 100644
index 9e403b8..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://www.example.net/widgets/helloworld" 
-        version="1.0"
-        width="650"
-        height="320" 
-		ub:resizable="false">
-		
-		<name>Split a phrase</name>
-		<description>Split a phrase into words</description>
-		<preference name="skin"
-		            value="uniboard"/>
-		<content src="index.html"/> 
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/icon.png
deleted file mode 100644
index ffd2b41..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/index.html b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/index.html
deleted file mode 100644
index f44fb55..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/index.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="styles/app.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="scripts/app.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                if(lang != "en"){
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                            },
-                            200: function(){
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/index.html
deleted file mode 100644
index 9174c67..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="../../scripts/app.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);                     
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/scripts/wcontainer.js
deleted file mode 100644
index 60ad007..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/fr/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "Afficher", 
-    edit: "Modifier",
-    example: "Ceci est une série de mots à séparer correctement"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-	// some protecred variables
-	var thisInstance = this;
-	this.editMode = false;
-	var data = {}; // see setData and getData
-	
-	// widget size parameters
-	this.minHeight = 100;
-	this.minWidth = 400;
-	
-	// set to 0 for no max width restriction
-	this.maxWidth = 0;
-	
-	// links to the elements of the widget
-	this.elements = {};
-	
-	/*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-	this.create = function( containerID )
-	{
-		var html = 
-			'<div id="mp_setup">' +
-				'<div class="viewmode">' +
-					'<button>' + sankoreLang.edit + '</button>' +
-				'</div>' +
-				'<div class="editmode">' +
-					'<button>' + sankoreLang.view + '</button>' +
-				'</div>' +
-			'</div>' +
-			'<div id="mp_content">' +
-				'<div class="viewmode" id="mp_view">' +
-				'</div>' +
-				'<div class="editmode" id="mp_edit">' +
-				'</div>' +
-			'</div>';
-		
-		var container = $( containerID );
-		
-		container.append( html );
-		this.elements.edit = container.find( ".editmode" );
-		this.elements.view = container.find( ".viewmode" );
-		this.elements.container = container;
-		this.elements.subcontainer = container.find( "#mp_content" );
-		this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-		this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-		container.find( ".viewmode button" ).click( function(){
-			thisInstance.modeEdit();
-		} );
-		
-		container.find( ".editmode button" ).click( function(){
-			thisInstance.modeView();
-		} );
-	};
-	
-	
-	/*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-	this.setViewContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .viewmode" ).html( html );
-	};
-	
-	/*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-	this.setEditContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .editmode" ).html( html );
-	};
-	
-	
-	
-	/*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-	this.modeEdit = function()
-	{
-		this.onEditMode();
-		this.editMode = true;
-		this.elements.edit.removeClass( "hide" );
-		this.elements.view.addClass( "hide" );
-		
-		this.adjustSize();
-	};
-	this.modeView = function()
-	{
-		this.onViewMode();
-		this.editMode = false;
-		this.elements.edit.addClass( "hide" );
-		this.elements.view.removeClass( "hide" );
-		
-		this.adjustSize();
-	};
-	
-	
-	
-	/*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-	this.adjustSize = function( width, height )
-	{
-		// retrieve the arguments
-		if( arguments.length < 2 )
-		{
-			var s = ( this.editMode )? this.editSize() : this.viewSize();
-			var width = s.w;
-			var height = s.h;
-		}
-		
-		// check for validity
-		if( width + height == 0 )
-			return;
-		
-		// add view/edit bar height
-		if( !isSankore ){
-			height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-		}
-		
-		// apply min and max restrictions
-		width = Math.max( this.minWidth, width );
-		height = Math.max( this.minHeight, height );
-		if( this.maxWidth ){
-			width = Math.min( width, this.maxWidth );
-		}
-		
-		// if viewed as a widget, resize the window
-		if( !isBrowser )
-		{
-			var dw = this.getData( "dw" );
-			var dh = this.getData( "dh" );
-			
-			if( width == 0 ){
-				width = widget.width;
-			}
-			if( height == 0 ){
-				height = widget.height;
-			}
-			window.resizeTo( width + dw, height + dh );
-		}
-		
-		// resize the container
-		var params = {};
-		if( width != 0 ){
-			params.width = width;
-		}
-		if( height != 0 ){
-			params.height = height;
-		}
-		
-		this.elements.container.animate( params );
-		
-	};
-	
-	/*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-	this.setData = function( name, value ){
-		data[name] = value;
-	};
-	this.getData = function( name ){
-		if( typeof( data[name] ) == "undefined" ){
-			return null;
-		} else return data[name];
-	};
-	
-	
-	// redefinable methods
-	
-	/*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-	this.onEditMode = function(){
-		//
-	};
-	this.onViewMode = function(){
-		//
-	};
-	
-	/*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-	this.viewSize = function(){
-		return {
-			w: this.elements.containerView.outerWidth(),
-			h: this.elements.containerView.outerHeight()
-		};
-	};
-	this.editSize = function(){
-		return {
-			w: this.elements.containerEdit.outerWidth(),
-			h: this.elements.containerEdit.outerHeight()
-		};
-	};
-	
-	/*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-	this.checkAnswer = function()
-	{
-		//
-	};
-	
-	
-	// constructor end
-	
-	// if the constructor was called with a parameter,
-	// call create() automatically
-	if( arguments.length > 0 ){
-		this.create( containerID );
-	}
-	this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-	this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-	window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/index.html
deleted file mode 100644
index aac9ce9..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="../../scripts/app.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);                         
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/scripts/wcontainer.js
deleted file mode 100644
index df065b6..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/locales/ru/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "Показать", 
-    edit: "Изменить",
-    example: "это группа слов которую нужно разделить"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-	// some protecred variables
-	var thisInstance = this;
-	this.editMode = false;
-	var data = {}; // see setData and getData
-	
-	// widget size parameters
-	this.minHeight = 100;
-	this.minWidth = 400;
-	
-	// set to 0 for no max width restriction
-	this.maxWidth = 0;
-	
-	// links to the elements of the widget
-	this.elements = {};
-	
-	/*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-	this.create = function( containerID )
-	{
-		var html = 
-			'<div id="mp_setup">' +
-				'<div class="viewmode">' +
-					'<button>' + sankoreLang.edit + '</button>' +
-				'</div>' +
-				'<div class="editmode">' +
-					'<button>' + sankoreLang.view + '</button>' +
-				'</div>' +
-			'</div>' +
-			'<div id="mp_content">' +
-				'<div class="viewmode" id="mp_view">' +
-				'</div>' +
-				'<div class="editmode" id="mp_edit">' +
-				'</div>' +
-			'</div>';
-		
-		var container = $( containerID );
-		
-		container.append( html );
-		this.elements.edit = container.find( ".editmode" );
-		this.elements.view = container.find( ".viewmode" );
-		this.elements.container = container;
-		this.elements.subcontainer = container.find( "#mp_content" );
-		this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-		this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-		container.find( ".viewmode button" ).click( function(){
-			thisInstance.modeEdit();
-		} );
-		
-		container.find( ".editmode button" ).click( function(){
-			thisInstance.modeView();
-		} );
-	};
-	
-	
-	/*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-	this.setViewContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .viewmode" ).html( html );
-	};
-	
-	/*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-	this.setEditContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .editmode" ).html( html );
-	};
-	
-	
-	
-	/*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-	this.modeEdit = function()
-	{
-		this.onEditMode();
-		this.editMode = true;
-		this.elements.edit.removeClass( "hide" );
-		this.elements.view.addClass( "hide" );
-		
-		this.adjustSize();
-	};
-	this.modeView = function()
-	{
-		this.onViewMode();
-		this.editMode = false;
-		this.elements.edit.addClass( "hide" );
-		this.elements.view.removeClass( "hide" );
-		
-		this.adjustSize();
-	};
-	
-	
-	
-	/*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-	this.adjustSize = function( width, height )
-	{
-		// retrieve the arguments
-		if( arguments.length < 2 )
-		{
-			var s = ( this.editMode )? this.editSize() : this.viewSize();
-			var width = s.w;
-			var height = s.h;
-		}
-		
-		// check for validity
-		if( width + height == 0 )
-			return;
-		
-		// add view/edit bar height
-		if( !isSankore ){
-			height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-		}
-		
-		// apply min and max restrictions
-		width = Math.max( this.minWidth, width );
-		height = Math.max( this.minHeight, height );
-		if( this.maxWidth ){
-			width = Math.min( width, this.maxWidth );
-		}
-		
-		// if viewed as a widget, resize the window
-		if( !isBrowser )
-		{
-			var dw = this.getData( "dw" );
-			var dh = this.getData( "dh" );
-			
-			if( width == 0 ){
-				width = widget.width;
-			}
-			if( height == 0 ){
-				height = widget.height;
-			}
-			window.resizeTo( width + dw, height + dh );
-		}
-		
-		// resize the container
-		var params = {};
-		if( width != 0 ){
-			params.width = width;
-		}
-		if( height != 0 ){
-			params.height = height;
-		}
-		
-		this.elements.container.animate( params );
-		
-	};
-	
-	/*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-	this.setData = function( name, value ){
-		data[name] = value;
-	};
-	this.getData = function( name ){
-		if( typeof( data[name] ) == "undefined" ){
-			return null;
-		} else return data[name];
-	};
-	
-	
-	// redefinable methods
-	
-	/*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-	this.onEditMode = function(){
-		//
-	};
-	this.onViewMode = function(){
-		//
-	};
-	
-	/*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-	this.viewSize = function(){
-		return {
-			w: this.elements.containerView.outerWidth(),
-			h: this.elements.containerView.outerHeight()
-		};
-	};
-	this.editSize = function(){
-		return {
-			w: this.elements.containerEdit.outerWidth(),
-			h: this.elements.containerEdit.outerHeight()
-		};
-	};
-	
-	/*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-	this.checkAnswer = function()
-	{
-		//
-	};
-	
-	
-	// constructor end
-	
-	// if the constructor was called with a parameter,
-	// call create() automatically
-	if( arguments.length > 0 ){
-		this.create( containerID );
-	}
-	this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-	this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-	window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/app.js b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/app.js
deleted file mode 100644
index d09e0c8..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/app.js
+++ /dev/null
@@ -1,183 +0,0 @@
-
-
-
-function createElements( phrase )
-{
-    var s = '';
-    for( var i = 0; i < phrase.length; i++ )
-    {
-        ch = phrase.charAt( i );
-        if( ch == " " ){
-            ch = " ";
-        }
-		
-        s += '<div class="letter">' + ch + '</div>' +
-        '<div class="dash"> </div>';
-    }
-    return s;
-}
-
-
-$(document).ready(function()
-{
-    var w = new wcontainer( "#ub-widget" );
-    var sentence = "";
-        
-    if(window.sankore)
-        sentence = (sankore.preference("ordSplPhrases", ""))?sankore.preference("ordSplPhrases", ""):sankoreLang.example;
-    else
-        sentence = sankoreLang.example;
-    
-	
-    w.maxWidth = 600;
-	
-    w.setEditContent( '<div class="inputwrap"><textarea class="percent">' + sentence + '</textarea></div>' );
-    w.setViewContent( '<div class="upper"><div class="dash fixed">. </div></div>' );
-    w.setData( "dashWidth", w.elements.container.find( ".dash" ).outerWidth() );
-    w.setViewContent( '<div class="upper"><div class="dash fixed">M</div></div>' );
-    w.setData( "lineHeight", w.elements.container.find( ".dash" ).outerHeight() );
-    w.setViewContent( "" );
-	
-	
-    // onViewMode
-    w.onViewMode = function()
-    {
-        // clean up the text
-        var phrase = w.elements.container.find( "textarea" ).val()
-        .replace( /\r/g, '' ).replace( /\n/g, ' ' ).replace( /  /g, ' ' ).trim();
-		
-        // store the text
-        w.setData( "phrase", phrase );
-		
-        // remove all dots (they are to be set during the exercise)
-        phrase = phrase.replace( / /g, '' );
-		
-        // create the html
-        w.setViewContent( createElements( phrase ) );
-		
-		
-        // the behaviour
-        w.elements.containerView.find( ".letter" )
-        .mouseover( function()
-        {
-            var el = $( this ).next();
-			
-            // determine new hover class
-            var is_fixed = ( el.get( 0 ).className.indexOf( "fixed" ) != -1 );
-            var hover_class = is_fixed?
-            "dash_hover_fixed" : "dash_hover";
-			
-            // assign new hover class
-            el.addClass( hover_class )
-            .data( "hc", hover_class );
-        })
-        .mouseout( function()
-        {
-            var el = $( this ).next();
-            // remove current hover class
-            var hc = el.data( "hc" );
-            el.removeClass( hc );
-        })
-        .click( function()
-        {
-            var el = $( this ).next();
-			
-            // remove current hover class
-            $( this ).trigger( "mouseout" );
-			
-            // toggle fixed class
-            el.toggleClass( "fixed" );
-			
-            // determine new hover class
-            // assign new hover class
-            $( this ).trigger( "mouseover" );
-			
-            w.checkAnswer();
-            w.adjustSize();
-        });
-		
-        w.checkAnswer();
-    };
-	
-    // viewSize
-    w.viewSize = function()
-    {
-        var w = 0;
-        var h = 0;
-		
-        var dh = winstance.getData( "lineHeight" );
-        var dw = winstance.getData( "dashWidth" );
-		
-        winstance.elements.containerView.find( "div:visible" ).each( function()
-        {
-            w += $( this ).outerWidth();
-            h = Math.max( h, $( this ).outerHeight( true ) );
-        });
-		
-        var square = w*h;
-        h = Math.max( h, $( winstance.elements.containerView ).height() );
-		
-        if( winstance.maxWidth )
-        {
-            w = Math.min( w, winstance.maxWidth );
-            h = parseInt( square / w );
-        }
-		
-        return {
-            w: w, 
-            h: h+dh
-        };
-    };
-	
-    // editSize
-    w.editSize = function()
-    {
-        return {
-            w: winstance.elements.containerEdit.find( "textarea" ).parent().outerWidth( true ),
-            h: winstance.elements.containerEdit.find( "textarea" ).parent().outerHeight( true )
-        };
-    };
-	
-	
-    w.checkAnswer = function()
-    {
-        var phrase = "";
-        var ch = "";
-        this.elements.containerView.find( "div:visible" ).each( function()
-        {
-            if( this.className.indexOf( "fixed" ) != -1 ){
-                phrase += ' ';
-            }
-            else if( this.className.indexOf( "dash" ) != -1 ){
-                return;
-            }
-            else{
-                ch = $( this ).html();
-                phrase += ch;
-            }
-        });
-		
-        if( phrase == this.getData( "phrase" ) ){
-            this.elements.containerView.addClass( "answerRight" );
-        }
-        else{
-            this.elements.containerView.removeClass( "answerRight" );
-        }
-    };
-
-	
-    window.w = w;
-    window.winstance = w;
-	
-    w.modeView();
-    
-    if (window.widget) {
-        window.widget.onleave = function(){
-            if(w.editMode)
-                sankore.setPreference("ordSplPhrases", w.elements.container.find( "textarea" ).val());
-            else
-                sankore.setPreference("ordSplPhrases", w.getData("phrase"));
-        }
-    }
-	
-});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/ext.js b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/ext.js
deleted file mode 100644
index 5535b36..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/ext.js
+++ /dev/null
@@ -1,41 +0,0 @@
-Array.prototype.shuffle = function( b )
-{
-	var i = this.length, j, t;
-	while( i )
-	{
-		j = Math.floor( ( i-- ) * Math.random() );
-		t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
-		this[i] = this[j];
-		this[j] = t;
-	}
-	return this;
-};
-
-
-String.prototype.copy = function()
-{
-	return this.substring( 0, this.length );
-};
-
-String.prototype.trim = function( ext )
-{
-	var chars = [
-		" ", "\t", "\n", "\r"
-	];
-	
-	var s = this.copy();
-	
-	if( arguments.length > 0 ){
-		for( var i in ext ){
-			chars.push( ext[i] );
-		}
-	}
-	
-	while( chars.indexOf( s.charAt( 0 ) ) != -1 ){
-		s = s.substring( 1, s.length );
-	}
-	while( chars.indexOf( s.charAt( s.length-1 ) ) != -1 ){
-		s = s.substring( 0, s.length-1 );
-	}
-	return s;
-};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/wcontainer.js
deleted file mode 100644
index 228d230..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "View", 
-    edit: "Edit",
-    example: "this is a bunch of words which should be split apart"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-	// some protecred variables
-	var thisInstance = this;
-	this.editMode = false;
-	var data = {}; // see setData and getData
-	
-	// widget size parameters
-	this.minHeight = 100;
-	this.minWidth = 400;
-	
-	// set to 0 for no max width restriction
-	this.maxWidth = 0;
-	
-	// links to the elements of the widget
-	this.elements = {};
-	
-	/*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-	this.create = function( containerID )
-	{
-		var html = 
-			'<div id="mp_setup">' +
-				'<div class="viewmode">' +
-					'<button>' + sankoreLang.edit + '</button>' +
-				'</div>' +
-				'<div class="editmode">' +
-					'<button>' + sankoreLang.view + '</button>' +
-				'</div>' +
-			'</div>' +
-			'<div id="mp_content">' +
-				'<div class="viewmode" id="mp_view">' +
-				'</div>' +
-				'<div class="editmode" id="mp_edit">' +
-				'</div>' +
-			'</div>';
-		
-		var container = $( containerID );
-		
-		container.append( html );
-		this.elements.edit = container.find( ".editmode" );
-		this.elements.view = container.find( ".viewmode" );
-		this.elements.container = container;
-		this.elements.subcontainer = container.find( "#mp_content" );
-		this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-		this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-		container.find( ".viewmode button" ).click( function(){
-			thisInstance.modeEdit();
-		} );
-		
-		container.find( ".editmode button" ).click( function(){
-			thisInstance.modeView();
-		} );
-	};
-	
-	
-	/*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-	this.setViewContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .viewmode" ).html( html );
-	};
-	
-	/*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-	this.setEditContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .editmode" ).html( html );
-	};
-	
-	
-	
-	/*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-	this.modeEdit = function()
-	{
-		this.onEditMode();
-		this.editMode = true;
-		this.elements.edit.removeClass( "hide" );
-		this.elements.view.addClass( "hide" );
-		
-		this.adjustSize();
-	};
-	this.modeView = function()
-	{
-		this.onViewMode();
-		this.editMode = false;
-		this.elements.edit.addClass( "hide" );
-		this.elements.view.removeClass( "hide" );
-		
-		this.adjustSize();
-	};
-	
-	
-	
-	/*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-	this.adjustSize = function( width, height )
-	{
-		// retrieve the arguments
-		if( arguments.length < 2 )
-		{
-			var s = ( this.editMode )? this.editSize() : this.viewSize();
-			var width = s.w;
-			var height = s.h;
-		}
-		
-		// check for validity
-		if( width + height == 0 )
-			return;
-		
-		// add view/edit bar height
-		if( !isSankore ){
-			height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-		}
-		
-		// apply min and max restrictions
-		width = Math.max( this.minWidth, width );
-		height = Math.max( this.minHeight, height );
-		if( this.maxWidth ){
-			width = Math.min( width, this.maxWidth );
-		}
-		
-		// if viewed as a widget, resize the window
-		if( !isBrowser )
-		{
-			var dw = this.getData( "dw" );
-			var dh = this.getData( "dh" );
-			
-			if( width == 0 ){
-				width = widget.width;
-			}
-			if( height == 0 ){
-				height = widget.height;
-			}
-			window.resizeTo( width + dw, height + dh );
-		}
-		
-		// resize the container
-		var params = {};
-		if( width != 0 ){
-			params.width = width;
-		}
-		if( height != 0 ){
-			params.height = height;
-		}
-		
-		this.elements.container.animate( params );
-		
-	};
-	
-	/*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-	this.setData = function( name, value ){
-		data[name] = value;
-	};
-	this.getData = function( name ){
-		if( typeof( data[name] ) == "undefined" ){
-			return null;
-		} else return data[name];
-	};
-	
-	
-	// redefinable methods
-	
-	/*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-	this.onEditMode = function(){
-		//
-	};
-	this.onViewMode = function(){
-		//
-	};
-	
-	/*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-	this.viewSize = function(){
-		return {
-			w: this.elements.containerView.outerWidth(),
-			h: this.elements.containerView.outerHeight()
-		};
-	};
-	this.editSize = function(){
-		return {
-			w: this.elements.containerEdit.outerWidth(),
-			h: this.elements.containerEdit.outerHeight()
-		};
-	};
-	
-	/*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-	this.checkAnswer = function()
-	{
-		//
-	};
-	
-	
-	// constructor end
-	
-	// if the constructor was called with a parameter,
-	// call create() automatically
-	if( arguments.length > 0 ){
-		this.create( containerID );
-	}
-	this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-	this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-	window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/app.css b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/app.css
deleted file mode 100644
index 8df47fc..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/app.css
+++ /dev/null
@@ -1,39 +0,0 @@
-/* custom */
-
-#mp_view{
-	font-size: 24pt;
-	word-wrap: normal;
-}
-
-#mp_view div{
-	display: inline-block;
-	cursor: pointer;
-}
-
-#mp_view.answerRight div{
-	color: #00b8e4;
-}
-
-#mp_view div.dash{
-	display: none;
-	width: 30px;
-}
-
-#mp_view div.dash_hover{
-	display: inline-block;
-	background-image: url( "separator-hover.png" );
-}
-#mp_view div.dash_hover_fixed{
-	display: inline-block;
-	background-image: url( "separator-activated.png" );
-}
-
-#mp_view div.fixed{
-	display: inline-block;
-}
-
-
-#mp_edit textarea{
-	resize: none;
-	height: 60px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/master.css
deleted file mode 100644
index af8429c..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-phrase.wgt/styles/master.css
+++ /dev/null
@@ -1,44 +0,0 @@
-body{
-	background-color: #fff;
-	margin: 0px; padding: 0px;
-	font-family: arial;
-	font-size: 11pt;
-	color: #000;
-}
-
-
-h1{
-	font-size:18px;
-	margin-bottom:20px;
-	margin-top:0px;
-}
-#ub-widget{
-	background-color: white;
-	padding: 20px;
-	border: 3px solid #aaaaaa;
-	word-wrap: break-word;
-}
-
-input{
-	font-size: 14pt;
-}
-
-.inputbox{
-	width:50px;
-}
-
-button{
-	width: 80px;
-}
-
-input.percent, textarea.percent{
-	width: 100%;
-	margin: 0px; padding: 0px;
-	border-width: 0px;
-}
-.inputwrap{
-	border-style: solid;
-	border-width: 1px;
-	border-color: #dbdfe6;
-	border-top-color: #abadb3;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/config.xml
deleted file mode 100644
index 08f2ba2..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://www.example.net/widgets/helloworld" 
-        version="1.0"
-        width="650"
-        height="320" 
-		ub:resizable="false">
-		
-		<name>Split a text [alt]</name>
-		<description>Split a text into sentences</description>
-		<preference name="skin"
-		            value="uniboard"/>
-		<content src="index.html"/> 
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/icon.png
deleted file mode 100644
index ffd2b41..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/index.html b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/index.html
deleted file mode 100644
index 2321115..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/index.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="styles/app.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="scripts/app2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                
-                if(lang != "en"){
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                alert(lang)
-                            },
-                            200: function(){
-                                
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/index.html
deleted file mode 100644
index 8c2ccdb..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="../../scripts/app2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);                      
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/scripts/wcontainer.js
deleted file mode 100644
index 465f59f..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/fr/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "Afficher", 
-    edit: "Modifier",
-    example: "bonjour, ceci est la première phrase. salut, c'est la deuxième phrase. bonjour à nouveau, c'est la troisième phrase. bonjour, c'est la quatrième phrase. salut, désolé, je suis en retard, je suis la cinquième phrase."
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-    // some protecred variables
-    var thisInstance = this;
-    this.editMode = false;
-    var data = {}; // see setData and getData
-	
-    // widget size parameters
-    this.minHeight = 100;
-    this.minWidth = 400;
-	
-    // set to 0 for no max width restriction
-    this.maxWidth = 0;
-	
-    // links to the elements of the widget
-    this.elements = {};
-	
-    /*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-    this.create = function( containerID )
-    {
-        var html = 
-        '<div id="mp_setup">' +
-        '<div class="viewmode">' +
-        '<button>' + sankoreLang.edit + '</button>' +
-        '</div>' +
-        '<div class="editmode">' +
-        '<button>' + sankoreLang.view + '</button>' +
-        '</div>' +
-        '</div>' +
-        '<div id="mp_content">' +
-        '<div class="viewmode" id="mp_view">' +
-        '</div>' +
-        '<div class="editmode" id="mp_edit">' +
-        '</div>' +
-        '</div>';
-		
-        var container = $( containerID );
-		
-        container.append( html );
-        this.elements.edit = container.find( ".editmode" );
-        this.elements.view = container.find( ".viewmode" );
-        this.elements.container = container;
-        this.elements.subcontainer = container.find( "#mp_content" );
-        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-        container.find( ".viewmode button" ).click( function(){
-            thisInstance.modeEdit();
-        } );
-		
-        container.find( ".editmode button" ).click( function(){
-            thisInstance.modeView();
-        } );
-    };
-	
-	
-    /*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-    this.setViewContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .viewmode" ).html( html );
-    };
-	
-    /*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-    this.setEditContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .editmode" ).html( html );
-    };
-	
-	
-	
-    /*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-    this.modeEdit = function()
-    {
-        this.onEditMode();
-        this.editMode = true;
-        this.elements.edit.removeClass( "hide" );
-        this.elements.view.addClass( "hide" );
-		
-        this.adjustSize();
-    };
-    this.modeView = function()
-    {
-        this.onViewMode();
-        this.editMode = false;
-        this.elements.edit.addClass( "hide" );
-        this.elements.view.removeClass( "hide" );
-		
-        this.adjustSize();
-    };
-	
-	
-	
-    /*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-    this.adjustSize = function( width, height )
-    {
-        // retrieve the arguments
-        if( arguments.length < 2 )
-        {
-            var s = ( this.editMode )? this.editSize() : this.viewSize();
-            var width = s.w;
-            var height = s.h;
-        }
-		
-        // check for validity
-        if( width + height == 0 )
-            return;
-		
-        // add view/edit bar height
-        if( !isSankore ){
-            height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-        }
-		
-        // apply min and max restrictions
-        width = Math.max( this.minWidth, width );
-        height = Math.max( this.minHeight, height );
-        if( this.maxWidth ){
-            width = Math.min( width, this.maxWidth );
-        }
-		
-        // if viewed as a widget, resize the window
-        if( !isBrowser )
-        {
-            var dw = this.getData( "dw" );
-            var dh = this.getData( "dh" );
-			
-            if( width == 0 ){
-                width = widget.width;
-            }
-            if( height == 0 ){
-                height = widget.height;
-            }
-            window.resizeTo( width + dw, height + dh );
-        }
-		
-        // resize the container
-        var params = {};
-        if( width != 0 ){
-            params.width = width;
-        }
-        if( height != 0 ){
-            params.height = height;
-        }
-		
-        this.elements.container.animate( params );
-		
-    };
-	
-    /*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-    this.setData = function( name, value ){
-        data[name] = value;
-    };
-    this.getData = function( name ){
-        if( typeof( data[name] ) == "undefined" ){
-            return null;
-        } else return data[name];
-    };
-	
-	
-    // redefinable methods
-	
-    /*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-    this.onEditMode = function(){
-    //
-    };
-    this.onViewMode = function(){
-    //
-    };
-	
-    /*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-    this.viewSize = function(){
-        return {
-            w: this.elements.containerView.outerWidth(),
-            h: this.elements.containerView.outerHeight()
-        };
-    };
-    this.editSize = function(){
-        return {
-            w: this.elements.containerEdit.outerWidth(),
-            h: this.elements.containerEdit.outerHeight()
-        };
-    };
-	
-    /*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-    this.checkAnswer = function()
-    {
-    //
-    };
-	
-	
-    // constructor end
-	
-    // if the constructor was called with a parameter,
-    // call create() automatically
-    if( arguments.length > 0 ){
-        this.create( containerID );
-    }
-    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-    window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/index.html
deleted file mode 100644
index 8c2ccdb..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/app.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="../../scripts/app2.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);                      
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/scripts/wcontainer.js
deleted file mode 100644
index 2694b4f..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/locales/ru/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "Показать", 
-    edit: "Изменить",
-    example: "привет, это первое предложение. а это второе предложение. и снова привет, это третье предложение. добрый день, это четвертое предложение. привет, извини, но я последнее предложение."
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-    // some protecred variables
-    var thisInstance = this;
-    this.editMode = false;
-    var data = {}; // see setData and getData
-	
-    // widget size parameters
-    this.minHeight = 100;
-    this.minWidth = 400;
-	
-    // set to 0 for no max width restriction
-    this.maxWidth = 0;
-	
-    // links to the elements of the widget
-    this.elements = {};
-	
-    /*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-    this.create = function( containerID )
-    {
-        var html = 
-        '<div id="mp_setup">' +
-        '<div class="viewmode">' +
-        '<button>' + sankoreLang.edit + '</button>' +
-        '</div>' +
-        '<div class="editmode">' +
-        '<button>' + sankoreLang.view + '</button>' +
-        '</div>' +
-        '</div>' +
-        '<div id="mp_content">' +
-        '<div class="viewmode" id="mp_view">' +
-        '</div>' +
-        '<div class="editmode" id="mp_edit">' +
-        '</div>' +
-        '</div>';
-		
-        var container = $( containerID );
-		
-        container.append( html );
-        this.elements.edit = container.find( ".editmode" );
-        this.elements.view = container.find( ".viewmode" );
-        this.elements.container = container;
-        this.elements.subcontainer = container.find( "#mp_content" );
-        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-        container.find( ".viewmode button" ).click( function(){
-            thisInstance.modeEdit();
-        } );
-		
-        container.find( ".editmode button" ).click( function(){
-            thisInstance.modeView();
-        } );
-    };
-	
-	
-    /*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-    this.setViewContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .viewmode" ).html( html );
-    };
-	
-    /*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-    this.setEditContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .editmode" ).html( html );
-    };
-	
-	
-	
-    /*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-    this.modeEdit = function()
-    {
-        this.onEditMode();
-        this.editMode = true;
-        this.elements.edit.removeClass( "hide" );
-        this.elements.view.addClass( "hide" );
-		
-        this.adjustSize();
-    };
-    this.modeView = function()
-    {
-        this.onViewMode();
-        this.editMode = false;
-        this.elements.edit.addClass( "hide" );
-        this.elements.view.removeClass( "hide" );
-		
-        this.adjustSize();
-    };
-	
-	
-	
-    /*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-    this.adjustSize = function( width, height )
-    {
-        // retrieve the arguments
-        if( arguments.length < 2 )
-        {
-            var s = ( this.editMode )? this.editSize() : this.viewSize();
-            var width = s.w;
-            var height = s.h;
-        }
-		
-        // check for validity
-        if( width + height == 0 )
-            return;
-		
-        // add view/edit bar height
-        if( !isSankore ){
-            height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-        }
-		
-        // apply min and max restrictions
-        width = Math.max( this.minWidth, width );
-        height = Math.max( this.minHeight, height );
-        if( this.maxWidth ){
-            width = Math.min( width, this.maxWidth );
-        }
-		
-        // if viewed as a widget, resize the window
-        if( !isBrowser )
-        {
-            var dw = this.getData( "dw" );
-            var dh = this.getData( "dh" );
-			
-            if( width == 0 ){
-                width = widget.width;
-            }
-            if( height == 0 ){
-                height = widget.height;
-            }
-            window.resizeTo( width + dw, height + dh );
-        }
-		
-        // resize the container
-        var params = {};
-        if( width != 0 ){
-            params.width = width;
-        }
-        if( height != 0 ){
-            params.height = height;
-        }
-		
-        this.elements.container.animate( params );
-		
-    };
-	
-    /*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-    this.setData = function( name, value ){
-        data[name] = value;
-    };
-    this.getData = function( name ){
-        if( typeof( data[name] ) == "undefined" ){
-            return null;
-        } else return data[name];
-    };
-	
-	
-    // redefinable methods
-	
-    /*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-    this.onEditMode = function(){
-    //
-    };
-    this.onViewMode = function(){
-    //
-    };
-	
-    /*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-    this.viewSize = function(){
-        return {
-            w: this.elements.containerView.outerWidth(),
-            h: this.elements.containerView.outerHeight()
-        };
-    };
-    this.editSize = function(){
-        return {
-            w: this.elements.containerEdit.outerWidth(),
-            h: this.elements.containerEdit.outerHeight()
-        };
-    };
-	
-    /*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-    this.checkAnswer = function()
-    {
-    //
-    };
-	
-	
-    // constructor end
-	
-    // if the constructor was called with a parameter,
-    // call create() automatically
-    if( arguments.length > 0 ){
-        this.create( containerID );
-    }
-    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-    window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/app2.js b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/app2.js
deleted file mode 100644
index e6c8eea..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/app2.js
+++ /dev/null
@@ -1,193 +0,0 @@
-
-
-
-function createElements( text )
-{
-    var s = '';
-	
-    var words = text.split( " " );
-	
-    for( var i = 0; i < words.length; i++ )
-    {
-        if( i ){
-            s += '<div> </div>';
-        }
-        s += '<div class="letter">' + words[i] + '</div>' + 
-        '<div class="dash">.</div>';
-    }
-	
-    return s;
-}
-
-
-$(document).ready(function()
-{
-    var w = new wcontainer( "#ub-widget" );
-    
-    var sentences = "";
-    
-    if(window.sankore)
-        sentences = (sankore.preference("ordSplText", ""))?sankore.preference("ordSplText", ""):sankoreLang.example;
-    else
-        sentences = sankoreLang.example;
-    
-    w.maxWidth = 600;
-	
-    w.setEditContent( '<div class="inputwrap"><textarea class="percent">' + sentences + '</textarea></div>' );
-    w.setViewContent( '<div class="upper"><div class="dash fixed">. </div></div>' );
-    w.setData( "dashWidth", w.elements.container.find( ".dash" ).outerWidth() );
-    w.setViewContent( '<div class="upper"><div class="dash fixed">M</div></div>' );
-    w.setData( "lineHeight", w.elements.container.find( ".dash" ).outerHeight() );
-    w.setViewContent( "" );
-	
-	
-    // onViewMode
-    w.onViewMode = function()
-    {
-        // clean up the text
-        var text = w.elements.container.find( "textarea" ).val()
-        .replace( /\r/g, '' ).replace( /\n/g, ' ' ).replace( /  /g, ' ' );
-		
-        // store the text
-        w.setData( "text", text );
-		
-        // remove all dots (they are to be set during the exercise)
-        text = text.replace( /\. /g, ' ' ).trim( ["."] );
-		
-        // create the html
-        w.setViewContent( createElements( text ) );
-		
-        // the behaviour
-        w.elements.containerView.find( ".letter" )
-        .mouseover( function()
-        {
-            var el = $( this ).next();
-			
-            // determine new hover class
-            var is_fixed = ( el.get( 0 ).className.indexOf( "fixed" ) != -1 );
-            var hover_class = is_fixed?
-            "dash_hover_fixed" : "dash_hover";
-			
-            // assign new hover class
-            el.addClass( hover_class )
-            .data( "hc", hover_class );
-        })
-        .mouseout( function()
-        {
-            var el = $( this ).next();
-            // remove current hover class
-            var hc = el.data( "hc" );
-            el.removeClass( hc );
-        })
-        .click( function()
-        {
-            var el = $( this ).next();
-			
-            // remove current hover class
-            $( this ).trigger( "mouseout" );
-			
-            // toggle fixed class
-            el.toggleClass( "fixed" );
-			
-            // determine new hover class
-            // assign new hover class
-            $( this ).trigger( "mouseover" );
-			
-            w.checkAnswer();
-            w.adjustSize();
-        });
-		
-        w.checkAnswer();
-    };
-	
-    // viewSize
-    w.viewSize = function()
-    {
-        var w = 0;
-        var h = 0;
-		
-        var dh = winstance.getData( "lineHeight" );
-        var dw = winstance.getData( "dashWidth" );
-		
-        winstance.elements.containerView.find( "div:visible" ).each( function()
-        {
-            w += $( this ).outerWidth();
-            h = Math.max( h, $( this ).outerHeight( true ) );
-        });
-		
-        var square = w*h;
-        h = Math.max( h, $( winstance.elements.containerView ).height() );
-		
-        if( winstance.maxWidth )
-        {
-            w = Math.min( w, winstance.maxWidth );
-            h = parseInt( square / w );
-        }
-		
-        return {
-            w: w, 
-            h: h+dh
-        };
-    };
-	
-    // editSize
-    w.editSize = function()
-    {
-        return {
-            w: winstance.elements.containerEdit.find( "textarea" ).parent().outerWidth( true ),
-            h: winstance.elements.containerEdit.find( "textarea" ).parent().outerHeight( true ),
-        };
-    };
-	
-	
-    w.checkAnswer = function()
-    {
-        var text = "";
-        var ch = "";
-        this.elements.containerView.find( "div:visible" ).each( function()
-        {
-            if( this.className.indexOf( "fixed" ) != -1 ){
-                text += '.';
-            }
-            else if( this.className.indexOf( "dash" ) != -1 ){
-                return;
-            }
-            else{
-                ch = $( this ).html();
-                if( ch == " " ){
-                    ch = " ";
-                }
-                text += ch;
-            }
-        });
-		
-        if( text == this.getData( "text" ) ){
-            this.elements.containerView.addClass( "answerRight" );
-        }
-        else{
-            this.elements.containerView.removeClass( "answerRight" );
-        }
-    };
-
-	
-    window.w = w;
-    window.winstance = w;
-	
-    w.modeView();
-    
-    $(window).mouseout(function(){
-        if(window.sankore){
-            sankore.setPreference("ordSplText", w.getData( "text" ));
-        }
-    });
-    
-    if (window.widget) {
-        window.widget.onleave = function(){
-            if(w.editMode)
-                sankore.setPreference("ordSplText", w.elements.container.find( "textarea" ).val());
-            else
-                sankore.setPreference("ordSplText", w.getData( "text" ));
-        }
-    }
-	
-});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/ext.js b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/ext.js
deleted file mode 100644
index 5535b36..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/ext.js
+++ /dev/null
@@ -1,41 +0,0 @@
-Array.prototype.shuffle = function( b )
-{
-	var i = this.length, j, t;
-	while( i )
-	{
-		j = Math.floor( ( i-- ) * Math.random() );
-		t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
-		this[i] = this[j];
-		this[j] = t;
-	}
-	return this;
-};
-
-
-String.prototype.copy = function()
-{
-	return this.substring( 0, this.length );
-};
-
-String.prototype.trim = function( ext )
-{
-	var chars = [
-		" ", "\t", "\n", "\r"
-	];
-	
-	var s = this.copy();
-	
-	if( arguments.length > 0 ){
-		for( var i in ext ){
-			chars.push( ext[i] );
-		}
-	}
-	
-	while( chars.indexOf( s.charAt( 0 ) ) != -1 ){
-		s = s.substring( 1, s.length );
-	}
-	while( chars.indexOf( s.charAt( s.length-1 ) ) != -1 ){
-		s = s.substring( 0, s.length-1 );
-	}
-	return s;
-};
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/wcontainer.js
deleted file mode 100644
index eec5738..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "View", 
-    edit: "Edit",
-    example: "hello, this is the first sentence. hi, this is the second sentence. hello again, this is the third sentence. good morning, this is the fourth sentence. hi, sorry, i\'m late, i\'m the fifth sentence."
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-    // some protecred variables
-    var thisInstance = this;
-    this.editMode = false;
-    var data = {}; // see setData and getData
-	
-    // widget size parameters
-    this.minHeight = 100;
-    this.minWidth = 400;
-	
-    // set to 0 for no max width restriction
-    this.maxWidth = 0;
-	
-    // links to the elements of the widget
-    this.elements = {};
-	
-    /*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-    this.create = function( containerID )
-    {
-        var html = 
-        '<div id="mp_setup">' +
-        '<div class="viewmode">' +
-        '<button>' + sankoreLang.edit + '</button>' +
-        '</div>' +
-        '<div class="editmode">' +
-        '<button>' + sankoreLang.view + '</button>' +
-        '</div>' +
-        '</div>' +
-        '<div id="mp_content">' +
-        '<div class="viewmode" id="mp_view">' +
-        '</div>' +
-        '<div class="editmode" id="mp_edit">' +
-        '</div>' +
-        '</div>';
-		
-        var container = $( containerID );
-		
-        container.append( html );
-        this.elements.edit = container.find( ".editmode" );
-        this.elements.view = container.find( ".viewmode" );
-        this.elements.container = container;
-        this.elements.subcontainer = container.find( "#mp_content" );
-        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-        container.find( ".viewmode button" ).click( function(){
-            thisInstance.modeEdit();
-        } );
-		
-        container.find( ".editmode button" ).click( function(){
-            thisInstance.modeView();
-        } );
-    };
-	
-	
-    /*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-    this.setViewContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .viewmode" ).html( html );
-    };
-	
-    /*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-    this.setEditContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .editmode" ).html( html );
-    };
-	
-	
-	
-    /*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-    this.modeEdit = function()
-    {
-        this.onEditMode();
-        this.editMode = true;
-        this.elements.edit.removeClass( "hide" );
-        this.elements.view.addClass( "hide" );
-		
-        this.adjustSize();
-    };
-    this.modeView = function()
-    {
-        this.onViewMode();
-        this.editMode = false;
-        this.elements.edit.addClass( "hide" );
-        this.elements.view.removeClass( "hide" );
-		
-        this.adjustSize();
-    };
-	
-	
-	
-    /*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-    this.adjustSize = function( width, height )
-    {
-        // retrieve the arguments
-        if( arguments.length < 2 )
-        {
-            var s = ( this.editMode )? this.editSize() : this.viewSize();
-            var width = s.w;
-            var height = s.h;
-        }
-		
-        // check for validity
-        if( width + height == 0 )
-            return;
-		
-        // add view/edit bar height
-        if( !isSankore ){
-            height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-        }
-		
-        // apply min and max restrictions
-        width = Math.max( this.minWidth, width );
-        height = Math.max( this.minHeight, height );
-        if( this.maxWidth ){
-            width = Math.min( width, this.maxWidth );
-        }
-		
-        // if viewed as a widget, resize the window
-        if( !isBrowser )
-        {
-            var dw = this.getData( "dw" );
-            var dh = this.getData( "dh" );
-			
-            if( width == 0 ){
-                width = widget.width;
-            }
-            if( height == 0 ){
-                height = widget.height;
-            }
-            window.resizeTo( width + dw, height + dh );
-        }
-		
-        // resize the container
-        var params = {};
-        if( width != 0 ){
-            params.width = width;
-        }
-        if( height != 0 ){
-            params.height = height;
-        }
-		
-        this.elements.container.animate( params );
-		
-    };
-	
-    /*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-    this.setData = function( name, value ){
-        data[name] = value;
-    };
-    this.getData = function( name ){
-        if( typeof( data[name] ) == "undefined" ){
-            return null;
-        } else return data[name];
-    };
-	
-	
-    // redefinable methods
-	
-    /*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-    this.onEditMode = function(){
-    //
-    };
-    this.onViewMode = function(){
-    //
-    };
-	
-    /*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-    this.viewSize = function(){
-        return {
-            w: this.elements.containerView.outerWidth(),
-            h: this.elements.containerView.outerHeight()
-        };
-    };
-    this.editSize = function(){
-        return {
-            w: this.elements.containerEdit.outerWidth(),
-            h: this.elements.containerEdit.outerHeight()
-        };
-    };
-	
-    /*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-    this.checkAnswer = function()
-    {
-    //
-    };
-	
-	
-    // constructor end
-	
-    // if the constructor was called with a parameter,
-    // call create() automatically
-    if( arguments.length > 0 ){
-        this.create( containerID );
-    }
-    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-    window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/app.css b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/app.css
deleted file mode 100644
index 6f14b1d..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/app.css
+++ /dev/null
@@ -1,39 +0,0 @@
-/* custom */
-
-#mp_view{
-	font-size: 24pt;
-	word-wrap: normal;
-}
-
-#mp_view div{
-	display: inline-block;
-	cursor: pointer;
-}
-
-#mp_view.answerRight div{
-	color: #00b8e4;
-}
-
-#mp_view div.dash{
-	display: none;
-	width: 30px;
-}
-
-#mp_view div.dash_hover{
-	display: inline-block;
-	background-image: url( "separator-hover.png" );
-}
-#mp_view div.dash_hover_fixed{
-	display: inline-block;
-	background-image: url( "separator-activated.png" );
-}
-
-#mp_view div.fixed{
-	display: inline-block;
-}
-
-
-#mp_edit textarea{
-	resize: none;
-	height: 100px;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/master.css
deleted file mode 100644
index af8429c..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/master.css
+++ /dev/null
@@ -1,44 +0,0 @@
-body{
-	background-color: #fff;
-	margin: 0px; padding: 0px;
-	font-family: arial;
-	font-size: 11pt;
-	color: #000;
-}
-
-
-h1{
-	font-size:18px;
-	margin-bottom:20px;
-	margin-top:0px;
-}
-#ub-widget{
-	background-color: white;
-	padding: 20px;
-	border: 3px solid #aaaaaa;
-	word-wrap: break-word;
-}
-
-input{
-	font-size: 14pt;
-}
-
-.inputbox{
-	width:50px;
-}
-
-button{
-	width: 80px;
-}
-
-input.percent, textarea.percent{
-	width: 100%;
-	margin: 0px; padding: 0px;
-	border-width: 0px;
-}
-.inputwrap{
-	border-style: solid;
-	border-width: 1px;
-	border-color: #dbdfe6;
-	border-top-color: #abadb3;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/wcontainer.css b/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/wcontainer.css
deleted file mode 100644
index 86faa54..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-text.wgt/styles/wcontainer.css
+++ /dev/null
@@ -1,19 +0,0 @@
-/* frame */
-
-#mp_setup{
-	text-align: right;
-}
-
-#mp_content{
-	margin-top: 5px;
-}
-
-.viewmode{
-	/* empty */
-}
-.editmode{
-	/* empty */
-}
-.hide{
-	display: none;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/config.xml b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/config.xml
deleted file mode 100644
index 94b9034..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/config.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<widget xmlns="http://www.w3.org/ns/widgets" 
-		xmlns:ub="http://uniboard.mnemis.com/widgets"
-        id="http://www.example.net/widgets/helloworld" 
-        version="1.0"
-        width="650"
-        height="320" 
-		ub:resizable="false">
-		
-		<name>Split a word</name>
-		<description>Split a word into syllables</description>
-		<preference name="skin"
-		            value="uniboard"/>
-		<content src="index.html"/> 
-</widget>
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/icon.png b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/icon.png
deleted file mode 100644
index ffd2b41..0000000
Binary files a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/icon.png and /dev/null differ
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/index.html b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/index.html
deleted file mode 100644
index a00f049..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/index.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="styles/master.css">
-        <link rel="stylesheet" type="text/css" href="styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="styles/spl-word.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="scripts/spl-word.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);
-                var lang = ""; //locale language
-                if(window.sankore){
-                    lang = sankore.locale().substr(0,2);    
-                } else 
-                    lang = "en";
-                
-                if(lang != "en"){
-                    returnStatus(lang);
-                }
-                
-                function returnStatus(lang){
-                    $.ajax({
-                        type: 'POST',
-                        url:'locales/' + lang + '/index.html',
-                        statusCode: {
-                            404: function() {
-                                alert(lang)
-                            },
-                            200: function(){                                
-                                window.location.href = 'locales/' + lang + '/index.html';
-                            }
-                        }
-                    });                    
-                }                
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/index.html b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/index.html
deleted file mode 100644
index dfa88c8..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/spl-word.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="../../scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="../../scripts/spl-word.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);                           
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/scripts/wcontainer.js
deleted file mode 100644
index f2ad883..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/fr/scripts/wcontainer.js
+++ /dev/null
@@ -1,259 +0,0 @@
-var sankoreLang = {
-    view: "Afficher", 
-    edit: "Modifier",
-    example: "so*phis*ti*qué"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-    // some protecred variables
-    var thisInstance = this;
-    this.editMode = false;
-    var data = {}; // see setData and getData
-	
-    // widget size parameters
-    this.minHeight = 100;
-    this.minWidth = 400;
-	
-    // set to 0 for no max width restriction
-    this.maxWidth = 0;
-	
-    // links to the elements of the widget
-    this.elements = {};
-	
-    /*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-    this.create = function( containerID )
-    {
-        var html = 
-        '<div id="mp_setup">' +
-        '<div class="viewmode">' +
-        '<button>' + sankoreLang.edit + '</button>' +
-        '</div>' +
-        '<div class="editmode">' +
-        '<button>' + sankoreLang.view + '</button>' +
-        '</div>' +
-        '</div>' +
-        '<div id="mp_content">' +
-        '<div class="viewmode" id="mp_view">' +
-        '</div>' +
-        '<div class="editmode" id="mp_edit">' +
-        '</div>' +
-        '</div>';
-		
-        var container = $( containerID );
-		
-        container.append( html );
-        this.elements.edit = container.find( ".editmode" );
-        this.elements.view = container.find( ".viewmode" );
-        this.elements.container = container;
-        this.elements.subcontainer = container.find( "#mp_content" );
-        this.elements.containerView = this.elements.subcontainer.find( ".viewmode" );
-        this.elements.containerEdit = this.elements.subcontainer.find( ".editmode" );
-		
-        container.find( ".viewmode button" ).click( function(){
-            thisInstance.modeEdit();
-        } );
-		
-        container.find( ".editmode button" ).click( function(){
-            thisInstance.modeView();
-        } );
-    };
-	
-	
-    /*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-    this.setViewContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .viewmode" ).html( html );
-    };
-	
-    /*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-    this.setEditContent = function( html )
-    {
-        this.elements.container.find( "#mp_content .editmode" ).html( html );
-    };
-	
-	
-	
-    /*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-    this.modeEdit = function()
-    {
-        this.onEditMode();
-        this.editMode = true;
-        this.elements.edit.removeClass( "hide" );
-        this.elements.view.addClass( "hide" );
-		
-        this.adjustSize();
-    };
-    this.modeView = function()
-    {
-        this.onViewMode();
-        this.editMode = false;
-        this.elements.edit.addClass( "hide" );
-        this.elements.view.removeClass( "hide" );
-		
-        this.adjustSize();
-    };
-	
-	
-	
-    /*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-    this.adjustSize = function( width, height )
-    {
-        // retrieve the arguments
-        if( arguments.length < 2 )
-        {
-            var s = ( this.editMode )? this.editSize() : this.viewSize();
-            var width = s.w;
-            var height = s.h;
-        }
-		
-        // check for validity
-        if( width + height == 0 )
-            return;
-		
-        // add view/edit bar height
-        if( !isSankore ){
-            height += $( this.elements.container ).find( "#mp_setup" ).outerHeight();
-        }
-		
-        // apply min and max restrictions
-        width = Math.max( this.minWidth, width );
-        height = Math.max( this.minHeight, height );
-        if( this.maxWidth ){
-            width = Math.min( width, this.maxWidth );
-        }
-		
-        // if viewed as a widget, resize the window
-        if( !isBrowser )
-        {
-            var dw = this.getData( "dw" );
-            var dh = this.getData( "dh" );
-			
-            if( width == 0 ){
-                width = widget.width;
-            }
-            if( height == 0 ){
-                height = widget.height;
-            }
-            window.resizeTo( width + dw, height + dh );
-        }
-		
-        // resize the container
-        var params = {};
-        if( width != 0 ){
-            params.width = width;
-        }
-        if( height != 0 ){
-            params.height = height;
-        }
-		
-        this.elements.container.animate( params );
-		
-    };
-	
-    /*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-    this.setData = function( name, value ){
-        data[name] = value;
-    };
-    this.getData = function( name ){
-        if( typeof( data[name] ) == "undefined" ){
-            return null;
-        } else return data[name];
-    };
-	
-	
-    // redefinable methods
-	
-    /*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-    this.onEditMode = function(){
-    //
-    };
-    this.onViewMode = function(){
-    //
-    };
-	
-    /*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-    this.viewSize = function(){
-        return {
-            w: this.elements.containerView.outerWidth(),
-            h: this.elements.containerView.outerHeight()
-        };
-    };
-    this.editSize = function(){
-        return {
-            w: this.elements.containerEdit.outerWidth(),
-            h: this.elements.containerEdit.outerHeight()
-        };
-    };
-	
-    /*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-    this.checkAnswer = function()
-    {
-    //
-    };
-	
-	
-    // constructor end
-	
-    // if the constructor was called with a parameter,
-    // call create() automatically
-    if( arguments.length > 0 ){
-        this.create( containerID );
-    }
-    this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-    this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-    window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/index.html b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/index.html
deleted file mode 100644
index dfa88c8..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-        <title>Template</title>
-
-        <!--Styles-->
-        <link rel="stylesheet" type="text/css" href="../../styles/master.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/wcontainer.css">
-        <link rel="stylesheet" type="text/css" href="../../styles/spl-word.css">
-        <!--Scripts-->
-        <script type="text/javascript" src="../../scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript" src="../../scripts/jquery-ui-1.8.9.custom.min.js"></script>
-        <script type="text/javascript" src="../../scripts/ext.js"></script>
-        <script type="text/javascript" src="scripts/wcontainer.js"></script>
-        <script type="text/javascript" src="../../scripts/spl-word.js"></script>
-        <script type="text/javascript">
-            $(document).ready(function(){
-                if(window.sankore)
-                    sankore.enableDropOnWidget(false);                           
-            });
-        </script>
-    </head>
-
-    <body>
-        <div id="ub-widget">
-
-        </div>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/scripts/wcontainer.js
deleted file mode 100644
index c883af5..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/locales/ru/scripts/wcontainer.js
+++ /dev/null
@@ -1,244 +0,0 @@
-var sankoreLang = {
-    view: "Показать", 
-    edit: "Изменить",
-    example: "слож*ный"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-	// some protecred variables
-	var thisInstance = this;
-	this.editMode = false;
-	var data = {}; // see setData and getData
-	
-	// widget size parameters
-	this.minHeight = 100;
-	this.minWidth = 400;
-	
-	// links to the elements of the widget
-	this.elements = {};
-	
-	/*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-	this.create = function( containerID )
-	{
-		var html = 
-			'<div id="mp_setup">' +
-				'<div class="viewmode">' +
-					'<button>' + sankoreLang.edit + '</button>' +
-				'</div>' +
-				'<div class="editmode">' +
-					'<button>' + sankoreLang.view + '</button>' +
-				'</div>' +
-			'</div>' +
-			'<div id="mp_content">' +
-				'<div class="viewmode">' +
-				'</div>' +
-				'<div class="editmode">' +
-				'</div>' +
-			'</div>';
-		
-		var container = $( containerID );
-		
-		container.append( html );
-		this.elements.edit = container.find( ".editmode" );
-		this.elements.view = container.find( ".viewmode" );
-		this.elements.container = container;
-		this.elements.containerView = container.find( "#mp_content .viewmode" );
-		this.elements.containerEdit = container.find( "#mp_content .editmode" );
-		
-		container.find( ".viewmode button" ).click( function(){
-			thisInstance.modeEdit();
-		} );
-		
-		container.find( ".editmode button" ).click( function(){
-			thisInstance.modeView();
-		} );
-	};
-	
-	
-	/*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-	this.setViewContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .viewmode" ).html( html );
-	};
-	
-	/*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-	this.setEditContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .editmode" ).html( html );
-	};
-	
-	
-	
-	/*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-	this.modeEdit = function()
-	{
-		this.onEditMode();
-		this.editMode = true;
-		this.elements.edit.removeClass( "hide" );
-		this.elements.view.addClass( "hide" );
-		
-		this.adjustSize();
-	};
-	this.modeView = function()
-	{
-		this.onViewMode();
-		this.editMode = false;
-		this.elements.edit.addClass( "hide" );
-		this.elements.view.removeClass( "hide" );
-		
-		this.adjustSize();
-	};
-	
-	
-	
-	/*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-	this.adjustSize = function( width, height )
-	{
-		if( arguments.length < 2 )
-		{
-			var s = ( this.editMode )? this.editSize() : this.viewSize();
-			var width = s.w;
-			var height = s.h;
-		}
-		
-		if( width + height == 0 )
-			return;
-		
-		width = Math.max( this.minWidth, width );
-		height = Math.max( this.minHeight, height );
-		
-		// if viewed as a widget, resize the window
-		if( !isBrowser )
-		{
-			var dw = this.getData( "dw" );
-			var dh = this.getData( "dh" );
-			
-			if( width == 0 ){
-				width = widget.width;
-			}
-			if( height == 0 ){
-				height = widget.height;
-			}
-			window.resizeTo( width + dw, height + dh );
-		}
-		
-		var params = {};
-		
-		if( width != 0 ){
-			params.width = width;
-		}
-		if( height != 0 ){
-			params.height = height;
-		}
-		
-		this.elements.container.animate( params );
-		
-	};
-	
-	/*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-	this.setData = function( name, value ){
-		data[name] = value;
-	};
-	this.getData = function( name ){
-		if( typeof( data[name] ) == "undefined" ){
-			return null;
-		} else return data[name];
-	};
-	
-	
-	// redefinable methods
-	
-	/*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-	this.onEditMode = function(){
-		//
-	};
-	this.onViewMode = function(){
-		//
-	};
-	
-	/*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-	this.viewSize = function(){
-		return {
-			w: this.elements.containerView.outerWidth(),
-			h: this.elements.containerView.outerHeight()
-		};
-	};
-	this.editSize = function(){
-		return {
-			w: this.elements.containerEdit.outerWidth(),
-			h: this.elements.containerEdit.outerHeight()
-		};
-	};
-	
-	/*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-	this.checkAnswer = function()
-	{
-		//
-	};
-	
-	
-	// constructor end
-	
-	// if the constructor was called with a parameter,
-	// call create() automatically
-	if( arguments.length > 0 ){
-		this.create( containerID );
-	}
-	this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-	this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-	window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-1.6.2.min.js
deleted file mode 100644
index 48590ec..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-1.6.2.min.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*!
- * 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
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-ui-1.8.9.custom.min.js b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-ui-1.8.9.custom.min.js
deleted file mode 100644
index 45cc274..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/jquery-ui-1.8.9.custom.min.js
+++ /dev/null
@@ -1,781 +0,0 @@
-/*!
- * jQuery UI 1.8.9
- *
- * 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(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.9",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}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,
-"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");
-if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,
-"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,
-d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});
-c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&
-b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
-;/*!
- * jQuery UI Widget 1.8.9
- *
- * 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(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
-a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
-e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
-this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.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(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
-enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
-;/*!
- * jQuery UI Mouse 1.8.9
- *
- * 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(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(true===c.data(b.target,a.widgetName+".preventClickEvent")){c.removeData(b.target,a.widgetName+".preventClickEvent");b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=
-a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
-this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);
-return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent",
-true);this._mouseStop(a)}return false},_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(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
-;/*
- * jQuery UI Position 1.8.9
- *
- * 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(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
-left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
-k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
-m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
-d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
-a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
-g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
-;/*
- * jQuery UI Draggable 1.8.9
- *
- * 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(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(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(a){var b=
-this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.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};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();
-d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.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";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&
-this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==
-a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||
-0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],
-this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.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()}}else 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}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment==
-"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?
-0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),
-10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==
-Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():
-f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;
-if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])e=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/
-b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;e=this.originalPageX+Math.round((e-this.originalPageX)/b.grid[0])*b.grid[0];e=this.containment?!(e-this.offset.click.left<this.containment[0]||e-this.offset.click.left>this.containment[2])?e:!(e-this.offset.click.left<this.containment[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:g-this.offset.click.top-
-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.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=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.9"});
-d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var g=d.data(this,"sortable");if(g&&!g.options.disabled){c.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=
-0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=
-c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,
-true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=
-0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=
-a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","iframeFix",{start:function(){var a=d(this).data("draggable").options;d(a.iframeFix===true?"iframe":a.iframeFix).each(function(){d('<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(d(this).offset()).appendTo("body")})},
-stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=
-document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-
-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-
-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable",
-"snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,g=b.offset.left,n=g+c.helperProportions.width,m=b.offset.top,o=m+c.helperProportions.height,h=
-c.snapElements.length-1;h>=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e<g&&g<k+e&&j-e<m&&m<l+e||i-e<g&&g<k+e&&j-e<o&&o<l+e||i-e<n&&n<k+e&&j-e<m&&m<l+e||i-e<n&&n<k+e&&j-e<o&&o<l+e){if(f.snapMode!="inner"){var p=Math.abs(j-o)<=e,q=Math.abs(l-m)<=e,r=Math.abs(i-n)<=e,s=Math.abs(k-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",
-{top:l,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k}).left-c.margins.left}var t=p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(j-m)<=e;q=Math.abs(l-o)<=e;r=Math.abs(i-g)<=e;s=Math.abs(k-n)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:j,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:l-c.helperProportions.height,
-left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:i}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:k-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[h].snapping&&(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=p||q||r||s||t}else{c.snapElements[h].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,
-a,d.extend(c._uiHash(),{snapItem:c.snapElements[h].item}));c.snapElements[h].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,
-b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
-;/*
- * jQuery UI Droppable 1.8.9
- *
- * 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(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
-a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
-this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
-this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
-d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
-a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.9"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
-switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
-i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
-"none";if(c[f].visible){c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight};e=="mousedown"&&c[f]._activate.call(c[f],b)}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
-a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=
-d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})}}})(jQuery);
-;/*
- * jQuery UI Resizable 1.8.9
- *
- * 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(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
-_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(e('<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=true;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=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{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"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
-String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
-this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).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 a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),
-d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=
-this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:
-this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",
-b);a.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(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;
-f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",
-b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=
-a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=l(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=l(b.width)&&a.minWidth&&a.minWidth>b.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,
-k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),
-c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=
-this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+
-a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,
-arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,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}}});e.extend(e.ui.resizable,
-{version:"1.8.9"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,
-function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=
-(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=
-false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-
-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",
-b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top",
-"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,
-f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=
-a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+
-a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&
-e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",
-height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=
-d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
-;/*
- * jQuery UI Selectable 1.8.9
- *
- * 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(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
-selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("<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(c){var f=this;this.opos=[c.pageX,
-c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
-c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
-this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
-a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
-!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
-e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.9"})})(jQuery);
-;/*
- * jQuery UI Sortable 1.8.9
- *
- * 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(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable");
-this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,
-arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=
-c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);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");d.extend(this.offset,
-{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();
-if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",
-a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");
-if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+
-this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+
-b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a)}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(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,
-c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==
-document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=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 b=this.containers.length-
-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(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();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});
-this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&
-a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?
-"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?
-c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},_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(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=
-d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});
-return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),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(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=
-d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&this.helper)this.offset.parent=
-this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=
-e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];
-if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);
-c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===
-1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=
-this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):
-b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[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")};if(a[0].style.width==""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==
-""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=
-this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.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()}}else 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 a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||
-document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,
-b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=
-document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():
-e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-
-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<
-this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&
-this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){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 f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem[0].parentNode&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();
-this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],
-this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",
-g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||
-this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,
-originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.9"})})(jQuery);
-;/*
- * jQuery UI Accordion 1.8.9
- *
- * 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(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
-a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
-if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
-function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+
-a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.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 a=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("tabIndex");
-this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=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");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
-b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
-a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
-c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
-if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.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);
-if(!b){a.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);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){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 g=this.active.next(),
-e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||
-e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",
-tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.9",animations:{slide:function(a,b){a=
-c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1],
-unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide",
-paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
-;/*
- * jQuery UI Autocomplete 1.8.9
- *
- * 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(d){d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,f;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){f=false;var e=d.ui.keyCode;
-switch(c.keyCode){case e.PAGE_UP:a._move("previousPage",c);break;case e.PAGE_DOWN:a._move("nextPage",c);break;case e.UP:a._move("previous",c);c.preventDefault();break;case e.DOWN:a._move("next",c);c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:if(a.menu.active){f=true;c.preventDefault()}case e.TAB:if(!a.menu.active)return;a.menu.select(c);break;case e.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=
-null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(f){f=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||
-"body",b)[0]).mousedown(function(c){var e=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(g){g.target!==a.element[0]&&g.target!==e&&!d.ui.contains(e,g.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,e){e=e.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:e})&&/^key/.test(c.originalEvent.type)&&a.element.val(e.value)},selected:function(c,e){var g=e.item.data("item.autocomplete"),
-h=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=h;setTimeout(function(){a.previous=h;a.selectedItem=g},1)}false!==a._trigger("select",c,{item:g})&&a.element.val(g.value);a.term=a.element.val();a.close(c);a.selectedItem=g},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
-this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,f;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,e){e(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source===
-"string"){f=this.options.source;this.source=function(c,e){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:f,data:c,dataType:"json",success:function(g,h,i){i===a.xhr&&e(g);a.xhr=null},error:function(g){g===a.xhr&&e([]);a.xhr=null}})}}else 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)!==false)return this._search(a)},_search:function(a){this.pending++;
-this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(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(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position))},
-_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var f=this;d.each(b,function(c,e){f._renderItem(a,e)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);
-else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var f=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return f.test(c.label||c.value||c)})}})})(jQuery);
-(function(d){d.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(d(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
--1).mouseenter(function(b){a.activate(b,d(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var f=b.offset().top-this.element.offset().top,c=this.element.attr("scrollTop"),e=this.element.height();if(f<0)this.element.attr("scrollTop",c+f);else f>=e&&this.element.attr("scrollTop",c+f-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(){if(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,f){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);
-a.length?this.activate(f,a):this.activate(f,this.element.children(b))}else this.activate(f,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var b=this.active.offset().top,f=this.element.height(),c=this.element.children(".ui-menu-item").filter(function(){var e=d(this).offset().top-b-f+d(this).height();return e<10&&e>-10});c.length||(c=this.element.children(".ui-menu-item:last"));this.activate(a,
-c)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(".ui-menu-item:last"));else{var b=this.active.offset().top,f=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-b+f-d(this).height();return c<10&&c>-10});result.length||(result=this.element.children(".ui-menu-item:first"));
-this.activate(a,result)}else this.activate(a,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element.attr("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})})(jQuery);
-;/*
- * jQuery UI Button 1.8.9
- *
- * 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){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,e=a([]);if(c)e=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return e};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",
-i);if(typeof this.options.disabled!=="boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",e="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",
-function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||a(this).removeClass(e)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");
-b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var f=b.element[0];h(f).not(f).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");
-g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(f){if(c.disabled)return false;if(f.keyCode==a.ui.keyCode.SPACE||f.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(f){f.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",
-c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){this.buttonElement=this.element.parents().last().find("label[for="+this.element.attr("id")+"]");this.element.addClass("ui-helper-hidden-accessible");var b=this.element.is(":checked");b&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=
-this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  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").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);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(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)});else if(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("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"),
-c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("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>");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");
-this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});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(){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("ui-corner-left").end().filter(":last").addClass("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.9
- *
- * 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(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&
-c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",
--1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role",
-"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=
-b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.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(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index");
-isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);
-d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}});
-c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f,
-h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('<button type="button"></button>').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=
-d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,
-position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"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:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,
-h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).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(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===
-1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in
-l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");
-break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e=
-this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&&
-this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.9",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===
-0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
-height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
-b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,
-function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
-;/*
- * jQuery UI Slider 1.8.9
- *
- * 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(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var b=this,a=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");a.disabled&&this.element.addClass("ui-slider-disabled ui-disabled");
-this.range=d([]);if(a.range){if(a.range===true){this.range=d("<div></div>");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("<div></div>");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");
-if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length<a.values.length;)d("<a href='#'></a>").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();
-else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e=
-false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h===
-b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},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 a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b,
-g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},
-_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;
-if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=
-this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c<e))c=e;if(c!==this.values(a)){e=this.values();e[a]=c;b=this._trigger("slide",b,{handle:this.handles[a],value:c,values:e});this.values(a?0:1);b!==false&&this.values(a,c,true)}}else if(c!==this.value()){b=this._trigger("slide",b,{handle:this.handles[a],
-value:c});b!==false&&this.value(c)}},_stop:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("stop",b,c)},_change:function(b,a){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("change",b,c)}},value:function(b){if(arguments.length){this.options.value=
-this._trimAlignValue(b);this._refreshValue();this._change(null,0)}return this._value()},values:function(b,a){var c,e,f;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f<c.length;f+=1){c[f]=this._trimAlignValue(e[f]);this._change(null,f)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(b):this.value();
-else return this._values()},_setOption:function(b,a){var c,e=0;if(d.isArray(this.options.values))e=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(b){case "disabled":if(a){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");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=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<e;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var a,c;if(arguments.length){a=this.options.values[b];
-return a=this._trimAlignValue(a)}else{a=this.options.values.slice();for(c=0;c<a.length;c+=1)a[c]=this._trimAlignValue(a[c]);return a}},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},
-_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate);
-if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1,
-1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.9"})})(jQuery);
-;/*
- * jQuery UI Tabs 1.8.9
- *
- * 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(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,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…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&
-e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=
-d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
-(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){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");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
-this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
-if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
-this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
-g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",
-function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};
-this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=
--1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
-d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},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 e=
-d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(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")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,
-e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);
-j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();
-if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,
-this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},
-load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,
-"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
-url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.9"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&
-a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
-;/*
- * jQuery UI Datepicker 1.8.9
- *
- * 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(d,G){function K(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;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:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,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:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]==
-null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.9"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();
-f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}},
-_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!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(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&
-b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==
-""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_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 e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,
-c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(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=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),
-true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});
-b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);
-this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="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)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,
-function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:
-f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},
-e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);
-this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);c[0]?
-d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||
-a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,
-e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,
-"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},
-_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=
-d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,
-c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&
-d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",
-function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=
--1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,
-"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},
-_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-
-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?
-b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
-_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):
-0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=
-false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=
-d("a",e).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){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);
-else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.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"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=
-a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/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 e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,
-g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){var v=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&v?4:p=="o"?3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,v,H){p=o(p)?H:v;for(v=0;v<p.length;v++)if(b.substr(s,p[v].length).toLowerCase()==p[v].toLowerCase()){s+=p[v].length;return v+1}throw"Unknown name at position "+
-s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(k)if(a.charAt(z)=="'"&&!o("'"))k=false;else r();else switch(a.charAt(z)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var w=new Date(m("@"));c=w.getFullYear();j=w.getMonth()+1;l=w.getDate();break;case "!":w=new Date((m("!")-this._ticksTo1970)/1E4);c=w.getFullYear();j=w.getMonth()+
-1;l=w.getDate();break;case "'":if(o("'"))r();else k=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},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 e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&
-a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},j=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",
-b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+=
-"0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=
-f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.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 e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=
-(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,
-l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=
-a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),
-b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=
-this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+
-(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+
-(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,
-"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=
-this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var M="",D=0;D<i[1];D++){var N=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-
-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=
-(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!j?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=
-p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&q<k||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==N.getTime()&&g==a.selectedMonth&&a._keyEvent||L.getTime()==q.getTime()&&L.getTime()==N.getTime()?" "+this._dayOverClass:"")+(J?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!v?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":
-""))+'"'+((!B||v)&&F[2]?' title="'+F[2]+'"':"")+(J?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!v?"&#xa0;":J?'<span class="ui-state-default">'+q.getDate()+"</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==u.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=
-P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',
-o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&
-l)?"&#xa0;":""));a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+
-a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";if(d.browser.mozilla)k+='<select class="ui-datepicker-year"><option value="'+c+'" selected="selected">'+c+"</option></select>";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=
-a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,
-"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);
-c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.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,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=
-function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));
-return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.9";window["DP_jQuery_"+y]=d})(jQuery);
-;/*
- * jQuery UI Progressbar 1.8.9
- *
- * 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(b,d){b.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=b("<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();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(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(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.9"})})(jQuery);
-;/*
- * jQuery UI Effects 1.8.9
- *
- * 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(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
-16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
-a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
-a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
-"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={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]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
-d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0];
-h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,
-a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.9",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,
-a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",
-border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);
-return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments);
-else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),
-b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,
-a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,
-a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==
-e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=
-g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/
-h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,
-a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
-;/*
- * jQuery UI Effects Blind 1.8.9
- *
- * 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(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
-g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
-;/*
- * jQuery UI Effects Bounce 1.8.9
- *
- * 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(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
-3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
-b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Clip 1.8.9
- *
- * 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(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
-c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Drop 1.8.9
- *
- * 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(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
-"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Explode 1.8.9
- *
- * 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(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
-0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
-e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
-;/*
- * jQuery UI Effects Fade 1.8.9
- *
- * 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(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Fold 1.8.9
- *
- * 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(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
-10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
-;/*
- * jQuery UI Effects Highlight 1.8.9
- *
- * 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(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
-this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Pulsate 1.8.9
- *
- * 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(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
-a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Scale 1.8.9
- *
- * 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(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
-b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
-1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
-p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
-if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
-a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
-child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
-n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Shake 1.8.9
- *
- * 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(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
-(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Slide 1.8.9
- *
- * 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(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
-var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Transfer 1.8.9
- *
- * 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(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
-b.dequeue()})})}})(jQuery);
-;
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/spl-word.js b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/spl-word.js
deleted file mode 100644
index ac6ddcb..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/spl-word.js
+++ /dev/null
@@ -1,116 +0,0 @@
-
-function createWord( word )
-{
-    var s = '';
-    for( var i = 0; i < word.length; i++ )
-    {
-        ch = word.charAt( i );
-        s += 
-        '<span class="upper">' +
-        '<span>' + ch + '</span>' +
-        (( i < word.length - 1 ) ?
-            '<span class="dash">–</span>' : '' ) +
-        '</span>';
-    }
-    return s;
-}
-
-$(document).ready(function()
-{
-    var w = new wcontainer( "#ub-widget" );
-    var words = "";
-        
-    if(window.sankore)
-        words = (sankore.preference("ordSplWords", ""))?sankore.preference("ordSplWords", ""):sankoreLang.example;
-    else
-        words = sankoreLang.example;
-    w.setEditContent( '<div class="inputwrap"><input class="percent" value="' + words + '"></div>' );
-    w.setViewContent( '<span class="upper"><span class="dash fixed">—</span></span>' );
-    w.setData( "dashWidth", w.elements.container.find( "span.dash" ).outerWidth() );
-    w.setViewContent( "" );
-	
-    // onViewMode
-    w.onViewMode = function()
-    {
-        var word = w.elements.container.find( "input" ).val().trim( ['*'] );
-		
-        w.setData( "word", word );
-        word = word.replace( /\*/g, '' );
-        w.setViewContent( createWord( word ) );
-        w.elements.container.find( "span.upper" ).click( function(){
-            $( this ).find( "span.dash" ).toggleClass( "fixed" );
-            w.adjustSize();
-            w.checkAnswer();
-        });
-        w.checkAnswer();
-    };
-	
-    // viewSize
-    w.viewSize = function()
-    {
-        var w = 0;
-        var h = 0;
-		
-        winstance.elements.containerView.find( "span.upper span:visible" ).each( function()
-        {
-            w += $( this ).outerWidth();
-            h = Math.max( h, $( this ).outerHeight() );
-        });
-        var dw = winstance.getData( "dashWidth" );
-		
-        return {
-            w: w+dw, 
-            h: h
-        };
-    };
-	
-    // editSize
-    w.editSize = function()
-    {
-        return {
-            w: winstance.elements.containerEdit.find( "input" ).outerWidth( true ),
-            h: winstance.elements.containerEdit.find( "input" ).outerHeight( true ),
-        };
-    };
-	
-	
-    w.checkAnswer = function()
-    {
-        var word = "";
-        this.elements.container.find( "span.upper span:visible" ).each( function()
-        {
-            if( this.className.indexOf( "fixed" ) != -1 ){
-                word += '*';
-            }
-            else if( this.className.indexOf( "dash" ) != -1 ){
-                return;
-            }
-            else{
-                word += $( this ).text();
-            }
-        });
-		
-        if( word == this.getData( "word" ) ){
-            this.elements.container.addClass( "answerRight" );
-        }
-        else{
-            this.elements.container.removeClass( "answerRight" );
-        }
-    };
-
-	
-    window.w = w;
-    window.winstance = w;
-	
-    w.modeView();
-    
-    if (window.widget) {
-        window.widget.onleave = function(){
-            if(w.editMode)
-                sankore.setPreference("ordSplWords", w.elements.container.find( "input" ).val().trim( ['*'] ));
-            else
-                sankore.setPreference("ordSplWords", w.getData("word"));
-        }
-    }
-	
-});
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/wcontainer.js b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/wcontainer.js
deleted file mode 100644
index 3f457ac..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/scripts/wcontainer.js
+++ /dev/null
@@ -1,244 +0,0 @@
-var sankoreLang = {
-    view: "View", 
-    edit: "Edit",
-    example: "so*phis*ti*ca*ted"
-};
-
-// if use the "view/edit" button or rely on the api instead
-var isSankore = false;
-// whether to do window.resize or not (window = widget area)
-var isBrowser = ( typeof( widget ) == "undefined" );
-
-function wcontainer( containerID )
-{
-	// some protecred variables
-	var thisInstance = this;
-	this.editMode = false;
-	var data = {}; // see setData and getData
-	
-	// widget size parameters
-	this.minHeight = 100;
-	this.minWidth = 400;
-	
-	// links to the elements of the widget
-	this.elements = {};
-	
-	/*
-	============
-	create
-	============
-	- creates html base, inits this.elements, assings events
-	*/
-	this.create = function( containerID )
-	{
-		var html = 
-			'<div id="mp_setup">' +
-				'<div class="viewmode">' +
-					'<button>' + sankoreLang.edit + '</button>' +
-				'</div>' +
-				'<div class="editmode">' +
-					'<button>' + sankoreLang.view + '</button>' +
-				'</div>' +
-			'</div>' +
-			'<div id="mp_content">' +
-				'<div class="viewmode">' +
-				'</div>' +
-				'<div class="editmode">' +
-				'</div>' +
-			'</div>';
-		
-		var container = $( containerID );
-		
-		container.append( html );
-		this.elements.edit = container.find( ".editmode" );
-		this.elements.view = container.find( ".viewmode" );
-		this.elements.container = container;
-		this.elements.containerView = container.find( "#mp_content .viewmode" );
-		this.elements.containerEdit = container.find( "#mp_content .editmode" );
-		
-		container.find( ".viewmode button" ).click( function(){
-			thisInstance.modeEdit();
-		} );
-		
-		container.find( ".editmode button" ).click( function(){
-			thisInstance.modeView();
-		} );
-	};
-	
-	
-	/*
-	===============
-	setViewContent
-	===============
-	- assigns custom html to the viewmode container
-	*/
-	this.setViewContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .viewmode" ).html( html );
-	};
-	
-	/*
-	===============
-	setEditContent
-	===============
-	- assigns custom html to the editmode container
-	*/
-	this.setEditContent = function( html )
-	{
-		this.elements.container.find( "#mp_content .editmode" ).html( html );
-	};
-	
-	
-	
-	/*
-	=========================
-	modeEdit and modeView
-	=========================
-	- switch the widget betweed modes
-	* for customization extend onEditMode and onViewMode
-	*/
-	this.modeEdit = function()
-	{
-		this.onEditMode();
-		this.editMode = true;
-		this.elements.edit.removeClass( "hide" );
-		this.elements.view.addClass( "hide" );
-		
-		this.adjustSize();
-	};
-	this.modeView = function()
-	{
-		this.onViewMode();
-		this.editMode = false;
-		this.elements.edit.addClass( "hide" );
-		this.elements.view.removeClass( "hide" );
-		
-		this.adjustSize();
-	};
-	
-	
-	
-	/*
-	================
-	adjustSize
-	================
-	- changes the widget size (window and container)
-	*/
-	this.adjustSize = function( width, height )
-	{
-		if( arguments.length < 2 )
-		{
-			var s = ( this.editMode )? this.editSize() : this.viewSize();
-			var width = s.w;
-			var height = s.h;
-		}
-		
-		if( width + height == 0 )
-			return;
-		
-		width = Math.max( this.minWidth, width );
-		height = Math.max( this.minHeight, height );
-		
-		// if viewed as a widget, resize the window
-		if( !isBrowser )
-		{
-			var dw = this.getData( "dw" );
-			var dh = this.getData( "dh" );
-			
-			if( width == 0 ){
-				width = widget.width;
-			}
-			if( height == 0 ){
-				height = widget.height;
-			}
-			window.resizeTo( width + dw, height + dh );
-		}
-		
-		var params = {};
-		
-		if( width != 0 ){
-			params.width = width;
-		}
-		if( height != 0 ){
-			params.height = height;
-		}
-		
-		this.elements.container.animate( params );
-		
-	};
-	
-	/*
-	======================
-	setData and getData
-	======================
-	- store some data inside
-	*/
-	this.setData = function( name, value ){
-		data[name] = value;
-	};
-	this.getData = function( name ){
-		if( typeof( data[name] ) == "undefined" ){
-			return null;
-		} else return data[name];
-	};
-	
-	
-	// redefinable methods
-	
-	/*
-	==========================
-	onEditMode and onViewMode
-	==========================
-	- these are called when the mode is being changed
-	*/
-	this.onEditMode = function(){
-		//
-	};
-	this.onViewMode = function(){
-		//
-	};
-	
-	/*
-	======================
-	viewSize and editSize
-	======================
-	- calculate container size for the adjustSize method
-	* they are likely to be redefined for each particular widget
-	*/
-	this.viewSize = function(){
-		return {
-			w: this.elements.containerView.outerWidth(),
-			h: this.elements.containerView.outerHeight()
-		};
-	};
-	this.editSize = function(){
-		return {
-			w: this.elements.containerEdit.outerWidth(),
-			h: this.elements.containerEdit.outerHeight()
-		};
-	};
-	
-	/*
-	=====================
-	checkAnswer
-	=====================
-	- check if the exercise in the view mode was done right
-	* redefine it for each particular widget
-	*/
-	this.checkAnswer = function()
-	{
-		//
-	};
-	
-	
-	// constructor end
-	
-	// if the constructor was called with a parameter,
-	// call create() automatically
-	if( arguments.length > 0 ){
-		this.create( containerID );
-	}
-	this.setData( "dw", this.elements.container.outerWidth( true ) - this.elements.container.width() );
-	this.setData( "dh", this.elements.container.outerHeight( true ) - this.elements.container.height() );
-	window.winstance = thisInstance;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/master.css b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/master.css
deleted file mode 100644
index 5cff691..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/master.css
+++ /dev/null
@@ -1,43 +0,0 @@
-body{
-	background-color: #fff;
-	margin: 0px; padding: 0px;
-	font-family: arial;
-	font-size: 11pt;
-	color: #000;
-}
-
-
-h1{
-	font-size:18px;
-	margin-bottom:20px;
-	margin-top:0px;
-}
-#ub-widget{
-	background-color: white;
-	padding: 20px;
-	border: 3px solid #aaaaaa;
-}
-
-input{
-	font-size: 14pt;
-}
-
-.inputbox{
-	width:50px;
-}
-
-button{
-	width: 80px;
-}
-
-input.percent{
-	width: 100%;
-	margin: 0px; padding: 0px;
-	border-width: 0px;
-}
-.inputwrap{
-	border-style: solid;
-	border-width: 1px;
-	border-color: #dbdfe6;
-	border-top-color: #abadb3;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/spl-word.css b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/spl-word.css
deleted file mode 100644
index 866f8f8..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/spl-word.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/* custom */
-
-#mp_content span.upper{
-	font-size: 24pt;
-	cursor: pointer;
-}
-#mp_content span.upper span.dash{
-	display: none;
-	color: black;
-	text-align: center;
-}
-#mp_content span.upper:hover span.dash{
-	display: inline-block;
-	width: 30px; height: 30px;
-	background-image: url( "separator-hover.png" );
-	background-position: 0px 5px;
-	color: transparent;
-}
-
-#mp_content span.upper span.fixed{
-	display: inline-block;
-	color: #00b8e4;
-	width: 30px; height: 30px;
-	background-image: none;
-}
-#mp_content span.upper:hover span.fixed, #mp_content span.upper span.fixed:hover{
-	color: transparent;
-	width: 30px; height: 30px;
-	background-image: url( "separator-activated.png" );
-	background-position: 0px 5px;
-}
-
-.answerRight span.upper{
-	color: #00b8e4;
-}
diff --git a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/wcontainer.css b/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/wcontainer.css
deleted file mode 100644
index 86faa54..0000000
--- a/Sankore-3.1/resources/library/interactivities/spl-word.wgt/styles/wcontainer.css
+++ /dev/null
@@ -1,19 +0,0 @@
-/* frame */
-
-#mp_setup{
-	text-align: right;
-}
-
-#mp_content{
-	margin-top: 5px;
-}
-
-.viewmode{
-	/* empty */
-}
-.editmode{
-	/* empty */
-}
-.hide{
-	display: none;
-}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 1.png b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 1.png
new file mode 100644
index 0000000..5ae0e88
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 2.png b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 2.png
new file mode 100644
index 0000000..39deaf9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 3.png b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 3.png
new file mode 100644
index 0000000..48806aa
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 3.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 4.png b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 4.png
new file mode 100644
index 0000000..056d70d
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Coiffure/coiffure 4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_1.png b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_1.png
new file mode 100644
index 0000000..e823db5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_2.png b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_2.png
new file mode 100644
index 0000000..bfdc75e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_3.png b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_3.png
new file mode 100644
index 0000000..a9f6e71
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_3.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_4.png b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_4.png
new file mode 100644
index 0000000..5e044fe
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_5.png b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_5.png
new file mode 100644
index 0000000..f05c090
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Extraire l'huile/huile_palme_5.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_1.png b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_1.png
new file mode 100644
index 0000000..0819c1f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_2.png b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_2.png
new file mode 100644
index 0000000..7bc52cc
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_3.png b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_3.png
new file mode 100644
index 0000000..1823031
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_3.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_4.png b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_4.png
new file mode 100644
index 0000000..fa80147
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_5.png b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_5.png
new file mode 100644
index 0000000..6573ca1
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_5.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_6.png b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_6.png
new file mode 100644
index 0000000..1f30dd2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Fatou dessine/dessin_6.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_1.png b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_1.png
new file mode 100644
index 0000000..4ceebf3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_2.png b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_2.png
new file mode 100644
index 0000000..1263db8
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_3.png b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_3.png
new file mode 100644
index 0000000..4648ded
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_3.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_4.png b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_4.png
new file mode 100644
index 0000000..20e048f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/Microbes_4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Ines malade/bacterie.svg b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/bacterie.svg
new file mode 100644
index 0000000..7f17909
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Actions/Ines malade/bacterie.svg	
@@ -0,0 +1,701 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="585.57336"
+   height="370.96451"
+   id="svg3543"
+   version="1.1"
+   inkscape:version="0.48+devel r9841 custom"
+   sodipodi:docname="Nowy dokument 2">
+  <defs
+     id="defs3545">
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4123"
+       id="radialGradient4133"
+       cx="246.71178"
+       cy="463.47595"
+       fx="246.71178"
+       fy="463.47595"
+       r="149.07991"
+       gradientTransform="matrix(1,0,0,0.50086524,0,224.3674)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient4123">
+      <stop
+         style="stop-color:#decd40;stop-opacity:1;"
+         offset="0"
+         id="stop4125" />
+      <stop
+         id="stop4131"
+         offset="0.74863672"
+         style="stop-color:#a4cd40;stop-opacity:1;" />
+      <stop
+         style="stop-color:#a4cd40;stop-opacity:1;"
+         offset="1"
+         id="stop4127" />
+    </linearGradient>
+    <linearGradient
+       y2="221.26927"
+       x2="338.55859"
+       y1="231.88896"
+       x1="338.98026"
+       gradientTransform="translate(172.94223,-43.427424)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4186"
+       xlink:href="#linearGradient5732-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5732-8"
+       inkscape:collect="always">
+      <stop
+         id="stop5734-4"
+         offset="0"
+         style="stop-color:#ff0000;stop-opacity:1;" />
+      <stop
+         id="stop5736-0"
+         offset="1"
+         style="stop-color:#ff0000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4313"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4307">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4309" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4311" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4317"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4321"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4325"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4329"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4333"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4337"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4341"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4345"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4349"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4353"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4307"
+       id="radialGradient4357"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       cx="95.074173"
+       cy="339.28308"
+       fx="95.074173"
+       fy="339.28308"
+       r="11.594411" />
+    <radialGradient
+       r="11.594411"
+       fy="339.28308"
+       fx="95.074173"
+       cy="339.28308"
+       cx="95.074173"
+       gradientTransform="matrix(0.69927036,0.0593414,-0.0676847,0.79758663,51.555899,63.033597)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3541"
+       xlink:href="#linearGradient4307"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="341.80064"
+     inkscape:cy="-144.51776"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1280"
+     inkscape:window-height="752"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata3548">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-33.199363,-16.879915)">
+    <g
+       id="g4359"
+       transform="matrix(1.5673753,0,0,1.5673753,-182.09255,-505.16761)">
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4293"
+         d="m 433.77681,395.52936 22.9158,-37.01822 -27.43928,36.18815 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4291"
+         d="m 458.12952,428.31246 30.71674,-30.85392 -34.93394,29.01923 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4273"
+         d="m 233.61966,418.30714 -11.2175,-42.06721 7.51064,44.78935 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4287"
+         d="m 443.50045,500.77895 27.07646,34.09322 -31.47229,-32.74129 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4285"
+         d="m 462.26126,479.31177 37.32375,22.41473 -40.96495,-19.60534 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4279"
+         d="m 457.39338,455.73335 43.53647,0.24168 -45.18781,-4.534 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 178.96931,457.60555 -41.61107,12.80631 44.47197,-9.20547 z"
+         id="path4255"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4257"
+         d="m 205.87677,482.98283 -34.81286,26.1447 38.72439,-23.72587 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4227"
+         d="m 233.47095,406.9746 -23.52224,-36.63587 20.82314,40.35955 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 261.30382,510.37355 -5.98984,43.12313 1.97796,-45.37161 z"
+         id="path4229"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4231"
+         d="m 418.29584,508.61374 5.10779,43.23648 -9.55782,-44.39757 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 236.77392,501.04086 -13.00817,41.54841 9.42124,-44.42675 z"
+         id="path4235"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4237"
+         d="m 363.47127,526.38227 -3.83736,43.3677 -0.2814,-45.41385 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="sssss"
+         inkscape:connector-curvature="0"
+         id="path3350"
+         d="m 434.31039,437.04108 c 5.03158,77.89633 -76.05093,76.67447 -132.88079,77.28067 -70.13321,0.74811 -172.48556,8.06849 -173.44441,-71.68569 -0.74849,-62.25681 110.0797,-76.59787 173.44441,-82.87565 68.93985,-6.83013 128.73522,13.10116 132.88079,77.28067 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         transform="translate(43.084542,13.558992)" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 343.76077,511.30954 -3.83736,43.3677 -0.2814,-45.41385 z"
+         id="path4263"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4289"
+         d="m 303.76585,389.32111 -11.2175,-42.06721 7.51064,44.78935 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 375.43183,384.2142 0.24169,-43.53647 -4.534,45.18781 z"
+         id="path4217"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:url(#radialGradient4133);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 473.20482,449.88334 c 4.89382,74.41152 -73.96889,73.24432 -129.24293,73.8234 -68.21317,0.71464 -167.76342,7.70754 -168.69602,-68.47872 -0.728,-59.47166 107.06605,-73.17115 168.69602,-79.16809 67.05249,-6.52457 125.21085,12.51506 129.24293,73.82341 z"
+         id="path3353"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="sssss" />
+      <g
+         id="g4209">
+        <path
+           inkscape:connector-curvature="0"
+           id="path6035-5"
+           d="m 338.94223,472.15937 c 2.08812,0.008 4.13072,-0.37634 6.09375,-1.1875 3.22343,-1.33198 5.81727,-3.65219 7.6875,-6.65625 1.79914,2.51139 4.15282,4.47974 7,5.65625 10.46951,4.32619 23.65928,-3.56594 29.46875,-17.625 1.34607,-3.25753 1.92001,-6.71097 2.53016,-9.76977 0.004,-6.12675 10.10347,-4.94177 16.40916,-4.91057 2.04003,0.0101 -7.52275,-0.35525 -7.59664,-1.67922 -4.9523,1.747 -35.1119,0.50261 -41.87685,-10.57567 -2.54607,2.57929 -4.78787,5.74315 -6.52836,9.37273 -6.32603,-12.21011 -18.40238,-18.73631 -28.125,-14.71875 -10.46951,4.32619 -14.24696,19.22219 -8.4375,33.28125 4.72018,11.42299 14.32649,18.77813 23.375,18.8125 z"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           sodipodi:nodetypes="cscsscscccsscc" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path6037-7"
+           d="m 339.35792,468.37725 c 1.44203,-0.0854 2.85553,-0.40544 4.21875,-0.96875 4.7653,-1.96911 7.86132,-6.57251 8.90625,-12.25 1.21482,5.20407 4.21172,9.36928 8.6875,11.21875 8.72459,3.60516 19.72129,-2.97162 24.5625,-14.6875 1.51419,-3.6644 3.27166,-9.03825 3.29658,-12.55036 -16.77636,1.71088 -28.60658,-6.84691 -29.3634,-9.25034 -2.21994,2.4039 -4.12977,5.35704 -5.52693,8.7382 -0.88641,2.14513 -1.50945,4.33483 -1.875,6.46875 -0.37545,-1.80806 -0.90852,-3.62797 -1.65625,-5.4375 -4.84121,-11.71588 -15.83791,-18.29266 -24.5625,-14.6875 -8.72459,3.60516 -11.87246,16.03412 -7.03125,27.75 4.08477,9.88528 12.55676,16.11768 20.34375,15.65625 z"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           sodipodi:nodetypes="cscssccscsssc" />
+        <path
+           transform="matrix(-1.0545377,0.60258115,-0.82166837,-1.3784124,1205.8477,216.16639)"
+           d="m 719.20137,144.94429 c 0,3.66216 -3.19714,6.63093 -7.14101,6.63093 -3.94387,0 -7.141,-2.96877 -7.141,-6.63093 0,-3.66216 3.19713,-6.63093 7.141,-6.63093 3.94387,0 7.14101,2.96877 7.14101,6.63093 z"
+           sodipodi:ry="6.6309347"
+           sodipodi:rx="7.1410065"
+           sodipodi:cy="144.94429"
+           sodipodi:cx="712.06036"
+           id="path6045-1"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           sodipodi:type="arc" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           id="path6049-0"
+           sodipodi:cx="712.06036"
+           sodipodi:cy="144.94429"
+           sodipodi:rx="7.1410065"
+           sodipodi:ry="6.6309347"
+           d="m 719.20137,144.94429 c 0,3.66216 -3.19714,6.63093 -7.14101,6.63093 -3.94387,0 -7.141,-2.96877 -7.141,-6.63093 0,-3.66216 3.19713,-6.63093 7.141,-6.63093 3.94387,0 7.14101,2.96877 7.14101,6.63093 z"
+           transform="matrix(1.0690022,0.57653098,0.78760732,-1.3981539,-506.65057,236.41765)" />
+      </g>
+      <g
+         id="g3256-1"
+         transform="matrix(1.2487437,0,0,1.0185604,-284.74002,312.08)">
+        <path
+           sodipodi:nodetypes="cccscccssccsccsccccc"
+           inkscape:connector-curvature="0"
+           id="path5675-0"
+           d="m 462.80838,154.74181 c -0.87348,-0.008 -2.99016,1.51797 -5.14489,3.77291 l -2.02365,2.12656 c -2.46255,2.57707 -3.98861,5.09124 -3.42993,5.62508 0.55868,0.53383 2.99104,-1.09295 5.45358,-3.67002 l 1.37197,-1.44057 0,0.34299 c 7.34615,9.10967 20.0584,10.73349 27.91348,19.04626 17.51685,18.53749 33.39723,14.23619 47.28549,-0.8672 7.70254,-8.37646 21.17405,-9.706 30.30553,-18.14482 l 1.44057,1.50917 c 2.46254,2.57708 4.8949,4.23816 5.45358,3.70432 0.55867,-0.53384 -0.96738,-3.048 -3.42993,-5.62508 l -2.02365,-2.12655 c -2.46255,-2.57708 -4.89491,-4.23816 -5.45358,-3.70432 -0.45254,0.43242 0.48629,2.17487 2.16085,4.18451 -31.96217,25.9122 -78.1997,25.68937 -102.14317,0.0342 1.93544,-2.21311 3.06128,-4.19758 2.57244,-4.66469 -0.0698,-0.0667 -0.18391,-0.10186 -0.30869,-0.10285 z"
+           style="fill:#000000;fill-opacity:1;stroke:none" />
+        <path
+           sodipodi:nodetypes="ccc"
+           inkscape:connector-curvature="0"
+           id="path5722-8"
+           d="m 489.83355,179.74996 c 13.551,2.23835 29.20964,1.43804 41.62915,-0.84958 0.2696,-1.07841 -16.91847,23.92082 -41.62915,0.84958 z"
+           style="fill:url(#linearGradient4186);fill-opacity:1;stroke:none" />
+      </g>
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4215"
+         d="m 322.50011,383.6939 1.81219,-43.49941 -6.16128,44.99483 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4219"
+         d="m 412.17417,376.58502 -1.42396,-43.51385 -2.80204,45.32819 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 449.43371,413.81945 30.71674,-30.85392 -34.93394,29.01923 z"
+         id="path4221"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4223"
+         d="m 266.08402,410.19105 -11.2175,-42.06721 7.51064,44.78935 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 428.7308,398.80235 5.10779,-43.23648 -9.55782,44.39757 z"
+         id="path4225"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 296.65894,509.47151 -7.19161,42.93907 3.24407,-45.29871 z"
+         id="path4239"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4233"
+         d="m 428.06872,502.56816 22.74146,37.12558 -27.2688,-36.31679 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="M 249.1234,397.69907 225.60116,361.0632 246.4243,401.42275 z"
+         id="path4241"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 281.73647,400.91552 -11.2175,-42.06721 7.51064,44.78935 z"
+         id="path4243"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4245"
+         d="m 354.94667,378.96698 -7.35607,-42.91119 3.41761,45.28594 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4247"
+         d="m 389.51438,392.91911 6.0926,-43.10873 -10.56795,44.16802 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 207.61654,501.91029 -29.79719,31.74286 34.06646,-30.03284 z"
+         id="path4249"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4251"
+         d="m 181.01192,437.76944 -43.53647,-0.24169 45.18781,4.534 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 183.26766,471.38842 -34.81286,26.1447 38.72439,-23.72587 z"
+         id="path4253"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 326.36916,513.62842 -3.83736,43.3677 -0.2814,-45.41385 z"
+         id="path4259"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 395.93562,515.9473 -3.83736,43.3677 -0.2814,-45.41385 z"
+         id="path4261"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4265"
+         d="m 181.85133,450.84844 -43.53696,-0.11976 45.20033,4.40742 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 188.87412,426.06991 -34.08219,-27.09035 32.72847,31.48561 z"
+         id="path4267"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 217.96721,427.58267 -11.2175,-42.06721 7.51064,44.78935 z"
+         id="path4269"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4271"
+         d="m 201.00659,415.09069 -23.52224,-36.63587 20.82314,40.35955 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4275"
+         d="m 247.38269,508.89179 -7.19161,42.93907 3.24407,-45.29871 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 448.34797,488.00758 37.32375,22.41473 -40.96495,-19.60534 z"
+         id="path4277"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="m 467.85077,470.7977 43.10873,6.09259 -44.16802,-10.56795 z"
+         id="path4281"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4283"
+         d="m 467.48544,443.22446 39.19598,-18.95146 -42.5685,15.82463 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path4295"
+         d="m 273.78671,525.44923 -2.95618,43.43667 -1.20327,-45.39878 z"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         transform="translate(140.4776,117.90869)"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         sodipodi:ry="11.01469"
+         sodipodi:rx="11.594411"
+         sodipodi:cy="339.28308"
+         sodipodi:cx="95.074173"
+         id="path4297"
+         style="fill:url(#radialGradient4313);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient4317);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path4315"
+         sodipodi:cx="95.074173"
+         sodipodi:cy="339.28308"
+         sodipodi:rx="11.594411"
+         sodipodi:ry="11.01469"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         transform="translate(200.76853,76.168808)" />
+      <path
+         transform="translate(145.69508,155.59052)"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         sodipodi:ry="11.01469"
+         sodipodi:rx="11.594411"
+         sodipodi:cy="339.28308"
+         sodipodi:cx="95.074173"
+         id="path4319"
+         style="fill:url(#radialGradient4321);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient4325);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path4323"
+         sodipodi:cx="95.074173"
+         sodipodi:cy="339.28308"
+         sodipodi:rx="11.594411"
+         sodipodi:ry="11.01469"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         transform="translate(106.27408,125.44506)" />
+      <path
+         transform="translate(337.00286,116.74925)"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         sodipodi:ry="11.01469"
+         sodipodi:rx="11.594411"
+         sodipodi:cy="339.28308"
+         sodipodi:cx="95.074173"
+         id="path4327"
+         style="fill:url(#radialGradient4329);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient4333);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path4331"
+         sodipodi:cx="95.074173"
+         sodipodi:cy="339.28308"
+         sodipodi:rx="11.594411"
+         sodipodi:ry="11.01469"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         transform="translate(310.33571,73.270209)" />
+      <path
+         transform="translate(313.23431,163.12689)"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         sodipodi:ry="11.01469"
+         sodipodi:rx="11.594411"
+         sodipodi:cy="339.28308"
+         sodipodi:cx="95.074173"
+         id="path4335"
+         style="fill:url(#radialGradient4337);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient4341);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path4339"
+         sodipodi:cx="95.074173"
+         sodipodi:cy="339.28308"
+         sodipodi:rx="11.594411"
+         sodipodi:ry="11.01469"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         transform="translate(245.40701,56.45831)" />
+      <path
+         transform="translate(185.69579,116.16953)"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         sodipodi:ry="11.01469"
+         sodipodi:rx="11.594411"
+         sodipodi:cy="339.28308"
+         sodipodi:cx="95.074173"
+         id="path4343"
+         style="fill:url(#radialGradient4345);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient4349);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path4347"
+         sodipodi:cx="95.074173"
+         sodipodi:cy="339.28308"
+         sodipodi:rx="11.594411"
+         sodipodi:ry="11.01469"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         transform="translate(183.37691,163.12689)" />
+      <path
+         inkscape:transform-center-y="88.117523"
+         inkscape:transform-center-x="-45.218203"
+         transform="translate(142.21675,79.067411)"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         sodipodi:ry="11.01469"
+         sodipodi:rx="11.594411"
+         sodipodi:cy="339.28308"
+         sodipodi:cx="95.074173"
+         id="path4351"
+         style="fill:url(#radialGradient4353);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient3541);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path4355"
+         sodipodi:cx="95.074173"
+         sodipodi:cy="339.28308"
+         sodipodi:rx="11.594411"
+         sodipodi:ry="11.01469"
+         d="m 106.66858,339.28308 c 0,6.08325 -5.19099,11.01469 -11.594407,11.01469 -6.403416,0 -11.594411,-4.93144 -11.594411,-11.01469 0,-6.08324 5.190995,-11.01469 11.594411,-11.01469 6.403417,0 11.594407,4.93145 11.594407,11.01469 z"
+         transform="translate(343.37979,86.603782)" />
+    </g>
+  </g>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court1.png b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court1.png
new file mode 100644
index 0000000..ac72e9f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court2.png b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court2.png
new file mode 100644
index 0000000..69b9352
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court3.png b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court3.png
new file mode 100644
index 0000000..b74110f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court3.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court4.png b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court4.png
new file mode 100644
index 0000000..8eee483
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jan court/jan_chien_court4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_1_doigt.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_1_doigt.png
new file mode 100644
index 0000000..da14bfb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_1_doigt.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_2_doigt.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_2_doigt.png
new file mode 100644
index 0000000..7fd435a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_2_doigt.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_3_doigt.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_3_doigt.png
new file mode 100644
index 0000000..96cedae
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_3_doigt.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_4_doigt.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_4_doigt.png
new file mode 100644
index 0000000..48bea15
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_4_doigt.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_5_doigt.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_5_doigt.png
new file mode 100644
index 0000000..d3a6fbc
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_5_doigt.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_dessus.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_dessus.png
new file mode 100644
index 0000000..e9ba056
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_dessus.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_paume.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_paume.png
new file mode 100644
index 0000000..46df128
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_droite_paume.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_dessus.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_dessus.png
new file mode 100644
index 0000000..5b35f9e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_dessus.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_paume.png b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_paume.png
new file mode 100644
index 0000000..9e82b9e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Jeu de mains/main_gauche_paume.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage1.png b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage1.png
new file mode 100644
index 0000000..e29c563
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage2.png b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage2.png
new file mode 100644
index 0000000..ead3906
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage3.png b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage3.png
new file mode 100644
index 0000000..292889d
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage3.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage4.png b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage4.png
new file mode 100644
index 0000000..fc6e5e3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage5.png b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage5.png
new file mode 100644
index 0000000..74b74ff
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Actions/Lavage mains/lavage5.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/ane.png b/Sankore-3.1/resources/library/pictures/Animaux/ane.png
new file mode 100644
index 0000000..c3f811f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/ane.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/antilope.png b/Sankore-3.1/resources/library/pictures/Animaux/antilope.png
new file mode 100644
index 0000000..34d4897
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/antilope.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/autruche.png b/Sankore-3.1/resources/library/pictures/Animaux/autruche.png
new file mode 100644
index 0000000..03b1da1
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/autruche.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/becasse.png b/Sankore-3.1/resources/library/pictures/Animaux/becasse.png
new file mode 100644
index 0000000..a0a1471
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/becasse.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/boeuf.png b/Sankore-3.1/resources/library/pictures/Animaux/boeuf.png
new file mode 100644
index 0000000..0798132
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/boeuf.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/buffle.png b/Sankore-3.1/resources/library/pictures/Animaux/buffle.png
new file mode 100644
index 0000000..a3eca58
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/buffle.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/cameleon.png b/Sankore-3.1/resources/library/pictures/Animaux/cameleon.png
new file mode 100644
index 0000000..dc7e9f6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/cameleon.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/canard.png b/Sankore-3.1/resources/library/pictures/Animaux/canard.png
new file mode 100644
index 0000000..0653286
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/canard.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/chacal.png b/Sankore-3.1/resources/library/pictures/Animaux/chacal.png
new file mode 100644
index 0000000..4a854c0
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/chacal.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/chat.png b/Sankore-3.1/resources/library/pictures/Animaux/chat.png
new file mode 100644
index 0000000..0257053
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/chat.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/chenille.png b/Sankore-3.1/resources/library/pictures/Animaux/chenille.png
new file mode 100644
index 0000000..f856ec7
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/chenille.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/cheval.png b/Sankore-3.1/resources/library/pictures/Animaux/cheval.png
new file mode 100644
index 0000000..7f0d3ac
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/cheval.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/chien.png b/Sankore-3.1/resources/library/pictures/Animaux/chien.png
new file mode 100644
index 0000000..2fd5d19
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/chien.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/cochon.png b/Sankore-3.1/resources/library/pictures/Animaux/cochon.png
new file mode 100644
index 0000000..035f706
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/cochon.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/coq.png b/Sankore-3.1/resources/library/pictures/Animaux/coq.png
new file mode 100644
index 0000000..172b0a3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/coq.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/corbeau.png b/Sankore-3.1/resources/library/pictures/Animaux/corbeau.png
new file mode 100644
index 0000000..576320b
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/corbeau.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/crapaud.png b/Sankore-3.1/resources/library/pictures/Animaux/crapaud.png
new file mode 100644
index 0000000..87ef006
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/crapaud.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/crocodile.png b/Sankore-3.1/resources/library/pictures/Animaux/crocodile.png
new file mode 100644
index 0000000..f63e39e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/crocodile.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/elephant.png b/Sankore-3.1/resources/library/pictures/Animaux/elephant.png
new file mode 100644
index 0000000..f7a64f2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/elephant.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/flamand_rose.png b/Sankore-3.1/resources/library/pictures/Animaux/flamand_rose.png
new file mode 100644
index 0000000..b2b450e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/flamand_rose.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/girafe.png b/Sankore-3.1/resources/library/pictures/Animaux/girafe.png
new file mode 100644
index 0000000..c122800
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/girafe.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/gnou.png b/Sankore-3.1/resources/library/pictures/Animaux/gnou.png
new file mode 100644
index 0000000..fcc0951
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/gnou.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/grenouille.png b/Sankore-3.1/resources/library/pictures/Animaux/grenouille.png
new file mode 100644
index 0000000..cc832f1
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/grenouille.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/guepard.png b/Sankore-3.1/resources/library/pictures/Animaux/guepard.png
new file mode 100644
index 0000000..b59363b
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/guepard.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/hippopotame.png b/Sankore-3.1/resources/library/pictures/Animaux/hippopotame.png
new file mode 100644
index 0000000..a4db6e6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/hippopotame.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/hyene.png b/Sankore-3.1/resources/library/pictures/Animaux/hyene.png
new file mode 100644
index 0000000..aa6e92a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/hyene.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/jument.png b/Sankore-3.1/resources/library/pictures/Animaux/jument.png
new file mode 100644
index 0000000..dc19985
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/jument.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/lapin.png b/Sankore-3.1/resources/library/pictures/Animaux/lapin.png
new file mode 100644
index 0000000..16a438f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/lapin.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/leopard.png b/Sankore-3.1/resources/library/pictures/Animaux/leopard.png
new file mode 100644
index 0000000..f01ac8a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/leopard.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/lezard.png b/Sankore-3.1/resources/library/pictures/Animaux/lezard.png
new file mode 100644
index 0000000..73a45c9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/lezard.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/lion.png b/Sankore-3.1/resources/library/pictures/Animaux/lion.png
new file mode 100644
index 0000000..ec3e0d7
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/lion.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/mangouste.png b/Sankore-3.1/resources/library/pictures/Animaux/mangouste.png
new file mode 100644
index 0000000..15e1174
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/mangouste.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/moineau.png b/Sankore-3.1/resources/library/pictures/Animaux/moineau.png
new file mode 100644
index 0000000..b57e1a2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/moineau.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/mouche.png b/Sankore-3.1/resources/library/pictures/Animaux/mouche.png
new file mode 100644
index 0000000..9ca5792
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/mouche.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/moustique.png b/Sankore-3.1/resources/library/pictures/Animaux/moustique.png
new file mode 100644
index 0000000..7624c97
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/moustique.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/mouton.png b/Sankore-3.1/resources/library/pictures/Animaux/mouton.png
new file mode 100644
index 0000000..96feab2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/mouton.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/ouistiti.png b/Sankore-3.1/resources/library/pictures/Animaux/ouistiti.png
new file mode 100644
index 0000000..5597c04
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/ouistiti.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/panthere.png b/Sankore-3.1/resources/library/pictures/Animaux/panthere.png
new file mode 100644
index 0000000..e8610ce
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/panthere.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/pelican.png b/Sankore-3.1/resources/library/pictures/Animaux/pelican.png
new file mode 100644
index 0000000..baa99e0
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/pelican.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/perroquet.png b/Sankore-3.1/resources/library/pictures/Animaux/perroquet.png
new file mode 100644
index 0000000..d034ce3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/perroquet.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/phacochere.png b/Sankore-3.1/resources/library/pictures/Animaux/phacochere.png
new file mode 100644
index 0000000..e6fcbc7
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/phacochere.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/pintade.png b/Sankore-3.1/resources/library/pictures/Animaux/pintade.png
new file mode 100644
index 0000000..345ad2f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/pintade.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/poule.png b/Sankore-3.1/resources/library/pictures/Animaux/poule.png
new file mode 100644
index 0000000..e2530bd
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/poule.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/poule2.png b/Sankore-3.1/resources/library/pictures/Animaux/poule2.png
new file mode 100644
index 0000000..a080403
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/poule2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/python.png b/Sankore-3.1/resources/library/pictures/Animaux/python.png
new file mode 100644
index 0000000..7adddb5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/python.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/ratel.png b/Sankore-3.1/resources/library/pictures/Animaux/ratel.png
new file mode 100644
index 0000000..0f05edb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/ratel.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/sauterelle.png b/Sankore-3.1/resources/library/pictures/Animaux/sauterelle.png
new file mode 100644
index 0000000..328e226
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/sauterelle.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/souris.png b/Sankore-3.1/resources/library/pictures/Animaux/souris.png
new file mode 100644
index 0000000..bbbdf62
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/souris.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/tigre.png b/Sankore-3.1/resources/library/pictures/Animaux/tigre.png
new file mode 100644
index 0000000..1d0ac14
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/tigre.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/tortue.png b/Sankore-3.1/resources/library/pictures/Animaux/tortue.png
new file mode 100644
index 0000000..cf10c19
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/tortue.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/vache.png b/Sankore-3.1/resources/library/pictures/Animaux/vache.png
new file mode 100644
index 0000000..988f573
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/vache.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/vache2.png b/Sankore-3.1/resources/library/pictures/Animaux/vache2.png
new file mode 100644
index 0000000..b60f75c
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/vache2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/varan.png b/Sankore-3.1/resources/library/pictures/Animaux/varan.png
new file mode 100644
index 0000000..232f78f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/varan.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/vautour.png b/Sankore-3.1/resources/library/pictures/Animaux/vautour.png
new file mode 100644
index 0000000..685fc13
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/vautour.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/zebre.png b/Sankore-3.1/resources/library/pictures/Animaux/zebre.png
new file mode 100644
index 0000000..2f56126
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/zebre.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Animaux/zebre_bebe.png b/Sankore-3.1/resources/library/pictures/Animaux/zebre_bebe.png
new file mode 100644
index 0000000..4b84ed4
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Animaux/zebre_bebe.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Afrique/Afrique satellite.jpg b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/Afrique satellite.jpg
new file mode 100644
index 0000000..a594ccd
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/Afrique satellite.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique contours.gif b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique contours.gif
new file mode 100644
index 0000000..e8641c2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique contours.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique hydrographie.gif b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique hydrographie.gif
new file mode 100644
index 0000000..5eb700c
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique hydrographie.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique limites villes.gif b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique limites villes.gif
new file mode 100644
index 0000000..73582a7
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique limites villes.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique lmites.gif b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique lmites.gif
new file mode 100644
index 0000000..f399198
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/afrique lmites.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Afrique/carte_afrique.gif b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/carte_afrique.gif
new file mode 100644
index 0000000..a6f40e9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Afrique/carte_afrique.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_pays_muette.png b/Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_pays_muette.png
new file mode 100644
index 0000000..0aa904f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_pays_muette.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_satellite.jpg b/Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_satellite.jpg
new file mode 100644
index 0000000..5aa687f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Europe/Europe_satellite.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/France/France satellite.jpg b/Sankore-3.1/resources/library/pictures/Cartes/France/France satellite.jpg
new file mode 100644
index 0000000..c015dc4
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/France/France satellite.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/France/france departements.gif b/Sankore-3.1/resources/library/pictures/Cartes/France/france departements.gif
new file mode 100644
index 0000000..862927c
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/France/france departements.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/France/france hydrographie.gif b/Sankore-3.1/resources/library/pictures/Cartes/France/france hydrographie.gif
new file mode 100644
index 0000000..52eacc1
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/France/france hydrographie.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/France/france regions.gif b/Sankore-3.1/resources/library/pictures/Cartes/France/france regions.gif
new file mode 100644
index 0000000..18ca5be
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/France/france regions.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/France/france vierge.gif b/Sankore-3.1/resources/library/pictures/Cartes/France/france vierge.gif
new file mode 100644
index 0000000..e70a1c5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/France/france vierge.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/France/france villes.gif b/Sankore-3.1/resources/library/pictures/Cartes/France/france villes.gif
new file mode 100644
index 0000000..1e938ba
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/France/france villes.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Monde/pays couleurs.gif b/Sankore-3.1/resources/library/pictures/Cartes/Monde/pays couleurs.gif
new file mode 100644
index 0000000..f6921f5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Monde/pays couleurs.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Monde/pays.gif b/Sankore-3.1/resources/library/pictures/Cartes/Monde/pays.gif
new file mode 100644
index 0000000..fcec5a5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Monde/pays.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Cartes/Monde/vierge.gif b/Sankore-3.1/resources/library/pictures/Cartes/Monde/vierge.gif
new file mode 100644
index 0000000..3c6ee28
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Cartes/Monde/vierge.gif differ
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/worldmap.svg b/Sankore-3.1/resources/library/pictures/Cartes/Monde/worldmap.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/worldmap.svg
rename to Sankore-3.1/resources/library/pictures/Cartes/Monde/worldmap.svg
diff --git a/Sankore-3.1/resources/library/pictures/Decors/bananiers.jpg b/Sankore-3.1/resources/library/pictures/Decors/bananiers.jpg
new file mode 100644
index 0000000..69eab8a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/bananiers.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/campagne.png b/Sankore-3.1/resources/library/pictures/Decors/campagne.png
new file mode 100644
index 0000000..f89b95e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/campagne.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/case1.png b/Sankore-3.1/resources/library/pictures/Decors/case1.png
new file mode 100644
index 0000000..d63fde9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/case1.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/case2.png b/Sankore-3.1/resources/library/pictures/Decors/case2.png
new file mode 100644
index 0000000..d29170a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/case2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/case_fenetre.png b/Sankore-3.1/resources/library/pictures/Decors/case_fenetre.png
new file mode 100644
index 0000000..f601769
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/case_fenetre.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/champs.png b/Sankore-3.1/resources/library/pictures/Decors/champs.png
new file mode 100644
index 0000000..7f83eba
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/champs.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/champs_haiti.jpg b/Sankore-3.1/resources/library/pictures/Decors/champs_haiti.jpg
new file mode 100644
index 0000000..86620a0
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/champs_haiti.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/chemin.png b/Sankore-3.1/resources/library/pictures/Decors/chemin.png
new file mode 100644
index 0000000..9884dcc
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/chemin.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/chemin2.png b/Sankore-3.1/resources/library/pictures/Decors/chemin2.png
new file mode 100644
index 0000000..712665b
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/chemin2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/flamboyant.jpg b/Sankore-3.1/resources/library/pictures/Decors/flamboyant.jpg
new file mode 100644
index 0000000..cc5c2c8
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/flamboyant.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/lac.jpg b/Sankore-3.1/resources/library/pictures/Decors/lac.jpg
new file mode 100644
index 0000000..6567e87
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/lac.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/lac.png b/Sankore-3.1/resources/library/pictures/Decors/lac.png
new file mode 100644
index 0000000..2d5fa2f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/lac.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/maison_riviere.jpg b/Sankore-3.1/resources/library/pictures/Decors/maison_riviere.jpg
new file mode 100644
index 0000000..8a06793
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/maison_riviere.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/marigot.jpg b/Sankore-3.1/resources/library/pictures/Decors/marigot.jpg
new file mode 100644
index 0000000..6ca5ae3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/marigot.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/palmiers.jpg b/Sankore-3.1/resources/library/pictures/Decors/palmiers.jpg
new file mode 100644
index 0000000..e74609d
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/palmiers.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/plage.png b/Sankore-3.1/resources/library/pictures/Decors/plage.png
new file mode 100644
index 0000000..d98e6f9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/plage.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/porte_ouverte.png b/Sankore-3.1/resources/library/pictures/Decors/porte_ouverte.png
new file mode 100644
index 0000000..c9b0d67
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/porte_ouverte.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/village.jpg b/Sankore-3.1/resources/library/pictures/Decors/village.jpg
new file mode 100644
index 0000000..3cec5fb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/village.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Decors/village_haiti.jpg b/Sankore-3.1/resources/library/pictures/Decors/village_haiti.jpg
new file mode 100644
index 0000000..9bb4237
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Decors/village_haiti.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Algerie.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Algerie.svg
new file mode 100644
index 0000000..4247aa7
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Algerie.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600">
+<rect fill="#fff" width="900" height="600"/>
+<rect fill="#006233" width="450" height="600"/>
+<path fill="#d21034" d="M580,225a150,150 0 1,0 0,150 120,120 0 1,1 0-150m5,75-135-44 84,115v-142l-84,115z"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Belgique.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Belgique.png
new file mode 100644
index 0000000..bfe80bb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Belgique.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Benin.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Benin.png
new file mode 100644
index 0000000..8bb7679
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Benin.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Burkina_Faso.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Burkina_Faso.png
new file mode 100644
index 0000000..73b2561
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Burkina_Faso.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Burundi.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Burundi.svg
new file mode 100644
index 0000000..b4a7cd5
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Burundi.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800" height="480" viewBox="-125,-75 250,150">
+	<defs>
+		<g id="star">
+			<g id="t">
+				<g id="c">
+					<path id="h" d="M 0,-10 V 0 H 10" transform="rotate(30 0,-10)"/>
+					<use xlink:href="#h" transform="scale(-1,1)"/>
+				</g>
+				<use xlink:href="#c" transform="rotate(120)"/>
+				<use xlink:href="#c" transform="rotate(240)"/>
+			</g>
+			<use xlink:href="#t" transform="rotate(180)"/>
+		</g>
+	</defs>
+	<path d="M -125,-75 H 125 L -125,75 H 125 z" fill="#ce1126"/>
+	<path d="M -125,-75 V 75 L 125,-75 V 75 z" fill="#1eb53a"/>
+	<path d="M -125,-75 L 125,75 M 125,-75 L -125,75" stroke="#fff" stroke-width="20"/>
+	<circle r="42.5" fill="#fff"/>
+	<use id="green" xlink:href="#star" y="-22" fill="#1eb53a"/>
+	<use xlink:href="#green" transform="rotate(120)"/>
+	<use xlink:href="#green" transform="rotate(240)"/>
+	<use id="red" xlink:href="#star" transform="translate(0,-22) scale(.82)" fill="#ce1126"/>
+	<use xlink:href="#red" transform="rotate(120)"/>
+	<use xlink:href="#red" transform="rotate(240)"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Cameroun.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Cameroun.svg
new file mode 100644
index 0000000..8c01757
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Cameroun.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400" viewBox="0,0 90,60">
+	<rect width="30" height="60" fill="#007a5e"/>
+	<rect x="30" width="30" height="60" fill="#ce1126"/>
+	<rect x="60" width="30" height="60" fill="#fcd116"/>
+	<g transform="translate(45,30)" fill="#fcd116">
+		<g id="c">
+			<path id="t" d="M 0,-8 v 8 h 4 z" transform="rotate(18 0,-8)"/>
+			<use xlink:href="#t" transform="scale(-1,1)"/>
+		</g>
+		<use xlink:href="#c" transform="rotate(72)"/>
+		<use xlink:href="#c" transform="rotate(144)"/>
+		<use xlink:href="#c" transform="rotate(216)"/>
+		<use xlink:href="#c" transform="rotate(288)"/>
+	</g>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Canada.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Canada.svg
new file mode 100644
index 0000000..4322c03
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Canada.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1000"
+   height="600"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="Drapeau_du_Canada.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata13">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs11">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 250 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1000 : 250 : 1"
+       inkscape:persp3d-origin="500 : 166.66667 : 1"
+       id="perspective15" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="669"
+     inkscape:window-width="746"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="true"
+     inkscape:zoom="0.544"
+     inkscape:cx="153.49265"
+     inkscape:cy="278.60392"
+     inkscape:window-x="161"
+     inkscape:window-y="161"
+     inkscape:current-layer="svg2">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2381"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <rect
+     width="1000"
+     height="600"
+     id="rect4"
+     x="0"
+     y="0"
+     style="fill:#ff0000" />
+  <rect
+     width="500"
+     height="600"
+     x="250"
+     id="rect6"
+     y="0"
+     style="fill:#ffffff" />
+  <path
+     d="M 499.99228,96.875 L 465.87916,160.50029 C 462.0083,167.4153 455.07289,166.77392 448.13747,162.91167 L 423.44048,150.12309 L 441.84753,247.8502 C 445.71839,265.70439 433.29894,265.70439 427.16988,257.98455 L 384.06883,209.73356 L 377.07145,234.23656 C 376.26453,237.45433 372.71664,240.834 367.39397,240.02917 L 312.8922,228.57005 L 327.20744,280.6148 C 330.27195,292.19534 332.66234,296.99008 324.11369,300.04439 L 304.6875,309.17464 L 398.50877,385.38302 C 402.22227,388.26453 404.09848,393.45002 402.77645,398.14512 L 394.56509,425.09219 C 426.86914,421.36848 455.81407,415.76625 488.13448,412.316 C 490.98771,412.01141 495.76436,416.72008 495.74477,420.02658 L 491.46453,518.75 L 507.17092,518.75 L 504.69855,420.2383 C 504.67885,416.9318 509.01227,412.01141 511.8655,412.316 C 544.18591,415.76626 573.13088,421.36848 605.43492,425.09219 L 597.22358,398.14512 C 595.90155,393.45002 597.77775,388.26453 601.49125,385.38302 L 695.3125,309.17464 L 675.88633,300.04439 C 667.33766,296.99008 669.72805,292.19534 672.79256,280.6148 L 687.10783,228.57005 L 632.60603,240.02917 C 627.28336,240.834 623.73547,237.45433 622.92853,234.23656 L 615.93116,209.73356 L 572.83013,257.98455 C 566.70105,265.70439 554.28159,265.70439 558.15245,247.8502 L 576.55947,150.12309 L 551.86253,162.91167 C 544.92694,166.77392 537.9917,167.4153 534.12083,160.50029"
+     id="path8"
+     style="fill:#ff0000" />
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Centre-Afrique.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Centre-Afrique.svg
new file mode 100644
index 0000000..b721e95
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Centre-Afrique.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="450" height="300" viewBox="0 0 1200 800"><title>Flag of the Central African Republic</title>
+<rect height="200" width="1200" y="0" x="0" fill="#003082"/>
+<rect height="200" width="1200" y="200" x="0" fill="#FFF"/>
+<rect height="200" width="1200" y="400" x="0" fill="#289728"/>
+<rect height="200" width="1200" y="600" x="0" fill="#FFCE00"/>
+<rect height="800" width="200" y="0" x="500" fill="#D21034"/>
+<polygon fill="#FFCE00" points="0,-1,0.22451,-0.30902,0.95106,-0.30902,0.36327,0.11803,0.58779,0.80902,0,0.38197,-0.58779,0.80902,-0.36327,0.11803,-0.95106,-0.30902,-0.22451,-0.30902" transform="translate(200,108.59425) scale(90)"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Comores.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Comores.svg
new file mode 100644
index 0000000..30b29df
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Comores.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="300">
+	<rect width="500" height="300" fill="#ffc61e"/>
+	<rect y="75" width="500" height="225" fill="#fff"/>
+	<rect y="150" width="500" height="150" fill="#ce1126"/>
+	<rect y="225" width="500" height="75" fill="#3a75c4"/>
+	<path d="M 0,300 L 250,150 L 0,0 V 300 z" fill="#3d8e33"/>
+	<circle cx="85" cy="150" r="67.5" fill="#fff"/>
+	<circle cx="115" cy="150" r="67.5" fill="#3d8e33"/>
+	<path id="star" d="M 88.11244,97.825 L 97.19453,97.825 L 100,89.1875 L 102.80545,97.825 L 111.88755,97.825 L 104.54104,103.1625 L 107.34651,111.8 L 100,106.46249 L 92.65349,111.8 L 95.45895,103.1625 L 88.11244,97.825 z" fill="#fff"/>
+	<use xlink:href="#star" y="32.2083"/>
+	<use xlink:href="#star" y="64.4166"/>
+	<use xlink:href="#star" y="96.625"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Congo.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Congo.svg
new file mode 100644
index 0000000..d5623f5
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Congo.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg	xmlns="http://www.w3.org/2000/svg"
+	width="600"
+	height="400"
+	viewBox="0 0 3 2">
+<rect id="green_area" width="3" height="2" fill="#009543"/>
+<path id="yellow_area" d="M 0 2 L 2 0 h 1 v 2 z" fill="#FBDE4A"/>
+<path id="red_area" d="M 3 0 v 2 h -2 z" fill="#DC241F"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Cote_d'Ivoire.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Cote_d'Ivoire.png
new file mode 100644
index 0000000..24719db
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Cote_d'Ivoire.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Djibouti.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Djibouti.svg
new file mode 100644
index 0000000..456186b
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Djibouti.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="600"  height="400" viewBox="0 0 15 10">
+<rect width="15" height="10" id="blue" style="fill:#6ab2e7"/>
+<rect width="15" height="5" y="5" id="green"  style="fill:#12ad2b"/>
+<path d="M 0,0 0,5 0,10 4.330127,7.5 8.660254,5 4.330127,2.5 0,0 z" id="path6904" style="fill:#fff"/>
+<path d="m 3.3143278,3.75 0.3102707,0.954915 1.0040571,0 L 3.8163564,5.295085 4.126627,6.25 3.3143278,5.65983 2.5020286,6.25 2.8122992,5.295085 2,4.704915 l 1.004057,0 L 3.3143278,3.75 z" id="path6929" style="fill:#d7141a"/></svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Europe.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Europe.png
new file mode 100644
index 0000000..316696a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Europe.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/France.png b/Sankore-3.1/resources/library/pictures/Drapeaux/France.png
new file mode 100644
index 0000000..1000667
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/France.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Gabon.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Gabon.svg
new file mode 100644
index 0000000..f338c84
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Gabon.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300">
+<rect fill="#3a75c4" width="400" height="300"/>
+<rect fill="#fcd116" width="400" height="200"/>
+<rect fill="#009e60" width="400" height="100"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Guinee equatoriale.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Guinee equatoriale.svg
new file mode 100644
index 0000000..24803a7
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Guinee equatoriale.svg	
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1"
+     width="1200" height="800" viewBox="0 0 3600 2400">
+  <title>Flag of Equatorial Guinea</title>
+  <rect x="0" y="0" width="3600" height="2400" style="fill:#E32118" />
+  <rect x="0" y="0" width="3600" height="1600" style="fill:#FFFFFF" />
+  <rect x="0" y="0" width="3600" height="800"  style="fill:#3E9A00" />
+  <polygon points="0,0 0,2400 900,1200 0,0" style="fill:#0073CE" />
+  <g style="fill:#FFFFFF; stroke:#000000; stroke-width:3.5;">
+    <polygon points="2027,1352 2052,1388 2052,1388 2075,1354 2059,1325 2027,1352" />
+    <path d="M 1868,1457 L 1870,1493 C 1870,1493 1880,1493 1889,1490 C 1897,1487 1904,1481 1904,1481 L 1903,1462 L 1868,1457 L 1868,1457 z" />
+    <path d="M 1734,1457 L 1732,1492 C 1732,1492 1723,1492 1714,1490 C 1706,1488 1699,1483 1699,1483 L 1689,1459 L 1734,1457 L 1734,1457 z" />
+    <path d="M 1608,958.8 L 1991,958.8 L 1991,1360 C 1991,1495 1815,1391 1800,1463 C 1774,1389 1609,1496 1609,1352 C 1609,1212 1608,958.8 1608,958.8 L 1608,958.8 z" style="stroke-width:4.8" />
+    <polygon points="1573,1352 1547,1388 1519,1342 1540,1320 1573,1352" />
+  </g>
+  <g style="fill:#FFD700; stroke:#000000; stroke-width:3.5;">
+    <polygon points="1787,902.6 1765,903.6 1754,923.3 1742,904.5 1720,905.4 1730,885.6 1718,866.8 1741,865.8 1751,846.1 1763,864.9 1785,864 1775,883.8 1787,902.6" />
+    <polygon points="1693,909.9 1671,915.3 1665,936.6 1649,920.6 1628,925.8 1634,904.5 1619,888.3 1640,883 1646,861.6 1662,877.6 1684,872.4 1677,893.8 1693,909.9" />
+    <polygon points="1602,928.6 1582,938.5 1581,960.7 1562,948.5 1542,958.3 1544,936.1 1525,923.8 1545,913.8 1547,891.6 1565,903.8 1585,894 1584,916.2 1602,928.6" />
+    <polygon points="1816,902.6 1838,903.6 1848,923.3 1860,904.5 1882,905.4 1872,885.6 1884,866.8 1862,865.8 1851,846.1 1839,864.9 1817,864 1827,883.8 1816,902.6" />
+    <polygon points="1910,909.9 1931,915.3 1937,936.6 1953,920.6 1974,925.8 1968,904.5 1984,888.3 1962,883 1956,861.6 1940,877.6 1919,872.4 1925,893.8 1910,909.9" />
+    <polygon points="2000,928.6 2020,938.5 2021,960.7 2040,948.5 2060,958.3 2059,936.1 2077,923.8 2057,913.8 2056,891.6 2037,903.8 2017,894 2019,916.2 2000,928.6" />
+  </g>
+  <g style="fill:#FFFFFF; stroke:#000000; stroke-width:3.5;">
+    <path d="M 1698,1481 L 1698,1529 C 1698,1563 1904,1563 1904,1529 L 1904,1481 C 1904,1506 1698,1501 1698,1481 z" />
+    <path d="M 1514,1418 C 1532,1510 1698,1512 1698,1512 C 1698,1512 1698,1481 1698,1481 C 1694,1469 1701,1465 1728,1461 C 1739,1460 1734,1444 1734,1444 C 1734,1444 1662,1457 1611,1437 C 1542,1409 1532,1355 1532,1355 C 1532,1355 1527,1397 1514,1418 L 1514,1418 z" />
+    <path d="M 2087,1418 C 2070,1510 1904,1512 1904,1512 C 1904,1512 1904,1481 1904,1481 C 1907,1469 1900,1465 1873,1461 C 1862,1460 1868,1444 1868,1444 C 1868,1444 1940,1457 1991,1437 C 2059,1409 2067,1355 2067,1355 C 2067,1355 2074,1397 2087,1418 L 2087,1418 z" />
+    <path d="M 1527,1383 C 1481,1358 1517,1332 1521,1258 C 1528,1303 1579,1322 1573,1351 C 1552,1352 1542,1320 1532,1355 C 1532,1355 1527,1383 1527,1383 L 1527,1383 z" />
+    <path d="M 2074,1383 C 2120,1357 2082,1332 2078,1258 C 2071,1303 2021,1322 2027,1351 C 2047,1352 2057,1320 2067,1355 C 2067,1355 2074,1382 2074,1382 L 2074,1383 z" />
+  </g>
+  <path d="M 1761,1541 L 1761,1509 L 1771,1509 C 1775,1509 1778,1509 1779,1509 C 1781,1510 1783,1511 1784,1512 C 1785,1514 1786,1516 1786,1518 C 1786,1520 1785,1522 1785,1523 C 1784,1525 1783,1526 1782,1527 C 1781,1527 1780,1528 1779,1528 C 1777,1528 1775,1529 1772,1529 L 1768,1529 L 1768,1541 L 1761,1541 L 1761,1541 z M 1768,1514 L 1768,1523 L 1771,1523 C 1774,1523 1775,1523 1776,1523 C 1777,1522 1778,1522 1778,1521 C 1779,1520 1779,1520 1779,1519 C 1779,1517 1779,1516 1778,1516 C 1777,1515 1776,1514 1775,1514 C 1775,1514 1773,1514 1771,1514 L 1768,1514 L 1768,1514 z M 1817,1541 L 1810,1541 L 1807,1533 L 1794,1533 L 1791,1541 L 1784,1541 L 1797,1509 L 1804,1509 L 1817,1541 L 1817,1541 z M 1805,1528 L 1800,1516 L 1796,1528 L 1805,1528 z M 1817,1541 L 1817,1535 L 1834,1514 L 1819,1514 L 1819,1509 L 1843,1509 L 1843,1514 L 1825,1535 L 1843,1535 L 1843,1541 L 1817,1541 L 1817,1541 z" style="fill:#000000; fill-rule:nonzero;" />
+  <path d="M 1827,1399 C 1827,1399 1822,1404 1813,1400 C 1804,1396 1803,1143 1803,1143 C 1823,1121 1839,1114 1839,1114 C 1839,1114 1851,1124 1851,1124 C 1806,1147 1810,1180 1814,1237 C 1815,1258 1815,1285 1820,1311 C 1827,1344 1841,1372 1842,1393 C 1843,1406 1827,1399 1827,1399 L 1827,1399 z" style="fill:#73452B; stroke:#000000; stroke-width:1;" />
+  <path d="M 1796,1108 L 1814,1108 C 1799,1253 1812,1339 1812,1381 C 1812,1395 1820,1400 1819,1400 C 1801,1420 1792,1399 1792,1399 L 1796,1108 L 1796,1108 z" style="fill:#73452B; stroke:#000000; stroke-width:1;" />
+  <path d="M 1768,1399 C 1751,1407 1749,1391 1750,1389 C 1787,1314 1803,1149 1769,1131 C 1769,1131 1771,1115 1771,1115 C 1784,1119 1796,1136 1796,1136 C 1801,1321 1796,1397 1793,1400 C 1775,1419 1768,1397 1767,1395" style="fill:#A36629;stroke:#000000;stroke-width:1;" />
+  <path d="M 1767,1396 C 1764,1380 1793,1339 1791,1296" style="fill:none; stroke:#000000; stroke-width:1;" />
+  <path d="M 1816,1331 C 1825,1356 1829,1378 1827,1399" style="fill:none; stroke:#000000; stroke-width:1;" />
+  <path d="M 1855,1040 C 1861,1033 1861,1033 1872,1033 C 1874,1018 1899,1018 1901,1037 C 1921,1033 1925,1045 1917,1057 C 1936,1052 1953,1057 1948,1079 C 1982,1088 1969,1112 1954,1117 C 1952,1132 1938,1137 1919,1131 C 1895,1148 1881,1142 1870,1125 C 1843,1129 1841,1123 1829,1108 C 1808,1117 1804,1117 1786,1106 C 1785,1120 1780,1116 1771,1115 C 1772,1133 1765,1141 1749,1135 C 1761,1160 1730,1171 1715,1150 C 1701,1151 1700,1147 1693,1142 C 1687,1162 1665,1159 1661,1148 C 1633,1144 1636,1129 1659,1128 C 1661,1112 1675,1115 1684,1117 C 1685,1107 1691,1109 1696,1111 C 1693,1104 1695,1100 1704,1098 C 1691,1081 1699,1075 1712,1069 C 1705,1053 1717,1054 1726,1053 C 1725,1036 1730,1033 1748,1031 C 1746,1025 1749,1020 1759,1020 C 1753,1003 1761,999.1 1779,1002 C 1782,977.3 1835,989 1831,1023 C 1846,1025 1851,1028 1855,1040 L 1855,1040 z" style="fill:#009A3B; stroke:#000000; stroke-width:1;" />
+  <g style="fill:none; stroke:#000000; stroke-width:1;">
+    <path d="M 1748,1031 C 1752,1033 1757,1031 1758,1042 C 1766,1028 1776,1036 1776,1052" />
+    <path d="M 1831,1023 C 1827,1029 1812,1029 1814,1045 C 1809,1038 1799,1036 1795,1043" />
+    <path d="M 1855,1040 C 1855,1044 1854,1056 1850,1062" />
+    <path d="M 1917,1057 C 1918,1058 1903,1057 1896,1062" />
+    <path d="M 1954,1117 C 1950,1115 1942,1110 1936,1118 C 1936,1114 1936,1103 1925,1103" />
+    <path d="M 1919,1131 C 1919,1121 1917,1118 1915,1115" />
+    <path d="M 1886,1117 C 1878,1111 1870,1120 1870,1125" />
+    <path d="M 1828,1108 C 1828,1104 1825,1096 1832,1093" />
+    <path d="M 1714,1150 C 1716,1140 1723,1140 1722,1135 C 1721,1127 1712,1120 1701,1131" />
+    <path d="M 1722,1135 C 1728,1133 1734,1134 1736,1137" />
+    <path d="M 1705,1098 C 1709,1094 1719,1095 1725,1098" />
+    <path d="M 1725,1074 C 1730,1074 1739,1072 1742,1081 C 1753,1064 1761,1066 1763,1070" />
+    <path d="M 1783,1068 C 1791,1065 1805,1073 1813,1087 C 1817,1076 1823,1078 1829,1077" />
+    <path d="M 1867,1087 C 1880,1081 1888,1093 1892,1098 C 1898,1090 1903,1090 1909,1090" />
+    <path d="M 1746,1111 C 1749,1106 1756,1105 1761,1108 C 1760,1099 1766,1095 1770,1097" />
+  </g>
+  <path d="M 1555,1417 L 1560,1421 L 1549,1433 C 1547,1435 1546,1437 1546,1437 C 1545,1439 1545,1440 1545,1441 C 1545,1442 1546,1443 1547,1444 C 1548,1446 1550,1446 1551,1446 C 1552,1446 1553,1446 1554,1445 C 1555,1445 1556,1444 1557,1442 L 1569,1429 L 1573,1433 L 1563,1445 C 1560,1448 1558,1450 1557,1451 C 1556,1452 1555,1452 1553,1452 C 1552,1452 1550,1452 1549,1452 C 1547,1451 1546,1450 1544,1449 C 1542,1447 1540,1445 1540,1443 C 1539,1442 1539,1440 1539,1439 C 1539,1438 1539,1436 1540,1435 C 1540,1434 1542,1432 1544,1429 L 1555,1417 L 1555,1417 z M 1558,1460 L 1575,1434 L 1580,1437 L 1579,1461 L 1590,1444 L 1595,1447 L 1579,1473 L 1573,1470 L 1574,1446 L 1563,1463 L 1558,1460 L 1558,1460 z M 1584,1476 L 1598,1448 L 1603,1451 L 1590,1478 L 1584,1476 L 1584,1476 z M 1606,1452 L 1616,1456 C 1619,1457 1620,1458 1621,1459 C 1623,1460 1624,1461 1625,1463 C 1626,1465 1626,1466 1626,1468 C 1626,1471 1625,1473 1624,1476 C 1624,1478 1623,1480 1621,1481 C 1620,1483 1618,1485 1616,1485 C 1615,1486 1613,1486 1612,1486 C 1610,1486 1608,1486 1606,1485 L 1595,1481 L 1606,1452 L 1606,1452 z M 1610,1459 L 1603,1478 L 1607,1480 C 1609,1480 1610,1481 1611,1481 C 1612,1481 1613,1481 1614,1481 C 1614,1480 1615,1479 1616,1478 C 1617,1477 1618,1475 1618,1473 C 1619,1471 1620,1469 1620,1468 C 1620,1467 1620,1465 1619,1465 C 1619,1464 1618,1463 1617,1462 C 1616,1462 1615,1461 1612,1460 L 1610,1459 L 1610,1459 z M 1652,1496 L 1645,1495 L 1644,1488 L 1632,1485 L 1628,1492 L 1621,1490 L 1639,1463 L 1645,1464 L 1652,1496 L 1652,1496 z M 1643,1482 L 1641,1470 L 1635,1481 L 1643,1482 L 1643,1482 z M 1656,1466 L 1668,1466 C 1670,1467 1672,1467 1673,1467 C 1675,1468 1677,1469 1678,1470 C 1679,1472 1680,1473 1680,1475 C 1681,1477 1681,1480 1681,1483 C 1681,1485 1681,1487 1680,1489 C 1679,1491 1678,1493 1676,1494 C 1675,1495 1674,1496 1672,1497 C 1671,1497 1669,1497 1666,1497 L 1655,1496 L 1656,1466 L 1656,1466 z M 1662,1471 L 1661,1492 L 1666,1492 C 1668,1492 1669,1492 1670,1492 C 1671,1491 1671,1491 1672,1491 C 1673,1490 1673,1489 1674,1488 C 1674,1486 1675,1484 1675,1482 C 1675,1480 1675,1478 1674,1477 C 1674,1475 1674,1474 1673,1474 C 1672,1473 1671,1472 1670,1472 C 1669,1472 1667,1472 1665,1472 L 1662,1471 L 1662,1471 z" style="fill:#000000" />
+  <path d="M 1918,1473 L 1924,1472 L 1927,1490 C 1927,1493 1927,1495 1927,1496 C 1926,1498 1925,1499 1924,1501 C 1923,1502 1921,1503 1918,1503 C 1915,1503 1913,1503 1911,1501 C 1909,1500 1908,1498 1908,1494 L 1913,1493 C 1914,1495 1914,1496 1915,1497 C 1915,1498 1916,1498 1918,1498 C 1919,1498 1920,1497 1920,1496 C 1921,1495 1921,1494 1921,1491 L 1918,1472 L 1918,1473 z M 1928,1471 L 1934,1470 L 1937,1486 C 1938,1488 1938,1490 1938,1491 C 1939,1492 1940,1493 1941,1493 C 1942,1494 1943,1494 1945,1493 C 1947,1493 1948,1492 1948,1492 C 1949,1491 1950,1490 1949,1489 C 1949,1488 1949,1486 1949,1484 L 1945,1468 L 1951,1467 L 1954,1482 C 1955,1485 1955,1488 1955,1489 C 1955,1491 1955,1492 1954,1493 C 1954,1494 1953,1495 1952,1496 C 1950,1497 1948,1498 1946,1498 C 1943,1499 1941,1499 1940,1499 C 1938,1498 1937,1498 1936,1497 C 1935,1496 1934,1495 1933,1494 C 1933,1492 1932,1490 1931,1487 L 1928,1471 L 1928,1471 z M 1959,1485 L 1964,1483 C 1965,1485 1966,1486 1968,1486 C 1969,1487 1971,1487 1972,1486 C 1974,1486 1975,1485 1976,1484 C 1977,1483 1977,1482 1977,1481 C 1976,1480 1976,1480 1976,1479 C 1975,1479 1974,1479 1973,1479 C 1972,1479 1971,1479 1968,1479 C 1965,1479 1962,1479 1961,1478 C 1959,1477 1957,1475 1956,1473 C 1956,1472 1956,1470 1956,1469 C 1957,1467 1958,1466 1959,1465 C 1960,1464 1962,1463 1964,1462 C 1968,1461 1971,1461 1973,1462 C 1975,1463 1977,1465 1978,1467 L 1972,1469 C 1971,1468 1971,1467 1970,1467 C 1969,1466 1967,1466 1966,1467 C 1964,1467 1963,1468 1962,1469 C 1962,1470 1962,1470 1962,1471 C 1962,1472 1962,1472 1963,1473 C 1964,1473 1966,1473 1969,1473 C 1972,1473 1974,1473 1976,1473 C 1977,1473 1979,1474 1980,1475 C 1981,1476 1982,1477 1982,1479 C 1983,1481 1983,1482 1982,1484 C 1982,1486 1981,1487 1980,1488 C 1978,1489 1976,1490 1974,1491 C 1970,1492 1967,1492 1965,1491 C 1962,1490 1960,1488 1959,1485 L 1959,1485 z M 1996,1483 L 1986,1460 L 1978,1464 L 1976,1459 L 1998,1450 L 2000,1454 L 1992,1458 L 2001,1480 L 1996,1483 L 1996,1483 z M 2013,1475 L 1999,1449 L 2004,1446 L 2018,1472 L 2013,1475 L 2013,1475 z M 2033,1451 L 2039,1449 C 2040,1452 2040,1455 2039,1457 C 2038,1460 2037,1462 2034,1464 C 2030,1466 2027,1466 2023,1465 C 2020,1464 2017,1462 2014,1458 C 2012,1454 2011,1450 2012,1446 C 2012,1443 2014,1440 2018,1437 C 2021,1436 2024,1435 2027,1436 C 2029,1436 2031,1437 2033,1439 L 2028,1443 C 2027,1442 2026,1441 2024,1441 C 2023,1441 2022,1441 2020,1442 C 2018,1443 2017,1445 2017,1447 C 2017,1449 2018,1451 2019,1454 C 2021,1458 2023,1459 2025,1460 C 2027,1461 2029,1460 2031,1459 C 2032,1458 2033,1457 2034,1456 C 2034,1454 2034,1453 2033,1451 L 2033,1451 z M 2048,1454 L 2030,1430 L 2035,1426 L 2053,1450 L 2048,1454 L 2048,1454 z M 2077,1429 L 2072,1433 L 2066,1430 L 2057,1438 L 2060,1444 L 2055,1449 L 2044,1419 L 2049,1415 L 2077,1429 L 2077,1429 z M 2061,1427 L 2051,1422 L 2055,1433 L 2061,1427 L 2061,1427 z" style="fill:#000000" />
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Guinee.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Guinee.svg
new file mode 100644
index 0000000..ad80df0
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Guinee.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="450" height="300" viewBox="0 0 3 2">
+<rect width="1" height="2" fill="#ce1126"/>
+<rect width="1" height="2" x="1" fill="#fcd116"/>
+<rect width="1" height="2" x="2" fill="#009460"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Haiti.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Haiti.svg
new file mode 100644
index 0000000..e49e9ab
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Haiti.svg
@@ -0,0 +1,226 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="300" viewBox="0 0 500 300">
+<title>Flag of Haiti</title>
+<defs id="defs3766" />
+<rect width="500" height="300" x="0" y="-3.8146973e-06" id="rect6538" style="opacity:1;fill:#00209f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.99999998;stroke-opacity:1" />
+<rect width="500" height="150" x="0" y="150" id="rect6540" style="opacity:1;fill:#d21034;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.99999998;stroke-opacity:1" />
+<g transform="matrix(0.1859364,0,0,0.1793841,202.67919,112.28368)" id="g2562">
+<rect width="509" height="420" x="0" y="0" id="Background" style="opacity:1;fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 356.9375,303.71875 L 253.0625,306.84375 L 149.65625,308.0625 C 149.65625,308.0625 96.529978,328.4295 74.8125,333 C 53.158973,337.55705 55.974722,344.93112 39.21875,348.8125 C 25.797629,351.92139 24.249729,352.90168 16.375,353.4375 C 11.60973,353.76175 5.7404427,357.56203 0,361.75 L 0,420 L 509,420 L 509,364.59375 C 503.48266,361.47741 498.22485,359.3336 492.84375,357.4375 C 485.36642,354.80276 480.32738,351.92139 466.90625,348.8125 C 450.15028,344.93112 452.96603,337.55706 431.3125,333 C 409.59502,328.42949 356.93751,303.71874 356.9375,303.71875 z" id="Island" style="opacity:1;fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#016a16;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 247.8125,74.25 L 245.3125,124.8125 L 260.90625,124.8125 L 258.625,74.6875 L 274.87964,72.321249 L 273.07926,52.351362 L 232.68608,53.967623 L 232.91198,72.102499 L 247.8125,74.25 z" id="Palm-center" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#016a16;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g id="Reflected-elements">
+<g id="g3357">
+<g transform="translate(-520,0)" id="Pikes">
+<path d="M 730.96858,213.29843 L 717.40838,183.06283 L 723.27225,181.7801 L 748.01047,231.98953 L 730.96858,213.29843 z" id="path2976" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 699.63351,147.69633 L 714.65969,190.20942 L 722.35602,190.20942 L 699.63351,147.69633 z" id="path2970" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 745.07854,174.08377 L 752.59162,173.90052 L 766.33508,233.82199 L 763.40315,252.69634 L 745.07854,174.08377 z" id="path2980" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 751.49215,235.8377 L 728.40314,171.51832 L 737.01571,170.96859 L 763.95288,249.58115 L 751.49215,235.8377 z" id="path2978" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 717.59162,134.86911 L 727.12042,179.58115 L 734.81675,179.58115 L 717.59162,134.86911 z" id="path2972" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 737.19896,134.13612 L 742.32985,180.31413 L 747.82723,179.94764 L 737.19896,134.13612 z" id="path2974" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="translate(-520,0)" id="Flags">
+<path d="M 732.81159,217.85861 L 671.30897,148.26448 C 652.10004,164.03031 655.66882,192.9795 655.66882,192.9795 L 725.35394,249.65173 L 732.81159,217.85861 z" id="path3038" style="fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 768.37317,256.15906 L 722.74786,208.25311 C 703.4585,208.94697 718.76442,238.79662 719.73582,242.54347 L 768.37317,285.6595 L 768.37317,256.15906 z" id="path3019" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g id="g2996">
+<path d="M 764.48979,247.92378 L 670.15953,143.22878 L 666.47814,145.92442 L 766.30384,260.88246 L 764.48979,247.92378 z" id="path2990" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 664.7091,136.51503 L 662.63835,134.03014 L 662.84543,129.06035 L 643.38043,116.22173 L 652.07755,136.51503 L 658.70394,137.75748 L 660.77468,140.24237 L 664.7091,136.51503 z" id="path2992" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 654.76952,143.96971 C 658.08271,139.82822 662.01713,135.68674 669.05766,131.75232 L 674.4416,139.82822 L 662.84543,149.97487 L 654.76952,143.96971 z" id="path2994" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<path d="M 705.94102,236.30061 L 628.67258,172.68662 C 615.44379,186.64028 626.44244,229.72435 626.44244,229.72435 L 701.96412,272.13172 L 705.94102,236.30061 z" id="path3042" style="fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 770.01498,287.83835 L 706.45399,235.06355 C 684.7472,238.22095 701.81145,271.3331 703.1057,274.98102 L 770.23106,312.7127 L 770.01498,287.83835 z" id="path3034" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g transform="matrix(0.9848077,-0.1736483,0.1736483,0.9848077,-54.790605,145.56389)" id="g3003">
+<path d="M 786.93684,272.4 L 670.15953,143.22878 L 666.47814,145.92442 L 788.33536,286.02883 L 786.93684,272.4 z" id="path3005" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 664.7091,136.51503 L 662.63835,134.03014 L 662.84543,129.06035 L 643.38043,116.22173 L 652.07755,136.51503 L 658.70394,137.75748 L 660.77468,140.24237 L 664.7091,136.51503 z" id="path3007" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 654.76952,143.96971 C 658.08271,139.82822 662.01713,135.68674 669.05766,131.75232 L 674.4416,139.82822 L 662.84543,149.97487 L 654.76952,143.96971 z" id="path3009" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<path d="M 700.40955,275.20256 C 699.38443,274.94629 600.82038,216.99085 600.82038,216.99085 C 593.64458,229.5485 600.13425,247.76641 603.27994,250.59981 C 603.46222,258.96118 600.03944,263.45781 607.08014,280.92037 C 609.15665,292.27428 614.22473,302.7346 621.60207,308.94765 C 630.58976,344.71865 665.82329,347.12121 679.3947,318.0011 L 700.40955,275.20256 z" id="path3044" style="fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 765.63819,313.45041 L 698.15212,272.45083 C 676.44533,275.60823 698.61218,317.35555 699.90643,321.00347 L 765.06925,344.99739 L 765.63819,313.45041 z" id="path3036" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g transform="matrix(0.9455187,-0.3255682,0.3255682,0.9455187,-78.456101,297.23336)" id="g3011">
+<path d="M 786.93684,272.4 L 670.15953,143.22878 L 666.47814,145.92442 L 788.33536,286.02883 L 786.93684,272.4 z" id="path3013" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 664.7091,136.51503 L 662.63835,134.03014 L 662.84543,129.06035 L 643.38043,116.22173 L 652.07755,136.51503 L 658.70394,137.75748 L 660.77468,140.24237 L 664.7091,136.51503 z" id="path3015" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 654.76952,143.96971 C 658.08271,139.82822 662.01713,135.68674 669.05766,131.75232 L 674.4416,139.82822 L 662.84543,149.97487 L 654.76952,143.96971 z" id="path3017" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g id="g3050">
+<path d="M 644.40741,161.63479 C 644.40741,161.63479 647.56922,167.35616 647.56922,167.35616 C 649.52653,166.60335 669.25021,148.08416 669.25021,148.08416 L 683.40309,147.63248 L 687.46827,142.96504 C 677.07946,131.37173 667.2929,144.62122 667.2929,144.62122 L 644.40741,161.63479 z" id="path3048" style="fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#0a328c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 655.69959,171.27079 C 656.4524,166.15167 665.78728,153.35385 667.14234,152.90216 C 674.15102,155.08281 680.67044,159.26371 687.7694,142.66391 C 681.59634,150.79428 669.09965,142.51336 669.09965,142.51336 L 663.6794,147.18079 L 663.82997,149.43923 L 647.41866,165.24829 L 655.69959,171.27079 z" id="path3046" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#d20014;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="matrix(0.9876883,-0.1564346,0.1564346,0.9876883,-56.795568,135.1032)" id="g3054">
+<path d="M 647.1636,159.6323 C 647.1636,159.6323 647.08476,165.6026 647.08476,165.6026 C 649.04207,164.84979 669.25021,148.08416 669.25021,148.08416 L 683.40309,147.63248 L 686.92793,143.48922 C 679.22465,130.33954 666.59646,144.20604 666.59646,144.20604 L 647.1636,159.6323 z" id="path3056" style="opacity:1;fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#0a328c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 656.37247,171.83468 C 656.57756,166.32393 666.21863,151.5929 667.57369,151.14121 C 675.3878,154.97382 681.93816,159.92182 687.7694,142.66391 C 681.59634,150.79428 669.06871,141.74626 669.06871,141.74626 L 663.64846,146.41369 L 663.82997,149.43923 L 647.02703,165.79602 L 656.37247,171.83468 z" id="path3058" style="opacity:1;fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#d20014;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="matrix(0.9563048,-0.2923717,0.2923717,0.9563048,-82.536492,274.17758)" id="g3060">
+<path d="M 645.19152,160.61498 C 645.19152,160.61498 646.34123,167.76794 646.34123,167.76794 C 648.29854,167.01513 669.25021,148.08416 669.25021,148.08416 L 683.40309,147.63248 L 687.46827,142.96504 C 680.18748,129.96032 667.2929,144.62122 667.2929,144.62122 L 645.19152,160.61498 z" id="path3062" style="opacity:1;fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#0a328c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 656.23518,173.63872 C 656.83208,167.99961 665.56351,152.0259 666.91857,151.57421 C 674.18679,156.51072 680.67044,159.26371 687.7694,142.66391 C 680.60863,149.39021 669.09965,142.51336 669.09965,142.51336 L 663.6794,147.18079 L 663.82997,149.43923 L 646.80238,167.26406 L 656.23518,173.63872 z" id="path3064" style="opacity:1;fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#d20014;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+</g>
+<path d="M 233.1752,337.2782 L 195.20453,325.07335 L 178.66017,295.78169 L 120.07687,292.79828 L 122.11143,314.76618 L 172.01573,324.66778 L 176.76164,333.4828 L 234.12488,350.028 L 233.1752,337.2782 z" id="Cannon-base" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g transform="translate(-520,0)" id="Cannon-Loader">
+<path d="M 713.52004,345.46096 L 653.56131,254.04732 L 650.61862,256.3416 L 710.10358,348.13761 L 713.52004,345.46096 z" id="path4136" style="fill:#503200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 659.14088,257.63898 L 652.73963,246.53537 C 651.54135,244.48329 649.72154,243.802 647.04753,245.26262 C 644.44391,246.68479 644.69699,249.49531 645.75748,251.52262 L 651.67574,261.84724 L 659.14088,257.63898 z" id="path4138" style="opacity:1;fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="translate(-520,0)" id="Cannn-main">
+<g id="g4037">
+<path d="M 720.64279,289.00969 L 599.65323,276.26363 L 596.71183,294.5003 L 717.11311,307.05028 L 720.64279,289.00969 z" id="path4012" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 597.4962,271.55739 L 594.35872,296.85342 L 599.45714,296.85342 L 602.98682,273.71442 L 597.4962,271.55739 z" id="path4006" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 617.69381,275.67535 L 616.32116,298.42217 L 619.45865,298.81436 L 622.00786,278.61675 L 617.69381,275.67535 z" id="path4008" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 699.6608,285.48001 L 696.71941,306.85418 L 702.6022,306.65808 L 704.95532,285.48001 L 699.6608,285.48001 z" id="path4010" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 717.6875,286.0625 L 713.5,310.78125 L 720.15625,311.78125 L 722.0625,298.78125 C 722.59745,301.39331 724.91801,303.37501 727.6875,303.375 C 730.8526,303.375 733.43753,300.79012 733.4375,297.625 C 733.4375,294.4599 730.85257,291.90624 727.6875,291.90625 C 725.48677,291.90625 723.4902,293.24389 722.625,295.73587 L 723.875,286.46875 L 717.6875,286.0625 z" id="path4020" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g id="g3987">
+<g id="g3965" style="opacity:1">
+<g id="g3953">
+<g id="g3943">
+<path d="M 674.02084,290.07663 L 657.38177,309.48887 L 659.323,311.84607 L 680.67647,296.73226 L 674.02084,290.07663 z" id="path3891" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 635.33501,338.46857 L 651.97408,319.05633 L 650.03285,316.69913 L 628.67938,331.81294 L 635.33501,338.46857 z" id="use3897" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 678.87389,333.61552 L 658.6297,317.39243 L 656.54981,318.91768 L 672.49558,339.85517 L 678.87389,333.61552 z" id="path3909" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 628.9567,296.17762 L 649.47821,311.84607 L 651.97407,309.90484 L 635.88965,288.96735 L 628.9567,296.17762 z" id="path3911" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 651.28693,283.24925 L 653.24786,308.74137 L 656.00998,308.61953 L 662.50198,283.80389 L 651.28693,283.24925 z" id="path3927" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 658.01152,345.09985 L 656.0506,319.60773 L 653.01115,319.31359 L 649.29233,345.09985 L 658.01152,345.09985 z" id="path3929" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 685.22788,310.74293 L 659.44162,313.58628 L 659.04943,316.13549 L 685.12983,319.66517 L 685.22788,310.74293 z" id="path3931" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 623.87448,319.56712 L 649.04867,315.4422 L 649.57951,313.41397 L 623.53972,310.3983 L 623.87448,319.56712 z" id="path3933" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<path d="M 658.86138,314.60626 C 658.86138,316.93455 656.97392,318.82201 654.64563,318.82201 C 652.31734,318.82201 650.42988,316.93455 650.42988,314.60626 C 650.42988,312.27797 652.31734,310.39051 654.64563,310.39051 C 656.97392,310.39051 658.86138,312.27797 658.86138,314.60626 z" transform="matrix(1.620159,0,0,1.620159,-406.09929,-196.05698)" id="use3882" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61722338;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</g>
+<path d="M 690.80636,313.65513 C 690.80636,333.67932 674.55486,349.93073 654.53077,349.93073 C 634.50667,349.93073 618.25517,333.67932 618.25517,313.65513 C 618.25517,293.63104 634.50667,277.37954 654.53077,277.37954 C 674.55486,277.37954 690.80636,293.63104 690.80636,313.65513 z M 683.5597,313.65517 C 683.5597,329.67921 670.55468,342.68416 654.53071,342.68416 C 638.50673,342.68416 625.50172,329.67921 625.50172,313.65517 C 625.50172,297.63119 638.50673,284.62618 654.53071,284.62618 C 670.55468,284.62618 683.5597,297.63119 683.5597,313.65517 z" id="use3874" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</g>
+<path d="M 631.86854,295.34566 L 626.18352,290.90858" id="path3979" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 672.49559,291.04724 L 677.34865,285.91686" id="path3981" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 682.895,336.80467 L 676.93267,331.95161" id="path3983" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 631.86854,342.35102 L 636.99891,336.66601" id="path3985" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+</g>
+<g transform="translate(-520,0)" id="Axe">
+<path d="M 754.03964,277.83067 L 760.25126,310.64513 L 755.18456,313.41129 L 749.73388,278.29996 L 754.03964,277.83067 z" id="path4368" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 750.79091,273.60489 C 747.91101,272.35693 744.16713,274.46886 738.02334,266.40513 C 727.92145,276.00481 737.44735,277.44477 738.9833,286.94845 C 741.83992,288.1653 743.59968,279.57418 751.36689,278.69272 C 752.32686,278.59672 763.72515,277.56046 763.72515,277.56046 C 763.72515,277.56046 760.86386,273.51809 760.86386,273.51809 C 760.86386,273.51809 752.93647,273.73359 750.79091,273.60489 z" id="path4370" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 754.91877,280.03668 L 753.76681,270.245 C 752.51885,266.78912 748.39099,269.76502 748.39099,271.78095 L 749.44695,280.80465 L 754.91877,280.03668 z" id="path4372" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="translate(-520,0)" id="Cannon-balls">
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,56.844568,30.233008)" id="path2448" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,46.662582,22.766193)" id="path3220" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,32.950826,27.653552)" id="path3222" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,11.77227,32.405151)" id="path3224" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,2.8121118,33.491231)" id="path3226" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,-6.0122862,33.49123)" id="path3228" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,-14.972444,33.219711)" id="path3230" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,-10.628125,26.160192)" id="path3232" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,-1.9394871,26.567472)" id="path3234" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,6.341871,25.481392)" id="path3236" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,2.133312,18.557634)" id="path3238" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 685.3163,361.21594 C 685.31838,362.7694 684.49082,364.20575 683.14582,364.98308 C 681.80083,365.76041 680.14314,365.76041 678.79815,364.98308 C 677.45315,364.20575 676.62559,362.7694 676.62767,361.21594 C 676.62559,359.66248 677.45315,358.22613 678.79815,357.4488 C 680.14314,356.67147 681.80083,356.67147 683.14582,357.4488 C 684.49082,358.22613 685.31838,359.66248 685.3163,361.21594 z" transform="matrix(0.9159263,0,0,0.9159263,-6.0122862,18.421874)" id="path3240" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09179091;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</g>
+<g transform="translate(-520,0)" id="Gunpowder">
+<path d="M 689.92798,334.72653 C 686.50512,333.29263 686.53817,341.25922 686.53817,341.25922 L 691.93133,341.31749 C 694.29032,342.42761 696.18792,346.01492 694.68377,347.7757 C 693.44011,349.23154 682.97382,345.31697 682.27134,347.56846 C 684.12153,358.39209 697.95832,362.55681 702.96513,357.82193 C 707.86204,353.19099 709.10207,340.83154 693.19041,337.5937 L 689.92798,334.72653 z" id="path3256" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 693.12848,337.66642 L 691.55581,341.22804" id="path3258" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="translate(-520,0)" id="Small-flag">
+<path d="M 585.95606,338.77654 L 580.77552,316.20418" id="path3418" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 592.24671,337.4814 L 584.29089,319.90457" id="path3420" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 605.93814,332.85592 L 587.99127,322.86488" id="path3422" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 613.70895,330.82071 L 580.40548,315.83415" id="path3424" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 560.53125,299.51833 C 560.53125,299.51833 548.41004,299.3202 546.24834,300.19847 C 545.37609,300.55285 549.29714,304.79506 548.48308,306.41688 C 545.45475,312.45009 524.84972,311.62336 523.2208,310.30338 C 520.43395,308.04508 542.41192,306.10763 542.55616,304.57079 C 542.72173,302.8067 539.30599,298.17825 539.83561,295.34034 C 540.52277,291.65826 549.45471,290.28788 549.45471,290.28788 L 560.53125,299.51833 z" id="path3430" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#d20014;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 576.76299,310.8779 L 549.32224,287.34118 C 549.32224,287.34118 548.11335,286.0133 547.10201,287.15616 C 546.11171,288.27524 547.47205,289.56141 547.47205,289.56141 L 575.78,313.79893 L 576.76299,310.8779 z" id="path3426" style="fill:#503200;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 603.18564,334.10823 C 602.69983,333.62242 580.83824,313.99557 580.83824,313.99557 L 579.3808,308.26297 C 579.3808,308.26297 576.0044,310.63374 574.76557,311.85798 C 573.52675,313.08223 571.60779,316.42463 571.60779,316.42463 L 577.72903,316.71612 L 597.0644,335.07986 L 603.18564,334.10823 z" id="path3428" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<path d="M 204.83327,307.09702 L 204.93465,316.22187 C 202.0534,317.24425 202.49293,319.48296 202.58587,322.73598 L 202.68725,349.33323 C 201.66487,351.09916 198.50479,351.1814 197.01769,352.56485 C 195.5306,353.9483 195.71649,356.63296 202.50136,358.39889 L 207.74814,358.59321 C 215.74128,356.78081 217.39103,354.03699 213.38284,352.48982 C 211.2507,351.66681 208.44522,350.68507 207.37637,349.38386 L 207.55382,343.04719 L 212.74141,343.24152 C 214.13556,343.24152 216.78849,339.60865 216.88143,336.63446 L 216.90675,322.86268 C 216.72086,315.05543 211.06868,314.17723 209.48864,314.27017 L 209.59846,307.08014 L 204.83327,307.09702 z M 213.60289,322.3164 C 213.69583,320.08576 210.61476,318.09677 209.37396,318.041 C 208.13317,317.98524 205.42386,320.64342 205.33092,322.87406 L 205.33092,328.45067 C 205.51681,330.49543 207.09255,337.42158 210.25692,337.93091 C 211.75591,338.17218 213.69583,335.70027 213.69583,333.65551 L 213.60289,322.3164 z" id="Trumpet" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g transform="translate(-520,0)" id="Palm-leaves">
+<path d="M 773.51765,53.596901 C 731.76231,10.275737 698.87999,31.414377 691.05086,37.416707 C 696.22616,38.464319 700.87135,35.122986 703.27535,34.738347 C 701.76875,36.709482 698.61901,41.592241 698.61901,41.592241 C 698.61901,41.592241 711.53001,35.273923 712.97241,35.850882 C 711.11142,37.38944 709.05785,41.070299 709.05785,41.070299 C 710.01945,41.454939 717.28026,35.177139 718.71377,35.067969 C 716.50209,37.664286 715.81558,43.583848 715.81558,43.583848 L 722.10639,40.548357 C 723.74111,41.750356 721.65198,44.061551 723.07336,43.940615 C 733.52931,43.050989 748.23113,53.848171 750.25049,57.165688" id="path3811" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 763.17941,61.528701 C 758.82771,51.193413 679.34553,33.626897 663.36229,62.888607 C 669.61786,64.520495 675.60145,57.448982 675.60145,57.448982 L 675.05748,63.976532 L 685.66475,55.545113 L 681.85702,64.248513 L 690.28843,57.177001 L 690.01645,64.248513 L 700.35174,52.553319 L 698.99184,59.352851 L 708.2392,55.273132 L 707.15127,60.984738" id="path3813" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 759.64366,63.160588 C 739.24507,49.017563 707.69524,58.536907 707.69524,58.536907 C 687.56863,70.232101 676.84069,68.122245 674.24154,89.814752 C 676.14541,88.998808 681.58503,82.199277 681.58503,82.199277 L 685.66475,90.630695 L 687.02466,78.66352 L 690.28843,87.910883 L 695.1841,72.679932 L 696.27202,83.01522 L 703.8875,72.679932 L 707.42325,75.671726 L 710.68703,67.78427 L 713.67882,72.951914 C 713.67882,72.951914 718.84647,69.688138 721.83826,71.592007 L 727.54987,64.792476 L 728.90977,69.688139 L 733.80544,63.704551 L 735.70931,68.056251 L 740.60497,63.43257 L 740.33299,66.696345 L 757.19582,66.968326" id="path3815" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 755.02948,65.611586 C 740.81343,65.336437 700.02938,81.284971 689.482,97.977356 C 693.68205,95.545875 696.27203,94.438431 696.27203,94.438431 L 698.35299,101.14624 L 700.89571,94.438431 L 701.43967,99.606075 C 702.99885,95.570553 704.76032,95.115139 707.69524,99.334094 C 707.69524,99.334094 708.78316,93.078525 708.78316,93.078525 L 710.41505,99.062113 L 713.13486,92.534563 C 713.13486,92.534563 714.8458,99.609243 715.85468,99.334094 C 715.85468,99.334094 720.36447,87.101273 722.38223,86.550975 L 722.92619,94.16645 L 725.646,86.550975 L 728.09383,92.262581 L 728.6378,84.103144 L 731.35761,90.358713 C 731.35761,90.358713 732.78389,84.207532 734.89337,83.015219 L 738.97308,86.822956 L 757.13751,73.294785" id="path2477" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 757.76094,69.093036 C 738.82378,76.616018 721.88678,103.53706 723.18385,114.95124 C 731.59864,104.12737 729.78631,105.61777 733.5478,118.0696 C 733.5478,118.0696 734.97076,107.1749 736.39753,105.87783 L 738.86736,113.94236 L 739.78452,103.39497 L 742.31078,103.51594 L 741.66224,96.900901 L 745.42373,99.884152 C 744.5452,96.101795 743.60784,94.825596 747.49904,91.582931 C 747.49904,91.582931 742.57019,92.231463 746.46139,83.022296 L 750.09317,86.654081 C 750.09317,86.654081 749.44463,82.633177 750.7417,81.076698 L 764.10148,76.277554" id="path2479" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g id="g2485">
+<path d="M 759.59526,71.110797 L 752.44138,85.235123 L 756.11004,86.33572 L 747.85556,92.755868 L 754.82601,92.022137 C 754.82601,92.022137 744.18691,96.057654 742.90288,106.88019 L 753.72541,101.92751 C 753.72541,101.92751 744.55377,111.64945 743.26974,117.5193 L 749.50646,111.83288 C 749.50646,111.83288 743.45318,118.61989 744.37034,128.89213 L 748.95616,123.57258 C 747.85556,136.04601 748.22243,137.1466 753.72541,146.68511 C 753.72541,146.68511 752.25795,132.01049 753.90885,130.17616 L 766.01541,143.19989 L 759.2284,124.67318 C 759.2284,124.67318 766.74914,136.41288 771.33496,135.31228 L 761.79646,120.27079 L 771.15153,128.1584 L 760.51243,111.64945 L 770.4178,114.76781 C 770.4178,114.76781 763.26392,105.41273 763.81422,99.542882 L 770.60123,107.24706 C 770.60123,107.24706 768.03317,98.442285 768.7669,95.874226 L 772.25213,96.607957 L 765.46511,88.536914 L 770.05093,87.619749 L 769.50064,82.300198 L 772.80243,81.199601 L 772.61899,75.329751" id="path2481" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 766.74914,75.329751 C 755.00944,91.838704 761.06273,117.33586 754.09228,130.35959" id="path2483" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+</g>
+<g id="Chain">
+<path d="M 181.73488,366.29252 C 181.73488,364.52819 177.60126,365.28704 177.60126,363.22241 C 177.60126,360.92827 183.90539,362.61465 184.77633,364.63301 C 188.32401,361.31013 189.85347,363.739 192.02677,364.74287 C 195.12172,359.97439 198.94843,360.15253 202.68272,363.64432 C 204.84185,361.17547 210.26415,361.99163 212.13026,364.74287 C 215.70494,361.06863 218.87943,361.9739 221.35809,364.63301 C 222.35512,362.70128 223.81838,363.12392 224.87345,364.52316 C 226.77807,361.02072 231.55362,362.07218 233.56369,364.38411 C 235.3509,362.34792 237.18162,363.93814 239.55371,365.44233 C 241.1555,363.88864 243.73934,364.18153 243.73934,365.72628 C 243.73934,367.33676 240.36302,366.76981 240.36302,368.36809 C 240.36302,369.79401 242.82601,369.07306 242.82601,370.87668 C 242.82601,372.2965 239.17029,372.82877 238.60534,370.56519 C 237.36725,373.01641 232.89447,372.07524 232.45346,369.79621 C 230.96539,371.65829 227.62902,372.22494 225.75229,369.46664 C 224.21108,370.76636 222.36674,370.9524 221.51995,369.64018 C 218.73894,372.73936 214.05123,372.10247 212.43646,368.68597 C 212.43646,368.68597 210.85817,368.7555 210.85817,368.7555 C 208.12637,372.6004 203.85689,370.82409 202.68272,368.69765 C 198.09676,372.12713 195.35705,371.04708 192.79575,368.80751 C 189.8532,372.52385 185.36951,372.26447 184.33691,368.80751 C 182.35673,370.30315 178.22535,370.65517 178.22535,368.90568 C 178.22535,367.22947 181.73488,367.83887 181.73488,366.29252 z M 190.63352,367.12739 C 190.63352,367.92569 189.58521,368.57358 188.29354,368.57358 C 187.00187,368.57358 185.95356,367.92569 185.95356,367.12739 C 185.95356,366.3291 187.00187,365.68121 188.29354,365.68121 C 189.58521,365.68121 190.63352,366.3291 190.63352,367.12739 z M 200.42361,365.91261 C 200.42361,366.87352 199.16177,367.65338 197.607,367.65338 C 196.05223,367.65338 194.79039,366.87352 194.79039,365.91261 C 194.79039,364.95172 196.05223,364.17186 197.607,364.17186 C 199.16177,364.17186 200.42361,364.95172 200.42361,365.91261 z M 219.65041,367.01169 C 219.65041,367.98443 218.50854,368.7739 217.10159,368.7739 C 215.69465,368.7739 214.55278,367.98443 214.55278,367.01169 C 214.55278,366.03896 215.69465,365.2495 217.10159,365.2495 C 218.50854,365.2495 219.65041,366.03896 219.65041,367.01169 z M 209.41337,366.54892 C 209.41337,367.77821 208.29653,368.77588 206.92043,368.77588 C 205.54433,368.77588 204.4275,367.77821 204.4275,366.54892 C 204.4275,365.31966 205.54433,364.32199 206.92043,364.32199 C 208.29653,364.32199 209.41337,365.31966 209.41337,366.54892 z M 231.24668,366.60676 C 231.24668,367.70566 230.24831,368.59751 229.01817,368.59751 C 227.78802,368.59751 226.78965,367.70566 226.78965,366.60676 C 226.78965,365.50788 227.78802,364.61603 229.01817,364.61603 C 230.24831,364.61603 231.24668,365.50788 231.24668,366.60676 z M 224.55789,367.06953 C 224.55789,367.77969 223.91269,368.35604 223.11772,368.35604 C 222.32274,368.35604 221.67755,367.77969 221.67755,367.06953 C 221.67755,366.35938 222.32274,365.78302 223.11772,365.78302 C 223.91269,365.78302 224.55789,366.35938 224.55789,367.06953 z M 237.58305,367.59018 C 237.58305,368.61038 236.85586,369.43837 235.95986,369.43837 C 235.06386,369.43837 234.33668,368.61038 234.33668,367.59018 C 234.33668,366.56998 235.06386,365.74199 235.95986,365.74199 C 236.85586,365.74199 237.58305,366.56998 237.58305,367.59018 z" id="path2500" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+</g>
+<use transform="matrix(-1,0,0,1,508.23774,0)" id="use3466" x="0" y="0" width="509" height="420" xlink:href="#g3357" />
+</g>
+<g id="Palm-trunk">
+<path d="M 259.58473,302.43101 C 259.58473,302.43101 265.97753,246.99254 265.96211,223.1299 C 265.94996,204.35095 261.58473,162.72944 261.58473,162.72944 L 243.20735,162.72944 C 243.20735,162.72944 240.41065,204.1435 240.82997,222.87366 C 241.36434,246.74303 247.20735,302.43101 247.20735,302.43101 L 259.58473,302.43101 z" id="path3304" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 241.98829,165.39689 L 263.28388,165.39689 L 260.78375,150.53548 L 245.34771,150.53548 L 241.98829,165.39689 z" id="path3306" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 243.352,153.4824 L 262.38281,153.4824 L 258.79558,138.62099 L 247.07379,138.62099 L 243.352,153.4824 z" id="path3310" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 244.575,141.43375 L 260.43511,141.43375 L 257.7538,126.57234 L 247.66265,126.57234 L 244.575,141.43375 z" id="path3312" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 258.3125,124.8125 L 247.21875,124.8125 L 246.09375,130.1875 L 259.21875,130.1875 L 258.3125,124.8125 z" id="path3314" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 260.58702,290.34707 L 246.49431,290.34707" id="path3316" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 261.35846,279.49146 L 245.54443,279.49146" id="path3318" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 263.44863,268.47503 L 243.40508,268.47503" id="path3320" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 264.48142,256.475 L 243.50344,256.475" id="path3322" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 264.62896,244.47497 L 242.56901,244.47497" id="path3324" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 265.48962,233.50773 L 241.56081,233.50773" id="path3327" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 265.53881,223.5241 L 240.52803,223.5241" id="path3329" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 265.39126,211.47489 L 240.38048,211.47489" id="path3331" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 264.5552,199.57322 L 240.38048,199.57322" id="path3333" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 263.44864,187.47483 L 241.5854,187.47483" id="path3335" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 262.39126,176.55677 L 242.64278,176.55677" id="path3337" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="translate(-520,0)" id="Drum" style="opacity:1">
+<path d="M 773.625,297.875 C 760.11718,297.875 749.15626,303.13749 749.15625,309.59375 C 749.15625,310.70093 749.46015,311.76591 750.0625,312.78125 C 752.98373,316.28816 762.46861,318.84375 773.71875,318.84375 C 784.24233,318.84376 793.21089,316.59855 796.71875,313.4375 C 797.60288,312.22916 798.09375,310.94571 798.09375,309.59375 C 798.09375,303.13747 787.13282,297.875 773.625,297.875 z" id="path2539" style="opacity:1;fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#0a328c;stroke-width:1.26463008;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 798.31097,310.49061 C 798.31097,310.49061 798.31097,349.83696 798.31097,349.83696 C 798.31097,354.45035 787.29403,358.19454 773.71959,358.19454 C 760.14515,358.19454 749.12822,354.45035 749.12822,349.83696 C 749.12822,349.83696 749.12822,310.49061 749.12822,310.49061 C 749.12822,315.10399 760.14515,318.84819 773.71959,318.84819 C 787.29403,318.84819 798.31097,315.10399 798.31097,310.49061 z" id="path2499" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 749.125,310.5 C 749.125,310.5 749.125,314.96548 749.125,316.53125 L 761.0625,354.6875 L 770.59375,325.34375 L 781.0625,355.8125 L 788.72259,327.05386 L 798.3125,346.38704 C 798.3125,346.38704 798.3125,335.6875 798.3125,335.6875 L 789.40625,316.9375 C 788.4072,317.21953 787.3419,317.46133 786.21875,317.6875 L 780.6875,338.9375 L 772.90625,318.84375 C 771.60318,318.82915 770.3068,318.79976 769.0625,318.71875 L 761.25,338.9375 L 752.3125,314.59375 C 750.29258,313.38048 749.125,311.9926 749.125,310.5 z" id="path3288" style="opacity:1;fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#d20014;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g id="g3851">
+<path d="M 798.31097,342.49061 C 798.31097,342.49061 798.31097,349.83696 798.31097,349.83696 C 798.31097,354.45035 787.29403,358.19454 773.71959,358.19454 C 760.14515,358.19454 749.12822,354.45035 749.12822,349.83696 C 749.12822,349.83696 749.12822,342.49061 749.12822,342.49061 C 749.12822,347.10399 760.14515,350.84819 773.71959,350.84819 C 787.29403,350.84819 798.31097,347.10399 798.31097,342.49061 z" id="use3284" style="opacity:1;fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#0a328c;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 263.84375,350.09375 C 261.84438,350.40202 259.71015,350.633 257.46875,350.75 L 257.53125,358.09375 C 259.77328,357.97474 261.90763,357.74792 263.90625,357.4375 L 263.84375,350.09375 z" transform="translate(520,0)" id="use2504" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 237.65625,348.8125 L 237.59375,356.125 C 239.49151,356.68768 241.62604,357.15502 243.96875,357.5 L 243.96875,350.15625 C 241.65362,349.81533 239.53762,349.36629 237.65625,348.8125 z" transform="translate(520,0)" id="use2509" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 229.125,342.5 C 229.125,342.5 229.125,349.84373 229.125,349.84375 C 229.125,351.2138 230.12209,352.48357 231.84375,353.625 L 231.96875,346.375 C 230.16199,345.21193 229.125,343.90586 229.125,342.5 z" transform="translate(520,0)" id="use2514" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 278.3125,343.28125 L 278.1875,343.3125 C 277.75678,344.80364 276.15057,346.18655 273.71875,347.34375 L 273.75,354.65625 C 276.6023,353.29158 278.3125,351.64392 278.3125,349.84375 C 278.3125,349.84375 278.3125,344.52944 278.3125,343.28125 z" transform="translate(520,0)" id="use2519" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</g>
+<path d="M 798.31097,310.74752 C 798.31097,310.74752 798.31097,349.83696 798.31097,349.83696 C 798.31097,354.45035 787.29403,358.19454 773.71959,358.19454 C 760.14515,358.19454 749.12822,354.45035 749.12822,349.83696 C 749.12822,349.83696 749.12822,310.74752 749.12822,310.74752" id="use3847" style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0232923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 792.06285,307.55569 C 792.06285,312.82366 781.96139,317.0942 769.50062,317.0942 C 757.03984,317.0942 746.93838,312.82366 746.93838,307.55569 C 746.93838,302.28772 757.03984,298.01718 769.50062,298.01718 C 781.96139,298.01718 792.06285,302.28772 792.06285,307.55569 z" transform="matrix(0.8432158,0,0,0.530281,124.86448,144.83073)" id="use3273" style="opacity:1;fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#fff;stroke-width:1.56924522;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 247.5,311.65625 L 248.34375,318.625 C 249.9949,318.7496 251.71079,318.83779 253.46875,318.84375 L 254.71875,311.65625 L 247.5,311.65625 z" transform="translate(520,0)" id="use2541" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.26463008;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 269.5625,309.96875 L 264.65625,311.34375 L 264.96875,317.90625 C 266.6371,317.61334 268.20685,317.2536 269.625,316.84375 L 269.5625,309.96875 z" transform="translate(520,0)" id="use2546" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.26463008;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 240.5,299.33035 C 239.10822,299.75603 237.80649,300.25156 236.625,300.7991 L 237.3125,306.0625 L 240.4375,305.03125 L 240.5,299.33035 z" transform="translate(520,0)" id="use2551" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.26463008;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 253.625,297.25357 C 252.9706,297.25357 252.32899,297.29183 251.6875,297.31607 L 252.75,303.90803 L 256,303.84553 L 257.28125,297.40982 C 256.08626,297.32362 254.86984,297.25357 253.625,297.25357 z" transform="translate(520,0)" id="use2556" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.26463008;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 268,299.58124 L 267.34375,305.34375 L 271.0625,306.70624 L 271.46875,301.04999 C 270.41266,300.51009 269.25097,300.01804 268,299.58124 z" transform="translate(520,0)" id="use2561" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.26463008;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 232.95062,315.05818 L 233.94136,307.88012 L 228.91297,305.05749 L 229.06251,313.22629 L 232.95062,315.05818 z" transform="translate(520,0)" id="path3858" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 278.14104,313.51012 L 278.36536,306.33228 L 273.65489,307.79028 L 278.14104,313.51012 z" transform="translate(520,0)" id="path3866" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g id="Mortar">
+<g id="g3619">
+<use transform="matrix(1,0,0,-1,-1.2161782e-2,534.0625)" id="use3617" style="fill:#016a16;fill-opacity:1" x="0" y="0" width="509" height="420" xlink:href="#use3602" />
+<path d="M 188.07577,269.23602 C 188.07577,271.74774 183.99877,273.78624 178.97533,273.78624 C 173.95188,273.78624 169.87489,271.74774 169.87489,269.23602 C 169.87489,269.23602 169.87489,266.76735 169.87489,266.76735 C 169.87489,266.76735 188.07577,266.76735 188.07577,266.76735 C 188.07577,266.76735 188.07577,269.23602 188.07577,269.23602 z" transform="matrix(1.0745646,0,0,2.8824628,-10.214643,-500.30481)" id="path3595" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#fff;stroke-width:0.5635407;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 187.99247,267.26428 C 187.99559,269.35982 185.24779,271.05962 181.85713,271.05962 C 178.46647,271.05962 175.71867,269.35982 175.72179,267.26428 C 175.71867,265.16874 178.46647,263.46894 181.85713,263.46894 C 185.24779,263.46894 187.99559,265.16874 187.99247,267.26428 z" transform="matrix(1.5829309,0,0,1.3195467,-105.76137,-86.313448)" id="path3600" style="opacity:1;fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.69192117;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+<path d="M 179.88537,271.99441 L 178.21696,253.61361 L 185.64899,253.61361 L 184.43559,271.99441 L 179.88537,271.99441 z" id="path3598" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#f1b517;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 192.85591,266.65625 C 191.43078,269.40559 187.15172,271.40625 182.10591,271.40625 C 177.06009,271.40624 172.81229,269.40559 171.38716,266.65625 C 171.05828,267.29071 170.85591,267.95707 170.85591,268.65625 C 170.85591,272.38521 175.89567,275.40624 182.10591,275.40625 C 188.31614,275.40625 193.35591,272.38521 193.35591,268.65625 C 193.35591,267.95707 193.18479,267.29071 192.85591,266.65625 z" id="use3602" style="fill:#016a16;fill-opacity:1;fill-rule:evenodd;stroke:#fff;stroke-width:1.29949546;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+</g>
+<g transform="translate(-520,0)" id="g3626">
+<path d="M 694.53125,304.6875 L 714.1875,306.75 L 717.25,288.65625 L 694.1875,286.21875" id="path3628" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 699.6608,285.48001 L 696.71941,306.85418 L 702.6022,306.65808 L 704.95532,285.48001 L 699.6608,285.48001 z" id="path3634" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+</g>
+<g id="Helmet">
+<path d="M 328.10728,266.15982 C 332.57567,265.52148 339.19952,271.87078 339.59741,279.72456 C 339.91314,285.95652 330.50106,285.62922 330.50106,285.62922 C 330.02231,288.18258 324.83193,290.54525 320.60677,290.73594 C 316.50774,290.92094 321.72387,282.75668 321.72387,282.75668 C 319.17051,275.73493 322.5218,267.4365 322.5218,267.4365 L 328.10728,266.15982 z" id="path3655" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 321.72387,282.43751 L 326.03267,282.27793 C 326.03267,282.27793 326.36249,284.58103 327.14977,284.67171 C 327.99657,284.76924 328.90521,282.43751 328.90521,282.43751 L 335.4482,282.27793" id="path3657" style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 330.50106,270.78779 C 334.15682,268.04816 330.95256,262.53584 328.42645,262.48936 C 328.42645,262.48936 322.5218,262.64894 322.5218,262.64894 C 319.73905,262.70849 315.03454,265.84132 315.65963,268.5536 C 316.2047,270.91866 317.73609,271.99719 320.12802,271.58572 C 321.21424,271.39886 323.49542,268.44522 324.59641,268.39401 C 326.07354,268.32531 329.31774,271.67457 330.50106,270.78779 z" id="path3659" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#f1b517;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g id="Hat-on-pole">
+<path d="M 254.01143,37.685155 C 250.3098,35.879494 241.9353,30.367907 244.41971,27.077837 C 244.41971,27.077837 248.25639,20.307208 248.25639,20.307208 C 253.69171,7.6157643 248.15756,12.532875 247.57933,8.5714512 C 247.02407,4.767414 268.36336,7.7380525 268.68112,16.357674 C 268.76865,18.732025 267.0983,17.33858 267.327,30.914526 C 267.327,30.914526 263.26463,39.039281 263.26463,39.039281 C 260.2262,39.332783 256.62826,38.961648 254.01143,37.685155 z" id="path3710" style="fill:#0a328c;fill-opacity:1;fill-rule:evenodd;stroke:#0a328c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 256.60683,70.522706 L 251.30318,65.89611 L 252.77015,26.28793 L 257.96096,27.867743 L 256.60683,70.522706 z" id="path3708" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 263.4903,38.813594 C 266.8202,36.793553 268.99991,30.769357 266.98847,27.190681 C 261.52385,20.013718 257.98699,22.975144 248.82061,19.742989 C 246.99256,21.761168 243.14333,25.644657 243.96833,28.544806 C 256.02741,34.429464 251.34512,29.417407 255.33513,30.150502 C 257.48603,30.545693 258.87596,33.189133 263.4903,38.813594 z" id="path3712" style="fill:#d20014;fill-opacity:1;fill-rule:evenodd;stroke:#d20014;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<path d="M 62.1875,348.8125 C 58.870658,349.24757 58.256154,353.2079 59.5,356.84375 C 45.052273,361.05369 32.145147,366.54051 19.40625,370.25 C 18.893521,367.6104 25.71875,359.96874 25.71875,359.96875 C 27.524251,360.8715 28.874999,365.15626 28.875,365.15625 C 29.326375,356.35443 37.687499,350.49999 37.6875,350.5 C 32.722372,349.82294 17.618001,355.89244 15.8125,358.375 C 15.8125,358.375 21.659748,357.69795 22.5625,358.375 C 22.5625,358.375 11.048111,371.26178 10.53125,375.09375 C 12.322328,379.28107 32.187498,382.40624 32.1875,382.40625 C 31.873994,383.49025 26.343749,387.59375 26.34375,387.59375 C 34.244853,389.39258 46.160885,383.59133 49.71875,380.0625 C 49.71875,380.0625 40.42486,379.26824 33.1875,373.1875 C 33.1875,373.1875 34.679904,376.97369 33.78125,378.78125 C 33.78125,378.78125 22.490494,375.40703 21.3125,373.46875 C 21.342467,373.30093 48.020657,366.1397 60.9375,362.3125 C 61.415902,364.70451 63.98063,369.22378 67.0625,368.15625 C 69.072831,367.45989 68.435947,363.33029 67.6875,360.40625 C 68.414448,361.05324 69.357265,361.43749 70.40625,361.4375 C 72.677318,361.4375 74.531252,359.61481 74.53125,357.34375 C 74.53125,355.07268 72.677317,353.21875 70.40625,353.21875 C 68.590055,353.21875 67.076307,354.39753 66.53125,356.03125 C 66.016951,353.50737 64.675131,348.4862 62.1875,348.8125 z M 72.345275,357.32937 C 72.345275,358.39173 71.48307,359.25394 70.42071,359.25394 C 69.358349,359.25394 68.496144,358.39173 68.496144,357.32937 C 68.496144,356.26701 69.358349,355.40481 70.42071,355.40481 C 71.48307,355.40481 72.345275,356.26701 72.345275,357.32937 z" id="Anchor-left" style="opacity:1;fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<g id="Anchor-right">
+<path d="M 486.12705,365.69878 C 487.11102,363.65519 485.25676,353.36893 485.25676,353.36893 C 483.25138,353.59971 480.5123,357.16604 480.5123,357.16604 C 483.09855,348.74067 475.85969,334.65822 475.85969,334.65822 C 480.75695,335.72016 497.07888,352.0972 497.92641,355.04758 C 497.92641,355.04758 490.77867,352.40441 489.69879,352.73189 C 490.86459,361.12567 496.46466,365.02637 498.56828,369.39005 C 498.56828,369.39005 489.28715,371.50264 490.21979,379.54667 L 484.15762,379.66325 C 482.05918,376.98191 484.97368,372.55185 484.97368,372.55185 L 443.35454,354.48192 C 440.6732,353.31612 434.63977,350.4785 435.54367,347.13737 C 436.45504,343.76862 446.38563,348.53633 448.83381,349.35239 L 486.12705,365.69878 z" id="path3723" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 446.15247,358.21249 L 451.04884,348.88607 C 452.79754,346.43789 449.18355,343.75654 446.61879,346.90421 L 441.13952,355.41456 C 438.69134,360.07777 443.82087,361.36016 446.15247,358.21249 z" id="path3735" style="fill:#f1b517;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g id="Banner">
+<g id="g3765">
+<g id="g3753">
+<path d="M 154.28784,379.53476 L 153.94875,369.36194 L 142.08045,370.04013 L 141.40226,381.1172 L 154.28784,379.53476 z" id="path3743" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 67.539543,393.79613 L 51.669596,384.56942 C 117.11477,390.78615 130.47982,367.12552 146.29415,365.85995 C 156.01548,365.07294 157.53351,377.01979 138.69612,371.33657 L 143.56766,383.83128 C 143.56766,383.83128 97.108213,410.92131 51.443533,399.73121 L 67.539543,393.79613 z" id="path3741" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g transform="matrix(-1,0,0,1,508.23184,0)" id="use3757">
+<path d="M 155.58784,379.53476 L 155.24875,369.36194 L 140.73192,369.70906 L 140.05373,380.78613 L 155.58784,379.53476 z" id="path3761" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+<path d="M 65.822818,391.29908 L 50.889266,382.85269 C 125.85446,385.16778 108.78666,370.09077 146.29415,365.85995 C 155.98633,364.77121 163.27198,377.68192 138.69612,371.33657 L 143.56766,383.83128 C 143.56766,383.83128 131.77759,383.84341 131.77759,383.84341 C 106.24168,401.27324 71.778818,402.82921 48.946478,397.23416 L 65.822818,391.29908 z" id="path3763" style="opacity:1;fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<path d="M 138.43055,371.40544 L 138.43056,388.989 C 138.43056,388.989 179.99315,404.97405 254.16232,404.97405 C 328.65064,404.97405 369.8941,388.989 369.8941,388.989 L 369.8941,371.40544 C 369.8941,371.40544 338.43694,386.43139 254.16232,386.43139 C 170.20729,386.43139 138.43055,371.40544 138.43055,371.40544 z" id="path3745" style="fill:#fff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+<g id="g3806">
+<path d="M 144.63733,389.08611 L 148.30488,376.2125 L 150.00848,376.69783 L 146.77373,388.05225 L 153.11394,389.85851 L 152.68114,391.3777 L 144.63733,389.08611 z M 156.66503,383.42511 L 156.86971,380.89651 L 157.41688,378.7274 L 159.23185,379.18524 L 158.68468,381.35435 L 157.64777,383.67301 L 156.66503,383.42511 z M 174.54882,382.55598 L 176.28461,382.90934 L 174.74185,390.48774 C 174.47348,391.80598 174.11125,392.82246 173.65516,393.53719 C 173.19905,394.25191 172.53231,394.7731 171.65493,395.10078 C 170.77754,395.42845 169.70657,395.46358 168.44202,395.20615 C 167.21325,394.956 166.25127,394.53964 165.55609,393.95706 C 164.8609,393.37448 164.42795,392.64806 164.25724,391.77778 C 164.08652,390.9075 164.14263,389.77745 164.42556,388.38763 L 165.96832,380.80923 L 167.7041,381.16258 L 166.16317,388.73204 C 165.93124,389.87134 165.8662,390.73245 165.96807,391.31538 C 166.06992,391.89831 166.34909,392.38843 166.80555,392.78574 C 167.26201,393.18306 167.86305,393.45761 168.60867,393.6094 C 169.88515,393.86926 170.85369,393.76514 171.51429,393.29704 C 172.17487,392.82895 172.67273,391.77175 173.00789,390.12543 L 174.54882,382.55598 z M 176.5025,396.54903 L 178.66335,383.33875 L 180.45656,383.63207 L 185.69857,395.13881 L 187.39511,384.76703 L 189.07117,385.04119 L 186.91033,398.25147 L 185.11712,397.95815 L 179.87659,386.4424 L 178.17857,396.82319 L 176.5025,396.54903 z M 190.16925,398.68782 L 192.00713,385.42875 L 193.76174,385.67196 L 191.92386,398.93103 L 190.16925,398.68782 z M 195.21076,392.83969 C 195.46299,390.63222 196.25315,388.97176 197.58124,387.8583 C 198.90932,386.74487 200.51078,386.29526 202.38563,386.50947 C 203.61334,386.64977 204.68659,387.06955 205.60538,387.76882 C 206.52414,388.46812 207.18212,389.37196 207.57934,390.48034 C 207.97652,391.58874 208.0991,392.8082 207.94709,394.13873 C 207.79297,395.48741 207.38295,396.66287 206.71703,397.6651 C 206.05109,398.66734 205.1879,399.38511 204.12747,399.81842 C 203.06702,400.25173 201.95923,400.40239 200.80409,400.2704 C 199.55217,400.12736 198.46787,399.69712 197.55117,398.97969 C 196.63447,398.26226 195.98188,397.35138 195.59341,396.24705 C 195.20494,395.14272 195.07739,394.00694 195.21076,392.83969 L 195.21076,392.83969 z M 197.02202,393.07422 C 196.83889,394.67691 197.12554,395.98864 197.88199,397.00942 C 198.63842,398.03019 199.66679,398.61487 200.96709,398.76344 C 202.29157,398.91478 203.43491,398.57366 204.39712,397.74006 C 205.3593,396.90647 205.93818,395.6339 206.13376,393.92235 C 206.25744,392.83978 206.18247,391.8739 205.90884,391.02469 C 205.63519,390.17549 205.17147,389.48838 204.5177,388.96335 C 203.8639,388.43833 203.09853,388.12572 202.2216,388.0255 C 200.97573,387.88316 199.85485,388.18856 198.85896,388.94171 C 197.86306,389.69487 197.25075,391.07237 197.02202,393.07422 L 197.02202,393.07422 z M 209.43727,400.96888 L 210.52798,387.62755 L 212.33898,387.7756 L 218.49001,398.82316 L 219.34636,388.34849 L 221.03905,388.48687 L 219.94835,401.8282 L 218.13735,401.68014 L 211.98705,390.62349 L 211.12996,401.10726 L 209.43727,400.96888 z M 228.20299,402.32153 L 228.78748,388.94845 L 237.80929,389.34277 L 237.74032,390.9209 L 230.48821,390.60393 L 230.3072,394.74539 L 236.58324,395.0197 L 236.51426,396.59783 L 230.23822,396.32352 L 229.97269,402.39888 L 228.20299,402.32153 z M 238.06406,402.7582 L 243.46283,389.47436 L 245.37083,389.51129 L 250.58925,403.00065 L 248.57171,402.9616 L 247.08909,398.87804 L 241.49292,398.76971 L 239.94466,402.7946 L 238.06406,402.7582 z M 242.03207,397.3372 L 246.56926,397.42503 L 245.24425,393.69156 C 244.84001,392.55739 244.54144,391.62618 244.34853,390.89792 C 244.16151,391.75277 243.90461,392.60017 243.57785,393.44012 L 242.03207,397.3372 z M 252.3243,402.97147 L 252.35006,389.58565 L 254.12144,389.58906 L 254.09568,402.97487 L 252.3243,402.97147 z M 260.61759,402.93453 L 260.44925,391.12953 L 256.03949,391.19241 L 256.01697,389.61293 L 266.62595,389.46165 L 266.64847,391.04113 L 262.22046,391.10427 L 262.38879,402.90928 L 260.61759,402.93453 z M 273.75235,402.61301 L 273.12637,389.24182 L 274.89582,389.15898 L 275.44793,400.95227 L 282.03319,400.64397 L 282.10706,402.22188 L 273.75235,402.61301 z M 282.7593,402.20623 L 286.93575,388.48892 L 288.83928,388.35331 L 295.25517,401.316 L 293.24235,401.4594 L 291.39683,397.5265 L 285.81376,397.92425 L 284.6355,402.07257 L 282.7593,402.20623 z M 286.22127,396.44888 L 290.74784,396.1264 L 289.09091,392.52792 C 288.58585,391.43492 288.20437,390.53449 287.94645,389.82664 C 287.83743,390.69489 287.65815,391.56204 287.40862,392.42807 L 286.22127,396.44888 z M 301.93492,400.67503 L 300.46689,387.36993 L 309.44284,386.37957 L 309.61608,387.94968 L 302.40084,388.74577 L 302.85546,392.86618 L 309.0996,392.17723 L 309.27284,393.74734 L 303.0287,394.43629 L 303.69562,400.48076 L 301.93492,400.67503 z M 311.75057,393.03644 C 311.43665,390.8369 311.78146,389.03063 312.78499,387.61765 C 313.78852,386.20469 315.22434,385.36489 317.09246,385.09826 C 318.31577,384.92369 319.46027,385.05857 320.52597,385.50291 C 321.59165,385.94727 322.45672,386.65545 323.12119,387.62745 C 323.78563,388.59946 324.21247,389.74835 324.40169,391.0741 C 324.59347,392.41794 324.49387,393.65886 324.10289,394.79687 C 323.71189,395.93488 323.05816,396.84753 322.14169,397.5348 C 321.22519,398.22208 320.19145,398.64785 319.04046,398.81212 C 317.79303,398.99015 316.63519,398.84795 315.56692,398.38552 C 314.49865,397.92309 313.63702,397.20673 312.98204,396.23645 C 312.32705,395.26617 311.91656,394.1995 311.75057,393.03644 L 311.75057,393.03644 z M 313.56229,392.80555 C 313.79021,394.40249 314.3991,395.59917 315.38899,396.3956 C 316.37888,397.19204 317.52163,397.4978 318.81727,397.31289 C 320.13699,397.12454 321.15699,396.50551 321.87725,395.45577 C 322.5975,394.40605 322.83593,393.02849 322.59255,391.32307 C 322.43859,390.24439 322.12191,389.32882 321.64252,388.57635 C 321.16312,387.8239 320.54078,387.27631 319.77553,386.93356 C 319.01026,386.59085 318.19073,386.48184 317.31694,386.60653 C 316.07555,386.78371 315.06825,387.36251 314.29507,388.34292 C 313.52188,389.32335 313.27762,390.81089 313.56229,392.80555 L 313.56229,392.80555 z M 327.61965,397.2988 L 325.22903,384.12816 L 331.06867,383.0682 C 332.24258,382.85513 333.15647,382.81144 333.81033,382.93712 C 334.46418,383.06282 335.02814,383.39198 335.50222,383.92459 C 335.97627,384.45722 336.27908,385.08589 336.41063,385.81059 C 336.58022,386.74494 336.42071,387.58745 335.93212,388.3381 C 335.44351,389.08877 334.58309,389.66564 333.35087,390.06872 C 333.85227,390.20662 334.24233,390.36163 334.52105,390.53376 C 335.11493,390.90853 335.70307,391.40498 336.28547,392.02311 L 339.22706,395.19192 L 337.03495,395.58981 L 334.79467,393.16603 C 334.14207,392.46784 333.61301,391.93902 333.2075,391.57955 C 332.80198,391.22009 332.45373,390.98015 332.16276,390.85973 C 331.87178,390.73933 331.58555,390.67064 331.30407,390.65367 C 331.09881,390.64763 330.77158,390.68537 330.32238,390.7669 L 328.30097,391.13381 L 329.36256,396.98244 L 327.61965,397.2988 z M 328.02701,389.62449 L 331.77336,388.94448 C 332.56994,388.7999 333.17789,388.60449 333.5972,388.35823 C 334.0165,388.112 334.31006,387.7865 334.47788,387.38173 C 334.64569,386.97699 334.691,386.56199 334.61382,386.13673 C 334.50075,385.51385 334.1817,385.0428 333.65667,384.72358 C 333.13163,384.40438 332.38098,384.33338 331.40472,384.51057 L 327.23611,385.26722 L 328.02701,389.62449 z M 349.16944,388.16574 L 350.99584,388.2132 C 350.95309,389.71408 350.54498,390.94312 349.7715,391.90031 C 348.998,392.85751 347.93128,393.48918 346.57134,393.79532 C 345.16388,394.11217 343.95471,394.08331 342.94382,393.70876 C 341.93292,393.33422 341.07503,392.65536 340.37014,391.6722 C 339.66524,390.68905 339.17242,389.57392 338.89168,388.3268 C 338.58553,386.96686 338.5783,385.72214 338.86999,384.59261 C 339.16168,383.46311 339.72791,382.52762 340.56868,381.78613 C 341.40945,381.04467 342.40588,380.54425 343.55798,380.28488 C 344.86447,379.99078 346.03798,380.07602 347.07851,380.5406 C 348.11903,381.0052 348.95017,381.80083 349.57195,382.92748 L 347.96077,383.71136 C 347.44399,382.82937 346.84879,382.23645 346.17516,381.9326 C 345.50151,381.62877 344.72821,381.57511 343.85523,381.77162 C 342.8516,381.99757 342.06692,382.42692 341.50117,383.05967 C 340.93543,383.69245 340.60721,384.44489 340.51652,385.317 C 340.42583,386.18912 340.47741,387.05573 340.67126,387.91682 C 340.92125,389.02735 341.30133,389.9604 341.81148,390.71597 C 342.32163,391.47155 342.9643,391.97735 343.73949,392.23337 C 344.51467,392.4894 345.30015,392.52784 346.09593,392.34869 C 347.06392,392.13078 347.82061,391.66718 348.36602,390.95787 C 348.91141,390.24858 349.17921,389.31787 349.16944,388.16574 L 349.16944,388.16574 z M 354.08979,391.8053 L 350.4903,378.9125 L 359.81252,376.30987 L 360.23729,377.83132 L 352.62121,379.95762 L 353.72365,383.90638 L 360.85602,381.91512 L 361.27834,383.42778 L 354.14596,385.41904 L 355.37116,389.80752 L 363.28625,387.59774 L 363.71102,389.11919 L 354.08979,391.8053 z" id="text3774" style="font-size:18.70000076px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+<path d="M 138.43056,386.989 C 138.43056,386.989 179.99315,402.97405 254.16232,402.97405 C 328.65064,402.97405 369.8941,386.989 369.8941,386.989" id="path3150" style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+</g>
+</g>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Liban.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Liban.svg
new file mode 100644
index 0000000..42d9486
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Liban.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="750" height="500">
+<rect fill="#ed1c24" width="750" height="500"/>
+<rect fill="#fff" y="125" width="750" height="250"/>  
+<path fill="#00a651" d="M 371.5894,125 L 367.48923,131.82971 C 365.23424,135.58667 359.77095,141.22582 355.36568,144.35086 C 350.96038,147.47587 345.65053,152.12902 343.53712,154.69298 L 339.67293,159.34371 L 343.7731,158.27045 C 346.0193,157.67697 348.94553,156.72619 350.29208,156.15649 C 351.63866,155.5868 352.74038,155.90369 352.74039,156.87202 C 352.74039,156.89794 352.74241,156.9426 352.74039,156.96957 C 352.73501,157.02414 352.72414,157.1063 352.7109,157.16471 C 352.11704,159.57379 345.07973,165.09473 339.49593,167.40926 C 334.15146,169.6246 326.22769,175.40853 325.18957,177.71886 C 325.16495,177.77614 325.14633,177.86127 325.13056,177.914 C 325.12345,177.94 325.10593,177.98676 325.10108,178.01158 C 325.09701,178.03597 325.10283,178.08598 325.10108,178.10913 C 325.10076,178.11674 325.10113,178.13422 325.10108,178.14166 C 325.10104,178.14805 325.10085,178.1679 325.10108,178.17419 C 325.10153,178.18043 325.10038,178.20056 325.10108,178.20673 C 325.10203,178.21279 325.09987,178.23324 325.10108,178.23924 C 325.10683,178.26294 325.12101,178.31429 325.13056,178.33678 C 325.13846,178.35348 325.15008,178.38588 325.16007,178.40184 C 325.16363,178.4071 325.18579,178.42921 325.18957,178.43436 C 325.1976,178.44457 325.21014,178.457 325.21907,178.46688 C 325.22376,178.47176 325.24366,178.49462 325.24857,178.49942 C 325.26906,178.51828 325.31311,178.54686 325.33704,178.56447 C 325.96288,179.00148 327.68523,179.0679 329.67323,178.62952 C 333.16029,177.86055 334.59782,178.33785 335.74974,180.71094 C 337.51178,184.34095 336.50178,185.97959 332.446,185.97958 C 327.54088,185.97958 320.55869,190.90561 319.61452,195.05336 C 318.98143,197.83436 316.30535,200.10252 310.55873,202.72863 C 301.17658,207.01608 289.069,215.20198 288.22899,217.72148 C 288.20778,217.79159 288.20219,217.8884 288.1995,217.94915 C 288.1995,221.52056 296.10175,221.27153 307.54996,217.3312 C 310.11671,216.44775 311.24822,217.34739 313.18401,221.75426 C 315.58034,227.20948 315.54246,227.34308 309.96878,234.53558 C 306.07646,239.55839 302.65426,242.14861 298.93664,242.92638 C 291.52983,244.47591 289.22773,245.98023 279.61569,255.57762 C 275.01567,260.17054 270.39824,263.97128 269.35048,264.00093 C 268.93968,264.01254 268.66679,264.07478 268.52456,264.19604 C 268.51993,264.20036 268.49937,264.22415 268.49506,264.22858 C 268.49102,264.23308 268.4693,264.25648 268.46555,264.26108 C 268.46237,264.26592 268.43896,264.28869 268.43607,264.29362 C 268.43344,264.29866 268.43839,264.321 268.43607,264.32616 C 268.43398,264.33139 268.40834,264.3533 268.40656,264.35868 C 268.40503,264.36413 268.40782,264.38561 268.40656,264.39119 C 268.40559,264.39686 268.40726,264.41795 268.40656,264.42372 C 268.40611,264.42956 268.40674,264.45028 268.40656,264.45625 C 268.40672,264.4683 268.40538,264.50883 268.40656,264.52127 C 268.4074,264.52757 268.40545,264.5474 268.40656,264.55381 C 268.41197,264.57973 268.42669,264.62407 268.43607,264.65136 C 268.44125,264.6652 268.45942,264.70229 268.46555,264.71641 C 268.47215,264.7307 268.4875,264.76686 268.49506,264.78146 C 269.26823,266.20384 274.34218,269.00938 277.19685,269.00938 C 279.28601,269.00938 284.37728,266.62115 288.49447,263.70823 C 295.7199,258.59626 296.0772,258.51969 298.99564,261.43165 C 300.65861,263.09095 302.03391,266.30774 302.03391,268.55406 C 302.03391,271.97807 300.1939,273.54305 290.70679,278.37585 C 283.68739,281.95156 275.44388,288.09752 268.99653,294.5395 C 260.33115,303.19765 257.87276,304.79483 254.18869,304.19866 C 251.86271,303.82227 250.56213,303.66523 250.1475,303.90596 C 250.13424,303.91477 250.09969,303.92864 250.08849,303.93848 C 250.08343,303.94367 250.06359,303.96555 250.059,303.97098 C 250.05494,303.9767 250.03306,303.99756 250.02953,304.00353 C 250.01427,304.03475 250.00273,304.09546 250.00001,304.13362 C 249.99743,304.57685 250.77987,305.48129 252.18283,307.0281 C 253.51125,308.49276 256.59424,309.69498 259.0263,309.69496 C 265.66119,309.69496 286.63455,301.87782 293.0961,297.01119 C 299.09513,292.49294 304.92746,291.62158 309.76229,294.47445 C 317.24218,298.88806 304.73452,307.77562 281.17907,314.80099 C 272.5137,317.38539 265.00517,319.90053 264.04088,320.52493 C 264.02695,320.53457 263.99238,320.5488 263.98191,320.55744 C 263.97756,320.56152 263.95585,320.58617 263.9524,320.58997 C 263.94918,320.59403 263.926,320.61827 263.92291,320.6225 C 263.91993,320.62683 263.92579,320.65058 263.92291,320.655 C 263.58568,321.2134 264.08363,322.68336 265.10282,324.03734 C 267.56232,327.30474 279.93914,327.4624 290.50031,324.33007 C 294.72709,323.07644 305.25352,318.81768 313.89197,314.89854 C 329.56051,307.78998 329.61862,307.80238 335.10079,310.67062 C 347.83892,317.33512 346.66203,328.99695 331.35458,348.16901 C 324.68834,356.51829 318.77379,360.24227 308.02193,362.86914 C 304.04413,363.84098 295.86888,371.54387 295.86888,374.31706 C 295.86888,374.59078 295.92224,374.80683 295.98688,375 L 298.73017,375 C 299.33268,374.55986 299.94788,373.92558 300.55902,373.11371 C 303.94827,368.61116 310.78354,365.60742 317.69715,365.56852 C 325.20934,365.52621 334.41224,361.40108 341.32478,354.9662 C 347.39788,349.31276 353.49853,347.62755 358.10897,350.34801 C 360.66315,351.85513 362.98695,352.00551 366.07333,350.83583 C 371.5617,348.75594 374.27367,349.76128 374.27368,353.86043 C 374.27368,355.70383 376.20528,358.17643 378.84584,359.68195 C 381.37051,361.12138 385.87538,364.64458 388.84554,367.51985 C 391.10768,369.70971 392.75598,370.70983 393.62417,370.70705 C 393.65729,370.70617 393.71134,370.71101 393.74214,370.70705 C 393.76482,370.70353 393.8093,370.71232 393.83064,370.70705 C 393.84459,370.70315 393.87628,370.67918 393.88963,370.67456 C 393.90268,370.66952 393.9362,370.64779 393.94863,370.64201 C 393.9851,370.62351 394.03556,370.6022 394.06661,370.57695 C 394.07166,370.57257 394.09123,370.54902 394.09613,370.54445 C 394.10084,370.53968 394.12105,370.51689 394.12563,370.51192 C 394.13003,370.50679 394.15084,370.48471 394.15512,370.47939 C 394.15923,370.47389 394.18064,370.45256 394.18463,370.44687 C 394.19604,370.42923 394.20407,370.40115 394.21412,370.38182 C 394.22052,370.36858 394.23785,370.33077 394.24361,370.31678 C 394.24907,370.30244 394.26827,370.26683 394.27311,370.25173 C 394.27992,370.2286 394.29721,370.17898 394.3026,370.15417 C 394.30918,370.12038 394.29854,370.06075 394.3026,370.02409 C 394.39078,369.06124 393.64483,367.1233 391.91328,364.3977 C 390.89558,362.79575 390.37728,361.19907 390.52692,360.39745 C 390.5349,360.3589 390.54508,360.30194 390.5564,360.26736 C 390.56119,360.25384 390.58058,360.21517 390.58591,360.20232 C 390.58871,360.19605 390.58296,360.17586 390.58591,360.16978 C 390.58897,360.16387 390.61219,360.14302 390.61541,360.13726 C 390.63214,360.10937 390.65418,360.06315 390.67439,360.03969 C 390.67858,360.03518 390.69957,360.01149 390.70388,360.00718 C 390.71727,359.99475 390.74825,359.98539 390.76288,359.97464 C 390.76791,359.97126 390.7868,359.94545 390.79238,359.94212 C 390.80467,359.93563 390.83689,359.91578 390.85137,359.90959 C 391.8097,359.53895 396.88796,359.72793 402.44396,360.36492 C 412.21712,361.48536 413.40178,362.07281 419.16913,368.75571 C 422.01728,372.05595 424.3544,374.12924 426.24858,375 L 430.17177,375 C 431.00815,374.62338 431.59819,374.07779 431.73514,373.5365 C 431.73853,373.52188 431.76194,373.48609 431.76463,373.47145 C 431.76818,373.4495 431.76266,373.39585 431.76463,373.37389 C 431.7656,373.35927 431.76436,373.32345 431.76463,373.30887 C 431.76454,373.29427 431.76543,373.25839 431.76463,373.24381 C 431.76435,373.24016 431.76511,373.21506 431.76463,373.21127 C 431.76338,373.20343 431.76665,373.18718 431.76463,373.17876 C 431.42873,372.05637 425.64168,366.55076 418.69718,360.75519 C 402.91412,347.58339 400.49412,342.76991 400.43812,324.52519 C 400.40464,313.61417 400.92253,310.81952 403.47638,308.00377 C 407.45473,303.61748 409.64001,303.72349 419.40513,308.81682 C 426.77957,312.66325 429.07058,312.98446 445.83503,312.62197 C 463.83904,312.23268 464.36594,312.34511 473.41535,317.66295 C 478.48751,320.64355 484.68418,324.63509 487.22027,326.54159 C 492.81882,330.75025 498.50377,331.04644 499.84526,327.19204 C 501.42953,322.64012 490.78645,313.81125 470.79005,303.15794 C 450.90531,292.56409 448.82248,289.60175 457.98807,284.78274 C 463.20127,282.04186 463.56238,282.09382 471.82247,286.70158 C 478.44389,290.39522 481.47221,291.1893 485.71588,290.31159 L 491.14347,289.17329 L 479.19688,279.38403 C 472.62816,274.00125 466.274,268.29103 465.06751,266.66778 C 461.579,261.97415 454.83171,258.8624 448.19485,258.86237 C 445.08486,258.86237 442.17967,258.26622 441.38088,257.52895 C 441.35503,257.50386 441.31328,257.45681 441.29238,257.43138 C 441.28747,257.42502 441.26749,257.40527 441.26289,257.39888 C 441.25436,257.38602 441.24064,257.34673 441.2334,257.33383 C 439.36676,254.00381 444.9881,252.42254 460.67236,251.80499 C 481.80242,250.97306 484.70927,248.51095 470.1411,243.8045 C 464.32389,241.92516 455.60723,239.54684 450.76113,238.50331 C 444.8523,237.23094 441.57673,235.84379 440.76143,234.24288 C 440.67201,234.06041 440.61099,233.84652 440.58447,233.65747 C 440.56733,233.51792 440.56773,233.34553 440.58447,233.20217 C 440.65679,232.65841 440.97979,232.08331 441.52838,231.47848 C 442.52068,230.3844 447.2617,230.50644 455.33328,231.86874 C 464.38118,233.39587 469.33382,233.73793 470.2296,232.68182 C 471.16155,231.46734 466.99168,228.44357 457.78158,223.34787 C 449.39027,218.70516 438.80009,211.19172 433.97697,206.43619 C 429.19737,201.72357 422.09765,196.36311 418.22522,194.53298 C 413.11412,192.11745 411.45897,190.47841 412.11919,188.58137 C 413.27098,185.27216 421.31344,185.23852 426.51407,188.51633 C 428.62745,189.84833 434.16512,190.92315 438.81458,190.89046 L 447.28043,190.8254 L 441.67586,188.54886 C 436.07797,186.27848 420.85055,175.44771 419.67059,173.00313 C 419.64894,172.95483 419.62138,172.88169 419.61161,172.84052 C 419.60865,172.82462 419.61259,172.79017 419.61161,172.77548 C 419.61161,172.77102 419.61114,172.74734 419.61161,172.74295 C 419.61253,172.73858 419.61023,172.71475 419.61161,172.71044 C 419.61388,172.70618 419.63837,172.68211 419.6411,172.67789 C 419.64747,172.66957 419.66247,172.65353 419.67059,172.64536 C 419.67511,172.64133 419.69516,172.61688 419.70011,172.61286 C 420.32294,172.15285 423.83436,171.95627 428.04795,172.19008 L 436.51377,172.67789 L 424.33123,163.27892 C 415.39329,156.39189 409.88532,153.42734 403.59436,152.0912 C 398.88,151.0899 393.47536,149.89966 391.58882,149.45688 C 386.53638,148.27101 378.05152,139.42769 374.59816,131.73216 L 371.5894,125 z M 343.8321,172.41771 C 344.01638,172.411 344.2183,172.41771 344.42205,172.41771 C 345.99271,172.41771 347.13417,172.80064 347.60779,173.3934 C 347.61846,173.40728 347.65688,173.44429 347.66678,173.45844 C 347.67636,173.47271 347.68748,173.50897 347.69629,173.52348 C 347.74698,173.61119 347.79103,173.72049 347.81428,173.81617 C 347.81951,173.84027 347.84031,173.88921 347.84379,173.91375 C 347.84762,173.94668 347.84317,174.01008 347.84379,174.04385 C 347.84363,174.0693 347.84576,174.11553 347.84379,174.1414 C 347.83945,174.18476 347.82379,174.25951 347.81428,174.30399 C 347.80794,174.33083 347.793,174.37438 347.78479,174.40159 C 347.45666,175.48689 345.68782,177.46612 343.8321,178.82465 C 342.41343,179.86318 341.56673,180.42836 341.08882,180.35319 C 341.05613,180.34637 341.00023,180.33377 340.97083,180.32069 C 340.9565,180.31331 340.92536,180.29709 340.91183,180.28816 C 340.88552,180.26869 340.84668,180.21655 340.82334,180.19057 C 340.50059,179.79748 340.43986,178.74153 340.43986,176.87328 C 340.43986,173.45333 341.06792,172.51844 343.8321,172.41771 z M 384.92234,176.64564 C 384.95942,176.64511 384.97338,176.64564 385.01084,176.64564 C 387.40831,176.64564 389.02026,177.7669 389.34701,179.63769 C 389.75173,181.95475 388.78963,182.59726 385.01084,182.59724 C 382.88528,182.59724 381.6544,182.37611 381.05814,181.78419 C 380.61603,181.32378 380.53029,180.63331 380.70418,179.63769 C 381.02584,177.79611 382.58715,176.67922 384.92234,176.64564 z M 372.88731,177.65384 C 374.9707,177.49167 375.80757,178.72423 375.80757,181.36138 C 375.80757,184.53569 374.59353,185.52514 368.87562,186.98777 C 365.26874,187.91042 361.96142,188.33444 361.26522,187.99599 C 361.24903,187.98726 361.21917,187.9731 361.20623,187.96345 C 361.20228,187.96012 361.18031,187.93437 361.17673,187.9309 C 359.19725,185.74848 360.93228,182.94762 365.86685,180.35319 C 369.04115,178.68427 371.31763,177.77603 372.88731,177.65384 z M 400.58563,177.68637 C 403.63815,177.58548 404.02382,179.02783 402.53244,183.31274 C 402.01933,184.78705 399.89459,185.97959 397.81283,185.97958 C 394.76681,185.97958 394.11383,185.24293 394.50908,182.17445 C 394.86076,179.44439 396.20231,178.20038 399.22871,177.81645 C 399.73024,177.75282 400.1804,177.69975 400.58563,177.68637 z M 353.8613,185.97958 C 353.96633,185.97054 354.08619,185.97958 354.18578,185.97958 C 357.88816,185.97958 355.57918,192.96184 350.82304,196.15911 C 346.5877,199.00624 342.08643,200.22834 340.82334,199.11867 C 340.81763,199.11341 340.7994,199.09147 340.79384,199.08613 C 340.71241,199.00456 340.63598,198.89783 340.58736,198.79343 C 340.58117,198.7793 340.56343,198.74291 340.55785,198.72837 C 340.54997,198.70628 340.53485,198.65384 340.52838,198.63081 C 340.52434,198.61523 340.50226,198.58176 340.49886,198.56578 C 340.49427,198.54148 340.50203,198.49341 340.49886,198.4682 C 340.49436,198.42563 340.46978,198.35078 340.46937,198.30558 C 340.46946,198.29642 340.46913,198.28232 340.46937,198.27306 C 340.57191,194.45928 349.48628,186.35633 353.8613,185.97958 z M 388.63905,202.14325 C 390.40284,201.9303 391.52108,203.86448 390.91039,207.41188 C 390.57034,209.3871 388.80713,210.75018 386.16126,211.0869 C 384.13912,211.34423 382.89271,211.25396 382.41506,210.69662 C 382.4106,210.69119 382.38986,210.66966 382.38556,210.66411 C 382.3647,210.63597 382.34391,210.59691 382.32654,210.56653 C 382.3199,210.55421 382.30314,210.51419 382.29704,210.50151 C 382.29416,210.49507 382.27032,210.4755 382.26755,210.46898 C 382.25443,210.4359 382.24769,210.37426 382.23806,210.3389 C 382.0022,209.39217 382.97338,207.6318 385.12883,204.77755 C 386.37616,203.12585 387.61562,202.26677 388.63905,202.14325 z M 374.80463,202.92376 C 374.89034,202.91714 374.96793,202.92376 375.04063,202.92376 C 378.58318,202.92376 379.1563,206.0433 375.95506,207.93222 C 374.47765,208.80399 373.04246,209.45526 372.56283,209.52583 C 372.54715,209.52757 372.51713,209.55813 372.50383,209.55835 C 372.49174,209.55781 372.45445,209.52794 372.44483,209.52583 C 372.17792,209.43292 370.22208,208.80317 368.10868,208.09485 L 364.27399,206.79395 L 368.61013,204.84259 C 370.84115,203.84621 373.5191,203.02318 374.80463,202.92376 z M 404.62678,206.82647 C 406.30104,206.73767 408.11318,207.06262 409.87736,207.80213 C 413.07903,209.14423 413.70137,210.30778 413.09262,213.81879 C 412.26597,218.58655 409.66263,219.12223 400.7626,216.2905 C 396.39047,214.89939 395.9408,214.23137 397.34086,211.34707 C 398.67656,208.59538 401.43047,206.99596 404.62678,206.82647 z M 338.611,207.99725 C 338.71137,207.99622 338.80294,207.99725 338.90599,207.99725 C 345.38245,207.99725 346.27592,209.12315 343.12417,213.26592 C 342.06744,214.65484 340.06092,216.76963 338.6405,217.94915 C 336.46978,219.75168 335.80434,219.56039 334.42235,216.71328 C 332.77734,213.3244 332.26419,211.09502 333.06546,209.75349 C 333.80563,208.55586 335.62505,208.02834 338.611,207.99725 z M 321.56135,210.85925 C 324.32364,210.78437 326.02578,212.08882 328.22783,215.86772 L 331.32509,221.20137 L 326.69395,222.9901 C 322.46713,224.61469 321.75575,224.30828 318.2576,219.38014 C 316.05274,216.2739 315.20936,214.21378 315.80933,212.90817 C 315.86455,212.79306 315.93741,212.65434 316.01581,212.5504 C 316.03589,212.52466 316.08276,212.47793 316.10429,212.45284 C 316.12632,212.42799 316.16929,212.37947 316.19278,212.35526 C 316.98377,211.56433 318.57554,211.1347 321.0009,210.92431 C 321.19519,210.90742 321.3772,210.86424 321.56135,210.85925 z M 423.56431,226.82777 C 426.63297,226.57966 429.76584,228.74128 429.31634,232.22648 C 428.74538,236.65337 423.90995,237.93444 419.93607,234.73072 C 417.56286,232.81742 417.47534,232.10833 419.31664,229.33199 C 420.37132,227.74173 421.95691,226.9577 423.56431,226.82777 z M 365.66037,235.121 C 365.77328,235.11378 365.89601,235.121 366.01436,235.121 C 366.27369,235.121 366.51468,235.17589 366.72229,235.25107 C 366.85288,235.30107 366.99646,235.36643 367.10576,235.4462 C 367.13654,235.46961 367.1947,235.51798 367.22375,235.54379 C 367.23807,235.55698 367.26888,235.59502 367.28274,235.60883 C 367.29638,235.62292 367.32853,235.65916 367.34173,235.67388 C 367.35472,235.68885 367.38818,235.72333 367.40072,235.73893 C 367.86886,236.34232 368.03273,237.3758 367.84319,238.79603 C 367.23425,243.35882 364.21271,244.6976 362.91709,240.97503 C 361.76029,237.65136 362.88322,235.29856 365.66037,235.121 z M 346.3099,238.6334 C 347.61008,238.45695 349.74571,239.32129 351.88495,241.10513 C 353.33875,242.31735 353.94113,243.49374 353.92031,244.35738 C 353.91705,244.43708 353.90448,244.54305 353.89079,244.61755 C 353.88146,244.66369 353.87458,244.73619 353.8613,244.78015 C 353.85008,244.81497 353.81598,244.87687 353.8023,244.91024 C 353.78088,244.95974 353.74057,245.02679 353.71383,245.07287 C 353.7046,245.08802 353.69411,245.12312 353.68433,245.13792 C 353.67424,245.15248 353.63597,245.18877 353.62533,245.20296 C 353.57615,245.26579 353.5086,245.3438 353.44833,245.39807 C 353.43467,245.40992 353.40353,245.45172 353.38933,245.46311 C 352.50057,246.151 350.61748,245.98843 348.46323,244.32483 C 346.68313,242.95017 345.20503,241.15303 345.071,240.227 C 345.06913,240.21208 345.07209,240.17645 345.071,240.16197 C 345.07025,240.14773 345.071,240.11067 345.071,240.09691 C 345.071,239.21513 345.52978,238.73928 346.3099,238.6334 z M 377.07598,239.28385 C 377.67637,239.23192 378.29948,239.81978 379.34728,240.97503 C 380.6623,242.42486 382.20696,245.20186 382.76903,247.15428 C 384.11947,251.84559 381.98578,253.80533 377.8134,251.67491 C 373.33369,249.38755 372.2443,245.76724 374.83414,241.69051 C 375.82277,240.13435 376.43683,239.33916 377.07598,239.28385 z M 387.81313,245.65826 C 388.95195,245.50273 390.49728,247.20707 390.88088,250.08131 C 391.10458,251.75752 390.87188,253.18633 390.34992,253.62625 C 390.34494,253.63022 390.32544,253.65499 390.32043,253.65876 C 390.30519,253.66965 390.27709,253.68205 390.26142,253.69131 C 390.24034,253.70288 390.19477,253.71523 390.17293,253.72382 C 390.16741,253.72578 390.149,253.7546 390.14343,253.75636 C 390.13784,253.75792 390.11958,253.75497 390.11394,253.75636 C 390.10255,253.75873 390.06651,253.75476 390.05493,253.75636 C 390.04909,253.75693 390.03132,253.75595 390.02546,253.75636 C 390.01953,253.75654 390.00191,253.75636 389.99594,253.75636 C 387.80101,253.75636 386.54471,251.77716 386.54471,248.26005 C 386.54471,246.57762 387.10674,245.75471 387.81313,245.65826 z M 320.38146,252.42293 C 322.64016,252.42056 324.62211,252.54329 325.92701,252.81321 C 328.08098,253.25872 329.51368,253.87401 330.20419,254.60195 C 330.3501,254.76049 330.48097,254.95113 330.55814,255.12229 C 330.59483,255.20822 330.62713,255.32597 330.64663,255.41499 C 330.68183,255.59372 330.68017,255.8095 330.64663,256.0004 C 330.38939,257.32008 328.49523,258.92996 324.98309,260.78119 C 322.07038,262.31646 317.1422,264.08767 314.00996,264.68387 C 308.80909,265.67389 308.09591,265.30671 305.92758,260.68361 C 304.64213,257.94287 303.60045,255.33494 303.56779,254.82959 C 303.56779,254.82335 303.56725,254.80329 303.56779,254.79706 C 303.56983,254.7846 303.56368,254.74447 303.56779,254.73201 C 303.57033,254.72581 303.59423,254.70571 303.59728,254.69949 C 303.60436,254.68708 303.61772,254.64684 303.62678,254.63446 C 303.63178,254.62826 303.65078,254.60813 303.65628,254.60195 C 304.74325,253.47707 313.75103,252.42988 320.38146,252.42293 z M 424.98018,267.64343 C 431.03685,267.37574 434.30478,271.47211 427.72348,276.55456 C 423.4895,279.82426 417.27249,279.95549 413.41711,276.84727 C 410.64312,274.6109 410.78453,274.29089 415.83589,270.89568 C 419.02986,268.74892 422.27691,267.7629 424.98018,267.64343 z M 447.04443,272.42422 C 447.15173,272.41107 447.27175,272.4246 447.36893,272.42422 C 448.26403,272.42073 450.32961,273.47541 451.97054,274.79838 C 454.89338,277.15477 454.88343,277.3114 451.23313,281.59555 C 449.34379,283.81288 447.4178,285.55161 446.74944,285.69338 C 446.74398,285.69434 446.72527,285.69265 446.71997,285.69338 C 446.71483,285.69389 446.69539,285.69313 446.69046,285.69338 C 446.68573,285.69344 446.66553,285.69359 446.66096,285.69338 C 446.65658,285.69294 446.63564,285.69406 446.63147,285.69338 C 446.14479,285.54423 443.47935,285.12613 440.73193,284.75023 C 437.67553,284.33205 435.74682,283.10041 435.74683,281.59555 C 435.74683,281.5287 435.76388,281.44093 435.77633,281.3679 C 436.26214,278.83489 443.82584,272.8188 447.04443,272.42422 z M 336.10372,279.1889 C 336.38462,279.17316 336.71985,279.1889 337.07713,279.1889 C 341.24162,279.1889 343.53712,282.61672 343.53712,288.84807 C 343.53712,297.22099 338.43208,296.54919 336.0742,287.8724 C 334.02135,280.31797 333.81629,279.31711 336.10372,279.1889 z M 367.81369,281.56305 C 370.32443,281.48336 376.40098,282.88451 377.19396,283.83961 C 377.19763,283.84434 377.22004,283.86743 377.22345,283.87215 C 377.22634,283.87679 377.25036,283.90002 377.25295,283.90464 C 377.25528,283.90928 377.25088,283.93258 377.25295,283.93717 C 377.25475,283.94174 377.28096,283.96513 377.28246,283.9697 C 377.28338,283.9742 377.2818,283.99777 377.28246,284.00222 C 377.28281,284.00666 377.28238,284.03034 377.28246,284.03474 C 377.28222,284.03937 377.28288,284.06238 377.28246,284.06727 C 377.20308,284.71475 375.57778,287.35352 373.62474,289.98634 L 370.02603,294.83219 L 368.13818,288.58788 C 367.20604,285.4739 366.63232,282.66871 366.75178,281.95332 C 366.75292,281.94744 366.75055,281.92633 366.75178,281.92078 C 366.75448,281.91033 366.77818,281.89743 366.78126,281.88824 C 366.78295,281.88399 366.77952,281.85969 366.78126,281.85574 C 366.78503,281.84851 366.8066,281.82914 366.81078,281.82319 C 366.81815,281.81591 366.83187,281.79765 366.84027,281.79069 C 366.84473,281.78731 366.86506,281.76147 366.86978,281.75817 C 366.87476,281.75496 366.89404,281.7613 366.89928,281.75817 C 366.90475,281.75513 366.92307,281.7286 366.92877,281.72565 C 366.94071,281.71993 366.97485,281.6985 366.98776,281.69313 C 367.17513,281.62041 367.46394,281.57414 367.81369,281.56305 z M 352.38642,284.32743 C 352.84125,284.28242 353.55357,284.40034 354.53975,284.55509 C 356.51658,284.86534 358.33646,286.50817 358.63993,288.26265 C 359.00829,290.39236 358.80376,291.87901 358.28594,292.65322 C 358.24511,292.71218 358.18313,292.7979 358.13847,292.84833 C 358.08682,292.90458 358.01778,292.96591 357.96148,293.01093 C 357.94017,293.02727 357.89492,293.06122 357.873,293.076 C 357.76968,293.14239 357.63455,293.20707 357.51902,293.23859 C 357.46916,293.25103 357.39388,293.26515 357.34203,293.27114 C 357.25506,293.27928 357.13898,293.28105 357.04704,293.27114 C 356.02145,293.14075 354.69415,291.86843 353.53683,289.40094 C 352.2029,286.55693 351.59048,285.20878 351.82597,284.65266 C 351.84514,284.61347 351.88592,284.5536 351.91445,284.52259 C 352.01786,284.42244 352.17163,284.3487 352.38642,284.32743 z"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Luxembourg.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Luxembourg.svg
new file mode 100644
index 0000000..67a651e
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Luxembourg.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="600">
+<rect width="1000" height="300" y="300" fill="#00A1DE
+"/>
+<rect width="1000" height="300" fill="#ed2939"/>
+<rect width="1000" height="200" y="200" fill="#fff"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Madagascar.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Madagascar.png
new file mode 100644
index 0000000..99a0045
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Madagascar.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Mali.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Mali.png
new file mode 100644
index 0000000..8bc48f6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Mali.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Maroc.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Maroc.svg
new file mode 100644
index 0000000..e187998
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Maroc.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600">
+<rect width="900" height="600" style="fill:#c1272d"/>
+<path d="M 449.96875,200 427.53125,269.28125 354.75,269.34375 413.59375,312.15625 391.15625,381.5 C 406.32078,370.37811 433.78167,350.44542 450,338.6875 L 508.90625,381.46875 486.40625,312.1875 545.25,269.3125 472.53125,269.3125 449.96875,200 z M 449.96875,247.4375 457.125,269.28125 442.875,269.3125 449.96875,247.4375 z M 422.75,283.9375 418.375,297.53125 399.78125,284 422.75,283.9375 z M 438.125,283.9375 461.875,283.9375 469.21875,306.5625 450,320.5625 430.78125,306.5625 438.125,283.9375 z M 477.25,283.9375 500.1875,283.9375 481.65625,297.53125 477.25,283.9375 z M 426.03125,321.25 437.59375,329.59375 419,343.125 426.03125,321.25 z M 474.03125,321.25 481.0625,343.125 462.5,329.625 462.5,329.59375 474.03125,321.25 z" id="star" style="fill:#006233"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Maurice.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Maurice.png
new file mode 100644
index 0000000..347cc10
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Maurice.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Mauritanie.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Mauritanie.svg
new file mode 100644
index 0000000..6e99272
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Mauritanie.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="600" viewBox="-72,-28 144,96">
+	<rect x="-72" y="-28" width="144" height="96" fill="#006233"/>
+	<circle cy="8" r="31" fill="#ffc400"/>
+	<circle r="30" fill="#006233"/>
+	<g id="c">
+		<path id="t" d="M 0,-12 v 12 h 6" transform="rotate(18 0,-12)" fill="#ffc400"/>
+		<use xlink:href="#t" transform="scale(-1,1)"/>
+	</g>
+	<use xlink:href="#c" transform="rotate(72)"/>
+	<use xlink:href="#c" transform="rotate(144)"/>
+	<use xlink:href="#c" transform="rotate(216)"/>
+	<use xlink:href="#c" transform="rotate(288)"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Monaco.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Monaco.svg
new file mode 100644
index 0000000..56ee2e7
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Monaco.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="750" height="600">
+<rect fill="#ce1126" width="750" height="300" />
+<rect fill="white" y="300" width="750" height="300" />
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Niger.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Niger.png
new file mode 100644
index 0000000..eaf5dcb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Niger.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Nouveau_Brunswick.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Nouveau_Brunswick.svg
new file mode 100644
index 0000000..5820dd2
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Nouveau_Brunswick.svg
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Creator: CorelDRAW -->
+<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="1920px" height="1200px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
+viewBox="0 0 1920 1200">
+ <defs>
+  <style type="text/css">
+   <![CDATA[
+    .str4 {stroke:#1A3C86;stroke-width:0.9}
+    .str1 {stroke:#D32927;stroke-width:0.9}
+    .str0 {stroke:#F4C600;stroke-width:0.9}
+    .str3 {stroke:#1F1A17;stroke-width:0.9}
+    .str2 {stroke:white;stroke-width:0.9}
+    .fil4 {fill:#1A3C86}
+    .fil1 {fill:#D32927}
+    .fil0 {fill:#F4C600}
+    .fil3 {fill:#1F1A17}
+    .fil2 {fill:white}
+   ]]>
+  </style>
+ </defs>
+ <g id="Layer_x0020_1">
+  <metadata id="CorelCorpID_0Corel-Layer"/>
+  <g id="_122816256">
+   <polygon id="_122568304" class="fil0 str0" points="0.0543307,0 1920,0 1920,1200 0.0543307,1200 "/>
+   <g>
+    <polygon id="_122567920" class="fil1 str1" points="0.0295276,0 1919.98,0 1919.98,399.84 0.0295276,399.84 "/>
+    <path id="_122567536" class="fil0 str0" d="M168.944 33.9472c0.132283,2.83583 -1.87795,7.05 -1.87795,7.05 -12.0295,2.16969 -5.63976,-14.1 -12.4028,-19.1622 7.13976,-0.721654 13.95,4.97598 14.2807,12.1122z"/>
+    <path id="_122563776" class="fil0 str0" d="M139.253 34.852c6.76417,15.1843 -3.75827,36.5138 12.7783,45.913 4.13386,1.08543 7.14094,-2.1685 9.02126,-5.06102 -2.25591,-9.0378 -10.9016,-14.4614 -10.1492,-25.3075 7.13976,-5.42244 22.5496,5.0622 26.3079,-7.95236 1.12795,-2.17087 3.38386,-1.44685 5.26299,-1.44685 15.7854,16.2697 -10.8992,32.5382 1.12795,47.7224 27.8114,17.7154 52.2425,50.9752 90.2008,50.2524 44.7248,12.6543 96.5917,14.4626 144.322,15.548 -1.50354,6.50551 -16.161,3.97441 -10.8992,14.8217 4.51181,5.0622 10.8992,10.122 18.0425,11.2063 -4.13622,3.97795 -6.01654,11.2098 -11.6528,12.2941 13.1539,3.61535 16.5366,19.5224 28.5626,24.2232 2.63268,2.89016 4.13504,6.86811 7.51772,8.6752 16.9122,-11.2063 18.0413,-35.0693 27.0614,-51.3366l4.50945 1.80709c-7.51772,22.7764 -23.3031,49.1681 -14.6587,77.3669 31.1953,-11.5689 27.8138,-46.9984 40.5909,-69.4134 1.12795,0 3.00827,-0.722835 3.75945,0.724016 -3.00709,18.4382 -12.4016,34.3441 -12.7783,53.8665 3.00709,3.61654 9.0189,4.70079 12.7783,1.80827 3.75827,-2.16969 10.898,-5.05984 14.2831,0 1.50236,0.722835 2.25472,3.25512 4.50945,2.5311 1.50236,-16.9925 25.5567,-5.42362 27.0591,-19.885 -1.12677,-1.44567 -3.38268,-0.722835 -4.50945,-2.89134l0 -1.44685c11.276,-1.44685 27.8126,-5.78386 36.0803,4.33819 1.50472,4.33937 -3.75827,3.97795 -6.38976,5.0622 -3.3815,1.44685 -6.01299,-2.5311 -9.01772,0 0.375591,3.25276 9.01772,8.31614 1.87795,12.2917 -7.14094,1.44567 -13.9051,-3.25394 -19.9193,0 2.25472,8.67756 13.9051,10.4858 21.0461,15.5457 3.00709,5.78504 -6.01417,10.4858 -10.1469,13.0157 -7.89449,0.362598 -15.0343,-4.33819 -22.5508,-2.52992 1.50354,6.86811 9.39685,9.76181 15.4098,11.9315l0 1.80591c-15.0343,2.5311 -28.9394,-3.61654 -39.8386,-13.7374l-3.38268 0c-1.12913,7.95236 -2.25591,18.437 0.751181,26.0303 -9.39567,1.08543 -13.9051,-7.95472 -18.7925,-14.0988 -6.38858,-7.95472 -4.88504,-20.6102 -16.161,-24.9484 -3.75827,3.97913 -0.751181,9.76299 0.751181,13.7386 -6.76417,6.87047 0.376772,24.2244 -14.2807,23.5004 -7.89213,-8.67756 -13.1551,-18.7984 -24.4311,-22.7764 -1.87913,-12.2929 1.50472,-25.6689 -10.1469,-32.9008 -2.6315,7.23189 -0.752362,18.4382 -9.77126,20.9693 -3.38268,-18.4382 -34.578,-37.598 -9.77244,-55.676 0,-2.5311 0,-5.42244 -3.00591,-6.86811 -1.50354,1.44567 -4.13504,0.721654 -6.01417,0.721654 0,-10.4835 5.26063,-30.0071 -8.27008,-35.4295 -42.8445,-3.25276 -86.0657,-6.14646 -126.281,-15.5469l-8.26772 1.80827c37.2071,23.139 84.5634,6.87047 121.773,29.2854 6.01181,3.25394 7.89094,12.2917 5.63622,19.161 -3.38268,6.14646 -3.75827,14.4614 -10.8992,18.0744l-14.2831 -5.78268c-2.62913,4.69843 5.26299,7.95236 3.38268,13.7398 -7.51417,1.80591 -7.51417,-9.04134 -12.4004,-13.0169 -4.13622,-2.89252 -7.89449,-5.78504 -12.7807,-6.14646 -3.75827,5.0622 2.25472,10.4846 2.63268,15.5469 -12.0272,0.721654 -11.6516,-16.9925 -24.4311,-18.078 -2.63031,6.50906 4.50945,11.2087 5.63858,17.3539 -10.8992,1.08425 -12.7795,-25.3063 -26.3102,-13.7386 -2.62913,3.97795 9.39803,10.8472 0,9.40039 -7.14094,-6.50669 -9.77008,-21.3319 -22.5508,-16.6311 0.753543,2.8937 2.25827,5.0622 1.8815,7.95354 -7.89331,-1.80709 -9.39803,-24.9449 -20.6717,-14.8217 0.375591,2.5311 3.38268,5.42362 0.751181,7.95236 -9.39567,-5.05984 -10.5236,-18.7972 -20.6717,-22.7752 -3.38268,2.89252 -1.12795,8.6752 -1.87913,11.5689 -4.50827,1.08425 -6.76417,-7.59094 -10.898,-1.80709 30.0661,30.3673 73.2874,50.615 121.772,50.2512 3.00591,1.08543 4.88622,3.97913 4.50945,6.86929 -4.13504,5.78504 -10.5236,2.17205 -16.1598,1.80827l-0.753543 5.06102c-7.89094,-4.69724 -14.2807,-12.6531 -24.4299,-11.9291 -5.26063,3.61535 3.00827,10.4846 -3.75591,11.9291 -7.14331,-5.42244 -6.01535,-19.8827 -18.7937,-18.0756 -7.89094,3.61535 9.39567,25.3063 -8.2689,14.8228 -4.13386,-7.59094 -4.88504,-19.5236 -16.161,-23.498 -7.89213,3.25157 -3.38268,11.928 -4.50945,17.3516 -7.14094,-2.52992 -4.50945,-11.5689 -7.14094,-17.3516 -2.25472,-1.80945 -2.25472,-6.14646 -6.39094,-6.14646 -6.3874,1.08425 -2.25354,8.31378 -3.3815,12.2906 -10.1457,-3.25394 -1.50354,-19.8839 -14.6575,-22.7764 -3.38268,-0.724016 -7.14094,1.08425 -7.14094,4.33819 -0.374409,4.70079 3.00709,7.59331 1.88031,12.2941 -6.76654,-2.5311 -9.02126,-10.8472 -9.02126,-18.0791 -2.25472,-3.97441 -4.51063,-8.6752 -10.1469,-10.4835 -5.63858,3.61535 -3.38386,11.9303 -2.6315,17.3539 1.87795,0.722835 0.751181,2.16732 1.12795,3.25157 -10.5236,-3.25157 -7.14094,-16.6287 -9.02126,-26.028 -3.00591,-2.5311 -4.13386,-7.59331 -9.0189,-6.86929 -5.63976,6.86929 -4.51181,18.0756 -4.51181,25.3063 -13.1528,-6.86811 -4.51063,-26.0303 -14.6563,-34.7067 -1.50354,-2.5311 -4.13504,-2.89252 -7.13976,-2.5311 -6.39094,4.33819 -3.00945,13.7374 -2.6315,19.885 -4.8874,0 -8.64567,-6.14764 -10.1492,-10.4846 -9.0189,-21.3319 14.6587,-35.0693 3.75945,-54.5917 -2.25591,-11.2087 -15.7854,-18.4382 -27.0602,-19.885 -10.8992,1.08425 -22.552,12.6543 -32.3232,3.25512 1.50236,-8.67638 12.0272,-15.9083 3.38268,-26.0303 0,-3.25512 4.13386,-5.06339 7.14213,-5.06339 13.1539,-0.360236 24.0531,7.59331 30.8173,18.078 2.25591,2.5311 6.76654,3.61535 9.77244,1.80827 7.51772,-11.2087 -8.26772,-15.1854 -13.5307,-21.6921 -7.14094,-3.97795 -16.1598,-5.42362 -20.6717,-13.7386 0.753543,-13.7386 17.6657,-15.1843 19.1681,-28.924 2.63031,-8.67638 15.4098,-2.52992 14.2831,5.4248z"/>
+    <path id="_122563144" class="fil0 str0" d="M111.442 33.0437l-1.12795 6.86929c-15.0354,7.95354 -18.4169,-6.86929 -32.511,-6.41811 -6.37323,0.205512 7.04646,-7.68189 14.4697,-7.31929 7.51535,-0.362598 15.7854,1.08425 19.1693,6.86811z"/>
+    <path id="_122562760" class="fil0 str0" d="M517.348 26.1756c4.50945,9.03661 -6.01299,21.3295 5.26063,26.7508 11.6528,-11.2063 25.9346,-16.6287 41.3433,-19.1598l10.9004 -6.86929c-5.26181,9.40039 -13.5295,17.7154 -15.4098,28.5614 7.14094,3.61535 10.148,-7.59213 16.5366,-8.67638 13.9075,-1.44685 25.1823,-8.31496 36.8339,-15.5457 -0.376772,14.8217 -16.539,24.222 -23.3031,35.7909l2.63031 2.5311 28.9406 -7.95354c-19.5437,15.9059 1.50354,45.5528 -21.7996,58.9287 6.76417,3.61654 12.4039,7.23189 16.1634,14.1012 0.75,7.59094 0,14.8228 -6.38976,19.885 -9.77362,6.50551 -24.0543,10.8437 -36.0803,5.05984 0,16.2685 18.7902,22.415 25.5567,34.7067 -15.0343,12.2929 -29.6929,-3.25276 -43.598,-6.86811 -1.88031,6.86811 3.38268,13.0146 5.6374,19.161 -4.13268,1.08543 -15.7854,-6.86811 -18.0402,3.61535 -1.87795,3.97677 6.76535,7.95472 0,10.1232 -9.02008,-0.721654 -16.5366,1.44567 -24.4311,2.89134 3.00709,-15.5445 2.25591,-37.598 22.5531,-44.4673 -1.8815,-11.9315 13.9039,-9.0378 17.2854,-15.5469l-23.6764 -6.14646c-3.00709,5.42362 0.376772,16.6311 -9.0189,19.8839 -9.39803,3.25394 -18.0425,-0.721654 -24.4311,-7.59094 -3.00709,-3.61535 1.87913,-6.50669 3.00709,-9.76181 6.76535,2.5311 14.6575,0.361417 18.039,-5.78504l1.50472 -1.80591c-2.25591,-3.97795 -6.01417,-0.362598 -9.77244,-2.5311 -3.3815,-3.25394 -10.1469,-3.25394 -11.6504,-7.23189 5.6374,-0.359055 10.1469,4.33937 15.4087,2.89252 -1.12677,-7.59094 -9.39567,-9.0378 -15.4087,-10.4835 -3.75827,-0.362598 -6.38976,3.25276 -8.26772,6.14646l-5.26299 -2.8937c-6.76417,13.7386 21.7996,25.3075 -2.6315,30.3697 -9.0189,1.44685 -12.7783,-8.31614 -16.5366,-13.7374 -3.3815,-10.1244 12.4039,-11.2098 10.9004,-19.1634 -10.5236,-0.721654 -18.7925,-8.67638 -27.8126,-10.4835 3.75827,9.76181 16.161,18.7996 6.38976,29.6469 10.1469,13.0134 4.50945,29.6445 -3.00709,42.6602 -1.87795,2.1685 -4.8874,2.89134 -7.89213,2.5311 0,-6.14646 -9.39803,1.08307 -7.14094,-6.14646 -3.00827,-2.5311 -8.27008,-1.08425 -6.39094,-6.86929 3.76063,-0.722835 8.2689,-5.78504 7.89213,-10.4846 0.753543,-4.33819 -0.751181,-7.95354 -4.50945,-10.4846 -3.38268,-0.362598 -9.0189,1.44685 -10.5224,-1.80709 -1.12795,-5.0622 6.76417,-0.724016 9.02008,-4.33937 5.63858,-3.97559 0,-11.2075 2.63031,-16.2697l14.2819 -9.75945c-3.00591,-1.44685 -4.88622,-7.95591 -9.0189,-4.33937 -7.14213,4.69961 -6.76654,17.3539 -16.9134,17.3539 -9.77244,0.722835 -18.7937,-3.25512 -24.4311,-8.67756 12.4051,-1.44567 25.9346,-5.06102 32.322,-17.3539 0.753543,-6.14528 -4.1315,-7.59213 -6.3874,-13.0146 -4.51063,-9.40039 -3.3815,-23.4992 3.00709,-31.8154 6.76299,-4.33819 9.77008,-11.5689 18.039,-12.2906 -0.751181,3.61417 0.376772,9.39921 4.51181,11.2063 10.898,-0.360236 6.76417,-14.1 11.6504,-20.6079 6.01299,-2.89134 6.76417,-9.39921 7.89094,-14.8228l5.63976 19.885c6.01181,-16.9913 28.9382,-18.4382 37.9583,-32.8984z"/>
+    <path id="_122562600" class="fil0 str0" d="M1045.78 54.7358c22.5508,3.25394 49.6098,7.59094 63.8941,-13.7386l7.51772 -9.76063c1.50118,0.360236 3.3815,2.1685 3.3815,3.61535 -2.25709,13.7374 -15.411,26.3906 -25.9346,31.0913 -14.2807,6.86929 -39.0874,-1.44567 -55.9984,3.61535 3.75827,4.70079 12.7783,0.722835 15.4087,6.86929 -40.2154,3.97677 -69.9059,-22.4161 -112.753,-16.6311 -16.1598,0.722835 -32.6988,1.44567 -46.9795,6.14646 0.752362,3.61535 4.50827,3.25394 7.13976,4.33819 36.4583,1.80827 71.4106,-0.722835 104.485,8.67756l0 1.08307c27.8114,7.59331 63.8929,13.7398 92.0799,2.5311l0 3.25394c-56.3752,30.3697 -104.483,-17.7154 -164.241,-5.78504 -0.376772,0.722835 -1.88031,1.08543 -1.50354,2.5311 10.898,1.80709 24.0543,7.95472 27.0591,19.885 1.50472,7.95236 0.753543,17.3539 -3.00472,24.222 -4.8874,-6.14646 -1.12913,-15.9071 -7.14213,-21.6909 -9.02126,-12.2929 -22.5508,-17.3539 -37.9606,-17.3539l-1.50354 1.80827c10.9016,2.52992 23.302,7.95354 28.565,18.0756 3.00591,7.59331 6.01417,18.0756 1.12677,25.3075 -3.75827,-9.76181 -6.01299,-23.1378 -19.1669,-28.5614 -22.1752,-17.3528 -54.4972,-11.9303 -81.1819,-19.161 -21.4228,-7.95354 -19.9193,-38.322 -45.1004,-36.515 -32.3232,0.361417 -64.6453,1.08425 -90.9543,15.5457 29.6917,-5.42244 63.5161,-11.9303 96.5917,-6.86811 2.6315,1.08425 4.88504,4.33819 2.6315,6.86811 -28.1894,-2.1685 -60.887,-4.33819 -84.9413,8.67756 -3.75827,3.97677 -3.75827,9.39921 0,13.0146 21.4217,17.7154 49.0512,12.5539 81.1819,14.1012 28.187,1.35472 67.6512,-7.59331 98.4697,3.25276 -51.489,9.03898 -111.624,11.9315 -166.121,5.42244 -12.4039,-2.89134 -24.0543,-7.95354 -36.0815,-12.2906 -3.00709,2.52992 1.50472,4.33701 3.00709,6.14528 21.0472,16.9913 47.6386,15.0933 77.4236,18.0756 48.6921,4.87559 93.5858,-3.61535 139.812,-7.59213l3.75945 1.80827c-52.2437,17.7142 -143.759,15.4547 -175.143,10.1232 -33.7087,-5.72835 -67.2744,-6.50669 -77.4224,-39.7689 -1.12795,-12.6531 6.76654,-23.1378 18.0413,-29.6457 48.1075,-24.9461 102.509,-21.5114 166.872,-24.222 67.6051,-2.84882 130.136,2.71063 194.686,23.4992z"/>
+    <path id="_122546936" class="fil0 str0" d="M1344.2 59.7969c4.88504,-6.14646 -4.51063,-11.5677 -5.26299,-18.0768 19.5437,7.59213 30.4429,32.8996 54.8728,26.7543 5.26299,-2.16969 3.00709,-6.50787 1.12677,-9.40039 -4.50827,-5.42362 -14.2807,-10.4846 -15.4075,-18.0768l28.9394 13.0146c6.3874,-2.1685 -1.12795,-6.50669 0,-10.4835 3.38268,0 4.88504,3.97677 9.0189,2.52992 4.13504,-3.97559 0,-8.67638 0,-13.0146 9.39567,3.97677 13.9075,16.2685 24.4299,19.8827 5.26299,-2.89016 -3.00709,-7.95236 0,-11.9291 10.5236,2.89252 22.5508,16.6299 29.6917,26.7531 12.7783,1.44685 27.437,8.31496 39.4618,0.724016 3.75827,-8.67756 -7.13858,-11.5689 -7.13858,-19.885 6.76535,5.06102 13.1551,7.59213 19.1669,12.2929 1.50236,-7.23189 -6.38976,-13.0157 -5.63858,-20.9693 7.89449,-1.08543 13.1539,13.0134 19.1681,6.14528l-1.87795 -4.33819c9.0189,2.89252 13.5295,13.0157 20.6705,18.0768 2.25591,2.89252 5.6374,1.08543 6.38858,-1.44567 -1.12795,-5.4248 -5.26063,-11.2075 -3.75709,-15.9071 13.9051,4.69961 19.5425,18.0756 32.6965,24.5835 42.848,1.44685 87.5728,0.722835 123.276,18.7996 10.5248,5.42362 16.1622,15.9071 19.9205,25.3075 10.5236,-13.7374 31.9453,-13.7374 48.8587,-10.4846 23.6776,5.42362 43.9748,29.6457 70.2827,18.4382 -4.13504,11.9315 -15.0343,27.4772 -29.6929,28.5614 -26.3079,0.361417 -46.2272,-14.0988 -69.5291,-20.9693 -28.9394,1.44685 -22.9264,41.9386 -54.1217,42.6614 -45.476,7.59094 -93.2079,0 -139.813,0 -88.3217,-4.70079 -174.012,-15.1843 -261.583,-20.9693 -10.1469,1.80709 -21.0496,1.08543 -29.6917,6.14764 75.9201,0.721654 143.196,27.4748 219.115,31.0913 69.1559,6.86929 147.705,40.8531 213.854,4.33819 10.5236,-4.33819 17.2878,-11.5701 28.9382,-13.7386 11.6516,13.7386 25.5579,29.2843 43.2236,32.8996 0.374409,6.50787 -8.27008,10.122 -7.14094,15.5457 6.01299,-0.722835 11.2736,-6.14528 14.2807,-10.122 2.63031,5.42126 -2.25354,11.2063 -4.51063,15.5457 5.26181,1.08425 11.6516,-1.80827 15.411,-4.33937 0.751181,11.5689 -9.77126,18.7996 -19.1681,24.2244 -1.50354,1.08425 -3.75827,1.44567 -5.26181,3.61299 10.8992,2.5311 20.2949,-3.97559 29.6906,-7.95354 -1.50236,20.2476 -30.0673,23.863 -45.8528,33.985 2.25709,6.14528 11.6528,4.69961 16.1622,2.52992 4.50945,-5.78268 12.7783,-7.95236 18.7913,-4.33819 2.25472,2.5311 6.38976,4.33819 6.38976,7.59331 -13.5319,3.61535 -25.1811,10.8461 -40.5909,10.4846 0,1.44685 1.50472,2.89134 2.63031,2.5311l26.3091 2.89134c-7.51654,5.78386 -18.039,13.3772 -30.8197,10.122 -1.87795,-1.44449 -4.13268,-1.80591 -7.14094,-1.44449 -1.12677,10.8449 13.5307,11.9291 20.6728,17.3516 -4.13622,5.0622 -13.1551,4.70197 -19.5449,3.25512 -6.01299,0.362598 -12.7772,-4.69961 -17.2866,1.08543l10.8992 8.6752c-8.27008,-1.08425 -15.7866,0.724016 -21.7996,5.0622l10.1469 10.4835c-12.0272,3.97913 -22.9264,-3.61417 -35.3268,-3.61417 -5.63976,-3.61535 -12.0272,-11.2075 -18.7949,-6.86929 2.6315,4.33701 7.51772,7.95236 11.6516,12.2906 -19.9193,5.7874 -27.8102,-23.1378 -48.8587,-24.5823 -5.26299,5.42244 5.26299,6.50669 4.50945,12.2917 1.88031,3.97559 4.13504,8.67756 1.88031,13.0146 -8.64449,7.95472 -9.77244,-6.50787 -19.9217,-0.724016 -3.00472,3.61654 -4.1315,7.95591 -9.77008,8.67874 -5.6374,-1.08543 -9.77362,-1.44685 -11.6516,-6.14646 -4.50945,-8.67638 12.7783,-18.0768 -1.12677,-20.9693 -15.4098,6.50787 -3.00591,17.3528 -12.4028,26.0303 -3.38268,3.61654 -8.64567,1.08543 -12.0272,-0.722835 -0.375591,-2.5311 -2.25591,-4.33819 -1.50236,-6.87047 6.76417,-0.359055 13.1516,-2.52874 16.9098,-7.95354 -1.12677,-1.08307 -1.12677,-2.5311 -2.62913,-3.61417 -7.13976,2.89252 -14.6575,9.76063 -22.5508,5.42362 -6.01417,-4.34055 -7.89213,-10.122 -10.9004,-15.5469 4.13622,-7.59094 13.9075,-3.97559 19.9217,-4.33701 3.00472,2.1685 6.38976,3.97441 10.8992,3.25157l4.50827 -4.33701c-7.13976,-8.31614 -18.4157,-13.7374 -29.6906,-11.2063 -8.64331,4.69843 -14.2807,18.4382 -25.5555,13.7374 -2.25591,-2.89252 -3.00945,-6.14646 -2.6315,-10.1244 5.26063,-4.33819 11.6492,4.33819 17.2878,-1.08425l4.50945 -5.05984c-3.75827,-2.8937 -9.77126,1.80591 -14.6575,-1.08425 -4.13504,-4.34055 -8.26772,-13.0169 -5.25945,-18.8008 11.2724,-6.86929 21.4217,4.69961 32.322,5.78386 7.89094,5.06102 19.1669,9.03898 28.1858,3.61535 -0.751181,-6.14646 -7.51772,-8.31496 -12.7783,-9.39921 3.38268,-4.33819 11.6504,-1.80709 12.7783,-7.95354 -3.75945,-9.03898 -12.4016,2.89134 -17.2866,-3.61535 12.4004,0 8.26772,-19.885 22.5496,-13.7386 10.1457,7.95354 16.5366,27.8386 33.4488,26.7543 11.6528,-1.08425 22.1752,-6.50906 29.6906,-15.5469 0.753543,-5.0622 -0.374409,-9.76063 -2.62913,-13.7386 -48.1075,-32.537 -119.141,-16.9913 -169.505,0 -41.3421,7.59094 -90.202,15.1843 -131.92,3.25394l3.00591 -1.44685c64.6453,-1.08425 127.786,-6.14528 185.665,-22.7752 8.2689,-1.44685 17.2902,-0.362598 24.4311,-4.33819 -5.26299,-14.4626 -21.4217,-25.3075 -35.3291,-31.0937 -7.89331,5.78622 -16.9134,-7.59094 -25.9323,-1.80709 3.3815,5.0622 16.1598,7.59331 12.4028,16.6311 -7.51654,-9.39921 -19.1693,-16.6311 -31.5709,-18.4382l-1.88031 1.80709c5.26181,5.78386 12.4028,9.40039 16.539,15.5469 -6.01417,0.722835 -10.148,-7.59331 -17.2902,-6.14646l-1.88031 1.80709c5.63858,3.97677 12.4028,10.4835 14.6587,17.3528 -2.6315,0.724016 -7.14094,-5.78386 -10.8992,-3.25276 3.38386,2.52992 4.51181,8.67756 2.63031,13.0157 -18.7913,7.95236 -43.5969,3.97677 -61.2602,-3.61654l-20.6728 -16.6287c-3.75827,3.97677 -0.751181,9.39803 0.753543,13.0134 1.87795,1.80945 3.75591,4.33819 1.87795,6.14764l-3.75827 1.80827c-18.7913,-1.08543 -28.1894,-14.1024 -43.9724,-22.4161 -2.6315,7.95472 11.6504,15.1843 5.26063,21.6921 -14.2819,-3.97795 -27.437,-9.76299 -38.713,-20.2453 -4.88504,7.22953 9.02244,11.5677 10.9004,18.4382 -10.1469,-1.80945 -21.0461,-6.14764 -30.0673,-13.0157 -1.87913,4.70079 3.00827,9.0378 6.38976,13.0157 1.87795,3.97677 12.0272,2.5311 7.14094,7.59094 -10.1492,0.362598 -17.6634,-6.14528 -25.9346,-11.2063l-3.75591 5.42244 -10.8992 -12.2929c-3.38504,3.25394 0,10.4858 -6.01299,11.2087l-10.1492 -18.0768 -5.26063 11.2063c-7.14331,-5.42362 -12.7795,-14.0988 -16.1622,-22.415 -3.3815,1.80945 -4.13504,5.0622 -3.75827,8.67756l2.63031 2.5311c-1.87913,1.80709 -4.50945,5.05984 -7.14094,2.52874 -4.13386,-8.31496 -10.898,-16.2685 -8.2689,-26.0291 -3.00591,0.362598 -6.76535,5.78504 -9.0189,9.40039 -6.76535,-9.76181 -12.0272,-25.3087 -27.8126,-24.222 -3.75827,-0.362598 -6.76535,0.360236 -9.0189,3.61299 26.3079,33.6248 62.0114,67.2461 105.609,71.9457 17.2902,1.80827 34.9535,3.61535 52.2437,5.0622 -49.6122,6.50669 -96.9685,-1.80709 -131.545,-34.7079 -16.5366,-32.1756 -49.611,-57.1228 -85.6913,-62.1827 -16.5366,0 -33.8256,-1.08425 -48.1087,4.33701 33.8268,1.80827 68.7791,3.61654 92.0811,27.4772 2.25709,13.7386 -18.4157,15.9071 -16.1598,29.6457 3.3815,9.03898 6.38976,20.9681 16.1598,24.2232 4.13504,0.360236 8.64449,3.25394 12.7795,1.08425 0.373228,-1.08425 2.25354,-4.33937 2.6315,-2.89252 6.3874,6.86929 10.1457,15.9094 7.14094,25.3075 -3.38268,3.97795 -4.51181,10.4858 -2.6315,15.5457 4.50945,2.16969 2.6315,6.86929 3.75827,10.4858 -11.6528,3.97677 -22.1752,2.1685 -31.5709,-6.14764 -3.00827,2.16969 -2.25472,6.86929 -1.12795,9.76299 3.75827,2.89134 9.02008,5.42126 10.8992,9.39921 -6.76299,-2.1685 -13.1539,-3.97795 -19.9193,-6.14646 -3.38268,5.42244 -4.51063,11.5701 -6.38858,17.3528 -8.26772,-1.44567 -16.9134,-9.03661 -25.9335,-8.67756 -3.00709,7.23189 11.276,9.04134 3.3815,14.8252 -10.5224,2.89134 -17.2866,-11.2087 -25.9323,-5.0622 1.87795,3.61535 3.75945,8.67756 1.87795,13.0157 -9.0189,6.14646 -31.1941,-26.0315 -24.4276,1.44685 -7.14094,3.97559 -7.89449,-6.14646 -13.5307,-7.59331 -5.26299,1.44685 -5.26299,7.59331 -3.75827,11.2087 -9.02126,-0.725197 -17.6634,-13.0157 -25.9346,-6.14646 -1.12677,5.42126 1.12795,9.0378 5.26299,12.2917 -13.1551,3.25512 -18.7913,-9.76063 -30.8185,-11.2075 -3.00709,4.33701 5.63622,6.14646 3.75709,11.2075 -9.39567,2.52992 -21.0461,-16.9925 -24.4276,0 3.00472,1.08425 5.63622,3.97677 4.50945,7.59213 -6.76535,1.80709 -14.2831,-1.08425 -18.7925,-5.0622 -4.51063,-3.97441 -6.76535,-11.2063 -13.5295,-12.2906 -3.38268,3.25394 3.00472,5.05984 0.751181,8.6752 -6.01417,2.89252 -11.6516,-9.0378 -14.2831,0 -1.12677,5.42362 5.26299,7.95472 4.51063,13.0169 -16.5366,-3.97913 -37.9594,-10.1244 -41.7177,-29.2854l-5.26299 -5.42362c-7.13976,4.33937 -0.751181,15.548 -5.26063,21.6921 -2.63031,1.80827 -6.01299,0.725197 -9.02008,1.08543 -4.88622,-6.50669 -8.2689,-15.9071 -18.0413,-15.5457 -4.88504,1.08425 -9.39567,5.42244 -14.6587,2.52874 -10.5224,-11.928 22.5531,-18.437 4.51063,-27.835 -10.5224,1.44449 -8.64331,19.8827 -21.4228,13.0134 -4.50945,-9.0378 -12.4004,-13.376 -21.0461,-17.3539 0.375591,-3.97559 7.14094,-7.95354 12.0272,-8.67638 16.5366,-7.59213 45.8528,26.0303 43.2213,-6.86811 -10.8992,-11.5689 -27.8126,-3.25394 -40.5898,-6.86929 0,-9.76181 2.62913,-20.9693 7.89213,-28.9228 19.9181,1.44567 32.6976,15.1831 46.2295,29.6457 7.13976,-3.25394 4.1315,-13.0157 3.38031,-19.161l-7.89213 -8.67756c2.63031,-4.70079 10.148,-1.44567 14.2831,-4.33819 10.1457,-0.724016 17.6634,-14.4614 28.187,-6.86811 -2.25591,7.95236 -4.13386,16.6287 -1.87795,25.3063 7.89094,12.6543 21.4217,22.7764 36.0803,26.0303 30.0661,-1.44685 62.0138,-1.08543 84.5634,-18.4382 -28.5638,-3.25394 -65.3953,-5.0622 -79.3028,-34.7079 -3.38268,-14.1 5.63858,-18.7996 12.7783,-28.5602 10.5248,-8.31496 21.7996,-15.1843 34.9535,-17.3539l3.00709 -2.5311 -3.00709 -1.80827c-113.127,-9.39803 -198.067,52.7846 -298.419,76.2862 -27.4358,5.42126 -55.9984,15.5433 -85.6902,7.95236 0.751181,-5.0622 -2.25354,-8.31614 3.75709,-10.4846 125.531,-1.44685 222.876,-73.7539 347.277,-81.7075 3.75945,-1.08425 9.02126,-0.721654 11.6528,-3.25276 -26.6858,-2.89252 -55.6252,0.724016 -79.3039,6.86811 0.376772,-1.44449 -1.12795,-2.5311 -1.87913,-3.61535l-3.75827 3.61535 -1.87795 -4.33701 -5.26299 4.33701c-0.374409,-1.08425 0.751181,-2.89134 -0.751181,-3.61535l-4.50827 3.61535 -3.00945 -2.5311c-1.12677,1.08661 -1.12677,2.5311 -2.63031,3.2563 0.75,-1.44685 -0.75,-2.16969 -1.87913,-3.2563l-5.26181 5.0622 -1.87795 -5.0622 -7.14094 6.14646c0,-1.80591 -0.753543,-5.42126 -2.6315,-3.61535 -4.51181,2.5311 -1.88031,10.4858 -9.02126,8.67756 0.376772,-2.1685 2.6315,-3.97677 1.88031,-6.86811 -5.63976,1.08307 -7.13976,7.59094 -12.0272,11.2063 1.50236,-2.52992 1.50236,-6.86929 0,-9.40039 -6.01299,2.8937 -5.63858,11.5701 -12.4028,13.7386l-1.12677 -7.95354c-4.88622,4.33701 -6.01417,11.2087 -12.4039,14.1 0.752362,-2.89134 2.6315,-9.0378 -1.12795,-13.0146 -7.14094,5.42126 -6.76417,13.376 -15.0319,17.3528 0,-4.69961 3.75709,-9.76063 0,-14.1012 -7.89449,3.97913 -4.88622,14.8252 -13.5307,18.4406 0.751181,-6.50906 -1.12795,-12.6555 -6.39094,-15.5457 -0.75,7.95236 -1.12677,19.1598 -10.148,20.6055 1.50472,-6.50551 -1.12677,-13.376 -5.25945,-16.2685 -3.75945,6.86929 -3.00945,16.2685 -10.9004,20.6067 1.87913,-5.78386 1.12795,-12.6531 -2.63031,-17.3528 -6.01417,8.31496 -4.88622,22.0535 -18.0413,25.3087 2.6315,-5.0622 6.38976,-14.4614 3.75945,-22.7776l-3.00827 -2.5311c-4.88386,8.67756 -6.38858,21.3307 -18.0378,24.222 3.3815,-6.14528 5.25945,-15.5445 1.87795,-22.4138 -4.50945,7.59094 -7.89449,19.5224 -18.0402,23.5004 -1.50354,-7.23189 3.38268,-15.5469 -0.753543,-22.7776 -5.25945,9.40039 -10.898,19.1622 -19.9181,26.0315 4.51063,-7.59331 3.38268,-19.5236 0.751181,-27.4783 -4.88622,6.14646 -7.51535,15.1843 -14.2819,21.6933 -2.25472,3.61535 -2.25472,7.59094 -7.14094,8.6752l0.751181 -27.1134 -1.87913 0c-6.38976,7.59213 -8.64449,17.7142 -15.0319,24.2232l-3.00709 0c3.00709,-7.59331 9.77126,-18.0791 1.88031,-26.0315 -7.14331,2.5311 -4.51181,11.5689 -9.02244,16.6299 -2.25354,3.61654 -6.76299,7.95472 -9.77126,9.40157 0.751181,-7.23189 2.63031,-15.9094 -1.87913,-23.139 -5.63858,7.95472 -6.76535,14.4602 -9.77126,23.139 -3.38386,-6.14764 -13.1539,-8.31614 -19.1681,-7.59331 1.87795,-4.33937 8.2689,-5.78504 11.6516,-9.76063 3.75827,-5.78504 8.26772,-12.2929 5.63622,-19.8839 -6.01417,-4.70079 -13.1539,2.1685 -19.1681,-2.53228 -1.12677,-3.25276 5.63858,-3.97559 8.2689,-6.14646l-0.751181 -0.722835c6.38976,-3.25394 10.1469,-8.67756 15.0319,-13.0146 -6.76417,-4.33819 -16.911,-6.50787 -20.6693,-13.0157 141.314,4.33937 281.127,-10.4846 422.069,-14.0988 66.1488,-5.4248 131.92,-12.2929 196.939,-20.6091l1.50472 -1.80709c-20.2949,-3.25276 -43.2224,-1.44567 -63.1429,1.80709 -175.14,19.1622 -355.919,27.8386 -539.329,26.0315 -2.6315,-0.722835 -5.3563,1.53661 -7.89449,-1.80827 -0.374409,-4.69843 7.89449,-5.42244 12.4028,-6.14528 200.699,4.69961 396.136,-8.67756 587.438,-28.5614 71.4106,-5.06102 151.843,-9.03898 223.628,0 68.0268,3.61535 133.422,13.7386 202.954,14.8228 18.0402,-1.08425 35.7047,-3.61535 51.4902,-11.2075 5.26299,-4.70079 8.26772,-12.2917 4.50945,-18.4394 -9.77244,-10.8449 -23.6776,-11.2063 -37.2083,-13.0134l-69.5303 -3.25512 -271.356 -1.80591c-104.109,2.89016 -207.089,8.31378 -311.948,8.6752 -9.77244,1.44685 -21.0484,4.33819 -30.8209,0.722835 54.8752,-18.4382 119.141,-0.360236 178.525,-8.67638 64.2697,-2.5311 127.035,-9.0378 193.183,-7.59094l275.115 0.722835c28.9394,3.97559 64.6441,-1.08543 81.1807,26.752 3.75827,-3.61535 0.752362,-9.03661 -1.12795,-13.0146 -22.174,-23.4992 -54.8717,-22.415 -86.4425,-24.2232l-351.035 1.08425c-43.9724,6.50787 -89.8252,1.08543 -134.176,7.59331 -3.75709,-1.44567 -15.7843,0.361417 -10.1469,-7.59331 21.4228,-17.7142 52.6169,-13.3748 81.1819,-14.0988 0,-3.97677 -3.00709,-10.1232 -7.14213,-11.9303 0,-1.08425 0.375591,-2.16969 -0.751181,-2.89252 9.02126,-0.722835 15.4098,4.33819 21.4217,7.95472 4.13622,-1.80827 1.50472,-4.33937 1.12795,-6.87047 -3.00591,-2.5311 -7.89094,-4.69961 -10.1469,-8.67638 7.14094,-3.61535 11.6504,2.89252 17.2878,4.33819 2.25591,-2.89252 0,-6.50669 -1.87795,-8.67638 10.148,-2.5311 18.7902,10.122 27.0602,14.8228 0.375591,-2.89252 -0.375591,-6.87047 -2.6315,-9.76181 4.51063,-4.33819 9.39685,0.722835 13.5295,2.5311 12.0272,8.31496 20.2972,24.5835 36.8339,21.6921 4.13268,0.361417 6.76417,-3.25394 10.1457,-5.0622 -2.25354,-3.25276 -7.14094,-6.86811 -6.3874,-12.2917 6.76417,-0.722835 11.2736,4.33819 17.2902,6.14646 0,-7.23071 -6.38976,-13.7386 -13.5307,-19.161l10.5224 -0.724016 0 -8.67638c13.5307,7.59213 22.9264,19.161 36.0815,26.7531z"/>
+    <path id="_122546064" class="fil1 str1" d="M138.5 52.9264c-1.50118,1.80945 -5.63622,3.97913 -8.26772,1.80945 0.376772,-6.14646 -0.376772,-11.9315 -2.6315,-17.3539 6.76772,2.5311 9.77244,8.67638 10.8992,15.5445z"/>
+    <path id="_122545400" class="fil1 str1" d="M1005.94 52.9264c4.50945,0.36378 9.0189,-0.721654 12.7783,1.08543 -6.01299,5.78504 -18.4169,2.8937 -27.0591,2.5311 -43.9748,-16.9913 -98.0953,-10.4846 -146.954,-15.5457 55.9984,-3.97677 110.874,-2.52992 161.235,11.9291z"/>
+    <path id="_122544656" class="fil1 str1" d="M498.181 65.9433c-2.6315,-9.0378 3.75827,-17.7142 11.6504,-24.2232 -0.751181,9.40039 -2.6315,19.1622 -11.6504,24.2232z"/>
+    <path id="_122544040" class="fil1 str1" d="M543.281 67.7504l-5.26063 -0.722835c-3.00827,-7.59213 4.1315,-15.1843 10.8992,-18.4382l5.25945 -2.5311c-3.3815,5.42244 -7.51535,14.4614 -10.898,21.6921z"/>
+    <path id="_122543656" class="fil1 str1" d="M183.602 54.7358c-1.50472,3.61535 -0.751181,11.2075 -7.51772,9.39921l-3.38268 0c-1.88031,-4.33819 4.13386,-3.25276 4.50945,-6.86811 1.50472,-3.61654 -3.3815,-6.87047 0.751181,-9.40039 3.38504,1.44567 4.88858,3.25394 5.63976,6.86929z"/>
+    <path id="_122543040" class="fil0 str0" d="M1124.33 47.8665c3.75827,12.2917 -13.1551,18.4382 -19.9193,24.9461l-5.26299 0c4.13622,-10.8461 20.2961,-13.7386 25.1823,-24.9461z"/>
+    <path id="_122542376" class="fil1 str1" d="M879.658 80.765c-9.39567,7.59331 -23.8654,2.8937 -32.322,0 -14.5618,-7.5 -29.5972,-26.0291 -22.5496,-31.0913 7.9878,-1.26614 8.37874,12.3626 15.4087,18.8008 15.5976,14.2795 30.0673,14.0988 39.463,12.2906z"/>
+    <path id="_122541744" class="fil1 str1" d="M597.403 50.3965c-10.5248,9.40039 -21.0472,19.1622 -28.9406,30.3685 -5.6374,1.44685 -4.51063,-5.78386 -3.38268,-8.6752 7.14331,-11.5701 20.6705,-16.2685 32.3232,-21.6933z"/>
+    <path id="_122541112" class="fil1 str1" d="M472.247 70.2815c-1.12913,1.08425 -2.25591,2.5311 -3.75827,1.80827 -3.38268,-5.0622 -1.88031,-12.6543 0.751181,-17.3539 2.6315,4.69961 5.26299,10.122 3.00709,15.5457z"/>
+    <path id="_122540280" class="fil1 str1" d="M451.201 93.7819c-6.38976,0 -9.77362,-5.78504 -10.5236,-11.2087l0 -4.33819c3.75709,5.78504 15.0331,5.78504 10.5236,15.5469z"/>
+    <path id="_122539888" class="fil1 str1" d="M597.403 104.989c-1.88031,1.80709 -4.88504,3.97677 -7.14331,1.80709 -6.3874,-9.03898 10.526,-16.6299 12.7807,-26.0315 3.00472,9.03898 -1.50354,17.7154 -5.6374,24.2244z"/>
+    <path id="_122539120" class="fil1 str1" d="M509.831 107.519c2.25472,-7.23071 3.38268,-14.8228 3.00709,-23.139 5.6374,14.4626 1.87913,32.9008 -7.51772,43.3854 2.6315,-10.4846 -14.6563,-8.67756 -21.4217,-14.1 -5.26181,-4.69961 -13.9075,-6.14646 -15.4098,-13.7374 7.14213,6.86811 14.2831,-2.8937 22.5508,1.80591 -1.88031,-6.86929 -10.8992,-13.0146 -18.7925,-14.0988l-7.51654 1.08425c0.751181,-3.61535 5.6374,-4.33937 8.26772,-6.14646 17.6657,-0.722835 23.6787,16.9913 36.8327,24.9461z"/>
+    <path id="_122538600" class="fil0 str0" d="M998.802 95.589l-27.0626 6.14528 -15.4075 -16.6299c15.7843,-0.361417 30.0661,2.89252 42.4701,10.4846z"/>
+    <path id="_122537712" class="fil1 str1" d="M112.945 88.7197c3.00591,3.61535 -0.376772,8.31496 -3.38504,10.1232 -4.50945,2.5311 -9.0189,0 -10.8992,-3.25394l0 -3.61535c5.26299,5.42362 9.77244,-1.80709 14.2843,-3.25394z"/>
+    <path id="_122537080" class="fil0 str0" d="M82.5012 93.7819c-1.12795,9.76063 -14.2819,2.16732 -19.9205,6.86811 1.50472,-4.70079 3.47835,-9.30945 13.5307,-11.2063 3.00591,-0.362598 6.38976,1.08425 6.38976,4.33819z"/>
+    <path id="_122536696" class="fil1 str1" d="M530.878 114.75c13.9063,-0.722835 38.7118,-6.50787 49.6122,6.86929 -7.89449,-1.08543 -20.2972,-5.78504 -25.5579,0.724016 6.01417,1.80709 12.0272,5.06102 16.5366,7.95236 -10.8992,3.25512 -25.1811,8.67638 -35.3291,0 -3.38268,-1.08425 -5.26181,-6.50787 -9.77126,-4.33819 -4.51181,1.80827 -1.88031,8.67756 -8.27008,7.59331 6.38976,-14.4626 10.526,-32.5394 25.1823,-41.5772 -4.13386,7.59094 -11.2748,14.1 -12.4028,22.7764z"/>
+    <path id="_122536064" class="fil1 str1" d="M446.692 103.181c0.75,2.5311 -0.753543,4.33819 -1.50472,6.14528 -3.75945,-2.1685 -10.1492,-7.95236 -10.1492,-13.0134 4.13622,1.80591 9.39685,3.25157 11.6539,6.86811z"/>
+    <path id="_122535680" class="fil1 str1" d="M191.494 109.326c-3.00709,6.87047 -7.89213,16.2685 -18.0413,16.6311 1.88031,-8.31496 8.64449,-18.4382 17.2902,-19.8839l0.751181 3.25276z"/>
+    <path id="_122534808" class="fil0 str0" d="M493.4 105.233c-4.05827,2.1685 -1.35236,6.94134 -2.25472,10.4126 -1.80354,-1.30276 -4.50945,-4.33937 -3.15709,-7.37598 1.80354,-1.30157 2.70591,-4.33819 5.41181,-3.03661z"/>
+    <path id="_122534424" class="fil0 str0" d="M136.622 119.812c5.6374,8.67638 1.50472,20.2453 -3.75827,27.8374l-1.87795 0c-3.76063,-9.39921 -1.8815,-22.7764 -15.0343,-26.0303 -2.63268,-1.80709 -8.2689,-1.80709 -7.51772,-5.42244 9.77126,-2.16969 20.2949,-3.97677 28.1882,3.61535z"/>
+    <path id="_122534040" class="fil1 str1" d="M1793.7 122.343c1.88031,-1.80945 -1.50236,-3.97677 -1.87795,-6.14646 13.9051,1.80591 27.4358,15.9071 43.9724,13.0146 -4.50945,7.23071 -13.5307,10.8461 -22.5508,7.95472 -25.5567,-2.5311 -45.8516,-27.8398 -73.6642,-14.8228 2.25472,-3.97677 6.38976,-6.87047 11.6504,-8.67756 15.7854,-1.08425 28.5626,4.70079 42.4701,8.67756z"/>
+    <path id="_122533656" class="fil1 str1" d="M1726.05 129.211c-0.375591,9.39921 -5.6374,16.9925 -12.7783,23.4992 -14.2807,11.9303 -33.8256,11.5689 -52.2413,13.0157l-105.612 -5.0622 -189.423 -15.5457c-0.751181,-1.80827 -2.25472,-0.722835 -3.75945,-1.08425 25.5579,-5.42362 49.6122,3.25394 75.1689,2.5311 78.5504,1.44567 152.591,15.5457 232.645,11.5677 16.5366,-3.25394 36.4559,-2.1685 45.1004,-20.9669 1.12677,-6.14646 5.26181,-14.4626 0,-19.885 5.26181,1.80709 9.02126,7.23071 10.8992,11.9303z"/>
+    <path id="_122532904" class="fil1 str1" d="M209.533 122.343c2.6315,7.95236 -5.26063,11.5677 -10.8992,14.0988l-7.89094 1.44567c5.63622,-4.69961 10.1469,-14.8228 16.9122,-18.0756l1.87795 2.5311z"/>
+    <path id="_122532272" class="fil0 str0" d="M547.746 120.898c-2.4437,2.35039 -5.3752,8.46024 -2.4437,12.6898 -2.44134,-1.41024 -4.39606,-5.63976 -3.41811,-9.40039 1.95236,-0.938976 2.93031,-4.22953 5.86181,-3.28937z"/>
+    <path id="_122531888" class="fil1 str1" d="M228.702 136.442c1.50472,9.03898 -9.77008,10.1232 -15.4087,13.7374 -4.51063,-8.3126 7.14094,-13.0134 10.8992,-18.0756 1.88031,1.08425 3.75827,1.44685 4.50945,4.33819z"/>
+    <path id="_122531272" class="fil1 str1" d="M605.672 137.166c-5.6374,5.78386 -13.9075,7.22953 -21.7996,5.05984l-0.752362 -0.722835c5.26181,-2.89252 14.2831,-9.39921 22.552,-4.33701z"/>
+    <path id="_122530664" class="fil0 str0" d="M118.583 140.781c-0.84685,9.30827 -8.64567,15.1831 -17.2902,15.5445 8.64449,-3.97559 1.50472,-29.6457 17.2902,-15.5445z"/>
+    <path id="_122529776" class="fil1 str1" d="M458.718 145.841c0.751181,4.70079 -5.63858,5.0622 -8.26772,6.86929l-2.6315 0c-1.50472,-4.33819 4.88504,-7.95354 7.14094,-11.9291 2.6315,0.360236 4.50945,2.1685 3.75827,5.05984z"/>
+    <path id="_122529168" class="fil1 str1" d="M597.403 148.372c-4.13386,8.67638 -15.0343,5.42244 -23.302,6.14764 3.75827,-7.23189 14.6587,-5.78504 23.302,-6.14764z"/>
+    <path id="_122528504" class="fil1 str1" d="M1474.99 192.842c-13.9051,8.6752 -32.322,1.44449 -48.4819,2.52874 -60.5102,-3.97559 -110.499,-34.3453 -173.264,-30.3673 19.5437,-9.39921 42.0969,-0.724016 63.1417,-1.08425 51.4902,12.6543 103.356,25.3075 158.604,28.9228z"/>
+    <path id="_122527888" class="fil1 str1" d="M574.101 178.018l0 1.80709c-5.26299,-1.08307 -8.64567,-5.06102 -10.9004,-9.76063 7.14094,-3.97677 9.39567,2.89252 10.9004,7.95354z"/>
+    <path id="_122527272" class="fil1 str1" d="M560.57 171.149c-1.50354,4.69961 2.63031,8.67638 0,13.0157l-9.02008 -10.4846c1.50236,-2.1685 5.26063,-3.25276 9.02008,-2.5311z"/>
+    <path id="_122526504" class="fil0 str0" d="M498.181 180.548c-4.88622,16.6323 -15.222,40.2213 -23.8677,55.4067 0,0 3.28937,-30.2787 15.5067,-58.2969 2.62795,-1.08425 7.60866,1.08425 8.36102,2.89016z"/>
+    <path id="_122526120" class="fil1 str1" d="M1740.33 200.433c7.5189,13.376 -2.25354,26.0315 -5.25945,38.322 -3.75827,1.08543 -7.51654,4.70079 -10.8992,3.25394 9.0189,-10.122 12.7772,-26.0291 7.14094,-39.0449l-4.50945 -3.25276c-19.1705,6.14528 -39.8398,12.6531 -61.265,11.2063 21.0484,-4.69961 39.4654,-14.4602 59.3846,-21.6909 8.64331,-0.724016 11.2748,5.78386 15.4075,11.2063z"/>
+    <path id="_122525088" class="fil1 str1" d="M1137.86 199.711c7.14094,2.52874 15.0343,4.69961 19.9205,11.2063 0.374409,6.86929 -7.51654,7.95354 -12.0272,10.4846 -10.148,1.08425 -18.0402,-9.39921 -27.8114,-4.33701 -1.50472,6.14409 6.76299,3.25276 8.26772,6.86811l5.26181 5.0622 -32.3244 -7.59331 0 2.5311c9.39803,5.42244 21.4252,10.1232 27.0626,19.161 -8.26772,-2.16969 -16.1622,-10.122 -24.4311,-6.14646l19.9217 14.824c-12.7795,6.86811 -26.3114,18.7996 -42.4713,16.2685 -7.14094,-1.44567 -16.5354,-2.5311 -19.1669,-9.40039 3.00472,-2.1685 6.38976,2.1685 9.0189,0.722835 -8.64567,-11.9291 -24.4311,-14.8228 -37.585,-19.885 7.14331,-5.42126 16.9134,2.5311 25.9346,2.5311 -3.75827,-6.50551 -16.1622,-7.95236 -22.5496,-13.0134 8.26772,-3.61654 14.2807,4.69843 21.7961,1.80709 -10.898,-7.59331 -26.6835,-7.23189 -38.7094,-13.7374l0 -2.5311c24.0531,-28.2 66.8988,-16.6323 96.215,-7.95472 7.89213,-2.1685 16.9134,-1.80827 23.6776,-6.86811z"/>
+    <path id="_122522144" class="fil1 str1" d="M1589.62 243.094c-10.8992,5.78504 -9.0189,-10.122 -16.1587,-14.0988 7.89094,0.722835 13.1539,7.59213 16.1587,14.0988z"/>
+    <path id="_122521760" class="fil1" d="M1600.52 239.478c0,2.17205 0.375591,4.34055 -1.87795,5.4248 -6.39094,-2.5311 -7.14213,-10.1244 -11.6516,-14.8228 5.26063,1.08425 11.6516,3.61417 13.5295,9.39803z"/>
+    <path id="_122521128" class="fil1 str1" d="M1614.05 238.755c0,2.16969 0.376772,5.78504 -2.63031,6.14764 -6.76535,-2.5311 -6.76535,-10.4846 -11.6516,-14.8228 5.63622,1.08425 10.1469,3.97677 14.2819,8.6752z"/>
+    <path id="_122520496" class="fil0 str0" d="M889.807 249.241c1.50236,3.25276 -2.6315,3.61535 -4.50945,4.33701 -12.7783,1.80945 -9.39685,-13.376 -19.9217,-14.8228 9.77244,-2.89252 20.2949,2.89488 24.4311,10.4858z"/>
+    <path id="_122520336" class="fil0 str0" d="M382.045 239.478c-24.4287,12.2941 -49.9854,24.5858 -72.1606,40.1315 -0.377953,0.722835 0.75,1.80709 1.50236,1.44567 30.8185,-14.8228 60.5114,-27.1146 95.8394,-31.8142 6.76535,5.0622 5.63858,14.4614 4.51181,21.6909l-9.02244 8.67756c6.01417,2.89134 13.1563,5.78504 20.6728,3.25394 5.26181,-1.44685 8.2689,-8.67638 15.4087,-6.14764 3.75827,4.70079 6.01417,10.8472 7.89449,14.8252 -3.75945,0.722835 -7.14331,-5.42362 -10.5248,-0.724016l4.51063 6.86811c-6.39094,0.725197 -13.9075,-5.05984 -19.9205,-1.80591 0.375591,5.78386 6.76654,7.95236 10.9004,10.4835 -7.89213,9.03898 -24.8055,1.44567 -36.0815,0 -3.75827,2.89252 0.75,6.87047 2.63031,9.40157 -8.64449,2.52992 -18.039,-3.97795 -25.1811,-1.44685 0.375591,5.42126 7.51772,5.42126 9.77362,8.6752 -10.9004,0 -24.0543,0 -34.2024,-3.61299 -3.75827,1.44449 -0.753543,4.69843 0.751181,6.14528 1.50236,2.52992 4.13386,2.1685 6.38858,3.25276l0 1.80827c-13.9051,2.5311 -24.8031,-6.50787 -37.9594,-0.724016 0,4.33937 5.26181,3.25512 7.13976,6.14646 19.9217,1.08425 36.4583,9.40039 52.6193,18.8008 -17.2902,0.721654 -34.2024,-5.4248 -48.1075,-15.5469 -3.75945,1.08425 -10.5224,-2.52992 -11.6516,3.61535l10.1469 13.0146c-13.5295,3.97913 -20.2949,-21.3307 -33.4488,-12.2906 -0.753543,6.14409 4.13386,9.40039 7.89213,12.2906 -22.5508,7.23189 -28.187,-31.8142 -49.611,-16.6299 7.51654,4.33937 10.8992,8.31496 16.5378,14.824 1.87913,3.97559 -5.26181,5.42244 -8.26772,3.61299 -7.14094,-3.61299 -7.89449,-14.4602 -17.2902,-14.8217 -3.75827,2.89252 0.751181,11.9315 -7.14094,10.4835 -7.13976,-5.0622 -13.1539,-10.122 -16.9122,-19.1598 -2.25472,-0.724016 -4.50945,0.721654 -4.50945,2.5311 -2.25472,5.42244 3.75827,7.59213 1.50236,13.0134 -6.01181,3.97913 -7.14213,-4.33701 -11.6516,-5.05984 3.00827,-8.67756 -1.12677,-16.9925 -3.3815,-24.5846 -5.63858,-4.69961 -8.64567,-9.39921 -15.4087,-11.2063 -8.64449,8.6752 6.3874,16.6299 9.0189,25.3063 0.376772,7.59213 -1.87795,14.4614 -7.14094,19.885l-3.00591 0c3.00591,-4.70197 5.25945,-10.8472 5.6374,-17.3539 -2.6315,-2.17087 -5.26299,-5.06102 -9.02008,-6.14646 -3.76063,4.70079 3.75709,8.31614 0,13.0157 -5.63858,-0.362598 -12.4028,-8.67874 -20.6705,-4.33937 -3.75827,3.25512 -8.27008,4.33937 -12.7795,6.14646 2.63031,-3.61535 5.63622,-9.0378 1.87795,-13.0157 -3.00591,-5.0622 -8.2689,-1.44449 -11.6516,0 -7.51417,6.86929 -17.6634,9.76181 -23.6764,18.078 -14.6575,1.08425 -4.13504,-19.5224 -18.7913,-20.6091 -0.753543,-2.89134 -4.88622,-3.97559 -4.51181,-6.86929 0,-4.69843 3.75827,-6.14409 7.14094,-8.6752 15.7854,-3.61535 28.1894,6.14646 42.4701,1.44685 1.50472,-1.08543 0.376772,-3.2563 0.751181,-5.0622 -2.62913,-6.14764 -7.89213,0.721654 -11.6504,-2.5311 -13.5295,-3.61654 -27.8126,-5.42362 -41.3421,-1.08543 -6.01181,-11.2063 6.01299,-20.2453 7.14213,-31.0913l10.8992 0c12.7783,8.31496 25.9323,16.9913 41.3421,19.885l3.75827 -3.25394c-4.50945,-15.9094 -24.8067,-6.50787 -30.0685,-20.2465 -1.50236,-12.6543 15.4098,-11.2075 15.4098,-23.1378 2.6315,-2.8937 6.76535,-3.25394 10.1492,-1.80709 6.76299,5.05984 7.51417,12.6543 11.6504,19.161 21.7984,24.5835 61.2614,9.39921 89.074,19.8839 51.489,2.89134 86.4449,-33.261 130.793,-47.0008l3.00591 0z"/>
+    <path id="_122519704" class="fil0 str0" d="M123.092 249.241c-0.377953,2.5311 1.12677,6.50669 -2.6315,6.86811 -8.2689,-1.44685 -9.77244,-10.122 -14.6587,-14.8228 6.76654,0.722835 13.5307,2.16969 17.2902,7.95472z"/>
+    <path id="_122510800" class="fil1 str1" d="M1672.68 252.494c7.89449,6.86929 10.9004,16.9937 8.27008,27.1157 -4.51181,8.31614 -9.39685,20.2453 -22.5508,18.8008l-3.00709 0c6.01417,-3.97795 12.4039,-8.67756 13.5319,-15.5469 1.87795,-8.31614 -1.88031,-14.8228 -7.14331,-20.6079 -8.64213,-9.39921 -20.2949,-13.0146 -31.5685,-14.8217 13.9039,-2.8937 31.1941,-2.8937 42.4677,5.05984z"/>
+    <path id="_122509304" class="fil1 str1" d="M1742.96 275.994c0.753543,7.95354 -9.77126,8.31496 -7.13976,17.3539 -11.2748,3.97795 -6.38976,19.885 -21.7996,19.885 5.6374,6.86811 -6.01417,9.39921 -10.5224,10.4835 -9.02126,-0.724016 -19.5449,2.16969 -25.5579,-6.14646 4.50945,-1.80591 11.6504,-2.5311 14.6587,-7.59094l-1.87795 -1.80827c4.50945,-4.70079 13.9039,-1.44685 18.7902,-6.14646 -1.12677,-2.16969 -3.38268,-1.80827 -5.26299,-1.80827 3.75827,-6.86811 14.6587,-3.97559 17.2902,-11.9303l-5.6374 -2.89134c3.75709,-6.50906 15.4098,-4.70079 11.6516,-14.4626l-5.26299 -3.61535c7.14094,-5.06102 13.1539,-11.9291 17.289,-19.1598 12.0272,8.31496 -6.38976,20.2441 3.3815,27.8374z"/>
+    <path id="_122508640" class="fil1 str1" d="M152.783 261.171c0.752362,2.5311 3.75827,6.50787 0,8.67638 -1.87913,0.362598 -3.75827,3.25512 -5.26063,1.08425 -4.88622,-3.25276 -1.8815,-9.76063 -8.2689,-11.5689 -0.753543,-10.122 12.4016,-2.89134 13.5295,1.80827z"/>
+    <path id="_122507824" class="fil1 str1" d="M1048.41 281.055c-24.0543,1.80827 -48.4819,-8.67638 -65.772,-24.2232 23.6787,4.33937 42.8469,18.7996 65.772,24.2232z"/>
+    <path id="_122506896" class="fil1 str1" d="M915.741 266.595c-1.50472,5.42362 0.374409,12.6531 -6.01535,15.5445 -2.25472,-1.80709 -4.13268,-7.59213 -4.51063,-10.4835 0.753543,-3.97677 1.12913,-9.40039 5.26299,-11.2087 4.13386,-0.359055 4.50945,3.25512 5.26299,6.14764z"/>
+    <path id="_122506112" class="fil0 str0" d="M616.571 271.656c0.751181,13.0146 -14.6587,16.9925 -22.552,24.2232 -6.38858,0.721654 -10.5224,-5.78504 -16.5366,-3.25394 -1.12677,3.97559 3.38268,13.376 -4.50827,14.4602 -11.2772,1.80945 -23.3043,-10.122 -31.572,-0.722835 -6.01299,1.08543 -12.7772,-1.08425 -14.2819,-6.86811 0.751181,-4.33819 1.12795,-9.40039 5.26299,-11.2087 18.4146,2.5311 42.4689,7.95472 54.1205,-8.67638 2.62913,-6.14646 3.38268,-13.7374 10.1469,-17.3539 8.64449,-1.80827 13.9063,3.97677 19.9205,9.40039z"/>
+    <path id="_122505480" class="fil0 str0" d="M1577.22 269.848c1.12795,1.80827 -2.25591,5.4248 -3.75827,7.95354 -4.13622,-0.722835 -7.89449,-6.50669 -11.6528,-9.76063 3.75827,-3.61535 10.9016,-0.361417 15.411,1.80709z"/>
+    <path id="_122504848" class="fil1" d="M1186.35 285.394c-3.38268,8.6752 -13.1551,14.4602 -21.424,14.8217 9.39685,-9.0378 18.4146,-19.8839 19.9193,-32.8996 4.51181,3.61535 2.25472,12.6543 1.50472,18.078z"/>
+    <path id="_122504232" class="fil1 str1" d="M858.986 280.332l0 1.80709c-4.88386,-8.67638 -27.4358,3.61535 -16.911,-12.2917 6.76417,1.08425 13.1539,4.33937 16.911,10.4846z"/>
+    <path id="_122503600" class="fil0 str0" d="M822.155 277.801c0.376772,13.3772 -18.0402,2.16969 -23.6776,11.2087 -0.376772,-7.23189 9.39567,-12.6531 16.5366,-15.5469 4.13504,-1.44449 5.26181,1.80945 7.14094,4.33819z"/>
+    <path id="_122458032" class="fil0 str0" d="M80.6209 289.01c0.376772,2.89134 -0.376772,6.14646 -3.75827,6.86929 -6.01417,-1.44685 -13.5283,-4.33819 -19.5425,-0.722835 4.13268,-6.50787 19.9181,-21.6933 23.3008,-6.14646z"/>
+    <path id="_122457272" class="fil1 str1" d="M1151.39 295.879l0 2.5311c-30.4441,26.752 -71.7874,34.3453 -113.881,37.598l-14.2819 -2.89134c4.13504,-4.33937 0,-12.6531 6.38976,-15.5469 13.1539,3.97795 33.8256,8.31614 43.2213,-3.25276 9.77126,-2.5311 25.5567,5.78386 29.6906,-7.23189 8.64449,-5.78386 17.6657,4.33819 26.3102,-1.44567l0.751181 -9.76063c8.2689,2.5311 15.7854,-5.0622 21.7996,0z"/>
+    <path id="_122456656" class="fil1 str1" d="M235.845 308.895l-1.12795 6.14409c-3.38386,-6.50669 -14.6575,-13.0146 -7.14213,-20.9693 7.14213,1.80945 7.51654,8.31614 8.27008,14.8252z"/>
+    <path id="_122456040" class="fil1 str1" d="M253.885 302.747l-1.12913 10.4858c-5.6374,-4.33819 -10.5236,-7.59331 -9.77126,-16.2697 4.88504,-7.23071 10.5236,1.44685 10.9004,5.78386z"/>
+    <path id="_122455424" class="fil1 str1" d="M270.796 303.831l-0.751181 8.67638c-6.01299,-3.61299 -7.89213,-9.76063 -10.8992,-15.5445 5.26299,-6.86929 10.148,2.1685 11.6504,6.86811z"/>
+    <path id="_122455040" class="fil0 str0" d="M502.69 302.024c13.9075,1.80709 28.9394,5.78386 32.6988,19.8839 0.375591,3.61654 -3.75945,3.25394 -5.6374,4.33701 -15.0343,2.53228 -26.3091,-11.928 -40.5921,-4.33701 0.753543,8.31614 14.6587,4.70079 11.6516,13.0146 -10.1469,1.80945 -20.6705,-9.03661 -30.4429,-2.52992 2.25472,4.33937 5.26299,8.67756 10.8992,9.40039 -21.7984,11.2087 -30.4441,-20.2453 -49.6098,-11.2075 0.375591,9.39921 17.2878,9.39921 12.4028,19.885 -18.7913,14.0988 -27.8126,-18.4382 -45.1028,-8.67756 -0.375591,5.42126 6.76654,6.14646 8.2689,10.4846 -12.7783,-0.722835 -22.9264,-11.9315 -37.2083,-11.9315 43.2224,-7.22953 83.061,-20.9669 118.39,-46.2768 7.14094,-2.89134 9.77244,6.86929 14.2819,7.95472z"/>
+    <path id="_122454152" class="fil1 str1" d="M105.051 295.156c3.00709,6.86811 -4.50945,6.14528 -9.0189,8.6752l-5.63976 0c-1.87795,-2.52992 0,-5.06102 1.88031,-6.86811 4.13386,4.33819 8.64449,-1.44685 12.7783,-1.80709z"/>
+    <path id="_122453768" class="fil1 str1" d="M935.659 322.993c-4.50945,7.23189 -12.0272,7.23189 -19.9181,6.86929 7.13976,-7.22953 16.1598,-16.6287 18.0402,-27.1146 6.01417,5.78504 4.13386,13.376 1.87795,20.2453z"/>
+    <path id="_122453128" class="fil0 str0" d="M1523.1 313.233c-0.752362,7.95236 -13.1551,2.5311 -18.039,7.95236l-1.88031 0c-1.50472,-6.86811 8.26772,-11.2063 13.5295,-14.1 4.13386,-1.08425 5.26299,3.97795 6.38976,6.14764z"/>
+    <path id="_122452496" class="fil1 str1" d="M971.739 315.764c0,6.86811 -2.6315,11.9291 -7.89331,14.8217l-3.75591 0c1.12677,-6.86929 5.25945,-12.6531 3.75591,-20.6067 5.63976,-4.33937 5.63976,3.25394 7.89331,5.78504z"/>
+    <path id="_122451856" class="fil1 str1" d="M954.827 321.185c0,7.59213 -7.51772,13.7374 -13.5307,17.3539l-6.38858 0c2.62913,-5.42244 7.51654,-9.0378 10.8992,-14.8228l3.38268 -13.7374c6.01299,0.360236 3.75945,7.22953 5.6374,11.2063z"/>
+    <path id="_122451088" class="fil1 str1" d="M846.585 325.525c-1.87795,1.80591 -4.50945,3.61535 -6.38976,1.80591 -6.01417,-5.06102 4.13504,-8.31378 1.88031,-14.0976 5.26063,1.80591 4.13268,7.59094 4.50945,12.2917z"/>
+    <path id="_122450456" class="fil0 str0" d="M822.907 331.671c1.87913,6.86811 -16.9122,13.7374 -16.9122,13.7374 0.374409,-7.23189 1.5815,-11.2417 6.18543,-17.9315 3.00709,-3.97677 12.6059,-1.23189 10.7268,4.19409z"/>
+    <path id="_122449824" class="fil1 str1" d="M130.232 331.671c-1.50354,5.42126 -8.64449,8.6752 -14.2807,10.122 -1.12795,-2.16969 -4.13622,-3.61654 -3.00591,-6.87047 6.01063,-0.361417 10.8969,-6.14528 17.2866,-3.25157z"/>
+    <path id="_122449440" class="fil1 str1" d="M894.317 343.602c-1.12795,3.97559 2.25591,10.1232 -2.62913,11.2075 -5.63976,-4.33819 -8.64567,-12.2917 -7.5189,-18.8008 7.5189,-4.69961 8.2689,3.61535 10.148,7.59331z"/>
+    <path id="_122448800" class="fil0 str0" d="M94.9028 341.793l0 2.89252c-6.01299,2.16969 -12.4016,4.69843 -16.9134,8.6752 -1.12677,-7.22953 5.26181,-11.928 10.9004,-16.6287 3.75827,-0.361417 5.26181,2.16969 6.01299,5.06102z"/>
+    <path id="_122448160" class="fil1 str1" d="M1614.05 360.231l0 0.722835c-3.3815,-2.16732 -9.0189,-5.42362 -8.26772,-10.4835 1.50236,-0.725197 2.25354,-3.2563 4.50945,-2.5311 -1.50472,3.97559 2.63031,8.31614 3.75827,12.2917z"/>
+    <path id="_122447544" class="fil0 str0" d="M171.575 350.471c0.375591,9.76063 -6.38976,17.3528 -12.4028,23.498l-2.6315 0c13.9075,-5.78504 -6.38976,-31.0913 15.0343,-23.498z"/>
+    <path id="_122443872" class="fil0 str0" d="M1553.54 355.892c-4.50945,4.70079 -13.1539,4.70079 -19.9169,6.86929 -1.12913,-2.89016 1.12677,-6.86929 3.00472,-9.40039 3.38386,-2.5311 7.89331,-6.50551 12.4028,-3.61535 1.50472,2.16969 2.6315,4.34055 4.50945,6.14646z"/>
+    <path id="_122442984" class="fil0 str0" d="M875.148 358.423c1.88031,6.14646 -4.13386,10.8449 -9.02008,13.0146l-7.14213 1.80945c1.50354,-4.70079 2.05394,-15.0378 8.27008,-18.4382 3.75827,-0.722835 6.76535,1.08307 7.89213,3.61417z"/>
+    <path id="_122442352" class="fil0 str0" d="M1632.84 367.824c0.751181,3.97559 -0.376772,6.87047 -2.6315,9.76063 0.374409,-5.42126 -12.4028,-9.76063 -2.6315,-14.8228 3.38268,0 3.75827,3.25394 5.26299,5.0622z"/>
+   </g>
+   <g>
+    <polygon id="_122441360" class="fil2 str2" points="0.0129921,1102.71 1919.46,1102.71 1919.46,1196.8 0.0129921,1196.8 "/>
+    <path id="_122441200" class="fil3 str3" d="M731.03 655.35c-1.14449,-6.49016 1.51417,-15.3118 -0.477165,-18.1406l-24.8232 -58.7173c-15.2764,3.34252 -18.1406,-15.7524 -5.3315,-21.0614 10.1055,-1.85079 134.603,-25.5272 134.603,-25.5272 28.2614,-15.6591 56.9031,-31.3181 85.1657,-46.976 -1.90984,-4.19882 -5.8252,-13.3654 -5.34803,-13.3654 7.63819,-4.53661 15.9921,-7.87677 26.2547,-8.35394 0,0 3.81969,11.4555 3.81969,11.2169 0,0 5.25118,-0.954331 5.48976,-0.715748 -0.238583,0.238583 -1.72205,-12.7051 -1.67126,-14.0823 8.83228,-2.86535 23.1059,-2.14843 31.5071,-0.238583 0,0 -1.43268,14.0823 -1.67008,14.0823 1.45512,0.455906 5.01142,0.954331 5.01142,0.954331 0.238583,0 3.05669,-10.9795 3.10276,-11.2169 8.8311,0 21.2445,4.05709 28.6429,8.11417l-3.10276 6.92244c0,0 38.1898,11.6953 37.7126,12.1724l193.161 -38.3917c5.1874,-0.990945 8.15787,0.683858 9.48425,5.69173 2.14724,8.11535 -9.07087,13.6051 -26.0173,16.4693 -18.1406,57.5232 -45.1583,117.196 -74.948,172.571 27.2114,29.5972 168.99,99.7713 168.99,99.7713l140.825 0c7.1622,0 17.2961,7.96181 17.2961,17.1272 4.20118,1.52717 9.16535,0.765354 11.8394,5.72835 1.14567,10.3134 -10.6925,8.02087 -15.6579,13.7492 -5.72953,10.6925 -15.6579,20.622 -22.9146,30.1689l0 6.4937c7.25669,1.90984 18.3331,-1.14685 21.0047,7.25551 0,3.05433 -0.382677,6.11102 -3.43701,8.01969 -2.67402,0.381496 -6.87283,-1.14567 -7.25551,3.05551 2.29134,7.25551 -4.20118,11.074 -7.63819,16.4209 -10.422,1.77638 -7.25551,11.0764 -7.25551,11.0764 1.14567,11.0752 3.2315,23.9268 0.175984,34.6193l-12.7795 0.132283 -0.109843 -41.6646c-0.477165,0 -6.20669,0.382677 -10.0252,0 0,0 0,41.0551 -0.175984,41.6646l-17.185 17.185c-3.8185,27.8799 10.3098,66.8327 -19.4776,79.8189 -7.25433,2.67165 -13.2862,2.63504 -21.0035,-3.43819 -5.72835,-5.34685 -8.40236,-14.1295 -4.58268,-21.3862 3.43583,-7.25787 12.2209,-9.92953 20.2406,-10.6937 -1.14685,-6.11102 -8.78504,-3.8185 -12.9862,-5.72835l1.14685 -8.02087c16.0394,-27.1134 34.8331,-58.8496 42.0898,-89.4012 0,0 -8.8937,0.0106299 -8.5937,0 -5.72717,23.6787 -17.2807,46.9264 -31.0287,67.5484 4.20118,-18.7122 6.49252,-45.0154 3.8185,-67.5484 0.478346,0 -8.59134,0 -8.11417,0 7.15984,86.4047 -34.3713,143.212 -89.0646,173.419 0,0 -11.185,3.9248 -33.6213,3.9248 -8.11535,0 -143.689,0 -144.405,0l-11.2181 -29.5961 164.693 0c31.9843,0 103.113,-54.8988 80.1992,-147.748 0.477165,0 -4.8685,0 -7.15984,0 19.572,86.4047 -44.3965,139.394 -80.1992,139.394l-150.85 0c-5.48976,-4.05827 2.38701,-8.5937 0.954331,-17.902l145.599 0c24.8232,0 77.335,-41.2937 56.8087,-121.492 0.271654,0.250394 -9.07087,0 -8.5937,0 20.0504,58.7173 -20.0492,115.525 -55.8531,113.138 -8.59134,0 -139.871,0 -139.871,0 -6.20433,-9.30945 -17.4224,-14.0823 -31.8732,-11.8961 -6.49016,1.90866 -13.9051,5.02205 -16.5791,11.8961l-22.9146 0c-6.20551,-8.59252 -18.5528,-15.3343 -33.0673,-11.8961 -6.11102,1.90866 -13.428,5.02205 -16.102,11.8961 0.0814961,0.011811 -16.6594,-0.141732 -25.0618,0.238583 -5.96693,-9.07087 -18.7925,-15.5728 -32.9232,-12.1346 -6.4937,1.90866 -13.8106,5.02205 -16.4846,11.8961 -6.35906,-0.28937 -16.2307,-0.238583 -16.2307,-0.238583 -1.66181,-0.911811 -4.33937,-5.98465 -5.85709,-7.0748 -9.41929,-6.7689 -26.2783,-7.65827 -33.9886,-2.67402 -6.22087,4.01929 -8.36929,7.83898 -8.02087,9.92953 -66.7028,-1.61339 -142.447,8.78268 -175.291,-54.2303 -10.311,-20.622 -12.665,-45.4831 -9.92953,-71.413 0.12874,0.152362 -8.70236,-0.0874016 -8.70236,-0.0874016 -4.53543,51.0791 8.32087,92.8878 49.1846,115.801 40.8638,22.9134 88.0594,16.9098 142.48,18.3413 -0.477165,10.5024 6.92244,15.7535 10.2638,18.1394 -0.00472441,0.13937 -62.3031,0.291732 -62.2972,0 -38.7791,-1.12795 -84.5646,-4.67362 -111.834,-17.3858 -47.3551,-27.4949 -67.2142,-79.435 -63.0142,-134.809 -0.108661,-0.0874016 -5.78858,0.295276 -8.4626,-0.0874016 -3.43701,56.5228 13.4303,110.837 63.4559,141.389 28.0642,15.3638 75.2634,18.2634 116.752,19.0098 -0.238583,-0.0177165 76.6335,-0.0389764 76.6181,0 3.05669,9.16654 7.87677,29.5961 8.35512,29.5961 -0.478346,-0.237402 -97.624,-0.237402 -97.624,-0.237402 -55.2071,-0.218504 -111.899,-6.71575 -151.074,-47.6055 -36.6626,-38.1898 -53.4815,-91.7882 -51.1736,-142.064 0.0791339,-0.0874016 -9.29055,0.116929 -8.98937,-0.0874016 -1.90984,72.561 28.8472,144.444 96.0614,178.051 48.8209,20.7756 82.2366,17.4331 128.319,19.0949l86.3894 -0.229134 6.92244 25.539c-114.809,23.6303 -201.214,14.0835 -264.784,-60.0626 -41.5028,-48.4063 -75.2339,-104.259 -101.585,-163.071 -6.49252,-0.762992 -13.8591,1.15512 -17.5677,-6.49134 -0.348425,-10.2543 -12.4736,-14.2642 -13.2378,-22.6654 15.2764,0 5.48976,-14.7992 3.34252,-19.3346 -8.40236,-14.511 -22.1976,-25.7776 -37.9524,-30.5516 -4.29567,-0.477165 -3.34134,-9.07087 0,-8.8311 16.7091,-2.38701 24.8232,-21.9591 40.5768,-20.0504l146.078 0 102.634 -82.1079z"/>
+    <path id="_122440424" class="fil0 str0" d="M971.627 479.199c6.10984,-0.380315 16.9465,2.62559 16.9465,2.86417l2.62677 -9.54803 11.6941 3.10394 -7.49409 17.7118c-17.948,-5.72953 -42.9638,-5.53819 -60.5303,0.188976l-7.87677 -17.4236c2.62441,-1.43268 7.87677,-3.10394 10.5012,-3.5811 -0.237402,0.0980315 3.72402,9.16772 3.81969,9.30945 5.34803,-1.52717 15.515,-2.72126 15.7535,-2.62559l-0.715748 -11.9339c3.57992,-0.955512 12.411,-0.955512 15.5138,0 0,4.05709 -0.238583,11.9339 -0.238583,11.9339z"/>
+    <path id="_122439760" class="fil0 str0" d="M1215.8 476.096c-17.902,57.0461 -42.6142,113.031 -71.6398,164.969 0,0 -26.9386,-23.9055 -36.0071,-35.8394 19.0949,-45.8291 47.9126,-85.2957 88.7906,-125.073 -0.477165,0 13.5094,-3.29291 18.8563,-4.05709z"/>
+    <polygon id="_122439376" class="fil0 str0" points="1003.61,499.964 1009.58,484.212 1041.08,492.327 "/>
+    <path id="_122438768" class="fil0 str0" d="M1170.93 485.643c-24.8244,8.40354 -58.8461,32.0705 -86.3421,16.7953 -0.539764,-0.564567 86.3421,-17.0327 86.3421,-16.7953z"/>
+    <path id="_122438152" class="fil0 str0" d="M974.968 505.217l0 -4.53543c6.68386,0 14.0823,0.715748 15.9921,1.90984 -3.10276,0.954331 -15.9921,2.62559 -15.9921,2.62559z"/>
+    <path id="_122437544" class="fil0 str0" d="M1059.77 508.166c-21.0047,19.0949 -52.7031,29.0256 -79.8177,17.1862 0.0330709,-0.0862205 79.7539,-17.2713 79.8177,-17.1862z"/>
+    <path id="_122436912" class="fil0 str0" d="M957.033 529.17c-8.0185,18.3307 -31.7126,26.4094 -47.7366,27.4961 -13.7445,0.93189 -24.4417,-4.5815 -32.8429,-12.9839 27.1134,-4.20236 53.4661,-10.6925 80.5795,-14.5122z"/>
+    <path id="_122436296" class="fil0 str0" d="M801.219 574.998c-13.748,1.90984 -27.8776,-2.29252 -38.5724,-8.40236l82.4917 -17.185c-8.02087,16.422 -27.1157,22.1516 -43.9193,25.5874z"/>
+    <path id="_122435560" class="fil0 str0" d="M731.986 626.708c-6.87402,-17.185 -13.6394,-33.3791 -21.2776,-49.8l31.3016 -7.00748c-4.77402,13.8437 -8.11535,36.9496 -10.024,56.8075z"/>
+    <path id="_122434928" class="fil0 str0" d="M1139.58 650.232c-17.5831,25.6453 -30.1689,50.7933 -49.6465,74.0894 -3.43701,-37.0453 2.94449,-77.5642 14.4012,-109.071 0,0 22.4362,24.8244 35.2453,34.9819z"/>
+    <path id="_122434072" class="fil0 str0" d="M812.295 876.317c11.074,12.9839 23.472,28.1752 37.6016,38.4862l-97.3843 0c-28.4031,0.954331 -38.1898,-26.0173 -36.4547,-68.6551 8.76732,-0.564567 24.5209,2.0622 25.585,-9.93071l0 -8.40236c4.58386,0.765354 10.8154,-2.0811 10.6311,-7.05472 -0.239764,-6.44409 -2.99291,-7.07362 -6.8126,-8.60197l-8.4 -0.764173 0 -41.2441c3.43701,0.380315 9.00591,-2.14016 8.52874,-7.39016 -0.344882,-3.79488 -2.0374,-6.35906 -6.62008,-7.12323 -8.40236,2.67402 -11.7579,-16.2685 -22.7374,-18.1783 0.475984,0.478346 -75.4252,0 -75.4252,0l89.7602 -70.0406c9.16654,77.5264 38.9551,146.65 81.7276,208.899z"/>
+    <path id="_122433464" class="fil0 str0" d="M714.322 747.96c3.57992,1.4315 5.55236,6.53031 5.55236,6.53031l-251.289 0 13.7327 -7.0063 232.004 0.475984z"/>
+    <path id="_122432840" class="fil2 str2" d="M1147.6 909.542c-41.628,-32.0811 -78.6709,-69.124 -121.827,-97.3843 18.3319,-19.4764 41.8039,-43.1929 54.6933,-61.3335 10.6795,43.8839 28.5626,113.653 67.1339,158.718z"/>
+    <path id="_122432200" class="fil0 str0" d="M1460.93 756.553c5.25236,0.955512 5.17205,5.19331 5.93386,7.10315l-256.635 0c0,0 0.780709,-6.75591 4.37717,-7.58031 16.4539,-0.368504 246.324,0.477165 246.324,0.477165z"/>
+    <path id="_122431560" class="fil0 str0" d="M720.638 769.384c4.58386,0.382677 2.99409,7.69606 2.67402,8.02087l-243.652 0c0,0 -2.8311,-4.85906 -8.4,-8.02087 7.47874,0.297638 249.378,0 249.378,0z"/>
+    <path id="_122430936" class="fil0 str0" d="M1462.29 778.55c-2.67402,2.67402 -4.20118,7.25669 -7.63819,8.02087l-244.415 0c-0.765354,-3.05551 0.382677,-6.87283 2.67165,-8.02087l249.381 0z"/>
+    <path id="_122430312" class="fil0 str0" d="M945.848 864.918l-24.822 -18.1406c-0.239764,-3.10394 0.477165,-33.6555 0.477165,-33.1783 8.11417,-3.34134 17.185,-5.48858 24.4559,-4.87913l-0.111024 56.198z"/>
+    <path id="_122429672" class="fil0 str0" d="M991.786 811.394c0.367323,0.057874 2.68465,19.3465 2.99409,19.1528 0,0 -18.5917,15.2717 -25.063,21.2433l0 -43.9193c6.81378,-0.84685 16.7091,1.19409 22.0689,3.52323z"/>
+    <path id="_122428936" class="fil0 str0" d="M999.791 826.25l-2.38701 -13.3654c0,0 9.30945,1.90866 12.1736,4.53425l-9.78661 8.8311z"/>
+    <path id="_122428312" class="fil0 str0" d="M905.748 835.559c0,-1.43268 1.60394,-13.6335 1.43268,-13.6063 3.10276,-2.38701 4.04291,-3.85276 8.35394,-5.72717l-0.477165 25.7776 -9.30945 -6.44409z"/>
+    <path id="_122427712" class="fil0 str0" d="M1034.94 833.543l-14.5134 1.52835 -2.25827 -13.5957c6.20551,2.62677 11.6953,7.39961 16.7717,12.0673z"/>
+    <path id="_122426856" class="fil0 str0" d="M1002.1 838.127c-0.151181,-0.069685 -0.512598,-2.23465 -0.39685,-2.33031 2.22638,-2.9315 8.84646,-8.13189 10.9795,-10.7409l2.01969 11.1614 -12.6024 1.90984z"/>
+    <path id="_122426216" class="fil0 str0" d="M728.405 826.965c1.90984,1.90984 2.14843,6.20669 -0.511417,7.34173l-227.992 0c-2.54528,-0.180709 -3.2622,-6.86457 0,-7.25551 8.91142,0.153543 228.503,-0.0862205 228.503,-0.0862205z"/>
+    <path id="_122425576" class="fil0 str0" d="M898.349 840.57c0.415748,-0.226772 0.255118,1.75748 0.255118,2.90197 -0.0153543,-0.0366142 -11.2335,-0.753543 -11.0752,-0.761811l1.27323 -6.19724c0,0 5.66693,2.63622 9.54685,4.05709z"/>
+    <path id="_122424912" class="fil0 str0" d="M1446.14 835.796c2.86417,0 -0.477165,7.39961 -3.57992,7.63937 -2.14843,0.237402 -225.067,0.0366142 -225.067,0.0366142 -5.74252,-0.992126 -3.35551,-7.67598 -0.0153543,-7.43622 8.11654,-0.239764 215.296,-0.477165 228.663,-0.239764z"/>
+    <path id="_122424528" class="fil0 str0" d="M1133.09 914.889l-72.561 0 -18.3307 -76.7622c30.9343,25.9677 60.7217,51.1736 90.8917,76.7622z"/>
+    <path id="_122423712" class="fil0 str0" d="M1040.67 857.222l-14.8961 1.90984 -4.2626 -18.7984c-0.346063,0.249213 14.3055,-2.1378 14.3209,-1.90984l4.8378 18.7984z"/>
+    <path id="_122423072" class="fil0 str0" d="M1006 896.662c-7.63819,-3.10276 -26.2559,-10.2638 -36.2811,-17.4236 0.222047,0.0153543 0,-15.9921 0,-15.9921l26.6528 -22.4457c4.20118,17.948 6.95551,37.5319 9.62835,55.8614z"/>
+    <path id="_122422272" class="fil0 str0" d="M1020.43 859.896c0.367323,0.248031 -13.9535,2.63504 -13.7492,2.67165 0.034252,-0.0366142 -3.78543,-19.1315 -3.8185,-19.0949 13.4008,-2.42362 13.4008,-2.42362 13.4008,-2.42362 0,0 4.05709,19.0949 4.16693,18.8469z"/>
+    <path id="_122421656" class="fil0 str0" d="M868.991 909.79c-1.90866,0.764173 -3.67559,2.14724 -5.96811,2.14724 -3.10157,-26.4933 5.41063,-48.2232 18.013,-66.5551l-12.0449 64.4079z"/>
+    <path id="_122420920" class="fil0 str0" d="M679.395 846.148c-6.84213,88.2272 50.674,98.0138 82.187,98.0138 2.38701,0 458.278,0 458.278,0 18.6024,0.0590551 52.989,-31.0299 37.7126,-85.4504 -0.477165,0 5.92087,0 8.5937,0 17.6622,60.15 -22.4374,94.5213 -41.4213,92.8406l-466.68 0c-94.3441,0.486614 -88.2189,-84.4004 -87.0744,-105.404l8.40354 0z"/>
+    <path id="_122420224" class="fil0 str0" d="M703.071 846.148c-1.16102,67.9394 17.6965,81.0673 64.2402,80.1118l434.519 -0.296457c27.5776,0.296457 40.9441,-37.6547 30.9189,-67.252l7.63819 0c14.3209,37.2354 -8.11535,74.4709 -33.8929,74.4709l-452.551 0c-60.1476,0.954331 -58.0004,-54.8976 -58.0004,-87.1217l7.12795 0.0874016z"/>
+    <polygon id="_122419648" class="fil0 str0" points="895.548,864.477 883.71,863.714 886.893,848.447 897.872,849.164 "/>
+    <path id="_122419264" class="fil0 str0" d="M914.58 852.983c0.034252,0.0590551 -0.317717,9.20197 -0.700394,13.4043 -0.252756,-0.0377953 -11.7106,-0.992126 -11.8394,-0.762992l1.8 -16.2213c0,0 6.92244,0.477165 6.68268,0.477165 0,0 3.84567,2.75079 4.05709,3.10276z"/>
+    <path id="_122418880" class="fil0 str0" d="M919.607 888.537c-0.253937,-3.09331 0.462992,-32.6906 0.462992,-32.6906l23.3906 16.2307c0,0 -20.0492,15.9921 -23.8535,16.4598z"/>
+    <path id="_122418272" class="fil0 str0" d="M1046.02 878.226l-15.6579 1.90984 -2.87953 -15.6957c4.58386,-1.14567 9.97795,-0.764173 14.5606,-1.90984l3.97677 15.6957z"/>
+    <path id="_122417664" class="fil0 str0" d="M1025.33 881.148l-15.2138 2.80512 -2.67402 -15.6579c-0.252756,-0.275197 14.1508,-3.41339 14.3079,-3.14055l3.57992 15.9933z"/>
+    <path id="_122417040" class="fil0 str0" d="M894.769 870.168l-1.89449 14.5512 -12.665 -0.946063c-0.347244,0.298819 2.86417,-14.798 2.73543,-14.713 -0.109843,-0.0850394 11.5713,0.833858 11.824,1.10787z"/>
+    <path id="_122416264" class="fil0 str0" d="M913.879 871.733c-0.49252,0.106299 -0.381496,9.92953 -0.764173,14.8949 0.034252,0.0106299 -14.0492,-1.18346 -13.7469,-1.14567l1.90984 -14.5122c4.19882,0.382677 12.3484,0.630709 12.6012,0.762992z"/>
+    <path id="_122415648" class="fil0 str0" d="M919.116 914.803c0.0318898,-0.0838583 0.103937,-15.3673 0.477165,-15.7535 7.98071,-4.62638 16.8378,-10.9193 26.2547,-18.378l0.111024 34.2177 -26.8429 -0.0862205z"/>
+    <path id="_122415040" class="fil0 str0" d="M1035.36 903.583l-3.57992 -18.6165c-0.253937,-0.0354331 14.3539,-2.08937 14.798,-2.14843l4.05827 18.3791 -15.2764 2.38583z"/>
+    <path id="_122414656" class="fil3 str3" d="M522.816 897.704c-2.06929,4.20945 -18.313,12.385 -25.6984,10.4161 0.238583,5.48976 3.8185,9.2622 5.72835,11.9339 22.9146,19.4776 58.9217,29.9681 64.6512,63.5764 5.34685,17.5677 -19.1504,71.3705 -18.6118,71.4555 -5.78976,-0.562205 -16.2307,-2.86535 -16.7079,-3.34252 10.9807,-22.4362 28.063,-60.4748 16.2236,-78.0425 -19.4752,-29.4071 -74.4697,-35.5169 -66.0673,-79.8165 11.8382,3.43701 24.3791,-0.514961 33.163,-10.826l7.31929 14.6457z"/>
+    <path id="_122414016" class="fil0 str0" d="M1029.87 904.778c-0.205512,-0.131102 -17.4236,-5.48976 -17.4236,-5.72835 0.255118,-0.309449 -1.4315,-10.024 -1.19409,-10.024 -0.0153543,0.201969 14.8323,-2.66102 15.0378,-2.62677l3.57992 18.3791z"/>
+    <path id="_122413632" class="fil0 str0" d="M892.11 890.065l-1.15984 11.3717 -14.5594 5.48976 3.10276 -17.6634c0.129921,-0.0354331 12.1736,0.477165 12.6165,0.801969z"/>
+    <path id="_122413032" class="fil0 str0" d="M1007.67 914.803l-37.9512 0 0 -26.9717c4.29685,3.8185 36.7583,16.9465 36.7583,16.9465l1.19291 10.0252z"/>
+    <path id="_122412144" class="fil0 str0" d="M912.672 892.844c-3.10394,1.67008 -9.78661,5.0126 -15.2776,6.68268l0.954331 -8.59252c0.297638,0 10.4752,0.648425 14.3232,1.19291 -0.20315,0.245669 0,0.239764 0,0.716929z"/>
+    <path id="_122411760" class="fil0 str0" d="M1053.73 912.893c-3.43701,-1.14449 -15.2752,-5.48976 -14.798,-5.25 0.0814961,0.297638 12.8705,-2.02441 12.6508,-1.67244 0.219685,-0.351969 1.89331,7.17283 2.14724,6.92244z"/>
+    <path id="_122411160" class="fil3 str3" d="M541.036 929.124c-8.35394,0.238583 -21.5776,-7.77992 -25.7787,-15.0366 4.05827,0.715748 13.128,-5.96693 13.128,-5.96693l12.6508 21.0035z"/>
+    <path id="_122410640" class="fil0 str0" d="M911.955 902.153l-0.75 12.7358 -15.4807 -0.0862205c-0.238583,0 0.477165,-6.68268 0.954331,-6.68268 0.955512,-1.19409 10.5024,-3.34252 15.2764,-5.96693z"/>
+    <path id="_122410040" class="fil0 str0" d="M1035.36 914.803l-21.2433 0 -1.19291 -7.87677c0,-0.238583 13.3665,5.01142 22.4362,7.87677z"/>
+    <polygon id="_122409656" class="fil0 str0" points="875.914,914.803 889.518,910.267 889.041,914.803 "/>
+    <path id="_122409272" class="fil3 str3" d="M1402.43 1052.14l-21.9602 3.55157c-4.58268,-25.2035 -42.6791,-34.252 -41.152,-61.748l12.9839 -15.6579c-3.81969,36.2811 50.5098,39.8657 50.1283,73.8543z"/>
+    <path id="_122408888" class="fil3 str3" d="M910.522 998.105c0,0 -26.5618,-0.112205 -26.4945,0 -0.237402,-1.90984 -1.17047,-2.99882 -1.08307,-6.07323l4.42559 -11.8287c-0.205512,0.441732 12.7937,0.138189 12.6508,0 -0.716929,6.92244 2.14724,14.322 10.5012,17.902z"/>
+    <path id="_122408256" class="fil3 str3" d="M973.537 980.203c0.238583,5.25118 0.238583,10.2638 9.06969,17.902l-33.4157 0c-3.81969,-5.0126 4.53425,-7.87677 2.86417,-17.902 -0.108661,-0.323622 21.2421,0 21.4819,0z"/>
+    <path id="_122407624" class="fil3 str3" d="M716.232 1080.69c-59.6717,-2.38701 -113.08,-14.674 -155.089,-23.2665 8.11654,-14.7992 18.9567,-52.0252 21.2492,-67.3016 33.1134,56.6752 89.4437,81.0213 133.84,90.5681z"/>
+    <path id="_122407240" class="fil3 str3" d="M1371.88 1057.14c-36.2811,8.40236 -101.435,19.9028 -127.691,21.3354 36.7583,-13.8437 66.8539,-50.0091 87.8587,-75.5953 5.72835,26.2547 36.7783,34.7846 39.8327,54.2598z"/>
+    <polygon id="_122406648" class="fil3 str3" points="931.766,1036.05 889.041,1036.05 878.778,1006.46 922.457,1006.46 "/>
+    <polygon id="_122406056" class="fil3 str3" points="1004.33,1036.05 955.635,1036.05 944.894,1006.46 995.017,1006.46 "/>
+    <path id="_122405536" class="fil3 str3" d="M1286.23 1038.62c-22.148,24.4417 -56.8217,40.1563 -82.122,41.589 0,0 -66.3555,-4.29685 -90.7016,-12.411 -1.43268,-4.29685 -8.59252,-24.8244 -8.59252,-24.8244l162.307 0c6.68268,0 12.9992,-2.44488 19.1091,-4.35354z"/>
+    <polygon id="_122404944" class="fil3 str3" points="1010.29,1058.25 963.75,1057.78 958.499,1042.98 1006,1042.98 "/>
+    <polygon id="_122404352" class="fil3 str3" points="1087.63,1063.98 1035.6,1059.21 1030.34,1042.98 1080.71,1042.98 "/>
+    <path id="_122403736" class="fil3 str3" d="M934.153 1042.98c0.954331,3.10394 4.42677,14.6197 5.49094,17.185 -8.78386,-0.761811 -42.4878,3.5811 -42.4878,3.34252l-5.96693 -20.5276 42.9638 0z"/>
+    <path id="_122403352" class="fil1 str1" d="M954.059 457.717c-9.30827,-3.10276 -30.248,-6.61535 -39.6224,-7.87677 -15.9921,-2.14843 -56.3303,-4.29567 -80.9965,10.6346 -6.12402,6.07323 8.19803,16.0984 6.49252,23.6787 -4.50118,13.4244 -10.0063,16.6819 -25.0287,19.6299 -45.065,3.81969 -74.6469,-29.5606 -115.128,-37.1976 -9.9437,-1.23071 -18.2976,-0.0377953 -17.5677,7.63701 6.19134,12.6142 8.53819,26.6752 2.67402,42.0094 -16.0535,41.9717 -116.303,10.9429 -182.657,7.60157 -29.2181,-1.47165 -62.1402,11.876 -72.8327,17.987 39.7169,-35.1354 79.1031,-36.8008 147.781,-27.535 60.1488,8.11535 87.8362,3.8185 89.3787,-14.4744 -1.06417,-18.9413 -14.4307,-21.3283 -9.89646,-35.4106 4.43268,-13.7622 16.9264,-17.7071 31.0299,-20.289 33.5917,-6.14646 113.375,53.9433 126.66,37.3677 4.58268,-9.16417 -16.3075,-15.0154 -8.03268,-27.3425 16.037,-19.8579 38.9102,-23.4909 66.5929,-26.0173 24.4736,-2.23228 56.4744,4.39252 80.915,12.411 0.687402,-1.37598 0.238583,18.9201 0.238583,17.1862z"/>
+    <path id="_122402424" class="fil3 str3" d="M946.46 426.687c0,-7.01693 8.27598,-12.7051 18.4831,-12.7051 10.2094,0 18.4866,5.68819 18.4866,12.7051 0,7.01929 -8.27717,12.7087 -18.4866,12.7087 -10.2071,0 -18.4831,-5.68937 -18.4831,-12.7087z"/>
+    <path id="_122401784" class="fil0 str0" d="M929.331 505.932c4.58268,-1.90866 16.5165,-5.0126 24.8705,-4.77402 0,0 0,6.44528 -0.046063,6.68268 -0.191339,-0.477165 -66.45,11.4579 -98.9114,19.4776l67.213 -36.6626 6.87402 15.2764z"/>
+    <path id="_122401400" class="fil3 str3" d="M600.469 585.415c0,-6.45827 7.3748,-11.6953 16.4693,-11.6953 9.09685,0 16.4693,5.23701 16.4693,11.6953 0,6.45945 -7.37244,11.6953 -16.4693,11.6953 -9.09449,0 -16.4693,-5.23583 -16.4693,-11.6953z"/>
+    <polygon id="_122400808" class="fil3 str3" points="609.3,595.44 624.337,595.44 624.337,737.458 609.3,737.458 "/>
+    <path id="_122400096" class="fil1 str1" d="M609.3 659.647c-21.4819,-14.0823 -30.8256,2.63268 -49.0594,-3.30472 -20.6362,-6.72047 -32.0787,-3.05433 -45.0638,3.8185 5.72953,-13.748 1.51299,-50.6374 -2.78386,-56.3669 6.20669,-3.8185 18.2858,-9.72402 45.176,1.3748 14.0185,5.78504 28.422,-16.402 51.7311,-0.897638 0,0 0,55.1362 0,55.376z"/>
+    <polygon id="_122399368" class="fil3 str3" points="574.213,737.458 609.3,658.93 609.3,674.445 581.374,737.458 "/>
+    <polygon id="_122398776" class="fil3 str3" points="659.425,737.458 624.337,658.93 624.337,674.445 652.264,737.458 "/>
+    <path id="_122398392" class="fil0 str0" d="M1202.91 746.529c-8.35512,1.4315 -11.015,9.87165 -9.48425,17.1272 -6.03189,0.0590551 -12.1063,3.1252 -11.2831,8.41299 -0.380315,6.49134 5.72953,8.11417 11.2831,8.00787l0 39.7193c-4.96654,0 -10.3134,-1.14685 -13.7504,3.43701 -1.52598,2.29134 -0.0141732,4.88031 -0.395669,7.55197 3.05551,4.96535 9.17953,3.90472 14.1461,4.28622 -1.53071,9.16654 6.10866,16.422 12.9839,20.2406 6.11102,1.52717 12.9839,6.4937 14.511,12.9839 2.29252,7.63937 3.13583,16.3854 0.844488,24.7866 -9.54685,22.5331 -21.7205,23.3917 -53.928,21.8067 -30.0898,-28.9677 -37.5354,-52.1764 -53.0835,-89.7461 -13.2756,-32.0764 -16.5461,-49.6252 -23.7886,-85.7752 19.8591,-27.1134 43.4409,-61.5803 55.852,-84.0177 47.2606,37.2354 105.214,66.737 157.533,91.1787l-101.44 0z"/>
+    <path id="_122398008" class="fil3 str3" d="M1314.86 595.201c0,-6.46063 7.37362,-11.6953 16.4681,-11.6953 9.09685,0 16.4705,5.23465 16.4705,11.6953 0,6.45945 -7.37362,11.6953 -16.4705,11.6953 -9.09449,0 -16.4681,-5.23583 -16.4681,-11.6953z"/>
+    <polygon id="_122397416" class="fil3 str3" points="1323.69,605.226 1338.73,605.226 1338.73,747.244 1323.69,747.244 "/>
+    <path id="_122397032" class="fil1 str1" d="M1323.69 669.433c-21.4819,-14.0835 -30.8268,2.63268 -49.0594,-3.30591 -20.6374,-6.72047 -32.0799,-3.05315 -45.0638,3.81969 5.72953,-13.748 1.51299,-50.6398 -2.78386,-56.3669 6.20551,-3.81969 18.2846,-9.7252 45.176,1.37362 14.0185,5.78622 28.422,-16.4008 51.7311,-0.896457 0,0 0,55.1362 0,55.376z"/>
+    <polygon id="_122366216" class="fil3 str3" points="1288.6,747.244 1323.69,668.717 1323.69,684.231 1295.76,747.244 "/>
+    <polygon id="_122365432" class="fil3 str3" points="1373.81,747.244 1338.73,668.717 1338.73,684.231 1366.65,747.244 "/>
+    <path id="_122365048" class="fil0 str0" d="M532.682 805.723l-10.2638 -16.7091c3.18543,-1.65945 7.63819,-2.14724 10.3264,-2.4437l-0.0625984 19.1528z"/>
+    <path id="_122364216" class="fil0 str0" d="M529.101 807.87l-19.2697 -8.31614c1.3689,-3.37913 4.73504,-5.81457 7.09724,-7.4374 -0.453543,0.191339 12.2067,15.8622 12.1724,15.7535z"/>
+    <polygon id="_122363504" class="fil0 str0" points="506.013,811.394 507.157,804.901 526.715,811.394 "/>
+    <path id="_122363120" class="fil0 str0" d="M537.932 805.962l10.2638 -16.7079c-3.18189,-1.66063 -7.63701,-2.14843 -10.3252,-2.44606l0.0614173 19.1539z"/>
+    <path id="_122362288" class="fil0 str0" d="M541.513 808.11l19.272 -8.31614c-1.37008,-3.38031 -4.73622,-5.81575 -7.09961,-7.4374 0.453543,0.190157 -12.2055,15.861 -12.1724,15.7535z"/>
+    <polygon id="_122361712" class="fil0 str0" points="564.605,811.632 563.459,805.139 543.9,811.632 "/>
+    <path id="_122361328" class="fil0 str0" d="M610.733 805.485l-10.2638 -16.7079c3.18543,-1.66063 7.63701,-2.14961 10.3264,-2.44606l-0.0625984 19.1539z"/>
+    <path id="_122360496" class="fil0 str0" d="M607.152 807.632l-19.2697 -8.31614c1.3689,-3.37913 4.73386,-5.81457 7.09724,-7.43622 -0.453543,0.190157 12.2055,15.861 12.1724,15.7524z"/>
+    <polygon id="_122359920" class="fil0 str0" points="584.063,811.155 585.208,804.661 604.766,811.155 "/>
+    <path id="_122359536" class="fil0 str0" d="M615.983 805.723l10.2638 -16.7091c-3.18189,-1.65945 -7.63701,-2.14724 -10.3252,-2.4437l0.0614173 19.1528z"/>
+    <path id="_122358704" class="fil0 str0" d="M619.564 807.87l19.272 -8.31614c-1.37126,-3.37913 -4.73622,-5.81457 -7.09961,-7.4374 0.453543,0.191339 -12.2055,15.8622 -12.1724,15.7535z"/>
+    <polygon id="_122358128" class="fil0 str0" points="642.654,811.394 641.51,804.901 621.951,811.394 "/>
+    <path id="_122357744" class="fil0 str0" d="M688.783 805.245l-10.2638 -16.7079c3.18425,-1.65945 7.63701,-2.14724 10.3264,-2.4437l-0.0625984 19.1516z"/>
+    <path id="_122356912" class="fil0 str0" d="M685.202 807.394l-19.2697 -8.31732c1.3689,-3.37913 4.73386,-5.81457 7.09724,-7.4374 -0.453543,0.190157 12.2055,15.861 12.1724,15.7547z"/>
+    <polygon id="_122356336" class="fil0 str0" points="662.114,810.917 663.257,804.424 682.815,810.917 "/>
+    <path id="_122355952" class="fil0 str0" d="M694.033 805.485l10.2638 -16.7079c-3.18307,-1.66063 -7.63701,-2.14961 -10.3252,-2.44606l0.0614173 19.1539z"/>
+    <path id="_122355120" class="fil0 str0" d="M697.615 807.632l19.272 -8.31614c-1.37126,-3.37913 -4.73622,-5.81457 -7.09961,-7.43622 0.453543,0.190157 -12.2055,15.861 -12.1724,15.7524z"/>
+    <polygon id="_122354544" class="fil0 str0" points="720.705,811.155 719.561,804.661 700,811.155 "/>
+    <path id="_122354160" class="fil0 str0" d="M1249.7 813.839l-10.2638 -16.7079c3.18425,-1.66063 7.63819,-2.14961 10.3276,-2.44606l-0.0637795 19.1539z"/>
+    <path id="_122353328" class="fil0 str0" d="M1246.12 815.986l-19.2697 -8.31614c1.36772,-3.37913 4.73386,-5.81339 7.09724,-7.43622 -0.453543,0.190157 12.2055,15.861 12.1724,15.7524z"/>
+    <polygon id="_122352752" class="fil0 str0" points="1223.03,819.509 1224.17,813.015 1243.73,819.509 "/>
+    <path id="_122352368" class="fil0 str0" d="M1254.95 814.077l10.2638 -16.7091c-3.18425,-1.65945 -7.63937,-2.14724 -10.3252,-2.4437l0.0614173 19.1528z"/>
+    <path id="_122351536" class="fil0 str0" d="M1258.53 816.226l19.2709 -8.31732c-1.37008,-3.37913 -4.73622,-5.81457 -7.09843,-7.4374 0.453543,0.191339 -12.2067,15.8622 -12.1724,15.7547z"/>
+    <polygon id="_122350960" class="fil0 str0" points="1281.62,819.748 1280.47,813.255 1260.92,819.748 "/>
+    <path id="_122350576" class="fil0 str0" d="M1327.75 813.599l-10.2638 -16.7079c3.18543,-1.65945 7.63937,-2.14724 10.3276,-2.4437l-0.0637795 19.1516z"/>
+    <path id="_122349744" class="fil0 str0" d="M1324.17 815.748l-19.2697 -8.31732c1.36772,-3.37913 4.73386,-5.81457 7.09724,-7.4374 -0.453543,0.190157 12.2055,15.861 12.1724,15.7547z"/>
+    <polygon id="_122349168" class="fil0 str0" points="1301.08,819.27 1302.22,812.778 1321.78,819.27 "/>
+    <path id="_122348784" class="fil0 str0" d="M1333 813.839l10.2626 -16.7079c-3.18307,-1.66063 -7.63819,-2.14961 -10.3264,-2.44606l0.0637795 19.1539z"/>
+    <path id="_122348168" class="fil0 str0" d="M1336.58 815.986l19.2709 -8.31614c-1.37008,-3.37913 -4.73622,-5.81339 -7.09843,-7.43622 0.452362,0.190157 -12.2067,15.861 -12.1724,15.7524z"/>
+    <polygon id="_122347592" class="fil0 str0" points="1359.67,819.509 1358.52,813.015 1338.97,819.509 "/>
+    <path id="_122347208" class="fil0 str0" d="M1405.8 813.361l-10.2638 -16.7079c3.18543,-1.66063 7.63937,-2.14961 10.3264,-2.44488l-0.0625984 19.1528z"/>
+    <path id="_122346592" class="fil0 str0" d="M1402.22 815.509l-19.2697 -8.31614c1.36772,-3.37913 4.73386,-5.81457 7.09606,-7.4374 -0.453543,0.191339 12.2067,15.8622 12.1736,15.7535z"/>
+    <polygon id="_122346208" class="fil0 str0" points="1379.13,819.032 1380.27,812.538 1399.83,819.032 "/>
+    <path id="_122345824" class="fil0 str0" d="M1411.05 813.599l10.2626 -16.7079c-3.18189,-1.65945 -7.63701,-2.14724 -10.3252,-2.4437l0.0625984 19.1516z"/>
+    <path id="_122309600" class="fil0 str0" d="M1414.63 815.748l19.272 -8.31732c-1.37008,-3.37913 -4.73622,-5.81457 -7.09843,-7.4374 0.452362,0.190157 -12.2067,15.861 -12.1736,15.7547z"/>
+    <polygon id="_122309216" class="fil0 str0" points="1437.72,819.27 1436.57,812.778 1417.02,819.27 "/>
+    <path id="_122307320" class="fil4 str4" d="M1115.4 1112.9c155.152,37.9583 163.955,-18.8587 377.18,-11.2193 114.441,4.10197 105.635,24.8268 243.547,24.8268 58.5945,0 125.163,-13.9984 183.822,-23.2972 0,0 -0.485433,-50.2276 -0.994488,-50.563 -58.4339,11.55 -113.644,25.7386 -186.739,27.072 -100.244,1.82598 -167.255,-33.4217 -254.796,-33.4217 -114.437,0 -173.319,35.8087 -279.737,33.8988 0,0 -75.8008,-7.63937 -100.743,-14.3244l-79.226 -7.1622c-22.2177,-0.655512 -48.9047,-0.954331 -73.1126,0.239764 -21.0768,0.81378 -48.4642,3.77362 -67.7327,7.1622 -75.8031,13.6075 -102.533,16.0169 -170.679,14.5618 -89.4957,-1.90984 -164.302,-34.8531 -252.348,-34.8531 -93.8988,0 -141.348,34.376 -205.402,34.376 -68.4661,0 -169.7,-53.9516 -248.437,-23.3941l0 54.4276c100.744,-29.6008 147.814,15.2776 252.35,15.2776 86.0728,0 113.452,-26.5335 204.911,-25.7823 115.906,0.955512 191.406,25.7823 253.328,25.7823 66.5114,0 106.613,-7.16102 179.237,-18.6201 13.9382,-2.38701 38.1461,-4.29685 70.3004,-5.61024 25.0642,-0.596457 42.1819,-0.357874 72.3791,1.0748 23.5972,1.90984 53.185,4.05827 82.8933,9.54803z"/>
+    <path id="_122306936" class="fil4 str4" d="M-0.0011811 1149.43c78.248,-24.7677 156.902,11.7 232.787,17.1874 52.8177,3.81969 131.011,-24.978 214.693,-26.7366 90.9638,-1.90984 167.256,22.9169 259.506,26.2972 58.8957,2.15787 164.408,-22.435 270.135,-24.8646 83.139,-1.90984 110.05,8.04094 194.657,22.1917 10.9476,1.83189 22.735,2.57717 35.2098,2.52638 88.9937,-0.368504 163.038,-26.0634 249.891,-25.6724 106.123,0.477165 161.21,26.2583 261.641,26.2583 120.012,0 145.166,-11.6799 199.465,-20.4969 1.47756,-0.510236 1.05472,52.9807 1.05472,52.9807l-1919.04 0.80315 0 -50.4744z"/>
+    <path id="_122306552" class="fil3 str3" d="M1046.81 980.347c0.237402,5.25118 0.237402,10.2626 9.06969,17.902l-33.4169 0c-3.8185,-5.01378 4.53543,-7.87677 2.86535,-17.902 -0.108661,-0.323622 21.2421,0 21.4819,0z"/>
+    <polygon id="_122305960" class="fil3 str3" points="1078.56,1036.05 1028.2,1036.05 1017.45,1006.46 1068.3,1006.46 "/>
+    <polygon id="_122305368" class="fil0 str0" points="522.895,846.06 703.343,846.06 703.343,849.403 522.895,849.403 "/>
+    <polygon id="_122304776" class="fil0 str0" points="1235.14,858.711 1448.05,858.711 1448.05,862.054 1235.14,862.054 "/>
+    <polygon id="_122576816" class="fil0 str0" points="900.736,833.172 901.93,824.102 894.292,829.352 "/>
+    <polygon id="_122576224" class="fil3 str3" points="954.202,434.327 974.968,434.327 974.968,463.208 954.202,463.208 "/>
+    <polygon id="_122575632" class="fil0 str0" points="875.439,1044.45 884.986,1044.45 914.819,1146.09 903.363,1146.57 "/>
+    <polygon id="_122575040" class="fil0 str0" points="943.567,1043.76 952.715,1043.82 986.426,1141.32 974.49,1141.32 "/>
+    <polygon id="_122574448" class="fil0 str0" points="1014.8,1045.15 1022.91,1045.15 1055.17,1143.94 1044.66,1143.46 "/>
+    <polygon id="_122574080" class="fil0 str0" points="1090.48,1044.89 1097.88,1044.89 1139.42,1157.31 1129.16,1155.4 "/>
+    <path id="_122818496" class="fil3 str3" d="M877.217 979.048c1.56142,7.12323 -1.77992,9.74764 -3.2126,13.0902 16.422,45.4476 34.9913,107.552 51.7949,152.998l-10.9795 0.954331 -48.6921 -156.817c3.81969,-1.4315 9.30945,-10.2626 -1.51181,-13.6618 -5.34685,-1.14567 -11.6161,-0.659055 -12.9839,5.34567 -0.765354,5.34567 4.58031,6.49252 7.25433,9.16535 15.6579,49.6465 31.826,106.131 45.1925,156.922l-8.35394 1.67244 -42.1843 -153.247c-6.11102,-4.20118 -12.7606,-12.5445 -8.17795,-19.8024 7.25551,-11.074 28.402,-9.30827 31.8543,3.38031z"/>
+    <path id="_122818232" class="fil3 str3" d="M943.095 979.69c1.56024,7.12323 -1.7811,9.74882 -3.21378,13.0902 16.422,45.4453 38.811,103.09 55.6134,148.537l-9.54685 0 -53.9433 -151.401c3.81969,-1.43268 9.30945,-10.2638 -1.51181,-13.663 -5.34685,-1.14685 -11.6161,-0.657874 -12.9839,5.34685 -0.764173,5.34567 4.5815,6.49134 7.25433,9.16417 15.6591,49.6476 36.8386,99.7606 50.2051,150.553l-8.59252 0.954331 -46.9583 -146.161c-6.10984,-4.2 -12.7606,-12.5433 -8.17795,-19.7976 7.25787,-11.0764 28.4043,-9.30945 31.8555,3.37795z"/>
+    <path id="_122817496" class="fil3 str3" d="M1016.13 980.331c1.55906,7.12441 -1.7811,9.75 -3.21378,13.0925 16.4232,45.4453 36.9012,107.22 53.7047,152.666l-11.2181 -1.67008 -50.3634 -153.861c3.8185,-1.43031 9.30945,-10.2626 -1.51181,-13.663 -5.34685,-1.14567 -11.6161,-0.657874 -12.9839,5.34449 -0.765354,5.34685 4.5815,6.4937 7.25551,9.16654 15.6579,49.6465 33.7346,101.028 47.1012,151.819l-9.30827 -0.715748 -43.1386 -145.755c-6.11102,-4.20118 -12.7618,-12.5445 -8.18031,-19.8 7.25787,-11.0764 28.4043,-9.30945 31.8567,3.37677z"/>
+    <path id="_122816760" class="fil3 str3" d="M1089.17 980.974c1.56142,7.12441 -1.7811,9.75 -3.21142,13.0913 16.422,45.4453 47.6409,119.946 64.4445,165.392l-10.9807 -1.90984 -61.3417 -166.346c3.8185,-1.43268 9.30827,-10.2638 -1.51299,-13.663 -5.34567,-1.14803 -11.6138,-0.657874 -12.9839,5.34567 -0.764173,5.34685 4.58268,6.49252 7.25669,9.16535 15.6579,49.6476 44.7142,113.035 58.0807,163.827l-10.7409 -2.14843 -52.6866 -156.333c-6.11102,-4.2 -12.7606,-12.5433 -8.17913,-19.7988 7.25787,-11.0752 28.4043,-9.30945 31.8555,3.37795z"/>
+    <path id="_122816480" class="fil2 str2" d="M1084.59 633.429c-9.88465,39.3709 -9.92953,69.124 -6.49252,103.877 -16.0406,25.2059 -40.0181,47.5098 -60.6413,70.8047 -40.5768,-17.6634 -91.3547,-15.0472 -123.435,8.62913 -28.6429,20.2417 -42.0094,51.5563 -43.1539,82.4906 -47.276,-48.6331 -60.6413,-75.3673 -79.0535,-122.59 -21.4039,-54.8953 -33.7169,-93.887 -28.3701,-148.5 1.52835,-17.5654 5.0752,-34.8106 9.2752,-51.2315 16.422,12.9839 40.4811,13.3665 61.4846,9.92953 18.7134,-5.72835 40.865,-15.6579 47.739,-36.6626 16.8035,21.7665 43.7114,22.4941 68.1531,16.3831 16.0406,-4.19882 29.9953,-17.5299 40.6866,-30.1311 25.5886,13.3665 64.924,7.63701 88.9843,-9.16654 6.10984,-4.58268 11.837,-10.6937 14.511,-17.5677 14.1319,16.0406 43.6654,9.84449 56.1402,6.4937 12.3508,-3.32126 29.4047,-14.5134 29.4047,-14.5134 -36.2799,37.428 -63.6012,85.4126 -75.2327,131.756z"/>
+   </g>
+  </g>
+ </g>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Ontario.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Ontario.svg
new file mode 100644
index 0000000..678c333
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Ontario.svg
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="2400"
+   height="1200"
+   viewBox="0 0 2400 1200"
+   id="svg2"
+   xml:space="preserve"
+   style="fill-rule:evenodd"><defs
+     id="defs4">
+  <style
+   type="text/css"
+   id="style6" />
+ 
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+  
+ </defs><rect
+     width="2400"
+     height="1200"
+     x="0"
+     y="0"
+     id="rect124"
+     style="fill:#cf142b;fill-opacity:1" /><rect
+     width="1200"
+     height="600"
+     x="0"
+     y="0"
+     id="_126201808"
+     style="fill:#00247d;fill-opacity:1" /><polygon
+     points="134.169,600 0,600 0,532.917 1065.84,0 1200,0 1200,67 "
+     id="path146"
+     style="fill:#ffffff" /><polygon
+     points="0,67.0866 1065.84,600 1200,600 1200,532.918 134.169,0 0,0 "
+     id="path146_0"
+     style="fill:#ffffff" /><polygon
+     points="0,200.003 0,400 1200,400 1200,200 "
+     id="path136"
+     style="fill:#ffffff" /><polygon
+     points="500,600 700,600 700,0 500,0 "
+     id="path136_1"
+     style="fill:#ffffff" /><polygon
+     points="0,240 0,360 1200,360 1200,240.002 "
+     id="path141_2"
+     style="fill:#cf142b;fill-opacity:1" /><polygon
+     points="1200,555.279 1200,600 800.003,400.002 889.444,400.002 "
+     id="path150"
+     style="fill:#cf142b;fill-opacity:1" /><polygon
+     points="710.561,200 1110.56,0 1200,0 800,200 "
+     id="path150_3"
+     style="fill:#cf142b;fill-opacity:1" /><polygon
+     points="400,200 310.563,200 0,44.7262 0,0 "
+     id="path150_4"
+     style="fill:#cf142b;fill-opacity:1" /><polygon
+     points="89.4471,600 0,600 400,400 489.445,400 "
+     id="path150_5"
+     style="fill:#cf142b;fill-opacity:1" /><path
+     d="m 1560.06,500.044 0.073,99.8479 c 0.099,132.705 132.407,254.243 239.862,300.107 107.454,-45.8646 239.763,-167.402 239.862,-300.107 l 0.073,-99.8079 -479.87,-0.0401 -4e-4,0 z"
+     id="path604"
+     style="fill:#007934;fill-opacity:1;stroke:#b88b00;stroke-width:10.00030041;stroke-opacity:1" /><polygon
+     points="1764.52,641.267 1764.55,635.978 1744.67,634.253 1753.11,616.217 1748.51,613.602 1763.35,605.05 1729.42,585.509 1734.69,582.52 1725.04,561.907 1747.76,559.936 1747.72,553.891 1781.65,573.443 1781.65,534.366 1786.88,537.423 1800,518.781 1813.12,537.423 1818.35,534.366 1818.35,573.443 1852.28,553.891 1852.24,559.936 1874.96,561.907 1865.31,582.52 1870.58,585.509 1836.65,605.05 1851.49,613.602 1846.89,616.217 1855.33,634.253 1835.45,635.978 1835.48,641.267 1805.8,624.165 1805.84,861.22 1800.01,861.181 1794.17,861.22 1794.2,624.165 "
+     id="_126098824"
+     style="fill:#c5892a" /><polygon
+     points="1862.48,657.665 1878.81,646.265 1876.12,641.696 1893.26,641.714 1873.64,607.826 1879.7,607.871 1881.65,585.196 1902.31,594.848 1905.3,589.593 1924.91,623.49 1944.44,589.646 1947.44,594.909 1968.13,585.327 1970.17,608.033 1976.23,608.001 1956.69,641.841 1995.85,641.872 1992.79,647.089 2011.48,660.154 1992.82,673.181 1995.89,678.404 1956.73,678.36 1965.31,693.191 1960.01,693.151 1958.31,712.991 1940.23,704.546 1937.61,709.143 1920.45,679.489 1910.42,673.695 1876.16,673.661 1878.83,669.098 "
+     id="_126097944"
+     style="fill:#c5892a" /><polygon
+     points="1737.52,657.351 1721.19,645.952 1723.88,641.382 1706.74,641.4 1726.36,607.512 1720.3,607.558 1718.35,584.883 1697.69,594.534 1694.7,589.28 1675.09,623.177 1655.56,589.333 1652.56,594.596 1631.87,585.014 1629.83,607.719 1623.77,607.687 1643.31,641.526 1604.15,641.558 1607.21,646.776 1588.52,659.841 1607.18,672.868 1604.11,678.091 1643.27,678.047 1634.69,692.877 1639.99,692.837 1641.69,712.678 1659.77,704.232 1662.39,708.83 1679.55,679.176 1689.58,673.381 1723.84,673.346 1721.17,668.784 "
+     id="_126097064"
+     style="fill:#c5892a" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="615.79498"
+     x2="1799.95"
+     y1="533.216"
+     x1="1799.95"
+     class="fil5 str1"
+     id="_126096560" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="568.43597"
+     x2="1736.72"
+     y1="629.13898"
+     x1="1846.11"
+     class="fil5 str1"
+     id="_126096056" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="568.26599"
+     x2="1863.28"
+     y1="629.21698"
+     x1="1753.63"
+     class="fil5 str1"
+     id="_126095552" /><path
+     d="m 1787.92,545.083 12.0801,20.8029 12.0801,-20.8029 m -24.1603,0 z"
+     id="_126095048"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1740.98,584.112 24.0601,-0.0578 -11.98,-20.0013 M 1740.98,584.112 z"
+     id="_126094544"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1859.02,583.941 -24.0601,-0.0582 11.98,-20.0009 m 12.0801,20.0591 z"
+     id="_126094040"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1841.85,613.465 -24.0601,0.0571 11.9701,20.0009 m 12.09,-20.058 z"
+     id="_126093536"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1757.89,613.541 24.0601,0.0582 -11.9701,20.0009 m -12.09,-20.0591 z"
+     id="_126093032"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="669.31702"
+     x2="1919.58"
+     y1="597.802"
+     x1="1960.86"
+     class="fil5 str1"
+     id="_126092528" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="596.68903"
+     x2="1888.5"
+     y1="703.95502"
+     x1="1952.88"
+     class="fil5 str1"
+     id="_126092024" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="659.823"
+     x2="1998.1899"
+     y1="657.78198"
+     x1="1872.75"
+     class="fil5 str1"
+     id="_126091520" /><path
+     d="m 1944.51,602.065 0.06,24.054 20.8702,-11.9732 M 1944.51,602.0649 z"
+     id="_126091016"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1884.35,612.396 20.86,11.9769 -0.37,-23.308 m -20.49,11.331 z"
+     id="_126090512"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1986.66,671.265 -20.7999,-12.076 20.3701,-11.3348 m 0.4297,23.4108 z"
+     id="_126090008"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1957.03,688.248 -20.86,-11.9773 0.3602,23.3091 M 1957.03,688.248 z"
+     id="_126089504"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1884.28,646.339 20.8101,12.0771 -20.3701,11.3352 m -0.4399,-23.4123 z"
+     id="_126089000"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="669.00403"
+     x2="1680.4301"
+     y1="597.48798"
+     x1="1639.14"
+     class="fil5 str1"
+     id="_126088496" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="596.375"
+     x2="1711.5"
+     y1="703.64203"
+     x1="1647.12"
+     class="fil5 str1"
+     id="_126087992" /><line
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round"
+     y2="659.50897"
+     x2="1601.8101"
+     y1="657.46899"
+     x1="1727.25"
+     class="fil5 str1"
+     id="_126087488" /><path
+     d="m 1655.49,601.752 -0.06,24.0537 -20.8702,-11.9728 M 1655.49,601.752 z"
+     id="_126086976"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1715.65,612.081 -20.86,11.9781 0.37,-23.308 m 20.49,11.3299 z"
+     id="_126086488"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1613.34,670.952 20.7999,-12.0779 -20.3701,-11.3352 m -0.4297,23.413 z"
+     id="_126086016"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1642.97,687.935 20.8698,-11.9769 -0.37,23.308 m -20.4998,-11.331 z"
+     id="_126085664"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1715.72,646.026 -20.8101,12.0771 20.3701,11.3348 m 0.4399,-23.4119 z"
+     id="_126085312"
+     style="fill:none;stroke:#f3cc00;stroke-width:1.99975002;stroke-linecap:round;stroke-linejoin:round" /><path
+     d="m 1800.16,792.217 c 45.411,-31.3134 87.7784,-73.1478 118.825,-120.82"
+     id="path604_6"
+     style="fill:none;stroke:#c5892a;stroke-width:10.99960041" /><path
+     d="m 1800.25,792.217 c -45.4122,-31.3134 -87.7791,-73.1478 -118.826,-120.82"
+     id="path604_7"
+     style="fill:none;stroke:#c5892a;stroke-width:10.99960041" /><rect
+     width="479.961"
+     height="200.147"
+     x="1560.04"
+     y="300.03201"
+     id="_126101704"
+     style="fill:#ffffff" /><polygon
+     points="1822.52,300.058 1777.52,300.058 1777.52,500.157 1822.52,500.157 "
+     id="path141_8"
+     style="fill:#f7403a;fill-opacity:1" /><polygon
+     points="2040,377.602 1560.04,377.602 1560.04,422.611 2040,422.611 "
+     id="path141_9"
+     style="fill:#f7403a;fill-opacity:1" /><rect
+     width="479.96301"
+     height="200.147"
+     x="1560"
+     y="300.00201"
+     id="rect613"
+     style="fill:none;stroke:#b88b00;stroke-width:10.00030041;stroke-opacity:1" /><polygon
+     points="0.00491339,360.002 1262.77,360.002 1262.77,240.002 0.00491339,240.002 "
+     transform="matrix(0,0.47514776,-1,0,900.002,-0.00233459)"
+     id="polygon3848"
+     style="fill:#cf142b;fill-opacity:1" /><metadata
+     id="metadata3852"><rdf:RDF><cc:Work
+         rdf:about=""><dc:title></dc:title></cc:Work></rdf:RDF></metadata></svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Quebec.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Quebec.svg
new file mode 100644
index 0000000..44a881f
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Quebec.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400">
+	<rect width="600" height="400" fill="#fff"/>
+	<g id="quarter">
+		<rect width="250" height="150" fill="#002495"/>
+		<path d="M 149.49815,93.070319 c 1.60698,-2.389976 1.46998,-7.621923 -1.74298,-9.468905 -2.45798,-1.228988 -5.23395,-.747993 -6.53094,.309997 -2.08798,1.262987 -4.09896,5.301947 -4.09896,9.391906 l 7.20993,-.009 -.002,8.050923 -14.96385,-.008 c .196,4.14096 2.45398,7.45792 6.65593,9.3049 -.54099,1.74499 -3.07497,5.30195 -6.55493,5.06095 -.68699,3.76397 -1.33999,5.87694 -4.46896,9.29691 -3.13096,-3.41897 -3.78396,-5.53294 -4.47095,-9.29691 -3.47997,.241 -6.01394,-3.31596 -6.55494,-5.06095 4.20196,-1.84698 6.45994,-5.16394 6.65594,-9.3049 l -14.96485,.008 v -8.050923 l 7.20793,.009 c 0,-4.089959 -2.00798,-8.128919 -4.09796,-9.391906 -1.29699,-1.05699 -4.07196,-1.537985 -6.52894,-.309997 -3.214964,1.846982 -3.352962,7.079929 -1.74598,9.468905 -15.181846,-2.818972 -13.675861,-17.480825 -8.503913,-22.803772 4.179958,-4.299957 8.736913,-4.97195 12.250873,-3.615964 7.98592,2.862972 13.35687,12.402876 13.61787,26.652734 h 4.17595 c 0,-12.95387 -2.25397,-17.083829 -8.12692,-33.353666 -2.95797,-7.688924 -1.18098,-17.194829 4.10696,-25.947741 1.89398,-3.136969 4.25996,-5.96894 6.97893,-9.00191 2.71698,3.03297 5.08295,5.864941 6.97693,9.00191 5.28795,8.752912 7.06493,18.258817 4.10896,25.947741 -5.87594,16.269837 -8.12992,20.398796 -8.12992,33.353666 h 4.17596 c .261,-14.249858 5.63395,-23.789762 13.61787,-26.652734 3.51396,-1.354986 8.07392,-.683993 12.25187,3.615964 5.17095,5.322947 6.67694,19.9848 -8.50491,22.803772 z" fill="#fff"/>
+	</g>
+	<use xlink:href="#quarter" x="350"/>
+	<use xlink:href="#quarter" y="250"/>
+	<use xlink:href="#quarter" x="350" y="250"/>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Republique democratique du Congo.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Republique democratique du Congo.svg
new file mode 100644
index 0000000..0e3bd10
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Republique democratique du Congo.svg	
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="600">
+<rect width="800" height="600" x="0" y ="0" style="fill:#007fff" />
+<path d="m 36,120 84,0 26,-84 26,84 84,0 -68,52 26,84 -68,-52 -68,52 26,-84 -68,-52 z M 750,0 0,450 0,600 0,600 50,600 800,150 800,0 750,0" style="fill:#f7d618" />
+<path d="M 800,0 0,480 0,600 0,600 0,600 800,120 800,0" style="fill:#ce1021" />
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Rwanda.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Rwanda.svg
new file mode 100644
index 0000000..bdfb60d
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Rwanda.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="1080" height="720" viewBox="0 0 1080 720">
+<title>Flag of Rwanda</title>
+<rect width="1080" height="360" fill="#00a1de"/>
+<rect y="360" width="1080" height="180" fill="#fad201"/>
+<rect y="540" width="1080" height="180" fill="#20603d"/>
+<g transform="translate(886.5,188.1)">
+	<g id="h">
+		<path id="q" d="M 116.10000,0.00000 L 35.69202,4.69894 112.14399,30.04889 33.25966,13.77660 100.54555,58.05000 28.56072,21.91541 82.09510,82.09510 21.91541,28.56072 58.05000,100.54555 13.77660,33.25966 30.04889,112.14399 4.69894,35.69202 0.00000,116.10000 -1,-1 z" fill="#e5be01"/>
+		<use xlink:href="#q" transform="scale(1,-1)"/>
+	</g>
+	<use xlink:href="#h" transform="scale(-1,1)"/>
+	<circle r="34.3" fill="#e5be01" stroke="#00a1de" stroke-width="3.4"/>
+</g>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Senegal.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Senegal.png
new file mode 100644
index 0000000..d31f52e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Senegal.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Suisse.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Suisse.png
new file mode 100644
index 0000000..744bca2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Suisse.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Tchad.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Tchad.png
new file mode 100644
index 0000000..c70b035
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Tchad.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Togo.png b/Sankore-3.1/resources/library/pictures/Drapeaux/Togo.png
new file mode 100644
index 0000000..3192f7a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Drapeaux/Togo.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Drapeaux/Tunisie.svg b/Sankore-3.1/resources/library/pictures/Drapeaux/Tunisie.svg
new file mode 100644
index 0000000..0b0bfe2
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Drapeaux/Tunisie.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1200" height="800" viewBox="-60,-40 120,80">
+	<g fill="#e70013">
+		<rect x="-60" y="-40" width="120" height="80"/>
+		<circle r="20" fill="#fff"/>
+		<circle r="15"/>
+		<circle cx="4" r="12" fill="#fff"/>   
+		<g id="star" transform="translate(4)">
+			<g id="c">
+				<path id="t" d="M -9,0 h 9 v -4.5" transform="rotate(18 -9,0)"/>
+				<use xlink:href="#t" transform="scale(1,-1)"/>
+			</g>
+			<use xlink:href="#c" transform="rotate(72)"/>
+			<use xlink:href="#c" transform="rotate(144)"/>
+			<use xlink:href="#c" transform="rotate(216)"/>
+			<use xlink:href="#c" transform="rotate(288)"/>
+		</g>
+	</g>
+</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2013.png b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2013.png
new file mode 100644
index 0000000..480be19
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2013.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2014.png b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2014.png
new file mode 100644
index 0000000..18a2bb9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2014.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2015.png b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2015.png
new file mode 100644
index 0000000..4f3e70c
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/Calendrier 2015.png differ
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/blank_timeline.svg b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/blank_timeline.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/blank_timeline.svg
rename to Sankore-3.1/resources/library/pictures/Fonds/Calendriers/blank_timeline.svg
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/calendrier_2012.png b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/calendrier_2012.png
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/calendrier_2012.png
rename to Sankore-3.1/resources/library/pictures/Fonds/Calendriers/calendrier_2012.png
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/week_timesheet.svg b/Sankore-3.1/resources/library/pictures/Fonds/Calendriers/semainier.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/week_timesheet.svg
rename to Sankore-3.1/resources/library/pictures/Fonds/Calendriers/semainier.svg
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/Grille points noirs.gif b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/Grille points noirs.gif
new file mode 100644
index 0000000..a5e7c0b
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/Grille points noirs.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/lignes bleues.png b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/lignes bleues.png
new file mode 100644
index 0000000..fa95500
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/lignes bleues.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/maternelle.png b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/maternelle.png
new file mode 100644
index 0000000..c40f948
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/maternelle.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand noir.png b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand noir.png
new file mode 100644
index 0000000..b8569bc
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand noir.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand vert.png b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand vert.png
new file mode 100644
index 0000000..44791ab
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille grand vert.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille petit bleu.png b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille petit bleu.png
new file mode 100644
index 0000000..cc86eb6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/quadrille petit bleu.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes demi feuille.gif b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes demi feuille.gif
new file mode 100644
index 0000000..96545a3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes demi feuille.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes4.png b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes4.png
new file mode 100644
index 0000000..b971daa
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Carroyage et lignes/seyes4.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune.png
new file mode 100644
index 0000000..03a06d8
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune_pale.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune_pale.png
new file mode 100644
index 0000000..a644e96
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/jaune_pale.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge.png
new file mode 100644
index 0000000..09efc5b
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge_pale.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge_pale.png
new file mode 100644
index 0000000..0091ebb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/rouge_pale.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert.png
new file mode 100644
index 0000000..5630c24
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert_pale.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert_pale.png
new file mode 100644
index 0000000..31929e9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/vert_pale.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet.png
new file mode 100644
index 0000000..576ac68
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet_pale.png b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet_pale.png
new file mode 100644
index 0000000..782ded6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Fonds colores/violet_pale.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Horloges/4 horloges.png b/Sankore-3.1/resources/library/pictures/Fonds/Horloges/4 horloges.png
new file mode 100644
index 0000000..876af30
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Horloges/4 horloges.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Horloges/horloge.png b/Sankore-3.1/resources/library/pictures/Fonds/Horloges/horloge.png
new file mode 100644
index 0000000..4a72b01
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Horloges/horloge.png differ
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/3_D_cartesian_no_grid.svg b/Sankore-3.1/resources/library/pictures/Fonds/Mathematiques/axes 3D.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/3_D_cartesian_no_grid.svg
rename to Sankore-3.1/resources/library/pictures/Fonds/Mathematiques/axes 3D.svg
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/Two_dim_cartesian_grid.svg b/Sankore-3.1/resources/library/pictures/Fonds/Mathematiques/grille 2D.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/Two_dim_cartesian_grid.svg
rename to Sankore-3.1/resources/library/pictures/Fonds/Mathematiques/grille 2D.svg
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/3_D_cartesian_grid.svg b/Sankore-3.1/resources/library/pictures/Fonds/Mathematiques/grille 3D.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/3_D_cartesian_grid.svg
rename to Sankore-3.1/resources/library/pictures/Fonds/Mathematiques/grille 3D.svg
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de fa.png b/Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de fa.png
new file mode 100644
index 0000000..85ec2cf
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de fa.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de sol.png b/Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de sol.png
new file mode 100644
index 0000000..146d69c
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Musique/cle de sol.png differ
diff --git a/Sankore-3.1/resources/library/image/Backgrounds/music.svg b/Sankore-3.1/resources/library/pictures/Fonds/Musique/musique.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/Backgrounds/music.svg
rename to Sankore-3.1/resources/library/pictures/Fonds/Musique/musique.svg
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Musique/piano.png b/Sankore-3.1/resources/library/pictures/Fonds/Musique/piano.png
new file mode 100644
index 0000000..8ac82ae
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Musique/piano.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/Alquerque.svg b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/Alquerque.svg
new file mode 100644
index 0000000..b1b93c0
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/Alquerque.svg	
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_svg "http://www.w3.org/2000/svg">
+	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg  version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="300" height="300" viewBox="0 0 300 300"
+	 style="overflow:visible;enable-background:new 0 0 300 300;" xml:space="preserve">
+<rect x="224.5" y="1.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="224.5" y="75.6" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="224.5" y="150.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="224.5" y="224.5" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="150.1" y="1.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="150.1" y="75.6" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="150.1" y="150.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="150.1" y="224.5" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="75.6" y="1.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="75.6" y="75.6" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="75.6" y="150.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="75.6" y="224.5" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="1.1" y="1.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="1.1" y="75.6" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="1.1" y="150.1" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<rect x="1.1" y="224.5" style="fill:#FFFFFF;stroke:#000000;stroke-width:2.1282;" width="74.4" height="74.4"/>
+<line style="fill:none;stroke:#000000;stroke-width:2.1277;" x1="1.1" y1="1.1" x2="299" y2="299"/>
+<line style="fill:none;stroke:#000000;stroke-width:2.1277;" x1="1.1" y1="150.1" x2="150.1" y2="299"/>
+<line style="fill:none;stroke:#000000;stroke-width:2.1277;" x1="150.1" y1="1.1" x2="299" y2="150.1"/>
+<line style="fill:none;stroke:#000000;stroke-width:2.1277;" x1="1.1" y1="299" x2="299" y2="1.1"/>
+<line style="fill:none;stroke:#000000;stroke-width:2.1277;" x1="150.1" y1="299" x2="299" y2="150.1"/>
+<line style="fill:none;stroke:#000000;stroke-width:2.1277;" x1="1.1" y1="150.1" x2="150.1" y2="1.1"/>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echec.svg b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echec.svg
new file mode 100644
index 0000000..859f5cc
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echec.svg	
@@ -0,0 +1,600 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
+	"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   version="1.0"
+   width="870.35944"
+   height="880.43878"
+   id="svg2433">
+  <defs
+     id="defs2435" />
+  <g
+     transform="translate(-29.64059,99.999984)"
+     id="layer1">
+    <g
+       transform="translate(-911.67858,225.51912)"
+       id="g2889">
+      <rect
+         width="100"
+         height="100"
+         x="1011.6786"
+         y="-325.5191"
+         id="rect2499"
+         style="fill:#9f9f9f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <use
+         transform="translate(0,200)"
+         id="use2959"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(0,400)"
+         id="use2963"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(0,600)"
+         id="use2967"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(100,100)"
+         id="use2973"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(100,300)"
+         id="use2977"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(100,500)"
+         id="use2981"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(100,700)"
+         id="use2985"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(200,0)"
+         id="use2987"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(200,200)"
+         id="use2991"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(200,400)"
+         id="use2995"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(200,600)"
+         id="use2999"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(300,100)"
+         id="use3005"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(300,300)"
+         id="use3009"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(300,500)"
+         id="use3013"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(300,700)"
+         id="use3017"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(400,0)"
+         id="use3019"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(400,200)"
+         id="use3023"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(400,400)"
+         id="use3027"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(400,600)"
+         id="use3031"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(500,100)"
+         id="use3037"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(500,300)"
+         id="use3041"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(500,500)"
+         id="use3045"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(500,700)"
+         id="use3049"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(600,0)"
+         id="use3051"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(600,200)"
+         id="use3055"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(600,400)"
+         id="use3059"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(600,600)"
+         id="use3063"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(700,100)"
+         id="use3069"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(700,300)"
+         id="use3073"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(700,500)"
+         id="use3077"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <use
+         transform="translate(700,700)"
+         id="use3081"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2499" />
+      <rect
+         width="100"
+         height="100"
+         x="1111.6786"
+         y="-325.5191"
+         id="rect2497"
+         style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <use
+         transform="translate(-100,100)"
+         id="use3087"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(-100,300)"
+         id="use3091"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(-100,500)"
+         id="use3095"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(-100,700)"
+         id="use3099"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(0,200)"
+         id="use3105"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(0,400)"
+         id="use3109"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(0,600)"
+         id="use3113"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(100,100)"
+         id="use3119"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(100,300)"
+         id="use3123"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(100,500)"
+         id="use3127"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(100,700)"
+         id="use3131"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(200,0)"
+         id="use3133"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(200,200)"
+         id="use3137"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(200,400)"
+         id="use3141"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(200,600)"
+         id="use3145"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(300,100)"
+         id="use3151"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(300,300)"
+         id="use3155"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(300,500)"
+         id="use3159"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(300,700)"
+         id="use3163"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(400,0)"
+         id="use3165"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(400,200)"
+         id="use3169"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(400,400)"
+         id="use3173"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(400,600)"
+         id="use3177"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(500,100)"
+         id="use3183"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(500,300)"
+         id="use3187"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(500,500)"
+         id="use3191"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(500,700)"
+         id="use3195"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(600,0)"
+         id="use3197"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(600,200)"
+         id="use3201"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(600,400)"
+         id="use3205"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <use
+         transform="translate(600,600)"
+         id="use3209"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="1052.3622"
+         xlink:href="#rect2497" />
+      <g
+         id="g3430">
+        <path
+           d="M 1056.7567,495.0434 L 1034.1317,553.9184 L 1042.413,553.9184 L 1048.8817,536.07465 L 1073.5067,536.07465 L 1080.3505,553.9184 L 1089.2255,553.9184 L 1065.1317,495.0434 L 1056.7567,495.0434 z M 1060.7567,501.2309 C 1061.6669,504.41671 1063.0702,508.46577 1064.9442,513.4184 L 1071.1005,529.7309 L 1051.1317,529.7309 L 1057.6005,512.44965 C 1058.9658,508.72851 1060.0071,505.00567 1060.7567,501.2309 z"
+           id="path3354"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1139.4598,495.0434 L 1139.4598,553.9184 L 1161.8973,553.9184 C 1165.6452,553.9184 1168.796,553.59213 1171.366,552.94965 C 1173.9628,552.28037 1176.1214,551.29716 1177.8348,550.01215 C 1179.5481,548.72714 1180.9961,546.89925 1182.1473,544.5434 C 1183.3252,542.16078 1183.8972,539.58209 1183.8973,536.82465 C 1183.8972,533.39797 1182.9498,530.43492 1181.0223,527.9184 C 1179.1215,525.40195 1176.3953,523.61875 1172.8348,522.57465 C 1175.5922,521.20936 1177.6569,519.42167 1179.0223,517.19965 C 1180.3876,514.97769 1181.0535,512.62241 1181.0535,510.1059 C 1181.0535,507.40207 1180.2937,504.81888 1178.741,502.3559 C 1177.215,499.86624 1175.0654,498.03388 1172.3348,496.8559 C 1169.6309,495.65126 1166.051,495.04348 1161.5535,495.0434 L 1139.4598,495.0434 z M 1147.241,501.9809 L 1159.0223,501.9809 C 1163.2521,501.98095 1166.2196,502.26251 1167.9598,502.82465 C 1169.6999,503.36012 1171.054,504.38804 1171.991,505.88715 C 1172.928,507.35961 1173.3972,509.05791 1173.3973,511.01215 C 1173.3972,513.07356 1172.8833,514.80309 1171.866,516.1684 C 1170.8755,517.53376 1169.3783,518.48574 1167.3973,519.07465 C 1165.8981,519.52979 1163.4132,519.76218 1159.9598,519.76215 L 1147.241,519.76215 L 1147.241,501.9809 z M 1147.241,526.7309 L 1160.866,526.7309 C 1164.614,526.73093 1167.4787,527.06162 1169.4598,527.7309 C 1171.4676,528.37343 1173.0229,529.50416 1174.1473,531.13715 C 1175.2716,532.74344 1175.8347,534.62944 1175.8348,536.82465 C 1175.8347,538.69864 1175.4549,540.37901 1174.6785,541.82465 C 1173.9021,543.24353 1172.9144,544.32506 1171.7098,545.07465 C 1170.505,545.82425 1169.0034,546.34715 1167.2098,546.6684 C 1166.1925,546.8558 1164.4137,546.94968 1161.8973,546.94965 L 1147.241,546.94965 L 1147.241,526.7309 z"
+           id="path3350"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1279.9097,533.27521 L 1287.7001,535.24288 C 1286.067,541.64119 1283.1222,546.52691 1278.8657,549.90006 C 1274.6358,553.24645 1269.4556,554.91964 1263.325,554.91965 C 1256.9803,554.91964 1251.8134,553.63463 1247.8246,551.06461 C 1243.8624,548.46781 1240.8373,544.71986 1238.7492,539.82074 C 1236.6878,534.92165 1235.6571,529.66113 1235.6571,524.03917 C 1235.6571,517.90863 1236.8216,512.5678 1239.1507,508.01667 C 1241.5066,503.43886 1244.8396,499.972 1249.1497,497.61609 C 1253.4866,495.23352 1258.2519,494.04221 1263.4455,494.04215 C 1269.3351,494.04221 1274.2878,495.54139 1278.3035,498.5397 C 1282.3191,501.53811 1285.1167,505.75456 1286.6962,511.18904 L 1279.0263,512.99609 C 1277.6609,508.71276 1275.6798,505.59393 1273.0831,503.63959 C 1270.4863,501.68535 1267.2202,500.70821 1263.2849,500.70816 C 1258.7605,500.70821 1254.9724,501.79244 1251.9205,503.96085 C 1248.8954,506.12935 1246.7671,509.0474 1245.5356,512.715 C 1244.3041,516.3559 1243.6884,520.11724 1243.6884,523.99902 C 1243.6884,529.00524 1244.4112,533.38231 1245.8569,537.13025 C 1247.3293,540.85144 1249.6048,543.63563 1252.6835,545.48283 C 1255.7622,547.33004 1259.0952,548.25365 1262.6825,548.25364 C 1267.0462,548.25365 1270.7406,546.9954 1273.7658,544.47891 C 1276.7908,541.96244 1278.8388,538.22788 1279.9097,533.27521"
+           id="path3344"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1337.3505,495.0434 L 1337.3505,553.9184 L 1358.6005,553.9184 C 1362.161,553.9184 1365.3073,553.5564 1368.038,552.88715 C 1370.7954,552.21788 1373.1104,551.26591 1375.038,549.9809 C 1376.9922,548.66912 1378.8111,546.88591 1380.4442,544.63715 C 1382.0772,542.36162 1383.4001,539.49691 1384.4442,536.0434 C 1385.4882,532.58994 1386.0067,528.60795 1386.0067,524.13715 C 1386.0067,518.89005 1385.2469,514.23763 1383.6942,510.1684 C 1382.1682,506.07247 1379.8309,502.72952 1376.7255,500.1059 C 1374.3428,498.07135 1371.4736,496.66355 1368.1005,495.88715 C 1365.691,495.32501 1362.2096,495.04348 1357.6317,495.0434 L 1337.3505,495.0434 z M 1345.1317,501.9809 L 1357.5067,501.9809 C 1362.1381,501.98095 1365.481,502.39659 1367.5692,503.19965 C 1370.4605,504.32408 1372.9364,506.53634 1374.9442,509.8559 C 1376.9788,513.14879 1377.9754,517.8861 1377.9755,524.0434 C 1377.9754,528.48743 1377.457,532.25492 1376.413,535.38715 C 1375.3956,538.49261 1373.9789,540.97746 1372.1317,542.82465 C 1370.8199,544.13644 1369.0412,545.16437 1366.8192,545.88715 C 1364.624,546.60997 1361.576,546.94968 1357.6942,546.94965 L 1345.1317,546.94965 L 1345.1317,501.9809 z"
+           id="path3342"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1439.7129,553.91573 L 1439.7129,495.04607 L 1482.279,495.04607 L 1482.279,501.99317 L 1447.5033,501.99317 L 1447.5033,520.02351 L 1480.0704,520.02351 L 1480.0704,526.93045 L 1447.5033,526.93045 L 1447.5033,546.96863 L 1483.6443,546.96863 L 1483.6443,553.91573 L 1439.7129,553.91573"
+           id="path3338"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1541.8211,553.91573 L 1541.8211,495.04607 L 1581.536,495.04607 L 1581.536,501.99317 L 1549.6115,501.99317 L 1549.6115,520.22429 L 1577.2393,520.22429 L 1577.2393,527.17139 L 1549.6115,527.17139 L 1549.6115,553.91573 L 1541.8211,553.91573"
+           id="path3336"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1663.9675,530.82565 L 1663.9675,523.9187 L 1688.9048,523.87855 L 1688.9048,545.72377 C 1685.0765,548.77568 1681.1278,551.07799 1677.0586,552.63072 C 1672.9894,554.15667 1668.8131,554.91964 1664.5297,554.91965 C 1658.7471,554.91964 1653.4866,553.68817 1648.7482,551.22523 C 1644.0364,548.73552 1640.4759,545.1482 1638.0665,540.46325 C 1635.6571,535.77832 1634.4524,530.54458 1634.4524,524.76199 C 1634.4524,519.03301 1635.6437,513.69218 1638.0263,508.73949 C 1640.4357,503.76011 1643.8892,500.0657 1648.3868,497.65625 C 1652.8843,495.24691 1658.0645,494.04221 1663.9274,494.04215 C 1668.184,494.04221 1672.0256,494.73826 1675.4523,496.1303 C 1678.9058,497.49568 1681.6097,499.40981 1683.564,501.8727 C 1685.5182,504.33569 1687.004,507.54822 1688.0214,511.5103 L 1680.994,513.43782 C 1680.1105,510.4395 1679.0129,508.08364 1677.7011,506.37024 C 1676.3893,504.65694 1674.5153,503.29162 1672.0792,502.27427 C 1669.643,501.23025 1666.9391,500.70821 1663.9675,500.70816 C 1660.407,500.70821 1657.3283,501.25702 1654.7315,502.35458 C 1652.1347,503.42547 1650.0332,504.84434 1648.4269,506.61118 C 1646.8474,508.37812 1645.6159,510.31903 1644.7325,512.4339 C 1643.2333,516.07481 1642.4837,520.02354 1642.4837,524.28011 C 1642.4837,529.52728 1643.3805,533.91773 1645.1742,537.4515 C 1646.9946,540.9853 1649.6316,543.60886 1653.0851,545.3222 C 1656.5385,547.03556 1660.2062,547.89224 1664.088,547.89223 C 1667.4611,547.89224 1670.754,547.24973 1673.9666,545.96471 C 1677.179,544.65294 1679.6152,543.26084 1681.2751,541.78842 L 1681.2751,530.82565 L 1663.9675,530.82565"
+           id="path3334"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+        <path
+           d="M 1738.5886,553.91573 L 1738.5886,495.04607 L 1746.379,495.04607 L 1746.379,519.22038 L 1776.9784,519.22038 L 1776.9784,495.04607 L 1784.7688,495.04607 L 1784.7688,553.91573 L 1776.9784,553.91573 L 1776.9784,526.16748 L 1746.379,526.16748 L 1746.379,553.91573 L 1738.5886,553.91573"
+           id="path3332"
+           style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      </g>
+      <path
+         d="M 972.52085,454.0362 L 965.29265,454.0362 L 965.29265,407.97651 C 963.55245,409.63636 961.26355,411.29617 958.42585,412.95593 C 955.61485,414.61578 953.08505,415.86064 950.83625,416.6905 L 950.83625,409.70324 C 954.87865,407.80254 958.41245,405.50023 961.43765,402.7963 C 964.46275,400.09247 966.60445,397.46891 967.86265,394.92559 L 972.52085,394.92559 L 972.52085,454.0362"
+         id="path3328"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 981.13766,347.08908 L 981.13766,354.03619 L 942.22586,354.03619 C 942.17231,352.29607 942.45341,350.62287 943.06915,349.0166 C 944.05967,346.36627 945.63917,343.75609 947.80763,341.18605 C 950.00285,338.61604 953.16184,335.64445 957.2846,332.27128 C 963.68288,327.02417 968.0064,322.87465 970.25521,319.82271 C 972.50395,316.74407 973.62833,313.83941 973.62836,311.10872 C 973.62833,308.24425 972.59764,305.83486 970.5363,303.88052 C 968.50167,301.89951 965.83795,300.90898 962.54513,300.90893 C 959.06486,300.90898 956.28067,301.95305 954.19254,304.04115 C 952.10438,306.12934 951.04693,309.02062 951.02017,312.71498 L 943.59118,311.95201 C 944.09983,306.41044 946.01396,302.19399 949.33359,299.30266 C 952.65319,296.38467 957.11058,294.92564 962.70575,294.92558 C 968.35443,294.92564 972.8252,296.49175 976.11808,299.62391 C 979.41088,302.75618 981.05731,306.63799 981.05735,311.26934 C 981.05731,313.62524 980.57543,315.94094 979.61171,318.21645 C 978.64791,320.49202 977.04164,322.88803 974.79291,325.40449 C 972.57087,327.921 968.86308,331.37447 963.66951,335.76491 C 959.33257,339.40579 956.54838,341.88212 955.31693,343.19389 C 954.08544,344.47891 953.06814,345.77731 952.26502,347.08908 L 981.13766,347.08908"
+         id="path3326"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 942.40336,237.97351 L 949.63156,237.00975 C 950.46145,241.10574 951.86693,244.06394 953.84801,245.88437 C 955.85582,247.67804 958.29199,248.57487 961.15652,248.57487 C 964.55642,248.57487 967.42093,247.39694 969.75004,245.04108 C 972.10587,242.68523 973.28379,239.76719 973.28383,236.28693 C 973.28379,232.96733 972.19957,230.23668 970.03114,228.09497 C 967.86265,225.92654 965.10523,224.84231 961.75887,224.84228 C 960.39352,224.84231 958.69356,225.11002 956.65897,225.64541 L 957.46211,219.30066 C 957.94397,219.35424 958.33215,219.38101 958.62665,219.38098 C 961.7053,219.38101 964.47611,218.57788 966.93908,216.97158 C 969.40199,215.36535 970.63346,212.88902 970.63349,209.54259 C 970.63346,206.8923 969.73663,204.69707 967.94299,202.9569 C 966.1493,201.21683 963.8336,200.34677 960.99589,200.34672 C 958.18491,200.34677 955.84244,201.23022 953.96848,202.99706 C 952.09449,204.764 950.88979,207.41434 950.35438,210.94808 L 943.12618,209.66306 C 944.00962,204.81754 946.01745,201.06959 949.14968,198.4192 C 952.28188,195.74215 956.17708,194.40359 960.83527,194.40353 C 964.04777,194.40359 967.00598,195.09964 969.70989,196.49168 C 972.41373,197.85706 974.47511,199.73104 975.89401,202.11361 C 977.33961,204.49629 978.06243,207.02616 978.06247,209.70322 C 978.06243,212.24652 977.37977,214.56222 976.01448,216.65032 C 974.64912,218.7385 972.6279,220.39831 969.95083,221.62975 C 973.43104,222.43291 976.13491,224.1061 978.06247,226.64933 C 979.98995,229.16584 980.95371,232.32483 980.95375,236.1263 C 980.95371,241.26637 979.07973,245.63005 975.33182,249.21737 C 971.58383,252.77793 966.84535,254.55821 961.11635,254.55821 C 955.94952,254.55821 951.65276,253.01887 948.22607,249.94019 C 944.82614,246.86152 942.88523,242.87263 942.40336,237.97351"
+         id="path3324"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 968.19417,95.043386 L 941.31917,133.19964 L 941.31917,139.82464 L 966.88167,139.82464 L 966.88167,153.91839 L 974.10043,153.91839 L 974.10043,139.82464 L 982.03793,139.82464 L 982.03793,133.19964 L 974.10043,133.19964 L 974.10043,95.043386 L 968.19417,95.043386 z M 966.88167,106.66839 L 966.88167,133.19964 L 948.44417,133.19964 L 966.88167,106.66839 z"
+         id="path3322"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 942.16241,37.592046 L 949.75202,36.949536 C 950.3142,40.643966 951.6126,43.428156 953.64722,45.302126 C 955.70858,47.149336 958.1849,48.072936 961.0762,48.072936 C 964.55642,48.072936 967.50124,46.761156 969.91067,44.137576 C 972.32003,41.514026 973.52473,38.033786 973.52476,33.696846 C 973.52473,29.574126 972.36019,26.321436 970.03114,23.938776 C 967.72879,21.556186 964.70366,20.364866 960.95573,20.364836 C 958.62662,20.364866 956.52509,20.900296 954.65114,21.971106 C 952.77714,23.015206 951.30473,24.380536 950.2339,26.067086 L 943.44743,25.183636 L 949.14967,-5.0543241 L 978.42388,-5.0543241 L 978.42388,1.8526159 L 954.93223,1.8526159 L 951.75986,17.674346 C 955.29363,15.211436 959.00142,13.979966 962.88325,13.979926 C 968.02327,13.979966 972.36019,15.760246 975.89401,19.320766 C 979.42775,22.881356 981.19464,27.459206 981.19469,33.054346 C 981.19464,38.381806 979.64192,42.986436 976.53651,46.868236 C 972.76175,51.633486 967.60832,54.016116 961.0762,54.016116 C 955.72196,54.016116 951.34489,52.516936 947.94497,49.518576 C 944.57181,46.520216 942.64429,42.544706 942.16241,37.592046"
+         id="path3318"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 963.36605,-105.56601 C 957.15513,-105.56595 952.18993,-103.31352 948.5223,-98.816006 C 944.31923,-93.649136 942.24104,-85.381156 942.24105,-74.003506 C 942.24104,-63.830476 944.12705,-56.541226 947.92855,-52.097256 C 951.73004,-47.680016 956.65503,-45.472246 962.67855,-45.472256 C 966.2123,-45.472256 969.36307,-46.316936 972.1473,-48.003506 C 974.93146,-49.690076 977.09902,-52.094506 978.67855,-55.253506 C 980.28478,-58.439256 981.11601,-61.871586 981.11605,-65.566006 C 981.11601,-71.187916 979.39094,-75.782186 975.99105,-79.316006 C 972.61785,-82.876526 968.52857,-84.659726 963.7098,-84.659756 C 960.95235,-84.659716 958.32001,-84.007206 955.80355,-82.722256 C 953.28705,-81.437206 951.16866,-79.466286 949.42855,-76.816006 C 949.48208,-82.705616 950.148,-87.255176 951.4598,-90.441006 C 952.77157,-93.626716 954.55924,-96.031166 956.8348,-97.691006 C 958.5749,-98.975966 960.59496,-99.628446 962.8973,-99.628506 C 965.76178,-99.628456 968.19298,-98.596046 970.1473,-96.534756 C 971.3252,-95.249696 972.22351,-93.184926 972.86605,-90.347256 L 980.05355,-90.909756 C 979.46454,-95.487566 977.68136,-99.094166 974.7098,-101.69101 C 971.76495,-104.28775 967.99742,-105.56595 963.36605,-105.56601 z M 962.2723,-78.284756 C 965.56512,-78.284726 968.29131,-77.078106 970.4598,-74.722256 C 972.62822,-72.393146 973.70976,-69.197686 973.7098,-65.128506 C 973.70976,-60.898656 972.62375,-57.560196 970.42855,-55.097256 C 968.23329,-52.634306 965.60542,-51.409746 962.55355,-51.409756 C 960.46538,-51.409756 958.45428,-51.981796 956.55355,-53.159756 C 954.65279,-54.364446 953.18688,-56.102966 952.11605,-58.378506 C 951.07197,-60.654036 950.55354,-63.045036 950.55355,-65.534756 C 950.55354,-69.336226 951.68424,-72.393166 953.9598,-74.722256 C 956.23533,-77.078086 959.0062,-78.284716 962.2723,-78.284756 z"
+         id="path3316"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 942.62424,-197.62536 L 942.62424,-204.57246 L 980.73286,-204.57246 L 980.73286,-198.95053 C 976.98496,-194.96158 973.26376,-189.66091 969.56936,-183.04849 C 965.90166,-176.436 963.06395,-169.63614 961.05615,-162.64891 C 959.61048,-157.72301 958.68688,-152.32864 958.28534,-146.46577 L 950.85635,-146.46577 C 950.93666,-151.09717 951.84687,-156.69233 953.58701,-163.25126 C 955.32711,-169.81016 957.81682,-176.12813 961.05615,-182.2052 C 964.32219,-188.30897 967.78906,-193.44902 971.45676,-197.62536 L 942.62424,-197.62536"
+         id="path3312"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+      <path
+         d="M 961.5536,-305.56598 C 956.4403,-305.56592 952.351,-304.10897 949.2723,-301.19098 C 946.1937,-298.27288 944.6473,-294.69304 944.6473,-290.40973 C 944.6473,-287.57195 945.3579,-285.1318 946.8036,-283.09723 C 948.2492,-281.06259 950.4927,-279.47604 953.4911,-278.37848 C 949.9037,-277.44146 947.1328,-275.69402 945.1786,-273.09723 C 943.251,-270.52718 942.2723,-267.33172 942.2723,-263.50348 C 942.2723,-258.36341 944.0556,-254.05072 947.6161,-250.59723 C 951.1767,-247.17053 955.8693,-245.47222 961.6786,-245.47223 C 967.4879,-245.47223 972.1805,-247.17055 975.7411,-250.59723 C 979.3016,-254.02392 981.0848,-258.25177 981.0848,-263.28473 C 981.0848,-266.92558 980.1105,-270.06739 978.2098,-272.69098 C 976.3358,-275.31452 973.6051,-277.2005 969.9911,-278.37848 C 972.9091,-279.47606 975.0721,-281.02687 976.4911,-283.03473 C 977.9367,-285.0693 978.6473,-287.46029 978.6473,-290.19098 C 978.6473,-294.47431 977.092,-298.09435 973.9598,-301.06598 C 970.8275,-304.06429 966.6936,-305.56592 961.5536,-305.56598 z M 961.6473,-299.62848 C 964.3779,-299.62843 966.6394,-298.7301 968.4598,-296.90973 C 970.307,-295.11602 971.2411,-292.87253 971.2411,-290.22223 C 971.2411,-287.67894 970.3473,-285.55157 968.5536,-283.78473 C 966.7867,-282.04457 964.494,-281.15967 961.7098,-281.15973 C 958.8453,-281.15969 956.5348,-282.04904 954.7411,-283.81598 C 952.9475,-285.58283 952.0223,-287.84426 952.0223,-290.62848 C 952.0223,-293.09137 952.9519,-295.20527 954.7723,-296.97223 C 956.5927,-298.73907 958.8898,-299.62842 961.6473,-299.62848 z M 961.5223,-275.25348 C 965.0025,-275.25345 967.8762,-274.12272 970.1786,-271.84723 C 972.5076,-269.57167 973.6786,-266.70248 973.6786,-263.22223 C 973.6786,-259.79552 972.5524,-256.97546 970.3036,-254.75348 C 968.0548,-252.53147 965.1945,-251.40972 961.7411,-251.40973 C 959.519,-251.40973 957.4498,-251.92815 955.5223,-252.97223 C 953.5947,-254.04307 952.1378,-255.54469 951.1473,-257.47223 C 950.1835,-259.39974 949.7098,-261.37958 949.7098,-263.44098 C 949.7098,-266.81412 950.8316,-269.62965 953.0536,-271.87848 C 955.3023,-274.12723 958.1224,-275.25347 961.5223,-275.25348 z"
+         id="path3310"
+         style="font-size:82.2408371px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
+    </g>
+  </g>
+</svg>
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echelle.jpg b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echelle.jpg
new file mode 100644
index 0000000..20860a8
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu d'echelle.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de dames.gif b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de dames.gif
new file mode 100644
index 0000000..2b575f6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de dames.gif differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de petits chevaux.jpg b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de petits chevaux.jpg
new file mode 100644
index 0000000..dad9cb5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/jeu de petits chevaux.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/labyrinthe-gout3a.jpg b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/labyrinthe-gout3a.jpg
new file mode 100644
index 0000000..14ee819
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Plateaux jeux/labyrinthe-gout3a.jpg differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Basketball.png b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Basketball.png
new file mode 100644
index 0000000..270ac5c
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Basketball.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Handball.JPG b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Handball.JPG
new file mode 100644
index 0000000..0cc0fb9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Handball.JPG differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Rugby.png b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Rugby.png
new file mode 100644
index 0000000..5b16322
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/Rugby.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/football.png b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/football.png
new file mode 100644
index 0000000..11716a2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/football.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/hockey_sur_glace.svg b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/hockey_sur_glace.svg
new file mode 100644
index 0000000..93da2a2
--- /dev/null
+++ b/Sankore-3.1/resources/library/pictures/Fonds/Terrains Sports/hockey_sur_glace.svg	
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="748.49799"
+   height="347.5"
+   viewBox="0 0 748.498 347.5"
+   id="svg2"
+   xml:space="preserve"><defs
+   id="defs27" />
+		<path
+   d="M 105.375,2.002 L 643.124,2.002 C 700.215,2.002 746.496,43.348 746.496,94.35 L 746.496,253.148 C 746.496,304.151 700.215,345.497 643.124,345.497 L 105.375,345.497 C 48.284,345.497 2.003,304.151 2.003,253.148 L 2.003,94.351 C 2.002,43.348 48.284,2.002 105.375,2.002 z "
+   style="fill:#ffffff;stroke:#000000;stroke-width:4.00449991;stroke-linecap:round;stroke-linejoin:round"
+   id="rect2206" /><ellipse
+   cx="376.73999"
+   cy="170.02901"
+   rx="37.320999"
+   ry="38.209999"
+   style="fill:none;stroke:#4466bb;stroke-width:3.00970006;stroke-linecap:round;stroke-linejoin:round"
+   id="path2208" /><ellipse
+   cx="249.019"
+   cy="82.168999"
+   rx="5.2690001"
+   ry="5.3340001"
+   style="fill:#cc3333;stroke:#e24b5a;stroke-width:0.50160003;stroke-linecap:round;stroke-linejoin:round"
+   id="path2210" /><ellipse
+   cx="249.019"
+   cy="258.41199"
+   rx="5.2690001"
+   ry="5.335"
+   style="fill:#cc3333;stroke:#e24b5a;stroke-width:0.50160003;stroke-linecap:round;stroke-linejoin:round"
+   id="path2212" /><ellipse
+   cx="504.01901"
+   cy="258.41199"
+   rx="5.2690001"
+   ry="5.335"
+   style="fill:#cc3333;stroke:#e24b5a;stroke-width:0.50160003;stroke-linecap:round;stroke-linejoin:round"
+   id="path2214" /><ellipse
+   cx="504.01901"
+   cy="82.168999"
+   rx="5.2690001"
+   ry="5.3340001"
+   style="fill:#cc3333;stroke:#e24b5a;stroke-width:0.50160003;stroke-linecap:round;stroke-linejoin:round"
+   id="path2216" /><line
+   style="fill:none;stroke:#cc3333;stroke-width:2.99760008;stroke-linecap:round;stroke-dasharray:8.9929, 8.9929"
+   y2="345.99799"
+   x2="377.34399"
+   y1="7.8800001"
+   x1="376.99799"
+   id="path2218" /><line
+   style="fill:none;stroke:#4466bb;stroke-width:8.02579975"
+   y2="343.48401"
+   x2="227.77"
+   y1="3.5829999"
+   x1="227.51199"
+   id="path3093" /><line
+   style="fill:none;stroke:#4466bb;stroke-width:8.02579975"
+   y2="343.48401"
+   x2="526.63599"
+   y1="3.993"
+   x1="526.63202"
+   id="path3095" /><path
+   d="M 170.671,256.73 C 170.671,278.802 152.377,296.716 129.837,296.716 C 107.297,296.716 89.003,278.802 89.003,256.73 C 89.003,234.657 107.297,216.742 129.837,216.742 C 152.377,216.742 170.671,234.657 170.671,256.73 z M 120.617,216.742 L 120.617,206.969 M 138.18,206.968 L 138.18,217.63 M 139.936,296.716 L 139.936,306.491 M 119.739,297.605 L 119.739,306.492"
+   style="fill:none;stroke:#cc3333;stroke-width:3.00970006;stroke-linecap:round;stroke-linejoin:round"
+   id="path25" /><path
+   d="M 136.586,257.941 C 136.586,261.284 133.905,263.997 130.603,263.997 C 127.301,263.997 124.62,261.284 124.62,257.941 C 124.62,254.599 127.301,251.886 130.603,251.886 C 133.899,251.886 136.576,254.585 136.586,257.921"
+   style="fill:#cc3333"
+   id="path24203" /><path
+   d="M 170.671,81.729 C 170.671,103.802 152.377,121.717 129.837,121.717 C 107.297,121.717 89.003,103.802 89.003,81.729 C 89.003,59.656 107.297,41.742 129.837,41.742 C 152.377,41.742 170.671,59.657 170.671,81.729 z M 120.617,41.742 L 120.617,31.968 M 138.18,31.968 L 138.18,42.631 M 139.936,121.717 L 139.936,131.491 M 119.739,122.605 L 119.739,131.491"
+   style="fill:none;stroke:#cc3333;stroke-width:3.00970006;stroke-linecap:round;stroke-linejoin:round"
+   id="path28" /><path
+   d="M 136.284,81.699 C 136.284,85.042 133.603,87.754 130.301,87.754 C 126.997,87.754 124.317,85.042 124.317,81.699 C 124.317,78.357 126.998,75.644 130.301,75.644 C 133.597,75.644 136.273,78.343 136.284,81.678"
+   style="fill:#cc3333"
+   id="path24191" /><path
+   d="M 656.671,81.729 C 656.671,103.802 638.377,121.717 615.837,121.717 C 593.297,121.717 575.003,103.802 575.003,81.729 C 575.003,59.656 593.297,41.742 615.837,41.742 C 638.377,41.742 656.671,59.657 656.671,81.729 z M 606.617,41.742 L 606.617,31.968 M 624.179,31.968 L 624.179,42.631 M 625.936,121.717 L 625.936,131.491 M 605.739,122.605 L 605.739,131.491"
+   style="fill:none;stroke:#cc3333;stroke-width:3.00970006;stroke-linecap:round;stroke-linejoin:round"
+   id="path31" /><path
+   d="M 622.467,81.699 C 622.467,85.042 619.785,87.754 616.483,87.754 C 613.181,87.754 610.5,85.042 610.5,81.699 C 610.5,78.357 613.181,75.644 616.483,75.644 C 619.779,75.644 622.456,78.343 622.466,81.678"
+   style="fill:#cc3333"
+   id="path24179" /><path
+   d="M 656.671,256.73 C 656.671,278.802 638.377,296.716 615.837,296.716 C 593.297,296.716 575.003,278.802 575.003,256.73 C 575.003,234.657 593.297,216.742 615.837,216.742 C 638.377,216.742 656.671,234.657 656.671,256.73 z M 606.617,216.742 L 606.617,206.969 M 624.179,206.968 L 624.179,217.63 M 625.936,296.716 L 625.936,306.491 M 605.739,297.605 L 605.739,306.492"
+   style="fill:none;stroke:#cc3333;stroke-width:3.00970006;stroke-linecap:round;stroke-linejoin:round"
+   id="path34" /><path
+   d="M 622.466,257.941 C 622.466,261.284 619.785,263.997 616.483,263.997 C 613.179,263.997 610.499,261.284 610.499,257.941 C 610.499,254.599 613.18,251.886 616.483,251.886 C 619.779,251.886 622.455,254.585 622.466,257.921"
+   style="fill:#cc3333"
+   id="path24167" /><path
+   d="M 66.484,192.923 C 66.484,192.923 54.261,192.808 53.761,192.54 C 43.569,187.094 53.296,178.12 52.966,177.805 C 45.231,170.421 51.476,162.296 55.066,162.589 L 66.276,162.462"
+   style="fill:url(#pattern9092);fill-opacity:1;stroke:#cc3333;stroke-width:3.00970006"
+   id="path14545" /><path
+   d="M 65.6,12.586 L 65.555,335.173 M 66.246,147.109 C 108.857,147.009 110.271,208.016 65.823,207.758 M 66.159,159.263 C 67.17,159.409 81.391,159.165 81.391,159.165 L 81.668,195.108 L 65.706,195.108"
+   style="fill:none;stroke:#cc3333;stroke-width:3.00970006;stroke-linecap:round"
+   id="path39" /><path
+   d="M 679.978,159.673 C 679.978,159.673 692.2,159.884 692.697,160.154 C 702.847,165.679 693.052,174.578 693.381,174.895 C 701.06,182.339 694.753,190.415 691.166,190.094 L 679.955,190.134"
+   style="fill:url(#pattern12010);fill-opacity:1;stroke:#cc3333;stroke-width:3.00970006"
+   id="path15433" /><path
+   d="M 679.857,335.94 L 680.044,11.447 M 679.868,205.488 C 636.527,205.286 634.698,144.952 679.93,144.838 M 679.927,193.687 C 673.632,193.255 664.814,193.315 664.814,193.315 L 664.458,157.367 L 679.951,157.488"
+   style="fill:none;stroke:#cc3333;stroke-width:3.00970006;stroke-linecap:round"
+   id="path43" /><path
+   d="M 381.218,169.978 C 381.22,171.413 380.485,172.74 379.29,173.458 C 378.095,174.176 376.622,174.176 375.427,173.458 C 374.232,172.739 373.496,171.412 373.498,169.978 C 373.496,168.542 374.231,167.215 375.427,166.498 C 376.622,165.779 378.095,165.779 379.29,166.498 C 380.485,167.215 381.22,168.542 381.218,169.978 L 381.218,169.978 z "
+   style="fill:#5567b0"
+   id="path29529" /><path
+   d="M 316.077,343.916 C 315.632,326.934 327.244,311.094 346.434,302.505 C 365.625,293.916 389.398,293.92 408.584,302.515 C 427.77,311.11 439.374,326.953 438.92,343.935"
+   style="fill:none;stroke:#cc3333;stroke-width:2.13089991"
+   id="path6578" />
+	</svg>
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/pictures/Meteo/couvert.png b/Sankore-3.1/resources/library/pictures/Meteo/couvert.png
new file mode 100644
index 0000000..cbebae1
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Meteo/couvert.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Meteo/neige.png b/Sankore-3.1/resources/library/pictures/Meteo/neige.png
new file mode 100644
index 0000000..ce9d66a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Meteo/neige.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Meteo/nuageux.png b/Sankore-3.1/resources/library/pictures/Meteo/nuageux.png
new file mode 100644
index 0000000..4644081
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Meteo/nuageux.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Meteo/orage.png b/Sankore-3.1/resources/library/pictures/Meteo/orage.png
new file mode 100644
index 0000000..96f5e91
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Meteo/orage.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Meteo/pluie.png b/Sankore-3.1/resources/library/pictures/Meteo/pluie.png
new file mode 100644
index 0000000..b1edfc8
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Meteo/pluie.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Meteo/soleil.png b/Sankore-3.1/resources/library/pictures/Meteo/soleil.png
new file mode 100644
index 0000000..e10b588
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Meteo/soleil.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Objets/objet_ballon.png b/Sankore-3.1/resources/library/pictures/Objets/objet_ballon.png
new file mode 100644
index 0000000..cd09bdb
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Objets/objet_ballon.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Objets/objet_reveil.png b/Sankore-3.1/resources/library/pictures/Objets/objet_reveil.png
new file mode 100644
index 0000000..866d1fd
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Objets/objet_reveil.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/Moussa_vieux.png b/Sankore-3.1/resources/library/pictures/Personnages/Moussa_vieux.png
new file mode 100644
index 0000000..fd6ee76
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/Moussa_vieux.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/abdou.png b/Sankore-3.1/resources/library/pictures/Personnages/abdou.png
new file mode 100644
index 0000000..54670a2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/abdou.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali__en_tailleur.png b/Sankore-3.1/resources/library/pictures/Personnages/ali__en_tailleur.png
new file mode 100644
index 0000000..110506f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali__en_tailleur.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_attends.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_attends.png
new file mode 100644
index 0000000..c0eb8e6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_attends.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_ballon.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_ballon.png
new file mode 100644
index 0000000..5950496
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_ballon.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_bananes.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_bananes.png
new file mode 100644
index 0000000..50d6431
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_bananes.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_barbu.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_barbu.png
new file mode 100644
index 0000000..294e980
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_barbu.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_jupe.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_jupe.png
new file mode 100644
index 0000000..de58a5e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_jupe.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_parle_orange.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_parle_orange.png
new file mode 100644
index 0000000..aef3788
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_parle_orange.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_parle_violet.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_parle_violet.png
new file mode 100644
index 0000000..1f96abd
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_parle_violet.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_porte.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_porte.png
new file mode 100644
index 0000000..8947123
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_porte.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ali_sac_ecole.png b/Sankore-3.1/resources/library/pictures/Personnages/ali_sac_ecole.png
new file mode 100644
index 0000000..c76e9f4
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ali_sac_ecole.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ana_bras_ecarte.png b/Sankore-3.1/resources/library/pictures/Personnages/ana_bras_ecarte.png
new file mode 100644
index 0000000..010848e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ana_bras_ecarte.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ana_main_croise_gd.png b/Sankore-3.1/resources/library/pictures/Personnages/ana_main_croise_gd.png
new file mode 100644
index 0000000..b2eff2f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ana_main_croise_gd.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/ana_presentation.png b/Sankore-3.1/resources/library/pictures/Personnages/ana_presentation.png
new file mode 100644
index 0000000..fa32fc2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/ana_presentation.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/fatou_assise.png b/Sankore-3.1/resources/library/pictures/Personnages/fatou_assise.png
new file mode 100644
index 0000000..7c07454
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/fatou_assise.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/fatou_bras_leve.png b/Sankore-3.1/resources/library/pictures/Personnages/fatou_bras_leve.png
new file mode 100644
index 0000000..6500306
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/fatou_bras_leve.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/fatou_debout.png b/Sankore-3.1/resources/library/pictures/Personnages/fatou_debout.png
new file mode 100644
index 0000000..3f3863a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/fatou_debout.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/fratrie.png b/Sankore-3.1/resources/library/pictures/Personnages/fratrie.png
new file mode 100644
index 0000000..0e644ac
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/fratrie.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/jan_bras_ecarte.png b/Sankore-3.1/resources/library/pictures/Personnages/jan_bras_ecarte.png
new file mode 100644
index 0000000..5254017
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/jan_bras_ecarte.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/jan_presentation.png b/Sankore-3.1/resources/library/pictures/Personnages/jan_presentation.png
new file mode 100644
index 0000000..69e853e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/jan_presentation.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Personnages/medecin.png b/Sankore-3.1/resources/library/pictures/Personnages/medecin.png
new file mode 100644
index 0000000..d4c6e8f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Personnages/medecin.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/oeil.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/oeil.png
new file mode 100644
index 0000000..27f123d
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/oeil.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/oeil_barre.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/oeil_barre.png
new file mode 100644
index 0000000..39a3ccd
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/oeil_barre.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/oreille.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/oreille.png
new file mode 100644
index 0000000..19db3f5
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/oreille.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/oreille_barre.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/oreille_barre.png
new file mode 100644
index 0000000..647c0e3
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/oreille_barre.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_choisis.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_choisis.png
new file mode 100644
index 0000000..2969ae2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_choisis.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_deplace.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_deplace.png
new file mode 100644
index 0000000..328a312
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_deplace.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecoute.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecoute.png
new file mode 100644
index 0000000..7fdf9ce
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecoute.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecrit.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecrit.png
new file mode 100644
index 0000000..e7bf7f8
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_ecrit.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_explore.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_explore.png
new file mode 100644
index 0000000..1de6400
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_explore.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre.png
new file mode 100644
index 0000000..71dfdc2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre2.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre2.png
new file mode 100644
index 0000000..933e14b
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_livre2.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_parle.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_parle.png
new file mode 100644
index 0000000..a408cae
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_parle.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde.png
new file mode 100644
index 0000000..a7a1c32
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde_ecoute.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde_ecoute.png
new file mode 100644
index 0000000..d97d25f
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_regarde_ecoute.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_reperer.png b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_reperer.png
new file mode 100644
index 0000000..773366a
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Pictogrammes/picto_reperer.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/Bananier.png b/Sankore-3.1/resources/library/pictures/Vegetaux/Bananier.png
new file mode 100644
index 0000000..907ca92
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/Bananier.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/avocat.png b/Sankore-3.1/resources/library/pictures/Vegetaux/avocat.png
new file mode 100644
index 0000000..ac15ce9
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/avocat.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/avocatier.png b/Sankore-3.1/resources/library/pictures/Vegetaux/avocatier.png
new file mode 100644
index 0000000..ea8ea96
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/avocatier.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/banane.png b/Sankore-3.1/resources/library/pictures/Vegetaux/banane.png
new file mode 100644
index 0000000..052c769
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/banane.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_avocat.png b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_avocat.png
new file mode 100644
index 0000000..ab370d2
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_avocat.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_bananne.png b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_bananne.png
new file mode 100644
index 0000000..0b1ce79
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_bananne.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_goyave.png b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_goyave.png
new file mode 100644
index 0000000..e5ae680
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_goyave.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_mangue.png b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_mangue.png
new file mode 100644
index 0000000..0b3849e
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/croissance_mangue.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/goyave.png b/Sankore-3.1/resources/library/pictures/Vegetaux/goyave.png
new file mode 100644
index 0000000..fc22f16
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/goyave.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/goyavier.png b/Sankore-3.1/resources/library/pictures/Vegetaux/goyavier.png
new file mode 100644
index 0000000..78ec9b4
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/goyavier.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/mangue.png b/Sankore-3.1/resources/library/pictures/Vegetaux/mangue.png
new file mode 100644
index 0000000..2c61014
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/mangue.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/manguier_mangue.png b/Sankore-3.1/resources/library/pictures/Vegetaux/manguier_mangue.png
new file mode 100644
index 0000000..999a8f6
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/manguier_mangue.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/manioc.png b/Sankore-3.1/resources/library/pictures/Vegetaux/manioc.png
new file mode 100644
index 0000000..669fc47
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/manioc.png differ
diff --git a/Sankore-3.1/resources/library/pictures/Vegetaux/piment.png b/Sankore-3.1/resources/library/pictures/Vegetaux/piment.png
new file mode 100644
index 0000000..7869f33
Binary files /dev/null and b/Sankore-3.1/resources/library/pictures/Vegetaux/piment.png differ
diff --git a/Sankore-3.1/resources/library/image/open-sankore.svg b/Sankore-3.1/resources/library/pictures/open-sankore.svg
similarity index 100%
rename from Sankore-3.1/resources/library/image/open-sankore.svg
rename to Sankore-3.1/resources/library/pictures/open-sankore.svg
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/config.xml b/Sankore-3.1/resources/library/search/Audio Planete.wgs/config.xml
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/config.xml
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/config.xml
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css
new file mode 100644
index 0000000..80b50fb
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Audio Planete.wgs/css/basic.css	
@@ -0,0 +1,315 @@
+html, body{
+    width: 100%;
+    padding: 0;
+    height: auto;
+    background-color: white;
+    margin: 0;
+}
+
+::-webkit-scrollbar {
+    width: 14px;
+    background-color:white;
+}
+
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px; 
+    background-color:lightgray;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:start{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgUp.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:end{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgDown.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+a {
+    text-decoration: underline;
+}
+
+#disc_nav_cont{
+    height: auto;
+    position: fixed;
+    left: 0;
+    bottom: 0;    
+    width: 100%;
+}
+
+.disclaimer{  
+    padding: 5px;
+    text-align: center;
+    background-color: #BBBBBB;    
+    border-top: solid 4px #EEEEEE;
+    border-bottom: none;
+    font-size: 12px;
+}
+
+.resultFooter{    
+    width: 100%;    
+    padding: 3px;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-weight: bold;
+    font-size: x-large;
+    text-align: center;
+    background-color: white;
+}
+
+#searchResult {
+    overflow: hidden;
+    text-align: center;
+    margin-top: 50px;
+    margin-bottom: 85px;
+}
+
+.search{
+    position: fixed;
+    top: 0;
+    left: 0;
+    padding: 5px;
+    background-color: #BBBBBB;
+    border-bottom: solid 4px #EEEEEE;
+}
+
+.search,
+.disclaimer {
+    width: 100%;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchInput{
+    padding: 3px;
+    float: left;
+    width: 100%;
+    border-radius: 3px;
+    border-style: none;
+    height: 22px;
+    line-height: 18px;
+    vertical-align: middle;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchButton{
+    background: url("../images/search_app.png") -38px -38px no-repeat;
+    width: 24px;
+    height: 24px;
+    overflow: hidden;
+    position: absolute;
+    right: 30px;
+    top: 9px;
+    margin-left: -2px;
+    cursor: pointer;
+}
+
+.subSearch{
+    margin: 0;
+    float: left;    
+}
+
+#subSearchInput{
+    width: 100%;
+    float: left;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    padding: 5px;
+    padding-right: 26px;
+}
+
+#subSearchFilter{
+    width: 100%;
+    float: left;
+    display: none;
+}
+
+.searchResult{
+    width: 98%;
+    padding: 3px;
+    background-color:#123456;
+}
+
+.imgContainer{
+    display: inline-block;
+    padding: 3px;
+    margin: 3px;
+    text-align: center;
+    overflow: hidden;
+    font-size: small;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    border: 1px solid #666;
+    border-radius: 5px;
+    -webkit-box-shadow: #dadada -1px 0 4px;
+    -webkit-border-radius: 5px;
+    box-shadow: #666 -1px 0 4px;
+    vertical-align: top;
+}
+
+
+.filterContainer{
+    float: left;
+    margin: 2px;
+    padding: 2px;
+    font-size: 14px;
+    
+}
+
+.filterSelect{
+    border-style:none;
+    -webkit-border-top-right-radius: 15px;
+    -webkit-border-bottom-right-radius: 15px;
+    -moz-border-radius-topright: 15px;
+    -moz-border-radius-bottomright: 15px;
+    border-top-right-radius: 15px;
+    margin-top: 2px;
+    width: 100%;
+}
+
+span{    
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    color: #666;
+}
+
+[draggable] {
+  -webkit-user-select: none;
+  user-select: none;
+}
+
+.toggleFilters{
+    margin: 0;
+    padding: 0;
+    background-position: center;
+    background-image: url(../images/down.png);
+    position: absolute;
+    top: 11px;
+    right: 6px;
+    width: 20px;
+    height: 20px;
+    cursor: pointer;
+}
+
+.colors_line {
+    float: left;
+    margin: 4px;
+    margin-right: 0;
+    clear: left;
+}
+
+.custom {
+    opacity: 0;
+    position: absolute;
+    left: -10000px;
+}
+
+.filter_button.button.color {
+    display: inline-block;
+    width: 15px;
+    height: 15px;
+    border: 1px solid #EBEBEB;
+    padding: 0;
+    margin: 0;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.filter_button.button.color:hover {
+  border: 1px solid rgb(128,128,128);
+  cursor: pointer;
+}
+
+input[type="radio"]:checked + .filter_button.button.color {
+  border: 1px solid rgb(255,255,255);
+  box-shadow: 0 0 0px 1px #000;
+  -webkit-box-shadow: 0 0 0px 1px #000;
+}
+
+#allcolor {
+    background: white url('../images/search_app.png') -43px -144px no-repeat;
+}
+
+#colored {
+    background: white url('../images/search_app.png') -43px -244px no-repeat;
+}
+
+#grayed {
+    background: white url('../images/search_app.png') -45px -343px no-repeat;
+}
+
+#black{
+    background-color:#ffffff;
+}
+#blue{
+    background-color:#0000FF;
+}
+#brown{
+    background-color:rgba(139, 82, 16, 1);
+}
+
+#gray{
+    background-color:#999999;
+}
+
+#green{
+    background-color:#00CC00;
+}
+
+#orange{
+    background-color:#FB940B;
+}
+
+#pink{
+    background-color:#FF98BF;
+} 
+
+#purple{
+    background-color:#762CA7;
+}
+
+#red{
+    background-color:#CC0000;
+}
+
+#teal{
+    background-color:#03C0C6;
+}
+
+#white{
+    background-color:#000000;
+}
+
+#yellow{
+    background-color:#FFFF00;
+}
+
+.selectBox-dropdown, .selectBox-options li a { 
+    line-height: 1.3 !important;
+    font-size: 13px;
+}
+
+.pager_button {
+    padding: 3px 5px;
+    font-size: 16px;
+    color: black;
+    display: inline-block;
+}
+
+.pager_button.active {
+    border-radius: 3px;
+    -webkit-border-radius: 3px;
+    background-color: gray;
+    color: white;
+}
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.png
new file mode 100644
index 0000000..1728630
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.thumbnail.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.thumbnail.png
new file mode 100644
index 0000000..1728630
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Audio Planete.wgs/icon.thumbnail.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/down.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/down.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/down.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/down.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/greySquare.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/icon-close.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/popupBack.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/search.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/search.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png
new file mode 100644
index 0000000..efd8ea4
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/search_app.png differ
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/thumbnail_icon.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/thumbnail_icon.png
new file mode 100644
index 0000000..5eedb79
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/thumbnail_icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgUp.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/trgUp.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/up.png b/Sankore-3.1/resources/library/search/Audio Planete.wgs/images/up.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/up.png
copy to Sankore-3.1/resources/library/search/Audio Planete.wgs/images/up.png
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/index.html b/Sankore-3.1/resources/library/search/Audio Planete.wgs/index.html
new file mode 100644
index 0000000..2eb88f9
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Audio Planete.wgs/index.html	
@@ -0,0 +1,253 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Planete Sankore Image Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript">
+            var category = "audio";
+            var thumbnails = false;
+            var minHeight = 177;
+            var minWidth = 150;
+            
+            var currentIndex = 0;
+            var currentTerm = "";
+            var limit = 10;
+            var filtersDisplayed = false; //display or hide filters
+ 
+            function addPaginationLinks(totalResults) {
+                var curPage = currentIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < 8; i++) {
+                    if (i * limit < totalResults) {
+                   
+                    var link = $("<a class='pager_button'></a>").attr('href', 'javascript:gotoPage('+i+');').html(i+1).appendTo(pagesDiv);
+                    if (curPage == i) {
+                        link.addClass('active');
+                    }
+                    }
+                }
+
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragstart", imageDragging, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragenter", imageDragenter, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragleave", imageDragleave, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragover", imageDragover, false);
+                })
+            }
+
+            function searchFail(jqXHR, textStatus, errorThrown) {
+              alert('Impossible to connect to Planete Sankore: ' + textStatus + ' ' + errorThrown);
+            }
+
+            function searchComplete(json) {
+                    // Grab our content div, clear it.
+                    var totalResults = json.totalResults;
+                    var contentDiv = $('#searchResult').empty();
+                    // Loop through our results, printing them to the page.
+                    var results = json.rows;
+                    for (var i = 0; i < results.length; i++) {
+                        // For each result write it's title and image to the screen
+                        var result = results[i];
+                        var imgContainer = $("<div class='imgContainer' draggable='true'>");
+                        var title = document.createElement('div');
+                        var iUrl = $("<input type='hidden'/>");
+                        var iContent = $("<input type='hidden'/>");
+                        var iHeight = $("<input type='hidden'/>");
+                        var iWidth = $("<input type='hidden'/>");
+                        var iTitle = $("<input type='hidden'/>");
+            
+                        // We use titleNoFormatting so that no HTML tags are left in the 
+                        // title
+                        title.innerHTML = result.title;
+                           	var newImg = document.createElement('img');
+
+                        	// There is also a result.file property which has the escaped version
+                            if (thumbnails) {
+        	                   	newImg.src = result.file;
+                            } else {
+        	                   	newImg.src = "./images/thumbnail_icon.png";
+            				}
+                        	var imgWidth = (result.tbWidth > minWidth)?result.tbWidth:minWidth;
+                        	var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+                        	imgContainer.width(imgWidth).height(imgHeight);
+                        	imgContainer.append($(newImg));
+			            iUrl.attr("value", result.file);
+                        iContent.attr("value", result.title);
+     		        iHeight.attr("value", result.height);
+                        iWidth.attr("value", result.width);
+                        iTitle.attr("value",result.title);
+                        imgContainer.append($(title));  
+                        imgContainer.append(iUrl);
+                        imgContainer.append(iContent);
+                        imgContainer.append(iHeight);
+                        imgContainer.append(iWidth);
+                        imgContainer.append(iTitle);
+
+                        // Put our title + image in the content
+                        imgContainer.appendTo(contentDiv);
+
+                    }
+                    // Now add links to additional pages of search results.
+                    addPaginationLinks(totalResults);
+            }
+
+            function imageDragging(e){
+                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+            }
+            
+            function imageDragleave(e){
+                return false;
+            }
+            
+            function imageDragover(e){
+                return false;
+            }
+            
+            function imageDragenter(e){
+                return false;
+            }
+            
+            $(document).ready(function(){
+
+                //variables
+                var mode = false; //search or view mode
+                var hide = false; //hide or no main panel
+    
+                //basic containers and elements       
+                var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+                var disclaimer = $("<div id='disclaimer' class='disclaimer'>Recherche de documents audio sur Planète Sankoré<div>").appendTo(disc_nav_cont);
+                var search = $("<div id='search' class='search'>").appendTo("body");
+				    
+                var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+                var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+    
+                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+    
+                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+                // var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+    
+                //adding filters to the wgt
+                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+                .append($("<option value='0'>Any</option>"))
+                .append($("<option value='1'>Small</option>"))
+                .append($("<option value='2'>Medium</option>"))
+                .append($("<option value='3'>Large</option>"))
+                .append($("<option value='4'>Extra large</option>"));
+                $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
+                
+                //mouse click actions 
+                /*
+                toggleFilters.click(function(){
+                    if(filtersDisplayed){
+                        subSearchFilter.hide();
+                        toggleFilters.css("background-image","url(images/down.png)");
+                        filtersDisplayed = false;
+                    } else {
+                        subSearchFilter.show();
+                        toggleFilters.css("background-image","url(images/up.png)");
+                        filtersDisplayed = true;
+                    }
+                });
+                */
+
+		/*togglePages.click(function(event){
+                    if(mode){
+                        hide = false;
+                        $("#search, #disclaimer").slideDown('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgUp.png)");
+                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+                        });
+                        mode = false;
+                    } else {
+                        hide = true;
+                        $("#search, #disclaimer").slideUp('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgDown.png)");
+                            togglePages.appendTo("body").css("top","0");                            
+                        });
+                        mode = true;
+                    }
+                });*/
+                
+                searchButton.click(function(){
+                    if(!hide){
+                        runSearch(searchInput.val(), 0);
+                        //togglePages.trigger("click");
+                    }
+                });
+                
+                searchInput.keydown(function(event){
+                    if(!hide){
+                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                            runSearch(searchInput.val(), 0);
+                            //togglePages.trigger("click");
+                        }
+                              
+                    }
+                });
+                (
+                $(".imgContainer").live("click",function(){
+		    sankore.sendFileMetadata(createMetaData($(this)));
+                }));
+                
+				/*$(window).resize(function(){
+                    disclaimer.width($("body").width()-20);
+                    search.width($("body").width()-20);
+                    toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
+                })*/
+				
+            });
+            
+            function gotoPage(i) { 
+		runSearch(currentTerm, i);             
+            } 
+
+            // launching the search on planete sankore 
+            function runSearch(term, index) {
+                currentTerm = term;
+                currentIndex = index;
+		var start = index * limit;
+                var url = "http://planete.sankore.org/xwiki/bin/view/Search/Resources?xpage=plain&category=" + category + "&level=&sort=title&dir=ASC&terms=" + escape(term) + "&start=" + start + "&limit=" + limit;
+		$.ajax({
+			url: url,
+  			success: searchComplete,
+  			error: searchFail,
+                        dataType: "json"
+		});
+            }
+ 
+            function createMetaData(parent){
+                var meta = "";
+                //alert($(this).find("input:hidden").eq(0).val());
+                meta = "<metadata><data><key>Type</key><value>Audio</value></data><data><key>Url</key><value>" + 
+                    parent.find("input:hidden").eq(0).val() + 
+                    "</value></data><data><key>Content</key><value>" + 
+                    parent.find("input:hidden").eq(1).val() +
+                    "</value></data><data><key>Height</key><value>n/a</value></data>"+
+                    "<data><key>Width</key><value>n/a</value></data><data><key>Title</key><value>" +
+                    parent.find("input:hidden").eq(4).val() +
+                    "</value></data></metadata>";
+                return meta;
+            }
+        </script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js
new file mode 100644
index 0000000..e67db74
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Audio Planete.wgs/scripts/jquery-1.6.2.min.js	
@@ -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
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/config.xml b/Sankore-3.1/resources/library/search/Flash Planete.wgs/config.xml
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/config.xml
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/config.xml
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Flash Planete.wgs/css/basic.css
new file mode 100644
index 0000000..80b50fb
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Flash Planete.wgs/css/basic.css	
@@ -0,0 +1,315 @@
+html, body{
+    width: 100%;
+    padding: 0;
+    height: auto;
+    background-color: white;
+    margin: 0;
+}
+
+::-webkit-scrollbar {
+    width: 14px;
+    background-color:white;
+}
+
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px; 
+    background-color:lightgray;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:start{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgUp.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:end{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgDown.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+a {
+    text-decoration: underline;
+}
+
+#disc_nav_cont{
+    height: auto;
+    position: fixed;
+    left: 0;
+    bottom: 0;    
+    width: 100%;
+}
+
+.disclaimer{  
+    padding: 5px;
+    text-align: center;
+    background-color: #BBBBBB;    
+    border-top: solid 4px #EEEEEE;
+    border-bottom: none;
+    font-size: 12px;
+}
+
+.resultFooter{    
+    width: 100%;    
+    padding: 3px;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-weight: bold;
+    font-size: x-large;
+    text-align: center;
+    background-color: white;
+}
+
+#searchResult {
+    overflow: hidden;
+    text-align: center;
+    margin-top: 50px;
+    margin-bottom: 85px;
+}
+
+.search{
+    position: fixed;
+    top: 0;
+    left: 0;
+    padding: 5px;
+    background-color: #BBBBBB;
+    border-bottom: solid 4px #EEEEEE;
+}
+
+.search,
+.disclaimer {
+    width: 100%;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchInput{
+    padding: 3px;
+    float: left;
+    width: 100%;
+    border-radius: 3px;
+    border-style: none;
+    height: 22px;
+    line-height: 18px;
+    vertical-align: middle;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchButton{
+    background: url("../images/search_app.png") -38px -38px no-repeat;
+    width: 24px;
+    height: 24px;
+    overflow: hidden;
+    position: absolute;
+    right: 30px;
+    top: 9px;
+    margin-left: -2px;
+    cursor: pointer;
+}
+
+.subSearch{
+    margin: 0;
+    float: left;    
+}
+
+#subSearchInput{
+    width: 100%;
+    float: left;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    padding: 5px;
+    padding-right: 26px;
+}
+
+#subSearchFilter{
+    width: 100%;
+    float: left;
+    display: none;
+}
+
+.searchResult{
+    width: 98%;
+    padding: 3px;
+    background-color:#123456;
+}
+
+.imgContainer{
+    display: inline-block;
+    padding: 3px;
+    margin: 3px;
+    text-align: center;
+    overflow: hidden;
+    font-size: small;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    border: 1px solid #666;
+    border-radius: 5px;
+    -webkit-box-shadow: #dadada -1px 0 4px;
+    -webkit-border-radius: 5px;
+    box-shadow: #666 -1px 0 4px;
+    vertical-align: top;
+}
+
+
+.filterContainer{
+    float: left;
+    margin: 2px;
+    padding: 2px;
+    font-size: 14px;
+    
+}
+
+.filterSelect{
+    border-style:none;
+    -webkit-border-top-right-radius: 15px;
+    -webkit-border-bottom-right-radius: 15px;
+    -moz-border-radius-topright: 15px;
+    -moz-border-radius-bottomright: 15px;
+    border-top-right-radius: 15px;
+    margin-top: 2px;
+    width: 100%;
+}
+
+span{    
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    color: #666;
+}
+
+[draggable] {
+  -webkit-user-select: none;
+  user-select: none;
+}
+
+.toggleFilters{
+    margin: 0;
+    padding: 0;
+    background-position: center;
+    background-image: url(../images/down.png);
+    position: absolute;
+    top: 11px;
+    right: 6px;
+    width: 20px;
+    height: 20px;
+    cursor: pointer;
+}
+
+.colors_line {
+    float: left;
+    margin: 4px;
+    margin-right: 0;
+    clear: left;
+}
+
+.custom {
+    opacity: 0;
+    position: absolute;
+    left: -10000px;
+}
+
+.filter_button.button.color {
+    display: inline-block;
+    width: 15px;
+    height: 15px;
+    border: 1px solid #EBEBEB;
+    padding: 0;
+    margin: 0;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.filter_button.button.color:hover {
+  border: 1px solid rgb(128,128,128);
+  cursor: pointer;
+}
+
+input[type="radio"]:checked + .filter_button.button.color {
+  border: 1px solid rgb(255,255,255);
+  box-shadow: 0 0 0px 1px #000;
+  -webkit-box-shadow: 0 0 0px 1px #000;
+}
+
+#allcolor {
+    background: white url('../images/search_app.png') -43px -144px no-repeat;
+}
+
+#colored {
+    background: white url('../images/search_app.png') -43px -244px no-repeat;
+}
+
+#grayed {
+    background: white url('../images/search_app.png') -45px -343px no-repeat;
+}
+
+#black{
+    background-color:#ffffff;
+}
+#blue{
+    background-color:#0000FF;
+}
+#brown{
+    background-color:rgba(139, 82, 16, 1);
+}
+
+#gray{
+    background-color:#999999;
+}
+
+#green{
+    background-color:#00CC00;
+}
+
+#orange{
+    background-color:#FB940B;
+}
+
+#pink{
+    background-color:#FF98BF;
+} 
+
+#purple{
+    background-color:#762CA7;
+}
+
+#red{
+    background-color:#CC0000;
+}
+
+#teal{
+    background-color:#03C0C6;
+}
+
+#white{
+    background-color:#000000;
+}
+
+#yellow{
+    background-color:#FFFF00;
+}
+
+.selectBox-dropdown, .selectBox-options li a { 
+    line-height: 1.3 !important;
+    font-size: 13px;
+}
+
+.pager_button {
+    padding: 3px 5px;
+    font-size: 16px;
+    color: black;
+    display: inline-block;
+}
+
+.pager_button.active {
+    border-radius: 3px;
+    -webkit-border-radius: 3px;
+    background-color: gray;
+    color: white;
+}
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.png
new file mode 100644
index 0000000..1f06b0e
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.thumbnail.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.thumbnail.png
new file mode 100644
index 0000000..1f06b0e
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Flash Planete.wgs/icon.thumbnail.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/down.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/down.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/down.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/down.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/greySquare.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/icon-close.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/popupBack.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/search.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/search.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/search.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/search.png
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/search_app.png
new file mode 100644
index 0000000..efd8ea4
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/search_app.png differ
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/thumbnail_icon.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/thumbnail_icon.png
new file mode 100644
index 0000000..1590c3e
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/thumbnail_icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/trgUp.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/trgUp.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/up.png b/Sankore-3.1/resources/library/search/Flash Planete.wgs/images/up.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/up.png
copy to Sankore-3.1/resources/library/search/Flash Planete.wgs/images/up.png
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/index.html b/Sankore-3.1/resources/library/search/Flash Planete.wgs/index.html
new file mode 100644
index 0000000..d0a18af
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Flash Planete.wgs/index.html	
@@ -0,0 +1,253 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Planete Sankore Image Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript">
+            var category = "interactive";
+            var thumbnails = false;
+            var minHeight = 177;
+            var minWidth = 150;
+            
+            var currentIndex = 0;
+            var currentTerm = "";
+            var limit = 10;
+            var filtersDisplayed = false; //display or hide filters
+ 
+            function addPaginationLinks(totalResults) {
+                var curPage = currentIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < 8; i++) {
+                    if (i * limit < totalResults) {
+                   
+                    var link = $("<a class='pager_button'></a>").attr('href', 'javascript:gotoPage('+i+');').html(i+1).appendTo(pagesDiv);
+                    if (curPage == i) {
+                        link.addClass('active');
+                    }
+                    }
+                }
+
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragstart", imageDragging, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragenter", imageDragenter, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragleave", imageDragleave, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragover", imageDragover, false);
+                })
+            }
+
+            function searchFail(jqXHR, textStatus, errorThrown) {
+              alert('Impossible to connect to Planete Sankore: ' + textStatus + ' ' + errorThrown);
+            }
+
+            function searchComplete(json) {
+                    // Grab our content div, clear it.
+                    var totalResults = json.totalResults;
+                    var contentDiv = $('#searchResult').empty();
+                    // Loop through our results, printing them to the page.
+                    var results = json.rows;
+                    for (var i = 0; i < results.length; i++) {
+                        // For each result write it's title and image to the screen
+                        var result = results[i];
+                        var imgContainer = $("<div class='imgContainer' draggable='true'>");
+                        var title = document.createElement('div');
+                        var iUrl = $("<input type='hidden'/>");
+                        var iContent = $("<input type='hidden'/>");
+                        var iHeight = $("<input type='hidden'/>");
+                        var iWidth = $("<input type='hidden'/>");
+                        var iTitle = $("<input type='hidden'/>");
+            
+                        // We use titleNoFormatting so that no HTML tags are left in the 
+                        // title
+                        title.innerHTML = result.title;
+                           	var newImg = document.createElement('img');
+
+                        	// There is also a result.file property which has the escaped version
+                            if (thumbnails) {
+        	                   	newImg.src = result.file;
+                            } else {
+        	                   	newImg.src = "./images/thumbnail_icon.png";
+            				}
+                        	var imgWidth = (result.tbWidth > minWidth)?result.tbWidth:minWidth;
+                        	var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+                        	imgContainer.width(imgWidth).height(imgHeight);
+                        	imgContainer.append($(newImg));
+			            iUrl.attr("value", result.file);
+                        iContent.attr("value", result.title);
+     		        iHeight.attr("value", result.height);
+                        iWidth.attr("value", result.width);
+                        iTitle.attr("value",result.title);
+                        imgContainer.append($(title));  
+                        imgContainer.append(iUrl);
+                        imgContainer.append(iContent);
+                        imgContainer.append(iHeight);
+                        imgContainer.append(iWidth);
+                        imgContainer.append(iTitle);
+
+                        // Put our title + image in the content
+                        imgContainer.appendTo(contentDiv);
+
+                    }
+                    // Now add links to additional pages of search results.
+                    addPaginationLinks(totalResults);
+            }
+
+            function imageDragging(e){
+                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+                // alert($(this).find("input:hidden").eq(0).val());
+            }
+            
+            function imageDragleave(e){
+                return false;
+            }
+            
+            function imageDragover(e){
+                return false;
+            }
+            
+            function imageDragenter(e){
+                return false;
+            }
+            
+            $(document).ready(function(){
+
+                //variables
+                var mode = false; //search or view mode
+                var hide = false; //hide or no main panel
+    
+                //basic containers and elements       
+                var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+                var disclaimer = $("<div id='disclaimer' class='disclaimer'>Recherche de documents flash sur Planète Sankoré<div>").appendTo(disc_nav_cont);
+                var search = $("<div id='search' class='search'>").appendTo("body");
+				    
+                var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+                var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+    
+                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+    
+                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+                // var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+    
+                //adding filters to the wgt
+                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+                .append($("<option value='0'>Any</option>"))
+                .append($("<option value='1'>Small</option>"))
+                .append($("<option value='2'>Medium</option>"))
+                .append($("<option value='3'>Large</option>"))
+                .append($("<option value='4'>Extra large</option>"));
+                $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
+                
+                //mouse click actions 
+                /*
+                toggleFilters.click(function(){
+                    if(filtersDisplayed){
+                        subSearchFilter.hide();
+                        toggleFilters.css("background-image","url(images/down.png)");
+                        filtersDisplayed = false;
+                    } else {
+                        subSearchFilter.show();
+                        toggleFilters.css("background-image","url(images/up.png)");
+                        filtersDisplayed = true;
+                    }
+                });
+                */
+
+		/*togglePages.click(function(event){
+                    if(mode){
+                        hide = false;
+                        $("#search, #disclaimer").slideDown('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgUp.png)");
+                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+                        });
+                        mode = false;
+                    } else {
+                        hide = true;
+                        $("#search, #disclaimer").slideUp('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgDown.png)");
+                            togglePages.appendTo("body").css("top","0");                            
+                        });
+                        mode = true;
+                    }
+                });*/
+                
+                searchButton.click(function(){
+                    if(!hide){
+                        runSearch(searchInput.val(), 0);
+                        //togglePages.trigger("click");
+                    }
+                });
+                
+                searchInput.keydown(function(event){
+                    if(!hide){
+                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                            runSearch(searchInput.val(), 0);
+                            //togglePages.trigger("click");
+                        }
+                              
+                    }
+                });
+                (
+                $(".imgContainer").live("click",function(){
+		    sankore.sendFileMetadata(createMetaData($(this)));
+                }));
+                
+				/*$(window).resize(function(){
+                    disclaimer.width($("body").width()-20);
+                    search.width($("body").width()-20);
+                    toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
+                })*/
+				
+            });
+            
+            function gotoPage(i) { 
+		runSearch(currentTerm, i);             
+            } 
+
+            // launching the search on planete sankore 
+            function runSearch(term, index) {
+                currentTerm = term;
+                currentIndex = index;
+		var start = index * limit;
+                var url = "http://planete.sankore.org/xwiki/bin/view/Search/Resources?xpage=plain&category=" + category + "&level=&sort=title&dir=ASC&terms=" + escape(term) + "&start=" + start + "&limit=" + limit;
+		$.ajax({
+			url: url,
+  			success: searchComplete,
+  			error: searchFail,
+                        dataType: "json"
+		});
+            }
+ 
+            function createMetaData(parent){
+                var meta = "";
+                meta = "<metadata><data><key>Type</key><value>Flash</value></data><data><key>Url</key><value>" + 
+                    parent.find("input:hidden").eq(0).val() + 
+                    "</value></data><data><key>Content</key><value>" + 
+                    parent.find("input:hidden").eq(1).val() +
+                    "</value></data><data><key>Height</key><value>n/a</value></data>"+
+                    "<data><key>Width</key><value>n/a</value></data><data><key>Title</key><value>" +
+                    parent.find("input:hidden").eq(4).val() +
+                    "</value></data></metadata>";
+                return meta;
+            }
+        </script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Flash Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Flash Planete.wgs/scripts/jquery-1.6.2.min.js
new file mode 100644
index 0000000..e67db74
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Flash Planete.wgs/scripts/jquery-1.6.2.min.js	
@@ -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
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/config.xml b/Sankore-3.1/resources/library/search/Google images.wgs/config.xml
index d7cc14e..26cc8c6 100644
--- a/Sankore-3.1/resources/library/search/Google images.wgs/config.xml	
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/config.xml	
@@ -10,7 +10,7 @@
   		<name>Choisir</name>
 		<author href="http://www.getuniboard.com"
 	            email="info at mnemis.com">Mnemis SA</author>
-		<description>Choisir widget</description> 
+		<description>Google Image Search</description> 
 
  		<content src="index.html"/> 
 </widget>
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css
index 7581864..9e5abdc 100644
--- a/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css	
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/css/basic.css	
@@ -1,185 +1,318 @@
-body{
-    width: 100%;
-    padding: 0;
-    height: auto;
-    background-color: white;
-    margin: 0;
-}
-
-.disclaimer{
-    width: 90%;
-    height: 50px;
-    position: absolute;
-    left: 0;
-    bottom: 0;
-    margin-left: 1px;
-    margin-right: 1px;
-    margin-bottom: 0px;
-    padding: 5px;
-    text-align: center;
-    background-color: #BBBBBB;
-    -webkit-border-top-left-radius: 15px;
-    -webkit-border-top-right-radius: 15px;
-    border-top-left-radius: 15px;
-    border-top-right-radius: 15px;
-    border: solid 4px #EEEEEE;
-    border-bottom: none;
-    z-index: 10;
-}
-
-.search{
-    width: 90%;    
-    position: absolute;
-    top: 0;
-    left: 0;
-    margin-left: 1px;
-    margin-right: 1px;
-    margin-top: 0px;
-    padding: 5px;
-    background-color: #BBBBBB;
-    -webkit-border-bottom-left-radius: 15px;
-    -webkit-border-bottom-right-radius: 15px;
-    border-bottom-left-radius: 15px;
-    border-bottom-right-radius: 15px;
-    border: solid 4px #EEEEEE;
-    border-top: none;
-    z-index: 101;
-}
-
-.togglePages{
-    padding: 0;
-    position: absolute;
-    bottom: -14px;
-    left: 43%;
-    width: 15%;
-    height: 10px;
-    background-color: #666;
-    -webkit-border-bottom-left-radius: 5px;
-    -webkit-border-bottom-right-radius: 5px;
-    border-bottom-left-radius: 5px;
-    border-bottom-right-radius: 5px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    box-shadow: #dadada -1px 0 4px;
-    cursor: pointer;
-	z-index: 100;
-}
-
-.toggleIcon{
-    width: 14px;
-    height: 10px;
-    background-image: url(../images/trgUp.png);
-}
-
-.searchInput{
-    margin: 10px 5px 10px 5px;
-    padding: 2px;
-    padding-left: 8px;
-    padding-right:8px;
-    float: left;
-    width: 60%;
-    border-radius: 15px;
-    border-style: none;
-}
-
-.searchButton{
-    width: 32px;
-    height: 32px;
-    margin: 5px 5px;
-    background-image: url(../images/search.png);
-    float: left;
-    cursor: pointer;
-}
-
-.subSearch{
-    margin: 0;
-    float: left;    
-}
-
-#subSearchInput{
-    width: 100%;
-    float: left;
-}
-
-#subSearchFilter{
-    width: 100%;
-    float: left;
-    display: none;
-}
-
-.searchResult{
-    width: 98%;
-    padding: 3px;
-    background-color:#123456;
-}
-
-.imgContainer{
-    float: left;
-    padding: 3px;
-    margin: 3px;
-    text-align: center;
-    overflow: hidden;
-    font-size: small;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    border: 1px solid #666;
-    border-radius: 5px;
-    -webkit-box-shadow: #dadada -1px 0 4px;
-    -webkit-border-radius: 5px;
-    box-shadow: #666 -1px 0 4px;
-}
-
-.resultFooter{
-    float: left;
-    margin: 5px;
-    padding: 3px;
-    width: 100%;
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    font-weight: bold;
-    font-size: x-large;
-}
-
-#branding{
-    position: absolute;
-    top: 0;
-    left: 10px;
-    z-index: 2;
-}
-
-.filterContainer{
-    float: left;
-    margin: 2px;
-    padding: 2px;
-    font-size: 14px;
-    
-}
-
-.filterSelect{
-    border-style:none;
-    -webkit-border-top-right-radius: 15px;
-    -webkit-border-bottom-right-radius: 15px;
-    -moz-border-radius-topright: 15px;
-    -moz-border-radius-bottomright: 15px;
-    border-top-right-radius: 15px;
-}
-
-span{    
-    font-family: Verdana,Arial,Helvetica,sans-serif;
-    color: #666;
-}
-
-[draggable] {
-  -webkit-user-select: none;
-  user-select: none;
-}
-
-.toggleFilters{
-    margin: 0;
-    padding: 0;
-    background-position: center;
-    background-image: url(../images/down.png);
-    position: absolute;
-    bottom: 2px;
-    right: 2px;
-    width: 20px;
-    height: 20px;
-    cursor: pointer;
-}
\ No newline at end of file
+html, body{
+    width: 100%;
+    padding: 0;
+    height: auto;
+    background-color: white;
+    margin: 0;
+}
+
+::-webkit-scrollbar {
+    width: 14px;
+    background-color:white;
+}
+
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px; 
+    background-color:lightgray;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:start{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgUp.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:end{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgDown.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+a {
+    text-decoration: underline;    
+}
+
+#disc_nav_cont{
+    height: auto;
+    position: fixed;
+    left: 0;
+    bottom: 0;    
+    width: 100%;
+}
+
+.disclaimer{  
+    padding: 5px;
+    text-align: center;
+    background-color: #BBBBBB;    
+    border-top: solid 4px #EEEEEE;
+    border-bottom: none;
+    font-size: 12px;
+}
+
+.resultFooter{    
+    width: 100%;    
+    padding: 3px;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-weight: bold;
+    font-size: x-large;
+    text-align: center;
+    background-color: white;
+}
+
+#searchResult {
+    overflow: hidden;
+    text-align: center;
+    margin-top: 50px;
+    margin-bottom: 85px;
+}
+
+.search{   
+    position: fixed;
+    top: 0;
+    left: 0;
+    padding: 5px;
+    background-color: #BBBBBB;
+    border-bottom: solid 4px #EEEEEE;
+}
+
+.search,
+.disclaimer {
+    width: 100%;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.toggleIcon{
+    display: inline-block;
+    width: 14px;
+    height: 14px;
+    background: url(../images/trgUp.png) 50% no-repeat;
+    
+}
+
+.searchInput{
+    padding: 3px;
+    float: left;
+    width: 100%;
+    border-radius: 3px;
+    border-style: none;
+    height: 22px;
+    line-height: 18px;
+    vertical-align: middle;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchButton{
+    background: url("../images/search_app.png") -38px -38px no-repeat;
+    width: 24px;
+    height: 24px;
+    overflow: hidden;
+    position: absolute;
+    right: 30px;
+    top: 9px;
+    margin-left: -2px;
+    cursor: pointer;
+}
+
+.subSearch{
+    margin: 0;
+    float: left;    
+}
+
+#subSearchInput{
+    width: 100%;
+    float: left;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    padding: 5px;
+    padding-right: 26px;
+}
+
+#subSearchFilter{
+    width: 100%;
+    float: left;
+    display: none;
+}
+
+.searchResult{
+    width: 98%;
+    padding: 3px;
+
+    background-color:#123456;
+}
+
+.imgContainer{
+    display: inline-block;
+    padding: 3px;
+    margin: 3px;
+    text-align: center;
+    overflow: hidden;
+    font-size: small;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    vertical-align: top;
+}
+
+.filterContainer{
+    float: left;
+    margin: 2px;
+    padding: 2px;
+    font-size: 14px;
+    
+}
+
+.filterSelect{
+    border-style:none;
+    -webkit-border-top-right-radius: 15px;
+    -webkit-border-bottom-right-radius: 15px;
+    -moz-border-radius-topright: 15px;
+    -moz-border-radius-bottomright: 15px;
+    border-top-right-radius: 15px;
+    margin-top: 2px;
+    width: 100%;
+}
+
+span{    
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    color: #666;
+}
+
+[draggable] {
+  -webkit-user-select: none;
+  user-select: none;
+}
+
+.toggleFilters{
+    margin: 0;
+    padding: 0;
+    background-position: center;
+    background-image: url(../images/down.png);
+    position: absolute;
+    top: 11px;
+    right: 6px;
+    width: 20px;
+    height: 20px;
+    cursor: pointer;
+}
+
+.colors_line {
+    float: left;
+    margin: 4px;
+    margin-right: 0;
+    clear: left;
+}
+
+.custom {
+    opacity: 0;
+    position: absolute;
+    left: -10000px;
+}
+
+.filter_button.button.color {
+    display: inline-block;
+    width: 15px;
+    height: 15px;
+    border: 1px solid #EBEBEB;
+    padding: 0;
+    margin: 0;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.filter_button.button.color:hover {
+  border: 1px solid rgb(128,128,128);
+  cursor: pointer;
+}
+
+input[type="radio"]:checked + .filter_button.button.color {
+  border: 1px solid rgb(255,255,255);
+  box-shadow: 0 0 0px 1px #000;
+  -webkit-box-shadow: 0 0 0px 1px #000;
+}
+
+#allcolor {
+    background: white url('../images/search_app.png') -43px -144px no-repeat;
+}
+
+#colored {
+    background: white url('../images/search_app.png') -43px -244px no-repeat;
+}
+
+#grayed {
+    background: white url('../images/search_app.png') -45px -343px no-repeat;
+}
+
+#black{
+    background-color:#ffffff;
+}
+#blue{
+    background-color:#0000FF;
+}
+#brown{
+    background-color:rgba(139, 82, 16, 1);
+}
+
+#gray{
+    background-color:#999999;
+}
+
+#green{
+    background-color:#00CC00;
+}
+
+#orange{
+    background-color:#FB940B;
+}
+
+#pink{
+    background-color:#FF98BF;
+} 
+
+#purple{
+    background-color:#762CA7;
+}
+
+#red{
+    background-color:#CC0000;
+}
+
+#teal{
+    background-color:#03C0C6;
+}
+
+#white{
+    background-color:#000000;
+}
+
+#yellow{
+    background-color:#FFFF00;
+}
+
+.selectBox-dropdown, .selectBox-options li a { 
+    line-height: 1.3 !important;
+    font-size: 13px;
+}
+
+.pager_button {
+    padding: 3px 5px;
+    font-size: 16px;
+    color: black;
+    display: inline-block;
+}
+
+.pager_button.active {
+    border-radius: 3px;
+    -webkit-border-radius: 3px;
+    background-color: gray;
+    color: white;
+}
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Google images.wgs/images/search_app.png
new file mode 100644
index 0000000..efd8ea4
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Google images.wgs/images/search_app.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/index.html b/Sankore-3.1/resources/library/search/Google images.wgs/index.html
index 9e986e8..b1c7647 100644
--- a/Sankore-3.1/resources/library/search/Google images.wgs/index.html	
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/index.html	
@@ -1,451 +1,470 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-    <head>
-        <title>Google Image Search</title>
-        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
-        <script type="text/javascript" src="http://www.google.com/uds"></script>
-        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
-        <script type="text/javascript">
-
-            //begin google API
-            google.load("search","1");
-
-            var imageSearch;
-            var minHeight = 180;
-            var minWidht = 150;
-            var filtersDisplayed = false; //display or hide filters
-            
-            function addPaginationLinks() {
-      
-                // To paginate search results, use the cursor function.
-                var cursor = imageSearch.cursor;
-                var curPage = cursor.currentPageIndex; // check what page the app is on
-                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
-                for (var i = 0; i < cursor.pages.length; i++) {
-                    var page = cursor.pages[i];
-                    if (curPage == i) { 
-
-                        // If we are on the current page, then don't make a link.
-                        var label = document.createTextNode(' ' + page.label + ' ');
-                        pagesDiv.append($(label));
-                    } else {
-
-                        // Create links to other pages using gotoPage() on the searcher.
-                        var link = document.createElement('a');
-                        link.href = 'javascript:imageSearch.gotoPage('+i+');';
-                        link.innerHTML = page.label;
-                        link.style.marginRight = '2px';
-                        pagesDiv.append($(link));
-                    }
-                }
-
-                pagesDiv.appendTo($('#searchResult'));
-                
-                $(".imgContainer").each(function(){
-                    this.addEventListener("dragstart", imageDragging, false);
-                })
-                
-                $(".imgContainer").each(function(){
-                    this.addEventListener("dragenter", imageDragenter, false);
-                })
-                
-                $(".imgContainer").each(function(){
-                    this.addEventListener("dragleave", imageDragleave, false);
-                })
-                
-                $(".imgContainer").each(function(){
-                    this.addEventListener("dragover", imageDragover, false);
-                })
-            }
-
-            function searchComplete() {
-
-                // Check that we got results
-                if (imageSearch.results && imageSearch.results.length > 0) {
-
-                    // Grab our content div, clear it.
-                    var contentDiv = $('#searchResult').empty();
-
-                    // Loop through our results, printing them to the page.
-                    var results = imageSearch.results;
-                    for (var i = 0; i < results.length; i++) {
-                        // For each result write it's title and image to the screen
-                        var result = results[i];
-                        var imgContainer = $("<div class='imgContainer' draggable='true'>");
-                        var title = document.createElement('div');
-                        var iUrl = $("<input type='hidden'/>");
-                        var iContent = $("<input type='hidden'/>");
-                        var iHeight = $("<input type='hidden'/>");
-                        var iWidth = $("<input type='hidden'/>");
-                        var iTitle = $("<input type='hidden'/>");
-            
-                        // We use titleNoFormatting so that no HTML tags are left in the 
-                        // title
-                        title.innerHTML = result.title;
-                        var newImg = document.createElement('img');
-
-                        // There is also a result.url property which has the escaped version
-                        newImg.src = result.tbUrl;
-                        iUrl.attr("value", result.url);
-                        iContent.attr("value", result.contentNoFormatting);
-                        iHeight.attr("value", result.height);
-                        iWidth.attr("value", result.width);
-                        iTitle.attr("value",result.titleNoFormatting);
-                        var imgWidth = (result.tbWidth > minWidht)?result.tbWidth:minWidht;
-                        var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
-                        imgContainer.width(imgWidth).height(imgHeight);
-                        imgContainer.append($(newImg));
-                        imgContainer.append($(title));  
-                        imgContainer.append(iUrl);
-                        imgContainer.append(iContent);
-                        imgContainer.append(iHeight);
-                        imgContainer.append(iWidth);
-                        imgContainer.append(iTitle);
-
-                        // Put our title + image in the content
-                        imgContainer.appendTo(contentDiv);
-                    }
-
-                    // Now add links to additional pages of search results.
-                    addPaginationLinks(imageSearch);
-                }
-            }
-
-            function OnLoad() {
-      
-                // Create an Image Search instance.
-                imageSearch = new google.search.ImageSearch();
-
-                // Set searchComplete as the callback function when a search is 
-                // complete.  The imageSearch object will have results in it.
-                imageSearch.setSearchCompleteCallback(this, searchComplete, null);
-                
-                imageSearch.setResultSetSize(8);
-                //imageSearch.setQueryAddition("Subaru STI");
-                // Find me a beautiful car.
-                //imageSearch.execute("Sankore");
-        
-                // Include the required Google branding
-                google.search.Search.getBranding('branding');
-            }
-            google.setOnLoadCallback(OnLoad);
-            //end of Google API
-            
-            //No google API below            
-            
-            function imageDragging(e){
-                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
-                //alert($(this).find("input:hidden").val());
-            }
-            
-            function imageDragleave(e){
-                return false;
-            }
-            
-            function imageDragover(e){
-                return false;
-            }
-            
-            function imageDragenter(e){
-                return false;
-            }
-            
-            $(document).ready(function(){
-
-                //variables
-                var mode = false; //search or view mode
-                var hide = false; //hide or no main panel
-    
-                //basic containers and elements    
-                var disclaimer = $("<div id='disclaimer' class='disclaimer'>Disclaimer<div>").appendTo("body");    
-                var search = $("<div id='search' class='search'>").appendTo("body");
-				
-				disclaimer.width($("body").width()-20);
-                search.width($("body").width()-20);
-    
-                var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
-                var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages).css("margin-left",(togglePages.width()/2 - 7));
-    
-                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
-                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
-    
-                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
-                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
-                var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
-    
-                //adding filters to the wgt
-                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
-                .append($("<option value='0'>Any</option>"))
-                .append($("<option value='1'>Small</option>"))
-                .append($("<option value='2'>Medium</option>"))
-                .append($("<option value='3'>Large</option>"))
-                .append($("<option value='4'>Extra large</option>"));
-                $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
-                
-                selectFilter = $("<select id='colorizFilter' class='filterSelect'>")
-                .append($("<option value='0'>Any</option>"))
-                .append($("<option value='1'>Grayscale</option>"))
-                .append($("<option value='2'>Color</option>"));
-                $("<div class='filterContainer'>").append("<span>Colorization:</span>").append(selectFilter).appendTo(subSearchFilter);
-                 
-                selectFilter = $("<select id='colorFilter' class='filterSelect'>")
-                .append($("<option value='0'>Any</option>"))
-                .append($("<option value='1'>Black</option>"))
-                .append($("<option value='2'>Blue</option>"))
-                .append($("<option value='3'>Brown</option>"))
-                .append($("<option value='4'>Gray</option>"))
-                .append($("<option value='5'>Green</option>"))
-                .append($("<option value='6'>Orange</option>"))
-                .append($("<option value='7'>Pink</option>"))
-                .append($("<option value='8'>Purple</option>"))
-                .append($("<option value='9'>Red</option>"))
-                .append($("<option value='10'>Teal</option>"))
-                .append($("<option value='11'>White</option>"))
-                .append($("<option value='12'>Yellow</option>"));
-                $("<div class='filterContainer'>").append("<span>Main color:</span>").append(selectFilter).appendTo(subSearchFilter);
-                 
-                selectFilter = $("<select id='fileTypeFilter' class='filterSelect'>")
-                .append($("<option value='0'>Any</option>"))
-                .append($("<option value='1'>*.JPG</option>"))
-                .append($("<option value='2'>*.PNG</option>"))
-                .append($("<option value='3'>*.GIF</option>"))
-                .append($("<option value='4'>*.BMP</option>"));
-                $("<div class='filterContainer'>").append("<span>File type:</span>").append(selectFilter).appendTo(subSearchFilter);
-                
-                selectFilter = $("<select id='typeFilter' class='filterSelect'>")
-                .append($("<option value='0'>Any</option>"))
-                .append($("<option value='1'>Faces</option>"))
-                .append($("<option value='2'>Photo</option>"))
-                .append($("<option value='3'>Clipart</option>"))
-                .append($("<option value='4'>Lineart</option>"));
-                $("<div class='filterContainer'>").append("<span>Image type:</span>").append(selectFilter).appendTo(subSearchFilter);
-                
-                selectFilter = $("<select id='rightsFilter' class='filterSelect'>")
-                .append($("<option value='0'>Any</option>"))
-                .append($("<option value='1'>Reuse</option>"))
-                .append($("<option value='2'>Comercial reuse</option>"))
-                .append($("<option value='3'>Modification</option>"))
-                .append($("<option value='4'>Comercial modification</option>"));
-                $("<div class='filterContainer'>").append("<span>Image type:</span>").append(selectFilter).appendTo(subSearchFilter);
-                
-                //mouse click actions
-                toggleFilters.click(function(){
-                    if(filtersDisplayed){
-                        subSearchFilter.hide();
-                        toggleFilters.css("background-image","url(images/down.png)");
-                        filtersDisplayed = false;
-                    } else {
-                        subSearchFilter.show();
-                        toggleFilters.css("background-image","url(images/up.png)");
-                        filtersDisplayed = true;
-                    }
-                });
-                
-                togglePages.click(function(event){
-                    if(mode){
-                        hide = false;
-                        $("#search, #disclaimer").slideDown('slow', function(){
-                            toggleIcon.css("background-image","url(images/trgUp.png)");
-                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
-                        });
-                        mode = false;
-                    } else {
-                        hide = true;
-                        $("#search, #disclaimer").slideUp('slow', function(){
-                            toggleIcon.css("background-image","url(images/trgDown.png)");
-                            togglePages.appendTo("body").css("top","0");                            
-                        });
-                        mode = true;
-                    }
-                });
-                
-                searchButton.click(function(){
-                    if(!hide){
-                        checkFilters(imageSearch).execute(searchInput.val());
-                        togglePages.trigger("click");
-                    }
-                });
-                
-                searchInput.keydown(function(event){
-                    if(!hide){
-                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
-                            checkFilters(imageSearch).execute(searchInput.val());
-                            togglePages.trigger("click");
-                        }
-                              
-                    }
-                });
-                (
-                $(".imgContainer").live("click",function(){
-                    //alert(createMetaData($(this)));
-					sankore.sendFileMetadata(createMetaData($(this)));
-                }));
-                
-                //checking filters
-                function checkFilters(imgSearch){
-                    var value = $("#sizeFilter option:selected").val();
-                    switch(value){
-                        case "0":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,null);
-                            break;
-                        case "1":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_SMALL);
-                            break;
-                        case "2":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_MEDIUM);
-                            break;
-                        case "3":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_LARGE);
-                            break;
-                        case "4":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_EXTRA_LARGE);
-                            break;
-                    }
-                    
-                    value = $("#colorizFilter option:selected").val();
-                    switch(value){
-                        case "0":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,null);
-                            break;
-                        case "1":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,google.search.ImageSearch.COLORIZATION_GRAYSCALE);
-                            break;
-                        case "2":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,google.search.ImageSearch.COLORIZATION_COLOR);
-                            break;
-                    }
-                    
-                    value = $("#colorFilter option:selected").val();
-                    switch(value){
-                        case "0":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,null);
-                            break;
-                        case "1":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_BLACK);
-                            break;
-                        case "2":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_BLUE);
-                            break;
-                        case "3":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_BROWN);
-                            break;
-                        case "4":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_GRAY);
-                            break;
-                        case "5":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_GREEN);
-                            break;
-                        case "6":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_ORANGE);
-                            break;
-                        case "7":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_PINK);
-                            break;
-                        case "8":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_PURPLE);
-                            break;
-                        case "9":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_RED);
-                            break;
-                        case "10":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_TEAL);
-                            break;
-                        case "11":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_WHITE);
-                            break;
-                        case "12":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_YELLOW);
-                            break;
-                    }
-                    
-                    value = $("#fileTypeFilter option:selected").val();
-                    switch(value){
-                        case "0":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,null);
-                            break;
-                        case "1":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_JPG);
-                            break;
-                        case "2":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_PNG);
-                            break;
-                        case "3":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_GIF);
-                            break;
-                        case "4":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_BMP);
-                            break;                        
-                    }
-                    
-                    value = $("#typeFilter option:selected").val();
-                    switch(value){
-                        case "0":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,null);
-                            break;
-                        case "1":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_FACES);
-                            break;
-                        case "2":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_PHOTO);
-                            break;
-                        case "3":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_CLIPART);
-                            break;
-                        case "4":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_LINEART);
-                            break;                        
-                    }
-                    
-                    value = $("#rightsFilter option:selected").val();
-                    switch(value){
-                        case "0":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,null);
-                            break;
-                        case "1":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_REUSE);
-                            break;
-                        case "2":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_COMERCIAL_REUSE);
-                            break;
-                        case "3":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_MODIFICATION);
-                            break;
-                        case "4":
-                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_COMMERCIAL_MODIFICATION);
-                            break;                        
-                    }
-                    return imgSearch;
-                }
-                
-				$(window).resize(function(){
-                    disclaimer.width($("body").width()-20);
-                    search.width($("body").width()-20);
-                    toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
-                })
-				
-            });
-            
-            function createMetaData(parent){
-                var meta = "";
-                //alert($(this).find("input:hidden").eq(0).val());
-                meta = "<metadata><data><key>Type</key><value>Image</value></data><data><key>Url</key><value>" + 
-                    parent.find("input:hidden").eq(0).val() + 
-                    "</value></data><data><key>Content</key><value>" + 
-                    parent.find("input:hidden").eq(1).val() +
-                    "</value></data><data><key>Height</key><value>" + 
-                    parent.find("input:hidden").eq(2).val() +
-                    "</value></data><data><key>Width</key><value>" +
-                    parent.find("input:hidden").eq(3).val() +
-                    "</value></data><data><key>Title</key><value>" +
-                    parent.find("input:hidden").eq(4).val() +
-                    "</value></data></metadata>";
-                return meta;
-            }
-        </script>
-
-    </head>
-    <body style="font-family: Arial;border: 0 none;">
-        <div id="branding"  style="float: left;"></div><br />
-        <div id="searchResult"></div>
-    </body>
-</html>
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Google Image Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="locales/locales.js"></script>
+        <script type="text/javascript" src="http://www.google.com/uds"></script>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript" src="select/jquery.selectBox.js"></script>
+        <link type="text/css" rel="stylesheet" href="select/jquery.selectBox.css" />
+        <script type="text/javascript">
+            //begin google API
+            google.load("search","1");
+
+            var imageSearch;
+            var minHeight = 180;
+            var minWidht = 150;
+            var filtersDisplayed = false; //display or hide filters
+            
+            function addPaginationLinks() {
+      
+                // To paginate search results, use the cursor function.
+                var cursor = imageSearch.cursor;
+                var curPage = cursor.currentPageIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < cursor.pages.length; i++) {
+                    var page = cursor.pages[i];
+
+                    var link = $("<a class='pager_button'></a>").attr('href', 'javascript:imageSearch.gotoPage('+i+');').html(page.label).appendTo(pagesDiv);
+                    if (curPage == i) {
+                        link.addClass('active');
+                    }
+                }
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragstart", imageDragging, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragenter", imageDragenter, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragleave", imageDragleave, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragover", imageDragover, false);
+                })
+            }
+
+            function searchComplete() {
+                // Check that we got results
+                if (imageSearch.results && imageSearch.results.length > 0) {
+
+                    // Grab our content div, clear it.
+                    var contentDiv = $('#searchResult').empty();
+
+                    // Loop through our results, printing them to the page.
+                    var results = imageSearch.results;
+                    console.log(results);
+                    for (var i = 0; i < results.length; i++) {
+                        // For each result write it's title and image to the screen
+                        var result = results[i];
+                        var imgContainer = $("<div class='imgContainer' draggable='true'>");
+                        //var title = document.createElement('div');
+                        var iUrl = $("<input type='hidden'/>");
+                        var iContent = $("<input type='hidden'/>");
+                        var iHeight = $("<input type='hidden'/>");
+                        var iWidth = $("<input type='hidden'/>");
+                        var iTitle = $("<input type='hidden'/>");
+            
+                        // We use titleNoFormatting so that no HTML tags are left in the 
+                        // title
+                        //title.innerHTML = result.title;
+                        var newImg = document.createElement('img');
+
+                        // There is also a result.url property which has the escaped version
+                        newImg.src = result.tbUrl;
+                        iUrl.attr("value", result.url);
+                        iContent.attr("value", result.contentNoFormatting);
+                        iHeight.attr("value", result.height);
+                        iWidth.attr("value", result.width);
+                        iTitle.attr("value",result.titleNoFormatting);
+                        var imgWidth = (result.tbWidth > minWidht)?result.tbWidth:minWidht;
+                        var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+                        imgContainer.width(imgWidth).height(imgHeight);
+                        imgContainer.append($(newImg));
+                        //imgContainer.append($(title));  
+                        imgContainer.append(iUrl);
+                        imgContainer.append(iContent);
+                        imgContainer.append(iHeight);
+                        imgContainer.append(iWidth);
+                        imgContainer.append(iTitle);
+
+                        // Put our title + image in the content
+                        imgContainer.appendTo(contentDiv);
+                    }
+
+                    // Now add links to additional pages of search results.
+                    addPaginationLinks(imageSearch);
+                }
+                setTimeout(function(){
+                    $(window).trigger('resize');
+                }, 1000);
+                
+            }
+
+            function OnLoad() {
+      
+                // Create an Image Search instance.
+                imageSearch = new google.search.ImageSearch();
+
+                // Set searchComplete as the callback function when a search is 
+                // complete.  The imageSearch object will have results in it.
+                imageSearch.setSearchCompleteCallback(this, searchComplete, null);
+                
+                imageSearch.setResultSetSize(8);
+                //imageSearch.setQueryAddition("Subaru STI");
+                // Find me a beautiful car.
+                //imageSearch.execute("Sankore");
+        
+                // Include the required Google branding
+                google.search.Search.getBranding('branding');
+            }
+            google.setOnLoadCallback(OnLoad);
+            //end of Google API
+            
+            //No google API below            
+            
+            function imageDragging(e){
+                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+                //alert($(this).find("input:hidden").val());
+            }
+            
+            function imageDragleave(e){
+                return false;
+            }
+            
+            function imageDragover(e){
+                return false;
+            }
+            
+            function imageDragenter(e){
+                return false;
+            }
+            
+            $(document).ready(function(){
+
+                //variables
+                var mode = false; //search or view mode
+                var hide = false; //hide or no main panel
+    
+                //basic containers and elements    
+                var lang = window.sankore ? sankore.locale().substr(0,2) : "en"; //locale language
+
+                //localization
+                locale = locales[lang];
+
+                var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+                var disclaimer = $("<div id='disclaimer' class='disclaimer'>"+locale.disclaimer_title+"<div>").appendTo(disc_nav_cont);
+                var search = $("<div id='search' class='search'>").appendTo("body");
+    
+                //var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+                //var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+    
+                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+    
+                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+                var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+    
+                //adding filters to the wgt
+                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+                .append($("<option value='0'>"+locale.def_opts_val_size+"</option>"))
+                .append($("<option value='1'>"+locale.size_small+"</option>"))
+                .append($("<option value='2'>"+locale.size_medium+"</option>"))
+                .append($("<option value='3'>"+locale.size_large+"</option>"))
+                .append($("<option value='4'>"+locale.size_extra_large+"</option>"));
+                $("<div class='filterContainer'>").append("<span>"+locale.size_title+":</span><br/>").append(selectFilter).appendTo(subSearchFilter);
+                 
+                selectFilter = $("<select id='fileTypeFilter' class='filterSelect'>")
+                .append($("<option value='0'>"+locale.def_opts_val_type+"</option>"))
+                .append($("<option value='1'>*.JPG</option>"))
+                .append($("<option value='2'>*.PNG</option>"))
+                .append($("<option value='3'>*.GIF</option>"))
+                .append($("<option value='4'>*.BMP</option>"));
+                $("<div class='filterContainer'>").append("<span>"+locale.file_type_title+":</span><br/>").append(selectFilter).appendTo(subSearchFilter);
+                
+                selectFilter = $("<select id='typeFilter' class='filterSelect'>")
+                .append($("<option value='0'>"+locale.def_opts_val_image+"</option>"))
+                .append($("<option value='1'>"+locale.image_type_faces+"</option>"))
+                .append($("<option value='2'>"+locale.image_type_photo+"</option>"))
+                .append($("<option value='3'>"+locale.image_type_clipart+"</option>"))
+                .append($("<option value='4'>"+locale.image_type_lineart+"</option>"));
+                $("<div class='filterContainer'>").append("<span>"+locale.image_type_title+":</span><br/>").append(selectFilter).appendTo(subSearchFilter);
+                
+                selectFilter = $("<select id='rightsFilter' class='filterSelect'>")
+                .append($("<option value='0'>"+locale.def_opts_val_copyright+"</option>"))
+                .append($("<option value='1'>"+locale.image_license_reuse+"</option>"))
+                .append($("<option value='2'>"+locale.image_license_comm_reuse+"</option>"))
+                .append($("<option value='3'>"+locale.image_license_modif+"</option>"))
+                .append($("<option value='4'>"+locale.image_license_comm_modif+"</option>"));
+                $("<div class='filterContainer'>").append("<span>"+locale.image_license_title+":</span><br/>").append(selectFilter).appendTo(subSearchFilter);
+
+                var colors_line = $('<div class="colors_line"></div>');
+                subSearchFilter.append(colors_line);
+                colors_line.html('<input type="radio" value="allcolor" id="color_shem_allcolor" class="custom" name="color" checked="true">\
+                    <label id="allcolor" class="filter_button button color active" for="color_shem_allcolor"></label>\
+                    <input type="radio" value="color" id="color_shem_color" class="custom" name="color">\
+                    <label id="colored" class="filter_button button color" for="color_shem_color"></label>\
+                    <input type="radio" value="grayscale" id="color_shem_gray" class="custom" name="color">\
+                    <label id="grayed" class="filter_button button color" for="color_shem_gray"></label>\
+                    <label style="border-right: 1px solid #fff; margin-right:7px; margin-left:7px; height: 15px; display: inline-block;"></label>\
+                    <input type="radio" value="red" id="design9" class="custom" name="color">\
+                    <label id="red" class="filter_button button color" for="design9"></label>\
+                    <input type="radio" value="orange" id="design6" class="custom" name="color">\
+                    <label id="orange" class="filter_button button color" for="design6"></label>\
+                    <input type="radio" value="yellow" id="design12" class="custom" name="color">\
+                    <label id="yellow" class="filter_button button color" for="design12"></label>\
+                    <input type="radio" value="green" id="design5" class="custom" name="color">\
+                    <label id="green" class="filter_button button color" for="design5"></label>\
+                    <input type="radio" value="teal" id="design10" class="custom" name="color">\
+                    <label id="teal" class="filter_button button color" for="design10"></label>\
+                    <input type="radio" value="blue" id="design2" class="custom" name="color">\
+                    <label id="blue" class="filter_button button color" for="design2"></label>\
+                    <input type="radio" value="purple" id="design8" class="custom" name="color">\
+                    <label id="purple" class="filter_button button color" for="design8"></label>\
+                    <input type="radio" value="pink" id="design7" class="custom" name="color">\
+                    <label id="pink" class="filter_button button color" for="design7"></label>\
+                    <input type="radio" value="white" id="design11" class="custom" name="color">\
+                    <label id="white" class="filter_button button color" for="design11"></label>\
+                    <input type="radio" value="gray" id="design4" class="custom" name="color">\
+                    <label id="gray" class="filter_button button color" for="design4"></label>\
+                    <input type="radio" value="black" id="design1" class="custom" name="color">\
+                    <label id="black" class="filter_button button color" for="design1"></label>\
+                    <input type="radio" value="brown" id="design3" class="custom" name="color">\
+                    <label id="brown" class="filter_button button color" for="design3"></label>');
+                
+                //mouse click actions
+                toggleFilters.click(function(){
+                    if(filtersDisplayed){
+                        subSearchFilter.hide();
+                        //$("#search").height(46);
+                        toggleFilters.css("background-image","url(images/down.png)");
+                        filtersDisplayed = false;
+                    } else {
+                        //$("#search").height(120);
+                        subSearchFilter.show();
+                        toggleFilters.css("background-image","url(images/up.png)");
+                        filtersDisplayed = true;
+                    }
+                });
+                
+                /*togglePages.click(function(event){
+                    if(mode){
+                        hide = false;
+                        $("#search, #disclaimer").slideDown('fast', function(){
+                            toggleIcon.css("background-image","url(images/trgUp.png)");
+                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+                        });
+                        mode = false;
+                    } else {
+                        hide = true;
+                        $("#search, #disclaimer").slideUp('fast', function(){
+                            toggleIcon.css("background-image","url(images/trgDown.png)");
+                            togglePages.appendTo("body").css("top","0");                            
+                        });
+                        mode = true;
+                    }
+                });*/
+                
+                searchButton.click(function(){
+                    if(!hide){
+                        checkFilters(imageSearch).execute(searchInput.val());
+                        //togglePages.trigger("click");
+                    }
+                });
+                
+                searchInput.keydown(function(event){
+                    if(!hide){
+                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                            checkFilters(imageSearch).execute(searchInput.val());
+                            //togglePages.trigger("click");
+                        }
+                              
+                    }
+                });
+
+                $('.filterSelect, .colors_line input[name=color]').change(function(){
+                    checkFilters(imageSearch).execute(searchInput.val());
+                });
+
+                $(".imgContainer").live("click",function(){
+					sankore.sendFileMetadata(createMetaData($(this)));
+                });
+                
+                //checking filters
+                function checkFilters(imgSearch){
+                    var value = $("#sizeFilter option:selected").val();
+                    switch(value){
+                        case "0":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,null);
+                            break;
+                        case "1":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_SMALL);
+                            break;
+                        case "2":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_MEDIUM);
+                            break;
+                        case "3":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_LARGE);
+                            break;
+                        case "4":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,google.search.ImageSearch.IMAGESIZE_EXTRA_LARGE);
+                            break;
+                    }
+                    
+                    value = $(".colors_line input[name=color]:checked").val();
+                    imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,null);
+                    imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,null);
+                    switch(value){
+                        case "allcolor":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,null);
+                            break;
+                        case "grayscale":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,google.search.ImageSearch.COLORIZATION_GRAYSCALE);
+                            break;
+                        case "color":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORIZATION,google.search.ImageSearch.COLORIZATION_COLOR);
+                            break;
+                        case "black":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_BLACK);
+                            break;
+                        case "blue":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_BLUE);
+                            break;
+                        case "brown":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_BROWN);
+                            break;
+                        case "gray":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_GRAY);
+                            break;
+                        case "green":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_GREEN);
+                            break;
+                        case "orange":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_ORANGE);
+                            break;
+                        case "pink":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_PINK);
+                            break;
+                        case "purple":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_PURPLE);
+                            break;
+                        case "red":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_RED);
+                            break;
+                        case "teal":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_TEAL);
+                            break;
+                        case "white":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_WHITE);
+                            break;
+                        case "yellow":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_COLORFILTER,google.search.ImageSearch.COLOR_YELLOW);
+                            break;
+                    }
+                    
+                    value = $("#fileTypeFilter option:selected").val();
+                    switch(value){
+                        case "0":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,null);
+                            break;
+                        case "1":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_JPG);
+                            break;
+                        case "2":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_PNG);
+                            break;
+                        case "3":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_GIF);
+                            break;
+                        case "4":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_FILETYPE,google.search.ImageSearch.FILETYPE_BMP);
+                            break;                        
+                    }
+                    
+                    value = $("#typeFilter option:selected").val();
+                    switch(value){
+                        case "0":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,null);
+                            break;
+                        case "1":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_FACES);
+                            break;
+                        case "2":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_PHOTO);
+                            break;
+                        case "3":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_CLIPART);
+                            break;
+                        case "4":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGETYPE,google.search.ImageSearch.IMAGETYPE_LINEART);
+                            break;                        
+                    }
+                    
+                    value = $("#rightsFilter option:selected").val();
+                    switch(value){
+                        case "0":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,null);
+                            break;
+                        case "1":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_REUSE);
+                            break;
+                        case "2":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_COMERCIAL_REUSE);
+                            break;
+                        case "3":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_MODIFICATION);
+                            break;
+                        case "4":
+                            imgSearch.setRestriction(google.search.ImageSearch.RESTRICT_RIGHTS,google.search.ImageSearch.RIGHTS_COMMERCIAL_MODIFICATION);
+                            break;                        
+                    }
+                    return imgSearch;
+                }
+                
+                $(window).resize(function(){
+		  var width = "200px";
+		  if ($('#search').width() < 230) {
+		    width = $("#search").width()-40;
+		  } else {
+		    width = "200px";
+		  }
+		  $('select').selectBox('destroy').css('width', width).selectBox();
+                });
+                
+                $(window).trigger("resize");
+				
+            });
+            
+            function createMetaData(parent){
+                var meta = "";
+                meta = "<metadata><data><key>Type</key><value>Image</value></data><data><key>Url</key><value>" + 
+                    parent.find("input:hidden").eq(0).val() + 
+                    "</value></data><data><key>thumbnailUrl</key><value>" + 
+                    parent.find("img").attr("src") + 
+                    "</value></data><data><key>Content</key><value>" + 
+                    parent.find("input:hidden").eq(1).val() +
+                    "</value></data><data><key>Height</key><value>" + 
+                    parent.find("input:hidden").eq(2).val() +
+                    "</value></data><data><key>Width</key><value>" +
+                    parent.find("input:hidden").eq(3).val() +
+                    "</value></data><data><key>Title</key><value>" +
+                    parent.find("input:hidden").eq(4).val() +
+                    "</value></data></metadata>";
+                return meta;
+            }
+        </script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/locales/locales.js b/Sankore-3.1/resources/library/search/Google images.wgs/locales/locales.js
new file mode 100644
index 0000000..fda3494
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/locales/locales.js	
@@ -0,0 +1,80 @@
+var locales = {
+	'en': {
+		'def_opts_val_size': 'Any',
+		'def_opts_val_type': 'Any',
+		'def_opts_val_image': 'Any',
+		'def_opts_val_copyright': 'Any',
+		'size_title': 'Size',
+		'size_small': 'Small',
+		'size_medium': 'Medium',
+		'size_large': 'Large',
+		'size_extra_large': 'Extra large',
+		'colorization_title': 'Colorization',
+		'coloriz_grayscale': 'Grayscale',
+		'coloriz_color': 'Color',
+		'main_color_title': 'Main color',
+		'm_color_black': 'Black',
+		'm_color_blue': 'Blue',
+		'm_color_brown': 'Brown',
+		'm_color_gray': 'Gray',
+		'm_color_green': 'Green',
+		'm_color_orange': 'Orange',
+		'm_color_pink': 'Pink',
+		'm_color_purple': 'Purple',
+		'm_color_red': 'Red',
+		'm_color_teal': 'Teal',
+		'm_color_white': 'White',
+		'm_color_yellow': 'Yellow',
+		'file_type_title': 'File type',
+		'image_type_title': 'Image type',
+		'image_type_faces': 'Faces',
+		'image_type_photo': 'Photo',
+		'image_type_clipart': 'Clipart',
+		'image_type_lineart': 'Lineart',
+		'image_license_title': 'Licence',
+		'image_license_reuse': 'Reuse',
+		'image_license_comm_reuse': 'Commercial reuse',
+		'image_license_modif': 'Modification',
+		'image_license_comm_modif': 'Commercial modification',
+		'disclaimer_title': 'This API is based on Google Image. Please refer to terms of use of this service.'
+	},
+	'fr': {
+		'def_opts_val_size': 'Toutes',
+		'def_opts_val_type': 'Tous',
+		'def_opts_val_image': 'Toutes',
+		'def_opts_val_copyright': 'Tous',
+		'size_title': 'Tailles',
+		'size_small': 'Petite',
+		'size_medium': 'Moyenne',
+		'size_large': 'Grande',
+		'size_extra_large': 'Extra large',
+		'colorization_title': 'Couleurs de l\'image',
+		'coloriz_grayscale': 'Noir et blanc',
+		'coloriz_color': 'En couleur',
+		'main_color_title': 'Couleur électronique',
+		'm_color_black': 'Noir',
+		'm_color_blue': 'Bleu',
+		'm_color_brown': 'Brun',
+		'm_color_gray': 'Gris',
+		'm_color_green': 'Vert',
+		'm_color_orange': 'Orange',
+		'm_color_pink': 'Rose',
+		'm_color_purple': 'Pourpre',
+		'm_color_red': 'Rouge',
+		'm_color_teal': 'Sarcelle',
+		'm_color_white': 'Blanc',
+		'm_color_yellow': 'Jaune',
+		'file_type_title': 'Types de fichier',
+		'image_type_title': 'Types d\'image',
+		'image_type_faces': 'Visages',
+		'image_type_photo': 'Photo',
+		'image_type_clipart': 'Images clipart',
+		'image_type_lineart': 'Dessins au trait',
+		'image_license_title': 'Droits d\'usage',
+		'image_license_reuse': 'Usage, distribution',
+		'image_license_comm_reuse': 'Usage, distribution, commercial',
+		'image_license_modif': 'Usage, distribution, modification',
+		'image_license_comm_modif': 'Usage, distribution, modification, commercial',
+		'disclaimer_title': 'Cette recherche utilise les services de Google Images. Veuillez vous référer aux conditions d\'utilisation de ce service.'
+	}
+};
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Google images.wgs/scripts/jquery-1.6.2.min.js
index 48590ec..e67db74 100644
--- a/Sankore-3.1/resources/library/search/Google images.wgs/scripts/jquery-1.6.2.min.js	
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/scripts/jquery-1.6.2.min.js	
@@ -1,18 +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
+/*!
+ * 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
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox-arrow.gif b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox-arrow.gif
new file mode 100644
index 0000000..2796795
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox-arrow.gif differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.css b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.css
new file mode 100644
index 0000000..61a8866
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.css	
@@ -0,0 +1,150 @@
+/* Dropdown control */
+.selectBox-dropdown {
+	min-width: 60px;
+	position: relative;
+	/*border: solid 1px #BBB;*/
+	line-height: 1.5;
+	text-decoration: none;
+	text-align: left;
+	color: #000;
+	outline: none;
+	vertical-align: middle;
+	background: #F2F2F2;
+	background: -moz-linear-gradient(top, #F8F8F8 1%, #E1E1E1 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(1%, #F8F8F8), color-stop(100%, #E1E1E1));
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F8F8F8', endColorstr='#E1E1E1', GradientType=0);
+	-moz-box-shadow: 0 1px 0 rgba(255, 255, 255, .75);
+	-webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, .75);
+	box-shadow: 0 1px 0 rgba(255, 255, 255, .75);
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	display: inline-block;
+	cursor: default;
+}
+
+.selectBox-dropdown:focus,
+.selectBox-dropdown:focus .selectBox-arrow {
+	border-color: #666;
+}
+
+.selectBox-dropdown.selectBox-menuShowing {
+	-moz-border-radius-bottomleft: 0;
+	-moz-border-radius-bottomright: 0;
+	-webkit-border-bottom-left-radius: 0;
+	-webkit-border-bottom-right-radius: 0;
+	border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+}
+
+.selectBox-dropdown .selectBox-label {
+	padding: 2px 8px;
+	display: inline-block;
+	white-space: nowrap;
+	overflow: hidden;
+}
+
+.selectBox-dropdown .selectBox-arrow {
+	position: absolute;
+	top: 0;
+	right: 0;
+	width: 23px;
+	height: 100%;
+	background: url(jquery.selectBox-arrow.gif) 50% center no-repeat;
+	border-left: solid 1px #BBB;
+}
+
+
+/* Dropdown menu */
+.selectBox-dropdown-menu {
+	position: absolute;
+	z-index: 99999;
+	max-height: 200px;
+	min-height: 1em;
+	border: solid 1px #BBB; /* should be the same border width as .selectBox-dropdown */
+	background: #FFF;
+	-moz-box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
+	-webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
+	box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
+	overflow: auto;
+}
+
+
+/* Inline control */
+.selectBox-inline {
+	min-width: 150px;
+	outline: none;
+	border: solid 1px #BBB;
+	background: #FFF;
+	display: inline-block;
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	overflow: auto;
+}
+
+.selectBox-inline:focus {
+	border-color: #666;
+}
+
+
+/* Options */
+.selectBox-options,
+.selectBox-options LI,
+.selectBox-options LI A {
+	list-style: none;
+	display: block;
+	cursor: default;
+	padding: 0;
+	margin: 0;
+}
+
+.selectBox-options LI A {
+	line-height: 1.5;
+	padding: 0 .5em;
+	white-space: nowrap;
+	overflow: hidden;
+	background: 6px center no-repeat;
+}
+
+.selectBox-options LI.selectBox-hover A {
+	background-color: #EEE;
+}
+
+.selectBox-options LI.selectBox-disabled A {
+	color: #888;
+	background-color: transparent;
+}
+
+.selectBox-options LI.selectBox-selected A {
+	background-color: #C8DEF4;
+}
+
+.selectBox-options .selectBox-optgroup {
+	color: #666;
+	background: #EEE;
+	font-weight: bold;
+	line-height: 1.5;
+	padding: 0 .3em;
+	white-space: nowrap;
+}
+
+
+/* Disabled state */
+.selectBox.selectBox-disabled {
+	color: #888 !important;
+}
+
+.selectBox-dropdown.selectBox-disabled .selectBox-arrow {
+	opacity: .5;
+	filter: alpha(opacity=50);
+	border-color: #666;
+}
+
+.selectBox-inline.selectBox-disabled {
+	color: #888 !important;
+}
+
+.selectBox-inline.selectBox-disabled .selectBox-options A {
+	background-color: transparent !important;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.js b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.js
new file mode 100644
index 0000000..a45e3f6
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.js	
@@ -0,0 +1,916 @@
+/*
+ *  jQuery selectBox - A cosmetic, styleable replacement for SELECT elements
+ *
+ *  Copyright 2012 Cory LaViska for A Beautiful Site, LLC.
+ *
+ *  https://github.com/claviska/jquery-selectBox
+ *
+ *  Licensed under both the MIT license and the GNU GPLv2 (same as jQuery: http://jquery.org/license)
+ *
+ */
+if(jQuery) (function($) {
+
+	$.extend($.fn, {
+
+		selectBox: function(method, data) {
+
+			var typeTimer,
+				typeSearch = '',
+				isMac = navigator.platform.match(/mac/i);
+
+			//
+			// Private methods
+			//
+
+			var init = function(select, data) {
+				
+				var options;
+				
+				// Disable for iOS devices (their native controls are more suitable for a touch device)
+				if( navigator.userAgent.match(/iPad|iPhone|Android|IEMobile|BlackBerry/i) ) return false;
+
+				// Element must be a select control
+				if( select.tagName.toLowerCase() !== 'select' ) return false;
+
+				select = $(select);
+				if( select.data('selectBox-control') ) return false;
+
+				var control = $('<a class="selectBox" />'),
+					inline = select.attr('multiple') || parseInt(select.attr('size')) > 1;
+
+				var settings = data || {};
+				
+				control
+					.width(select.outerWidth())
+					.addClass(select.attr('class'))
+					.attr('title', select.attr('title') || '')
+					.attr('tabindex', parseInt(select.attr('tabindex')))
+					.css('display', 'inline-block')
+					.bind('focus.selectBox', function() {
+						if( this !== document.activeElement && document.body !== document.activeElement ) $(document.activeElement).blur();
+						if( control.hasClass('selectBox-active') ) return;
+						control.addClass('selectBox-active');
+						select.trigger('focus');
+					})
+					.bind('blur.selectBox', function() {
+						if( !control.hasClass('selectBox-active') ) return;
+						control.removeClass('selectBox-active');
+						select.trigger('blur');
+					});
+				
+				if( !$(window).data('selectBox-bindings') ) {
+					$(window)
+						.data('selectBox-bindings', true)
+						.bind('scroll.selectBox', hideMenus)
+						.bind('resize.selectBox', hideMenus);
+				}
+				
+				if( select.attr('disabled') ) control.addClass('selectBox-disabled');
+				
+				// Focus on control when label is clicked
+				select.bind('click.selectBox', function(event) {
+					control.focus();
+					event.preventDefault();
+				});
+
+				// Generate control
+				if( inline ) {
+
+					//
+					// Inline controls
+					//
+					options = getOptions(select, 'inline');
+
+					control
+						.append(options)
+						.data('selectBox-options', options)
+						.addClass('selectBox-inline selectBox-menuShowing')
+						.bind('keydown.selectBox', function(event) {
+							handleKeyDown(select, event);
+						})
+						.bind('keypress.selectBox', function(event) {
+							handleKeyPress(select, event);
+						})
+						.bind('mousedown.selectBox', function(event) {
+							if( $(event.target).is('A.selectBox-inline') ) event.preventDefault();
+							if( !control.hasClass('selectBox-focus') ) control.focus();
+						})
+						.insertAfter(select);
+
+					// Auto-height based on size attribute
+					if( !select[0].style.height ) {
+
+						var size = select.attr('size') ? parseInt(select.attr('size')) : 5;
+
+						// Draw a dummy control off-screen, measure, and remove it
+						var tmp = control
+							.clone()
+							.removeAttr('id')
+							.css({
+								position: 'absolute',
+								top: '-9999em'
+							})
+							.show()
+							.appendTo('body');
+						tmp.find('.selectBox-options').html('<li><a>\u00A0</a></li>');
+						var optionHeight = parseInt(tmp.find('.selectBox-options A:first').html(' ').outerHeight());
+						tmp.remove();
+
+						control.height(optionHeight * size);
+
+					}
+
+					disableSelection(control);
+
+				} else {
+
+					//
+					// Dropdown controls
+					//
+					var label = $('<span class="selectBox-label" />'),
+						arrow = $('<span class="selectBox-arrow" />');
+					
+					// Update label
+					label
+						.attr('class', getLabelClass(select))
+						.text(getLabelText(select));
+					
+					options = getOptions(select, 'dropdown');
+					options.appendTo('BODY');
+
+					control
+						.data('selectBox-options', options)
+						.addClass('selectBox-dropdown')
+						.append(label)
+						.append(arrow)
+						.bind('mousedown.selectBox', function(event) {
+							if( control.hasClass('selectBox-menuShowing') ) {
+								hideMenus();
+							} else {
+								event.stopPropagation();
+								// Webkit fix to prevent premature selection of options
+								options.data('selectBox-down-at-x', event.screenX).data('selectBox-down-at-y', event.screenY);
+								showMenu(select);
+							}
+						})
+						.bind('keydown.selectBox', function(event) {
+							handleKeyDown(select, event);
+						})
+						.bind('keypress.selectBox', function(event) {
+							handleKeyPress(select, event);
+						})
+						.bind('open.selectBox', function(event, triggerData) {
+							if(triggerData && triggerData._selectBox === true) return;
+							showMenu(select);
+						})
+						.bind('close.selectBox', function(event, triggerData) {
+							if(triggerData && triggerData._selectBox === true) return;
+							hideMenus();
+						})						
+						.insertAfter(select);
+					
+					// Set label width
+					var labelWidth = control.width() - arrow.outerWidth() - parseInt(label.css('paddingLeft')) - parseInt(label.css('paddingLeft'));
+					label.width(labelWidth);
+					
+					disableSelection(control);
+					
+				}
+
+				// Store data for later use and show the control
+				select
+					.addClass('selectBox')
+					.data('selectBox-control', control)
+					.data('selectBox-settings', settings)
+					.hide();
+				
+			};
+
+
+			var getOptions = function(select, type) {
+				var options;
+
+				// Private function to handle recursion in the getOptions function.
+				var _getOptions = function(select, options) {
+					// Loop through the set in order of element children.
+					select.children('OPTION, OPTGROUP').each( function() {
+						// If the element is an option, add it to the list.
+						if ($(this).is('OPTION')) {
+							// Check for a value in the option found.
+							if($(this).length > 0) {
+								// Create an option form the found element.
+								generateOptions($(this), options);
+							}
+							else {
+								// No option information found, so add an empty.
+								options.append('<li>\u00A0</li>');
+							}
+						}
+						else {
+							// If the element is an option group, add the group and call this function on it.
+							var optgroup = $('<li class="selectBox-optgroup" />');
+							optgroup.text($(this).attr('label'));
+							options.append(optgroup);
+							options = _getOptions($(this), options);
+						}
+					});
+					// Return the built strin
+					return options;
+				};
+
+				switch( type ) {
+
+					case 'inline':
+
+						options = $('<ul class="selectBox-options" />');
+						options = _getOptions(select, options);
+						
+						options
+							.find('A')
+								.bind('mouseover.selectBox', function(event) {
+									addHover(select, $(this).parent());
+								})
+								.bind('mouseout.selectBox', function(event) {
+									removeHover(select, $(this).parent());
+								})
+								.bind('mousedown.selectBox', function(event) {
+									event.preventDefault(); // Prevent options from being "dragged"
+									if( !select.selectBox('control').hasClass('selectBox-active') ) select.selectBox('control').focus();
+								})
+								.bind('mouseup.selectBox', function(event) {
+									hideMenus();
+									selectOption(select, $(this).parent(), event);
+								});
+
+						disableSelection(options);
+
+						return options;
+
+					case 'dropdown':
+						options = $('<ul class="selectBox-dropdown-menu selectBox-options" />');
+						options = _getOptions(select, options);
+
+						options
+							.data('selectBox-select', select)
+							.css('display', 'none')
+							.appendTo('BODY')
+							.find('A')
+								.bind('mousedown.selectBox', function(event) {
+									event.preventDefault(); // Prevent options from being "dragged"
+									if( event.screenX === options.data('selectBox-down-at-x') && event.screenY === options.data('selectBox-down-at-y') ) {
+										options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y');
+										hideMenus();
+									}
+								})
+								.bind('mouseup.selectBox', function(event) {
+									if( event.screenX === options.data('selectBox-down-at-x') && event.screenY === options.data('selectBox-down-at-y') ) {
+										return;
+									} else {
+										options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y');
+									}
+									selectOption(select, $(this).parent());
+									hideMenus();
+								}).bind('mouseover.selectBox', function(event) {
+									addHover(select, $(this).parent());
+								})
+								.bind('mouseout.selectBox', function(event) {
+									removeHover(select, $(this).parent());
+								});
+						
+						// Inherit classes for dropdown menu
+						var classes = select.attr('class') || '';
+						if( classes !== '' ) {
+							classes = classes.split(' ');
+							for( var i in classes ) options.addClass(classes[i] + '-selectBox-dropdown-menu');
+						}
+
+						disableSelection(options);
+
+						return options;
+
+				}
+
+			};
+			
+			
+			var getLabelClass = function(select) {
+				var selected = $(select).find('OPTION:selected');
+				return ('selectBox-label ' + (selected.attr('class') || '')).replace(/\s+$/, '');
+			};
+			
+			
+			var getLabelText = function(select) {
+				var selected = $(select).find('OPTION:selected');
+				return selected.text() || '\u00A0';
+			};
+			
+			
+			var setLabel = function(select) {
+				select = $(select);
+				var control = select.data('selectBox-control');
+				if( !control ) return;
+				control.find('.selectBox-label').attr('class', getLabelClass(select)).text(getLabelText(select));
+			};
+			
+			
+			var destroy = function(select) {
+
+				select = $(select);
+				var control = select.data('selectBox-control');
+				if( !control ) return;
+				var options = control.data('selectBox-options');
+
+				options.remove();
+				control.remove();
+				select
+					.removeClass('selectBox')
+					.removeData('selectBox-control').data('selectBox-control', null)
+					.removeData('selectBox-settings').data('selectBox-settings', null)
+					.show();
+
+			};
+			
+			
+			var refresh = function(select) {
+				select = $(select);
+				select.selectBox('options', select.html());
+			};
+
+			
+			var showMenu = function(select) {
+
+				select = $(select);
+				var control = select.data('selectBox-control'),
+					settings = select.data('selectBox-settings'),
+					options = control.data('selectBox-options');
+				if( control.hasClass('selectBox-disabled') ) return false;
+
+				hideMenus();
+
+				var borderBottomWidth = isNaN(control.css('borderBottomWidth')) ? 0 : parseInt(control.css('borderBottomWidth'));
+				
+				// Menu position
+				options
+					.css('min-width', control.innerWidth())
+					.css({
+						top: control.offset().top + control.outerHeight() - borderBottomWidth,
+						left: control.offset().left
+					});
+				
+				if( select.triggerHandler('beforeopen') ) return false;
+				var dispatchOpenEvent = function() {
+					select.triggerHandler('open', { _selectBox: true });
+				};
+				
+				// Show menu
+				switch( settings.menuTransition ) {
+
+					case 'fade':
+						options.fadeIn(settings.menuSpeed, dispatchOpenEvent);
+						break;
+
+					case 'slide':
+						options.slideDown(settings.menuSpeed, dispatchOpenEvent);
+						break;
+
+					default:
+						options.show(settings.menuSpeed, dispatchOpenEvent);
+						break;
+
+				}
+				
+				if( !settings.menuSpeed ) dispatchOpenEvent();
+				
+				// Center on selected option
+				var li = options.find('.selectBox-selected:first');
+				keepOptionInView(select, li, true);
+				addHover(select, li);
+
+				control.addClass('selectBox-menuShowing');
+
+				$(document).bind('mousedown.selectBox', function(event) {
+					if( $(event.target).parents().andSelf().hasClass('selectBox-options') ) return;
+					hideMenus();
+				});
+
+			};
+
+
+			var hideMenus = function() {
+
+				if( $(".selectBox-dropdown-menu:visible").length === 0 ) return;
+				$(document).unbind('mousedown.selectBox');
+
+				$(".selectBox-dropdown-menu").each( function() {
+
+					var options = $(this),
+						select = options.data('selectBox-select'),
+						control = select.data('selectBox-control'),
+						settings = select.data('selectBox-settings');
+					
+					if( select.triggerHandler('beforeclose') ) return false;
+					
+					var dispatchCloseEvent = function() {
+						select.triggerHandler('close', { _selectBox: true });
+					};					
+					
+					switch( settings.menuTransition ) {
+
+						case 'fade':
+							options.fadeOut(settings.menuSpeed, dispatchCloseEvent);
+							break;
+
+						case 'slide':
+							options.slideUp(settings.menuSpeed, dispatchCloseEvent);
+							break;
+
+						default:
+							options.hide(settings.menuSpeed, dispatchCloseEvent);
+							break;
+
+					}
+					
+					if( !settings.menuSpeed ) dispatchCloseEvent();
+					
+					control.removeClass('selectBox-menuShowing');
+
+				});
+
+			};
+
+
+			var selectOption = function(select, li, event) {
+
+				select = $(select);
+				li = $(li);
+				var control = select.data('selectBox-control'),
+					settings = select.data('selectBox-settings');
+
+				if( control.hasClass('selectBox-disabled') ) return false;
+				if( li.length === 0 || li.hasClass('selectBox-disabled') ) return false;
+
+				if( select.attr('multiple') ) {
+
+					// If event.shiftKey is true, this will select all options between li and the last li selected
+					if( event.shiftKey && control.data('selectBox-last-selected') ) {
+
+						li.toggleClass('selectBox-selected');
+
+						var affectedOptions;
+						if( li.index() > control.data('selectBox-last-selected').index() ) {
+							affectedOptions = li.siblings().slice(control.data('selectBox-last-selected').index(), li.index());
+						} else {
+							affectedOptions = li.siblings().slice(li.index(), control.data('selectBox-last-selected').index());
+						}
+
+						affectedOptions = affectedOptions.not('.selectBox-optgroup, .selectBox-disabled');
+
+						if( li.hasClass('selectBox-selected') ) {
+							affectedOptions.addClass('selectBox-selected');
+						} else {
+							affectedOptions.removeClass('selectBox-selected');
+						}
+
+					} else if( (isMac && event.metaKey) || (!isMac && event.ctrlKey) ) {
+						li.toggleClass('selectBox-selected');
+					} else {
+						li.siblings().removeClass('selectBox-selected');
+						li.addClass('selectBox-selected');
+					}
+
+				} else {
+					li.siblings().removeClass('selectBox-selected');
+					li.addClass('selectBox-selected');
+				}
+
+				if( control.hasClass('selectBox-dropdown') ) {
+					control.find('.selectBox-label').text(li.text());
+				}
+				
+				// Update original control's value
+				var i = 0, selection = [];
+				if( select.attr('multiple') ) {
+					control.find('.selectBox-selected A').each( function() {
+						selection[i++] = $(this).attr('rel');
+					});
+				} else {
+					selection = li.find('A').attr('rel');
+				}
+				
+				// Remember most recently selected item
+				control.data('selectBox-last-selected', li);
+
+				// Change callback
+				if( select.val() !== selection ) {
+					select.val(selection);
+					setLabel(select);
+					select.trigger('change');
+				}
+
+				return true;
+
+			};
+
+
+			var addHover = function(select, li) {
+				select = $(select);
+				li = $(li);
+				var control = select.data('selectBox-control'),
+					options = control.data('selectBox-options');
+
+				options.find('.selectBox-hover').removeClass('selectBox-hover');
+				li.addClass('selectBox-hover');
+			};
+
+
+			var removeHover = function(select, li) {
+				select = $(select);
+				li = $(li);
+				var control = select.data('selectBox-control'),
+					options = control.data('selectBox-options');
+				options.find('.selectBox-hover').removeClass('selectBox-hover');
+			};
+
+
+			var keepOptionInView = function(select, li, center) {
+
+				if( !li || li.length === 0 ) return;
+
+				select = $(select);
+				var control = select.data('selectBox-control'),
+					options = control.data('selectBox-options'),
+					scrollBox = control.hasClass('selectBox-dropdown') ? options : options.parent(),
+					top = parseInt(li.offset().top - scrollBox.position().top),
+					bottom = parseInt(top + li.outerHeight());
+
+				if( center ) {
+					scrollBox.scrollTop( li.offset().top - scrollBox.offset().top + scrollBox.scrollTop() - (scrollBox.height() / 2) );
+				} else {
+					if( top < 0 ) {
+						scrollBox.scrollTop( li.offset().top - scrollBox.offset().top + scrollBox.scrollTop() );
+					}
+					if( bottom > scrollBox.height() ) {
+						scrollBox.scrollTop( (li.offset().top + li.outerHeight()) - scrollBox.offset().top + scrollBox.scrollTop() - scrollBox.height() );
+					}
+				}
+
+			};
+
+
+			var handleKeyDown = function(select, event) {
+
+				//
+				// Handles open/close and arrow key functionality
+				//
+
+				select = $(select);
+				var control = select.data('selectBox-control'),
+					options = control.data('selectBox-options'),
+					settings = select.data('selectBox-settings'),
+					totalOptions = 0,
+					i = 0;
+
+				if( control.hasClass('selectBox-disabled') ) return;
+
+				switch( event.keyCode ) {
+
+					case 8: // backspace
+						event.preventDefault();
+						typeSearch = '';
+						break;
+
+					case 9: // tab
+					case 27: // esc
+						hideMenus();
+						removeHover(select);
+						break;
+
+					case 13: // enter
+						if( control.hasClass('selectBox-menuShowing') ) {
+							selectOption(select, options.find('LI.selectBox-hover:first'), event);
+							if( control.hasClass('selectBox-dropdown') ) hideMenus();
+						} else {
+							showMenu(select);
+						}
+						break;
+
+					case 38: // up
+					case 37: // left
+
+						event.preventDefault();
+
+						if( control.hasClass('selectBox-menuShowing') ) {
+
+							var prev = options.find('.selectBox-hover').prev('LI');
+							totalOptions = options.find('LI:not(.selectBox-optgroup)').length;
+							i = 0;
+
+							while( prev.length === 0 || prev.hasClass('selectBox-disabled') || prev.hasClass('selectBox-optgroup') ) {
+								prev = prev.prev('LI');
+								if( prev.length === 0 ) {
+									if (settings.loopOptions) {
+										prev = options.find('LI:last');
+									} else {
+										prev = options.find('LI:first');
+									}
+								}
+								if( ++i >= totalOptions ) break;
+							}
+
+							addHover(select, prev);
+							selectOption(select, prev, event);
+							keepOptionInView(select, prev);
+
+						} else {
+							showMenu(select);
+						}
+
+						break;
+
+					case 40: // down
+					case 39: // right
+
+						event.preventDefault();
+
+						if( control.hasClass('selectBox-menuShowing') ) {
+
+							var next = options.find('.selectBox-hover').next('LI');
+							totalOptions = options.find('LI:not(.selectBox-optgroup)').length;
+							i = 0;
+
+							while( next.length === 0 || next.hasClass('selectBox-disabled') || next.hasClass('selectBox-optgroup') ) {
+								next = next.next('LI');
+								if( next.length === 0 ) {
+									if (settings.loopOptions) {
+										next = options.find('LI:first');
+									} else {
+										next = options.find('LI:last');
+									}
+								}
+								if( ++i >= totalOptions ) break;
+							}
+
+							addHover(select, next);
+							selectOption(select, next, event);
+							keepOptionInView(select, next);
+
+						} else {
+							showMenu(select);
+						}
+
+						break;
+
+				}
+
+			};
+
+
+			var handleKeyPress = function(select, event) {
+
+				//
+				// Handles type-to-find functionality
+				//
+
+				select = $(select);
+				var control = select.data('selectBox-control'),
+					options = control.data('selectBox-options');
+
+				if( control.hasClass('selectBox-disabled') ) return;
+
+				switch( event.keyCode ) {
+
+					case 9: // tab
+					case 27: // esc
+					case 13: // enter
+					case 38: // up
+					case 37: // left
+					case 40: // down
+					case 39: // right
+						// Don't interfere with the keydown event!
+						break;
+
+					default: // Type to find
+
+						if( !control.hasClass('selectBox-menuShowing') ) showMenu(select);
+
+						event.preventDefault();
+
+						clearTimeout(typeTimer);
+						typeSearch += String.fromCharCode(event.charCode || event.keyCode);
+
+						options.find('A').each( function() {
+							if( $(this).text().substr(0, typeSearch.length).toLowerCase() === typeSearch.toLowerCase() ) {
+								addHover(select, $(this).parent());
+								keepOptionInView(select, $(this).parent());
+								return false;
+							}
+						});
+
+						// Clear after a brief pause
+						typeTimer = setTimeout( function() { typeSearch = ''; }, 1000);
+
+						break;
+
+				}
+
+			};
+
+
+			var enable = function(select) {
+				select = $(select);
+				select.attr('disabled', false);
+				var control = select.data('selectBox-control');
+				if( !control ) return;
+				control.removeClass('selectBox-disabled');
+			};
+
+
+			var disable = function(select) {
+				select = $(select);
+				select.attr('disabled', true);
+				var control = select.data('selectBox-control');
+				if( !control ) return;
+				control.addClass('selectBox-disabled');
+			};
+
+
+			var setValue = function(select, value) {
+				select = $(select);
+				select.val(value);
+				value = select.val();
+				var control = select.data('selectBox-control');
+				if( !control ) return;
+				var settings = select.data('selectBox-settings'),
+					options = control.data('selectBox-options');
+
+				// Update label
+				setLabel(select);
+				
+				// Update control values
+				options.find('.selectBox-selected').removeClass('selectBox-selected');
+				options.find('A').each( function() {
+					if( typeof(value) === 'object' ) {
+						for( var i = 0; i < value.length; i++ ) {
+							if( $(this).attr('rel') == value[i] ) {
+								$(this).parent().addClass('selectBox-selected');
+							}
+						}
+					} else {
+						if( $(this).attr('rel') == value ) {
+							$(this).parent().addClass('selectBox-selected');
+						}
+					}
+				});
+
+				if( settings.change ) settings.change.call(select);
+
+			};
+
+
+			var setOptions = function(select, options) {
+
+				select = $(select);
+				var control = select.data('selectBox-control'),
+					settings = select.data('selectBox-settings');
+
+				switch( typeof(data) ) {
+
+					case 'string':
+						select.html(data);
+						break;
+
+					case 'object':
+						select.html('');
+						for( var i in data ) {
+							if( data[i] === null ) continue;
+							if( typeof(data[i]) === 'object' ) {
+								var optgroup = $('<optgroup label="' + i + '" />');
+								for( var j in data[i] ) {
+									optgroup.append('<option value="' + j + '">' + data[i][j] + '</option>');
+								}
+								select.append(optgroup);
+							} else {
+								var option = $('<option value="' + i + '">' + data[i] + '</option>');
+								select.append(option);
+							}
+						}
+						break;
+
+				}
+
+				if( !control ) return;
+
+				// Remove old options
+				control.data('selectBox-options').remove();
+
+				// Generate new options
+				var type = control.hasClass('selectBox-dropdown') ? 'dropdown' : 'inline';
+				options = getOptions(select, type);
+				control.data('selectBox-options', options);
+
+				switch( type ) {
+					case 'inline':
+						control.append(options);
+						break;
+					case 'dropdown':
+						// Update label
+						setLabel(select);
+						$("BODY").append(options);
+						break;
+				}
+
+			};
+
+
+			var disableSelection = function(selector) {
+				$(selector)
+					.css('MozUserSelect', 'none')
+					.bind('selectstart', function(event) {
+						event.preventDefault();
+					});
+			};
+
+			var generateOptions = function(self, options){
+				var li = $('<li />'),
+				a = $('<a />');
+				li.addClass( self.attr('class') );
+				li.data( self.data() );
+				a.attr('rel', self.val()).text( self.text() );
+				li.append(a);
+				if( self.attr('disabled') ) li.addClass('selectBox-disabled');
+				if( self.attr('selected') ) li.addClass('selectBox-selected');
+				options.append(li);
+			};
+
+			//
+			// Public methods
+			//
+
+			switch( method ) {
+
+				case 'control':
+					return $(this).data('selectBox-control');
+
+				case 'settings':
+					if( !data ) return $(this).data('selectBox-settings');
+					$(this).each( function() {
+						$(this).data('selectBox-settings', $.extend(true, $(this).data('selectBox-settings'), data));
+					});
+					break;
+
+				case 'options':
+					// Getter
+					if( data === undefined ) return $(this).data('selectBox-control').data('selectBox-options');
+					// Setter
+					$(this).each( function() {
+						setOptions(this, data);
+					});
+					break;
+
+				case 'value':
+					// Empty string is a valid value
+					if( data === undefined ) return $(this).val();
+					$(this).each( function() {
+						setValue(this, data);
+					});
+					break;
+				
+				case 'refresh':
+					$(this).each( function() {
+						refresh(this);
+					});
+					break;
+
+				case 'enable':
+					$(this).each( function() {
+						enable(this);
+					});
+					break;
+
+				case 'disable':
+					$(this).each( function() {
+						disable(this);
+					});
+					break;
+
+				case 'destroy':
+					$(this).each( function() {
+						destroy(this);
+					});
+					break;
+
+				default:
+					$(this).each( function() {
+						init(this, method);
+					});
+					break;
+
+			}
+
+			return $(this);
+
+		}
+
+	});
+
+})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.min.js b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.min.js
new file mode 100644
index 0000000..410e79e
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Google images.wgs/select/jquery.selectBox.min.js	
@@ -0,0 +1,2 @@
+/* jQuery SelectBox - https://github.com/claviska/jquery-selectBox */
+if(jQuery)(function($){$.extend($.fn,{selectBox:function(method,data){var typeTimer,typeSearch='',isMac=navigator.platform.match(/mac/i);var init=function(select,data){var options;if(navigator.userAgent.match(/iPad|iPhone|Android|IEMobile|BlackBerry/i))return false;if(select.tagName.toLowerCase()!=='select')return false;select=$(select);if(select.data('selectBox-control'))return false;var control=$('<a class="selectBox" />'),inline=select.attr('multiple')||parseInt(select.attr('size'))>1;var settings=data||{};control.width(select.outerWidth()).addClass(select.attr('class')).attr('title',select.attr('title')||'').attr('tabindex',parseInt(select.attr('tabindex'))).css('display','inline-block').bind('focus.selectBox',function(){if(this!==document.activeElement&&document.body!==document.activeElement)$(document.activeElement).blur();if(control.hasClass('selectBox-active'))return;control.addClass('selectBox-active');select.trigger('focus')}).bind('blur.selectBox',function(){if(!control.hasClass('selectBox-active'))return;control.removeClass('selectBox-active');select.trigger('blur')});if(!$(window).data('selectBox-bindings')){$(window).data('selectBox-bindings',true).bind('scroll.selectBox',hideMenus).bind('resize.selectBox',hideMenus)}if(select.attr('disabled'))control.addClass('selectBox-disabled');select.bind('click.selectBox',function(event){control.focus();event.preventDefault()});if(inline){options=getOptions(select,'inline');control.append(options).data('selectBox-options',options).addClass('selectBox-inline selectBox-menuShowing').bind('keydown.selectBox',function(event){handleKeyDown(select,event)}).bind('keypress.selectBox',function(event){handleKeyPress(select,event)}).bind('mousedown.selectBox',function(event){if($(event.target).is('A.selectBox-inline'))event.preventDefault();if(!control.hasClass('selectBox-focus'))control.focus()}).insertAfter(select);if(!select[0].style.height){var size=select.attr('size')?parseInt(select.attr('size')):5;var tmp=control.clone().removeAttr('id').css({position:'absolute',top:'-9999em'}).show().appendTo('body');tmp.find('.selectBox-options').html('<li><a>\u00A0</a></li>');var optionHeight=parseInt(tmp.find('.selectBox-options A:first').html(' ').outerHeight());tmp.remove();control.height(optionHeight*size)}disableSelection(control)}else{var label=$('<span class="selectBox-label" />'),arrow=$('<span class="selectBox-arrow" />');label.attr('class',getLabelClass(select)).text(getLabelText(select));options=getOptions(select,'dropdown');options.appendTo('BODY');control.data('selectBox-options',options).addClass('selectBox-dropdown').append(label).append(arrow).bind('mousedown.selectBox',function(event){if(control.hasClass('selectBox-menuShowing')){hideMenus()}else{event.stopPropagation();options.data('selectBox-down-at-x',event.screenX).data('selectBox-down-at-y',event.screenY);showMenu(select)}}).bind('keydown.selectBox',function(event){handleKeyDown(select,event)}).bind('keypress.selectBox',function(event){handleKeyPress(select,event)}).bind('open.selectBox',function(event,triggerData){if(triggerData&&triggerData._selectBox===true)return;showMenu(select)}).bind('close.selectBox',function(event,triggerData){if(triggerData&&triggerData._selectBox===true)return;hideMenus()}).insertAfter(select);var labelWidth=control.width()-arrow.outerWidth()-parseInt(label.css('paddingLeft'))-parseInt(label.css('paddingLeft'));label.width(labelWidth);disableSelection(control)}select.addClass('selectBox').data('selectBox-control',control).data('selectBox-settings',settings).hide()};var getOptions=function(select,type){var options;var _getOptions=function(select,options){select.children('OPTION, OPTGROUP').each(function(){if($(this).is('OPTION')){if($(this).length>0){generateOptions($(this),options)}else{options.append('<li>\u00A0</li>')}}else{var optgroup=$('<li class="selectBox-optgroup" />');optgroup.text($(this).attr('label'));options.append(optgroup);options=_getOptions($(this),options)}});return options};switch(type){case'inline':options=$('<ul class="selectBox-options" />');options=_getOptions(select,options);options.find('A').bind('mouseover.selectBox',function(event){addHover(select,$(this).parent())}).bind('mouseout.selectBox',function(event){removeHover(select,$(this).parent())}).bind('mousedown.selectBox',function(event){event.preventDefault();if(!select.selectBox('control').hasClass('selectBox-active'))select.selectBox('control').focus()}).bind('mouseup.selectBox',function(event){hideMenus();selectOption(select,$(this).parent(),event)});disableSelection(options);return options;case'dropdown':options=$('<ul class="selectBox-dropdown-menu selectBox-options" />');options=_getOptions(select,options);options.data('selectBox-select',select).css('display','none').appendTo('BODY').find('A').bind('mousedown.selectBox',function(event){event.preventDefault();if(event.screenX===options.data('selectBox-down-at-x')&&event.screenY===options.data('selectBox-down-at-y')){options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y');hideMenus()}}).bind('mouseup.selectBox',function(event){if(event.screenX===options.data('selectBox-down-at-x')&&event.screenY===options.data('selectBox-down-at-y')){return}else{options.removeData('selectBox-down-at-x').removeData('selectBox-down-at-y')}selectOption(select,$(this).parent());hideMenus()}).bind('mouseover.selectBox',function(event){addHover(select,$(this).parent())}).bind('mouseout.selectBox',function(event){removeHover(select,$(this).parent())});var classes=select.attr('class')||'';if(classes!==''){classes=classes.split(' ');for(var i in classes)options.addClass(classes[i]+'-selectBox-dropdown-menu')}disableSelection(options);return options}};var getLabelClass=function(select){var selected=$(select).find('OPTION:selected');return('selectBox-label '+(selected.attr('class')||'')).replace(/\s+$/,'')};var getLabelText=function(select){var selected=$(select).find('OPTION:selected');return selected.text()||'\u00A0'};var setLabel=function(select){select=$(select);var control=select.data('selectBox-control');if(!control)return;control.find('.selectBox-label').attr('class',getLabelClass(select)).text(getLabelText(select))};var destroy=function(select){select=$(select);var control=select.data('selectBox-control');if(!control)return;var options=control.data('selectBox-options');options.remove();control.remove();select.removeClass('selectBox').removeData('selectBox-control').data('selectBox-control',null).removeData('selectBox-settings').data('selectBox-settings',null).show()};var refresh=function(select){select=$(select);select.selectBox('options',select.html())};var showMenu=function(select){select=$(select);var control=select.data('selectBox-control'),settings=select.data('selectBox-settings'),options=control.data('selectBox-options');if(control.hasClass('selectBox-disabled'))return false;hideMenus();var borderBottomWidth=isNaN(control.css('borderBottomWidth'))?0:parseInt(control.css('borderBottomWidth'));options.width(control.innerWidth()).css({top:control.offset().top+control.outerHeight()-borderBottomWidth,left:control.offset().left});if(select.triggerHandler('beforeopen'))return false;var dispatchOpenEvent=function(){select.triggerHandler('open',{_selectBox:true})};switch(settings.menuTransition){case'fade':options.fadeIn(settings.menuSpeed,dispatchOpenEvent);break;case'slide':options.slideDown(settings.menuSpeed,dispatchOpenEvent);break;default:options.show(settings.menuSpeed,dispatchOpenEvent);break}if(!settings.menuSpeed)dispatchOpenEvent();var li=options.find('.selectBox-selected:first');keepOptionInView(select,li,true);addHover(select,li);control.addClass('selectBox-menuShowing');$(document).bind('mousedown.selectBox',function(event){if($(event.target).parents().andSelf().hasClass('selectBox-options'))return;hideMenus()})};var hideMenus=function(){if($(".selectBox-dropdown-menu:visible").length===0)return;$(document).unbind('mousedown.selectBox');$(".selectBox-dropdown-menu").each(function(){var options=$(this),select=options.data('selectBox-select'),control=select.data('selectBox-control'),settings=select.data('selectBox-settings');if(select.triggerHandler('beforeclose'))return false;var dispatchCloseEvent=function(){select.triggerHandler('close',{_selectBox:true})};switch(settings.menuTransition){case'fade':options.fadeOut(settings.menuSpeed,dispatchCloseEvent);break;case'slide':options.slideUp(settings.menuSpeed,dispatchCloseEvent);break;default:options.hide(settings.menuSpeed,dispatchCloseEvent);break}if(!settings.menuSpeed)dispatchCloseEvent();control.removeClass('selectBox-menuShowing')})};var selectOption=function(select,li,event){select=$(select);li=$(li);var control=select.data('selectBox-control'),settings=select.data('selectBox-settings');if(control.hasClass('selectBox-disabled'))return false;if(li.length===0||li.hasClass('selectBox-disabled'))return false;if(select.attr('multiple')){if(event.shiftKey&&control.data('selectBox-last-selected')){li.toggleClass('selectBox-selected');var affectedOptions;if(li.index()>control.data('selectBox-last-selected').index()){affectedOptions=li.siblings().slice(control.data('selectBox-last-selected').index(),li.index())}else{affectedOptions=li.siblings().slice(li.index(),control.data('selectBox-last-selected').index())}affectedOptions=affectedOptions.not('.selectBox-optgroup, .selectBox-disabled');if(li.hasClass('selectBox-selected')){affectedOptions.addClass('selectBox-selected')}else{affectedOptions.removeClass('selectBox-selected')}}else if((isMac&&event.metaKey)||(!isMac&&event.ctrlKey)){li.toggleClass('selectBox-selected')}else{li.siblings().removeClass('selectBox-selected');li.addClass('selectBox-selected')}}else{li.siblings().removeClass('selectBox-selected');li.addClass('selectBox-selected')}if(control.hasClass('selectBox-dropdown')){control.find('.selectBox-label').text(li.text())}var i=0,selection=[];if(select.attr('multiple')){control.find('.selectBox-selected A').each(function(){selection[i++]=$(this).attr('rel')})}else{selection=li.find('A').attr('rel')}control.data('selectBox-last-selected',li);if(select.val()!==selection){select.val(selection);setLabel(select);select.trigger('change')}return true};var addHover=function(select,li){select=$(select);li=$(li);var control=select.data('selectBox-control'),options=control.data('selectBox-options');options.find('.selectBox-hover').removeClass('selectBox-hover');li.addClass('selectBox-hover')};var removeHover=function(select,li){select=$(select);li=$(li);var control=select.data('selectBox-control'),options=control.data('selectBox-options');options.find('.selectBox-hover').removeClass('selectBox-hover')};var keepOptionInView=function(select,li,center){if(!li||li.length===0)return;select=$(select);var control=select.data('selectBox-control'),options=control.data('selectBox-options'),scrollBox=control.hasClass('selectBox-dropdown')?options:options.parent(),top=parseInt(li.offset().top-scrollBox.position().top),bottom=parseInt(top+li.outerHeight());if(center){scrollBox.scrollTop(li.offset().top-scrollBox.offset().top+scrollBox.scrollTop()-(scrollBox.height()/2))}else{if(top<0){scrollBox.scrollTop(li.offset().top-scrollBox.offset().top+scrollBox.scrollTop())}if(bottom>scrollBox.height()){scrollBox.scrollTop((li.offset().top+li.outerHeight())-scrollBox.offset().top+scrollBox.scrollTop()-scrollBox.height())}}};var handleKeyDown=function(select,event){select=$(select);var control=select.data('selectBox-control'),options=control.data('selectBox-options'),settings=select.data('selectBox-settings'),totalOptions=0,i=0;if(control.hasClass('selectBox-disabled'))return;switch(event.keyCode){case 8:event.preventDefault();typeSearch='';break;case 9:case 27:hideMenus();removeHover(select);break;case 13:if(control.hasClass('selectBox-menuShowing')){selectOption(select,options.find('LI.selectBox-hover:first'),event);if(control.hasClass('selectBox-dropdown'))hideMenus()}else{showMenu(select)}break;case 38:case 37:event.preventDefault();if(control.hasClass('selectBox-menuShowing')){var prev=options.find('.selectBox-hover').prev('LI');totalOptions=options.find('LI:not(.selectBox-optgroup)').length;i=0;while(prev.length===0||prev.hasClass('selectBox-disabled')||prev.hasClass('selectBox-optgroup')){prev=prev.prev('LI');if(prev.length===0){if(settings.loopOptions){prev=options.find('LI:last')}else{prev=options.find('LI:first')}}if(++i>=totalOptions)break}addHover(select,prev);selectOption(select,prev,event);keepOptionInView(select,prev)}else{showMenu(select)}break;case 40:case 39:event.preventDefault();if(control.hasClass('selectBox-menuShowing')){var next=options.find('.selectBox-hover').next('LI');totalOptions=options.find('LI:not(.selectBox-optgroup)').length;i=0;while(next.length===0||next.hasClass('selectBox-disabled')||next.hasClass('selectBox-optgroup')){next=next.next('LI');if(next.length===0){if(settings.loopOptions){next=options.find('LI:first')}else{next=options.find('LI:last')}}if(++i>=totalOptions)break}addHover(select,next);selectOption(select,next,event);keepOptionInView(select,next)}else{showMenu(select)}break}};var handleKeyPress=function(select,event){select=$(select);var control=select.data('selectBox-control'),options=control.data('selectBox-options');if(control.hasClass('selectBox-disabled'))return;switch(event.keyCode){case 9:case 27:case 13:case 38:case 37:case 40:case 39:break;default:if(!control.hasClass('selectBox-menuShowing'))showMenu(select);event.preventDefault();clearTimeout(typeTimer);typeSearch+=String.fromCharCode(event.charCode||event.keyCode);options.find('A').each(function(){if($(this).text().substr(0,typeSearch.length).toLowerCase()===typeSearch.toLowerCase()){addHover(select,$(this).parent());keepOptionInView(select,$(this).parent());return false}});typeTimer=setTimeout(function(){typeSearch=''},1000);break}};var enable=function(select){select=$(select);select.attr('disabled',false);var control=select.data('selectBox-control');if(!control)return;control.removeClass('selectBox-disabled')};var disable=function(select){select=$(select);select.attr('disabled',true);var control=select.data('selectBox-control');if(!control)return;control.addClass('selectBox-disabled')};var setValue=function(select,value){select=$(select);select.val(value);value=select.val();var control=select.data('selectBox-control');if(!control)return;var settings=select.data('selectBox-settings'),options=control.data('selectBox-options');setLabel(select);options.find('.selectBox-selected').removeClass('selectBox-selected');options.find('A').each(function(){if(typeof(value)==='object'){for(var i=0;i<value.length;i++){if($(this).attr('rel')==value[i]){$(this).parent().addClass('selectBox-selected')}}}else{if($(this).attr('rel')==value){$(this).parent().addClass('selectBox-selected')}}});if(settings.change)settings.change.call(select)};var setOptions=function(select,options){select=$(select);var control=select.data('selectBox-control'),settings=select.data('selectBox-settings');switch(typeof(data)){case'string':select.html(data);break;case'object':select.html('');for(var i in data){if(data[i]===null)continue;if(typeof(data[i])==='object'){var optgroup=$('<optgroup label="'+i+'" />');for(var j in data[i]){optgroup.append('<option value="'+j+'">'+data[i][j]+'</option>')}select.append(optgroup)}else{var option=$('<option value="'+i+'">'+data[i]+'</option>');select.append(option)}}break}if(!control)return;control.data('selectBox-options').remove();var type=control.hasClass('selectBox-dropdown')?'dropdown':'inline';options=getOptions(select,type);control.data('selectBox-options',options);switch(type){case'inline':control.append(options);break;case'dropdown':setLabel(select);$("BODY").append(options);break}};var disableSelection=function(selector){$(selector).css('MozUserSelect','none').bind('selectstart',function(event){event.preventDefault()})};var generateOptions=function(self,options){var li=$('<li />'),a=$('<a />');li.addClass(self.attr('class'));li.data(self.data());a.attr('rel',self.val()).text(self.text());li.append(a);if(self.attr('disabled'))li.addClass('selectBox-disabled');if(self.attr('selected'))li.addClass('selectBox-selected');options.append(li)};switch(method){case'control':return $(this).data('selectBox-control');case'settings':if(!data)return $(this).data('selectBox-settings');$(this).each(function(){$(this).data('selectBox-settings',$.extend(true,$(this).data('selectBox-settings'),data))});break;case'options':if(data===undefined)return $(this).data('selectBox-control').data('selectBox-options');$(this).each(function(){setOptions(this,data)});break;case'value':if(data===undefined)return $(this).val();$(this).each(function(){setValue(this,data)});break;case'refresh':$(this).each(function(){refresh(this)});break;case'enable':$(this).each(function(){enable(this)});break;case'disable':$(this).each(function(){disable(this)});break;case'destroy':$(this).each(function(){destroy(this)});break;default:$(this).each(function(){init(this,method)});break}return $(this)}})})(jQuery);
\ No newline at end of file
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/config.xml b/Sankore-3.1/resources/library/search/Image Planete.wgs/config.xml
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/config.xml
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/config.xml
diff --git a/Sankore-3.1/resources/library/search/Image Planete.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Image Planete.wgs/css/basic.css
new file mode 100644
index 0000000..e7fabb8
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Image Planete.wgs/css/basic.css	
@@ -0,0 +1,314 @@
+html, body{
+    width: 100%;
+    padding: 0;
+    height: auto;
+    background-color: white;
+    margin: 0;
+}
+
+::-webkit-scrollbar {
+    width: 14px;
+    background-color:white;
+}
+
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px; 
+    background-color:lightgray;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:start{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgUp.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:end{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgDown.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+a {
+    text-decoration: underline;
+}
+
+#disc_nav_cont{
+    height: auto;
+    position: fixed;
+    left: 0;
+    bottom: 0;    
+    width: 100%;
+}
+
+.disclaimer{  
+    padding: 5px;
+    text-align: center;
+    background-color: #BBBBBB;    
+    border-top: solid 4px #EEEEEE;
+    border-bottom: none;
+    font-size: 12px;
+}
+
+.resultFooter{    
+    width: 100%;    
+    padding: 3px;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-weight: bold;
+    font-size: x-large;
+    text-align: center;
+    background-color: white;
+}
+
+#searchResult {
+    overflow: hidden;
+    text-align: center;
+    margin-top: 50px;
+    margin-bottom: 85px;
+}
+
+.search{
+    position: fixed;
+    top: 0;
+    left: 0;
+    padding: 5px;
+    background-color: #BBBBBB;
+    border-bottom: solid 4px #EEEEEE;
+}
+
+.search,
+.disclaimer {
+    width: 100%;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchInput{
+    padding: 3px;
+    float: left;
+    width: 100%;
+    border-radius: 3px;
+    border-style: none;
+    height: 22px;
+    line-height: 18px;
+    vertical-align: middle;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchButton{
+    background: url("../images/search_app.png") -38px -38px no-repeat;
+    width: 24px;
+    height: 24px;
+    overflow: hidden;
+    position: absolute;
+    right: 30px;
+    top: 9px;
+    margin-left: -2px;
+    cursor: pointer;
+}
+
+.subSearch{
+    margin: 0;
+    float: left;    
+}
+
+#subSearchInput{
+    width: 100%;
+    float: left;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    padding: 5px;
+    padding-right: 26px;
+}
+
+#subSearchFilter{
+    width: 100%;
+    float: left;
+    display: none;
+}
+
+.searchResult{
+    width: 98%;
+    padding: 3px;
+    background-color:#123456;
+}
+
+.imgContainer{
+    display: inline-block;
+    padding: 3px;
+    margin: 3px;
+    text-align: center;
+    overflow: hidden;
+    font-size: small;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    vertical-align: top;
+}
+
+.imgContainer img{
+    max-width: 150px;
+    max-height:150px;
+}
+
+.filterContainer{
+    float: left;
+    margin: 2px;
+    padding: 2px;
+    font-size: 14px;
+    
+}
+
+.filterSelect{
+    border-style:none;
+    -webkit-border-top-right-radius: 15px;
+    -webkit-border-bottom-right-radius: 15px;
+    -moz-border-radius-topright: 15px;
+    -moz-border-radius-bottomright: 15px;
+    border-top-right-radius: 15px;
+    margin-top: 2px;
+    width: 100%;
+}
+
+span{    
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    color: #666;
+}
+
+[draggable] {
+  -webkit-user-select: none;
+  user-select: none;
+}
+
+.toggleFilters{
+    margin: 0;
+    padding: 0;
+    background-position: center;
+    background-image: url(../images/down.png);
+    position: absolute;
+    top: 11px;
+    right: 6px;
+    width: 20px;
+    height: 20px;
+    cursor: pointer;
+}
+
+.colors_line {
+    float: left;
+    margin: 4px;
+    margin-right: 0;
+    clear: left;
+}
+
+.custom {
+    opacity: 0;
+    position: absolute;
+    left: -10000px;
+}
+
+.filter_button.button.color {
+    display: inline-block;
+    width: 15px;
+    height: 15px;
+    border: 1px solid #EBEBEB;
+    padding: 0;
+    margin: 0;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.filter_button.button.color:hover {
+  border: 1px solid rgb(128,128,128);
+  cursor: pointer;
+}
+
+input[type="radio"]:checked + .filter_button.button.color {
+  border: 1px solid rgb(255,255,255);
+  box-shadow: 0 0 0px 1px #000;
+  -webkit-box-shadow: 0 0 0px 1px #000;
+}
+
+#allcolor {
+    background: white url('../images/search_app.png') -43px -144px no-repeat;
+}
+
+#colored {
+    background: white url('../images/search_app.png') -43px -244px no-repeat;
+}
+
+#grayed {
+    background: white url('../images/search_app.png') -45px -343px no-repeat;
+}
+
+#black{
+    background-color:#ffffff;
+}
+#blue{
+    background-color:#0000FF;
+}
+#brown{
+    background-color:rgba(139, 82, 16, 1);
+}
+
+#gray{
+    background-color:#999999;
+}
+
+#green{
+    background-color:#00CC00;
+}
+
+#orange{
+    background-color:#FB940B;
+}
+
+#pink{
+    background-color:#FF98BF;
+} 
+
+#purple{
+    background-color:#762CA7;
+}
+
+#red{
+    background-color:#CC0000;
+}
+
+#teal{
+    background-color:#03C0C6;
+}
+
+#white{
+    background-color:#000000;
+}
+
+#yellow{
+    background-color:#FFFF00;
+}
+
+.selectBox-dropdown, .selectBox-options li a { 
+    line-height: 1.3 !important;
+    font-size: 13px;
+}
+
+.pager_button {
+    padding: 3px 5px;
+    font-size: 16px;
+    color: black;
+    display: inline-block;
+}
+
+.pager_button.active {
+    border-radius: 3px;
+    -webkit-border-radius: 3px;
+    background-color: gray;
+    color: white;
+}
diff --git a/Sankore-3.1/resources/library/search/Image Planete.wgs/icon.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/icon.png
new file mode 100644
index 0000000..b9cd778
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Image Planete.wgs/icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Image Planete.wgs/icon.thumbnail.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/icon.thumbnail.png
new file mode 100644
index 0000000..b9cd778
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Image Planete.wgs/icon.thumbnail.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/down.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/down.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/down.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/down.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/greySquare.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/icon-close.png
similarity index 100%
copy from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/popupBack.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/search.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/search.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/search.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/search.png
diff --git a/Sankore-3.1/resources/library/search/Image Planete.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/search_app.png
new file mode 100644
index 0000000..efd8ea4
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/search_app.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/trgUp.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/trgUp.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/up.png b/Sankore-3.1/resources/library/search/Image Planete.wgs/images/up.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/up.png
copy to Sankore-3.1/resources/library/search/Image Planete.wgs/images/up.png
diff --git a/Sankore-3.1/resources/library/search/Image Planete.wgs/index.html b/Sankore-3.1/resources/library/search/Image Planete.wgs/index.html
new file mode 100644
index 0000000..375d9b9
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Image Planete.wgs/index.html	
@@ -0,0 +1,268 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Planete Sankore Image Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript">
+            var category = "image";
+            var thumbnails = true;
+            var minHeight = 150;
+            var minWidth = 150;
+            
+            var currentIndex = 0;
+            var currentTerm = "";
+            var limit = 10;
+            var filtersDisplayed = false; //display or hide filters
+ 
+            function addPaginationLinks(totalResults) {
+                var curPage = currentIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < 8; i++) {
+                    if (i * limit < totalResults) {
+                   
+                        var link = $("<a class='pager_button'></a>").attr('href', 'javascript:gotoPage('+i+');').html(i+1).appendTo(pagesDiv);
+                        if (curPage == i) {
+                            link.addClass('active');
+                        }
+                    }
+                }
+
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragstart", imageDragging, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragenter", imageDragenter, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragleave", imageDragleave, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragover", imageDragover, false);
+                })
+            }
+
+            function searchFail(jqXHR, textStatus, errorThrown) {
+                alert('Impossible to connect to Planete Sankore: ' + textStatus + ' ' + errorThrown);
+            }
+
+            function searchComplete(json) {
+                // Grab our content div, clear it.
+                var totalResults = json.totalResults;
+                var contentDiv = $('#searchResult').empty();
+                // Loop through our results, printing them to the page.
+                var results = json.rows;
+                for (var i = 0; i < results.length; i++) {
+                    // For each result write it's title and image to the screen
+                    var result = results[i];
+                    var imgContainer = $("<div class='imgContainer' draggable='true'>");
+                    //var title = document.createElement('div');
+                    var iUrl = $("<input type='hidden'/>");
+                    var iContent = $("<input type='hidden'/>");
+                    var iHeight = $("<input type='hidden'/>");
+                    var iWidth = $("<input type='hidden'/>");
+                    var iTitle = $("<input type='hidden'/>");
+                    var iThumbnailUrl = $("<input type='hidden'/>");
+                    // We use titleNoFormatting so that no HTML tags are left in the 
+                    // title
+                    //title.innerHTML = result.title;
+                    var newImg = document.createElement('img');
+
+                    // There is also a result.file property which has the escaped version
+                    if (thumbnails) {
+                        newImg.src = result.file;
+                        /*if(result.height >= result.width)
+                            newImg.height = minHeight;
+                        else{
+                            newImg.width = minWidth;
+                            //newImg.style.margin = (120 - result.height)/2 + "px 0";
+                        }*/
+                    } else {
+                        newImg.src = "./images/thumbnail_icon.png";
+                    }
+                    var imgWidth = (result.tbWidth > minWidth)?result.tbWidth:minWidth;
+                    var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+                    imgContainer.width(imgWidth).height(imgHeight);
+                    imgContainer.append($(newImg));
+                    iUrl.attr("value", result.file);
+                    iContent.attr("value", result.title);
+                    iHeight.attr("value", result.height);
+                    iWidth.attr("value", result.width);
+                    iTitle.attr("value",result.title);
+                    iThumbnailUrl.attr("value",newImg.src);
+                    //imgContainer.append($(title));  
+                    imgContainer.append(iUrl);
+                    imgContainer.append(iContent);
+                    imgContainer.append(iHeight);
+                    imgContainer.append(iWidth);
+                    imgContainer.append(iTitle);
+                    imgContainer.append(iThumbnailUrl);
+
+                    // Put our title + image in the content
+                    imgContainer.appendTo(contentDiv);
+
+                }
+                // Now add links to additional pages of search results.
+                addPaginationLinks(totalResults);
+            }
+
+            function imageDragging(e){
+                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+                // alert($(this).find("input:hidden").eq(0).val());
+            }
+            
+            function imageDragleave(e){
+                return false;
+            }
+            
+            function imageDragover(e){
+                return false;
+            }
+            
+            function imageDragenter(e){
+                return false;
+            }
+            
+            $(document).ready(function(){
+
+                //variables
+                var mode = false; //search or view mode
+                var hide = false; //hide or no main panel
+    
+                //basic containers and elements    
+                
+                var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+                var disclaimer = $("<div id='disclaimer' class='disclaimer'>Recherche d'images sur Planète Sankoré<div>").appendTo(disc_nav_cont);
+                var search = $("<div id='search' class='search'>").appendTo("body");
+				    
+                var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+                var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+    
+                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+    
+                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+                // var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+    
+                //adding filters to the wgt
+                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+                .append($("<option value='0'>Any</option>"))
+                .append($("<option value='1'>Small</option>"))
+                .append($("<option value='2'>Medium</option>"))
+                .append($("<option value='3'>Large</option>"))
+                .append($("<option value='4'>Extra large</option>"));
+                $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
+                
+                //mouse click actions 
+                /*
+                toggleFilters.click(function(){
+                    if(filtersDisplayed){
+                        subSearchFilter.hide();
+                        toggleFilters.css("background-image","url(images/down.png)");
+                        filtersDisplayed = false;
+                    } else {
+                        subSearchFilter.show();
+                        toggleFilters.css("background-image","url(images/up.png)");
+                        filtersDisplayed = true;
+                    }
+                });
+                 */
+
+                /*togglePages.click(function(event){
+                    if(mode){
+                        hide = false;
+                        $("#search, #disclaimer").slideDown('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgUp.png)");
+                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+                        });
+                        mode = false;
+                    } else {
+                        hide = true;
+                        $("#search, #disclaimer").slideUp('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgDown.png)");
+                            togglePages.appendTo("body").css("top","0");                            
+                        });
+                        mode = true;
+                    }
+                });*/
+                
+                searchButton.click(function(){
+                    if(!hide){
+                        runSearch(searchInput.val(), 0);
+                        //togglePages.trigger("click");
+                    }
+                });
+                
+                searchInput.keydown(function(event){
+                    if(!hide){
+                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                            runSearch(searchInput.val(), 0);
+                            //togglePages.trigger("click");
+                        }
+                              
+                    }
+                });
+                (
+                $(".imgContainer").live("click",function(){
+                    sankore.sendFileMetadata(createMetaData($(this)));
+                }));
+                
+                /*$(window).resize(function(){
+                    disclaimer.width($("body").width()-20);
+                    search.width($("body").width()-20);
+                    toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
+                })*/
+				
+            });
+            
+            function gotoPage(i) { 
+                runSearch(currentTerm, i);             
+            } 
+
+            // launching the search on planete sankore 
+            function runSearch(term, index) {
+                currentTerm = term;
+                currentIndex = index;
+                var start = index * limit;
+                var url = "http://planete.sankore.org/xwiki/bin/view/Search/Resources?xpage=plain&category=" + category + "&level=&sort=title&dir=ASC&terms=" + escape(term) + "&start=" + start + "&limit=" + limit;
+                $.ajax({
+                    url: url,
+                    success: searchComplete,
+                    error: searchFail,
+                    dataType: "json"
+                });
+            }
+ 
+            function createMetaData(parent){
+                var meta = "";
+                //alert($(this).find("input:hidden").eq(0).val());
+                meta = "<metadata><data><key>Type</key><value>Image</value></data><data><key>Url</key><value>" + 
+                    parent.find("input:hidden").eq(0).val() + 
+                    "</value></data><data><key>Content</key><value>" + 
+                    parent.find("input:hidden").eq(1).val() +
+                    "</value></data><data><key>Height</key><value>" + 
+                    parent.find("input:hidden").eq(2).val() +
+                    "</value></data><data><key>Width</key><value>" +
+                    parent.find("input:hidden").eq(3).val() +
+                    "</value></data><data><key>Title</key><value>" +
+                    parent.find("input:hidden").eq(4).val() +
+                    "</value></data><data><key>thumbnailUrl</key><value>" +
+                    parent.find("input:hidden").eq(5).val() +
+                    "</value></data></metadata>";
+                return meta;
+            }
+        </script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Image Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Image Planete.wgs/scripts/jquery-1.6.2.min.js
new file mode 100644
index 0000000..e67db74
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Image Planete.wgs/scripts/jquery-1.6.2.min.js	
@@ -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
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/config.xml b/Sankore-3.1/resources/library/search/Video Planete.wgs/config.xml
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/config.xml
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/config.xml
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/css/basic.css b/Sankore-3.1/resources/library/search/Video Planete.wgs/css/basic.css
new file mode 100644
index 0000000..80b50fb
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Video Planete.wgs/css/basic.css	
@@ -0,0 +1,315 @@
+html, body{
+    width: 100%;
+    padding: 0;
+    height: auto;
+    background-color: white;
+    margin: 0;
+}
+
+::-webkit-scrollbar {
+    width: 14px;
+    background-color:white;
+}
+
+
+::-webkit-scrollbar-thumb {
+    border-radius: 10px; 
+    background-color:lightgray;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:start{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgUp.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+::-webkit-scrollbar-button:vertical:end{
+    border-radius: 10px;
+    background-color:lightgray;
+    background-image: url(../images/trgDown.png);
+    background-size: 8px auto;
+    background-position: center;
+    background-repeat: no-repeat;
+    border: 2px solid gray;
+}
+
+a {
+    text-decoration: underline;
+}
+
+#disc_nav_cont{
+    height: auto;
+    position: fixed;
+    left: 0;
+    bottom: 0;    
+    width: 100%;
+}
+
+.disclaimer{  
+    padding: 5px;
+    text-align: center;
+    background-color: #BBBBBB;    
+    border-top: solid 4px #EEEEEE;
+    border-bottom: none;
+    font-size: 12px;
+}
+
+.resultFooter{    
+    width: 100%;    
+    padding: 3px;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    font-weight: bold;
+    font-size: x-large;
+    text-align: center;
+    background-color: white;
+}
+
+#searchResult {
+    overflow: hidden;
+    text-align: center;
+    margin-top: 50px;
+    margin-bottom: 85px;
+}
+
+.search{
+    position: fixed;
+    top: 0;
+    left: 0;
+    padding: 5px;
+    background-color: #BBBBBB;
+    border-bottom: solid 4px #EEEEEE;
+}
+
+.search,
+.disclaimer {
+    width: 100%;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchInput{
+    padding: 3px;
+    float: left;
+    width: 100%;
+    border-radius: 3px;
+    border-style: none;
+    height: 22px;
+    line-height: 18px;
+    vertical-align: middle;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.searchButton{
+    background: url("../images/search_app.png") -38px -38px no-repeat;
+    width: 24px;
+    height: 24px;
+    overflow: hidden;
+    position: absolute;
+    right: 30px;
+    top: 9px;
+    margin-left: -2px;
+    cursor: pointer;
+}
+
+.subSearch{
+    margin: 0;
+    float: left;    
+}
+
+#subSearchInput{
+    width: 100%;
+    float: left;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    padding: 5px;
+    padding-right: 26px;
+}
+
+#subSearchFilter{
+    width: 100%;
+    float: left;
+    display: none;
+}
+
+.searchResult{
+    width: 98%;
+    padding: 3px;
+    background-color:#123456;
+}
+
+.imgContainer{
+    display: inline-block;
+    padding: 3px;
+    margin: 3px;
+    text-align: center;
+    overflow: hidden;
+    font-size: small;
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    border: 1px solid #666;
+    border-radius: 5px;
+    -webkit-box-shadow: #dadada -1px 0 4px;
+    -webkit-border-radius: 5px;
+    box-shadow: #666 -1px 0 4px;
+    vertical-align: top;
+}
+
+
+.filterContainer{
+    float: left;
+    margin: 2px;
+    padding: 2px;
+    font-size: 14px;
+    
+}
+
+.filterSelect{
+    border-style:none;
+    -webkit-border-top-right-radius: 15px;
+    -webkit-border-bottom-right-radius: 15px;
+    -moz-border-radius-topright: 15px;
+    -moz-border-radius-bottomright: 15px;
+    border-top-right-radius: 15px;
+    margin-top: 2px;
+    width: 100%;
+}
+
+span{    
+    font-family: Verdana,Arial,Helvetica,sans-serif;
+    color: #666;
+}
+
+[draggable] {
+  -webkit-user-select: none;
+  user-select: none;
+}
+
+.toggleFilters{
+    margin: 0;
+    padding: 0;
+    background-position: center;
+    background-image: url(../images/down.png);
+    position: absolute;
+    top: 11px;
+    right: 6px;
+    width: 20px;
+    height: 20px;
+    cursor: pointer;
+}
+
+.colors_line {
+    float: left;
+    margin: 4px;
+    margin-right: 0;
+    clear: left;
+}
+
+.custom {
+    opacity: 0;
+    position: absolute;
+    left: -10000px;
+}
+
+.filter_button.button.color {
+    display: inline-block;
+    width: 15px;
+    height: 15px;
+    border: 1px solid #EBEBEB;
+    padding: 0;
+    margin: 0;
+    box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+}
+
+.filter_button.button.color:hover {
+  border: 1px solid rgb(128,128,128);
+  cursor: pointer;
+}
+
+input[type="radio"]:checked + .filter_button.button.color {
+  border: 1px solid rgb(255,255,255);
+  box-shadow: 0 0 0px 1px #000;
+  -webkit-box-shadow: 0 0 0px 1px #000;
+}
+
+#allcolor {
+    background: white url('../images/search_app.png') -43px -144px no-repeat;
+}
+
+#colored {
+    background: white url('../images/search_app.png') -43px -244px no-repeat;
+}
+
+#grayed {
+    background: white url('../images/search_app.png') -45px -343px no-repeat;
+}
+
+#black{
+    background-color:#ffffff;
+}
+#blue{
+    background-color:#0000FF;
+}
+#brown{
+    background-color:rgba(139, 82, 16, 1);
+}
+
+#gray{
+    background-color:#999999;
+}
+
+#green{
+    background-color:#00CC00;
+}
+
+#orange{
+    background-color:#FB940B;
+}
+
+#pink{
+    background-color:#FF98BF;
+} 
+
+#purple{
+    background-color:#762CA7;
+}
+
+#red{
+    background-color:#CC0000;
+}
+
+#teal{
+    background-color:#03C0C6;
+}
+
+#white{
+    background-color:#000000;
+}
+
+#yellow{
+    background-color:#FFFF00;
+}
+
+.selectBox-dropdown, .selectBox-options li a { 
+    line-height: 1.3 !important;
+    font-size: 13px;
+}
+
+.pager_button {
+    padding: 3px 5px;
+    font-size: 16px;
+    color: black;
+    display: inline-block;
+}
+
+.pager_button.active {
+    border-radius: 3px;
+    -webkit-border-radius: 3px;
+    background-color: gray;
+    color: white;
+}
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/icon.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/icon.png
new file mode 100644
index 0000000..abda6d9
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Video Planete.wgs/icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/icon.thumbnail.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/icon.thumbnail.png
new file mode 100644
index 0000000..abda6d9
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Video Planete.wgs/icon.thumbnail.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/down.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/down.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/down.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/down.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/greySquare.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/greySquare.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/greySquare.png
diff --git a/Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/icon-close.png
similarity index 100%
rename from Sankore-3.1/resources/library/interactivities/BlackYellow.wgt/images/icon-close.png
rename to Sankore-3.1/resources/library/search/Video Planete.wgs/images/icon-close.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/popupBack.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/popupBack.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/popupBack.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/search.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/search.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/search.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/search.png
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/images/search_app.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/search_app.png
new file mode 100644
index 0000000..efd8ea4
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/search_app.png differ
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/images/thumbnail_icon.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/thumbnail_icon.png
new file mode 100644
index 0000000..e296e4a
Binary files /dev/null and b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/thumbnail_icon.png differ
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/trgDown.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgDown.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/trgDown.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/trgUp.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/trgUp.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/trgUp.png
diff --git a/Sankore-3.1/resources/library/search/Google images.wgs/images/up.png b/Sankore-3.1/resources/library/search/Video Planete.wgs/images/up.png
similarity index 100%
copy from Sankore-3.1/resources/library/search/Google images.wgs/images/up.png
copy to Sankore-3.1/resources/library/search/Video Planete.wgs/images/up.png
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/index.html b/Sankore-3.1/resources/library/search/Video Planete.wgs/index.html
new file mode 100644
index 0000000..cd2d876
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Video Planete.wgs/index.html	
@@ -0,0 +1,254 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Planete Sankore Image Search</title>
+        <link rel="stylesheet" type="text/css" href="css/basic.css"/>
+        <script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
+        <script type="text/javascript">
+            var category = "video";
+            var thumbnails = false;
+            var minHeight = 177;
+            var minWidth = 150;
+            
+            var currentIndex = 0;
+            var currentTerm = "";
+            var limit = 10;
+            var filtersDisplayed = false; //display or hide filters
+ 
+            function addPaginationLinks(totalResults) {
+                var curPage = currentIndex; // check what page the app is on
+                var pagesDiv = $("<div id='resultFooter' class='resultFooter'>");
+                for (var i = 0; i < 8; i++) {
+                    if (i * limit < totalResults) {
+                   
+                    var link = $("<a class='pager_button'></a>").attr('href', 'javascript:gotoPage('+i+');').html(i+1).appendTo(pagesDiv);
+                    if (curPage == i) {
+                        link.addClass('active');
+                    }
+                    }
+                }
+
+                $("#disc_nav_cont #resultFooter").remove();
+                pagesDiv.insertBefore($('#disclaimer'));
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragstart", imageDragging, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragenter", imageDragenter, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragleave", imageDragleave, false);
+                })
+                
+                $(".imgContainer").each(function(){
+                    this.addEventListener("dragover", imageDragover, false);
+                })
+            }
+
+            function searchFail(jqXHR, textStatus, errorThrown) {
+              alert('Impossible to connect to Planete Sankore: ' + textStatus + ' ' + errorThrown);
+            }
+
+            function searchComplete(json) {
+                    // Grab our content div, clear it.
+                    var totalResults = json.totalResults;
+                    var contentDiv = $('#searchResult').empty();
+                    // Loop through our results, printing them to the page.
+                    var results = json.rows;
+                    for (var i = 0; i < results.length; i++) {
+                        // For each result write it's title and image to the screen
+                        var result = results[i];
+                        var imgContainer = $("<div class='imgContainer' draggable='true'>");
+                        var title = document.createElement('div');
+                        var iUrl = $("<input type='hidden'/>");
+                        var iContent = $("<input type='hidden'/>");
+                        var iHeight = $("<input type='hidden'/>");
+                        var iWidth = $("<input type='hidden'/>");
+                        var iTitle = $("<input type='hidden'/>");
+            
+                        // We use titleNoFormatting so that no HTML tags are left in the 
+                        // title
+                        title.innerHTML = result.title;
+                           	var newImg = document.createElement('img');
+
+                        	// There is also a result.file property which has the escaped version
+                            if (thumbnails) {
+        	                   	newImg.src = result.file;
+                            } else {
+        	                   	newImg.src = "./images/thumbnail_icon.png";
+            				}
+                        	var imgWidth = (result.tbWidth > minWidth)?result.tbWidth:minWidth;
+                        	var imgHeight = (result.tbHeight > minHeight)?result.tbHeight:minHeight;
+                        	imgContainer.width(imgWidth).height(imgHeight);
+                        	imgContainer.append($(newImg));
+			            iUrl.attr("value", result.file);
+                        iContent.attr("value", result.title);
+     		        iHeight.attr("value", result.height);
+                        iWidth.attr("value", result.width);
+                        iTitle.attr("value",result.title);
+                        imgContainer.append($(title));  
+                        imgContainer.append(iUrl);
+                        imgContainer.append(iContent);
+                        imgContainer.append(iHeight);
+                        imgContainer.append(iWidth);
+                        imgContainer.append(iTitle);
+
+                        // Put our title + image in the content
+                        imgContainer.appendTo(contentDiv);
+
+                    }
+                    // Now add links to additional pages of search results.
+                    addPaginationLinks(totalResults);
+            }
+
+            function imageDragging(e){
+                e.dataTransfer.setData("text/plain",$(this).find("input:hidden").eq(0).val());
+                // alert($(this).find("input:hidden").eq(0).val());
+            }
+            
+            function imageDragleave(e){
+                return false;
+            }
+            
+            function imageDragover(e){
+                return false;
+            }
+            
+            function imageDragenter(e){
+                return false;
+            }
+            
+            $(document).ready(function(){
+
+                //variables
+                var mode = false; //search or view mode
+                var hide = false; //hide or no main panel
+    
+                //basic containers and elements    
+                var disc_nav_cont = $("<div id='disc_nav_cont' class='disc_nav_cont'>").appendTo("body");    
+                var disclaimer = $("<div id='disclaimer' class='disclaimer'>Recherche de documents vidéo sur Planète Sankoré<div>").appendTo(disc_nav_cont);
+                var search = $("<div id='search' class='search'>").appendTo("body");
+				    
+                var togglePages = $("<div id='togglePages' class='togglePages'>").appendTo(search);
+                var toggleIcon = $("<div id='toggleIcon' class='toggleIcon'>").appendTo(togglePages);
+    
+                var subSearchInput = $("<div id='subSearchInput' class='subSearch'>").appendTo(search);
+                var subSearchFilter = $("<div id='subSearchFilter' class='subSearch'>").appendTo(search);
+    
+                var searchInput = $("<input id='searchInput' class='searchInput' type='text'/>").appendTo(subSearchInput);
+                var searchButton = $("<div id='searchButton' class='searchButton'>").appendTo(subSearchInput);
+                // var toggleFilters = $("<div id='toggleFilters' class='toggleFilters'>").appendTo(subSearchInput);
+    
+                //adding filters to the wgt
+                var selectFilter = $("<select id='sizeFilter' class='filterSelect'>")
+                .append($("<option value='0'>Any</option>"))
+                .append($("<option value='1'>Small</option>"))
+                .append($("<option value='2'>Medium</option>"))
+                .append($("<option value='3'>Large</option>"))
+                .append($("<option value='4'>Extra large</option>"));
+                $("<div class='filterContainer'>").append("<span>Size:</span>").append(selectFilter).appendTo(subSearchFilter);
+                
+                //mouse click actions 
+                /*
+                toggleFilters.click(function(){
+                    if(filtersDisplayed){
+                        subSearchFilter.hide();
+                        toggleFilters.css("background-image","url(images/down.png)");
+                        filtersDisplayed = false;
+                    } else {
+                        subSearchFilter.show();
+                        toggleFilters.css("background-image","url(images/up.png)");
+                        filtersDisplayed = true;
+                    }
+                });
+                */
+
+		/*togglePages.click(function(event){
+                    if(mode){
+                        hide = false;
+                        $("#search, #disclaimer").slideDown('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgUp.png)");
+                            togglePages.appendTo("#search").css("top","").css("bottom","-14px");                            
+                        });
+                        mode = false;
+                    } else {
+                        hide = true;
+                        $("#search, #disclaimer").slideUp('slow', function(){
+                            toggleIcon.css("background-image","url(images/trgDown.png)");
+                            togglePages.appendTo("body").css("top","0");                            
+                        });
+                        mode = true;
+                    }
+                });*/
+                
+                searchButton.click(function(){
+                    if(!hide){
+                        runSearch(searchInput.val(), 0);
+                        //togglePages.trigger("click");
+                    }
+                });
+                
+                searchInput.keydown(function(event){
+                    if(!hide){
+                        if((event.keyCode == 0xA)||(event.keyCode == 0xD)){
+                            runSearch(searchInput.val(), 0);
+                            //togglePages.trigger("click");
+                        }
+                              
+                    }
+                });
+                (
+                $(".imgContainer").live("click",function(){
+                    sankore.sendFileMetadata(createMetaData($(this)));
+                }));
+                
+				/*$(window).resize(function(){
+                    disclaimer.width($("body").width()-20);
+                    search.width($("body").width()-20);
+                    toggleIcon.css("margin-left",(togglePages.width()/2 - 7));
+                })*/
+				
+            });
+            
+            function gotoPage(i) { 
+		runSearch(currentTerm, i);             
+            } 
+
+            // launching the search on planete sankore 
+            function runSearch(term, index) {
+                currentTerm = term;
+                currentIndex = index;
+		var start = index * limit;
+                var url = "http://planete.sankore.org/xwiki/bin/view/Search/Resources?xpage=plain&category=" + category + "&level=&sort=title&dir=ASC&terms=" + escape(term) + "&start=" + start + "&limit=" + limit;
+		$.ajax({
+			url: url,
+  			success: searchComplete,
+  			error: searchFail,
+                        dataType: "json"
+		});
+            }
+ 
+            function createMetaData(parent){
+                var meta = "";
+                //alert($(this).find("input:hidden").eq(0).val());
+                meta = "<metadata><data><key>Type</key><value>Video</value></data><data><key>Url</key><value>" + 
+                    parent.find("input:hidden").eq(0).val() + 
+                    "</value></data><data><key>Content</key><value>" + 
+                    parent.find("input:hidden").eq(1).val() +
+                    "</value></data><data><key>Height</key><value>n/a</value></data>"+
+                    "<data><key>Width</key><value>n/a</value></data><data><key>Title</key><value>" +
+                    parent.find("input:hidden").eq(4).val() +
+                    "</value></data></metadata>";
+                return meta;
+            }
+        </script>
+
+    </head>
+    <body style="font-family: Arial;border: 0 none;">
+        <div id="searchResult"></div>
+    </body>
+</html>
diff --git a/Sankore-3.1/resources/library/search/Video Planete.wgs/scripts/jquery-1.6.2.min.js b/Sankore-3.1/resources/library/search/Video Planete.wgs/scripts/jquery-1.6.2.min.js
new file mode 100644
index 0000000..e67db74
--- /dev/null
+++ b/Sankore-3.1/resources/library/search/Video Planete.wgs/scripts/jquery-1.6.2.min.js	
@@ -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
diff --git "a/Sankore-3.1/resources/library/shape/bulle blanche ide\314\201e.svg" b/Sankore-3.1/resources/library/shape/bulle blanche idee.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/bulle blanche ide\314\201e.svg"
rename to Sankore-3.1/resources/library/shape/bulle blanche idee.svg
diff --git "a/Sankore-3.1/resources/library/shape/bulle bleue ide\314\201e.svg" b/Sankore-3.1/resources/library/shape/bulle bleue idee.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/bulle bleue ide\314\201e.svg"
rename to Sankore-3.1/resources/library/shape/bulle bleue idee.svg
diff --git "a/Sankore-3.1/resources/library/shape/bulle grise ide\314\201e.svg" b/Sankore-3.1/resources/library/shape/bulle grise idee.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/bulle grise ide\314\201e.svg"
rename to Sankore-3.1/resources/library/shape/bulle grise idee.svg
diff --git "a/Sankore-3.1/resources/library/shape/bulle rouge ide\314\201e.svg" b/Sankore-3.1/resources/library/shape/bulle rouge idee.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/bulle rouge ide\314\201e.svg"
rename to Sankore-3.1/resources/library/shape/bulle rouge idee.svg
diff --git "a/Sankore-3.1/resources/library/shape/bulle vide ide\314\201e.svg" b/Sankore-3.1/resources/library/shape/bulle vide idee.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/bulle vide ide\314\201e.svg"
rename to Sankore-3.1/resources/library/shape/bulle vide idee.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 blanc arr.svg" b/Sankore-3.1/resources/library/shape/carre blanc arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 blanc arr.svg"
rename to Sankore-3.1/resources/library/shape/carre blanc arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 blanc.svg" b/Sankore-3.1/resources/library/shape/carre blanc.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 blanc.svg"
rename to Sankore-3.1/resources/library/shape/carre blanc.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 bleu arr.svg" b/Sankore-3.1/resources/library/shape/carre bleu arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 bleu arr.svg"
rename to Sankore-3.1/resources/library/shape/carre bleu arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 bleu.svg" b/Sankore-3.1/resources/library/shape/carre bleu.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 bleu.svg"
rename to Sankore-3.1/resources/library/shape/carre bleu.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 gris arr.svg" b/Sankore-3.1/resources/library/shape/carre gris arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 gris arr.svg"
rename to Sankore-3.1/resources/library/shape/carre gris arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 gris.svg" b/Sankore-3.1/resources/library/shape/carre gris.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 gris.svg"
rename to Sankore-3.1/resources/library/shape/carre gris.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 rouge arr.svg" b/Sankore-3.1/resources/library/shape/carre rouge arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 rouge arr.svg"
rename to Sankore-3.1/resources/library/shape/carre rouge arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 rouge.svg" b/Sankore-3.1/resources/library/shape/carre rouge.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 rouge.svg"
rename to Sankore-3.1/resources/library/shape/carre rouge.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 vide arr.svg" b/Sankore-3.1/resources/library/shape/carre vide arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 vide arr.svg"
rename to Sankore-3.1/resources/library/shape/carre vide arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/carre\314\201 vide.svg" b/Sankore-3.1/resources/library/shape/carre vide.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/carre\314\201 vide.svg"
rename to Sankore-3.1/resources/library/shape/carre vide.svg
diff --git "a/Sankore-3.1/resources/library/shape/carr\303\251 blanc arr.svg" "b/Sankore-3.1/resources/library/shape/carr\303\251 blanc arr.svg"
deleted file mode 100644
index a1721d4..0000000
--- "a/Sankore-3.1/resources/library/shape/carr\303\251 blanc arr.svg"	
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="116.314px"
-   height="116.314px"
-   viewBox="0 0 116.314 116.314"
-   enable-background="new 0 0 116.314 116.314"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_square_rnd.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata7161"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs7159"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 58.157001 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="116.314 : 58.157001 : 1"
-   inkscape:persp3d-origin="58.157001 : 38.771334 : 1"
-   id="perspective7163" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient7681"
-   gradientUnits="userSpaceOnUse"
-   x1="2.1924"
-   y1="56.8423"
-   x2="110.7549"
-   y2="56.8423" />
-		<linearGradient
-   id="SVGID_1_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.1924"
-   y1="56.8423"
-   x2="110.7549"
-   y2="56.8423">
-			<stop
-   offset="0"
-   style="stop-color:#FF897A"
-   id="stop7152" />
-			<stop
-   offset="1"
-   style="stop-color:#FF3400"
-   id="stop7154" />
-		</linearGradient>
-		
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient7687"
-   gradientUnits="userSpaceOnUse"
-   x1="2.1924"
-   y1="56.8423"
-   x2="110.7549"
-   y2="56.8423" />
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="970"
-   inkscape:window-width="1680"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="4.1611499"
-   inkscape:cx="11.054637"
-   inkscape:cy="58.157001"
-   inkscape:window-x="-8"
-   inkscape:window-y="-8"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g7690">
-   
-     
-     <path
-     style="opacity:0.25;fill-rule:evenodd"
-     id="path7147"
-     d="M 5.887,31.278 C 5.887,16.869 17.566,5.19 31.975,5.19 L 88.364,5.19 C 102.772,5.19 114.45,16.869 114.45,31.278 L 114.45,87.666 C 114.45,102.074 102.772,113.754 88.364,113.754 L 31.975,113.754 C 17.566,113.754 5.887,102.074 5.887,87.666 L 5.887,31.278 z"
-     clip-rule="evenodd" /><path
-     style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
-     id="path7156"
-     d="M 2.192,28.648 C 2.192,14.239 13.87,2.56 28.28,2.56 L 84.669,2.56 C 99.077,2.56 110.755,14.239 110.755,28.648 L 110.755,85.036 C 110.755,99.444 99.077,111.124 84.669,111.124 L 28.28,111.124 C 13.87,111.124 2.192,99.444 2.192,85.036 L 2.192,28.648 z"
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/carr\303\251 blanc.svg" "b/Sankore-3.1/resources/library/shape/carr\303\251 blanc.svg"
deleted file mode 100644
index 9bbb695..0000000
--- "a/Sankore-3.1/resources/library/shape/carr\303\251 blanc.svg"	
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="116.314px"
-   height="116.314px"
-   viewBox="0 0 116.314 116.314"
-   enable-background="new 0 0 116.314 116.314"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_square.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata6561"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs6559"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 58.157001 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="116.314 : 58.157001 : 1"
-   inkscape:persp3d-origin="58.157001 : 38.771334 : 1"
-   id="perspective6563" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient6572"
-   gradientUnits="userSpaceOnUse"
-   x1="2.1914001"
-   y1="56.8423"
-   x2="110.7539"
-   y2="56.8423" />
-		<linearGradient
-   id="SVGID_1_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.1914001"
-   y1="56.8423"
-   x2="110.7539"
-   y2="56.8423">
-			<stop
-   offset="0"
-   style="stop-color:#FF897A"
-   id="stop6552" />
-			<stop
-   offset="1"
-   style="stop-color:#FF3400"
-   id="stop6554" />
-		</linearGradient>
-		
-			
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient6578"
-   gradientUnits="userSpaceOnUse"
-   x1="2.1914001"
-   y1="56.8423"
-   x2="110.7539"
-   y2="56.8423" />
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="970"
-   inkscape:window-width="1680"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="4.1611499"
-   inkscape:cx="11.054637"
-   inkscape:cy="58.157001"
-   inkscape:window-x="-8"
-   inkscape:window-y="-8"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g7090">
-   
-     
-     <rect
-     style="opacity:0.25;fill-rule:evenodd"
-     id="rect6547"
-     height="108.563"
-     width="108.563"
-     clip-rule="evenodd"
-     y="5.1900001"
-     x="5.8860002" /><rect
-     style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;fill-opacity:1;stroke-opacity:1"
-     id="rect6556"
-     height="108.563"
-     width="108.562"
-     clip-rule="evenodd"
-     y="2.5610001"
-     x="2.191" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile blanche arr.svg" b/Sankore-3.1/resources/library/shape/etoile blanche arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile blanche arr.svg"
rename to Sankore-3.1/resources/library/shape/etoile blanche arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile blanche.svg" b/Sankore-3.1/resources/library/shape/etoile blanche.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile blanche.svg"
rename to Sankore-3.1/resources/library/shape/etoile blanche.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile bleue arr.svg" b/Sankore-3.1/resources/library/shape/etoile bleue arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile bleue arr.svg"
rename to Sankore-3.1/resources/library/shape/etoile bleue arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile bleue.svg" b/Sankore-3.1/resources/library/shape/etoile bleue.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile bleue.svg"
rename to Sankore-3.1/resources/library/shape/etoile bleue.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile grise arr.svg" b/Sankore-3.1/resources/library/shape/etoile grise arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile grise arr.svg"
rename to Sankore-3.1/resources/library/shape/etoile grise arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile grise.svg" b/Sankore-3.1/resources/library/shape/etoile grise.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile grise.svg"
rename to Sankore-3.1/resources/library/shape/etoile grise.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile rouge arr.svg" b/Sankore-3.1/resources/library/shape/etoile rouge arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile rouge arr.svg"
rename to Sankore-3.1/resources/library/shape/etoile rouge arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile rouge.svg" b/Sankore-3.1/resources/library/shape/etoile rouge.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile rouge.svg"
rename to Sankore-3.1/resources/library/shape/etoile rouge.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile vide arr.svg" b/Sankore-3.1/resources/library/shape/etoile vide arr.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile vide arr.svg"
rename to Sankore-3.1/resources/library/shape/etoile vide arr.svg
diff --git "a/Sankore-3.1/resources/library/shape/e\314\201toile vide.svg" b/Sankore-3.1/resources/library/shape/etoile vide.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/e\314\201toile vide.svg"
rename to Sankore-3.1/resources/library/shape/etoile vide.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che blanche bas.svg" b/Sankore-3.1/resources/library/shape/fleche blanche bas.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che blanche bas.svg"
rename to Sankore-3.1/resources/library/shape/fleche blanche bas.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che blanche droite.svg" b/Sankore-3.1/resources/library/shape/fleche blanche droite.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che blanche droite.svg"
rename to Sankore-3.1/resources/library/shape/fleche blanche droite.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che blanche gauche.svg" b/Sankore-3.1/resources/library/shape/fleche blanche gauche.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che blanche gauche.svg"
rename to Sankore-3.1/resources/library/shape/fleche blanche gauche.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che blanche haut.svg" b/Sankore-3.1/resources/library/shape/fleche blanche haut.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che blanche haut.svg"
rename to Sankore-3.1/resources/library/shape/fleche blanche haut.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che bleue bas.svg" b/Sankore-3.1/resources/library/shape/fleche bleue bas.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che bleue bas.svg"
rename to Sankore-3.1/resources/library/shape/fleche bleue bas.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che bleue droite.svg" b/Sankore-3.1/resources/library/shape/fleche bleue droite.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che bleue droite.svg"
rename to Sankore-3.1/resources/library/shape/fleche bleue droite.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che bleue gauche.svg" b/Sankore-3.1/resources/library/shape/fleche bleue gauche.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che bleue gauche.svg"
rename to Sankore-3.1/resources/library/shape/fleche bleue gauche.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che bleue haut.svg" b/Sankore-3.1/resources/library/shape/fleche bleue haut.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che bleue haut.svg"
rename to Sankore-3.1/resources/library/shape/fleche bleue haut.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che grise bas.svg" b/Sankore-3.1/resources/library/shape/fleche grise bas.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che grise bas.svg"
rename to Sankore-3.1/resources/library/shape/fleche grise bas.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che grise droite.svg" b/Sankore-3.1/resources/library/shape/fleche grise droite.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che grise droite.svg"
rename to Sankore-3.1/resources/library/shape/fleche grise droite.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che grise gauche.svg" b/Sankore-3.1/resources/library/shape/fleche grise gauche.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che grise gauche.svg"
rename to Sankore-3.1/resources/library/shape/fleche grise gauche.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che grise haut.svg" b/Sankore-3.1/resources/library/shape/fleche grise haut.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che grise haut.svg"
rename to Sankore-3.1/resources/library/shape/fleche grise haut.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che rouge bas.svg" b/Sankore-3.1/resources/library/shape/fleche rouge bas.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che rouge bas.svg"
rename to Sankore-3.1/resources/library/shape/fleche rouge bas.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che rouge droite.svg" b/Sankore-3.1/resources/library/shape/fleche rouge droite.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che rouge droite.svg"
rename to Sankore-3.1/resources/library/shape/fleche rouge droite.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che rouge gauche.svg" b/Sankore-3.1/resources/library/shape/fleche rouge gauche.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che rouge gauche.svg"
rename to Sankore-3.1/resources/library/shape/fleche rouge gauche.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che rouge haut.svg" b/Sankore-3.1/resources/library/shape/fleche rouge haut.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che rouge haut.svg"
rename to Sankore-3.1/resources/library/shape/fleche rouge haut.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che vide bas.svg" b/Sankore-3.1/resources/library/shape/fleche vide bas.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che vide bas.svg"
rename to Sankore-3.1/resources/library/shape/fleche vide bas.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che vide droite.svg" b/Sankore-3.1/resources/library/shape/fleche vide droite.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che vide droite.svg"
rename to Sankore-3.1/resources/library/shape/fleche vide droite.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che vide gauche.svg" b/Sankore-3.1/resources/library/shape/fleche vide gauche.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che vide gauche.svg"
rename to Sankore-3.1/resources/library/shape/fleche vide gauche.svg
diff --git "a/Sankore-3.1/resources/library/shape/fle\314\200che vide haut.svg" b/Sankore-3.1/resources/library/shape/fleche vide haut.svg
similarity index 100%
rename from "Sankore-3.1/resources/library/shape/fle\314\200che vide haut.svg"
rename to Sankore-3.1/resources/library/shape/fleche vide haut.svg
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche bas.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che blanche bas.svg"
deleted file mode 100644
index e427052..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche bas.svg"	
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="96.661px"
-   height="119.096px"
-   viewBox="0 0 96.661 119.096"
-   enable-background="new 0 0 96.661 119.096"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_arrow_down.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata4418"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs4416"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 59.548 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="96.661003 : 59.548 : 1"
-   inkscape:persp3d-origin="48.330502 : 39.698667 : 1"
-   id="perspective4420" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4429"
-   gradientUnits="userSpaceOnUse"
-   x1="2.6235001"
-   y1="58.913601"
-   x2="90.977997"
-   y2="58.913601" />
-		<linearGradient
-   id="SVGID_2_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.6235001"
-   y1="58.913601"
-   x2="90.977997"
-   y2="58.913601">
-			<stop
-   offset="0"
-   style="stop-color:#FFFFFF"
-   id="stop4411" />
-		</linearGradient>
-		
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4434"
-   gradientUnits="userSpaceOnUse"
-   x1="2.6235001"
-   y1="58.913601"
-   x2="90.977997"
-   y2="58.913601" />
-		
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="669"
-   inkscape:window-width="640"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="4.0639484"
-   inkscape:cx="48.330502"
-   inkscape:cy="59.548"
-   inkscape:window-x="92"
-   inkscape:window-y="92"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g4438">
-
-     <path
-     style="opacity:0.25;fill-rule:evenodd"
-     id="path4404"
-     d="M 36.043,64.812 L 36.043,8.574 C 36.043,7.337 37.129,6.249 38.368,6.249 L 63.62,6.249 C 64.856,6.249 65.946,7.337 65.946,8.574 L 65.946,64.812 L 92.092,64.812 C 94.583,64.812 95.484,66.802 93.838,68.673 L 52.242,116.013 C 51.277,117.112 49.711,117.112 48.746,116.013 L 7.151,68.674 C 5.506,66.803 6.406,64.813 8.897,64.813 L 36.043,64.813 L 36.043,64.812 z"
-     clip-rule="evenodd" /><path
-     style="fill:url(#linearGradient4434);fill-rule:evenodd;stroke:#000000"
-     id="path4413"
-     d="M 32.349,62.183 L 32.349,5.944 C 32.349,4.707 33.435,3.619 34.673,3.619 L 59.925,3.619 C 61.161,3.619 62.251,4.707 62.251,5.944 L 62.251,62.182 L 88.397,62.182 C 90.889,62.182 91.79,64.172 90.143,66.043 L 48.547,113.383 C 47.582,114.482 46.016,114.482 45.051,113.383 L 3.457,66.044 C 1.812,64.173 2.711,62.183 5.203,62.183 L 32.349,62.183 z"
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche droite.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che blanche droite.svg"
deleted file mode 100644
index 593b5c6..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche droite.svg"	
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="119.268px"
-   height="96.873px"
-   viewBox="0 0 119.268 96.873"
-   enable-background="new 0 0 119.268 96.873"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_arrow_right.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata4600"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs4598"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 48.436501 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="119.268 : 48.436501 : 1"
-   inkscape:persp3d-origin="59.633999 : 32.291 : 1"
-   id="perspective4602" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4611"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8101001"
-   y1="47.8018"
-   x2="113.3979"
-   y2="47.8018" />
-		<linearGradient
-   id="SVGID_2_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8101001"
-   y1="47.8018"
-   x2="113.3979"
-   y2="47.8018">
-	<stop
-   offset="0"
-   style="stop-color:#FFFFFF"
-   id="stop4593" />
-		</linearGradient>
-		
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4616"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8101001"
-   y1="47.8018"
-   x2="113.3979"
-   y2="47.8018" />
-		
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="669"
-   inkscape:window-width="640"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="4.745615"
-   inkscape:cx="59.633999"
-   inkscape:cy="48.436501"
-   inkscape:window-x="184"
-   inkscape:window-y="184"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g4620">
-
-     
-     <path
-     style="opacity:0.25;fill-rule:evenodd"
-     id="path4586"
-     d="M 65.069,64.885 L 8.831,64.885 C 7.593,64.885 6.505,63.797 6.505,62.559 L 6.505,37.307 C 6.505,36.07 7.593,34.982 8.831,34.982 L 65.069,34.982 L 65.069,8.834 C 65.069,6.341 67.057,5.443 68.93,7.086 L 116.27,48.685 C 117.368,49.65 117.368,51.214 116.27,52.179 L 68.93,93.776 C 67.057,95.422 65.069,94.521 65.069,92.031 L 65.069,64.885 z"
-     clip-rule="evenodd" /><path
-     style="fill:url(#linearGradient4616);fill-rule:evenodd;stroke:#000000"
-     id="path4595"
-     d="M 61.375,62.255 L 5.136,62.255 C 3.898,62.255 2.81,61.167 2.81,59.929 L 2.81,34.677 C 2.81,33.44 3.898,32.352 5.136,32.352 L 61.375,32.352 L 61.375,6.204 C 61.375,3.711 63.363,2.813 65.235,4.456 L 112.575,46.055 C 113.673,47.02 113.673,48.584 112.575,49.549 L 65.235,91.147 C 63.363,92.793 61.375,91.892 61.375,89.402 L 61.375,62.255 z"
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche gauche.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che blanche gauche.svg"
deleted file mode 100644
index 90e42e3..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche gauche.svg"	
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="119.268px"
-   height="96.873px"
-   viewBox="0 0 119.268 96.873"
-   enable-background="new 0 0 119.268 96.873"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_arrow_left.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata4509"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs4507"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 48.436501 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="119.268 : 48.436501 : 1"
-   inkscape:persp3d-origin="59.633999 : 32.291 : 1"
-   id="perspective4511" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4520"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8104999"
-   y1="47.8018"
-   x2="113.3989"
-   y2="47.8018" />
-		<linearGradient
-   id="SVGID_2_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8104999"
-   y1="47.8018"
-   x2="113.3989"
-   y2="47.8018">
-	<stop
-   offset="0"
-   style="stop-color:#FFFFFF"
-   id="stop4502" />
-		</linearGradient>
-		
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4525"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8104999"
-   y1="47.8018"
-   x2="113.3989"
-   y2="47.8018" />
-		
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="669"
-   inkscape:window-width="640"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="4.745615"
-   inkscape:cx="59.633999"
-   inkscape:cy="48.436501"
-   inkscape:window-x="138"
-   inkscape:window-y="138"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g4529">
-
-     <path
-     style="opacity:0.25;fill-rule:evenodd"
-     id="path4495"
-     d="M 58.528,35.98 L 114.769,35.98 C 116.005,35.98 117.093,37.066 117.093,38.305 L 117.093,63.558 C 117.093,64.793 116.005,65.883 114.769,65.883 L 58.528,65.883 L 58.528,92.03 C 58.528,94.52 56.54,95.421 54.668,93.775 L 7.328,52.179 C 6.231,51.216 6.231,49.65 7.328,48.685 L 54.668,7.086 C 56.54,5.443 58.528,6.341 58.528,8.834 L 58.528,35.98 L 58.528,35.98 z"
-     clip-rule="evenodd" /><path
-     style="fill:url(#linearGradient4525);fill-rule:evenodd;stroke:#000000"
-     id="path4504"
-     d="M 54.833,33.351 L 111.074,33.351 C 112.311,33.351 113.399,34.437 113.399,35.676 L 113.399,60.929 C 113.399,62.164 112.311,63.254 111.074,63.254 L 54.833,63.254 L 54.833,89.401 C 54.833,91.891 52.845,92.792 50.974,91.146 L 3.633,49.549 C 2.536,48.586 2.536,47.02 3.633,46.055 L 50.974,4.456 C 52.845,2.813 54.833,3.711 54.833,6.204 L 54.833,33.351 z"
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche haut.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che blanche haut.svg"
deleted file mode 100644
index b13c877..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che blanche haut.svg"	
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="96.661px"
-   height="119.096px"
-   viewBox="0 0 96.661 119.096"
-   enable-background="new 0 0 96.661 119.096"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_arrow_up.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata4711"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs4709"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 59.548 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="96.661003 : 59.548 : 1"
-   inkscape:persp3d-origin="48.330502 : 39.698667 : 1"
-   id="perspective4713" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4722"
-   gradientUnits="userSpaceOnUse"
-   x1="2.6229999"
-   y1="58.913601"
-   x2="90.977997"
-   y2="58.913601" />
-		<linearGradient
-   id="SVGID_2_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.6229999"
-   y1="58.913601"
-   x2="90.977997"
-   y2="58.913601">
-	<stop
-   offset="0"
-   style="stop-color:#FFFFFF"
-   id="stop4704" />
-		</linearGradient>
-		
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient4727"
-   gradientUnits="userSpaceOnUse"
-   x1="2.6229999"
-   y1="58.913601"
-   x2="90.977997"
-   y2="58.913601" />
-		
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="669"
-   inkscape:window-width="640"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="4.0639484"
-   inkscape:cx="48.330502"
-   inkscape:cy="59.548"
-   inkscape:window-x="394"
-   inkscape:window-y="149"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g4731">
-   
-     
-     <path
-     style="opacity:0.25;fill-rule:evenodd"
-     id="path4697"
-     d="M 64.949,58.272 L 64.949,114.512 C 64.949,115.748 63.86,116.838 62.623,116.838 L 37.371,116.838 C 36.133,116.838 35.045,115.748 35.045,114.512 L 35.045,58.272 L 8.898,58.272 C 6.407,58.272 5.505,56.283 7.152,54.413 L 48.749,7.072 C 49.713,5.973 51.278,5.973 52.242,7.072 L 93.84,54.413 C 95.484,56.283 94.585,58.272 92.092,58.272 L 64.949,58.272 z"
-     clip-rule="evenodd" /><path
-     style="fill:url(#linearGradient4727);fill-rule:evenodd;stroke:#000000"
-     id="path4706"
-     d="M 61.253,55.643 L 61.253,111.883 C 61.253,113.119 60.165,114.209 58.927,114.209 L 33.675,114.209 C 32.437,114.209 31.349,113.119 31.349,111.883 L 31.349,55.643 L 5.203,55.643 C 2.713,55.643 1.81,53.654 3.457,51.784 L 45.054,4.442 C 46.017,3.343 47.583,3.343 48.546,4.442 L 90.146,51.783 C 91.789,53.653 90.89,55.642 88.398,55.642 L 61.253,55.642 L 61.253,55.643 z"
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue bas.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che bleue bas.svg"
deleted file mode 100644
index 7613a3f..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue bas.svg"	
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="97.773px" height="118.167px" viewBox="0 0 97.773 118.167" enable-background="new 0 0 97.773 118.167"
-	 xml:space="preserve">
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M36.547,64.229V7.991c0-1.237,1.086-2.325,2.325-2.325h25.252
-			c1.236,0,2.326,1.088,2.326,2.325v56.238h26.146c2.491,0,3.392,1.99,1.746,3.861l-41.596,47.34c-0.965,1.099-2.531,1.099-3.496,0
-			L7.655,68.09c-1.645-1.871-0.745-3.861,1.746-3.861H36.547z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M36.547,64.229V7.991c0-1.237,1.086-2.325,2.325-2.325h25.252
-			c1.236,0,2.326,1.088,2.326,2.325v56.238h26.146c2.491,0,3.392,1.99,1.746,3.861l-41.596,47.34c-0.965,1.099-2.531,1.099-3.496,0
-			L7.655,68.09c-1.645-1.871-0.745-3.861,1.746-3.861H36.547z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.2305" y1="58.5679" x2="91.5854" y2="58.5679">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#194E6A" d="M32.956,61.836V5.598
-			c0-1.236,1.086-2.324,2.326-2.324h25.252c1.236,0,2.326,1.088,2.326,2.324v56.238h26.146c2.49,0,3.391,1.99,1.746,3.861
-			l-41.596,47.34c-0.965,1.1-2.531,1.1-3.496,0L4.063,65.698c-1.645-1.871-0.744-3.861,1.746-3.861H32.956z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.2305" y1="58.5679" x2="91.5854" y2="58.5679">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#194E6A" d="M32.956,61.836V5.598
-			c0-1.236,1.086-2.324,2.326-2.324h25.252c1.236,0,2.326,1.088,2.326,2.324v56.238h26.146c2.49,0,3.391,1.99,1.746,3.861
-			l-41.596,47.34c-0.965,1.1-2.531,1.1-3.496,0L4.063,65.698c-1.645-1.871-0.744-3.861,1.746-3.861H32.956z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue droite.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che bleue droite.svg"
deleted file mode 100644
index cd147f7..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue droite.svg"	
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="121.085px" height="95.54px" viewBox="0 0 121.085 95.54" enable-background="new 0 0 121.085 95.54" xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M65.925,64.1H9.687c-1.238,0-2.326-1.088-2.326-2.326V36.522
-			c0-1.237,1.088-2.325,2.326-2.325h56.239V8.049c0-2.493,1.988-3.391,3.861-1.748l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494
-			l-47.34,41.598c-1.873,1.646-3.861,0.745-3.861-1.745V64.1z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M65.925,64.1H9.687c-1.238,0-2.326-1.088-2.326-2.326V36.522
-			c0-1.237,1.088-2.325,2.326-2.325h56.239V8.049c0-2.493,1.988-3.391,3.861-1.748l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494
-			l-47.34,41.598c-1.873,1.646-3.861,0.745-3.861-1.745V64.1z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.77" y1="47.2549" x2="114.3589" y2="47.2549">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#194E6A" d="M62.334,61.707H6.096
-			c-1.238,0-2.326-1.088-2.326-2.326V34.129c0-1.236,1.088-2.324,2.326-2.324h56.239V5.657c0-2.492,1.988-3.391,3.861-1.748
-			l47.34,41.6c1.098,0.965,1.098,2.529,0,3.494L66.196,90.6c-1.873,1.645-3.861,0.744-3.861-1.746V61.707z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.77" y1="47.2549" x2="114.3589" y2="47.2549">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#194E6A" d="M62.334,61.707H6.096
-			c-1.238,0-2.326-1.088-2.326-2.326V34.129c0-1.236,1.088-2.324,2.326-2.324h56.239V5.657c0-2.492,1.988-3.391,3.861-1.748
-			l47.34,41.6c1.098,0.965,1.098,2.529,0,3.494L66.196,90.6c-1.873,1.645-3.861,0.744-3.861-1.746V61.707z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue gauche.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che bleue gauche.svg"
deleted file mode 100644
index 64cf0f8..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue gauche.svg"	
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="121.085px" height="95.54px" viewBox="0 0 121.085 95.54" enable-background="new 0 0 121.085 95.54" xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M59.385,35.196h56.24c1.236,0,2.324,1.086,2.324,2.325v25.253
-			c0,1.235-1.088,2.325-2.324,2.325h-56.24v26.147c0,2.49-1.988,3.391-3.86,1.745L8.184,51.395c-1.097-0.963-1.097-2.53,0-3.495
-			l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V35.196z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M59.385,35.196h56.24c1.236,0,2.324,1.086,2.324,2.325v25.253
-			c0,1.235-1.088,2.325-2.324,2.325h-56.24v26.147c0,2.49-1.988,3.391-3.86,1.745L8.184,51.395c-1.097-0.963-1.097-2.53,0-3.495
-			l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V35.196z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.771" y1="47.2554" x2="114.3589" y2="47.2554">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#194E6A" d="M55.794,32.803h56.24
-			c1.237,0,2.325,1.086,2.325,2.326v25.252c0,1.236-1.088,2.326-2.325,2.326h-56.24v26.146c0,2.49-1.988,3.391-3.86,1.746
-			L4.593,49.002c-1.097-0.963-1.097-2.529,0-3.494l47.34-41.6c1.872-1.643,3.86-0.744,3.86,1.748V32.803z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.771" y1="47.2554" x2="114.3589" y2="47.2554">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#194E6A" d="M55.794,32.803h56.24
-			c1.237,0,2.325,1.086,2.325,2.326v25.252c0,1.236-1.088,2.326-2.325,2.326h-56.24v26.146c0,2.49-1.988,3.391-3.86,1.746
-			L4.593,49.002c-1.097-0.963-1.097-2.529,0-3.494l47.34-41.6c1.872-1.643,3.86-0.744,3.86,1.748V32.803z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue haut.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che bleue haut.svg"
deleted file mode 100644
index 331c491..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che bleue haut.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="97.773px" height="118.167px" viewBox="0 0 97.773 118.167" enable-background="new 0 0 97.773 118.167"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M65.453,57.689v56.24c0,1.236-1.089,2.326-2.326,2.326H37.875
-			c-1.238,0-2.326-1.09-2.326-2.326v-56.24H9.402c-2.491,0-3.393-1.989-1.746-3.859L49.252,6.489c0.964-1.099,2.529-1.099,3.493,0
-			L94.344,53.83c1.644,1.87,0.745,3.859-1.748,3.859H65.453z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M65.453,57.689v56.24c0,1.236-1.089,2.326-2.326,2.326H37.875
-			c-1.238,0-2.326-1.09-2.326-2.326v-56.24H9.402c-2.491,0-3.393-1.989-1.746-3.859L49.252,6.489c0.964-1.099,2.529-1.099,3.493,0
-			L94.344,53.83c1.644,1.87,0.745,3.859-1.748,3.859H65.453z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.231" y1="58.5684" x2="91.5854" y2="58.5684">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#194E6A" d="M61.862,55.297v56.24
-			c0,1.236-1.09,2.326-2.326,2.326H34.284c-1.238,0-2.326-1.09-2.326-2.326v-56.24H5.811c-2.492,0-3.393-1.99-1.746-3.859
-			L45.661,4.096c0.965-1.098,2.529-1.098,3.494,0l41.598,47.342c1.645,1.869,0.746,3.859-1.748,3.859H61.862z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.231" y1="58.5684" x2="91.5854" y2="58.5684">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#194E6A" d="M61.862,55.297v56.24
-			c0,1.236-1.09,2.326-2.326,2.326H34.284c-1.238,0-2.326-1.09-2.326-2.326v-56.24H5.811c-2.492,0-3.393-1.99-1.746-3.859
-			L45.661,4.096c0.965-1.098,2.529-1.098,3.494,0l41.598,47.342c1.645,1.869,0.746,3.859-1.748,3.859H61.862z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che grise bas.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che grise bas.svg"
deleted file mode 100644
index d68b521..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che grise bas.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="96.402px" height="118.167px" viewBox="0 0 96.402 118.167" enable-background="new 0 0 96.402 118.167"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M35.026,63.52V7.282c0-1.237,1.086-2.325,2.325-2.325h25.251
-			c1.236,0,2.326,1.088,2.326,2.325V63.52h26.146c2.491,0,3.392,1.99,1.746,3.861l-41.596,47.34c-0.965,1.1-2.531,1.1-3.496,0
-			L6.133,67.381C4.489,65.51,5.388,63.52,7.879,63.52H35.026z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M35.026,63.52V7.282c0-1.237,1.086-2.325,2.325-2.325h25.251
-			c1.236,0,2.326,1.088,2.326,2.325V63.52h26.146c2.491,0,3.392,1.99,1.746,3.861l-41.596,47.34c-0.965,1.1-2.531,1.1-3.496,0
-			L6.133,67.381C4.489,65.51,5.388,63.52,7.879,63.52H35.026z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.3823" y1="59.4331" x2="91.9873" y2="59.4331">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#414141" d="M33.191,62.711V6.313
-			c0-1.24,1.09-2.332,2.334-2.332h25.322c1.24,0,2.332,1.092,2.332,2.332v56.398h26.221c2.5,0,3.402,1.996,1.752,3.873
-			l-41.714,47.473c-0.967,1.104-2.537,1.104-3.506,0L4.218,66.584c-1.65-1.877-0.748-3.873,1.75-3.873H33.191z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.3823" y1="59.4331" x2="91.9873" y2="59.4331">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#414141" d="M33.191,62.711V6.313
-			c0-1.24,1.09-2.332,2.334-2.332h25.322c1.24,0,2.332,1.092,2.332,2.332v56.398h26.221c2.5,0,3.402,1.996,1.752,3.873
-			l-41.714,47.473c-0.967,1.104-2.537,1.104-3.506,0L4.218,66.584c-1.65-1.877-0.748-3.873,1.75-3.873H33.191z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che grise droite.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che grise droite.svg"
deleted file mode 100644
index 32f50aa..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che grise droite.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="118.344px" height="94.854px" viewBox="0 0 118.344 94.854" enable-background="new 0 0 118.344 94.854"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M64.195,63.032H7.956c-1.237,0-2.325-1.088-2.325-2.326V35.454
-			c0-1.237,1.088-2.325,2.325-2.325h56.239V6.981c0-2.493,1.988-3.391,3.861-1.748l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494
-			l-47.34,41.598c-1.873,1.646-3.861,0.745-3.861-1.745V63.032z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M64.195,63.032H7.956c-1.237,0-2.325-1.088-2.325-2.326V35.454
-			c0-1.237,1.088-2.325,2.325-2.325h56.239V6.981c0-2.493,1.988-3.391,3.861-1.748l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494
-			l-47.34,41.598c-1.873,1.646-3.861,0.745-3.861-1.745V63.032z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.7588" y1="47.7617" x2="113.6621" y2="47.7617">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#414141" d="M61.49,62.254H5.092
-			c-1.241,0-2.333-1.09-2.333-2.332V34.599c0-1.24,1.092-2.332,2.333-2.332H61.49V6.046c0-2.5,1.994-3.4,3.872-1.754l47.475,41.717
-			c1.101,0.969,1.101,2.537,0,3.503L65.362,91.229c-1.878,1.65-3.872,0.748-3.872-1.75V62.254z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.7588" y1="47.7617" x2="113.6621" y2="47.7617">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#414141" d="M61.49,62.254H5.092
-			c-1.241,0-2.333-1.09-2.333-2.332V34.599c0-1.24,1.092-2.332,2.333-2.332H61.49V6.046c0-2.5,1.994-3.4,3.872-1.754l47.475,41.717
-			c1.101,0.969,1.101,2.537,0,3.503L65.362,91.229c-1.878,1.65-3.872,0.748-3.872-1.75V62.254z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che grise gauche.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che grise gauche.svg"
deleted file mode 100644
index a895bb8..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che grise gauche.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="118.344px" height="94.854px" viewBox="0 0 118.344 94.854" enable-background="new 0 0 118.344 94.854"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M57.918,34.128h56.24c1.236,0,2.324,1.086,2.324,2.325v25.252
-			c0,1.235-1.088,2.325-2.324,2.325h-56.24v26.147c0,2.49-1.988,3.391-3.86,1.745L6.717,50.326c-1.097-0.963-1.097-2.529,0-3.494
-			l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V34.128z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M57.918,34.128h56.24c1.236,0,2.324,1.086,2.324,2.325v25.252
-			c0,1.235-1.088,2.325-2.324,2.325h-56.24v26.147c0,2.49-1.988,3.391-3.86,1.745L6.717,50.326c-1.097-0.963-1.097-2.529,0-3.494
-			l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V34.128z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.4966" y1="47.7617" x2="113.3994" y2="47.7617">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#414141" d="M54.668,33.269h56.4
-			c1.24,0,2.331,1.09,2.331,2.332v25.324c0,1.24-1.091,2.332-2.331,2.332h-56.4v26.223c0,2.498-1.994,3.4-3.871,1.75L3.322,49.512
-			c-1.1-0.964-1.1-2.535,0-3.503L50.797,4.292c1.877-1.646,3.871-0.746,3.871,1.754V33.269z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.4966" y1="47.7617" x2="113.3994" y2="47.7617">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#414141" d="M54.668,33.269h56.4
-			c1.24,0,2.331,1.09,2.331,2.332v25.324c0,1.24-1.091,2.332-2.331,2.332h-56.4v26.223c0,2.498-1.994,3.4-3.871,1.75L3.322,49.512
-			c-1.1-0.964-1.1-2.535,0-3.503L50.797,4.292c1.877-1.646,3.871-0.746,3.871,1.754V33.269z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che grise haut.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che grise haut.svg"
deleted file mode 100644
index d4db805..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che grise haut.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="96.402px" height="118.167px" viewBox="0 0 96.402 118.167" enable-background="new 0 0 96.402 118.167"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M64.151,56.98v56.241c0,1.236-1.089,2.326-2.326,2.326H36.573
-			c-1.238,0-2.326-1.09-2.326-2.326V56.98H8.101c-2.491,0-3.393-1.989-1.746-3.859L47.951,5.78c0.964-1.099,2.529-1.099,3.493,0
-			l41.599,47.341c1.644,1.87,0.745,3.859-1.748,3.859H64.151z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M64.151,56.98v56.241c0,1.236-1.089,2.326-2.326,2.326H36.573
-			c-1.238,0-2.326-1.09-2.326-2.326V56.98H8.101c-2.491,0-3.393-1.989-1.746-3.859L47.951,5.78c0.964-1.099,2.529-1.099,3.493,0
-			l41.599,47.341c1.644,1.87,0.745,3.859-1.748,3.859H64.151z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.1616" y1="59.4341" x2="91.7666" y2="59.4341">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#414141" d="M61.958,56.153v56.401
-			c0,1.24-1.092,2.332-2.332,2.332H34.302c-1.242,0-2.332-1.092-2.332-2.332V56.153H5.749c-2.498,0-3.402-1.994-1.752-3.869
-			L45.712,4.808c0.967-1.102,2.537-1.102,3.504,0l41.717,47.477c1.648,1.875,0.746,3.869-1.754,3.869H61.958z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.1616" y1="59.4341" x2="91.7666" y2="59.4341">
-			<stop  offset="0" style="stop-color:#BEBEBE"/>
-			<stop  offset="1" style="stop-color:#6A6A6A"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#414141" d="M61.958,56.153v56.401
-			c0,1.24-1.092,2.332-2.332,2.332H34.302c-1.242,0-2.332-1.092-2.332-2.332V56.153H5.749c-2.498,0-3.402-1.994-1.752-3.869
-			L45.712,4.808c0.967-1.102,2.537-1.102,3.504,0l41.717,47.477c1.648,1.875,0.746,3.869-1.754,3.869H61.958z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge bas.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che rouge bas.svg"
deleted file mode 100644
index 96d38b8..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge bas.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="96.661px" height="119.096px" viewBox="0 0 96.661 119.096" enable-background="new 0 0 96.661 119.096"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M36.043,64.812V8.574c0-1.237,1.086-2.325,2.325-2.325h25.252
-			c1.236,0,2.326,1.088,2.326,2.325v56.238h26.146c2.491,0,3.392,1.99,1.746,3.861l-41.596,47.34c-0.965,1.099-2.531,1.099-3.496,0
-			L7.151,68.674c-1.645-1.871-0.745-3.861,1.746-3.861H36.043z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M36.043,64.812V8.574c0-1.237,1.086-2.325,2.325-2.325h25.252
-			c1.236,0,2.326,1.088,2.326,2.325v56.238h26.146c2.491,0,3.392,1.99,1.746,3.861l-41.596,47.34c-0.965,1.099-2.531,1.099-3.496,0
-			L7.151,68.674c-1.645-1.871-0.745-3.861,1.746-3.861H36.043z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.6235" y1="58.9136" x2="90.978" y2="58.9136">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#6F0000" d="M32.349,62.183V5.944
-			c0-1.237,1.086-2.325,2.324-2.325h25.252c1.236,0,2.326,1.088,2.326,2.325v56.238h26.146c2.492,0,3.393,1.99,1.746,3.861
-			l-41.596,47.34c-0.965,1.099-2.531,1.099-3.496,0L3.457,66.044c-1.645-1.871-0.746-3.861,1.746-3.861H32.349z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.6235" y1="58.9136" x2="90.978" y2="58.9136">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#6F0000" d="M32.349,62.183V5.944
-			c0-1.237,1.086-2.325,2.324-2.325h25.252c1.236,0,2.326,1.088,2.326,2.325v56.238h26.146c2.492,0,3.393,1.99,1.746,3.861
-			l-41.596,47.34c-0.965,1.099-2.531,1.099-3.496,0L3.457,66.044c-1.645-1.871-0.746-3.861,1.746-3.861H32.349z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge droite.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che rouge droite.svg"
deleted file mode 100644
index d2fbc35..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge droite.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="119.268px" height="96.873px" viewBox="0 0 119.268 96.873" enable-background="new 0 0 119.268 96.873"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M65.069,64.885H8.831c-1.238,0-2.326-1.088-2.326-2.326V37.307
-			c0-1.237,1.088-2.325,2.326-2.325h56.238V8.834c0-2.493,1.988-3.391,3.861-1.748l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494
-			L68.93,93.776c-1.873,1.646-3.861,0.745-3.861-1.745V64.885z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M65.069,64.885H8.831c-1.238,0-2.326-1.088-2.326-2.326V37.307
-			c0-1.237,1.088-2.325,2.326-2.325h56.238V8.834c0-2.493,1.988-3.391,3.861-1.748l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494
-			L68.93,93.776c-1.873,1.646-3.861,0.745-3.861-1.745V64.885z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.8101" y1="47.8018" x2="113.3979" y2="47.8018">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#6F0000" d="M61.375,62.255H5.136
-			c-1.238,0-2.326-1.088-2.326-2.326V34.677c0-1.237,1.088-2.325,2.326-2.325h56.239V6.204c0-2.493,1.988-3.391,3.86-1.748
-			l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494l-47.34,41.598c-1.872,1.646-3.86,0.745-3.86-1.745V62.255z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.8101" y1="47.8018" x2="113.3979" y2="47.8018">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#6F0000" d="M61.375,62.255H5.136
-			c-1.238,0-2.326-1.088-2.326-2.326V34.677c0-1.237,1.088-2.325,2.326-2.325h56.239V6.204c0-2.493,1.988-3.391,3.86-1.748
-			l47.34,41.599c1.098,0.965,1.098,2.529,0,3.494l-47.34,41.598c-1.872,1.646-3.86,0.745-3.86-1.745V62.255z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge gauche.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che rouge gauche.svg"
deleted file mode 100644
index 336a1e1..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge gauche.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="119.268px" height="96.873px" viewBox="0 0 119.268 96.873" enable-background="new 0 0 119.268 96.873"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M58.528,35.98h56.241c1.236,0,2.324,1.086,2.324,2.325v25.253
-			c0,1.235-1.088,2.325-2.324,2.325H58.528v26.147c0,2.49-1.988,3.391-3.86,1.745L7.328,52.179c-1.097-0.963-1.097-2.529,0-3.494
-			l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V35.98z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M58.528,35.98h56.241c1.236,0,2.324,1.086,2.324,2.325v25.253
-			c0,1.235-1.088,2.325-2.324,2.325H58.528v26.147c0,2.49-1.988,3.391-3.86,1.745L7.328,52.179c-1.097-0.963-1.097-2.529,0-3.494
-			l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V35.98z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.8105" y1="47.8018" x2="113.3989" y2="47.8018">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#6F0000" d="M54.833,33.351h56.241
-			c1.237,0,2.325,1.086,2.325,2.325v25.253c0,1.235-1.088,2.325-2.325,2.325H54.833v26.147c0,2.49-1.988,3.391-3.859,1.745
-			L3.633,49.549c-1.097-0.963-1.097-2.529,0-3.494L50.974,4.456c1.871-1.643,3.859-0.745,3.859,1.748V33.351z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.8105" y1="47.8018" x2="113.3989" y2="47.8018">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#6F0000" d="M54.833,33.351h56.241
-			c1.237,0,2.325,1.086,2.325,2.325v25.253c0,1.235-1.088,2.325-2.325,2.325H54.833v26.147c0,2.49-1.988,3.391-3.859,1.745
-			L3.633,49.549c-1.097-0.963-1.097-2.529,0-3.494L50.974,4.456c1.871-1.643,3.859-0.745,3.859,1.748V33.351z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge haut.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che rouge haut.svg"
deleted file mode 100644
index 6dd2195..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che rouge haut.svg"	
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="96.661px" height="119.096px" viewBox="0 0 96.661 119.096" enable-background="new 0 0 96.661 119.096"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M64.949,58.272v56.24c0,1.236-1.089,2.326-2.326,2.326H37.371
-			c-1.238,0-2.326-1.09-2.326-2.326v-56.24H8.898c-2.491,0-3.393-1.989-1.746-3.859L48.749,7.072c0.964-1.099,2.529-1.099,3.493,0
-			L93.84,54.413c1.644,1.87,0.745,3.859-1.748,3.859H64.949z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M64.949,58.272v56.24c0,1.236-1.089,2.326-2.326,2.326H37.371
-			c-1.238,0-2.326-1.09-2.326-2.326v-56.24H8.898c-2.491,0-3.393-1.989-1.746-3.859L48.749,7.072c0.964-1.099,2.529-1.099,3.493,0
-			L93.84,54.413c1.644,1.87,0.745,3.859-1.748,3.859H64.949z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.623" y1="58.9136" x2="90.978" y2="58.9136">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#6F0000" d="M61.253,55.643v56.24
-			c0,1.236-1.088,2.326-2.326,2.326H33.675c-1.238,0-2.326-1.09-2.326-2.326v-56.24H5.203c-2.49,0-3.393-1.989-1.746-3.859
-			L45.054,4.442c0.963-1.099,2.529-1.099,3.492,0l41.6,47.341c1.643,1.87,0.744,3.859-1.748,3.859H61.253z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.623" y1="58.9136" x2="90.978" y2="58.9136">
-			<stop  offset="0" style="stop-color:#FF897A"/>
-			<stop  offset="1" style="stop-color:#FF3400"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#6F0000" d="M61.253,55.643v56.24
-			c0,1.236-1.088,2.326-2.326,2.326H33.675c-1.238,0-2.326-1.09-2.326-2.326v-56.24H5.203c-2.49,0-3.393-1.989-1.746-3.859
-			L45.054,4.442c0.963-1.099,2.529-1.099,3.492,0l41.6,47.341c1.643,1.87,0.744,3.859-1.748,3.859H61.253z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che vide bas.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che vide bas.svg"
deleted file mode 100644
index 07ce46d..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che vide bas.svg"	
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="97.774px" height="116.878px" viewBox="0 0 97.774 116.878" enable-background="new 0 0 97.774 116.878"
-	 xml:space="preserve">
-
-<g>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M34.752,61.478V5.239
-		c0-1.237,1.086-2.325,2.325-2.325H62.33c1.236,0,2.326,1.088,2.326,2.325v56.239h26.146c2.491,0,3.392,1.99,1.746,3.861
-		l-41.596,47.34c-0.965,1.098-2.531,1.098-3.496,0L5.86,65.339c-1.645-1.871-0.745-3.861,1.746-3.861H34.752z"/>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M34.752,61.478V5.239
-		c0-1.237,1.086-2.325,2.325-2.325H62.33c1.236,0,2.326,1.088,2.326,2.325v56.239h26.146c2.491,0,3.392,1.99,1.746,3.861
-		l-41.596,47.34c-0.965,1.098-2.531,1.098-3.496,0L5.86,65.339c-1.645-1.871-0.745-3.861,1.746-3.861H34.752z"/>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che vide droite.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che vide droite.svg"
deleted file mode 100644
index ee87f75..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che vide droite.svg"	
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="116.463px" height="93.249px" viewBox="0 0 116.463 93.249" enable-background="new 0 0 116.463 93.249"
-	 xml:space="preserve">
-
-<g>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M61.819,60.847H5.581
-		c-1.238,0-2.326-1.088-2.326-2.326V33.268c0-1.237,1.088-2.325,2.326-2.325h56.238V4.795c0-2.493,1.988-3.391,3.861-1.748
-		l47.34,41.599c1.098,0.965,1.098,2.529,0,3.495L65.68,89.738c-1.873,1.646-3.861,0.745-3.861-1.745V60.847z"/>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M61.819,60.847H5.581
-		c-1.238,0-2.326-1.088-2.326-2.326V33.268c0-1.237,1.088-2.325,2.326-2.325h56.238V4.795c0-2.493,1.988-3.391,3.861-1.748
-		l47.34,41.599c1.098,0.965,1.098,2.529,0,3.495L65.68,89.738c-1.873,1.646-3.861,0.745-3.861-1.745V60.847z"/>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che vide gauche.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che vide gauche.svg"
deleted file mode 100644
index 198f69d..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che vide gauche.svg"	
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="116.463px" height="93.249px" viewBox="0 0 116.463 93.249" enable-background="new 0 0 116.463 93.249"
-	 xml:space="preserve">
-
-<g>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M55.279,31.942h56.24
-		c1.236,0,2.324,1.086,2.324,2.325v25.253c0,1.235-1.088,2.325-2.324,2.325h-56.24v26.147c0,2.49-1.988,3.391-3.86,1.745
-		L4.078,48.141c-1.097-0.963-1.097-2.53,0-3.495l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V31.942z"/>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M55.279,31.942h56.24
-		c1.236,0,2.324,1.086,2.324,2.325v25.253c0,1.235-1.088,2.325-2.324,2.325h-56.24v26.147c0,2.49-1.988,3.391-3.86,1.745
-		L4.078,48.141c-1.097-0.963-1.097-2.53,0-3.495l47.34-41.599c1.872-1.643,3.86-0.745,3.86,1.748V31.942z"/>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/fl\303\250che vide haut.svg" "b/Sankore-3.1/resources/library/shape/fl\303\250che vide haut.svg"
deleted file mode 100644
index 54433be..0000000
--- "a/Sankore-3.1/resources/library/shape/fl\303\250che vide haut.svg"	
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="97.774px" height="116.878px" viewBox="0 0 97.774 116.878" enable-background="new 0 0 97.774 116.878"
-	 xml:space="preserve">
-
-<g>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M63.658,54.937v56.24
-		c0,1.236-1.089,2.326-2.326,2.326H36.08c-1.238,0-2.326-1.09-2.326-2.326v-56.24H7.607c-2.491,0-3.393-1.989-1.746-3.859
-		L47.458,3.737c0.964-1.099,2.529-1.099,3.493,0l41.599,47.341c1.644,1.87,0.745,3.859-1.748,3.859H63.658z"/>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M63.658,54.937v56.24
-		c0,1.236-1.089,2.326-2.326,2.326H36.08c-1.238,0-2.326-1.09-2.326-2.326v-56.24H7.607c-2.491,0-3.393-1.989-1.746-3.859
-		L47.458,3.737c0.964-1.099,2.529-1.099,3.493,0l41.599,47.341c1.644,1.87,0.745,3.859-1.748,3.859H63.658z"/>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/\303\251toile blanche arr.svg" "b/Sankore-3.1/resources/library/shape/\303\251toile blanche arr.svg"
deleted file mode 100644
index ccc1232..0000000
--- "a/Sankore-3.1/resources/library/shape/\303\251toile blanche arr.svg"	
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="128.846px"
-   height="122.544px"
-   viewBox="0 0 128.846 122.544"
-   enable-background="new 0 0 128.846 122.544"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_star_rnd.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata8407"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs8405"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 61.271999 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="128.84599 : 61.271999 : 1"
-   inkscape:persp3d-origin="64.422997 : 40.848 : 1"
-   id="perspective8409" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient8932"
-   gradientUnits="userSpaceOnUse"
-   x1="2.4384999"
-   y1="60.637699"
-   x2="123.3472"
-   y2="60.637699" /><linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient8934"
-   gradientUnits="userSpaceOnUse"
-   x1="2.4384999"
-   y1="60.637699"
-   x2="123.3472"
-   y2="60.637699" />
-		<linearGradient
-   id="SVGID_1_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.4384999"
-   y1="60.637699"
-   x2="123.3472"
-   y2="60.637699">
-			<stop
-   offset="0"
-   style="stop-color:#FF897A"
-   id="stop8391" />
-			<stop
-   offset="1"
-   style="stop-color:#FF3400"
-   id="stop8393" />
-		</linearGradient>
-		
-		<linearGradient
-   id="SVGID_2_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.4384999"
-   y1="60.637699"
-   x2="123.3472"
-   y2="60.637699">
-			<stop
-   offset="0"
-   style="stop-color:#FF897A"
-   id="stop8398" />
-			<stop
-   offset="1"
-   style="stop-color:#FF3400"
-   id="stop8400" />
-		</linearGradient>
-		
-	<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient8943"
-   gradientUnits="userSpaceOnUse"
-   x1="2.4384999"
-   y1="60.637699"
-   x2="123.3472"
-   y2="60.637699" /><linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient8946"
-   gradientUnits="userSpaceOnUse"
-   x1="2.4384999"
-   y1="60.637699"
-   x2="123.3472"
-   y2="60.637699" />
-		
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="970"
-   inkscape:window-width="1680"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="3.9496018"
-   inkscape:cx="14.797741"
-   inkscape:cy="61.271999"
-   inkscape:window-x="-8"
-   inkscape:window-y="-8"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g8950">
-   
-     
-     <path
-     style="opacity:0.25;fill-rule:evenodd"
-     id="path8384"
-     d="M 66.588,97.681 L 36.828,119.302 C 31.108,123.457 25.637,119.483 27.819,112.756 L 39.187,77.774 L 9.43,56.153 C 3.71,51.996 5.799,45.565 12.87,45.563 L 49.653,45.562 L 61.02,10.582 C 63.205,3.855 69.967,3.855 72.154,10.582 L 83.522,45.562 L 120.303,45.563 C 127.374,45.565 129.465,51.996 123.744,56.153 L 93.989,77.774 L 105.352,112.756 C 107.539,119.483 102.066,123.457 96.345,119.302 L 66.588,97.681 z"
-     clip-rule="evenodd" /><path
-     style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;fill-opacity:1;stroke-opacity:1"
-     id="path8395"
-     d="M 62.894,95.051 L 33.134,116.672 C 27.413,120.827 21.943,116.853 24.124,110.126 L 35.493,75.144 L 5.736,53.523 C 0.015,49.366 2.105,42.935 9.175,42.933 L 45.958,42.932 L 57.325,7.952 C 59.511,1.225 66.272,1.225 68.46,7.952 L 79.827,42.932 L 116.608,42.933 C 123.68,42.935 125.77,49.366 120.049,53.523 L 90.294,75.144 L 101.657,110.126 C 103.843,116.853 98.37,120.827 92.649,116.672 L 62.894,95.051 z"
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/\303\251toile blanche.svg" "b/Sankore-3.1/resources/library/shape/\303\251toile blanche.svg"
deleted file mode 100644
index 728fe93..0000000
--- "a/Sankore-3.1/resources/library/shape/\303\251toile blanche.svg"	
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   version="1.0"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="128.846px"
-   height="122.544px"
-   viewBox="0 0 128.846 122.544"
-   enable-background="new 0 0 128.846 122.544"
-   xml:space="preserve"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   sodipodi:docname="red_star.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
-   id="metadata7779"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
-   id="defs7777"><inkscape:perspective
-   sodipodi:type="inkscape:persp3d"
-   inkscape:vp_x="0 : 61.271999 : 1"
-   inkscape:vp_y="0 : 1000 : 0"
-   inkscape:vp_z="128.84599 : 61.271999 : 1"
-   inkscape:persp3d-origin="64.422997 : 40.848 : 1"
-   id="perspective7781" />
-	
-	
-<linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_1_"
-   id="linearGradient8304"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8438001"
-   y1="60.637699"
-   x2="122.9438"
-   y2="60.637699" /><linearGradient
-   inkscape:collect="always"
-   xlink:href="#SVGID_2_"
-   id="linearGradient8306"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8438001"
-   y1="60.637699"
-   x2="122.9438"
-   y2="60.637699" />
-		<linearGradient
-   id="SVGID_1_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8438001"
-   y1="60.637699"
-   x2="122.9438"
-   y2="60.637699">
-			<stop
-   offset="0"
-   style="stop-color:#FF897A"
-   id="stop7763" />
-			<stop
-   offset="1"
-   style="stop-color:#FF3400"
-   id="stop7765" />
-		</linearGradient>
-		
-		<linearGradient
-   id="SVGID_2_"
-   gradientUnits="userSpaceOnUse"
-   x1="2.8438001"
-   y1="60.637699"
-   x2="122.9438"
-   y2="60.637699">
-			<stop
-   offset="0"
-   style="stop-color:#FF897A"
-   id="stop7770" />
-			<stop
-   offset="1"
-   style="stop-color:#FF3400"
-   id="stop7772" />
-		</linearGradient>
-		
-	
-		
-		
-	</defs><sodipodi:namedview
-   inkscape:window-height="970"
-   inkscape:window-width="1680"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0.0"
-   guidetolerance="10.0"
-   gridtolerance="10.0"
-   objecttolerance="10.0"
-   borderopacity="1.0"
-   bordercolor="#666666"
-   pagecolor="#ffffff"
-   id="base"
-   showgrid="false"
-   inkscape:zoom="3.9496018"
-   inkscape:cx="14.797741"
-   inkscape:cy="61.271999"
-   inkscape:window-x="-8"
-   inkscape:window-y="-8"
-   inkscape:current-layer="Layer_1" />
-
-<g
-   id="g8318">
-   
-     
-     <polygon
-     style="opacity:0.25;fill-rule:evenodd"
-     id="polygon7756"
-     points="103.702,120.378 66.588,93.416 29.475,120.378 43.65,76.75 6.538,49.786 52.411,49.784 66.588,6.157 80.766,49.784 126.637,49.786 89.526,76.75 103.702,120.378 "
-     clip-rule="evenodd" /><polygon
-     style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
-     id="polygon7767"
-     points="100.006,117.749 62.895,90.786 25.779,117.749 39.955,74.121 2.844,47.156 48.717,47.154 62.895,3.527 77.071,47.154 122.944,47.156 85.831,74.121 100.006,117.749 "
-     clip-rule="evenodd" /></g>
-</svg>
\ No newline at end of file
diff --git "a/Sankore-3.1/resources/library/shape/\303\251toile bleue arr.svg" "b/Sankore-3.1/resources/library/shape/\303\251toile bleue arr.svg"
deleted file mode 100644
index da45d59..0000000
--- "a/Sankore-3.1/resources/library/shape/\303\251toile bleue arr.svg"	
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="129.314px" height="122.966px" viewBox="0 0 129.314 122.966" enable-background="new 0 0 129.314 122.966"
-	 xml:space="preserve">
-
-<g>
-	<g opacity="0.25">
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M66.77,97.773l-29.76,21.621c-5.72,4.155-11.191,0.181-9.009-6.546L39.37,77.866
-			L9.612,56.245c-5.72-4.157-3.631-10.588,3.44-10.59l36.783-0.001l11.367-34.98c2.185-6.727,8.947-6.727,11.134,0l11.368,34.98
-			l36.781,0.001c7.071,0.002,9.162,6.433,3.441,10.59L94.17,77.866l11.363,34.982c2.187,6.727-3.286,10.701-9.007,6.546
-			L66.77,97.773z"/>
-		<path fill-rule="evenodd" clip-rule="evenodd" d="M66.77,97.773l-29.76,21.621c-5.72,4.155-11.191,0.181-9.009-6.546L39.37,77.866
-			L9.612,56.245c-5.72-4.157-3.631-10.588,3.44-10.59l36.783-0.001l11.367-34.98c2.185-6.727,8.947-6.727,11.134,0l11.368,34.98
-			l36.781,0.001c7.071,0.002,9.162,6.433,3.441,10.59L94.17,77.866l11.363,34.982c2.187,6.727-3.286,10.701-9.007,6.546
-			L66.77,97.773z"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.7236" y1="60.9683" x2="123.6333" y2="60.9683">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#194E6A" d="M63.178,95.382l-29.76,21.621
-			c-5.719,4.154-11.191,0.18-9.008-6.547l11.367-34.982L6.02,53.853c-5.719-4.156-3.631-10.588,3.441-10.59h36.783l11.367-34.98
-			c2.184-6.727,8.947-6.727,11.133,0l11.369,34.98h36.781c7.07,0.002,9.162,6.434,3.441,10.59L90.579,75.474l11.363,34.982
-			c2.188,6.727-3.285,10.701-9.006,6.547L63.178,95.382z"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="2.7236" y1="60.9683" x2="123.6333" y2="60.9683">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#194E6A" d="M63.178,95.382l-29.76,21.621
-			c-5.719,4.154-11.191,0.18-9.008-6.547l11.367-34.982L6.02,53.853c-5.719-4.156-3.631-10.588,3.441-10.59h36.783l11.367-34.98
-			c2.184-6.727,8.947-6.727,11.133,0l11.369,34.98h36.781c7.07,0.002,9.162,6.434,3.441,10.59L90.579,75.474l11.363,34.982
-			c2.188,6.727-3.285,10.701-9.006,6.547L63.178,95.382z"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/\303\251toile bleue.svg" "b/Sankore-3.1/resources/library/shape/\303\251toile bleue.svg"
deleted file mode 100644
index 516b718..0000000
--- "a/Sankore-3.1/resources/library/shape/\303\251toile bleue.svg"	
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="129.314px" height="122.966px" viewBox="0 0 129.314 122.966" enable-background="new 0 0 129.314 122.966"
-	 xml:space="preserve">
-<g>
-	<g opacity="0.25">
-		<polygon fill-rule="evenodd" clip-rule="evenodd" points="103.883,120.471 66.771,93.508 29.657,120.471 43.833,76.843 
-			6.72,49.878 52.593,49.876 66.771,6.249 80.948,49.876 126.82,49.878 89.708,76.843 		"/>
-		<polygon fill-rule="evenodd" clip-rule="evenodd" points="103.883,120.471 66.771,93.508 29.657,120.471 43.833,76.843 
-			6.72,49.878 52.593,49.876 66.771,6.249 80.948,49.876 126.82,49.878 89.708,76.843 		"/>
-	</g>
-	<g>
-		<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.1284" y1="60.9678" x2="123.228" y2="60.9678">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<polygon fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_1_)" stroke="#194E6A" points="100.292,118.078 63.179,91.115 
-			26.066,118.078 40.242,74.451 3.128,47.486 49.001,47.484 63.179,3.857 77.357,47.484 123.228,47.486 86.117,74.451 		"/>
-		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.1284" y1="60.9678" x2="123.228" y2="60.9678">
-			<stop  offset="0" style="stop-color:#7CD4FF"/>
-			<stop  offset="1" style="stop-color:#3777AE"/>
-		</linearGradient>
-		<polygon fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_2_)" stroke="#194E6A" points="100.292,118.078 63.179,91.115 
-			26.066,118.078 40.242,74.451 3.128,47.486 49.001,47.484 63.179,3.857 77.357,47.484 123.228,47.486 86.117,74.451 		"/>
-	</g>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/\303\251toile vide arr.svg" "b/Sankore-3.1/resources/library/shape/\303\251toile vide arr.svg"
deleted file mode 100644
index 5980afe..0000000
--- "a/Sankore-3.1/resources/library/shape/\303\251toile vide arr.svg"	
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="125.75px" height="122.047px" viewBox="0 0 125.75 122.047" enable-background="new 0 0 125.75 122.047"
-	 xml:space="preserve">
-
-<g>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M63.193,95.206l-29.76,21.621
-		c-5.72,4.155-11.191,0.181-9.009-6.546l11.368-34.982L6.035,53.678c-5.72-4.157-3.631-10.588,3.44-10.59l36.783-0.001l11.367-34.98
-		c2.185-6.727,8.947-6.727,11.133,0l11.368,34.98l36.781,0.001c7.071,0.002,9.162,6.433,3.441,10.59L90.593,75.298l11.363,34.982
-		c2.187,6.727-3.286,10.701-9.007,6.546L63.193,95.206z"/>
-	<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" d="M63.193,95.206l-29.76,21.621
-		c-5.72,4.155-11.191,0.181-9.009-6.546l11.368-34.982L6.035,53.678c-5.72-4.157-3.631-10.588,3.44-10.59l36.783-0.001l11.367-34.98
-		c2.185-6.727,8.947-6.727,11.133,0l11.368,34.98l36.781,0.001c7.071,0.002,9.162,6.433,3.441,10.59L90.593,75.298l11.363,34.982
-		c2.187,6.727-3.286,10.701-9.007,6.546L63.193,95.206z"/>
-</g>
-</svg>
diff --git "a/Sankore-3.1/resources/library/shape/\303\251toile vide.svg" "b/Sankore-3.1/resources/library/shape/\303\251toile vide.svg"
deleted file mode 100644
index fcc0826..0000000
--- "a/Sankore-3.1/resources/library/shape/\303\251toile vide.svg"	
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="125.75px" height="122.047px" viewBox="0 0 125.75 122.047" enable-background="new 0 0 125.75 122.047"
-	 xml:space="preserve">
-
-<g>
-	<polygon fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" points="100.306,117.904 63.194,90.941 
-		26.08,117.904 40.255,74.275 3.143,47.311 49.016,47.309 63.194,3.682 77.371,47.309 123.243,47.311 86.13,74.275 	"/>
-	<polygon fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#595959" points="100.306,117.904 63.194,90.941 
-		26.08,117.904 40.255,74.275 3.143,47.311 49.016,47.309 63.194,3.682 77.371,47.309 123.243,47.311 86.13,74.275 	"/>
-</g>
-</svg>
diff --git a/Sankore-3.1/resources/library/videos/Sciences/video_bourgeon.mpg b/Sankore-3.1/resources/library/videos/Sciences/video_bourgeon.mpg
new file mode 100644
index 0000000..1741919
Binary files /dev/null and b/Sankore-3.1/resources/library/videos/Sciences/video_bourgeon.mpg differ
diff --git a/Sankore-3.1/resources/sankore.qrc b/Sankore-3.1/resources/sankore.qrc
index f94729e..fcefa2e 100644
--- a/Sankore-3.1/resources/sankore.qrc
+++ b/Sankore-3.1/resources/sankore.qrc
@@ -14,7 +14,6 @@
         <file>images/soundOn.svg</file>
         <file>images/soundOff.svg</file>
         <file>images/shape.png</file>
-        <file>images/pencil.svg</file>
         <file>images/font.svg</file>
         <file>images/color.svg</file>
         <file>images/eyeOpened.svg</file>
@@ -42,6 +41,8 @@
         <file>images/currentDocument.png</file>
         <file>images/minus.svg</file>
         <file>images/plus.svg</file>
+        <file>images/z_layer_up.svg</file>
+        <file>images/z_layer_down.svg</file>
         <file>images/trash.png</file>
         <file>images/pin.svg</file>
         <file>images/unpin.svg</file>
@@ -49,6 +50,8 @@
         <file>images/reload.svg</file>
         <file>images/frozen.svg</file>
         <file>images/unfrozen.svg</file>
+        <file>images/toolbar/group.png</file>
+        <file>images/toolbar/ungroup.png</file>
         <file>images/toolbar/window.png</file>
         <file>images/toolbar/plusBlack.png</file>
         <file>images/toolbar/plusBlackOn.png</file>
@@ -125,6 +128,8 @@
         <file>images/toolbar/tools.png</file>
         <file>images/stylusPalette/arrow.png</file>
         <file>images/stylusPalette/arrowOn.png</file>
+        <file>images/stylusPalette/handPlay.png</file>
+        <file>images/stylusPalette/handPlayOn.png</file>
         <file>images/stylusPalette/eraser.png</file>
         <file>images/stylusPalette/eraserOn.png</file>
         <file>images/stylusPalette/hand.png</file>
@@ -160,6 +165,7 @@
         <file>images/toolPalette/triangleTool.png</file>
         <file>images/toolPalette/protractorTool.png</file>
         <file>images/toolPalette/compassTool.png</file>
+        <file>images/toolPalette/aristoTool.png</file>
         <file>images/toolPalette/maskTool.png</file>
         <file>images/toolPalette/magnifierTool.png</file>
         <file>images/extraPalette/blackout.png</file>
@@ -171,6 +177,7 @@
         <file>images/erasePalette/eraseAll.svg</file>
         <file>images/erasePalette/eraseItem.svg</file>
         <file>images/erasePalette/eraseAnnotation.svg</file>
+        <file>images/erasePalette/eraseBackground.svg</file>
         <file>images/cursors/eraser.png</file>
         <file>images/cursors/laser.png</file>
         <file>images/cursors/marker.png</file>
@@ -180,6 +187,7 @@
         <file>images/cursors/resize.png</file>
         <file>images/cursors/drawCompass.png</file>
         <file>images/cursors/drawRulerLine.png</file>
+        <file>images/cursors/play.png</file>
         <file>images/print/onepage.png</file>
         <file>images/print/thumbnails.png</file>
         <file>images/print/twopages.png</file>
@@ -262,6 +270,7 @@
         <file>images/libpalette/notFound.png</file>
         <file>images/libpalette/trash_favorite.svg</file>
         <file>images/libpalette/back.png</file>
+        <file>images/libpalette/loading.png</file>
         <file>images/stylusPalette/eraserArrow.png</file>
         <file>images/stylusPalette/eraserOnArrow.png</file>
         <file>images/stylusPalette/markerArrow.png</file>
@@ -299,6 +308,7 @@
         <file>images/virtual.keyboard/41/right-active.png</file>
         <file>images/virtual.keyboard/41/backspace.png</file>
         <file>images/virtual.keyboard/41/capslock.png</file>
+        <file>images/virtual.keyboard/41/shift.png</file>
         <file>images/virtual.keyboard/41/tab.png</file>
         <file>images/virtual.keyboard/29/centre-passive.png</file>
         <file>images/virtual.keyboard/29/left-passive.png</file>
@@ -308,6 +318,7 @@
         <file>images/virtual.keyboard/29/right-active.png</file>
         <file>images/virtual.keyboard/29/backspace.png</file>
         <file>images/virtual.keyboard/29/capslock.png</file>
+        <file>images/virtual.keyboard/29/shift.png</file>
         <file>images/virtual.keyboard/29/tab.png</file>
         <file>images/toolPalette/cacheTool.png</file>
         <file>images/libpalette/FlashCategory.svg</file>
@@ -347,10 +358,14 @@
         <file>images/licenses/ccbyncsa.png</file>
         <file>images/licenses/ccbynd.png</file>
         <file>images/licenses/ccbysa.png</file>
-        <file>images/teacherGuide/audio.png</file>
-        <file>images/teacherGuide/image.png</file>
-        <file>images/teacherGuide/link.png</file>
-        <file>images/teacherGuide/movie.png</file>
-        <file>images/teacherGuide/w3c.png</file>
+        <file>images/teacherGuide/audio_24x24.svg</file>
+        <file>images/teacherGuide/image_24x24.svg</file>
+        <file>images/teacherGuide/link_24x24.svg</file>
+        <file>images/teacherGuide/movie_24x24.svg</file>
+        <file>images/teacherGuide/w3c_24x24.svg</file>
+        <file>images/teacherGuide/pencil.svg</file>
+        <file>images/duplicateDisabled.svg</file>
+        <file>images/teacherGuide/flash_24x24.svg</file>
+        <file>images/toque.svg</file>
     </qresource>
 </RCC>
diff --git a/Sankore-3.1/resources/style.qss b/Sankore-3.1/resources/style.qss
index 9525bab..e53e0ee 100644
--- a/Sankore-3.1/resources/style.qss
+++ b/Sankore-3.1/resources/style.qss
@@ -5,13 +5,30 @@ QWidget#UBLibNavigatorWidget,
 QWidget#UBLibItemProperties,
 QWidget#UBDownloadWidget,
 QWidget#UBTeacherGuideWidget,
-QWidget#UBFeatureProperties
+QWidget#UBFeaturesNavigatorWidget,
+QWidget#PathList,
+QWidget#UBFeaturesCentralWidget
 {
 	background: #EEEEEE;
 	border-radius: 10px;
 	border: 2px solid #999999;
 }
 
+QTextEdit,
+QLineEdit,
+QComboBox#DockPaletteWidgetComboBox QAbstractItemView
+{
+    selection-background-color: lightgreen;
+    selection-color: black;
+}
+
+
+QWidget#mAdditionalDataContainer
+{
+	border-radius: 10px;
+	border: 2px solid #999999;
+}
+
 QWidget#UBMediaVideoContainer
 {
 	background: #000000;
@@ -26,18 +43,14 @@ QWidget#UBLibWebView
 	border: 2px solid #999999;
 }
 
-QWidget#UBFeaturesWebView
+QListView
 {
-	background: #EEEEEE;
-	border-radius : 10px;
-	border: 2px solid #999999;
+      border: 0px;
 }
 
-QListView
+QWidget#UBFeatureProperties
 {
-	background: #EEEEEE;
-	border-radius : 10px;
-	border: 2px solid #999999;
+      border: 2px;
 }
 
 QWebView#SearchEngineView
diff --git a/Sankore-3.1/resources/win/sankore.rc b/Sankore-3.1/resources/win/sankore.rc
index 88fc0af..6ed7fcc 100644
--- a/Sankore-3.1/resources/win/sankore.rc
+++ b/Sankore-3.1/resources/win/sankore.rc
@@ -33,13 +33,13 @@ BEGIN
 
         BEGIN
 
-            VALUE "CompanyName",      "Mnemis\000"
+            VALUE "CompanyName",      "Open-Sankoré\000"
 
             VALUE "FileDescription",  "Sankore 3.1\000"
 
             VALUE "FileVersion",      UBVERSION
 
-            VALUE "LegalCopyright",   "(c) Mnemis SA, 2009. All rights reserved\000"
+            VALUE "LegalCopyright",   "(c) Webdoc SA, 2009-2012. All rights reserved\000"
 
             VALUE "OriginalFilename", "Sankore 3.1.exe\000"
 
diff --git a/Sankore-3.1/resources/windows/xpdfrc b/Sankore-3.1/resources/windows/xpdfrc
new file mode 100644
index 0000000..3762132
--- /dev/null
+++ b/Sankore-3.1/resources/windows/xpdfrc
@@ -0,0 +1,14 @@
+fontFile Times-Roman           fonts/n021003l.pfb
+fontFile Times-Italic          fonts/n021023l.pfb
+fontFile Times-Bold            fonts/n021004l.pfb
+fontFile Times-BoldItalic      fonts/n021024l.pfb
+fontFile Helvetica             fonts/n019003l.pfb
+fontFile Helvetica-Oblique     fonts/n019023l.pfb
+fontFile Helvetica-Bold        fonts/n019004l.pfb
+fontFile Helvetica-BoldOblique fonts/n019024l.pfb
+fontFile Courier               fonts/n022003l.pfb
+fontFile Courier-Oblique       fonts/n022023l.pfb
+fontFile Courier-Bold          fonts/n022004l.pfb
+fontFile Courier-BoldOblique   fonts/n022024l.pfb
+fontFile Symbol                fonts/s050000l.pfb
+fontFile ZapfDingbats          fonts/d050000l.pfb
\ No newline at end of file
diff --git a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp
index 016af48..f43bf53 100644
--- a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.cpp
@@ -1,20 +1,30 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include <QRegExp>
 #include <QSvgGenerator>
 #include <QSvgRenderer>
+#include <QPixmap>
+#include <QMap>
 
 #include "core/UBPersistenceManager.h"
 
@@ -26,12 +36,12 @@
 #include "domain/UBGraphicsTextItem.h"
 #include "domain/UBGraphicsSvgItem.h"
 #include "domain/UBGraphicsPixmapItem.h"
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/UBGraphicsAudioItem.h"
+#include "domain/UBGraphicsMediaItem.h"
 #include "domain/UBGraphicsWidgetItem.h"
 #include "domain/UBGraphicsTextItem.h"
 #include "domain/UBGraphicsTextItemDelegate.h"
-#include "domain/UBW3CWidget.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
 
 #include "frameworks/UBFileSystemUtils.h"
 
@@ -92,7 +102,7 @@ static QString aFontweight      = "font-weight";
 static QString aTextalign       = "text-align";
 static QString aPoints          = "points";
 static QString svgNS            = "http://www.w3.org/2000/svg";
-static QString iwbNS            = "http://www.becta.org.uk/iwb";
+static QString iwbNS            = "http://www.imsglobal.org/xsd/iwb_v1p0";
 static QString aId              = "id";
 static QString aRef             = "ref";
 static QString aHref            = "href";
@@ -128,8 +138,9 @@ bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentP
 
     return result;
 }
-UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content):
-    mProxy(proxy)
+UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content)
+    : mProxy(proxy)
+    , mGSectionContainer(NULL)
 {
     int errorLine, errorColumn;
     QString errorStr;
@@ -168,14 +179,24 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parse()
 
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseGSection(const QDomElement &element)
 {
+    mGSectionContainer = new UBGraphicsGroupContainerItem();
+
     QDomElement currentSvgElement = element.firstChildElement();
     while (!currentSvgElement.isNull()) {
-        if (!parseSvgElement(currentSvgElement))
-            return false;
-
+        parseSvgElement(currentSvgElement);
         currentSvgElement = currentSvgElement.nextSiblingElement();
     }
 
+    if (mGSectionContainer->childItems().count())
+    { 
+        mCurrentScene->addGroup(mGSectionContainer);
+    }
+    else 
+    {
+        delete mGSectionContainer;
+    }
+    mGSectionContainer = NULL;
+
     return true;
 }
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSwitchSection(const QDomElement &element)
@@ -236,6 +257,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgRect(const QDomElement &elem
     painter.end();
 
     UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+   
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
     QTransform transform;
     QString textTransform = element.attribute(aTransform);
 
@@ -247,6 +273,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgRect(const QDomElement &elem
     repositionSvgItem(svgItem, width, height, x1, y1, transform);
     hashSceneItem(element, svgItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
     delete generator;
 
     return true;
@@ -281,6 +312,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &e
     painter.end();
 
     UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
     QTransform transform;
     QString textTransform = element.attribute(aTransform);
 
@@ -293,6 +329,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &e
     repositionSvgItem(svgItem, rx * 2, ry * 2, cx - 2*rx, cy+ry, transform);
     hashSceneItem(element, svgItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
     delete generator;
 
     return true;
@@ -351,32 +392,65 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolygon(const QDomElement &e
     brush.setColor(fillColor);
     brush.setStyle(Qt::SolidPattern);
 
-    QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
-    QPainter painter;
+ 
+    QUuid itemUuid(element.attribute(aId).right(QUuid().toString().length()));
+    QUuid itemGroupUuid(element.attribute(aId).left(QUuid().toString().length()-1));
+    if (!itemUuid.isNull() && (itemGroupUuid!=itemUuid)) // reimported from UBZ
+    {
+        UBGraphicsPolygonItem *graphicsPolygon = mCurrentScene->polygonToPolygonItem(polygon);
 
-    painter.begin(generator); //drawing to svg tmp file
+        graphicsPolygon->setBrush(brush);
 
-    painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
-    painter.setBrush(brush);
-    painter.setPen(pen);
-    painter.drawPolygon(polygon);
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
 
-    painter.end();
+        graphicsPolygon->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, graphicsPolygon);
+        }
+        mCurrentScene->addItem(graphicsPolygon);
 
-    //add resulting svg file to scene
-    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
+        graphicsPolygon->setUuid(itemUuid);
+        mRefToUuidMap.insert(element.attribute(aId), itemUuid);
 
-    svgItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, svgItem);
     }
-    repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
-    hashSceneItem(element, svgItem);
+    else // single CFF
+    {
+        QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
+        QPainter painter;
 
-    delete generator;
+        painter.begin(generator); //drawing to svg tmp file
+
+        painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
+        painter.setBrush(brush);
+        painter.setPen(pen);
+        painter.drawPolygon(polygon);
 
+        painter.end();
+
+        //add resulting svg file to scene
+        UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
+        
+        QUuid uuid = QUuid::createUuid().toString();
+        mRefToUuidMap.insert(element.attribute(aId), uuid);
+        svgItem->setUuid(uuid);
+
+        svgItem->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, svgItem);
+        }
+        repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
+        hashSceneItem(element, svgItem);
+
+        if (mGSectionContainer)
+        {
+            addItemToGSection(svgItem);
+        }
+
+        delete generator;
+    }
     return true;
 }
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolyline(const QDomElement &element)
@@ -414,6 +488,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolyline(const QDomElement &
     //bounding rect lef top corner coordinates
     qreal x1 = polygon.boundingRect().topLeft().x();
     qreal y1 = polygon.boundingRect().topLeft().y();
+
     //bounding rect dimensions
     qreal width = polygon.boundingRect().width();
     qreal height = polygon.boundingRect().height();
@@ -431,30 +506,72 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolyline(const QDomElement &
     pen.setColor(strokeColor);
     pen.setWidth(strokeWidth);
 
-    QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
-    QPainter painter;
+    QBrush brush;
+    brush.setColor(strokeColor);
+    brush.setStyle(Qt::SolidPattern);
 
-    painter.begin(generator); //drawing to svg tmp file
+    QUuid itemUuid(element.attribute(aId).right(QUuid().toString().length()));
+    QUuid itemGroupUuid(element.attribute(aId).left(QUuid().toString().length()-1));
+    if (!itemUuid.isNull() && (itemGroupUuid!=itemUuid)) // reimported from UBZ
+    {
+        UBGraphicsPolygonItem *graphicsPolygon = new UBGraphicsPolygonItem(polygon);
 
-    painter.translate(pen.widthF()/2 - x1, pen.widthF()/2- y1);
-    painter.setPen(pen);
-    painter.drawPolyline(polygon);
+        UBGraphicsStroke *stroke = new UBGraphicsStroke();
+        graphicsPolygon->setStroke(stroke);
 
-    painter.end();
+        graphicsPolygon->setBrush(brush);
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
 
-    //add resulting svg file to scene
-    UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
-    QTransform transform;
-    QString textTransform = element.attribute(aTransform);
+        graphicsPolygon->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, graphicsPolygon);
+        }
+        mCurrentScene->addItem(graphicsPolygon);
+
+        graphicsPolygon->setUuid(itemUuid);
+        mRefToUuidMap.insert(element.attribute(aId), itemUuid);
 
-    svgItem->resetTransform();
-    if (!textTransform.isNull()) {
-        transform = transformFromString(textTransform, svgItem);
     }
-    repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 + transform.m31() - strokeWidth/2, y1 + transform.m32() + strokeWidth/2, transform);
-    hashSceneItem(element, svgItem);
+    else // simple CFF
+    {
+        QSvgGenerator *generator = createSvgGenerator(width + pen.width(), height + pen.width());
+        QPainter painter;
+
+        painter.begin(generator); //drawing to svg tmp file
+
+        painter.translate(pen.widthF() / 2 - x1, pen.widthF() / 2 - y1);
+        painter.setBrush(brush);
+        painter.setPen(pen);
+        painter.drawPolygon(polygon);
+
+        painter.end();
+
+        //add resulting svg file to scene
+        UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
+        
+        QString uuid = QUuid::createUuid().toString();
+        mRefToUuidMap.insert(element.attribute(aId), uuid);
+        svgItem->setUuid(QUuid(uuid));
+
+        QTransform transform;
+        QString textTransform = element.attribute(aTransform);
+
+        svgItem->resetTransform();
+        if (!textTransform.isNull()) {
+            transform = transformFromString(textTransform, svgItem);
+        }
+        repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
+        hashSceneItem(element, svgItem);
+
+        if (mGSectionContainer)
+        {
+            addItemToGSection(svgItem);
+        }
+
+        delete generator;
+    }
 
-    delete generator;
 
     return true;
 }
@@ -515,7 +632,7 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::readTextCharAttr(const QDomElement &
 {
     QString fontSz = element.attribute(aFontSize);
     if (!fontSz.isNull()) {
-        qreal fontSize = fontSz.toDouble() * 72 / QApplication::desktop()->physicalDpiY();
+        qreal fontSize = fontSz.remove("pt").toDouble();
         format.setFontPointSize(fontSize);
     }
     QString fontColorText = element.attribute(aFill);
@@ -589,10 +706,19 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgText(const QDomElement &elem
     //add resulting svg file to scene
     UBGraphicsSvgItem *svgItem = mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName()));
 
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
     svgItem->resetTransform();
     repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
     hashSceneItem(element, svgItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
     delete generator;
     return true;
 }
@@ -675,12 +801,14 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &
     blockFormat.setAlignment(Qt::AlignLeft);
 
     QTextCharFormat textFormat;
-    textFormat.setFontPointSize(12 * 72 / QApplication::desktop()->physicalDpiY());
+     // default values
+    textFormat.setFontPointSize(12);
     textFormat.setForeground(qApp->palette().foreground().color());
     textFormat.setFontFamily("Arial");
     textFormat.setFontItalic(false);
     textFormat.setFontWeight(QFont::Normal);
 
+    // readed values
     readTextBlockAttr(element, blockFormat);
     readTextCharAttr(element, textFormat);
 
@@ -695,6 +823,10 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &
     UBGraphicsTextItem *svgItem = mCurrentScene->addTextHtml(doc.toHtml());
     svgItem->resize(width, height);
 
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    svgItem->setUuid(QUuid(uuid));
+
     QTransform transform;
     QString textTransform = element.attribute(aTransform);
 
@@ -712,6 +844,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &
     repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
     hashSceneItem(element, svgItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(svgItem);
+    }
+
     return true;
 }
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &element)
@@ -738,7 +875,12 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &ele
         }
     }
 
-   UBGraphicsPixmapItem *pixItem = mCurrentScene->addPixmap(pix);
+   UBGraphicsPixmapItem *pixItem = mCurrentScene->addPixmap(pix, NULL);
+
+   QString uuid = QUuid::createUuid().toString();
+   mRefToUuidMap.insert(element.attribute(aId), uuid);
+   pixItem->setUuid(QUuid(uuid));
+
    QTransform transform;
    QString textTransform = element.attribute(aTransform);
 
@@ -749,6 +891,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &ele
    repositionSvgItem(pixItem, width, height, x + transform.m31(), y + transform.m32(), transform);
    hashSceneItem(element, pixItem);
 
+   if (mGSectionContainer)
+   {
+       addItemToGSection(pixItem);
+   }
+
    return true;
 }
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &element)
@@ -776,11 +923,15 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &ele
         return false;
     }
 
-    QString flashUrl = UBW3CWidget::createNPAPIWrapperInDir(flashPath, tmpFlashDir, "application/x-shockwave-flash"
+    QString flashUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(flashPath, tmpFlashDir, "application/x-shockwave-flash"
                                                             ,QSize(mCurrentSceneRect.width(), mCurrentSceneRect.height()));
     UBGraphicsWidgetItem *flashItem = mCurrentScene->addW3CWidget(QUrl::fromLocalFile(flashUrl));
     flashItem->setSourceUrl(urlPath);
 
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+    flashItem->setUuid(QUuid(uuid));
+
     QTransform transform;
     QString textTransform = element.attribute(aTransform);
 
@@ -791,6 +942,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &ele
     repositionSvgItem(flashItem, width, height, x + transform.m31(), y + transform.m32(), transform);
     hashSceneItem(element, flashItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(flashItem);
+    }
+
     return true;
 }
 
@@ -813,17 +969,24 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgAudio(const QDomElement &ele
         concreteUrl = QUrl::fromLocalFile(audioPath);
     }
 
-    QUuid uuid = QUuid::createUuid();
-
-#ifdef Q_WS_X11
-    concreteUrl = QUrl::fromLocalFile(mCurrentScene->document()->persistencePath() + "/" + UBPersistenceManager::persistenceManager()
-        ->addAudioFileToDocument(mCurrentScene->document(), concreteUrl.toLocalFile(), uuid));
-#else
-    concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
-        ->addAudioFileToDocument(mCurrentScene->document(), concreteUrl.toLocalFile(), uuid));
-#endif
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+
+    QString destFile;
+    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(
+            mCurrentScene->document(), 
+            concreteUrl.toLocalFile(), 
+            UBPersistenceManager::audioDirectory,
+            QUuid(uuid),
+            destFile);
+    if (!b)
+    {
+        return false;
+    }
+    concreteUrl = QUrl::fromLocalFile(destFile);
     
-    UBGraphicsAudioItem *audioItem = mCurrentScene->addAudio(concreteUrl, false);
+    UBGraphicsMediaItem *audioItem = mCurrentScene->addAudio(concreteUrl, false);
+
     QTransform transform;
     QString textTransform = parentOfAudio.attribute(aTransform);
 
@@ -834,6 +997,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgAudio(const QDomElement &ele
     repositionSvgItem(audioItem, audioItem->boundingRect().width(), audioItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
     hashSceneItem(element, audioItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(audioItem);
+    }
+
     return true;
 }
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &element)
@@ -856,17 +1024,24 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &ele
         concreteUrl = QUrl::fromLocalFile(videoPath);
     }
 
-    QUuid uuid = QUuid::createUuid();
+    QString uuid = QUuid::createUuid().toString();
+    mRefToUuidMap.insert(element.attribute(aId), uuid);
+
+    QString destFile;
+    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(
+            mCurrentScene->document(), 
+            concreteUrl.toLocalFile(), 
+            UBPersistenceManager::videoDirectory,
+            QUuid(uuid),
+            destFile);
+    if (!b)
+    {
+        return false;
+    }
+    concreteUrl = QUrl::fromLocalFile(destFile);
 
-#ifdef Q_WS_X11
-    concreteUrl = QUrl::fromLocalFile(mCurrentScene->document()->persistencePath() + "/" + UBPersistenceManager::persistenceManager()
-        ->addVideoFileToDocument(mCurrentScene->document(), concreteUrl.toLocalFile(), uuid));
-#else
-    concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
-        ->addVideoFileToDocument(mCurrentScene->document(), concreteUrl.toLocalFile(), uuid));
-#endif
+    UBGraphicsMediaItem *videoItem = mCurrentScene->addVideo(concreteUrl, false);
 
-    UBGraphicsVideoItem *videoItem = mCurrentScene->addVideo(concreteUrl, false);
     QTransform transform;
     QString textTransform = element.attribute(aTransform);
 
@@ -877,6 +1052,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &ele
     repositionSvgItem(videoItem, videoItem->boundingRect().width(), videoItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
     hashSceneItem(element, videoItem);
 
+    if (mGSectionContainer)
+    {
+        addItemToGSection(videoItem);
+    }
+
     return true;
 }
 
@@ -887,6 +1067,11 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSectionAttr(const QDomElemen
                   svgSection.attribute(aHeight).toInt());
 }
 
+void UBCFFSubsetAdaptor::UBCFFSubsetReader::addItemToGSection(QGraphicsItem *item)
+{
+    mGSectionContainer->addToGroup(item);
+}
+
 void UBCFFSubsetAdaptor::UBCFFSubsetReader::hashSceneItem(const QDomElement &element, UBGraphicsItem *item)
 {
 //    adding element pointer to hash to refer if needed
@@ -900,8 +1085,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgElement(const QDomElement &p
 {
     QString tagName = parent.tagName();
     if (parent.namespaceURI() != svgNS) {
-        qDebug() << "Incorrect namespace, error at content file, line number" << parent.lineNumber();
-        return false;
+        qWarning() << "Incorrect namespace, error at content file, line number" << parent.lineNumber();
+        //return false;
     }
 
     if      (tagName == tG          &&  !parseGSection(parent))             return false;
@@ -947,8 +1132,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPageset(const QDomElement &p
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbMeta(const QDomElement &element)
 {
     if (element.namespaceURI() != iwbNS) {
-        qDebug() << "incorrect meta namespace, incorrect document";
-        return false;
+        qWarning() << "incorrect meta namespace, incorrect document";
+        //return false;
     }
 
     return true;
@@ -956,8 +1141,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbMeta(const QDomElement &elem
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvg(const QDomElement &svgSection)
 {
     if (svgSection.namespaceURI() != svgNS) {
-        qDebug() << "incorrect svg namespace, incorrect document";
-        return false;
+        qWarning() << "incorrect svg namespace, incorrect document";
+       // return false;
     }
 
     parseSvgSectionAttr(svgSection);
@@ -972,15 +1157,92 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvg(const QDomElement &svgSecti
     return true;
 }
 
-bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbGroup(QDomElement &parent)
+UBGraphicsGroupContainerItem *UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbGroup(QDomElement &parent)
 {
     //TODO. Create groups from elements parsed by parseIwbElement() function
     if (parent.namespaceURI() != iwbNS) {
-        qDebug() << "incorrect iwb group namespace, incorrect document";
-        return false;
+        qWarning() << "incorrect iwb group namespace, incorrect document";
+      //  return false;
     }
 
-    return true;
+    UBGraphicsGroupContainerItem *group = new UBGraphicsGroupContainerItem();
+    QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;    
+    QList<QGraphicsItem *> groupContainer;    
+    QString currentStrokeIdentifier;
+
+    QDomElement currentStrokeElement = parent.firstChildElement();    
+    while (!currentStrokeElement.isNull())
+    {
+        if (tGroup == currentStrokeElement.tagName())
+            group->addToGroup(parseIwbGroup(currentStrokeElement));
+        else
+        {
+            
+            QString ref = currentStrokeElement.attribute(aRef);
+            QString uuid = mRefToUuidMap[ref];
+            if (!uuid.isEmpty())
+            {
+                if (ref.size() > QUuid().toString().length()) // create stroke group
+                {              
+                    currentStrokeIdentifier = ref.left(QUuid().toString().length()-1);
+                    UBGraphicsPolygonItem *strokeByUuid = qgraphicsitem_cast<UBGraphicsPolygonItem *>(mCurrentScene->itemForUuid(QUuid(ref.right(QUuid().toString().length()))));
+
+                    if (strokeByUuid)
+                        strokesGroupsContainer.insert(currentStrokeIdentifier, strokeByUuid);
+                }
+                else // single elements in group
+                    groupContainer.append(mCurrentScene->itemForUuid(QUuid(uuid)));
+            }
+        }
+        currentStrokeElement = currentStrokeElement.nextSiblingElement();
+    }
+
+
+
+    foreach (QString key, strokesGroupsContainer.keys().toSet())
+    {
+        UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
+        UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
+        foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
+        {
+            if (poly)
+            {
+                mCurrentScene->removeItem(poly);
+                mCurrentScene->removeItemFromDeletion(poly);
+                poly->setStrokesGroup(pStrokesGroup);
+                poly->setStroke(currentStroke);
+                pStrokesGroup->addToGroup(poly);
+            }
+        }
+        if (currentStroke->polygons().empty())
+            delete currentStroke;
+
+        if (pStrokesGroup->childItems().count())
+            mCurrentScene->addItem(pStrokesGroup);
+        else
+            delete pStrokesGroup;
+
+        if (pStrokesGroup)
+        {
+            QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
+            groupContainer.append(strokeGroup);
+        }
+    }
+
+    foreach(QGraphicsItem* item, groupContainer)
+        group->addToGroup(item);
+
+    if (group->childItems().count())
+    {
+        mCurrentScene->addItem(group);
+
+        if (1 == group->childItems().count())
+        {
+            group->destroy(false);
+        }
+    }
+
+    return group;
 }
 
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::strToBool(QString str)
@@ -991,8 +1253,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::strToBool(QString str)
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbElement(QDomElement &element)
 {
     if (element.namespaceURI() != iwbNS) {
-        qDebug() << "incorrect iwb element namespace, incorrect document";
-        return false;
+        qWarning() << "incorrect iwb element namespace, incorrect document";
+      //  return false;
     }
 
     bool locked = false;
@@ -1059,21 +1321,22 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::repositionSvgItem(QGraphicsItem *ite
     QTransform rTransform;
     QPointF newVector = rTransform.map(oldVector);
 
-    QRectF sr = mCurrentScene->sceneRect();
-    QRectF sr1 = mCurrentSceneRect;
-    QRectF sr2 = mCurrentScene->normalizedSceneRect();
-
     QTransform tr = item->sceneTransform();
     item->setTransform(rTransform.scale(fullScaleX, fullScaleY), true);
     tr = item->sceneTransform();
-    QPoint pos ((int)((x + mShiftVector.x() + (newVector - oldVector).x()) * mVBTransFactor), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
+    QPoint pos;
+    if (UBGraphicsTextItem::Type == item->type())
+        pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x())), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
+    else
+        pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x()) * mVBTransFactor), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor));
+        
+
     item->setPos(pos);
 }
 
 bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createNewScene()
 {
-    mCurrentScene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mProxy, mProxy->pageCount());
-    mCurrentScene->setURStackEnable(false);
+    mCurrentScene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mProxy, mProxy->pageCount(), false);
     mCurrentScene->setSceneRect(mViewBox);
     if ((mCurrentScene->sceneRect().topLeft().x() >= 0) || (mCurrentScene->sceneRect().topLeft().y() >= 0)) {
         mShiftVector = -mViewBox.center();
@@ -1088,7 +1351,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistCurrentScene()
 {
     if (mCurrentScene != 0 && mCurrentScene->isModified())
     {
-        UBThumbnailAdaptor::persistScene(mProxy->persistencePath(), mCurrentScene, mProxy->pageCount() - 1);
+        UBThumbnailAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
         UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1);
 
         mCurrentScene->setModified(false);
@@ -1112,9 +1375,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistScenes()
         UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, i);
         UBGraphicsScene *tmpScene = UBSvgSubsetAdaptor::loadScene(mProxy, i);
         tmpScene->setModified(true);
-        UBThumbnailAdaptor::persistScene(mProxy->persistencePath(), tmpScene, i);
-        delete tmpScene;
-
+        UBThumbnailAdaptor::persistScene(mProxy, tmpScene, i);
         mCurrentScene->setModified(false);
     }
 
diff --git a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h
index 791c057..0d167c4 100644
--- a/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBCFFSubsetAdaptor.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBCFFSUBSETADAPTOR_H
 #define UBCFFSUBSETADAPTOR_H
@@ -35,6 +42,7 @@ class QGraphicsItem;
 class QTextBlockFormat;
 class QTextCharFormat;
 class QTextCursor;
+class UBGraphicsStrokesGroup;
 
 
 class UBCFFSubsetAdaptor
@@ -66,13 +74,17 @@ private:
         QPointF mViewBoxCenter;
         QSize mSize;
         QPointF mShiftVector;
+        bool mSvgGSectionIsOpened;
+        UBGraphicsGroupContainerItem *mGSectionContainer;
 
     private:
         QDomDocument mDOMdoc;
         QDomNode mCurrentDOMElement;
         QHash<QString, UBGraphicsItem*> persistedItems;
+        QMap<QString, QString> mRefToUuidMap;
         QDir mTmpFlashDir;
 
+        void addItemToGSection(QGraphicsItem *item);
         bool hashElements();
         void addExtentionsToHash(QDomElement *parent, QDomElement *topGroup);
 
@@ -98,7 +110,7 @@ private:
         inline bool parseSvgFlash(const QDomElement &element);
         inline bool parseSvgAudio(const QDomElement &element);
         inline bool parseSvgVideo(const QDomElement &element);
-        inline bool parseIwbGroup(QDomElement &parent);
+        inline UBGraphicsGroupContainerItem *parseIwbGroup(QDomElement &parent);
         inline bool parseIwbElement(QDomElement &element);
         inline void parseTSpan(const QDomElement &parent, QPainter &painter
                                , qreal &curX, qreal &curY, qreal &width, qreal &height, qreal &linespacing, QRectF &lastDrawnTextBoundingRect
diff --git a/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp b/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp
index e2b8b3f..67c0068 100644
--- a/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportAdaptor.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBExportAdaptor.h"
 
 #include "document/UBDocumentProxy.h"
@@ -24,6 +31,7 @@
 #include "core/UBApplication.h"
 
 #include "gui/UBMainWindow.h"
+#include "gui/UBMessagesDialog.h"
 
 #include "core/memcheck.h"
 
@@ -103,3 +111,13 @@ QString UBExportAdaptor::askForDirName(UBDocumentProxy* pDocument, const QString
 
     return dirname;
 }
+
+void UBExportAdaptor::showErrorsList(QList<QString> errorsList)
+{
+    if (errorsList.count())
+    {
+        UBMessagesDialog *dialog = new UBMessagesDialog(tr("Warnings during export was appeared"), UBApplication::mainWindow);
+        dialog->setMessages(errorsList);
+        dialog->show();
+    }
+}
\ No newline at end of file
diff --git a/Sankore-3.1/src/adaptors/UBExportAdaptor.h b/Sankore-3.1/src/adaptors/UBExportAdaptor.h
index a750384..bedba66 100644
--- a/Sankore-3.1/src/adaptors/UBExportAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBExportAdaptor.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBEXPORTADAPTOR_H_
 #define UBEXPORTADAPTOR_H_
 
@@ -46,6 +53,8 @@ class UBExportAdaptor : public QObject
         QString askForFileName(UBDocumentProxy* pDocument, const QString& pDialogTitle);
         QString askForDirName(UBDocumentProxy* pDocument, const QString& pDialogTitle);
 
+        void showErrorsList(QList<QString> errorsList);
+
         bool mIsVerbose;
 
 };
diff --git a/Sankore-3.1/src/adaptors/UBExportCFF.cpp b/Sankore-3.1/src/adaptors/UBExportCFF.cpp
index bc97a73..b4eedcb 100644
--- a/Sankore-3.1/src/adaptors/UBExportCFF.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportCFF.cpp
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBExportCFF.h"
 #include "UBCFFAdaptor.h"
 #include "document/UBDocumentProxy.h"
@@ -52,6 +74,7 @@ void UBExportCFF::persist(UBDocumentProxy* pDocument)
                 if (mIsVerbose)
                     UBApplication::showMessage(tr("Export failed."));
 
+        showErrorsList(toIWBExporter.getConversionMessages());
 
         QApplication::restoreOverrideCursor();
 
diff --git a/Sankore-3.1/src/adaptors/UBExportCFF.h b/Sankore-3.1/src/adaptors/UBExportCFF.h
index 6c7012d..e9d15b6 100644
--- a/Sankore-3.1/src/adaptors/UBExportCFF.h
+++ b/Sankore-3.1/src/adaptors/UBExportCFF.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBExportCFF_H_
 #define UBExportCFF_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBExportDocument.cpp b/Sankore-3.1/src/adaptors/UBExportDocument.cpp
index 95a8e4b..38f3c76 100644
--- a/Sankore-3.1/src/adaptors/UBExportDocument.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportDocument.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBExportDocument.h"
 
 #include "frameworks/UBPlatformUtils.h"
diff --git a/Sankore-3.1/src/adaptors/UBExportDocument.h b/Sankore-3.1/src/adaptors/UBExportDocument.h
index d840c45..3b8e2c5 100644
--- a/Sankore-3.1/src/adaptors/UBExportDocument.h
+++ b/Sankore-3.1/src/adaptors/UBExportDocument.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBEXPORTDOCUMENT_H_
 #define UBEXPORTDOCUMENT_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp b/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp
index b7499f9..b3c80a1 100644
--- a/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportFullPDF.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBExportFullPDF.h"
 
 #include <QtCore>
@@ -169,6 +176,7 @@ void UBExportFullPDF::persistsDocument(UBDocumentProxy* pDocumentProxy, const QS
             MergeDescription mergeInfo;
 
             int existingPageCount = pDocumentProxy->pageCount();
+
             for(int pageIndex = 0 ; pageIndex < existingPageCount; pageIndex++)
             {
                 UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocumentProxy, pageIndex);
@@ -180,18 +188,42 @@ void UBExportFullPDF::persistsDocument(UBDocumentProxy* pDocumentProxy, const QS
                 {
                     QString pdfName = UBPersistenceManager::objectDirectory + "/" + pdfItem->fileUuid().toString() + ".pdf";
                     QString backgroundPath = pDocumentProxy->persistencePath() + "/" + pdfName;
+                    QRectF annotationsRect = scene->itemsBoundingRect();
+
+                    // Original datas
+                    double xAnnotation = qRound(annotationsRect.x());
+                    double yAnnotation = qRound(annotationsRect.y());
+                    double xPdf = qRound(pdfItem->sceneBoundingRect().x());
+                    double yPdf = qRound(pdfItem->sceneBoundingRect().y());
+                    double hPdf = qRound(pdfItem->sceneBoundingRect().height());
+
+                    // Exportation-transformed datas
+                    double hScaleFactor = pageSize.width()/scene->itemsBoundingRect().width();
+                    double vScaleFactor = pageSize.height()/scene->itemsBoundingRect().height();
+                    double scaleFactor = qMin(hScaleFactor, vScaleFactor);
+
+                    double xAnnotationsOffset = 0;
+                    double yAnnotationsOffset = 0;
+                    double hPdfTransformed = qRound(hPdf * scaleFactor);
+
+                    // Here, we force the PDF page to be on the topleft corner of the page
+                    double xPdfOffset = 0;
+                    double yPdfOffset = (hPdf - hPdfTransformed) * mScaleFactor;
+
+                    // Now we align the items
+                    xPdfOffset += (xPdf - xAnnotation) * scaleFactor * mScaleFactor;
+                    yPdfOffset -= (yPdf - yAnnotation) * scaleFactor * mScaleFactor;
 
-                    qDebug() << "scene->itemsBoundingRect()" << scene->itemsBoundingRect();
-                    qDebug() << "pdfItem->boundingRect()" << pdfItem->boundingRect();
-                    qDebug() << "pdfItem->sceneBoundingRect()" << pdfItem->sceneBoundingRect();
+                    TransformationDescription pdfTransform(xPdfOffset, yPdfOffset, scaleFactor, 0);
+                    TransformationDescription annotationTransform(xAnnotationsOffset, yAnnotationsOffset, 1, 0);
 
                     MergePageDescription pageDescription(pageSize.width() * mScaleFactor,
                                                          pageSize.height() * mScaleFactor,
                                                          pdfItem->pageNumber(),
                                                          QFile::encodeName(backgroundPath).constData(),
-                                                         TransformationDescription(),
+                                                         pdfTransform,
                                                          pageIndex + 1,
-                                                         TransformationDescription(),
+                                                         annotationTransform,
                                                          false, false);
 
                     mergeInfo.push_back(pageDescription);
diff --git a/Sankore-3.1/src/adaptors/UBExportFullPDF.h b/Sankore-3.1/src/adaptors/UBExportFullPDF.h
index af0f357..41274b8 100644
--- a/Sankore-3.1/src/adaptors/UBExportFullPDF.h
+++ b/Sankore-3.1/src/adaptors/UBExportFullPDF.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBExportFullPDF_H_
 #define UBExportFullPDF_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBExportPDF.cpp b/Sankore-3.1/src/adaptors/UBExportPDF.cpp
index cd87c80..682583b 100644
--- a/Sankore-3.1/src/adaptors/UBExportPDF.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportPDF.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBExportPDF.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/adaptors/UBExportPDF.h b/Sankore-3.1/src/adaptors/UBExportPDF.h
index 2511dab..5c0abf8 100644
--- a/Sankore-3.1/src/adaptors/UBExportPDF.h
+++ b/Sankore-3.1/src/adaptors/UBExportPDF.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBEXPORTPDF_H_
 #define UBEXPORTPDF_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBExportWeb.cpp b/Sankore-3.1/src/adaptors/UBExportWeb.cpp
index 59a9c31..1745592 100644
--- a/Sankore-3.1/src/adaptors/UBExportWeb.cpp
+++ b/Sankore-3.1/src/adaptors/UBExportWeb.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBExportWeb.h"
 
 #include "frameworks/UBPlatformUtils.h"
diff --git a/Sankore-3.1/src/adaptors/UBExportWeb.h b/Sankore-3.1/src/adaptors/UBExportWeb.h
index d892218..970a0c3 100644
--- a/Sankore-3.1/src/adaptors/UBExportWeb.h
+++ b/Sankore-3.1/src/adaptors/UBExportWeb.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBEXPORTWEB_H_
 #define UBEXPORTWEB_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp b/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp
index 0770fa3..acf8c4f 100644
--- a/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportAdaptor.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBImportAdaptor.h"
 
 #include "core/UBApplication.h"
@@ -22,8 +29,9 @@
 
 #include "core/memcheck.h"
 
-UBImportAdaptor::UBImportAdaptor(QObject *parent)
-    :QObject(parent)
+UBImportAdaptor::UBImportAdaptor(bool _documentBased, QObject *parent)
+    :QObject(parent),
+    documentBased(_documentBased)
 {
     // NOOP
 }
@@ -33,6 +41,20 @@ UBImportAdaptor::~UBImportAdaptor()
     // NOOP
 }
 
+UBPageBasedImportAdaptor::UBPageBasedImportAdaptor(QObject *parent)
+    :UBImportAdaptor(false, parent)
+{
+    // NOOP
+}
+
+UBDocumentBasedImportAdaptor::UBDocumentBasedImportAdaptor(QObject *parent)
+    :UBImportAdaptor(true, parent)
+{
+    // NOOP
+}
+
+
+/*
 UBDocumentProxy* UBImportAdaptor::importFile(const QFile& pFile, const QString& pGroup)
 {
     QString documentName = QFileInfo(pFile.fileName()).completeBaseName();
@@ -53,3 +75,4 @@ UBDocumentProxy* UBImportAdaptor::importFile(const QFile& pFile, const QString&
 
     return newDocument;
 }
+*/
\ No newline at end of file
diff --git a/Sankore-3.1/src/adaptors/UBImportAdaptor.h b/Sankore-3.1/src/adaptors/UBImportAdaptor.h
index 482448d..bc3e07d 100644
--- a/Sankore-3.1/src/adaptors/UBImportAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBImportAdaptor.h
@@ -1,23 +1,32 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBIMPORTADAPTOR_H_
 #define UBIMPORTADAPTOR_H_
 
 #include <QtGui>
 
+class UBGraphicsItem;
+class UBGraphicsScene;
 class UBDocumentProxy;
 
 class UBImportAdaptor : public QObject
@@ -25,15 +34,39 @@ class UBImportAdaptor : public QObject
     Q_OBJECT;
 
     protected:
-        UBImportAdaptor(QObject *parent = 0);
+        UBImportAdaptor(bool _documentBased, QObject *parent = 0);
         virtual ~UBImportAdaptor();
 
     public:
 
         virtual QStringList supportedExtentions() = 0;
         virtual QString importFileFilter() = 0;
-        virtual UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
-        virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile) = 0;
+
+        bool isDocumentBased(){return documentBased;}
+    private:
+        bool documentBased;
+        
+};
+
+class UBPageBasedImportAdaptor : public UBImportAdaptor
+{
+protected:
+        UBPageBasedImportAdaptor(QObject *parent = 0);
+
+public:
+        virtual QList<UBGraphicsItem*> import(const QUuid& uuid, const QString& filePath) = 0;
+        virtual void placeImportedItemToScene(UBGraphicsScene* scene, UBGraphicsItem* item) = 0;
+        virtual const QString& folderToCopy() = 0;
+};
+
+class UBDocumentBasedImportAdaptor : public UBImportAdaptor
+{
+protected:
+        UBDocumentBasedImportAdaptor(QObject *parent = 0);
+public:
+    virtual UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup) = 0;
+    virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile) = 0;
 };
 
+
 #endif /* UBIMPORTADAPTOR_H_ */
diff --git a/Sankore-3.1/src/adaptors/UBImportCFF.cpp b/Sankore-3.1/src/adaptors/UBImportCFF.cpp
index 4957098..df6c88e 100644
--- a/Sankore-3.1/src/adaptors/UBImportCFF.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportCFF.cpp
@@ -1,19 +1,27 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include <QDir>
+#include <QList>
 
 #include "core/UBApplication.h"
 #include "core/UBPersistenceManager.h"
@@ -38,7 +46,7 @@ THIRD_PARTY_WARNINGS_ENABLE
 #include "core/memcheck.h"
 
 UBImportCFF::UBImportCFF(QObject *parent)
-    : UBImportAdaptor(parent)
+    : UBDocumentBasedImportAdaptor(parent)
 {
     // NOOP
 }
@@ -77,7 +85,6 @@ QString UBImportCFF::importFileFilter()
     return filter;
 }
 
-
 bool UBImportCFF::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
 {
     QFileInfo fi(pFile);
@@ -220,6 +227,7 @@ QString UBImportCFF::expandFileToDir(const QFile& pZipFile, const QString& pDir)
     return documentRootFolder;
 }
 
+
 UBDocumentProxy* UBImportCFF::importFile(const QFile& pFile, const QString& pGroup)
 {
     Q_UNUSED(pGroup); // group is defined in the imported file
@@ -277,4 +285,3 @@ UBDocumentProxy* UBImportCFF::importFile(const QFile& pFile, const QString& pGro
         return newDocument;
     }
 }
-
diff --git a/Sankore-3.1/src/adaptors/UBImportCFF.h b/Sankore-3.1/src/adaptors/UBImportCFF.h
index 3b5b057..f3bd163 100644
--- a/Sankore-3.1/src/adaptors/UBImportCFF.h
+++ b/Sankore-3.1/src/adaptors/UBImportCFF.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBIMPORTCFF_H
 #define UBIMPORTCFF_H
@@ -21,7 +28,7 @@
 
 class UBDocumentProxy;
 
-class UBImportCFF : public UBImportAdaptor
+class UBImportCFF : public UBDocumentBasedImportAdaptor
 {
     Q_OBJECT;
 
@@ -33,13 +40,10 @@ class UBImportCFF : public UBImportAdaptor
         virtual QString importFileFilter();
 
         virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
-
-        //base class method override
         virtual UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
 
     private:
-
-        virtual QString expandFileToDir(const QFile& pZipFile, const QString& pDir);
+        QString expandFileToDir(const QFile& pZipFile, const QString& pDir);
 };
 
 #endif // UBIMPORTCFF_H
diff --git a/Sankore-3.1/src/adaptors/UBImportDocument.cpp b/Sankore-3.1/src/adaptors/UBImportDocument.cpp
index 27ba667..aa03fff 100644
--- a/Sankore-3.1/src/adaptors/UBImportDocument.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportDocument.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBImportDocument.h"
 #include "document/UBDocumentProxy.h"
 
@@ -33,7 +40,7 @@ THIRD_PARTY_WARNINGS_ENABLE
 #include "core/memcheck.h"
 
 UBImportDocument::UBImportDocument(QObject *parent)
-    :UBImportAdaptor(parent)
+    :UBDocumentBasedImportAdaptor(parent)
 {
     // NOOP
 }
@@ -56,7 +63,7 @@ QString UBImportDocument::importFileFilter()
 }
 
 
-QString UBImportDocument::expandFileToDir(const QFile& pZipFile, const QString& pDir)
+bool UBImportDocument::extractFileToDir(const QFile& pZipFile, const QString& pDir, QString& documentRoot)
 {
 
     QDir rootDir(pDir);
@@ -65,63 +72,45 @@ QString UBImportDocument::expandFileToDir(const QFile& pZipFile, const QString&
     if(!zip.open(QuaZip::mdUnzip))
     {
         qWarning() << "Import failed. Cause zip.open(): " << zip.getZipError();
-        return "";
+        return false;
     }
 
     zip.setFileNameCodec("UTF-8");
     QuaZipFileInfo info;
     QuaZipFile file(&zip);
 
-    // TODO UB 4.x  implement a mechanism that can replace an existing
-    // document based on the UID of the document.
-    bool createNewDocument = true;
-    QString documentRootFolder;
-
-    // first we search the metadata.rdf to check the document properties
-    for(bool more = zip.goToFirstFile(); more; more = zip.goToNextFile())
-    {
-        if(!zip.getCurrentFileInfo(&info))
-        {
-            qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError();
-            return "";
-        }
-
-        QFileInfo currentFileInfo(pDir + "/" + file.getActualFileName());
-    }
-
-    if (createNewDocument)
-        documentRootFolder = UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath();
-
-
     QFile out;
     char c;
+    documentRoot = UBPersistenceManager::persistenceManager()->generateUniqueDocumentPath(pDir);
     for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile())
     {
         if(!zip.getCurrentFileInfo(&info))
         {
             //TOD UB 4.3 O display error to user or use crash reporter
             qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError();
-            return "";
+            return false;
         }
 
         if(!file.open(QIODevice::ReadOnly))
         {
             qWarning() << "Import failed. Cause: file.open(): " << zip.getZipError();
-            return "";
+            return false;
         }
 
         if(file.getZipError()!= UNZ_OK)
         {
             qWarning() << "Import failed. Cause: file.getFileName(): " << zip.getZipError();
-            return "";
+            return false;
         }
 
-        QString newFileName = documentRootFolder + "/" + file.getActualFileName();
+        QString newFileName = documentRoot + "/" + file.getActualFileName();
         QFileInfo newFileInfo(newFileName);
-        rootDir.mkpath(newFileInfo.absolutePath());
+        if (!rootDir.mkpath(newFileInfo.absolutePath()))
+            return false;
 
         out.setFileName(newFileName);
-        out.open(QIODevice::WriteOnly);
+        if (!out.open(QIODevice::WriteOnly))
+            return false;
 
         // Slow like hell (on GNU/Linux at least), but it is not my fault.
         // Not ZIP/UNZIP package's fault either.
@@ -131,7 +120,7 @@ QString UBImportDocument::expandFileToDir(const QFile& pZipFile, const QString&
         {
             qWarning() << "Import failed. Cause: Unable to write file";
             out.close();
-            return "";
+            return false;
         }
 
         while(file.getChar(&c))
@@ -142,13 +131,13 @@ QString UBImportDocument::expandFileToDir(const QFile& pZipFile, const QString&
         if(file.getZipError()!=UNZ_OK)
         {
             qWarning() << "Import failed. Cause: " << zip.getZipError();
-            return "";
+            return false;
         }
 
         if(!file.atEnd())
         {
             qWarning() << "Import failed. Cause: read all but not EOF";
-            return "";
+            return false;
         }
 
         file.close();
@@ -156,7 +145,7 @@ QString UBImportDocument::expandFileToDir(const QFile& pZipFile, const QString&
         if(file.getZipError()!=UNZ_OK)
         {
             qWarning() << "Import failed. Cause: file.close(): " <<  file.getZipError();
-            return "";
+            return false;
         }
 
     }
@@ -166,14 +155,12 @@ QString UBImportDocument::expandFileToDir(const QFile& pZipFile, const QString&
     if(zip.getZipError()!=UNZ_OK)
     {
       qWarning() << "Import failed. Cause: zip.close(): " << zip.getZipError();
-      return "";
+      return false;
     }
 
-
-    return documentRootFolder;
+    return true;
 }
 
-
 UBDocumentProxy* UBImportDocument::importFile(const QFile& pFile, const QString& pGroup)
 {
     Q_UNUSED(pGroup); // group is defined in the imported file
@@ -184,19 +171,21 @@ UBDocumentProxy* UBImportDocument::importFile(const QFile& pFile, const QString&
     // first unzip the file to the correct place
     QString path = UBSettings::userDocumentDirectory();
 
-    QString documentRootFolder = expandFileToDir(pFile, path);
-
-	if(!documentRootFolder.length()){
+    QString documentRootFolder;
+    
+	if(!extractFileToDir(pFile, path, documentRootFolder)){
 		UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
-		return 0;
+		return NULL;
 	}
-	else{
-		UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder, pGroup);
-		UBApplication::showMessage(tr("Import successful."));
-		return newDocument;
-	}
-}
 
+    bool addTitlePage = false;
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() && !QFile(documentRootFolder+"/page000.svg").exists())
+        addTitlePage=true;
+
+    UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder, pGroup, "", false, addTitlePage);
+	UBApplication::showMessage(tr("Import successful."));
+	return newDocument;
+}
 
 bool UBImportDocument::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
 {
@@ -205,9 +194,18 @@ bool UBImportDocument::addFileToDocument(UBDocumentProxy* pDocument, const QFile
 
     QString path = UBFileSystemUtils::createTempDir();
 
-    QString documentRootFolder = expandFileToDir(pFile, path);
-
-    UBPersistenceManager::persistenceManager()->addDirectoryContentToDocument(documentRootFolder, pDocument);
+    QString documentRootFolder;
+    if (!extractFileToDir(pFile, path, documentRootFolder))
+    {
+        UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
+        return false;
+    }
+        
+    if (!UBPersistenceManager::persistenceManager()->addDirectoryContentToDocument(documentRootFolder, pDocument))
+    {
+        UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
+        return false;
+    }
 
     UBFileSystemUtils::deleteDir(path);
 
@@ -215,3 +213,5 @@ bool UBImportDocument::addFileToDocument(UBDocumentProxy* pDocument, const QFile
 
     return true;
 }
+
+
diff --git a/Sankore-3.1/src/adaptors/UBImportDocument.h b/Sankore-3.1/src/adaptors/UBImportDocument.h
index 477c33c..7b223f8 100644
--- a/Sankore-3.1/src/adaptors/UBImportDocument.h
+++ b/Sankore-3.1/src/adaptors/UBImportDocument.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBIMPORTDOCUMENT_H_
 #define UBIMPORTDOCUMENT_H_
 
@@ -21,7 +28,7 @@
 
 class UBDocumentProxy;
 
-class UBImportDocument : public UBImportAdaptor
+class UBImportDocument : public UBDocumentBasedImportAdaptor
 {
     Q_OBJECT;
 
@@ -37,7 +44,7 @@ class UBImportDocument : public UBImportAdaptor
         virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
 
     private:
-        virtual QString expandFileToDir(const QFile& pZipFile, const QString& pDir);
+        bool extractFileToDir(const QFile& pZipFile, const QString& pDir, QString& documentRoot);
 };
 
 #endif /* UBIMPORTDOCUMENT_H_ */
diff --git a/Sankore-3.1/src/adaptors/UBImportImage.cpp b/Sankore-3.1/src/adaptors/UBImportImage.cpp
index 1656454..697b906 100644
--- a/Sankore-3.1/src/adaptors/UBImportImage.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportImage.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBImportImage.h"
 
 #include "document/UBDocumentProxy.h"
@@ -21,14 +28,14 @@
 #include "core/UBPersistenceManager.h"
 #include "core/UBDocumentManager.h"
 
-#include "domain/UBGraphicsPDFItem.h"
+#include "domain/UBGraphicsPixmapItem.h"
 
 #include "pdf/PDFRenderer.h"
 
 #include "core/memcheck.h"
 
 UBImportImage::UBImportImage(QObject *parent)
-    : UBImportAdaptor(parent)
+    : UBPageBasedImportAdaptor(parent)
 {
     // NOOP
 }
@@ -74,18 +81,34 @@ QString UBImportImage::importFileFilter()
     return filter;
 }
 
+QList<UBGraphicsItem*> UBImportImage::import(const QUuid& uuid, const QString& filePath)
+{
+    Q_UNUSED(uuid);
+    QList<UBGraphicsItem*> result;
+
+    QPixmap pix(filePath);
+    if (pix.isNull())
+        return result;
+
+    UBGraphicsPixmapItem* pixmapItem = new UBGraphicsPixmapItem();
+    pixmapItem->setPixmap(pix);
+    result << pixmapItem;
+    return result;
+}
 
-bool UBImportImage::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
+void UBImportImage::placeImportedItemToScene(UBGraphicsScene* scene, UBGraphicsItem* item)
 {
-    int res = UBDocumentManager::documentManager()->addImageAsPageToDocument(QStringList(QFileInfo(pFile).absoluteFilePath()), pDocument);
-    if (res == 0)
-    {
-        UBApplication::showMessage(tr("Image import failed."));
-        return false;
-    }
-    else
-    {
-        UBApplication::showMessage(tr("Image import successful."));
-        return true;
-    }
+    UBGraphicsPixmapItem* pixmapItem = (UBGraphicsPixmapItem*)item;
+    
+     UBGraphicsPixmapItem* sceneItem = scene->addPixmap(pixmapItem->pixmap(), NULL, QPointF(0, 0));
+     scene->setAsBackgroundObject(sceneItem, true);
+
+     // Only stored pixmap, should be deleted now
+     delete pixmapItem;
+}
+
+const QString& UBImportImage::folderToCopy()
+{
+    static QString f("");
+    return f;
 }
diff --git a/Sankore-3.1/src/adaptors/UBImportImage.h b/Sankore-3.1/src/adaptors/UBImportImage.h
index 684a114..8706ff4 100644
--- a/Sankore-3.1/src/adaptors/UBImportImage.h
+++ b/Sankore-3.1/src/adaptors/UBImportImage.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBIMPORTIMAGE_H_
 #define UBIMPORTIMAGE_H_
 
@@ -21,7 +28,7 @@
 
 class UBDocumentProxy;
 
-class UBImportImage : public UBImportAdaptor
+class UBImportImage : public UBPageBasedImportAdaptor
 {
     Q_OBJECT;
 
@@ -32,7 +39,9 @@ class UBImportImage : public UBImportAdaptor
         virtual QStringList supportedExtentions();
         virtual QString importFileFilter();
 
-        virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
+        virtual QList<UBGraphicsItem*> import(const QUuid& uuid, const QString& filePath);
+        virtual void placeImportedItemToScene(UBGraphicsScene* scene, UBGraphicsItem* item);
+        virtual const QString& folderToCopy();
 };
 
 #endif /* UBIMPORTIMAGE_H_ */
diff --git a/Sankore-3.1/src/adaptors/UBImportPDF.cpp b/Sankore-3.1/src/adaptors/UBImportPDF.cpp
index ef845f1..c73405d 100644
--- a/Sankore-3.1/src/adaptors/UBImportPDF.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportPDF.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBImportPDF.h"
 
 #include "document/UBDocumentProxy.h"
@@ -27,7 +34,7 @@
 #include "core/memcheck.h"
 
 UBImportPDF::UBImportPDF(QObject *parent)
-    : UBImportAdaptor(parent)
+    : UBPageBasedImportAdaptor(parent)
 {
     QDesktopWidget* desktop = UBApplication::desktop();
 	this->dpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
@@ -52,63 +59,41 @@ QString UBImportPDF::importFileFilter()
 }
 
 
-bool UBImportPDF::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
+QList<UBGraphicsItem*> UBImportPDF::import(const QUuid& uuid, const QString& filePath)
 {
-    QString documentName = QFileInfo(pFile.fileName()).completeBaseName();
-
-    QUuid uuid = QUuid::createUuid();
-
-    QString filepath = UBPersistenceManager::persistenceManager()->addPdfFileToDocument(pDocument, pFile.fileName(), uuid);
+    QList<UBGraphicsItem*> result;
 
-    PDFRenderer *pdfRenderer = PDFRenderer::rendererForUuid(uuid, pDocument->persistencePath() + "/" + filepath, true); // renderer is automatically deleted when not used anymore
+    PDFRenderer *pdfRenderer = PDFRenderer::rendererForUuid(uuid, filePath, true); // renderer is automatically deleted when not used anymore
 
     if (!pdfRenderer->isValid())
     {
         UBApplication::showMessage(tr("PDF import failed."));
-        return false;
+        return result;
     }
 	pdfRenderer->setDPI(this->dpi);
 
-    int documentPageCount = pDocument->pageCount();
-
-    if (documentPageCount == 1 && UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocument, 0)->isEmpty())
-    {
-        documentPageCount = 0;
-    }
-
     int pdfPageCount = pdfRenderer->pageCount();
 
     for(int pdfPageNumber = 1; pdfPageNumber <= pdfPageCount; pdfPageNumber++)
     {
-        int pageIndex = documentPageCount + (pdfPageNumber - 1);
         UBApplication::showMessage(tr("Importing page %1 of %2").arg(pdfPageNumber).arg(pdfPageCount), true);
+        result << new UBGraphicsPDFItem(pdfRenderer, pdfPageNumber); // deleted by the scene
+    }
+    return result;
+}
 
-        UBGraphicsScene* scene = 0;
-
-        if (pageIndex == 0)
-        {
-            scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocument, pageIndex);
-        }
-        else
-        {
-            scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(pDocument, pageIndex);
-        }
-
-        scene->setBackground(false, false);
-        UBGraphicsPDFItem *pdfItem = new UBGraphicsPDFItem(pdfRenderer, pdfPageNumber); // deleted by the scene
-        scene->addItem(pdfItem);
-
-        pdfItem->setPos(-pdfItem->boundingRect().width() / 2, -pdfItem->boundingRect().height() / 2);
-
-        scene->setAsBackgroundObject(pdfItem, false, false);
-
-        scene->setNominalSize(pdfItem->boundingRect().width(), pdfItem->boundingRect().height());
+void UBImportPDF::placeImportedItemToScene(UBGraphicsScene* scene, UBGraphicsItem* item)
+{
+    UBGraphicsPDFItem *pdfItem = (UBGraphicsPDFItem*)item;
 
+    pdfItem->setPos(-pdfItem->boundingRect().width() / 2, -pdfItem->boundingRect().height() / 2);
 
-        UBPersistenceManager::persistenceManager()->persistDocumentScene(pDocument, scene, pageIndex);
-    }
+    scene->setAsBackgroundObject(pdfItem, false, false);
 
-    UBApplication::showMessage(tr("PDF import successful."));
+    scene->setNominalSize(pdfItem->boundingRect().width(), pdfItem->boundingRect().height());
+}
 
-    return true;
+const QString& UBImportPDF::folderToCopy()
+{
+    return UBPersistenceManager::objectDirectory;
 }
diff --git a/Sankore-3.1/src/adaptors/UBImportPDF.h b/Sankore-3.1/src/adaptors/UBImportPDF.h
index 0775027..9b2f7b0 100644
--- a/Sankore-3.1/src/adaptors/UBImportPDF.h
+++ b/Sankore-3.1/src/adaptors/UBImportPDF.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBIMPORTPDF_H_
 #define UBIMPORTPDF_H_
 
@@ -21,7 +28,7 @@
 
 class UBDocumentProxy;
 
-class UBImportPDF : public UBImportAdaptor
+class UBImportPDF : public UBPageBasedImportAdaptor
 {
     Q_OBJECT;
 
@@ -32,7 +39,9 @@ class UBImportPDF : public UBImportAdaptor
         virtual QStringList supportedExtentions();
         virtual QString importFileFilter();
 
-        virtual bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
+        virtual QList<UBGraphicsItem*> import(const QUuid& uuid, const QString& filePath);
+        virtual void placeImportedItemToScene(UBGraphicsScene* scene, UBGraphicsItem* item);
+        virtual const QString& folderToCopy();
 
 	private:
 		int dpi;
diff --git a/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp b/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp
index ec9224e..94ea9d2 100644
--- a/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp
+++ b/Sankore-3.1/src/adaptors/UBImportVirtualPrinter.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBImportVirtualPrinter.h"
 
 #include "core/UBApplication.h"
diff --git a/Sankore-3.1/src/adaptors/UBIniFileParser.cpp b/Sankore-3.1/src/adaptors/UBIniFileParser.cpp
index 2c7771c..be33bd5 100644
--- a/Sankore-3.1/src/adaptors/UBIniFileParser.cpp
+++ b/Sankore-3.1/src/adaptors/UBIniFileParser.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBIniFileParser.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/adaptors/UBIniFileParser.h b/Sankore-3.1/src/adaptors/UBIniFileParser.h
index c889d63..c43e4b5 100644
--- a/Sankore-3.1/src/adaptors/UBIniFileParser.h
+++ b/Sankore-3.1/src/adaptors/UBIniFileParser.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBINIFILEPARSER_H_
 #define UBINIFILEPARSER_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp
index 066f924..cf7ee3c 100644
--- a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBMetadataDcSubsetAdaptor.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h
index c86e70b..40b7b45 100644
--- a/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBMetadataDcSubsetAdaptor.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBMETADATADCSUBSETADAPTOR_H_
 #define UBMETADATADCSUBSETADAPTOR_H_
 
diff --git a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp
index 286d148..9cd8310 100644
--- a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBSvgSubsetAdaptor.h"
 
 #include <QtCore>
@@ -22,15 +29,14 @@
 #include "domain/UBGraphicsPixmapItem.h"
 #include "domain/UBGraphicsProxyWidget.h"
 #include "domain/UBGraphicsPolygonItem.h"
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/UBGraphicsAudioItem.h"
+#include "domain/UBGraphicsMediaItem.h"
 #include "domain/UBGraphicsWidgetItem.h"
 #include "domain/UBGraphicsPDFItem.h"
 #include "domain/UBGraphicsTextItem.h"
-#include "domain/UBAbstractWidget.h"
+#include "domain/UBGraphicsTextItemDelegate.h"
 #include "domain/UBGraphicsStroke.h"
 #include "domain/UBGraphicsStrokesGroup.h"
-#include "domain/ubgraphicsgroupcontaineritem.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
 #include "domain/UBItem.h"
 
 #include "tools/UBGraphicsRuler.h"
@@ -45,17 +51,24 @@
 #include "board/UBBoardView.h"
 #include "board/UBBoardController.h"
 #include "board/UBDrawingController.h"
+#include "board/UBBoardPaletteManager.h"
 
 #include "frameworks/UBFileSystemUtils.h"
 #include "frameworks/UBStringUtils.h"
+#include "frameworks/UBFileSystemUtils.h"
 
 #include "core/UBSettings.h"
 #include "core/UBSetting.h"
 #include "core/UBPersistenceManager.h"
 #include "core/UBApplication.h"
 
+#include "gui/UBTeacherGuideWidget.h"
+#include "gui/UBDockTeacherGuideWidget.h"
+
 #include "interfaces/IDataStorage.h"
 
+#include "document/UBDocumentContainer.h"
+
 #include "pdf/PDFRenderer.h"
 
 #include "core/memcheck.h"
@@ -71,6 +84,13 @@ const QString UBSvgSubsetAdaptor::sPixelUnit = "px";
 const QString UBSvgSubsetAdaptor::sFontWeightPrefix = "font-weight:";
 const QString UBSvgSubsetAdaptor::sFontStylePrefix = "font-style:";
 const QString UBSvgSubsetAdaptor::sFormerUniboardDocumentNamespaceUri = "http://www.mnemis.com/uniboard";
+
+const QString tElement = "element";
+const QString tGroup = "group";
+const QString tStrokeGroup = "strokeGroup";
+const QString tGroups = "groups";
+const QString aId = "id";
+
 QMap<QString,IDataStorage*> UBSvgSubsetAdaptor::additionalElementToStore;
 
 QString UBSvgSubsetAdaptor::toSvgTransform(const QMatrix& matrix)
@@ -108,6 +128,7 @@ QMatrix UBSvgSubsetAdaptor::fromSvgTransform(const QString& transform)
 }
 
 
+
 static bool itemZIndexComp(const QGraphicsItem* item1,
                            const QGraphicsItem* item2)
 {
@@ -226,7 +247,7 @@ QString UBSvgSubsetAdaptor::uniboardDocumentNamespaceUriFromVersion(int mFileVer
 UBGraphicsScene* UBSvgSubsetAdaptor::loadScene(UBDocumentProxy* proxy, const int pageIndex)
 {
     QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", pageIndex);
-
+    qDebug() << fileName;
     QFile file(fileName);
 
     if (file.exists())
@@ -306,7 +327,7 @@ QString UBSvgSubsetAdaptor::readTeacherGuideNode(int sceneIndex)
 {
     QString result;
 
-    QString fileName = UBApplication::boardController->activeDocument()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", sceneIndex);
+    QString fileName = UBApplication::boardController->selectedDocument()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", sceneIndex);
     QFile file(fileName);
     file.open(QIODevice::ReadOnly);
     QByteArray fileByteArray=file.readAll();
@@ -361,15 +382,13 @@ UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy
 
 UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 {
-    UBGraphicsScene *scene = 0;
+    mScene = 0;
     UBGraphicsWidgetItem *currentWidget = 0;
 
     mFileVersion = 40100; // default to 4.1.0
 
     UBGraphicsStroke* annotationGroup = 0;
     UBGraphicsStrokesGroup* strokesGroup = 0;
-    UBDrawingController* dc = UBDrawingController::drawingController();
-
 
     while (!mXmlReader.atEnd())
     {
@@ -377,12 +396,14 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
         if (mXmlReader.isStartElement())
         {
             qreal zFromSvg = getZValueFromSvg();
+            QUuid uuidFromSvg = getUuidFromSvg();
+
 
             if (mXmlReader.name() == "svg")
             {
-                if (!scene)
+                if (!mScene)
                 {
-                    scene = new UBGraphicsScene(mProxy);
+                    mScene = new UBGraphicsScene(mProxy, false);
                 }
 
                 // introduced in UB 4.2
@@ -419,7 +440,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                 if (!svgSceneUuid.isNull())
                 {
-                    scene->setUuid(QUuid(svgSceneUuid.toString()));
+                    mScene->setUuid(QUuid(svgSceneUuid.toString()));
                 }
 
                 // introduced in UB 4.0
@@ -439,7 +460,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                         sceneRect.setWidth(ts.at(2).toFloat());
                         sceneRect.setHeight(ts.at(3).toFloat());
 
-                        scene->setSceneRect(sceneRect);
+                        mScene->setSceneRect(sceneRect);
                     }
                     else
                     {
@@ -447,6 +468,13 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                     }
                 }
 
+                QStringRef pageDpi = mXmlReader.attributes().value("pageDpi");
+
+                if (!pageDpi.isNull())
+                {
+                    UBSettings::settings()->pageDpi->set(pageDpi.toString());
+                }
+
                 bool darkBackground = false;
                 bool crossedBackground = false;
 
@@ -460,7 +488,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 if (!ubDarkBackground.isNull())
                     crossedBackground = (ubCrossedBackground.toString() == xmlTrue);
 
-                scene->setBackground(darkBackground, crossedBackground);
+                mScene->setBackground(darkBackground, crossedBackground);
 
                 QStringRef pageNominalSize = mXmlReader.attributes().value(mNamespaceUri, "nominal-size");
                 if (!pageNominalSize.isNull())
@@ -473,7 +501,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                         sceneSize.setWidth(ts.at(0).toInt());
                         sceneSize.setHeight(ts.at(1).toInt());
 
-                        scene->setNominalSize(sceneSize);
+                        mScene->setNominalSize(sceneSize);
                     }
                     else
                     {
@@ -493,10 +521,9 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 else
                     annotationGroup = new UBGraphicsStroke();
 
-               if(eDrawingMode_Vector == dc->drawingMode()){
-                    strokesGroup = new UBGraphicsStrokesGroup();
-                    graphicsItemFromSvg(strokesGroup);
-                }
+
+                strokesGroup = new UBGraphicsStrokesGroup();
+                graphicsItemFromSvg(strokesGroup);
 
                 QStringRef ubZValue = mXmlReader.attributes().value(mNamespaceUri, "z-value");
 
@@ -526,27 +553,29 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                 if (mXmlReader.name() == "polygon")
                 {
-                    polygonItem = polygonItemFromPolygonSvg(scene->isDarkBackground() ? Qt::white : Qt::black);
+                    polygonItem = polygonItemFromPolygonSvg(mScene->isDarkBackground() ? Qt::white : Qt::black);
                 }
                 else if (mXmlReader.name() == "line")
                 {
-                    polygonItem = polygonItemFromLineSvg(scene->isDarkBackground() ? Qt::white : Qt::black);
+                    polygonItem = polygonItemFromLineSvg(mScene->isDarkBackground() ? Qt::white : Qt::black);
                 }
 
                 if (polygonItem)
                 {
+                    mScene->addItem(polygonItem);
+
+                    polygonItem->setUuid(uuidFromSvg);
+
                     if (annotationGroup)
                     {
                         polygonItem->setStroke(annotationGroup);
                     }
 
-                    if(eDrawingMode_Vector == dc->drawingMode()){
-                        if(strokesGroup){
+
+                    if(strokesGroup){
                             polygonItem->setTransform(strokesGroup->transform());
                             strokesGroup->addToGroup(polygonItem);
-                        }
-                    }else{
-                        scene->addItem(polygonItem);
+                            polygonItem->setStrokesGroup(strokesGroup);
                     }
 
                     polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic));
@@ -557,7 +586,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
             else if (mXmlReader.name() == "polyline")
             {
                 QList<UBGraphicsPolygonItem*> polygonItems
-                = polygonItemsFromPolylineSvg(scene->isDarkBackground() ? Qt::white : Qt::black);
+                = polygonItemsFromPolylineSvg(mScene->isDarkBackground() ? Qt::white : Qt::black);
 
                 foreach(UBGraphicsPolygonItem* polygonItem, polygonItems)
                 {
@@ -566,13 +595,11 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                         polygonItem->setStroke(annotationGroup);
                     }
 
-                    if(eDrawingMode_Vector == dc->drawingMode()){
-                        if(strokesGroup){
-                            polygonItem->setTransform(strokesGroup->transform());
-                            strokesGroup->addToGroup(polygonItem);
-                        }
-                    }else{
-                        scene->addItem(polygonItem);
+
+                    if(strokesGroup){
+                        polygonItem->setTransform(strokesGroup->transform());
+                        strokesGroup->addToGroup(polygonItem);
+                        polygonItem->setStrokesGroup(strokesGroup);
                     }
 
                     polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic));
@@ -594,19 +621,22 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                     if (href.contains("png"))
                     {
 
-                        QGraphicsPixmapItem* pixmapItem = pixmapItemFromSvg();
+                        UBGraphicsPixmapItem* pixmapItem = pixmapItemFromSvg();
                         if (pixmapItem)
                         {
                             pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                             pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                            scene->addItem(pixmapItem);
+                            mScene->addItem(pixmapItem);
 
                             if (zFromSvg != UBZLayerController::errorNum())
                                 UBGraphicsItem::assignZValue(pixmapItem, zFromSvg);
 
+                            if (!uuidFromSvg.isNull())
+                                pixmapItem->setUuid(uuidFromSvg);
+
                             if (isBackground)
-                                scene->setAsBackgroundObject(pixmapItem);
+                                mScene->setAsBackgroundObject(pixmapItem);
 
                             pixmapItem->show();
                         }
@@ -620,13 +650,13 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                             svgItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                             svgItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                            scene->addItem(svgItem);
+                            mScene->addItem(svgItem);
 
                             if (zFromSvg != UBZLayerController::errorNum())
                                 UBGraphicsItem::assignZValue(svgItem, zFromSvg);
 
                             if (isBackground)
-                                scene->setAsBackgroundObject(svgItem);
+                                mScene->setAsBackgroundObject(svgItem);
 
                             svgItem->show();
                         }
@@ -639,18 +669,21 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
             }
             else if (mXmlReader.name() == "audio")
             {
-                UBGraphicsAudioItem* audioItem = audioItemFromSvg();
+                UBGraphicsMediaItem* audioItem = audioItemFromSvg();
 
                 if (audioItem)
                 {
                     audioItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                     audioItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                    scene->addItem(audioItem);
+                    mScene->addItem(audioItem);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(audioItem, zFromSvg);
 
+                    if (!uuidFromSvg.isNull())
+                        audioItem->setUuid(uuidFromSvg);
+
                     audioItem->show();
 
                     //force start to load the video and display the first frame
@@ -660,18 +693,21 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
             }
             else if (mXmlReader.name() == "video")
             {
-                UBGraphicsVideoItem* videoItem = videoItemFromSvg();
+                UBGraphicsMediaItem* videoItem = videoItemFromSvg();
 
                 if (videoItem)
                 {
                     videoItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                     videoItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                    scene->addItem(videoItem);
+                    mScene->addItem(videoItem);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(videoItem, zFromSvg);
 
+                    if (!uuidFromSvg.isNull())
+                        videoItem->setUuid(uuidFromSvg);
+
                     videoItem->show();
 
                     //force start to load the video and display the first frame
@@ -688,11 +724,14 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                     textItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                     textItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                    scene->addItem(textItem);
+                    mScene->addItem(textItem);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(textItem, zFromSvg);
 
+                    if (!uuidFromSvg.isNull())
+                        textItem->setUuid(uuidFromSvg);
+
                     textItem->show();
                 }
             }
@@ -702,11 +741,14 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                 if (mask)
                 {
-                    scene->addItem(mask);
-                    scene->registerTool(mask);
+                    mScene->addItem(mask);
+                    mScene->registerTool(mask);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(mask, zFromSvg);
+
+                    if (!uuidFromSvg.isNull())
+                        mask->setUuid(uuidFromSvg);
                 }
             }
             else if (mXmlReader.name() == "ruler")
@@ -718,8 +760,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 ubZValue = mXmlReader.attributes().value(mNamespaceUri, "z-value").toString();
                 if (ruler)
                 {
-                    scene->addItem(ruler);
-                    scene->registerTool(ruler);
+                    mScene->addItem(ruler);
+                    mScene->registerTool(ruler);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(ruler, zFromSvg);
@@ -732,8 +774,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                 if (compass)
                 {
-                    scene->addItem(compass);
-                    scene->registerTool(compass);
+                    mScene->addItem(compass);
+                    mScene->registerTool(compass);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(compass, zFromSvg);
@@ -745,8 +787,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                 if (protractor)
                 {
-                    scene->addItem(protractor);
-                    scene->registerTool(protractor);
+                    mScene->addItem(protractor);
+                    mScene->registerTool(protractor);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(protractor, zFromSvg);
@@ -758,8 +800,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                 if (triangle)
                 {
-                    scene->addItem(triangle);
-                    scene->registerTool(triangle);
+                    mScene->addItem(triangle);
+                    mScene->registerTool(triangle);
 
                     if (zFromSvg != UBZLayerController::errorNum())
                         UBGraphicsItem::assignZValue(triangle, zFromSvg);
@@ -770,8 +812,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 UBGraphicsCache* cache = cacheFromSvg();
                 if(cache)
                 {
-                    scene->addItem(cache);
-                    scene->registerTool(cache);
+                    mScene->addItem(cache);
+                    mScene->registerTool(cache);
                     UBApplication::boardController->notifyCache(true);
 
                     if (zFromSvg != UBZLayerController::errorNum())
@@ -793,16 +835,20 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                     UBGraphicsPDFItem* pdfItem = pdfItemFromPDF();
                     if (pdfItem)
                     {
+                        QDesktopWidget* desktop = UBApplication::desktop();
+                        qreal currentDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
+                        qreal pdfScale = UBSettings::settings()->pageDpi->get().toReal()/currentDpi;
+                        pdfItem->setScale(pdfScale);
                         pdfItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                         pdfItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                        scene->addItem(pdfItem);
+                        mScene->addItem(pdfItem);
 
                         if (zFromSvg != UBZLayerController::errorNum())
                             UBGraphicsItem::assignZValue(pdfItem, zFromSvg);
 
                         if (isBackground)
-                            scene->setAsBackgroundObject(pdfItem);
+                            mScene->setAsBackgroundObject(pdfItem);
 
                         pdfItem->show();
 
@@ -814,16 +860,19 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                     UBGraphicsAppleWidgetItem* appleWidgetItem = graphicsAppleWidgetFromSvg();
                     if (appleWidgetItem)
                     {
-                        appleWidgetItem->setFlag(QGraphicsItem::ItemIsMovable, true);
+ //                       appleWidgetItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                         appleWidgetItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
                         appleWidgetItem->resize(foreignObjectWidth, foreignObjectHeight);
 
-                        scene->addItem(appleWidgetItem);
+                        mScene->addItem(appleWidgetItem);
 
                         if (zFromSvg != UBZLayerController::errorNum())
                             UBGraphicsItem::assignZValue(appleWidgetItem, zFromSvg);
 
+                        if (!uuidFromSvg.isNull())
+                            appleWidgetItem->setUuid(uuidFromSvg);
+
                         appleWidgetItem->show();
 
                         currentWidget = appleWidgetItem;
@@ -835,16 +884,19 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
 
                     if (w3cWidgetItem)
                     {
-                        w3cWidgetItem->setFlag(QGraphicsItem::ItemIsMovable, true);
+ //                       w3cWidgetItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                         w3cWidgetItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
                         w3cWidgetItem->resize(foreignObjectWidth, foreignObjectHeight);
 
-                        scene->addItem(w3cWidgetItem);
+                        mScene->addItem(w3cWidgetItem);
 
                         if (zFromSvg != UBZLayerController::errorNum())
                             UBGraphicsItem::assignZValue(w3cWidgetItem, zFromSvg);
 
+                        if (!uuidFromSvg.isNull())
+                            w3cWidgetItem->setUuid(uuidFromSvg);
+
                         w3cWidgetItem->show();
 
                         currentWidget = w3cWidgetItem;
@@ -854,16 +906,32 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 {
                     UBGraphicsTextItem* textItem = textItemFromSvg();
 
+                    UBGraphicsTextItemDelegate *textDelegate = 0;
+
+                    if (textItem)
+                        textDelegate = dynamic_cast<UBGraphicsTextItemDelegate*>(textItem->Delegate());
+
+                    if (textDelegate)
+                    {
+                        QDesktopWidget* desktop = UBApplication::desktop();
+                        qreal currentDpi = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
+                        qreal textSizeMultiplier = UBSettings::settings()->pageDpi->get().toReal()/currentDpi;
+                        textDelegate->scaleTextSize(textSizeMultiplier);
+                    }
+
                     if (textItem)
                     {
                         textItem->setFlag(QGraphicsItem::ItemIsMovable, true);
                         textItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
 
-                        scene->addItem(textItem);
+                        mScene->addItem(textItem);
 
                         if (zFromSvg != UBZLayerController::errorNum())
                             UBGraphicsItem::assignZValue(textItem, zFromSvg);
 
+                        if (!uuidFromSvg.isNull())
+                            textItem->setUuid(uuidFromSvg);
+
                         textItem->show();
                     }
                 }
@@ -885,19 +953,11 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 QString value = mXmlReader.attributes().value("value").toString();
 
                 currentWidget->setDatastoreEntry(key, value);
+            } else if (mXmlReader.name() == tGroups) {
+                //considering groups section at the end of the document
+
+                readGroupRoot();
             }
-//            else if (mXmlReader.name() == "teacherBar" || mXmlReader.name() == "teacherGuide"){
-//                sTeacherGuideNode.clear();
-//                sTeacherGuideNode += "<teacherGuide version=\"" + mXmlReader.attributes().value("version").toString() + "\">";
-//                sTeacherGuideNode += "\n";
-//            }
-//            else if (mXmlReader.name() == "media" || mXmlReader.name() == "link" || mXmlReader.name() == "title" || mXmlReader.name() == "comment" || mXmlReader.name() == "action")
-//            {
-//                sTeacherGuideNode += "<" + mXmlReader.name().toString() + " ";
-//                foreach(QXmlStreamAttribute attribute, mXmlReader.attributes())
-//                    sTeacherGuideNode += attribute.name().toString() + "=\"" + attribute.value().toString() + "\" ";
-//                sTeacherGuideNode += " />\n";
-//            }
             else
             {
                 // NOOP
@@ -907,8 +967,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
         {
             if (mXmlReader.name() == "g")
             {
-                if(strokesGroup && scene){
-                    scene->addItem(strokesGroup);
+                if(strokesGroup && mScene){
+                    mScene->addItem(strokesGroup);
                     //graphicsItemFromSvg(strokesGroup);
                 }
 
@@ -921,15 +981,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
                 mGroupDarkBackgroundColor = QColor();
                 mGroupLightBackgroundColor = QColor();
             }
-//            else if (mXmlReader.name() == "teacherBar" || mXmlReader.name() == "teacherGuide"){
-//                sTeacherGuideNode += "</teacherGuide>";
-//                qDebug() << sTeacherGuideNode;
-//                QMap<QString,IDataStorage*> elements = getAdditionalElementToStore();
-//                IDataStorage* storageClass = elements.value("teacherGuide");
-//                if(storageClass){
-//                     storageClass->load(sTeacherGuideNode);
-//                }
-//            }
         }
     }
 
@@ -938,8 +989,8 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
         qWarning() << "error parsing Sankore file " << mXmlReader.errorString();
     }
 
-    if (scene) {
-        scene->setModified(false);
+    if (mScene) {
+        mScene->setModified(false);
     }
 
     if (annotationGroup)
@@ -948,9 +999,148 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
             delete annotationGroup;
     }
 
-    return scene;
+    mScene->enableUndoRedoStack();
+    return mScene;
+}
+
+
+UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
+{
+    UBGraphicsGroupContainerItem *group = new UBGraphicsGroupContainerItem();
+    QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;
+    QList<QGraphicsItem *> groupContainer;
+
+    mXmlReader.readNext();
+    while (!mXmlReader.atEnd())
+    {
+        if (mXmlReader.isEndElement()) {
+            mXmlReader.readNext();
+            break;
+        } else if (mXmlReader.isStartElement())
+        {
+            if (mXmlReader.name() == tGroup)
+            {
+                qDebug() << "came across the group id is" << mXmlReader.attributes().value(aId);
+                UBGraphicsGroupContainerItem *curGroup = readGroup();
+                if (curGroup)
+                    groupContainer.append(curGroup);
+                else
+                    qDebug() << "this is an error";
+            }
+            else if (mXmlReader.name() == tElement)
+            {
+                QString id = mXmlReader.attributes().value(aId).toString();
+                QString itemId  = id.right(QUuid().toString().size());
+                QString groupId = id.left(QUuid().toString().size());
+
+                QGraphicsItem *curItem = readElementFromGroup();
+
+                UBGraphicsPolygonItem *curPolygon = qgraphicsitem_cast<UBGraphicsPolygonItem *>(curItem);
+
+                if (curPolygon && !groupId.isEmpty() && !itemId.isEmpty() && itemId != groupId)
+                {
+                    strokesGroupsContainer.insert(groupId, curPolygon);
+                }
+                else // item
+                {
+                    if(curItem)
+                        groupContainer.append(curItem);
+                    else
+                        qDebug() << "this is an error";
+                }
+            }else {
+                mXmlReader.skipCurrentElement();
+            }
+        } else {
+            mXmlReader.readNext();
+        }
+    }
+
+    foreach (QString key, strokesGroupsContainer.keys().toSet())
+    {
+        UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
+        UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
+        foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
+        {
+            if (poly)
+            {
+                mScene->removeItem(poly);
+                mScene->removeItemFromDeletion(poly);
+                poly->setStrokesGroup(pStrokesGroup);
+                poly->setStroke(currentStroke);
+                pStrokesGroup->addToGroup(poly);
+            }
+        }
+        if (currentStroke->polygons().empty())
+            delete currentStroke;
+
+        if (pStrokesGroup->childItems().count())
+            mScene->addItem(pStrokesGroup);
+        else
+            delete pStrokesGroup;
+
+        if (pStrokesGroup)
+        {
+            QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
+            if(strokeGroup)
+                groupContainer.append(strokeGroup);
+            else
+                qDebug() << "this is an error";
+        }
+    }
+
+    foreach(QGraphicsItem* item, groupContainer)
+        group->addToGroup(item);
+
+    if (group->childItems().count())
+    {
+        mScene->addItem(group);
+
+        if (1 == group->childItems().count())
+        {
+            group->destroy(false);
+        }
+    }
+    return group;
 }
 
+void UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroupRoot()
+{
+    mXmlReader.readNext();
+    while (!mXmlReader.atEnd()) {
+        if (mXmlReader.isEndElement()) {
+            mXmlReader.readNext();
+            break;
+        } else if (mXmlReader.isStartElement()) {
+            if (mXmlReader.name() == tGroup) {
+               UBGraphicsGroupContainerItem *curGroup = readGroup();
+                if (curGroup) {
+                    mScene->addGroup(curGroup);
+                }
+            }else {
+                mXmlReader.skipCurrentElement();
+            }
+        } else {
+            mXmlReader.readNext();
+        }
+    }
+}
+
+QGraphicsItem *UBSvgSubsetAdaptor::UBSvgSubsetReader::readElementFromGroup()
+{
+    QGraphicsItem *result = 0;
+    QString id = mXmlReader.attributes().value(aId).toString();
+    QString uuid = id.right(QUuid().toString().size());
+    result = mScene->itemForUuid(QUuid(uuid));
+
+    if(!result)
+        qDebug() << "uuid " << uuid;
+
+    mXmlReader.skipCurrentElement();
+    mXmlReader.readNext();
+
+    return result;
+}
 
 void UBSvgSubsetAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, const int pageIndex)
 {
@@ -993,6 +1183,9 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement()
     mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "dark-background", mScene->isDarkBackground() ? xmlTrue : xmlFalse);
     mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "crossed-background", mScene->isCrossedBackground() ? xmlTrue : xmlFalse);
 
+    QDesktopWidget* desktop = UBApplication::desktop();
+    mXmlWriter.writeAttribute("pageDpi", QString("%1").arg((desktop->physicalDpiX() + desktop->physicalDpiY()) / 2));
+
     mXmlWriter.writeStartElement("rect");
     mXmlWriter.writeAttribute("fill", mScene->isDarkBackground() ? "black" : "white");
     mXmlWriter.writeAttribute("x", QString::number(normalized.x()));
@@ -1005,20 +1198,18 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement()
 
 bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
 {
-
-
-    if (mScene->isModified())
+    if (mScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))
     {
-        static int i = 0;
-        qDebug() << "persist call no is " << ++i;
+
+        //Creating dom structure to store information
+        QDomDocument groupDomDocument;
+        QDomElement groupRoot = groupDomDocument.createElement(tGroups);
+        groupDomDocument.appendChild(groupRoot);
 
         QBuffer buffer;
         buffer.open(QBuffer::WriteOnly);
         mXmlWriter.setDevice(&buffer);
 
-        //Unused variable
-        //QTime timer = QTime::currentTime();
-
         mXmlWriter.setAutoFormatting(true);
 
         mXmlWriter.writeStartDocument();
@@ -1029,6 +1220,7 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
 
         writeSvgElement();
 
+        // Get the items from the scene
         QList<QGraphicsItem*> items = mScene->items();
 
         qSort(items.begin(), items.end(), itemZIndexComp);
@@ -1041,10 +1233,50 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
         {
             QGraphicsItem *item = items.takeFirst();
 
-            UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*> (item);
+            // Is the item a strokes group?
+
+            UBGraphicsStrokesGroup* strokesGroupItem = qgraphicsitem_cast<UBGraphicsStrokesGroup*>(item);
+
+            if(strokesGroupItem && strokesGroupItem->isVisible()){
+                QDomElement newGroupElement;
+                if (!strokesGroupItem->parentItem() && strokesGroupItem->childItems().count()) {
+                    newGroupElement = groupDomDocument.createElement(tGroup);
+                    newGroupElement.setAttribute(aId, strokesGroupItem->uuid().toString());
+                    groupRoot.appendChild(newGroupElement);
+                }
 
+                //disabling g section parsing as a group of elements. Use groups refs instead
+//                mXmlWriter.writeStartElement("g");
+//                mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(strokesGroupItem->uuid()));
+//            	QMatrix matrix = item->sceneMatrix();
+//				if (!matrix.isIdentity()){
+//					mXmlWriter.writeAttribute("transform", toSvgTransform(matrix));
+//				}
+
+                // Add the polygons
+                foreach(QGraphicsItem* item, strokesGroupItem->childItems()){
+
+                    UBGraphicsPolygonItem* poly = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+                    if(NULL != poly){
+                        polygonItemToSvgPolygon(poly, true);
+                        if (!newGroupElement.isNull()) {
+                            QDomElement curPolygonElement = groupDomDocument.createElement(tElement);
+                            curPolygonElement.setAttribute(aId, strokesGroupItem->uuid().toString()
+                                                              + poly->uuid().toString());
+                            newGroupElement.appendChild(curPolygonElement);
+                        }
+                        items.removeOne(poly);
+                    }
+                }
+
+//                mXmlWriter.writeEndElement(); //g
+            }
+
+            // Is the item a polygon?
+            UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*> (item);
             if (polygonItem && polygonItem->isVisible())
             {
+
                 UBGraphicsStroke* currentStroke = polygonItem->stroke();
 
                 if (openStroke && (currentStroke != openStroke))
@@ -1116,84 +1348,82 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
                 openStroke = 0;
             }
 
+            // Is the item a picture?
             UBGraphicsPixmapItem *pixmapItem = qgraphicsitem_cast<UBGraphicsPixmapItem*> (item);
-
             if (pixmapItem && pixmapItem->isVisible())
             {
                 pixmapItemToLinkedImage(pixmapItem);
                 continue;
             }
 
+            // Is the item a shape?
             UBGraphicsSvgItem *svgItem = qgraphicsitem_cast<UBGraphicsSvgItem*> (item);
-
             if (svgItem && svgItem->isVisible())
             {
                 svgItemToLinkedSvg(svgItem);
                 continue;
             }
 
-            UBGraphicsVideoItem *videoItem = qgraphicsitem_cast<UBGraphicsVideoItem*> (item);
+            UBGraphicsMediaItem *mediaItem = qgraphicsitem_cast<UBGraphicsMediaItem*> (item);
 
-            if (videoItem && videoItem->isVisible())
+            if (mediaItem && mediaItem->isVisible())
             {
-                videoItemToLinkedVideo(videoItem);
-                continue;
-            }
-
-            UBGraphicsAudioItem* audioItem = qgraphicsitem_cast<UBGraphicsAudioItem*> (item);
-            if (audioItem && audioItem->isVisible()) {
-                audioItemToLinkedAudio(audioItem);
+                if (UBGraphicsMediaItem::mediaType_Video == mediaItem->getMediaType())
+                    videoItemToLinkedVideo(mediaItem);
+                else
+                    audioItemToLinkedAudio(mediaItem);
                 continue;
             }
 
+            // Is the item an app?
             UBGraphicsAppleWidgetItem *appleWidgetItem = qgraphicsitem_cast<UBGraphicsAppleWidgetItem*> (item);
-
             if (appleWidgetItem && appleWidgetItem->isVisible())
             {
                 graphicsAppleWidgetToSvg(appleWidgetItem);
                 continue;
             }
 
+            // Is the item a W3C?
             UBGraphicsW3CWidgetItem *w3cWidgetItem = qgraphicsitem_cast<UBGraphicsW3CWidgetItem*> (item);
-
             if (w3cWidgetItem && w3cWidgetItem->isVisible())
             {
                 graphicsW3CWidgetToSvg(w3cWidgetItem);
                 continue;
             }
 
+            // Is the item a PDF?
             UBGraphicsPDFItem *pdfItem = qgraphicsitem_cast<UBGraphicsPDFItem*> (item);
-
             if (pdfItem && pdfItem->isVisible())
             {
                 pdfItemToLinkedPDF(pdfItem);
                 continue;
             }
 
+            // Is the item a text?
             UBGraphicsTextItem *textItem = qgraphicsitem_cast<UBGraphicsTextItem*> (item);
-
             if (textItem && textItem->isVisible())
             {
                 textItemToSvg(textItem);
                 continue;
             }
 
+            // Is the item a curtain?
             UBGraphicsCurtainItem *curtainItem = qgraphicsitem_cast<UBGraphicsCurtainItem*> (item);
-
             if (curtainItem && curtainItem->isVisible())
             {
                 curtainItemToSvg(curtainItem);
                 continue;
             }
 
+            // Is the item a ruler?
             UBGraphicsRuler *ruler = qgraphicsitem_cast<UBGraphicsRuler*> (item);
-
             if (ruler && ruler->isVisible())
             {
                 rulerToSvg(ruler);
                 continue;
             }
 
+            // Is the item a cache?
             UBGraphicsCache* cache = qgraphicsitem_cast<UBGraphicsCache*>(item);
             if(cache && cache->isVisible())
             {
@@ -1201,35 +1431,35 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
                 continue;
             }
 
+            // Is the item a compass
             UBGraphicsCompass *compass = qgraphicsitem_cast<UBGraphicsCompass*> (item);
-
             if (compass && compass->isVisible())
             {
                 compassToSvg(compass);
                 continue;
             }
 
+            // Is the item a protractor?
             UBGraphicsProtractor *protractor = qgraphicsitem_cast<UBGraphicsProtractor*> (item);
-
             if (protractor && protractor->isVisible())
             {
                 protractorToSvg(protractor);
                 continue;
             }
 
+            // Is the item a triangle?
             UBGraphicsTriangle *triangle = qgraphicsitem_cast<UBGraphicsTriangle*> (item);
-
             if (triangle && triangle->isVisible())
             {
                 triangleToSvg(triangle);
                 continue;
             }
 
+            // Is the item a group?
             UBGraphicsGroupContainerItem *groupItem = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(item);
-
             if (groupItem && groupItem->isVisible())
             {
-                qDebug() << "came across the group during the parsing";
+                persistGroupToDom(groupItem, &groupRoot, &groupDomDocument);
                 continue;
             }
         }
@@ -1242,7 +1472,10 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
         }
 
         QMap<QString,IDataStorage*> elements = getAdditionalElementToStore();
-        QVector<tIDataStorage*> dataStorageItems = elements.value("teacherGuide")->save(pageIndex);
+        QVector<tIDataStorage*> dataStorageItems;
+
+        if(elements.value("teacherGuide"))
+            dataStorageItems = elements.value("teacherGuide")->save(pageIndex);
         foreach(tIDataStorage* eachItem, dataStorageItems){
             if(eachItem->type == eElementType_START){
                 mXmlWriter.writeStartElement(eachItem->name);
@@ -1261,6 +1494,30 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
                 qWarning() << "unknown type";
         }
 
+        //writing group data
+        if (groupRoot.hasChildNodes()) {
+            mXmlWriter.writeStartElement(tGroups);
+            QDomElement curElement = groupRoot.firstChildElement();
+            while (!curElement.isNull()) {
+                if (curElement.hasAttribute(aId)) {
+                    mXmlWriter.writeStartElement(curElement.tagName());
+                    mXmlWriter.writeAttribute(aId, curElement.attribute(aId));
+                    QDomElement curSubElement = curElement.firstChildElement();
+                    while (!curSubElement.isNull()) {
+                        if (curSubElement.hasAttribute(aId)) {
+                            mXmlWriter.writeStartElement(curSubElement.tagName());
+                            mXmlWriter.writeAttribute(aId, curSubElement.attribute(aId));
+                            mXmlWriter.writeEndElement();
+                            curSubElement = curSubElement.nextSiblingElement();
+                        }
+                    }
+                    mXmlWriter.writeEndElement();
+                }
+                curElement = curElement.nextSiblingElement();
+            }
+            mXmlWriter.writeEndElement();
+        }
+
         mXmlWriter.writeEndDocument();
         QString fileName = mDocumentPath + UBFileSystemUtils::digitFileFormat("/page%1.svg", mPageIndex);
         QFile file(fileName);
@@ -1283,6 +1540,58 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
     return true;
 }
 
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *groupItem, QDomElement *curParent, QDomDocument *groupDomDocument)
+{
+    QUuid uuid = UBGraphicsScene::getPersonalUuid(groupItem);
+    if (!uuid.isNull()) {
+        QDomElement curGroupElement = groupDomDocument->createElement(tGroup);
+        curGroupElement.setAttribute(aId, uuid);
+        curParent->appendChild(curGroupElement);
+
+        foreach (QGraphicsItem *item, groupItem->childItems()) {
+            QUuid tmpUuid = UBGraphicsScene::getPersonalUuid(item);
+            if (!tmpUuid.isNull()) {
+                if (item->type() == UBGraphicsGroupContainerItem::Type && item->childItems().count()) {
+                    persistGroupToDom(item, curParent, groupDomDocument);
+                } else if (item->type() == UBGraphicsStrokesGroup::Type) {
+                    foreach (QGraphicsItem *polygonItem, item->childItems()) {
+                        QDomElement curPolygonElement = groupDomDocument->createElement(tElement);
+                        curPolygonElement.setAttribute(aId, tmpUuid.toString()
+                                                          + UBGraphicsItem::getOwnUuid(polygonItem).toString());
+                        curGroupElement.appendChild(curPolygonElement);
+                    }
+                } else {
+                    QDomElement curSubElement = groupDomDocument->createElement(tElement);
+
+                    curSubElement.setAttribute(aId, tmpUuid);
+                    curGroupElement.appendChild(curSubElement);
+                }
+            }
+        }
+    }
+}
+
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistStrokeToDom(QGraphicsItem *strokeItem, QDomElement *curParent, QDomDocument *curDomDocument)
+{
+    QUuid uuid = UBGraphicsScene::getPersonalUuid(strokeItem);
+    if (!uuid.isNull()) {
+        QDomElement curStrokesGroupElement = curDomDocument->createElement(tStrokeGroup);
+        curStrokesGroupElement.setAttribute(aId, uuid);
+        curParent->appendChild(curStrokesGroupElement);
+
+        foreach (QGraphicsItem *item, strokeItem->childItems()) {
+            QUuid tmpUuid = UBGraphicsScene::getPersonalUuid(item);
+            if (!tmpUuid.isNull()) {
+                if (item->type() == UBGraphicsPolygonItem::Type && item->childItems().count()) {
+                    QDomElement curSubElement = curDomDocument->createElement(tElement);
+                    curSubElement.setAttribute(aId, tmpUuid);
+                    curStrokesGroupElement.appendChild(curSubElement);
+                }
+            }
+        }
+    }
+}
+
 void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgLine(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo)
 {
     mXmlWriter.writeStartElement("line");
@@ -1402,6 +1711,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
 
         QString points = pointsToSvgPointsAttribute(polygon);
         mXmlWriter.writeAttribute("points", points);
+        mXmlWriter.writeAttribute("transform",toSvgTransform(polygonItem->sceneMatrix()));
         mXmlWriter.writeAttribute("fill", polygonItem->brush().color().name());
 
         qreal alpha = polygonItem->brush().color().alphaF();
@@ -1434,6 +1744,11 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
                                       , "fill-on-light-background", polygonItem->colorOnLightBackground().name());
         }
 
+        mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(polygonItem->uuid()));
+        if (polygonItem->parentItem()) {
+            mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "parent", UBStringUtils::toCanonicalUuid(UBGraphicsItem::getOwnUuid(polygonItem->parentItem())));
+        }
+
         mXmlWriter.writeEndElement();
     }
 }
@@ -1485,6 +1800,16 @@ UBGraphicsPolygonItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItemFromPol
 
     polygonItem->setPolygon(polygon);
 
+    QStringRef svgTransform = mXmlReader.attributes().value("transform");
+
+    QMatrix itemMatrix;
+
+    if (!svgTransform.isNull())
+    {
+        itemMatrix = fromSvgTransform(svgTransform.toString());
+        polygonItem->setMatrix(itemMatrix);
+    }
+
     QStringRef svgFill = mXmlReader.attributes().value("fill");
 
     QColor brushColor = pDefaultColor;
@@ -1949,7 +2274,7 @@ UBGraphicsPDFItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::pdfItemFromPDF()
     return pdfItem;
 }
 
-void UBSvgSubsetAdaptor::UBSvgSubsetWriter::audioItemToLinkedAudio(UBGraphicsAudioItem* audioItem)
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::audioItemToLinkedAudio(UBGraphicsMediaItem* audioItem)
 {
     mXmlWriter.writeStartElement("audio");
 
@@ -1961,13 +2286,17 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::audioItemToLinkedAudio(UBGraphicsAud
         mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "position", QString("%1").arg(pos));
     }
 
-    QString audioFileHref = audioItem->mediaFileUrl().toLocalFile();
+    QString audioFileHref = audioItem->mediaFileUrl().toString();
+    audioFileHref = UBFileSystemUtils::removeLocalFilePrefix(audioFileHref);
+    if(audioFileHref.startsWith(mDocumentPath))
+        audioFileHref = audioFileHref.replace(mDocumentPath + "/","");
+
     mXmlWriter.writeAttribute(nsXLink, "href", audioFileHref);
     mXmlWriter.writeEndElement();
 }
 
 
-void UBSvgSubsetAdaptor::UBSvgSubsetWriter::videoItemToLinkedVideo(UBGraphicsVideoItem* videoItem)
+void UBSvgSubsetAdaptor::UBSvgSubsetWriter::videoItemToLinkedVideo(UBGraphicsMediaItem* videoItem)
 {
     /* w3c sample
      *
@@ -1986,12 +2315,17 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::videoItemToLinkedVideo(UBGraphicsVid
         mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "position", QString("%1").arg(pos));
     }
 
-    QString videoFileHref = videoItem->mediaFileUrl().toLocalFile();
+    QString videoFileHref = videoItem->mediaFileUrl().toString();
+
+    videoFileHref = UBFileSystemUtils::removeLocalFilePrefix(videoFileHref);
+    if(videoFileHref.startsWith(mDocumentPath))
+        videoFileHref = videoFileHref.replace(mDocumentPath + "/","");
+
     mXmlWriter.writeAttribute(nsXLink, "href", videoFileHref);
     mXmlWriter.writeEndElement();
 }
 
-UBGraphicsAudioItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::audioItemFromSvg()
+UBGraphicsMediaItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::audioItemFromSvg()
 {
 
     QStringRef audioHref = mXmlReader.attributes().value(nsXLink, "href");
@@ -2011,7 +2345,11 @@ UBGraphicsAudioItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::audioItemFromSvg()
         href = mDocumentPath + "/" + href.right(href.length() - indexOfAudioDirectory);
     }
 
-    UBGraphicsAudioItem* audioItem = new UBGraphicsAudioItem(QUrl::fromLocalFile(href));
+    UBGraphicsMediaItem* audioItem = new UBGraphicsMediaItem(QUrl::fromLocalFile(href));
+    if(audioItem){
+        audioItem->connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), audioItem, SLOT(activeSceneChanged()));
+    }
+
     graphicsItemFromSvg(audioItem);
     QStringRef ubPos = mXmlReader.attributes().value(mNamespaceUri, "position");
 
@@ -2025,7 +2363,7 @@ UBGraphicsAudioItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::audioItemFromSvg()
     return audioItem;
 }
 
-UBGraphicsVideoItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::videoItemFromSvg()
+UBGraphicsMediaItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::videoItemFromSvg()
 {
 
     QStringRef videoHref = mXmlReader.attributes().value(nsXLink, "href");
@@ -2045,7 +2383,11 @@ UBGraphicsVideoItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::videoItemFromSvg()
         href = mDocumentPath + "/" + href.right(href.length() - indexOfAudioDirectory);
     }
 
-    UBGraphicsVideoItem* videoItem = new UBGraphicsVideoItem(href);
+    UBGraphicsMediaItem* videoItem = new UBGraphicsMediaItem(QUrl::fromLocalFile(href));
+    if(videoItem){
+        videoItem->connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), videoItem, SLOT(activeSceneChanged()));
+    }
+
     graphicsItemFromSvg(videoItem);
     QStringRef ubPos = mXmlReader.attributes().value(mNamespaceUri, "position");
 
@@ -2177,6 +2519,20 @@ qreal UBSvgSubsetAdaptor::UBSvgSubsetReader::getZValueFromSvg()
     return result;
 }
 
+QUuid UBSvgSubsetAdaptor::UBSvgSubsetReader::getUuidFromSvg()
+{
+    QUuid result;
+
+    QString strUuid = mXmlReader.attributes().value(mNamespaceUri, "uuid").toString();
+    QUuid uuid = QUuid(strUuid);
+    if (!uuid.isNull()) {
+        result = uuid;
+    }
+
+    return result;
+}
+
+
 void UBSvgSubsetAdaptor::UBSvgSubsetWriter::graphicsItemToSvg(QGraphicsItem* item)
 {
     mXmlWriter.writeAttribute("x", "0");
@@ -2240,7 +2596,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::graphicsW3CWidgetToSvg(UBGraphicsW3C
 
 void UBSvgSubsetAdaptor::UBSvgSubsetWriter::graphicsWidgetToSvg(UBGraphicsWidgetItem* item)
 {
-    QUrl widgetRootUrl = item->widgetWebView()->widgetUrl();
+    QUrl widgetRootUrl = item->widgetUrl();
     QString uuid = UBStringUtils::toCanonicalUuid(item->uuid());
     QString widgetDirectoryPath = UBPersistenceManager::widgetDirectory;
     if (widgetRootUrl.toString().startsWith("file://"))
@@ -2269,13 +2625,13 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::graphicsWidgetToSvg(UBGraphicsWidget
 
     graphicsItemToSvg(item);
 
-    if (item->widgetWebView()->isFrozen())
+    if (item->isFrozen())
     {
         mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "frozen", xmlTrue);
     }
 
     QString snapshotPath = mDocumentPath + "/" + UBPersistenceManager::widgetDirectory + "/" + uuid + ".png";
-    item->widgetWebView()->takeSnapshot().save(snapshotPath, "PNG");
+    item->takeSnapshot().save(snapshotPath, "PNG");
 
     mXmlWriter.writeStartElement(nsXHtml, "iframe");
 
@@ -2284,10 +2640,10 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::graphicsWidgetToSvg(UBGraphicsWidget
     mXmlWriter.writeAttribute("height", QString("%1").arg(item->boundingRect().height()));
 
     QString startFileUrl;
-    if (item->widgetWebView()->mainHtmlFileName().startsWith("http://"))
-        startFileUrl = item->widgetWebView()->mainHtmlFileName();
+    if (item->mainHtmlFileName().startsWith("http://"))
+        startFileUrl = item->mainHtmlFileName();
     else
-        startFileUrl = widgetRootUrl.toString() + "/" + item->widgetWebView()->mainHtmlFileName();
+        startFileUrl = widgetRootUrl.toString() + "/" + item->mainHtmlFileName();
 
     mXmlWriter.writeAttribute("src", startFileUrl);
     mXmlWriter.writeEndElement(); //iFrame
@@ -2375,15 +2731,16 @@ UBGraphicsW3CWidgetItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::graphicsW3CWidge
 
     QStringRef uuid = mXmlReader.attributes().value(mNamespaceUri, "uuid");
     QString pixPath = mDocumentPath + "/" + UBPersistenceManager::widgetDirectory + "/" + uuid.toString() + ".png";
+
     QPixmap snapshot(pixPath);
     if (!snapshot.isNull())
-        widgetItem->w3cWidget()->setSnapshot(snapshot);
+        widgetItem->setSnapshot(snapshot);
 
     QStringRef frozen = mXmlReader.attributes().value(mNamespaceUri, "frozen");
 
     if (!frozen.isNull() && frozen.toString() == xmlTrue && !snapshot.isNull())
     {
-        widgetItem->w3cWidget()->freeze();
+        widgetItem->freeze();
     }
 
     graphicsItemFromSvg(widgetItem);
@@ -2422,50 +2779,14 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::textItemToSvg(UBGraphicsTextItem* it
                               , "fill-on-light-background", colorLightBg.name());
 
     //for new documents from version 4.5.0
-    if (true) {
-        mXmlWriter.writeStartElement("itemTextContent");
-        mXmlWriter.writeCDATA(item->toHtml());
-        mXmlWriter.writeEndElement(); //itemTextContent
-
-    //tracking for back capability with older versions
-    } else if (false) {
-        mXmlWriter.writeStartElement(nsXHtml, "body");
-        mXmlWriter.writeStartElement(nsXHtml, "div");
-        mXmlWriter.writeStartElement(nsXHtml, "font");
-
-        QFont font = item->font();
-
-        mXmlWriter.writeAttribute("face", font.family());
-
-        QFontInfo fi(font);
-        int pixelSize = fi.pixelSize();
+    mXmlWriter.writeStartElement("itemTextContent");
 
-        mXmlWriter.writeAttribute("style", sFontSizePrefix + QString(" %1").arg(pixelSize) + sPixelUnit + "; " +
-                                  sFontWeightPrefix + " " + (fi.bold() ? "bold" : "normal") + "; " +
-                                  sFontStylePrefix + " " + (fi.italic() ? "italic" : "normal") + ";");
-        mXmlWriter.writeAttribute("color", item->defaultTextColor().name());
-
-        QString text = item->toPlainText();
-        QStringList lines = text.split("\n");
-
-        for (int i = 0; i < lines.length() ; i++)
-        {
-            mXmlWriter.writeCharacters(lines.at(i));
-
-            if (i < lines.length() - 1)
-                mXmlWriter.writeEmptyElement(nsXHtml, "br");
-        }
-
-        mXmlWriter.writeEndElement(); //font
-        mXmlWriter.writeEndElement(); //div
-        mXmlWriter.writeEndElement(); //body
-    }
+    // Note: don't use mXmlWriter.writeCDATA(htmlString); because it doesn't escape characters sequences correctly.
+    // Texts copied from other programs like Open-Office can truncate the svg file.
+    mXmlWriter.writeCharacters(item->toHtml());
+    mXmlWriter.writeEndElement(); //itemTextContent
 
     mXmlWriter.writeEndElement(); //foreignObject
-
-//    QtLogger::start("/home/ilia/Documents/tmp/10/log.log");
-//    QtLogger::appendl(item->toHtml());
-//    QtLogger::finish();
 }
 
 UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
@@ -2480,6 +2801,22 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
     QStringRef ubFillOnDarkBackground = mXmlReader.attributes().value(mNamespaceUri, "fill-on-dark-background");
     QStringRef ubFillOnLightBackground = mXmlReader.attributes().value(mNamespaceUri, "fill-on-light-background");
 
+    if (!ubFillOnDarkBackground.isNull()) {
+        QColor color;
+        color.setNamedColor(ubFillOnDarkBackground.toString());
+        if (!color.isValid())
+            color = Qt::white;
+        textItem->setColorOnDarkBackground(color);
+    }
+
+    if (!ubFillOnLightBackground.isNull()) {
+        QColor color;
+        color.setNamedColor(ubFillOnLightBackground.toString());
+        if (!color.isValid())
+            color = Qt::black;
+            textItem->setColorOnLightBackground(color);
+    }
+
     QString text;
 
     while (!(mXmlReader.isEndElement() && (mXmlReader.name() == "font" || mXmlReader.name() == "foreignObject")))
@@ -2499,7 +2836,6 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
                     text = mXmlReader.readElementText();
                     textItem->setHtml(text);
                     textItem->resize(width, height);
-
                     if (textItem->toPlainText().isEmpty()) {
                         delete textItem;
                         textItem = 0;
@@ -2539,6 +2875,12 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
                     }
                 }
 
+                QTextCursor curCursor = textItem->textCursor();
+                QTextCharFormat format;
+
+                format.setFont(font);
+                curCursor.mergeCharFormat(format);
+                textItem->setTextCursor(curCursor);
                 textItem->setFont(font);
 
                 QStringRef fill = mXmlReader.attributes().value("color");
@@ -2548,22 +2890,6 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
                     textItem->setDefaultTextColor(textColor);
                 }
 
-                if (!ubFillOnDarkBackground.isNull()) {
-                    QColor color;
-                    color.setNamedColor(ubFillOnDarkBackground.toString());
-                    if (!color.isValid())
-                        color = Qt::white;
-                    textItem->setColorOnDarkBackground(color);
-                }
-
-                if (!ubFillOnLightBackground.isNull()) {
-                    QColor color;
-                    color.setNamedColor(ubFillOnLightBackground.toString());
-                    if (!color.isValid())
-                        color = Qt::black;
-                    textItem->setColorOnLightBackground(color);
-                }
-
                 while (!(mXmlReader.isEndElement() && mXmlReader.name() == "font")) {
                     if (mXmlReader.hasError()) {
                         break;
@@ -2908,7 +3234,7 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg()
 
 UBGraphicsCache* UBSvgSubsetAdaptor::UBSvgSubsetReader::cacheFromSvg()
 {
-    UBGraphicsCache* pCache = new UBGraphicsCache();
+    UBGraphicsCache* pCache = UBGraphicsCache::instance(mScene);
     pCache->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
 
     graphicsItemFromSvg(pCache);
diff --git a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h
index d3b39c3..7169523 100644
--- a/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBSvgSubsetAdaptor.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBSVGSUBSETADAPTOR_H_
 #define UBSVGSUBSETADAPTOR_H_
@@ -26,8 +33,7 @@ class UBGraphicsPolygonItem;
 class UBGraphicsPixmapItem;
 class UBGraphicsPDFItem;
 class UBGraphicsWidgetItem;
-class UBGraphicsVideoItem;
-class UBGraphicsAudioItem;
+class UBGraphicsMediaItem;
 class UBGraphicsAppleWidgetItem;
 class UBGraphicsW3CWidgetItem;
 class UBGraphicsTextItem;
@@ -42,6 +48,7 @@ class UBPersistenceManager;
 class UBGraphicsTriangle;
 class UBGraphicsCache;
 class IDataStorage;
+class UBGraphicsGroupContainerItem;
 
 class UBSvgSubsetAdaptor
 {
@@ -95,6 +102,8 @@ class UBSvgSubsetAdaptor
         static QMap<QString,IDataStorage*> additionalElementToStore;
 
 
+
+
         class UBSvgSubsetReader
         {
             public:
@@ -119,9 +128,9 @@ class UBSvgSubsetAdaptor
 
                 UBGraphicsPDFItem* pdfItemFromPDF();
 
-                UBGraphicsVideoItem* videoItemFromSvg();
+                UBGraphicsMediaItem* videoItemFromSvg();
 
-                UBGraphicsAudioItem* audioItemFromSvg();
+                UBGraphicsMediaItem* audioItemFromSvg();
 
                 UBGraphicsAppleWidgetItem* graphicsAppleWidgetFromSvg();
 
@@ -141,9 +150,14 @@ class UBSvgSubsetAdaptor
 
                 UBGraphicsCache* cacheFromSvg();
 
+                void readGroupRoot();
+                QGraphicsItem *readElementFromGroup();
+                UBGraphicsGroupContainerItem* readGroup();
+
                 void graphicsItemFromSvg(QGraphicsItem* gItem);
 
                 qreal getZValueFromSvg();
+                QUuid getUuidFromSvg();
 
                 QXmlStreamReader mXmlReader;
                 int mFileVersion;
@@ -156,6 +170,7 @@ class UBSvgSubsetAdaptor
                 bool mGroupHasInfo;
 
                 QString mNamespaceUri;
+                UBGraphicsScene *mScene;
         };
 
         class UBSvgSubsetWriter
@@ -170,6 +185,8 @@ class UBSvgSubsetAdaptor
 
             private:
 
+                void persistGroupToDom(QGraphicsItem *groupItem, QDomElement *curParent, QDomDocument *curDomDocument);
+                void persistStrokeToDom(QGraphicsItem *strokeItem, QDomElement *curParent, QDomDocument *curDomDocument);
                 void polygonItemToSvgPolygon(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo);
                 void polygonItemToSvgLine(UBGraphicsPolygonItem* polygonItem, bool groupHoldsInfo);
                 void strokeToSvgPolyline(UBGraphicsStroke* stroke, bool groupHoldsInfo);
@@ -218,8 +235,8 @@ class UBSvgSubsetAdaptor
                 void pixmapItemToLinkedImage(UBGraphicsPixmapItem *pixmapItem);
                 void svgItemToLinkedSvg(UBGraphicsSvgItem *svgItem);
                 void pdfItemToLinkedPDF(UBGraphicsPDFItem *pdfItem);
-                void videoItemToLinkedVideo(UBGraphicsVideoItem *videoItem);
-                void audioItemToLinkedAudio(UBGraphicsAudioItem* audioItem);
+                void videoItemToLinkedVideo(UBGraphicsMediaItem *videoItem);
+                void audioItemToLinkedAudio(UBGraphicsMediaItem *audioItem);
                 void graphicsItemToSvg(QGraphicsItem *item);
                 void graphicsAppleWidgetToSvg(UBGraphicsAppleWidgetItem *item);
                 void graphicsW3CWidgetToSvg(UBGraphicsW3CWidgetItem *item);
diff --git a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp
index 2432f89..6a22155 100644
--- a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp
+++ b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.cpp
@@ -1,185 +1,186 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#include "UBThumbnailAdaptor.h"
-
-#include <QtCore>
-
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/UBPersistenceManager.h"
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-
-#include "board/UBBoardController.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "domain/UBGraphicsScene.h"
-
-#include "UBSvgSubsetAdaptor.h"
-
-#include "core/memcheck.h"
-
-void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
-{
-    int existingPageCount = proxy->pageCount();
-
-    for (int iPageNo = 0; iPageNo < existingPageCount; ++iPageNo)
-    {
-        QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", iPageNo);
-
-        QFile thumbFile(thumbFileName);
-
-        if (!thumbFile.exists())
-        {
-            bool displayMessage = (existingPageCount > 5);
-
-            int thumbCount = 0;
-
-            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, iPageNo);
-
-            if (scene)
-            {
-                thumbCount++;
-
-                if (displayMessage && thumbCount == 1)
-                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));
-
-                persistScene(proxy->persistencePath(), scene, iPageNo);
-            }
-
-            if (displayMessage && thumbCount > 0)
-                UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
-
-        }
-    }
-}
-
-QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
-{
-    QList<QPixmap> thumbnails;
-
-    if (!proxy || proxy->persistencePath().isEmpty())
-        return thumbnails;
-
-    //compatibility with older formats (<= 4.0.b.2.0) : generate missing thumbnails
-    generateMissingThumbnails(proxy);
-
-    //end compatibility with older format
-
-    bool moreToProcess = true;
-    int pageCount = UBApplication::boardController->sceneIndexFromPage(0);
-
-    while (moreToProcess) {
-        pageCount++;
-        QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageCount);
-
-        QFile file(fileName);
-        if (file.exists()) {
-            QPixmap pix;
-            //Warning. Works only with modified Qt
-#ifdef Q_WS_X11
-            pix.load(fileName, 0, Qt::AutoColor);
-#else
-            pix.load(fileName, 0, Qt::AutoColor, false);
-#endif
-            thumbnails.append(pix);
-        } else {
-            moreToProcess = false;
-        }
-    }
-    return thumbnails;
-}
-
-QPixmap UBThumbnailAdaptor::load(UBDocumentProxy* proxy, int index)
-{
-    int existingPageCount = proxy->pageCount();
-
-    if (!proxy || proxy->persistencePath().size() == 0 || index < 0 || index > existingPageCount)
-        return QPixmap();
-    //compatibility with older formats (<= 4.0.b.2.0) : generate missing thumbnails
-    generateMissingThumbnails(proxy);
-
-    //end compatibility with older format
-    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", index);
-
-    QFile file(fileName);
-    if (file.exists())
-    {
-        QPixmap pix;
-        //Warning. Works only with modified Qt
-#ifdef Q_WS_X11
-        pix.load(fileName, 0, Qt::AutoColor);
-#else
-        pix.load(fileName, 0, Qt::AutoColor, false);
-#endif
-        return pix;
-    }
-    return QPixmap();
-}
-
-void UBThumbnailAdaptor::persistScene(const QString& pDocPath, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
-{
-    QString fileName = pDocPath + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
-
-    QFile thumbFile(fileName);
-
-    if (pScene->isModified() || overrideModified || !thumbFile.exists())
-    {
-        qreal nominalWidth = pScene->nominalSize().width();
-        qreal nominalHeight = pScene->nominalSize().height();
-        qreal ratio = nominalWidth / nominalHeight;
-        QRectF sceneRect = pScene->normalizedSceneRect(ratio);
-
-        qreal width = UBSettings::maxThumbnailWidth;
-        qreal height = width / ratio;
-
-        QImage thumb(width, height, QImage::Format_ARGB32);
-
-        QRectF imageRect(0, 0, width, height);
-
-        QPainter painter(&thumb);
-        painter.setRenderHint(QPainter::Antialiasing, true);
-        painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
-
-        if (pScene->isDarkBackground())
-        {
-            painter.fillRect(imageRect, Qt::black);
-        }
-        else
-        {
-            painter.fillRect(imageRect, Qt::white);
-        }
-
-        pScene->setRenderingContext(UBGraphicsScene::NonScreen);
-        pScene->setRenderingQuality(UBItem::RenderingQualityHigh);
-
-        pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio);
-
-        pScene->setRenderingContext(UBGraphicsScene::Screen);
-        pScene->setRenderingQuality(UBItem::RenderingQualityNormal);
-
-        thumb.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation).save(fileName, "JPG");
-    }
-}
-
-
-QUrl UBThumbnailAdaptor::thumbnailUrl(UBDocumentProxy* proxy, int pageIndex)
-{
-    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
-
-    return QUrl::fromLocalFile(fileName);
-}
+
+
+#include "UBThumbnailAdaptor.h"
+
+#include <QtCore>
+
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "core/UBPersistenceManager.h"
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+
+
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "domain/UBGraphicsScene.h"
+
+#include "UBSvgSubsetAdaptor.h"
+
+#include "core/memcheck.h"
+
+void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
+{
+    int existingPageCount = proxy->pageCount();
+
+    for (int iPageNo = 0; iPageNo < existingPageCount; ++iPageNo)
+    {
+        QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", iPageNo);
+
+        QFile thumbFile(thumbFileName);
+
+        if (!thumbFile.exists())
+        {
+            bool displayMessage = (existingPageCount > 5);
+
+            int thumbCount = 0;
+
+            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, iPageNo);
+
+            if (scene)
+            {
+                thumbCount++;
+
+                if (displayMessage && thumbCount == 1)
+                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));
+
+                persistScene(proxy, scene, iPageNo);
+            }
+
+            if (displayMessage && thumbCount > 0)
+                UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
+
+        }
+    }
+}
+
+const QPixmap* UBThumbnailAdaptor::get(UBDocumentProxy* proxy, int pageIndex)
+{
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
+
+    QFile file(fileName);
+    if (!file.exists())
+    {
+        generateMissingThumbnails(proxy);
+    }
+
+    QPixmap* pix = new QPixmap();
+    if (file.exists())
+    {
+        //Warning. Works only with modified Qt
+#ifdef Q_WS_X11
+        pix->load(fileName, 0, Qt::AutoColor);
+#else
+        pix->load(fileName, 0, Qt::AutoColor, false);
+#endif
+    }
+    return pix;
+}
+
+void UBThumbnailAdaptor::updateDocumentToHandleZeroPage(UBDocumentProxy* proxy)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
+    	QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", 0);
+    	QFile file(fileName);
+    	if(!file.exists()){
+    		UBPersistenceManager::persistenceManager()->persistDocumentScene(proxy,new UBGraphicsScene(proxy),0);
+    	}
+    }
+}
+
+void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList<const QPixmap*>& list)
+{
+    updateDocumentToHandleZeroPage(proxy);
+	generateMissingThumbnails(proxy);
+
+    foreach(const QPixmap* pm, list)
+        delete pm;
+    list.clear();
+    for(int i=0; i<proxy->pageCount(); i++)
+        list.append(get(proxy, i));
+}
+
+void UBThumbnailAdaptor::persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
+{
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
+
+    QFile thumbFile(fileName);
+
+    if (pScene->isModified() || overrideModified || !thumbFile.exists() || UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())
+    {
+        qreal nominalWidth = pScene->nominalSize().width();
+        qreal nominalHeight = pScene->nominalSize().height();
+        qreal ratio = nominalWidth / nominalHeight;
+        QRectF sceneRect = pScene->normalizedSceneRect(ratio);
+
+        qreal width = UBSettings::maxThumbnailWidth;
+        qreal height = width / ratio;
+
+        QImage thumb(width, height, QImage::Format_ARGB32);
+
+        QRectF imageRect(0, 0, width, height);
+
+        QPainter painter(&thumb);
+        painter.setRenderHint(QPainter::Antialiasing, true);
+        painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
+
+        if (pScene->isDarkBackground())
+        {
+            painter.fillRect(imageRect, Qt::black);
+        }
+        else
+        {
+            painter.fillRect(imageRect, Qt::white);
+        }
+
+        pScene->setRenderingContext(UBGraphicsScene::NonScreen);
+        pScene->setRenderingQuality(UBItem::RenderingQualityHigh);
+
+        pScene->render(&painter, imageRect, sceneRect, Qt::KeepAspectRatio);
+
+        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){
+            QPixmap toque(":images/toque.svg");
+            painter.setOpacity(0.6);
+            painter.drawPixmap(QPoint(width - toque.width(),0),toque);
+        }
+
+        pScene->setRenderingContext(UBGraphicsScene::Screen);
+        pScene->setRenderingQuality(UBItem::RenderingQualityNormal);
+
+        thumb.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation).save(fileName, "JPG");
+    }
+}
+
+
+QUrl UBThumbnailAdaptor::thumbnailUrl(UBDocumentProxy* proxy, int pageIndex)
+{
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", pageIndex);
+
+    return QUrl::fromLocalFile(fileName);
+}
diff --git a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h
index 75011f2..02008f6 100644
--- a/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h
+++ b/Sankore-3.1/src/adaptors/UBThumbnailAdaptor.h
@@ -1,39 +1,51 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBTHUMBNAILADAPTOR_H
-#define UBTHUMBNAILADAPTOR_H
-
-#include <QtCore>
-
-class UBDocument;
-class UBDocumentProxy;
-class UBGraphicsScene;
-
-class UBThumbnailAdaptor //static class
-{
-	Q_DECLARE_TR_FUNCTIONS(UBThumbnailAdaptor)
-
-private: UBThumbnailAdaptor() {}
-public:
-    static void persistScene(const QString& pDocPath, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
-
-    static void generateMissingThumbnails(UBDocumentProxy* proxy);
-    static QList<QPixmap> load(UBDocumentProxy* proxy);
-	static QPixmap load(UBDocumentProxy* proxy, int index);
-
-    static QUrl thumbnailUrl(UBDocumentProxy* proxy, int pageIndex);
-};
-
-#endif // UBTHUMBNAILADAPTOR_H
+
+
+#ifndef UBTHUMBNAILADAPTOR_H
+#define UBTHUMBNAILADAPTOR_H
+
+#include <QtCore>
+
+class UBDocument;
+class UBDocumentProxy;
+class UBGraphicsScene;
+
+class UBThumbnailAdaptor //static class
+{
+	Q_DECLARE_TR_FUNCTIONS(UBThumbnailAdaptor)
+
+public:
+    static QUrl thumbnailUrl(UBDocumentProxy* proxy, int pageIndex);
+
+    static void persistScene(UBDocumentProxy* proxy, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
+
+    static const QPixmap* get(UBDocumentProxy* proxy, int index);
+    static void load(UBDocumentProxy* proxy, QList<const QPixmap*>& list);
+
+private:
+    static void generateMissingThumbnails(UBDocumentProxy* proxy);
+    static void updateDocumentToHandleZeroPage(UBDocumentProxy* proxy);
+
+    UBThumbnailAdaptor() {}
+};
+
+#endif // UBTHUMBNAILADAPTOR_H
diff --git a/Sankore-3.1/src/adaptors/UBWebPublisher.cpp b/Sankore-3.1/src/adaptors/UBWebPublisher.cpp
index d4505c2..3b95e00 100644
--- a/Sankore-3.1/src/adaptors/UBWebPublisher.cpp
+++ b/Sankore-3.1/src/adaptors/UBWebPublisher.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWebPublisher.h"
 
 #include "document/UBDocumentProxy.h"
diff --git a/Sankore-3.1/src/adaptors/UBWebPublisher.h b/Sankore-3.1/src/adaptors/UBWebPublisher.h
index 2275a6f..f2a14aa 100644
--- a/Sankore-3.1/src/adaptors/UBWebPublisher.h
+++ b/Sankore-3.1/src/adaptors/UBWebPublisher.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBPUBLISHER_H_
 #define UBWEBPUBLISHER_H_
 
diff --git a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp
index 0198328..59a2b18 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp
+++ b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.cpp
@@ -1,825 +1,830 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#include <QFileInfo>
-
-#include "UBDocumentPublisher.h"
-
-#include "frameworks/UBPlatformUtils.h"
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBStringUtils.h"
-
-#include "network/UBNetworkAccessManager.h"
-#include "network/UBServerXMLHttpRequest.h"
-
-#include "core/UBDocumentManager.h"
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBApplicationController.h"
-
-#include "board/UBBoardController.h"
-
-#include "gui/UBMainWindow.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "domain/UBGraphicsWidgetItem.h"
-
-#include "globals/UBGlobals.h"
-
-THIRD_PARTY_WARNINGS_DISABLE
-#include "quazip.h"
-#include "quazipfile.h"
-THIRD_PARTY_WARNINGS_ENABLE
-
-#include "adaptors/UBExportFullPDF.h"
-#include "adaptors/UBExportDocument.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-
-#include "UBSvgSubsetRasterizer.h"
-
-#include "../../core/UBApplication.h"
-
-#include "core/memcheck.h"
-
-
-UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *parent)
-        : QObject(parent)
-        , mSourceDocument(pDocument)
-        , mPublishingDocument(0)
-        , mUsername("")
-        , mPassword("")
-        , bLoginCookieSet(false)
-{
-	//NOOP
-    init();
-}
-
-
-UBDocumentPublisher::~UBDocumentPublisher()
-{
-    if(mPublishingDocument){
-        delete mPublishingDocument;
-        mPublishingDocument = NULL;
-    }
-}
-
-
-void UBDocumentPublisher::publish()
-{
-            //check that the username and password are stored on preferences
-    UBSettings* settings = UBSettings::settings();
-
-    if(settings->communityUsername().isEmpty() || settings->communityPassword().isEmpty()){
-        UBApplication::showMessage(tr("Credentials has to not been filled out yet."));
-        qDebug() << "trying to connect to community without the required credentials";
-        return;
-    }
-
-    mUsername = settings->communityUsername();
-    mPassword = settings->communityPassword();
-
-    UBPublicationDlg dlg;
-    if(QDialog::Accepted == dlg.exec())
-    {
-        mDocInfos.title = dlg.title();
-        mDocInfos.description = dlg.description();
-
-        buildUbwFile();
-
-        UBApplication::showMessage(tr("Uploading Sankore File on Web."));
-
-        sendUbw(mUsername, mPassword);
-    }
-}
-
-void UBDocumentPublisher::buildUbwFile()
-{
-    QDir d;
-    d.mkpath(UBFileSystemUtils::defaultTempDirPath());
-
-    QString tmpDir = UBFileSystemUtils::createTempDir();
-
-    if (UBFileSystemUtils::copyDir(mSourceDocument->persistencePath(), tmpDir))
-    {
-        QUuid publishingUuid = QUuid::createUuid();
-
-        mPublishingDocument = new UBDocumentProxy(tmpDir);
-        mPublishingDocument->setPageCount(mSourceDocument->pageCount());
-
-        rasterizeScenes();
-
-        upgradeDocumentForPublishing();
-
-        UBExportFullPDF pdfExporter;
-        pdfExporter.setVerbode(false);
-        pdfExporter.persistsDocument(mSourceDocument, mPublishingDocument->persistencePath() + "/" + UBStringUtils::toCanonicalUuid(publishingUuid) + ".pdf");
-
-        UBExportDocument ubzExporter;
-        ubzExporter.setVerbode(false);
-        ubzExporter.persistsDocument(mSourceDocument, mPublishingDocument->persistencePath() + "/" + UBStringUtils::toCanonicalUuid(publishingUuid) + ".ubz");
-
-        // remove all useless files
-
-        for (int pageIndex = 0; pageIndex < mPublishingDocument->pageCount(); pageIndex++) {
-            QString filename = mPublishingDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex);
-
-            QFile::remove(filename);
-        }
-
-        UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::imageDirectory);
-        UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::objectDirectory);
-        UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::videoDirectory);
-        UBFileSystemUtils::deleteDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::audioDirectory);
-
-        mTmpZipFile = UBFileSystemUtils::defaultTempDirPath() + "/" + UBStringUtils::toCanonicalUuid(QUuid::createUuid()) + ".ubw~";
-
-        QuaZip zip(mTmpZipFile);
-        zip.setFileNameCodec("UTF-8");
-        if (!zip.open(QuaZip::mdCreate))
-        {
-            qWarning() << "Export failed. Cause: zip.open(): " << zip.getZipError() << "," << mTmpZipFile;
-            QApplication::restoreOverrideCursor();
-            return;
-        }
-
-        QuaZipFile outFile(&zip);
-
-        if (!UBFileSystemUtils::compressDirInZip(mPublishingDocument->persistencePath(), "", &outFile, true))
-        {
-            qWarning("Export failed. compressDirInZip failed ...");
-            zip.close();
-            UBApplication::showMessage(tr("Export failed."));
-            QApplication::restoreOverrideCursor();
-            return;
-        }
-
-        if (zip.getZipError() != 0)
-        {
-            qWarning("Export failed. Cause: zip.close(): %d", zip.getZipError());
-            zip.close();
-            UBApplication::showMessage(tr("Export failed."));
-            QApplication::restoreOverrideCursor();
-            return;
-        }
-
-        zip.close();
-
-    }
-    else
-    {
-        UBApplication::showMessage(tr("Export canceled ..."));
-        QApplication::restoreOverrideCursor();
-    }
-}
-
-void UBDocumentPublisher::rasterizeScenes()
-{
-
-    for (int pageIndex = 0; pageIndex < mPublishingDocument->pageCount(); pageIndex++)
-    {
-        UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBApplication::boardController->pageFromSceneIndex(pageIndex)).arg(mPublishingDocument->pageCount()), true);
-
-        UBSvgSubsetRasterizer rasterizer(mPublishingDocument, pageIndex);
-
-        QString filename = mPublishingDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex);
-
-        rasterizer.rasterizeToFile(filename);
-
-    }
-}
-
-
-void UBDocumentPublisher::updateGoogleMapApiKey()
-{
-    QDir widgestDir(mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::widgetDirectory);
-
-    QString uniboardWebGoogleMapApiKey = UBSettings::settings()->uniboardWebGoogleMapApiKey->get().toString();
-
-    foreach(QFileInfo dirInfo, widgestDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
-    {
-        QString config = UBFileSystemUtils::readTextFile(dirInfo.absoluteFilePath() + "/config.xml").toLower();
-
-        if (config.contains("google") && config.contains("map"))
-        {
-            QDir widgetDir(dirInfo.absoluteFilePath());
-
-            foreach(QFileInfo fileInfo, widgetDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot))
-            {
-                QFile file(fileInfo.absoluteFilePath());
-
-                if (file.open(QIODevice::ReadWrite))
-                {
-                    QTextStream stream(&file);
-                    QString content = stream.readAll();
-
-                    if (content.contains("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og"))
-                    {
-                        content.replace("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og",
-                                        uniboardWebGoogleMapApiKey);
-
-                        file.resize(0);
-                        file.write(content.toUtf8());
-                    }
-                    file.close();
-                }
-            }
-        }
-    }
-}
-
-
-void UBDocumentPublisher::upgradeDocumentForPublishing()
-{
-    for (int pageIndex = 0; pageIndex < mPublishingDocument->pageCount(); pageIndex++)
-    {
-        UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(mPublishingDocument, pageIndex);
-
-        QList<UBGraphicsW3CWidgetItem*> widgets;
-
-        foreach(QGraphicsItem* item, scene->items()){
-            UBGraphicsW3CWidgetItem *widgetItem = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
-
-            if(widgetItem){
-                generateWidgetPropertyScript(widgetItem, UBApplication::boardController->pageFromSceneIndex(pageIndex));
-                widgets << widgetItem;
-            }
-        }
-
-        QString filename = mPublishingDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex);
-
-        QFile jsonFile(filename);
-        if (jsonFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
-        {
-            jsonFile.write("{\n");
-            jsonFile.write(QString("  \"scene\": {\n").toUtf8());
-            jsonFile.write(QString("    \"x\": %1,\n").arg(scene->normalizedSceneRect().x()).toUtf8());
-            jsonFile.write(QString("    \"y\": %1,\n").arg(scene->normalizedSceneRect().y()).toUtf8());
-            jsonFile.write(QString("    \"width\": %1,\n").arg(scene->normalizedSceneRect().width()).toUtf8());
-            jsonFile.write(QString("    \"height\": %1\n").arg(scene->normalizedSceneRect().height()).toUtf8());
-            jsonFile.write(QString("  },\n").toUtf8());
-
-            jsonFile.write(QString("  \"widgets\": [\n").toUtf8());
-
-            bool first = true;
-
-            foreach(UBGraphicsW3CWidgetItem* widget, widgets)
-            {
-                if (!first)
-                    jsonFile.write(QString("    ,\n").toUtf8());
-
-                jsonFile.write(QString("    {\n").toUtf8());
-                jsonFile.write(QString("      \"uuid\": \"%1\",\n").arg(UBStringUtils::toCanonicalUuid(widget->uuid())).toUtf8());
-                jsonFile.write(QString("      \"id\": \"%1\",\n").arg(widget->metadatas().id).toUtf8());
-
-                jsonFile.write(QString("      \"name\": \"%1\",\n").arg(widget->w3cWidget()->metadatas().name).toUtf8());
-                jsonFile.write(QString("      \"description\": \"%1\",\n").arg(widget->w3cWidget()->metadatas().description).toUtf8());
-                jsonFile.write(QString("      \"author\": \"%1\",\n").arg(widget->w3cWidget()->metadatas().author).toUtf8());
-                jsonFile.write(QString("      \"authorEmail\": \"%1\",\n").arg(widget->w3cWidget()->metadatas().authorEmail).toUtf8());
-                jsonFile.write(QString("      \"authorHref\": \"%1\",\n").arg(widget->w3cWidget()->metadatas().authorHref).toUtf8());
-                jsonFile.write(QString("      \"version\": \"%1\",\n").arg(widget->w3cWidget()->metadatas().authorHref).toUtf8());
-
-                jsonFile.write(QString("      \"x\": %1,\n").arg(widget->sceneBoundingRect().x()).toUtf8());
-                jsonFile.write(QString("      \"y\": %1,\n").arg(widget->sceneBoundingRect().y()).toUtf8());
-                jsonFile.write(QString("      \"width\": %1,\n").arg(widget->sceneBoundingRect().width()).toUtf8());
-                jsonFile.write(QString("      \"height\": %1,\n").arg(widget->sceneBoundingRect().height()).toUtf8());
-
-                jsonFile.write(QString("      \"nominalWidth\": %1,\n").arg(widget->boundingRect().width()).toUtf8());
-                jsonFile.write(QString("      \"nominalHeight\": %1,\n").arg(widget->boundingRect().height()).toUtf8());
-
-                QString url = UBPersistenceManager::widgetDirectory + "/" + widget->uuid().toString() + ".wgt";
-                jsonFile.write(QString("      \"src\": \"%1\",\n").arg(url).toUtf8());
-                QString startFile = widget->w3cWidget()->mainHtmlFileName();
-                jsonFile.write(QString("      \"startFile\": \"%1\",\n").arg(startFile).toUtf8());
-
-                QMap<QString, QString> preferences = widget->preferences();
-
-                jsonFile.write(QString("      \"preferences\": {\n").toUtf8());
-
-                foreach(QString key, preferences.keys())
-                {
-                    QString sep = ",";
-                    if (key == preferences.keys().last())
-                        sep = "";
-
-                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
-                                   .arg(key)
-                                   .arg(preferences.value(key))
-                                   .arg(sep)
-                                   .toUtf8());
-                }
-                jsonFile.write(QString("      },\n").toUtf8());
-
-                jsonFile.write(QString("      \"datastore\": {\n").toUtf8());
-
-                QMap<QString, QString> datastoreEntries = widget->datastoreEntries();
-
-                foreach(QString entry, datastoreEntries.keys())
-                {
-                    QString sep = ",";
-                    if (entry == datastoreEntries.keys().last())
-                        sep = "";
-
-                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
-                                   .arg(entry)
-                                   .arg(datastoreEntries.value(entry))
-                                   .arg(sep)
-                                   .toUtf8());
-                }
-                jsonFile.write(QString("      }\n").toUtf8());
-
-                jsonFile.write(QString("    }\n").toUtf8());
-
-                first = false;
-            }
-
-            jsonFile.write("  ]\n");
-            jsonFile.write("}\n");
-        }
-        else
-        {
-            qWarning() << "Cannot open file" << filename << "for saving page state";
-        }
-
-        delete scene;
-    }
-
-    updateGoogleMapApiKey();
-}
-
-
-void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber)
-{
-
-    QMap<QString, QString> preferences = widgetItem->preferences();
-    QMap<QString, QString> datastoreEntries = widgetItem->datastoreEntries();
-
-    QString startFileName = widgetItem->w3cWidget()->mainHtmlFileName();
-
-    if (!startFileName.startsWith("http://"))
-    {
-        QString startFilePath = mPublishingDocument->persistencePath() + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName;
-
-        QFile startFile(startFilePath);
-
-        if (startFile.exists())
-        {
-            if (startFile.open(QIODevice::ReadWrite))
-            {
-                QTextStream stream(&startFile);
-                QStringList lines;
-
-                bool addedJs = false;
-
-                QString line;
-                do
-                {
-                    line = stream.readLine();
-                    if (!line.isNull())
-                    {
-                        lines << line;
-
-                        if (!addedJs && line.contains("<head") && line.contains(">") )  // TODO UB 4.6, this is naive ... the HEAD tag may be on several lines
-                        {
-                            lines << "";
-                            lines << "  <script type=\"text/javascript\">";
-
-                            lines << "    var widget = {};";
-                            lines << "    widget.id = '" + widgetItem->w3cWidget()->metadatas().id + "';";
-                            lines << "    widget.name = '" + widgetItem->w3cWidget()->metadatas().name + "';";
-                            lines << "    widget.description = '" + widgetItem->w3cWidget()->metadatas().description + "';";
-                            lines << "    widget.author = '" + widgetItem->w3cWidget()->metadatas().author + "';";
-                            lines << "    widget.authorEmail = '" + widgetItem->w3cWidget()->metadatas().authorEmail + "';";
-                            lines << "    widget.authorHref = '" + widgetItem->w3cWidget()->metadatas().authorHref + "';";
-                            lines << "    widget.version = '" + widgetItem->w3cWidget()->metadatas().version + "';";
-
-                            lines << "    widget.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "';";
-
-                            lines << "    widget.width = " + QString("%1").arg(widgetItem->w3cWidget()->width()) + ";";
-                            lines << "    widget.height = " + QString("%1").arg(widgetItem->w3cWidget()->height()) + ";";
-                            lines << "    widget.openUrl = function(url) { window.open(url); }";
-                            lines << "    widget.preferences = new Array()";
-
-                            foreach(QString pref, preferences.keys())
-                            {
-                                lines << "      widget.preferences['" + pref + "'] = '" + preferences.value(pref) + "';";
-                            }
-
-                            lines << "    widget.preferences.key = function(index) {";
-                            lines << "      var currentIndex = 0;";
-                            lines << "      for(key in widget.preferences){";
-                            lines << "        if (currentIndex == index){ return key;}";
-                            lines << "        currentIndex++;";
-                            lines << "      }";
-                            lines << "      return '';";
-                            lines << "    }";
-
-                            lines << "    widget.preferences.getItem = function(key) {";
-                            lines << "      return widget.preferences[key];";
-                            lines << "    }";
-
-                            lines << "    widget.preferences.setItem = function(key, value) {}";
-                            lines << "    widget.preferences.removeItem = function(key) {}";
-                            lines << "    widget.preferences.clear = function() {}";
-
-                            lines << "    var uniboard = {};";
-                            lines << "    uniboard.pageCount = " + QString("%1").arg(mPublishingDocument->pageCount()) + ";";
-                            lines << "    uniboard.currentPageNumber = " + QString("%1").arg(pageNumber) + ";";
-                            lines << "    uniboard.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "'";
-                            lines << "    uniboard.lang = navigator.language;";
-                            lines << "    uniboard.locale = function() {return navigator.language}";
-                            lines << "    uniboard.messages = {}";
-                            lines << "    uniboard.messages.subscribeToTopic = function(topicName){}";
-                            lines << "    uniboard.messages.unsubscribeFromTopic = function(topicName){}";
-                            lines << "    uniboard.messages.sendMessage = function(topicName, message){}";
-
-                            lines << "    uniboard.datastore = {};";
-                            lines << "    uniboard.datastore.document = new Array();";
-                            foreach(QString entry, datastoreEntries.keys())
-                            {
-                                lines << "      uniboard.datastore.document['" + entry + "'] = '" + datastoreEntries.value(entry) + "';";
-                            }
-
-                            lines << "    uniboard.datastore.document.key = function(index) {";
-                            lines << "      var currentIndex = 0;";
-                            lines << "      for(key in uniboard.datastore.document){";
-                            lines << "        if (currentIndex == index){ return key;}";
-                            lines << "        currentIndex++;";
-                            lines << "      }";
-                            lines << "      return '';";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.getItem = function(key) {";
-                            lines << "      return uniboard.datastore.document[key];";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
-                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
-                            lines << "    uniboard.datastore.document.clear = function() {}";
-
-                            lines << "    uniboard.setTool = function(tool){}";
-                            lines << "    uniboard.setPenColor = function(color){}";
-                            lines << "    uniboard.setMarkerColor = function(color){}";
-
-                            lines << "    uniboard.pageThumbnail = function(pageNumber){";
-                            lines << "      var nb;";
-                            lines << "      if (pageNumber < 10) return 'page00' + pageNumber + '.thumbnail.jpg';";
-                            lines << "      if (pageNumber < 100) return 'page0' + pageNumber + '.thumbnail.jpg';";
-                            lines << "      return 'page' + pageNumber + '.thumbnail.jpg;'";
-                            lines << "    }";
-
-                            lines << "    uniboard.zoom = function(factor, x, y){}";
-                            lines << "    uniboard.move = function(x, y){}";
-                            lines << "    uniboard.move = function(x, y){}";
-                            lines << "    uniboard.moveTo = function(x, y){}";
-                            lines << "    uniboard.drawLineTo = function(x, y, width){}";
-                            lines << "    uniboard.eraseLineTo = function(x, y, width){}";
-                            lines << "    uniboard.clear = function(){}";
-                            lines << "    uniboard.setBackground = function(dark, crossed){}";
-                            lines << "    uniboard.addObject = function(url, width, height, x, y, background){}";
-                            lines << "    uniboard.resize = function(width, height){window.resizeTo(width, height);}";
-
-                            lines << "    uniboard.showMessage = function(message){alert(message);}";
-                            lines << "    uniboard.centerOn = function(x, y){}";
-                            lines << "    uniboard.addText = function(text, x, y){}";
-
-                            lines << "    uniboard.setPreference = function(key, value){}";
-                            lines << "    uniboard.preference = function(key, defValue){";
-                            lines << "      var pref = widget.preferences[key];";
-                            lines << "      if (pref == undefined) ";
-                            lines << "        return defValue;";
-                            lines << "      else ";
-                            lines << "        return pref;";
-                            lines << "    }";
-                            lines << "    uniboard.preferenceKeys = function(){";
-                            lines << "        var keys = new Array();";
-                            lines << "        for(key in widget.preferences){";
-                            lines << "            keys.push(key);";
-                            lines << "        }";
-                            lines << "        return keys;";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.key = function(index) {";
-                            lines << "        var currentIndex = 0;";
-                            lines << "        for(key in uniboard.datastore.document){";
-                            lines << "            if (currentIndex == index){ return key;}";
-                            lines << "            currentIndex++;";
-                            lines << "        }";
-                            lines << "        return '';";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.getItem = function(key) {";
-                            lines << "        return uniboard.datastore.document[key];";
-                            lines << "    }";
-
-                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
-                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
-                            lines << "    uniboard.datastore.document.clear = function() {}";
-
-                            lines << "  </script>";
-                            lines << "";
-
-                            addedJs = true;
-                        }
-                    }
-                }
-                while (!line.isNull());
-
-                startFile.resize(0);
-                startFile.write(lines.join("\n").toUtf8()); // TODO UB 4.x detect real html encoding
-
-                startFile.close();
-            }
-        }
-    }
-    else{
-        qWarning() << "Remote Widget start file, cannot inject widget preferences and datastore entries";
-    }
-}
-
-void UBDocumentPublisher::init()
-{
-    mCrlf=0x0d;
-    mCrlf+=0x0a;
-    mDocInfos.title = "";
-    mDocInfos.description = "";
-
-    mpCookieJar = new QNetworkCookieJar();
-    mpNetworkMgr = new QNetworkAccessManager(this);
-
-    connect(mpNetworkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
-}
-
-void UBDocumentPublisher::onFinished(QNetworkReply *reply)
-{
-    QVariant cookieHeader = reply->rawHeader("Set-Cookie");
-    // First we concatenate all the Set-Cookie values (the packet can contains many of them)
-    QStringList qslCookie = cookieHeader.toString().split("\n");
-    QString qsCookieValue = qslCookie.at(0);
-    for (int i = 1; i < qslCookie.size(); i++) {
-        qsCookieValue += "; " +qslCookie.at(i);
-    }
-
-    // Now we isolate every cookie value
-    QStringList qslCookieVals = qsCookieValue.split("; ");
-
-    bool bTransferOk = false;
-
-    for(int j = 0; j < qslCookieVals.size(); j++)
-    {
-        qDebug() << j;
-        if(qslCookieVals.at(j).startsWith("assetStatus"))
-        {
-            QStringList qslAsset = qslCookieVals.at(j).split("=");
-            if(qslAsset.at(1) == "UPLOADED")
-            {
-                bTransferOk = true;
-                break;
-            }
-        }
-    }
-
-    if(bTransferOk)
-    {
-        UBApplication::showMessage(tr("Document uploaded correctly on the web."));
-    }
-    else
-    {
-        UBApplication::showMessage(tr("Failed to upload document on the web."));
-    }
-
-    reply->deleteLater();
-}
-
-void UBDocumentPublisher::sendUbw(QString username, QString password)
-{
-    if (QFile::exists(mTmpZipFile))
-    {
-        QFile f(mTmpZipFile);
-        if (f.open(QIODevice::ReadOnly))
-        {
-            QFileInfo fi(f);
-            QByteArray ba = f.readAll();
-            QString boundary,data, multipartHeader;
-            QByteArray datatoSend;
-
-            boundary = "---WebKitFormBoundaryDKBTgA53MiyWrzLY";
-            multipartHeader = "multipart/form-data; boundary="+boundary;
-
-            data="--"+boundary+mCrlf;
-            data+="Content-Disposition: form-data; name=\"title\"" + mCrlf + mCrlf + mDocInfos.title + mCrlf;
-            data+="--"+boundary+mCrlf;
-            data+="Content-Disposition: form-data; name=\"description\"" + mCrlf + mCrlf + mDocInfos.description.remove("\n") + mCrlf;
-            data+="--"+boundary+mCrlf;
-            data+="Content-Disposition: form-data; name=\"file\"; filename=\""+ fi.fileName() +"\""+mCrlf;
-            data+="Content-Type: application/octet-stream"+mCrlf+mCrlf;
-            datatoSend=data.toAscii(); // convert data string to byte array for request
-            datatoSend += ba;
-            datatoSend += mCrlf;
-            datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf);
-
-            QNetworkRequest request(QUrl(QString(DOCPUBLICATION_URL).toAscii().constData()));
-
-            request.setHeader(QNetworkRequest::ContentTypeHeader, multipartHeader);
-            request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size());
-            QString b64Auth = getBase64Of(QString("%0:%1").arg(username).arg(password));
-            request.setRawHeader("Authorization", QString("Basic %0").arg(b64Auth).toAscii().constData());
-            request.setRawHeader("Host", "planete.sankore.org");
-            request.setRawHeader("Accept", "*/*");
-            request.setRawHeader("Accept-Language", "en-US,*");
-
-            mpCookieJar->setCookiesFromUrl(mCookies, QUrl(DOCPUBLICATION_URL));
-            mpNetworkMgr->setCookieJar(mpCookieJar);
-
-            // Send the file
-            mpNetworkMgr->post(request,datatoSend);
-        }
-    }
-}
-
-QString UBDocumentPublisher::getBase64Of(QString stringToEncode)
-{
-    return stringToEncode.toAscii().toBase64();
-}
-
-// ---------------------------------------------------------
-UBProxyLoginDlg::UBProxyLoginDlg(QWidget *parent, const char *name):QDialog(parent)
-  , mpLayout(NULL)
-  , mpUserLayout(NULL)
-  , mpPasswordLayout(NULL)
-  , mpButtons(NULL)
-  , mpUserLabel(NULL)
-  , mpPasswordLabel(NULL)
-  , mpUsername(NULL)
-  , mpPassword(NULL)
-{
-    setObjectName(name);
-    setFixedSize(400, 150);
-    setWindowTitle(tr("Proxy Login"));
-
-    mpLayout = new QVBoxLayout();
-    setLayout(mpLayout);
-    mpUserLayout = new QHBoxLayout();
-    mpLayout->addLayout(mpUserLayout);
-    mpPasswordLayout = new QHBoxLayout();
-    mpLayout->addLayout(mpPasswordLayout);
-
-    mpUserLabel = new QLabel(tr("Username:"), this);
-    mpUsername = new QLineEdit(this);
-    mpUserLayout->addWidget(mpUserLabel, 0);
-    mpUserLayout->addWidget(mpUsername, 1);
-
-    mpPasswordLabel = new QLabel(tr("Password:"), this);
-    mpPassword = new QLineEdit(this);
-    mpPasswordLayout->addWidget(mpPasswordLabel, 0);
-    mpPasswordLayout->addWidget(mpPassword, 1);
-
-    mpButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
-    mpLayout->addWidget(mpButtons);
-
-    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
-    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
-
-}
-
-UBProxyLoginDlg::~UBProxyLoginDlg()
-{
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-    if(NULL != mpButtons)
-    {
-        delete mpButtons;
-        mpButtons = NULL;
-    }
-    if(NULL != mpUserLabel)
-    {
-        delete mpUserLabel;
-        mpUserLabel = NULL;
-    }
-    if(NULL != mpPasswordLabel)
-    {
-        delete mpPasswordLabel;
-        mpPasswordLabel = NULL;
-    }
-    if(NULL != mpUsername)
-    {
-        delete mpUsername;
-        mpUsername = NULL;
-    }
-    if(NULL != mpPassword)
-    {
-        delete mpPassword;
-        mpPassword = NULL;
-    }
-}
-
-// ---------------------------------------------------------
-UBPublicationDlg::UBPublicationDlg(QWidget *parent, const char *name):QDialog(parent)
-  , mpLayout(NULL)
-  , mpTitleLayout(NULL)
-  , mpTitleLabel(NULL)
-  , mpTitle(NULL)
-  , mpDescLabel(NULL)
-  , mpDescription(NULL)
-  , mpButtons(NULL)
-{
-    setObjectName(name);
-    setWindowTitle(tr("Publish document on the web"));
-
-    resize(500, 300);
-
-    mpLayout = new QVBoxLayout();
-    setLayout(mpLayout);
-
-    mpTitleLabel = new QLabel(tr("Title:"), this);
-    mpTitle = new QLineEdit(this);
-    mpTitleLayout = new QHBoxLayout();
-    mpTitleLayout->addWidget(mpTitleLabel, 0);
-    mpTitleLayout->addWidget(mpTitle, 1);
-    mpLayout->addLayout(mpTitleLayout, 0);
-
-    mpDescLabel = new QLabel(tr("Description:"), this);
-    mpLayout->addWidget(mpDescLabel, 0);
-
-    mpDescription = new QTextEdit(this);
-    mpLayout->addWidget(mpDescription, 1);
-
-    mpButtons = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Ok, Qt::Horizontal, this);
-    mpButtons->button(QDialogButtonBox::Ok)->setText(tr("Publish"));
-    mpLayout->addWidget(mpButtons);
-
-    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(false);
-
-    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
-    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
-    connect(mpTitle, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged()));
-    connect(mpDescription, SIGNAL(textChanged()), this, SLOT(onTextChanged()));
-}
-
-UBPublicationDlg::~UBPublicationDlg()
-{
-    if(NULL != mpTitleLabel)
-    {
-        delete mpTitleLabel;
-        mpTitleLabel = NULL;
-    }
-    if(NULL != mpTitle)
-    {
-        delete mpTitle;
-        mpTitle = NULL;
-    }
-    if(NULL != mpDescLabel)
-    {
-        delete mpDescLabel;
-        mpDescLabel = NULL;
-    }
-    if(NULL != mpDescription)
-    {
-        delete mpDescription;
-        mpDescription = NULL;
-    }
-    if(NULL != mpButtons)
-    {
-        delete mpButtons;
-        mpButtons = NULL;
-    }
-    if(NULL != mpTitleLayout)
-    {
-        delete mpTitleLayout;
-        mpTitleLayout = NULL;
-    }
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-}
-
-void UBPublicationDlg::onTextChanged()
-{
-    bool bPublishButtonState = false;
-    if(mpTitle->text() != "" && mpDescription->document()->toPlainText() != "")
-    {
-        bPublishButtonState = true;
-    }
-    else
-    {
-        bPublishButtonState = false;
-    }
-
-    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(bPublishButtonState);
-}
+
+
+#include <QFileInfo>
+
+#include "UBDocumentPublisher.h"
+
+#include "frameworks/UBPlatformUtils.h"
+#include "frameworks/UBFileSystemUtils.h"
+#include "frameworks/UBStringUtils.h"
+
+#include "network/UBNetworkAccessManager.h"
+#include "network/UBServerXMLHttpRequest.h"
+
+#include "core/UBDocumentManager.h"
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBApplicationController.h"
+
+#include "board/UBBoardController.h"
+
+#include "gui/UBMainWindow.h"
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentContainer.h"
+
+#include "domain/UBGraphicsWidgetItem.h"
+
+#include "globals/UBGlobals.h"
+
+THIRD_PARTY_WARNINGS_DISABLE
+#include "quazip.h"
+#include "quazipfile.h"
+THIRD_PARTY_WARNINGS_ENABLE
+
+#include "adaptors/UBExportFullPDF.h"
+#include "adaptors/UBExportDocument.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+
+#include "UBSvgSubsetRasterizer.h"
+
+#include "../../core/UBApplication.h"
+
+#include "core/memcheck.h"
+
+
+UBDocumentPublisher::UBDocumentPublisher(UBDocumentProxy* pDocument, QObject *parent)
+        : QObject(parent)
+        , mSourceDocument(pDocument)
+        , mUsername("")
+        , mPassword("")
+        , bLoginCookieSet(false)
+{
+    init();
+}
+
+
+UBDocumentPublisher::~UBDocumentPublisher()
+{
+}
+
+
+void UBDocumentPublisher::publish()
+{
+            //check that the username and password are stored on preferences
+    UBSettings* settings = UBSettings::settings();
+
+    if(settings->communityUsername().isEmpty() || settings->communityPassword().isEmpty()){
+        UBApplication::showMessage(tr("Credentials has to not been filled out yet."));
+        qDebug() << "trying to connect to community without the required credentials";
+        return;
+    }
+
+    mUsername = settings->communityUsername();
+    mPassword = settings->communityPassword();
+
+    UBPublicationDlg dlg;
+    if(QDialog::Accepted == dlg.exec())
+    {
+        mDocInfos.title = dlg.title();
+        mDocInfos.description = dlg.description();
+
+        buildUbwFile();
+
+        UBApplication::showMessage(tr("Uploading Sankore File on Web."));
+
+        sendUbw(mUsername, mPassword);
+    }
+}
+
+void UBDocumentPublisher::buildUbwFile()
+{
+    QDir d;
+    d.mkpath(UBFileSystemUtils::defaultTempDirPath());
+
+    QString tmpDir = UBFileSystemUtils::createTempDir();
+
+    if (UBFileSystemUtils::copyDir(mSourceDocument->persistencePath(), tmpDir))
+    {
+        QString documentName = mSourceDocument->name();
+
+        mPublishingPath = tmpDir;
+        mPublishingSize = mSourceDocument->pageCount();
+
+        rasterizeScenes();
+
+        upgradeDocumentForPublishing();
+
+        UBExportFullPDF pdfExporter;
+        pdfExporter.setVerbode(false);
+        pdfExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".pdf");
+
+        UBExportDocument ubzExporter;
+        ubzExporter.setVerbode(false);
+        ubzExporter.persistsDocument(mSourceDocument, mPublishingPath + "/" + documentName + ".ubz");
+
+        // remove all useless files
+
+        for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++) {
+            QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.svg",pageIndex);
+
+            QFile::remove(filename);
+        }
+
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::imageDirectory);
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::objectDirectory);
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::videoDirectory);
+        UBFileSystemUtils::deleteDir(mPublishingPath + "/" + UBPersistenceManager::audioDirectory);
+
+        mTmpZipFile = UBFileSystemUtils::defaultTempDirPath() + "/" + UBStringUtils::toCanonicalUuid(QUuid::createUuid()) + ".ubw~";
+
+        QuaZip zip(mTmpZipFile);
+        zip.setFileNameCodec("UTF-8");
+        if (!zip.open(QuaZip::mdCreate))
+        {
+            qWarning() << "Export failed. Cause: zip.open(): " << zip.getZipError() << "," << mTmpZipFile;
+            QApplication::restoreOverrideCursor();
+            return;
+        }
+
+        QuaZipFile outFile(&zip);
+
+        if (!UBFileSystemUtils::compressDirInZip(mPublishingPath, "", &outFile, true))
+        {
+            qWarning("Export failed. compressDirInZip failed ...");
+            zip.close();
+            UBApplication::showMessage(tr("Export failed."));
+            QApplication::restoreOverrideCursor();
+            return;
+        }
+
+        if (zip.getZipError() != 0)
+        {
+            qWarning("Export failed. Cause: zip.close(): %d", zip.getZipError());
+            zip.close();
+            UBApplication::showMessage(tr("Export failed."));
+            QApplication::restoreOverrideCursor();
+            return;
+        }
+
+        zip.close();
+
+    }
+    else
+    {
+        UBApplication::showMessage(tr("Export canceled ..."));
+        QApplication::restoreOverrideCursor();
+    }
+}
+
+void UBDocumentPublisher::rasterizeScenes()
+{
+
+    for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
+    {
+        UBApplication::showMessage(tr("Converting page %1/%2 ...").arg(UBDocumentContainer::pageFromSceneIndex(pageIndex)).arg(mPublishingSize), true);
+
+        UBDocumentProxy publishingDocument(mPublishingPath);
+        UBSvgSubsetRasterizer rasterizer(&publishingDocument, pageIndex);
+
+        QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.jpg",pageIndex);
+
+        rasterizer.rasterizeToFile(filename);
+
+    }
+}
+
+
+void UBDocumentPublisher::updateGoogleMapApiKey()
+{
+    QDir widgestDir(mPublishingPath + "/" + UBPersistenceManager::widgetDirectory);
+
+    QString uniboardWebGoogleMapApiKey = UBSettings::settings()->uniboardWebGoogleMapApiKey->get().toString();
+
+    foreach(QFileInfo dirInfo, widgestDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
+    {
+        QString config = UBFileSystemUtils::readTextFile(dirInfo.absoluteFilePath() + "/config.xml").toLower();
+
+        if (config.contains("google") && config.contains("map"))
+        {
+            QDir widgetDir(dirInfo.absoluteFilePath());
+
+            foreach(QFileInfo fileInfo, widgetDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot))
+            {
+                QFile file(fileInfo.absoluteFilePath());
+
+                if (file.open(QIODevice::ReadWrite))
+                {
+                    QTextStream stream(&file);
+                    QString content = stream.readAll();
+
+                    if (content.contains("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og"))
+                    {
+                        content.replace("ABQIAAAA6vtVqAUu8kZ_eTz7c8kwSBT9UCAhw_xm0LNFHsWmQxTJAdp5lxSY_5r-lZriY_7sACaMnl80JcX6Og",
+                                        uniboardWebGoogleMapApiKey);
+
+                        file.resize(0);
+                        file.write(content.toUtf8());
+                    }
+                    file.close();
+                }
+            }
+        }
+    }
+}
+
+
+void UBDocumentPublisher::upgradeDocumentForPublishing()
+{
+    for (int pageIndex = 0; pageIndex < mPublishingSize; pageIndex++)
+    {
+        UBDocumentProxy publishingDocument(mPublishingPath);
+        UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(&publishingDocument, pageIndex);
+
+        QList<UBGraphicsW3CWidgetItem*> widgets;
+
+        foreach(QGraphicsItem* item, scene->items()){
+            UBGraphicsW3CWidgetItem *widgetItem = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
+
+            if(widgetItem){
+                generateWidgetPropertyScript(widgetItem, UBDocumentContainer::pageFromSceneIndex(pageIndex));
+                widgets << widgetItem;
+            }
+        }
+
+        QString filename = mPublishingPath + UBFileSystemUtils::digitFileFormat("/page%1.json",pageIndex);
+
+        QFile jsonFile(filename);
+        if (jsonFile.open(QIODevice::WriteOnly | QIODevice::Truncate))
+        {
+            jsonFile.write("{\n");
+            jsonFile.write(QString("  \"scene\": {\n").toUtf8());
+            jsonFile.write(QString("    \"x\": %1,\n").arg(scene->normalizedSceneRect().x()).toUtf8());
+            jsonFile.write(QString("    \"y\": %1,\n").arg(scene->normalizedSceneRect().y()).toUtf8());
+            jsonFile.write(QString("    \"width\": %1,\n").arg(scene->normalizedSceneRect().width()).toUtf8());
+            jsonFile.write(QString("    \"height\": %1\n").arg(scene->normalizedSceneRect().height()).toUtf8());
+            jsonFile.write(QString("  },\n").toUtf8());
+
+            jsonFile.write(QString("  \"widgets\": [\n").toUtf8());
+
+            bool first = true;
+
+            foreach(UBGraphicsW3CWidgetItem* widget, widgets)
+            {
+                if (!first)
+                    jsonFile.write(QString("    ,\n").toUtf8());
+
+                jsonFile.write(QString("    {\n").toUtf8());
+                jsonFile.write(QString("      \"uuid\": \"%1\",\n").arg(UBStringUtils::toCanonicalUuid(widget->uuid())).toUtf8());
+                jsonFile.write(QString("      \"id\": \"%1\",\n").arg(widget->metadatas().id).toUtf8());
+
+                jsonFile.write(QString("      \"name\": \"%1\",\n").arg(widget->metadatas().name).toUtf8());
+                jsonFile.write(QString("      \"description\": \"%1\",\n").arg(widget->metadatas().description).toUtf8());
+                jsonFile.write(QString("      \"author\": \"%1\",\n").arg(widget->metadatas().author).toUtf8());
+                jsonFile.write(QString("      \"authorEmail\": \"%1\",\n").arg(widget->metadatas().authorEmail).toUtf8());
+                jsonFile.write(QString("      \"authorHref\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8());
+                jsonFile.write(QString("      \"version\": \"%1\",\n").arg(widget->metadatas().authorHref).toUtf8());
+
+                jsonFile.write(QString("      \"x\": %1,\n").arg(widget->sceneBoundingRect().x()).toUtf8());
+                jsonFile.write(QString("      \"y\": %1,\n").arg(widget->sceneBoundingRect().y()).toUtf8());
+                jsonFile.write(QString("      \"width\": %1,\n").arg(widget->sceneBoundingRect().width()).toUtf8());
+                jsonFile.write(QString("      \"height\": %1,\n").arg(widget->sceneBoundingRect().height()).toUtf8());
+
+                jsonFile.write(QString("      \"nominalWidth\": %1,\n").arg(widget->boundingRect().width()).toUtf8());
+                jsonFile.write(QString("      \"nominalHeight\": %1,\n").arg(widget->boundingRect().height()).toUtf8());
+
+                QString url = UBPersistenceManager::widgetDirectory + "/" + widget->uuid().toString() + ".wgt";
+                jsonFile.write(QString("      \"src\": \"%1\",\n").arg(url).toUtf8());
+                QString startFile = widget->mainHtmlFileName();
+                jsonFile.write(QString("      \"startFile\": \"%1\",\n").arg(startFile).toUtf8());
+
+                QMap<QString, QString> preferences = widget->UBGraphicsWidgetItem::preferences();
+
+                jsonFile.write(QString("      \"preferences\": {\n").toUtf8());
+
+                foreach(QString key, preferences.keys())
+                {
+                    QString sep = ",";
+                    if (key == preferences.keys().last())
+                        sep = "";
+
+                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
+                                   .arg(key)
+                                   .arg(preferences.value(key))
+                                   .arg(sep)
+                                   .toUtf8());
+                }
+                jsonFile.write(QString("      },\n").toUtf8());
+
+                jsonFile.write(QString("      \"datastore\": {\n").toUtf8());
+
+                QMap<QString, QString> datastoreEntries = widget->datastoreEntries();
+
+                foreach(QString entry, datastoreEntries.keys())
+                {
+                    QString sep = ",";
+                    if (entry == datastoreEntries.keys().last())
+                        sep = "";
+
+                    jsonFile.write(QString("          \"%1\": \"%2\"%3\n")
+                                   .arg(entry)
+                                   .arg(datastoreEntries.value(entry))
+                                   .arg(sep)
+                                   .toUtf8());
+                }
+                jsonFile.write(QString("      }\n").toUtf8());
+
+                jsonFile.write(QString("    }\n").toUtf8());
+
+                first = false;
+            }
+
+            jsonFile.write("  ]\n");
+            jsonFile.write("}\n");
+        }
+        else
+        {
+            qWarning() << "Cannot open file" << filename << "for saving page state";
+        }
+
+        delete scene;
+    }
+
+    updateGoogleMapApiKey();
+}
+
+
+void UBDocumentPublisher::generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber)
+{
+
+    QMap<QString, QString> preferences = widgetItem->UBGraphicsWidgetItem::preferences();
+    QMap<QString, QString> datastoreEntries = widgetItem->datastoreEntries();
+
+    QString startFileName = widgetItem->mainHtmlFileName();
+
+    if (!startFileName.startsWith("http://"))
+    {
+        QString startFilePath = mPublishingPath + "/" + UBPersistenceManager::widgetDirectory + "/" + widgetItem->uuid().toString() + ".wgt/" + startFileName;
+
+        QFile startFile(startFilePath);
+
+        if (startFile.exists())
+        {
+            if (startFile.open(QIODevice::ReadWrite))
+            {
+                QTextStream stream(&startFile);
+                QStringList lines;
+
+                bool addedJs = false;
+
+                QString line;
+                do
+                {
+                    line = stream.readLine();
+                    if (!line.isNull())
+                    {
+                        lines << line;
+
+                        if (!addedJs && line.contains("<head") && line.contains(">") )  // TODO UB 4.6, this is naive ... the HEAD tag may be on several lines
+                        {
+                            lines << "";
+                            lines << "  <script type=\"text/javascript\">";
+
+                            lines << "    var widget = {};";
+                            lines << "    widget.id = '" + widgetItem->metadatas().id + "';";
+                            lines << "    widget.name = '" + widgetItem->metadatas().name + "';";
+                            lines << "    widget.description = '" + widgetItem->metadatas().description + "';";
+                            lines << "    widget.author = '" + widgetItem->metadatas().author + "';";
+                            lines << "    widget.authorEmail = '" + widgetItem->metadatas().authorEmail + "';";
+                            lines << "    widget.authorHref = '" + widgetItem->metadatas().authorHref + "';";
+                            lines << "    widget.version = '" + widgetItem->metadatas().version + "';";
+
+                            lines << "    widget.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "';";
+
+                            lines << "    widget.width = " + QString("%1").arg(widgetItem->nominalSize().width()) + ";";
+                            lines << "    widget.height = " + QString("%1").arg(widgetItem->nominalSize().height()) + ";";
+                            lines << "    widget.openUrl = function(url) { window.open(url); }";
+                            lines << "    widget.preferences = new Array()";
+
+                            foreach(QString pref, preferences.keys())
+                            {
+                                lines << "      widget.preferences['" + pref + "'] = '" + preferences.value(pref) + "';";
+                            }
+
+                            lines << "    widget.preferences.key = function(index) {";
+                            lines << "      var currentIndex = 0;";
+                            lines << "      for(key in widget.preferences){";
+                            lines << "        if (currentIndex == index){ return key;}";
+                            lines << "        currentIndex++;";
+                            lines << "      }";
+                            lines << "      return '';";
+                            lines << "    }";
+
+                            lines << "    widget.preferences.getItem = function(key) {";
+                            lines << "      return widget.preferences[key];";
+                            lines << "    }";
+
+                            lines << "    widget.preferences.setItem = function(key, value) {}";
+                            lines << "    widget.preferences.removeItem = function(key) {}";
+                            lines << "    widget.preferences.clear = function() {}";
+
+                            lines << "    var uniboard = {};";
+                            lines << "    uniboard.pageCount = " + QString("%1").arg(mPublishingSize) + ";";
+                            lines << "    uniboard.currentPageNumber = " + QString("%1").arg(pageNumber) + ";";
+                            lines << "    uniboard.uuid = '" + UBStringUtils::toCanonicalUuid(widgetItem->uuid()) + "'";
+                            lines << "    uniboard.lang = navigator.language;";
+                            lines << "    uniboard.locale = function() {return navigator.language}";
+                            lines << "    uniboard.messages = {}";
+                            lines << "    uniboard.messages.subscribeToTopic = function(topicName){}";
+                            lines << "    uniboard.messages.unsubscribeFromTopic = function(topicName){}";
+                            lines << "    uniboard.messages.sendMessage = function(topicName, message){}";
+
+                            lines << "    uniboard.datastore = {};";
+                            lines << "    uniboard.datastore.document = new Array();";
+                            foreach(QString entry, datastoreEntries.keys())
+                            {
+                                lines << "      uniboard.datastore.document['" + entry + "'] = '" + datastoreEntries.value(entry) + "';";
+                            }
+
+                            lines << "    uniboard.datastore.document.key = function(index) {";
+                            lines << "      var currentIndex = 0;";
+                            lines << "      for(key in uniboard.datastore.document){";
+                            lines << "        if (currentIndex == index){ return key;}";
+                            lines << "        currentIndex++;";
+                            lines << "      }";
+                            lines << "      return '';";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.getItem = function(key) {";
+                            lines << "      return uniboard.datastore.document[key];";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
+                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
+                            lines << "    uniboard.datastore.document.clear = function() {}";
+
+                            lines << "    uniboard.setTool = function(tool){}";
+                            lines << "    uniboard.setPenColor = function(color){}";
+                            lines << "    uniboard.setMarkerColor = function(color){}";
+
+                            lines << "    uniboard.pageThumbnail = function(pageNumber){";
+                            lines << "      var nb;";
+                            lines << "      if (pageNumber < 10) return 'page00' + pageNumber + '.thumbnail.jpg';";
+                            lines << "      if (pageNumber < 100) return 'page0' + pageNumber + '.thumbnail.jpg';";
+                            lines << "      return 'page' + pageNumber + '.thumbnail.jpg;'";
+                            lines << "    }";
+
+                            lines << "    uniboard.zoom = function(factor, x, y){}";
+                            lines << "    uniboard.move = function(x, y){}";
+                            lines << "    uniboard.move = function(x, y){}";
+                            lines << "    uniboard.moveTo = function(x, y){}";
+                            lines << "    uniboard.drawLineTo = function(x, y, width){}";
+                            lines << "    uniboard.eraseLineTo = function(x, y, width){}";
+                            lines << "    uniboard.clear = function(){}";
+                            lines << "    uniboard.setBackground = function(dark, crossed){}";
+                            lines << "    uniboard.addObject = function(url, width, height, x, y, background){}";
+                            lines << "    uniboard.resize = function(width, height){window.resizeTo(width, height);}";
+
+                            lines << "    uniboard.showMessage = function(message){alert(message);}";
+                            lines << "    uniboard.centerOn = function(x, y){}";
+                            lines << "    uniboard.addText = function(text, x, y){}";
+
+                            lines << "    uniboard.setPreference = function(key, value){}";
+                            lines << "    uniboard.preference = function(key, defValue){";
+                            lines << "      var pref = widget.preferences[key];";
+                            lines << "      if (pref == undefined) ";
+                            lines << "        return defValue;";
+                            lines << "      else ";
+                            lines << "        return pref;";
+                            lines << "    }";
+                            lines << "    uniboard.preferenceKeys = function(){";
+                            lines << "        var keys = new Array();";
+                            lines << "        for(key in widget.preferences){";
+                            lines << "            keys.push(key);";
+                            lines << "        }";
+                            lines << "        return keys;";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.key = function(index) {";
+                            lines << "        var currentIndex = 0;";
+                            lines << "        for(key in uniboard.datastore.document){";
+                            lines << "            if (currentIndex == index){ return key;}";
+                            lines << "            currentIndex++;";
+                            lines << "        }";
+                            lines << "        return '';";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.getItem = function(key) {";
+                            lines << "        return uniboard.datastore.document[key];";
+                            lines << "    }";
+
+                            lines << "    uniboard.datastore.document.setItem = function(key, value) {}";
+                            lines << "    uniboard.datastore.document.removeItem = function(key) {}";
+                            lines << "    uniboard.datastore.document.clear = function() {}";
+
+                            lines << "  </script>";
+                            lines << "";
+
+                            addedJs = true;
+                        }
+                    }
+                }
+                while (!line.isNull());
+
+                startFile.resize(0);
+                startFile.write(lines.join("\n").toUtf8()); // TODO UB 4.x detect real html encoding
+
+                startFile.close();
+            }
+        }
+    }
+    else{
+        qWarning() << "Remote Widget start file, cannot inject widget preferences and datastore entries";
+    }
+}
+
+void UBDocumentPublisher::init()
+{
+    mCrlf=0x0d;
+    mCrlf+=0x0a;
+    mDocInfos.title = "";
+    mDocInfos.description = "";
+
+    mpCookieJar = new QNetworkCookieJar();
+    mpNetworkMgr = new QNetworkAccessManager(this);
+
+    connect(mpNetworkMgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
+}
+
+void UBDocumentPublisher::onFinished(QNetworkReply *reply)
+{
+    QVariant cookieHeader = reply->rawHeader("Set-Cookie");
+    // First we concatenate all the Set-Cookie values (the packet can contains many of them)
+    QStringList qslCookie = cookieHeader.toString().split("\n");
+    QString qsCookieValue = qslCookie.at(0);
+    for (int i = 1; i < qslCookie.size(); i++) {
+        qsCookieValue += "; " +qslCookie.at(i);
+    }
+
+    // Now we isolate every cookie value
+    QStringList qslCookieVals = qsCookieValue.split("; ");
+
+    bool bTransferOk = false;
+
+    for(int j = 0; j < qslCookieVals.size(); j++)
+    {
+        qDebug() << j;
+        if(qslCookieVals.at(j).startsWith("assetStatus"))
+        {
+            QStringList qslAsset = qslCookieVals.at(j).split("=");
+            if(qslAsset.at(1) == "UPLOADED")
+            {
+                bTransferOk = true;
+                break;
+            }
+        }
+    }
+
+    if(bTransferOk)
+    {
+        UBApplication::showMessage(tr("Document uploaded correctly on the web."));
+    }
+    else
+    {
+        UBApplication::showMessage(tr("Failed to upload document on the web."));
+    }
+
+    reply->deleteLater();
+}
+
+void UBDocumentPublisher::sendUbw(QString username, QString password)
+{
+    if (QFile::exists(mTmpZipFile))
+    {
+        QFile f(mTmpZipFile);
+        if (f.open(QIODevice::ReadOnly))
+        {
+            QFileInfo fi(f);
+            QByteArray ba = f.readAll();
+            QString boundary,data, multipartHeader;
+            QByteArray datatoSend;
+
+            boundary = "---WebKitFormBoundaryDKBTgA53MiyWrzLY";
+            multipartHeader = "multipart/form-data; boundary="+boundary;
+
+            data="--"+boundary+mCrlf;
+            data+="Content-Disposition: form-data; name=\"title\"" + mCrlf + mCrlf + mDocInfos.title + mCrlf;
+            data+="--"+boundary+mCrlf;
+            data+="Content-Disposition: form-data; name=\"description\"" + mCrlf + mCrlf + mDocInfos.description.remove("\n") + mCrlf;
+            data+="--"+boundary+mCrlf;
+            data+="Content-Disposition: form-data; name=\"file\"; filename=\""+ fi.fileName() +"\""+mCrlf;
+            data+="Content-Type: application/octet-stream"+mCrlf+mCrlf;
+            datatoSend=data.toAscii(); // convert data string to byte array for request
+            datatoSend += ba;
+            datatoSend += mCrlf;
+            datatoSend += QString("--%0--%1").arg(boundary).arg(mCrlf);
+
+            QNetworkRequest request(QUrl(QString(DOCPUBLICATION_URL).toAscii().constData()));
+
+            request.setHeader(QNetworkRequest::ContentTypeHeader, multipartHeader);
+            request.setHeader(QNetworkRequest::ContentLengthHeader,datatoSend.size());
+            QString b64Auth = getBase64Of(QString("%0:%1").arg(username).arg(password));
+            request.setRawHeader("Authorization", QString("Basic %0").arg(b64Auth).toAscii().constData());
+            request.setRawHeader("Host", "planete.sankore.org");
+            request.setRawHeader("Accept", "*/*");
+            request.setRawHeader("Accept-Language", "en-US,*");
+
+            mpCookieJar->setCookiesFromUrl(mCookies, QUrl(DOCPUBLICATION_URL));
+            mpNetworkMgr->setCookieJar(mpCookieJar);
+
+            // Send the file
+            mpNetworkMgr->post(request,datatoSend);
+        }
+    }
+}
+
+QString UBDocumentPublisher::getBase64Of(QString stringToEncode)
+{
+    return stringToEncode.toAscii().toBase64();
+}
+
+// ---------------------------------------------------------
+UBProxyLoginDlg::UBProxyLoginDlg(QWidget *parent, const char *name):QDialog(parent)
+  , mpLayout(NULL)
+  , mpUserLayout(NULL)
+  , mpPasswordLayout(NULL)
+  , mpButtons(NULL)
+  , mpUserLabel(NULL)
+  , mpPasswordLabel(NULL)
+  , mpUsername(NULL)
+  , mpPassword(NULL)
+{
+    setObjectName(name);
+    setFixedSize(400, 150);
+    setWindowTitle(tr("Proxy Login"));
+
+    mpLayout = new QVBoxLayout();
+    setLayout(mpLayout);
+    mpUserLayout = new QHBoxLayout();
+    mpLayout->addLayout(mpUserLayout);
+    mpPasswordLayout = new QHBoxLayout();
+    mpLayout->addLayout(mpPasswordLayout);
+
+    mpUserLabel = new QLabel(tr("Username:"), this);
+    mpUsername = new QLineEdit(this);
+    mpUserLayout->addWidget(mpUserLabel, 0);
+    mpUserLayout->addWidget(mpUsername, 1);
+
+    mpPasswordLabel = new QLabel(tr("Password:"), this);
+    mpPassword = new QLineEdit(this);
+    mpPasswordLayout->addWidget(mpPasswordLabel, 0);
+    mpPasswordLayout->addWidget(mpPassword, 1);
+
+    mpButtons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
+    mpLayout->addWidget(mpButtons);
+
+    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
+    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
+
+}
+
+UBProxyLoginDlg::~UBProxyLoginDlg()
+{
+    if(NULL != mpLayout)
+    {
+        delete mpLayout;
+        mpLayout = NULL;
+    }
+    if(NULL != mpButtons)
+    {
+        delete mpButtons;
+        mpButtons = NULL;
+    }
+    if(NULL != mpUserLabel)
+    {
+        delete mpUserLabel;
+        mpUserLabel = NULL;
+    }
+    if(NULL != mpPasswordLabel)
+    {
+        delete mpPasswordLabel;
+        mpPasswordLabel = NULL;
+    }
+    if(NULL != mpUsername)
+    {
+        delete mpUsername;
+        mpUsername = NULL;
+    }
+    if(NULL != mpPassword)
+    {
+        delete mpPassword;
+        mpPassword = NULL;
+    }
+}
+
+// ---------------------------------------------------------
+UBPublicationDlg::UBPublicationDlg(QWidget *parent, const char *name):QDialog(parent)
+  , mpLayout(NULL)
+  , mpTitleLayout(NULL)
+  , mpTitleLabel(NULL)
+  , mpTitle(NULL)
+  , mpDescLabel(NULL)
+  , mpDescription(NULL)
+  , mpButtons(NULL)
+{
+    setObjectName(name);
+    setWindowTitle(tr("Publish document on the web"));
+
+    resize(500, 300);
+
+    mpLayout = new QVBoxLayout();
+    setLayout(mpLayout);
+
+    mpTitleLabel = new QLabel(tr("Title:"), this);
+    mpTitle = new QLineEdit(this);
+    mpTitleLayout = new QHBoxLayout();
+    mpTitleLayout->addWidget(mpTitleLabel, 0);
+    mpTitleLayout->addWidget(mpTitle, 1);
+    mpLayout->addLayout(mpTitleLayout, 0);
+
+    mpDescLabel = new QLabel(tr("Description:"), this);
+    mpLayout->addWidget(mpDescLabel, 0);
+
+    mpDescription = new QTextEdit(this);
+    mpLayout->addWidget(mpDescription, 1);
+
+    mpButtons = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Ok, Qt::Horizontal, this);
+    mpButtons->button(QDialogButtonBox::Ok)->setText(tr("Publish"));
+    mpLayout->addWidget(mpButtons);
+
+    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(false);
+
+    connect(mpButtons, SIGNAL(accepted()), this, SLOT(accept()));
+    connect(mpButtons, SIGNAL(rejected()), this, SLOT(reject()));
+    connect(mpTitle, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged()));
+    connect(mpDescription, SIGNAL(textChanged()), this, SLOT(onTextChanged()));
+}
+
+UBPublicationDlg::~UBPublicationDlg()
+{
+    if(NULL != mpTitleLabel)
+    {
+        delete mpTitleLabel;
+        mpTitleLabel = NULL;
+    }
+    if(NULL != mpTitle)
+    {
+        delete mpTitle;
+        mpTitle = NULL;
+    }
+    if(NULL != mpDescLabel)
+    {
+        delete mpDescLabel;
+        mpDescLabel = NULL;
+    }
+    if(NULL != mpDescription)
+    {
+        delete mpDescription;
+        mpDescription = NULL;
+    }
+    if(NULL != mpButtons)
+    {
+        delete mpButtons;
+        mpButtons = NULL;
+    }
+    if(NULL != mpTitleLayout)
+    {
+        delete mpTitleLayout;
+        mpTitleLayout = NULL;
+    }
+    if(NULL != mpLayout)
+    {
+        delete mpLayout;
+        mpLayout = NULL;
+    }
+}
+
+void UBPublicationDlg::onTextChanged()
+{
+    bool bPublishButtonState = false;
+    if(mpTitle->text() != "" && mpDescription->document()->toPlainText() != "")
+    {
+        bPublishButtonState = true;
+    }
+    else
+    {
+        bPublishButtonState = false;
+    }
+
+    mpButtons->button(QDialogButtonBox::Ok)->setEnabled(bPublishButtonState);
+}
diff --git a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h
index cd74631..e6d7f85 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h
+++ b/Sankore-3.1/src/adaptors/publishing/UBDocumentPublisher.h
@@ -1,128 +1,141 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBDOCUMENTPUBLISHER_H
-#define UBDOCUMENTPUBLISHER_H
-
-#include <QtGui>
-#include <QtNetwork>
-
-#include "ui_webPublishing.h"
-
-#define DOCPUBLICATION_URL     "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain"
-
-typedef struct
-{
-    QString title;
-    QString description;
-} sDocumentInfos;
-
-class UBDocumentProxy;
-class UBServerXMLHttpRequest;
-class UBGraphicsW3CWidgetItem;
-class QWebView;
-
-class UBProxyLoginDlg : public QDialog
-{
-    Q_OBJECT
-public:
-    UBProxyLoginDlg(QWidget* parent=0, const char* name="ProxyLoginDlg");
-    ~UBProxyLoginDlg();
-
-    QString username(){return mpUsername->text();}
-    QString password(){return mpPassword->text();}
-
-private:
-    QVBoxLayout* mpLayout;
-    QHBoxLayout* mpUserLayout;
-    QHBoxLayout* mpPasswordLayout;
-    QDialogButtonBox* mpButtons;
-    QLabel* mpUserLabel;
-    QLabel* mpPasswordLabel;
-    QLineEdit* mpUsername;
-    QLineEdit* mpPassword;
-};
-
-class UBPublicationDlg : public QDialog
-{
-    Q_OBJECT
-public:
-    UBPublicationDlg(QWidget* parent=0, const char* name="UBPublicationDlg");
-    ~UBPublicationDlg();
-
-    QString title(){return mpTitle->text();}
-    QString description(){return mpDescription->document()->toPlainText();}
-
-private slots:
-    void onTextChanged();
-
-private:
-    QVBoxLayout* mpLayout;
-    QHBoxLayout* mpTitleLayout;
-    QLabel* mpTitleLabel;
-    QLineEdit* mpTitle;
-    QLabel* mpDescLabel;
-    QTextEdit* mpDescription;
-    QDialogButtonBox* mpButtons;
-};
-
-
-class UBDocumentPublisher : public QObject
-{
-    Q_OBJECT;
-
-public:
-    explicit UBDocumentPublisher(UBDocumentProxy* sourceDocument, QObject *parent = 0);
-    virtual ~UBDocumentPublisher();
-
-    void publish();
-
-signals:
-
-    void loginDone();
-
-protected:
-
-    virtual void updateGoogleMapApiKey();
-    virtual void rasterizeScenes();
-    virtual void upgradeDocumentForPublishing();
-    virtual void generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber);
-
-private slots:
-
-    void onFinished(QNetworkReply* reply);
-
-private:
-
-    UBDocumentProxy *mSourceDocument;
-    UBDocumentProxy *mPublishingDocument;
-    void init();
-    void sendUbw(QString username, QString password);
-    QString getBase64Of(QString stringToEncode);
-
-    QHBoxLayout* mpLayout;
-    QNetworkAccessManager* mpNetworkMgr;
-    QNetworkCookieJar* mpCookieJar;
-    QString mUsername;
-    QString mPassword;
-    QString mCrlf;
-    bool bLoginCookieSet;
-
-    void buildUbwFile();
-    QString mTmpZipFile;
-    QList<QNetworkCookie> mCookies;
-    sDocumentInfos mDocInfos;
-
-};
-#endif // UBDOCUMENTPUBLISHER_H
+
+
+#ifndef UBDOCUMENTPUBLISHER_H
+#define UBDOCUMENTPUBLISHER_H
+
+#include <QtGui>
+#include <QtNetwork>
+
+#include "ui_webPublishing.h"
+
+#define DOCPUBLICATION_URL     "http://planete.sankore.org/xwiki/bin/view/CreateResources/UniboardUpload?xpage=plain&outputSyntax=plain"
+
+typedef struct
+{
+    QString title;
+    QString description;
+} sDocumentInfos;
+
+class UBDocumentProxy;
+class UBServerXMLHttpRequest;
+class UBGraphicsW3CWidgetItem;
+class QWebView;
+
+class UBProxyLoginDlg : public QDialog
+{
+    Q_OBJECT
+public:
+    UBProxyLoginDlg(QWidget* parent=0, const char* name="ProxyLoginDlg");
+    ~UBProxyLoginDlg();
+
+    QString username(){return mpUsername->text();}
+    QString password(){return mpPassword->text();}
+
+private:
+    QVBoxLayout* mpLayout;
+    QHBoxLayout* mpUserLayout;
+    QHBoxLayout* mpPasswordLayout;
+    QDialogButtonBox* mpButtons;
+    QLabel* mpUserLabel;
+    QLabel* mpPasswordLabel;
+    QLineEdit* mpUsername;
+    QLineEdit* mpPassword;
+};
+
+class UBPublicationDlg : public QDialog
+{
+    Q_OBJECT
+public:
+    UBPublicationDlg(QWidget* parent=0, const char* name="UBPublicationDlg");
+    ~UBPublicationDlg();
+
+    QString title(){return mpTitle->text();}
+    QString description(){return mpDescription->document()->toPlainText();}
+
+private slots:
+    void onTextChanged();
+
+private:
+    QVBoxLayout* mpLayout;
+    QHBoxLayout* mpTitleLayout;
+    QLabel* mpTitleLabel;
+    QLineEdit* mpTitle;
+    QLabel* mpDescLabel;
+    QTextEdit* mpDescription;
+    QDialogButtonBox* mpButtons;
+};
+
+
+class UBDocumentPublisher : public QObject
+{
+    Q_OBJECT;
+
+public:
+    explicit UBDocumentPublisher(UBDocumentProxy* sourceDocument, QObject *parent = 0);
+    virtual ~UBDocumentPublisher();
+
+    void publish();
+
+signals:
+
+    void loginDone();
+
+protected:
+
+    virtual void updateGoogleMapApiKey();
+    virtual void rasterizeScenes();
+    virtual void upgradeDocumentForPublishing();
+    virtual void generateWidgetPropertyScript(UBGraphicsW3CWidgetItem *widgetItem, int pageNumber);
+
+private slots:
+
+    void onFinished(QNetworkReply* reply);
+
+private:
+
+    UBDocumentProxy *mSourceDocument;
+
+    //UBDocumentProxy *mPublishingDocument;
+    QString mPublishingPath;
+    int mPublishingSize;
+
+
+    void init();
+    void sendUbw(QString username, QString password);
+    QString getBase64Of(QString stringToEncode);
+
+    QHBoxLayout* mpLayout;
+    QNetworkAccessManager* mpNetworkMgr;
+    QNetworkCookieJar* mpCookieJar;
+    QString mUsername;
+    QString mPassword;
+    QString mCrlf;
+    bool bLoginCookieSet;
+
+    void buildUbwFile();
+    QString mTmpZipFile;
+    QList<QNetworkCookie> mCookies;
+    sDocumentInfos mDocInfos;
+
+};
+#endif // UBDOCUMENTPUBLISHER_H
diff --git a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
index 8ba7ede..f2080c9 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
+++ b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBSvgSubsetRasterizer.h"
 
 #include "domain/UBGraphicsScene.h"
diff --git a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h
index 0304235..e7ec6de 100644
--- a/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h
+++ b/Sankore-3.1/src/adaptors/publishing/UBSvgSubsetRasterizer.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSVGSUBSETRASTERIZER_H_
 #define UBSVGSUBSETRASTERIZER_H_
 
diff --git a/Sankore-3.1/src/api/UBLibraryAPI.cpp b/Sankore-3.1/src/api/UBLibraryAPI.cpp
index 2b70fc9..c065fba 100644
--- a/Sankore-3.1/src/api/UBLibraryAPI.cpp
+++ b/Sankore-3.1/src/api/UBLibraryAPI.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBLibraryAPI.h"
 
 #include "core/UBApplication.h"
@@ -40,7 +47,7 @@ UBLibraryAPI::~UBLibraryAPI()
 void UBLibraryAPI::addObject(QString pUrl, int width, int height, int x, int y, bool background)
 {
     if (UBApplication::boardController)
-        UBApplication::boardController->downloadURL(QUrl(pUrl), QPointF(x, y), QSize(width, height), background);
+        UBApplication::boardController->downloadURL(QUrl(pUrl), QString(), QPointF(x, y), QSize(width, height), background);
 
 }
 
diff --git a/Sankore-3.1/src/api/UBLibraryAPI.h b/Sankore-3.1/src/api/UBLibraryAPI.h
index fee4d23..d0b2ed0 100644
--- a/Sankore-3.1/src/api/UBLibraryAPI.h
+++ b/Sankore-3.1/src/api/UBLibraryAPI.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBLIBRARYAPI_H_
 #define UBLIBRARYAPI_H_
 
diff --git a/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp b/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp
index 856fb56..60a1aa4 100644
--- a/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp
+++ b/Sankore-3.1/src/api/UBW3CWidgetAPI.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBW3CWidgetAPI.h"
 
 #include <QtGui>
@@ -30,25 +37,14 @@
 
 #include "core/memcheck.h"
 
-UBW3CWidgetAPI::UBW3CWidgetAPI(UBGraphicsW3CWidgetItem *graphicsWidget)
-    : QObject(graphicsWidget)
+UBW3CWidgetAPI::UBW3CWidgetAPI(UBGraphicsW3CWidgetItem *graphicsWidget, QObject *parent)
+    : QObject(parent)
     , mGraphicsW3CWidget(graphicsWidget)
-    , mW3CWidget(mGraphicsW3CWidget->w3cWidget())
 {
-    mPreferencesAPI = new UBW3CWidgetPreferenceAPI(graphicsWidget);
+    mPreferencesAPI = new UBW3CWidgetPreferenceAPI(graphicsWidget, parent);
 
 }
 
-
-UBW3CWidgetAPI::UBW3CWidgetAPI(UBW3CWidget *widget)
-    : QObject(widget)
-    , mGraphicsW3CWidget(0)
-    , mW3CWidget(widget)
-{
-    mPreferencesAPI = new UBW3CWidgetPreferenceAPI(widget);
-}
-
-
 UBW3CWidgetAPI::~UBW3CWidgetAPI()
 {
     // NOOP
@@ -66,55 +62,55 @@ QString UBW3CWidgetAPI::uuid()
 
 int UBW3CWidgetAPI::width()
 {
-    return mW3CWidget->geometry().width();
+    return mGraphicsW3CWidget->nominalSize().width();
 }
 
 
 int UBW3CWidgetAPI::height()
 {
-    return mW3CWidget->geometry().height();
+    return mGraphicsW3CWidget->nominalSize().height();
 }
 
 
 QString UBW3CWidgetAPI::id()
 {
-    return mW3CWidget->metadatas().id;
+    return mGraphicsW3CWidget->metadatas().id;
 }
 
 
 QString UBW3CWidgetAPI::name()
 {
-    return mW3CWidget->metadatas().name;
+    return mGraphicsW3CWidget->metadatas().name;
 }
 
 
 QString UBW3CWidgetAPI::description()
 {
-    return mW3CWidget->metadatas().description;
+    return mGraphicsW3CWidget->metadatas().description;
 }
 
 
 QString UBW3CWidgetAPI::author()
 {
-    return mW3CWidget->metadatas().author;
+    return mGraphicsW3CWidget->metadatas().author;
 }
 
 
 QString UBW3CWidgetAPI::authorEmail()
 {
-    return mW3CWidget->metadatas().authorEmail;
+    return mGraphicsW3CWidget->metadatas().authorEmail;
 }
 
 
 QString UBW3CWidgetAPI::authorHref()
 {
-    return mW3CWidget->metadatas().authorHref;
+    return mGraphicsW3CWidget->metadatas().authorHref;
 }
 
 
 QString UBW3CWidgetAPI::version()
 {
-    return mW3CWidget->metadatas().version;
+    return mGraphicsW3CWidget->metadatas().version;
 }
 
 QObject* UBW3CWidgetAPI::preferences()
@@ -129,24 +125,13 @@ void UBW3CWidgetAPI::openURL(const QString& url)
 }
 
 
-UBW3CWidgetPreferenceAPI::UBW3CWidgetPreferenceAPI(UBGraphicsW3CWidgetItem *graphicsWidget)
-    : UBW3CWebStorage(graphicsWidget)
+UBW3CWidgetPreferenceAPI::UBW3CWidgetPreferenceAPI(UBGraphicsW3CWidgetItem *graphicsWidget, QObject *parent)
+    : UBW3CWebStorage(parent)
     , mGraphicsW3CWidget(graphicsWidget)
-    , mW3CWidget(graphicsWidget->w3cWidget())
-{
-    // NOOP
-}
-
-UBW3CWidgetPreferenceAPI::UBW3CWidgetPreferenceAPI(UBW3CWidget *widget)
-    : UBW3CWebStorage(widget)
-    , mGraphicsW3CWidget(0)
-    , mW3CWidget(widget)
 {
     // NOOP
 }
 
-
-
 UBW3CWidgetPreferenceAPI::~UBW3CWidgetPreferenceAPI()
 {
     // NOOP
@@ -155,45 +140,35 @@ UBW3CWidgetPreferenceAPI::~UBW3CWidgetPreferenceAPI()
 
 QString UBW3CWidgetPreferenceAPI::key(int index)
 {
-   QMap<QString, UBW3CWidget::PreferenceValue> w3CPrefs = mW3CWidget->preferences();
-
-   if (index < w3CPrefs.size())
-       return w3CPrefs.keys().at(index);
-   else
-       return "";
+  QMap<QString, UBGraphicsW3CWidgetItem::PreferenceValue> w3CPrefs = mGraphicsW3CWidget->preferences();
 
+  if (index < w3CPrefs.size())
+    return w3CPrefs.keys().at(index);
+  else
+    return "";
 }
 
-
 QString UBW3CWidgetPreferenceAPI::getItem(const QString& key)
 {
-   if (mGraphicsW3CWidget)
-   {
-       QMap<QString, QString> docPref = mGraphicsW3CWidget->preferences();
-
-       if (docPref.contains(key))
-           return docPref.value(key);
-   }
+  if (mGraphicsW3CWidget) {
+    QMap<QString, QString> docPref = mGraphicsW3CWidget->UBGraphicsWidgetItem::preferences();
+    if (docPref.contains(key))
+      return docPref.value(key);
+  
 
-   QMap<QString, UBW3CWidget::PreferenceValue> w3cPrefs = mW3CWidget->preferences();
-
-   if (w3cPrefs.contains(key))
-   {
-       UBW3CWidget::PreferenceValue pref = w3cPrefs.value(key);
-
-       return pref.value;
-   }
-   else
-   {
-       return "";
-   }
+    QMap<QString, UBGraphicsW3CWidgetItem::PreferenceValue> w3cPrefs = mGraphicsW3CWidget->preferences();
 
+    if (w3cPrefs.contains(key)) {
+      UBGraphicsW3CWidgetItem::PreferenceValue pref = w3cPrefs.value(key);
+      return pref.value;
+    }
+  }
+  return QString();
 }
 
-
 int UBW3CWidgetPreferenceAPI::length()
 {
-   QMap<QString, UBW3CWidget::PreferenceValue> w3cPrefs = mW3CWidget->preferences();
+   QMap<QString, UBGraphicsW3CWidgetItem::PreferenceValue> w3cPrefs = mGraphicsW3CWidget->preferences();
 
    return w3cPrefs.size();
 }
@@ -201,39 +176,28 @@ int UBW3CWidgetPreferenceAPI::length()
 
 void UBW3CWidgetPreferenceAPI::setItem(const QString& key, const QString& value)
 {
-   if (mGraphicsW3CWidget)
-   {
-       QMap<QString, UBW3CWidget::PreferenceValue> w3cPrefs = mW3CWidget->preferences();
+  if (mGraphicsW3CWidget) {
+    QMap<QString, UBGraphicsW3CWidgetItem::PreferenceValue> w3cPrefs = mGraphicsW3CWidget->preferences();
 
-       if (w3cPrefs.contains(key) && !w3cPrefs.value(key).readonly)
-           mGraphicsW3CWidget->setPreference(key, value);
-   }
-   else
-   {
-       // No state for non graphics widget (aka tool widget)
-   }
+    if (w3cPrefs.contains(key) && !w3cPrefs.value(key).readonly)
+      mGraphicsW3CWidget->setPreference(key, value);
+  }
 }
 
 
+
+
 void UBW3CWidgetPreferenceAPI::removeItem(const QString& key)
 {
-   if (mGraphicsW3CWidget)
-       mGraphicsW3CWidget->removePreference(key);
-   else
-   {
-       // No state for non graphics widget (aka tool widget)
-   }
+  if (mGraphicsW3CWidget)
+    mGraphicsW3CWidget->removePreference(key);
 }
 
 
 void UBW3CWidgetPreferenceAPI::clear()
 {
-    if (mGraphicsW3CWidget)
-        mGraphicsW3CWidget->removeAllPreferences();
-    else
-    {
-       // No state for non graphics widget (aka tool widget)
-    }
+  if (mGraphicsW3CWidget)
+    mGraphicsW3CWidget->removeAllPreferences();
 }
 
 
diff --git a/Sankore-3.1/src/api/UBW3CWidgetAPI.h b/Sankore-3.1/src/api/UBW3CWidgetAPI.h
index e470b73..da490fa 100644
--- a/Sankore-3.1/src/api/UBW3CWidgetAPI.h
+++ b/Sankore-3.1/src/api/UBW3CWidgetAPI.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBW3CWIDGETAPI_H_
 #define UBW3CWIDGETAPI_H_
 
@@ -47,8 +54,7 @@ class UBW3CWidgetAPI : public QObject
 
     public:
 
-        UBW3CWidgetAPI(UBGraphicsW3CWidgetItem *graphicsWidget);
-        UBW3CWidgetAPI(UBW3CWidget *widget);
+        UBW3CWidgetAPI(UBGraphicsW3CWidgetItem *graphicsWidget, QObject *parent = 0);
 
         virtual ~UBW3CWidgetAPI();
 
@@ -72,7 +78,6 @@ class UBW3CWidgetAPI : public QObject
     private:
 
         UBGraphicsW3CWidgetItem* mGraphicsW3CWidget;
-        UBW3CWidget *mW3CWidget;
 
         UBW3CWidgetPreferenceAPI* mPreferencesAPI;
 
@@ -88,8 +93,8 @@ class UBW3CWebStorage : public QObject
 
     public:
         UBW3CWebStorage(QObject *parent = 0)
-        : QObject(parent){}
-        virtual ~UBW3CWebStorage(){}
+        : QObject(parent){/* NOOP */}
+        virtual ~UBW3CWebStorage(){/* NOOP */}
 
     public slots:
 
@@ -110,8 +115,7 @@ class UBW3CWidgetPreferenceAPI : public UBW3CWebStorage
     Q_OBJECT;
 
     public:
-        UBW3CWidgetPreferenceAPI(UBGraphicsW3CWidgetItem *graphicsWidget);
-        UBW3CWidgetPreferenceAPI(UBW3CWidget *widget);
+        UBW3CWidgetPreferenceAPI(UBGraphicsW3CWidgetItem *graphicsWidget, QObject *parent = 0);
 
         virtual ~UBW3CWidgetPreferenceAPI();
 
@@ -129,7 +133,6 @@ class UBW3CWidgetPreferenceAPI : public UBW3CWebStorage
     private:
 
         UBGraphicsW3CWidgetItem* mGraphicsW3CWidget;
-        UBW3CWidget* mW3CWidget;
 
 };
 
diff --git a/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp b/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp
index 55eed0d..9147d3b 100644
--- a/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp
+++ b/Sankore-3.1/src/api/UBWidgetMessageAPI.cpp
@@ -1,32 +1,36 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWidgetMessageAPI.h"
 
 #include "core/UBApplication.h"
 
-#include "domain/UBAbstractWidget.h"
-
 #include "core/memcheck.h"
 
-UBWidgetMessageAPI::UBWidgetMessageAPI(UBW3CWidget *widget)
-    : QObject(widget)
-    , mWebWidget(widget)
+UBWidgetMessageAPI::UBWidgetMessageAPI(UBGraphicsWidgetItem *graphicsWidgetItem, QObject *parent)
+    : QObject(parent)
+    , mGraphicsWidgetItem(graphicsWidgetItem)
 {
-    connect(UBWidgetAPIMessageBroker::instance(), SIGNAL(newMessage(const QString&, const QString&))
-            , this, SLOT(onNewMessage(const QString&, const QString&)), Qt::QueuedConnection);
+    connect(UBWidgetAPIMessageBroker::instance(), SIGNAL(newMessage(const QString&, const QString&)), this, SLOT(onNewMessage(const QString&, const QString&)), Qt::QueuedConnection);
 }
 
 UBWidgetMessageAPI::~UBWidgetMessageAPI()
@@ -45,9 +49,7 @@ void UBWidgetMessageAPI::onNewMessage(const QString& pTopicName, const QString&
 {
     if (mSubscribedTopics.contains(pTopicName))
     {
-        if (mWebWidget
-                && mWebWidget->page()
-                && mWebWidget->page()->mainFrame())
+        if (mGraphicsWidgetItem && mGraphicsWidgetItem->page() && mGraphicsWidgetItem->page()->mainFrame())
         {
 
             QString js;
@@ -55,7 +57,7 @@ void UBWidgetMessageAPI::onNewMessage(const QString& pTopicName, const QString&
             js += "{widget.messages.onmessage('";
             js += pMessage + "', '" + pTopicName + "')}";
 
-            mWebWidget->page()->
+            mGraphicsWidgetItem->page()->
                 mainFrame()->evaluateJavaScript(js);
 
         }
diff --git a/Sankore-3.1/src/api/UBWidgetMessageAPI.h b/Sankore-3.1/src/api/UBWidgetMessageAPI.h
index eeec1e1..fad6ee1 100644
--- a/Sankore-3.1/src/api/UBWidgetMessageAPI.h
+++ b/Sankore-3.1/src/api/UBWidgetMessageAPI.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWIDGETMESSAGEAPI_H_
 #define UBWIDGETMESSAGEAPI_H_
 
@@ -25,7 +32,7 @@ class UBWidgetMessageAPI : public QObject
     Q_OBJECT;
 
     public:
-        UBWidgetMessageAPI(UBW3CWidget *widget);
+        UBWidgetMessageAPI(UBGraphicsWidgetItem *graphicsWidgetItem, QObject *parent = 0);
         virtual ~UBWidgetMessageAPI();
 
     public slots:
@@ -49,7 +56,7 @@ class UBWidgetMessageAPI : public QObject
     private:
 
         QSet<QString> mSubscribedTopics;
-        UBW3CWidget *mWebWidget;
+        UBGraphicsWidgetItem *mGraphicsWidgetItem;
 };
 
 
diff --git a/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp b/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp
index 260734a..7ba93be 100644
--- a/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp
+++ b/Sankore-3.1/src/api/UBWidgetUniboardAPI.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBWidgetUniboardAPI.h"
 
 #include <QWebView>
@@ -30,7 +38,6 @@
 
 #include "domain/UBGraphicsScene.h"
 #include "domain/UBGraphicsWidgetItem.h"
-#include "domain/UBAbstractWidget.h"
 
 #include "adaptors/UBThumbnailAdaptor.h"
 
@@ -79,7 +86,7 @@ UBWidgetUniboardAPI::UBWidgetUniboardAPI(UBGraphicsScene *pScene, UBGraphicsWidg
 
     if (w3CGraphicsWidget)
     {
-        mMessagesAPI = new UBWidgetMessageAPI(w3CGraphicsWidget->w3cWidget());
+        mMessagesAPI = new UBWidgetMessageAPI(w3CGraphicsWidget);
         mDatastoreAPI = new UBDatastoreAPI(w3CGraphicsWidget);
     }
 
@@ -123,6 +130,10 @@ void UBWidgetUniboardAPI::setTool(const QString& toolString)
     {
         UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
     }
+    else if (lower == "play")
+    {
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Play);
+    }
     else if (lower == "line")
     {
         UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Line);
@@ -198,7 +209,7 @@ void UBWidgetUniboardAPI::addObject(QString pUrl, int width, int height, int x,
     if (UBApplication::boardController->activeScene() != mScene)
         return;
 
-    UBApplication::boardController->downloadURL(QUrl(pUrl), QPointF(x, y), QSize(width, height), background);
+    UBApplication::boardController->downloadURL(QUrl(pUrl), QString(), QPointF(x, y), QSize(width, height), background);
 
 }
 
@@ -247,7 +258,7 @@ void UBWidgetUniboardAPI::eraseLineTo(const qreal x, const qreal y, const qreal
 void UBWidgetUniboardAPI::clear()
 {
     if (mScene)
-            mScene->clearItemsAndAnnotations();
+            mScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations);
 }
 
 
@@ -342,7 +353,7 @@ QString UBWidgetUniboardAPI::pageThumbnail(const int pageNumber)
     if (UBApplication::boardController->activeScene() != mScene)
         return "";
 
-    UBDocumentProxy *doc = UBApplication::boardController->activeDocument();
+    UBDocumentProxy *doc = UBApplication::boardController->selectedDocument();
 
     if (!doc)
         return "";
@@ -467,10 +478,13 @@ void UBWidgetUniboardAPI::sendFileMetadata(QString metaData)
 
 void UBWidgetUniboardAPI::enableDropOnWidget(bool enable)
 {
-    mGraphicsWidget->setAcceptDrops(enable);
+    if (mGraphicsWidget)
+    {
+        mGraphicsWidget->setAcceptDrops(enable);
+    }
 }
 
-void UBWidgetUniboardAPI::ProcessDropEvent(QDropEvent *event)
+void UBWidgetUniboardAPI::ProcessDropEvent(QGraphicsSceneDragDropEvent *event)
 {
     const QMimeData *pMimeData = event->mimeData();
 
@@ -479,11 +493,12 @@ void UBWidgetUniboardAPI::ProcessDropEvent(QDropEvent *event)
     bool downloaded = false;
 
     QGraphicsView *tmpView = mGraphicsWidget->scene()->views().at(0);
-    QPoint dropPoint(mGraphicsWidget->mapFromScene(tmpView->mapToScene(event->pos())).toPoint());
-    Qt::DropActions dropActions = event->dropAction();
-    Qt::MouseButtons dropMouseButtons = event->mouseButtons();
-    Qt::KeyboardModifiers dropModifiers = event->keyboardModifiers();
-    QMimeData dropMimeData;
+    QPoint dropPoint(mGraphicsWidget->mapFromScene(tmpView->mapToScene(event->pos().toPoint())).toPoint());
+    Qt::DropActions dropActions = event->possibleActions();
+    Qt::MouseButtons dropMouseButtons = event->buttons();
+    Qt::KeyboardModifiers dropModifiers = event->modifiers();
+    QMimeData *dropMimeData = new QMimeData;
+    qDebug() << event->possibleActions();
 
 
     if (pMimeData->hasHtml()) { //Dropping element from web browser
@@ -499,12 +514,12 @@ void UBWidgetUniboardAPI::ProcessDropEvent(QDropEvent *event)
             sDownloadFileDesc desc;
             desc.dest = sDownloadFileDesc::graphicsWidget;
             desc.modal = true;
-            desc.url = url;
+            desc.srcUrl = url;
             desc.currentSize = 0;
             desc.name = QFileInfo(url).fileName();
             desc.totalSize = 0; // The total size will be retrieved during the download
 
-            desc.dropPoint = event->pos(); //Passing pure event point. No modifications
+            desc.dropPoint = event->pos().toPoint(); //Passing pure event point. No modifications
             desc.dropActions = dropActions;
             desc.dropMouseButtons = dropMouseButtons;
             desc.dropModifiers = dropModifiers;
@@ -536,12 +551,9 @@ void UBWidgetUniboardAPI::ProcessDropEvent(QDropEvent *event)
     }
     qDebug() << destFileName;
     QString mimeText = createMimeText(downloaded, contentType, destFileName);
-    dropMimeData.setData(tMimeText, mimeText.toAscii());
+    dropMimeData->setData(tMimeText, mimeText.toAscii());
 
-    QDropEvent readyEvent(dropPoint, dropActions, &dropMimeData, dropMouseButtons, dropModifiers);
-    //sending event to destination either it had been downloaded or not
-    QApplication::sendEvent(mGraphicsWidget->widgetWebView(),&readyEvent);
-    readyEvent.acceptProposedAction();
+    event->setMimeData(dropMimeData);
 }
 
 void UBWidgetUniboardAPI::onDownloadFinished(bool pSuccess, sDownloadFileDesc desc, QByteArray pData)
@@ -595,11 +607,11 @@ void UBWidgetUniboardAPI::onDownloadFinished(bool pSuccess, sDownloadFileDesc de
 
     //To make js interpreter accept drop event we need to generate move event first.
     QDragMoveEvent pseudoMove(dropPoint, desc.dropActions, &dropMimeData, desc.dropMouseButtons, desc.dropModifiers);
-    QApplication::sendEvent(mGraphicsWidget->widgetWebView(),&pseudoMove);
+    QApplication::sendEvent(mGraphicsWidget,&pseudoMove);
 
     QDropEvent readyEvent(dropPoint, desc.dropActions, &dropMimeData, desc.dropMouseButtons, desc.dropModifiers);
     //sending event to destination either it had been downloaded or not
-    QApplication::sendEvent(mGraphicsWidget->widgetWebView(),&readyEvent);
+    QApplication::sendEvent(mGraphicsWidget,&readyEvent);
     readyEvent.acceptProposedAction();
 }
 
@@ -729,9 +741,9 @@ void UBDocumentDatastoreAPI::removeItem(const QString& key)
 {
     mGraphicsW3CWidget->removeDatastoreEntry(key);
 }
+void
 
-
-void UBDocumentDatastoreAPI::clear()
+ UBDocumentDatastoreAPI::clear()
 {
     mGraphicsW3CWidget->removeAllDatastoreEntries();
 }
diff --git a/Sankore-3.1/src/api/UBWidgetUniboardAPI.h b/Sankore-3.1/src/api/UBWidgetUniboardAPI.h
index fb8c2bd..6b3825b 100644
--- a/Sankore-3.1/src/api/UBWidgetUniboardAPI.h
+++ b/Sankore-3.1/src/api/UBWidgetUniboardAPI.h
@@ -1,22 +1,30 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBWIDGETAPI_H
 #define UBWIDGETAPI_H
 
 #include <QtCore>
-#include <QDropEvent>
+#include <QGraphicsSceneDragDropEvent>
 
 #include "UBW3CWidgetAPI.h"
 #include "core/UBDownloadManager.h"
@@ -246,7 +254,7 @@ class UBWidgetUniboardAPI : public QObject
          * When an object is dropped on a widget, this one send us the informations to download it locally.
          * this method download the object on the widget directory and return the path of the downloaded object
          */
-        void ProcessDropEvent(QDropEvent *);
+        void ProcessDropEvent(QGraphicsSceneDragDropEvent *);
         bool isDropableData(const QMimeData *pMimeData) const;
 
 private slots:
diff --git a/Sankore-3.1/src/board/UBBoardController.cpp b/Sankore-3.1/src/board/UBBoardController.cpp
index fefb05d..d84864b 100644
--- a/Sankore-3.1/src/board/UBBoardController.cpp
+++ b/Sankore-3.1/src/board/UBBoardController.cpp
@@ -1,17 +1,25 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBBoardController.h"
 
 #include <QtGui>
@@ -38,18 +46,25 @@
 #include "gui/UBToolWidget.h"
 #include "gui/UBKeyboardPalette.h"
 #include "gui/UBMagnifer.h"
+#include "gui/UBDockPaletteWidget.h"
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
 
 #include "domain/UBGraphicsPixmapItem.h"
 #include "domain/UBGraphicsItemUndoCommand.h"
 #include "domain/UBGraphicsProxyWidget.h"
 #include "domain/UBGraphicsSvgItem.h"
 #include "domain/UBGraphicsWidgetItem.h"
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/UBGraphicsAudioItem.h"
+#include "domain/UBGraphicsMediaItem.h"
 #include "domain/UBGraphicsPDFItem.h"
-#include "domain/UBW3CWidget.h"
 #include "domain/UBGraphicsTextItem.h"
 #include "domain/UBPageSizeUndoCommand.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBItem.h"
+#include "board/UBFeaturesController.h"
+#include "domain/UBGraphicsStrokesGroup.h"
+
+#include "gui/UBFeaturesWidget.h"
 
 #include "tools/UBToolsManager.h"
 
@@ -69,12 +84,10 @@
 #include "core/UBSettings.h"
 
 #include "core/memcheck.h"
-//#include <typeinfo>
 
 UBBoardController::UBBoardController(UBMainWindow* mainWindow)
-    : QObject(mainWindow->centralWidget())
+    : UBDocumentContainer(mainWindow->centralWidget())
     , mMainWindow(mainWindow)
-    , mActiveDocument(0)
     , mActiveScene(0)
     , mActiveSceneIndex(-1)
     , mPaletteManager(0)
@@ -88,6 +101,11 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow)
     , mIsClosing(false)
     , mSystemScaleFactor(1.0)
     , mCleanupDone(false)
+    , mCacheWidgetIsEnabled(false)
+    , mDeletingSceneIndex(-1)
+    , mMovingSceneIndex(-1)
+    , mActionGroupText(tr("Group"))
+    , mActionUngroupText(tr("Ungroup"))
 {
     mZoomFactor = UBSettings::settings()->boardZoomFactor->get().toDouble();
 
@@ -98,6 +116,11 @@ UBBoardController::UBBoardController(UBMainWindow* mainWindow)
     mPenColorOnLightBackground = UBSettings::settings()->penColors(false).at(penColorIndex);
     mMarkerColorOnDarkBackground = UBSettings::settings()->markerColors(true).at(markerColorIndex);
     mMarkerColorOnLightBackground = UBSettings::settings()->markerColors(false).at(markerColorIndex);
+
+    QDesktopWidget* desktop = UBApplication::desktop();
+    int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
+    int sPixelsPerMillimeter = qRound(dpiCommon / UBGeometryUtils::inchSize);
+    UBSettings::settings()->crossSize = 10*sPixelsPerMillimeter;
 }
 
 
@@ -106,18 +129,6 @@ void UBBoardController::init()
     setupViews();
     setupToolbar();
 
-    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentWillBeDeleted(UBDocumentProxy*))
-            , this, SLOT(documentWillBeDeleted(UBDocumentProxy*)));
-
-    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int))
-            , this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
-    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneDeleted(UBDocumentProxy*, int))
-            , this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
-    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneMoved(UBDocumentProxy*, int))
-            , this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
     connect(UBApplication::undoStack, SIGNAL(canUndoChanged(bool))
             , this, SLOT(undoRedoStateChange(bool)));
 
@@ -134,12 +145,14 @@ void UBBoardController::init()
             , this, SLOT(lastWindowClosed()));
 
     connect(UBDownloadManager::downloadManager(), SIGNAL(downloadModalFinished()), this, SLOT(onDownloadModalFinished()));
-    connect(UBDownloadManager::downloadManager(), SIGNAL(addDownloadedFileToBoard(bool,QUrl,QString,QByteArray,QPointF,QSize,bool)), this, SLOT(downloadFinished(bool,QUrl,QString,QByteArray,QPointF,QSize,bool)));
+    connect(UBDownloadManager::downloadManager(), SIGNAL(addDownloadedFileToBoard(bool,QUrl,QUrl,QString,QByteArray,QPointF,QSize,bool)), this, SLOT(downloadFinished(bool,QUrl,QUrl,QString,QByteArray,QPointF,QSize,bool)));
 
     UBDocumentProxy* doc = UBPersistenceManager::persistenceManager()->createDocument();
 
     setActiveDocumentScene(doc);
 
+    connect(UBApplication::mainWindow->actionGroupItems, SIGNAL(triggered()), this, SLOT(groupButtonClicked()));
+
     undoRedoStateChange(true);
 }
 
@@ -157,20 +170,6 @@ int UBBoardController::currentPage()
     return mActiveSceneIndex + 1;
 }
 
-int UBBoardController::pageFromSceneIndex(int sceneIndex)
-{
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-        return sceneIndex;
-    return sceneIndex+1;
-}
-
-int UBBoardController::sceneIndexFromPage(int page)
-{
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
-        return page-1;
-    return page;
-}
-
 void UBBoardController::setupViews()
 {
     mControlContainer = new QWidget(mMainWindow->centralWidget());
@@ -178,7 +177,7 @@ void UBBoardController::setupViews()
     mControlLayout = new QHBoxLayout(mControlContainer);
     mControlLayout->setContentsMargins(0, 0, 0, 0);
 
-    mControlView = new UBBoardView(this, mControlContainer);
+    mControlView = new UBBoardView(this, mControlContainer, true, false);
     mControlView->setInteractive(true);
     mControlView->setMouseTracking(true);
 
@@ -374,6 +373,7 @@ void UBBoardController::connectToolbar()
     connect(mMainWindow->actionClearPage, SIGNAL(triggered()), this, SLOT(clearScene()));
     connect(mMainWindow->actionEraseItems, SIGNAL(triggered()), this, SLOT(clearSceneItems()));
     connect(mMainWindow->actionEraseAnnotations, SIGNAL(triggered()), this, SLOT(clearSceneAnnotation()));
+    connect(mMainWindow->actionEraseBackground,SIGNAL(triggered()),this,SLOT(clearSceneBackground()));
 
     connect(mMainWindow->actionUndo, SIGNAL(triggered()), UBApplication::undoStack, SLOT(undo()));
     connect(mMainWindow->actionRedo, SIGNAL(triggered()), UBApplication::undoStack, SLOT(redo()));
@@ -471,26 +471,26 @@ void UBBoardController::addScene()
     QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
     persistCurrentScene();
 
-    UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mActiveDocument, mActiveSceneIndex + 1);
-    mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    UBDocumentContainer::addPage(mActiveSceneIndex + 1);
 
-    setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+    setActiveDocumentScene(mActiveSceneIndex + 1);
     QApplication::restoreOverrideCursor();
 }
 
-
 void UBBoardController::addScene(UBGraphicsScene* scene, bool replaceActiveIfEmpty)
 {
     if (scene)
     {
         UBGraphicsScene* clone = scene->sceneDeepCopy();
 
-        if (scene->document() && (scene->document() != mActiveDocument))
+        if (scene->document() && (scene->document() != selectedDocument()))
         {
             foreach(QUrl relativeFile, scene->relativeDependencies())
             {
                 QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
-                QString target = mActiveDocument->persistencePath() + "/" + relativeFile.toString();
+                QString target = selectedDocument()->persistencePath() + "/" + relativeFile.toString();
 
                 QFileInfo fi(target);
                 QDir d = fi.dir();
@@ -502,17 +502,16 @@ void UBBoardController::addScene(UBGraphicsScene* scene, bool replaceActiveIfEmp
 
         if (replaceActiveIfEmpty && mActiveScene->isEmpty())
         {
-            UBPersistenceManager::persistenceManager()->persistDocumentScene(mActiveDocument, clone, mActiveSceneIndex);
-            setActiveDocumentScene(mActiveDocument, mActiveSceneIndex);
+            setActiveDocumentScene(mActiveSceneIndex);
         }
         else
         {
             persistCurrentScene();
-            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(mActiveDocument, clone, mActiveSceneIndex + 1);
-            setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
+            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(selectedDocument(), clone, mActiveSceneIndex + 1);
+            setActiveDocumentScene(mActiveSceneIndex + 1);
         }
 
-        mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
     }
 }
 
@@ -527,22 +526,215 @@ void UBBoardController::addScene(UBDocumentProxy* proxy, int sceneIndex, bool re
     }
 }
 
+void UBBoardController::duplicateScene(int nIndex)
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    persistCurrentScene();
+
+    QList<int> scIndexes;
+    scIndexes << nIndex;
+    duplicatePages(scIndexes);
+    insertThumbPage(nIndex);
+    emit documentThumbnailsUpdated(this);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+    setActiveDocumentScene(nIndex + 1);
+    QApplication::restoreOverrideCursor();
+
+    emit pageChanged();
+}
 
 void UBBoardController::duplicateScene()
 {
     if (UBApplication::applicationController->displayMode() != UBApplicationController::Board)
         return;
+    duplicateScene(mActiveSceneIndex);
+}
 
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    persistCurrentScene();
+UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
+{
+    if (!item)
+        return NULL;
 
-    UBPersistenceManager::persistenceManager()->duplicateDocumentScene(mActiveDocument, mActiveSceneIndex);
-    mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    UBGraphicsItem *retItem = NULL;
 
-    setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
-    QApplication::restoreOverrideCursor();
+    mLastCreatedItem = NULL;
 
-    emit pageChanged();
+    QUrl sourceUrl;
+    QByteArray pData;
+
+    //common parameters for any item
+    QPointF itemPos;
+    QSizeF itemSize;
+
+    QGraphicsItem *commonItem = dynamic_cast<QGraphicsItem*>(item);
+    if (commonItem)
+    {
+        qreal shifting = UBSettings::settings()->objectFrameWidth;
+        itemPos = commonItem->pos() + QPointF(shifting,shifting);
+        itemSize = commonItem->boundingRect().size();
+        commonItem->setSelected(false);
+    }
+
+    UBMimeType::Enum itemMimeType;
+
+    QString srcFile = item->sourceUrl().toLocalFile();
+    if (srcFile.isEmpty())
+        srcFile = item->sourceUrl().toString();
+
+    QString contentTypeHeader;
+    if (!srcFile.isEmpty())
+        contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile);
+
+    if(NULL != qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(commonItem))
+        itemMimeType = UBMimeType::Group;
+    else
+        itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader);
+
+    switch(static_cast<int>(itemMimeType))
+    {
+    case UBMimeType::AppleWidget:
+    case UBMimeType::W3CWidget:
+        {
+            UBGraphicsWidgetItem *witem = dynamic_cast<UBGraphicsWidgetItem*>(item);
+            if (witem)
+            {
+                sourceUrl = witem->getOwnFolder();
+            }
+        }break;
+
+    case UBMimeType::Video:
+    case UBMimeType::Audio:
+        {
+            UBGraphicsMediaItem *mitem = dynamic_cast<UBGraphicsMediaItem*>(item);
+            if (mitem)
+            {
+                sourceUrl = mitem->mediaFileUrl();
+                if (bAsync)
+                {
+                    downloadURL(sourceUrl, srcFile, itemPos, QSize(itemSize.width(), itemSize.height()), false, false);
+                    return NULL; // async operation
+                }
+            }
+        }break;
+
+    case UBMimeType::VectorImage:
+        {
+            UBGraphicsSvgItem *viitem = dynamic_cast<UBGraphicsSvgItem*>(item);
+            if (viitem)
+            {
+                pData = viitem->fileData();
+                sourceUrl = item->sourceUrl();
+            }
+        }break;
+
+    case UBMimeType::RasterImage:
+        {
+            UBGraphicsPixmapItem *pixitem = dynamic_cast<UBGraphicsPixmapItem*>(item);
+            if (pixitem)
+            {
+                 QBuffer buffer(&pData);
+                 buffer.open(QIODevice::WriteOnly);
+                 QString format = UBFileSystemUtils::extension(item->sourceUrl().toLocalFile());
+                 pixitem->pixmap().save(&buffer, format.toLatin1());
+            }
+        }break;
+
+    case UBMimeType::Group:
+    {
+        UBGraphicsGroupContainerItem* groupItem = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
+        UBGraphicsGroupContainerItem* duplicatedGroup = NULL;
+
+        QList<QGraphicsItem*> duplicatedItems;
+        QList<QGraphicsItem*> children = groupItem->childItems();
+          
+        mActiveScene->setURStackEnable(false);
+        foreach(QGraphicsItem* pIt, children){
+            UBItem* pItem = dynamic_cast<UBItem*>(pIt);
+            if(pItem){ // we diong sync duplication of all childs.
+                QGraphicsItem * itemToGroup = dynamic_cast<QGraphicsItem *>(duplicateItem(pItem, false));
+                if (itemToGroup)
+                    duplicatedItems.append(itemToGroup);
+            }
+        }
+        duplicatedGroup = mActiveScene->createGroup(duplicatedItems);
+        duplicatedGroup->setTransform(groupItem->transform());
+        groupItem->setSelected(false);
+
+        retItem = dynamic_cast<UBGraphicsItem *>(duplicatedGroup);
+
+        QGraphicsItem * itemToAdd = dynamic_cast<QGraphicsItem *>(retItem);
+        if (itemToAdd)
+        {
+            mActiveScene->addItem(itemToAdd);
+            itemToAdd->setSelected(true);
+        }
+        mActiveScene->setURStackEnable(true);
+    }break;
+
+    case UBMimeType::UNKNOWN:
+        {
+            QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy());
+            if (gitem)
+            {
+                mActiveScene->addItem(gitem);
+                gitem->setPos(itemPos);
+                mLastCreatedItem = gitem;
+                gitem->setSelected(true);
+            }
+            retItem = dynamic_cast<UBGraphicsItem *>(gitem);
+        }break;
+    }
+
+    if (retItem)
+    {
+        QGraphicsItem *graphicsRetItem = dynamic_cast<QGraphicsItem *>(retItem);
+        if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
+             UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, 0, graphicsRetItem);
+             UBApplication::undoStack->push(uc);
+        }
+        return retItem;
+    }
+
+    UBItem *createdItem = downloadFinished(true, sourceUrl, srcFile, contentTypeHeader, pData, itemPos, QSize(itemSize.width(), itemSize.height()), false);
+    if (createdItem)
+    {
+        createdItem->setSourceUrl(item->sourceUrl());
+        item->copyItemParameters(createdItem);
+
+        QGraphicsItem *createdGitem = dynamic_cast<QGraphicsItem*>(createdItem);
+        if (createdGitem)
+            createdGitem->setPos(itemPos);
+        mLastCreatedItem = dynamic_cast<QGraphicsItem*>(createdItem);
+        mLastCreatedItem->setSelected(true);
+
+        retItem = dynamic_cast<UBGraphicsItem *>(createdItem);
+    }
+
+    return retItem;
+}
+
+void UBBoardController::deleteScene(int nIndex)
+{
+    if (selectedDocument()->pageCount()>=2)
+    {
+        mDeletingSceneIndex = nIndex;
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistCurrentScene();
+        showMessage(tr("Delete page %1 from document").arg(nIndex), true);
+
+        QList<int> scIndexes;
+        scIndexes << nIndex;
+        deletePages(scIndexes);
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+
+        if (nIndex >= pageCount())
+            nIndex = pageCount()-1;
+        setActiveDocumentScene(nIndex);
+        showMessage(tr("Page %1 deleted").arg(nIndex));
+        QApplication::restoreOverrideCursor();
+        mDeletingSceneIndex = -1;
+    }
 }
 
 
@@ -551,7 +743,7 @@ void UBBoardController::clearScene()
     if (mActiveScene)
     {
         freezeW3CWidgets(true);
-        mActiveScene->clearItemsAndAnnotations();
+        mActiveScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations);
         updateActionStates();
     }
 }
@@ -562,7 +754,7 @@ void UBBoardController::clearSceneItems()
     if (mActiveScene)
     {
         freezeW3CWidgets(true);
-        mActiveScene->clearItems();
+        mActiveScene->clearContent(UBGraphicsScene::clearItems);
         updateActionStates();
     }
 }
@@ -572,15 +764,23 @@ void UBBoardController::clearSceneAnnotation()
 {
     if (mActiveScene)
     {
-        mActiveScene->clearAnnotations();
+        mActiveScene->clearContent(UBGraphicsScene::clearAnnotations);
         updateActionStates();
     }
 }
 
+void UBBoardController::clearSceneBackground()
+{
+    if (mActiveScene)
+    {
+        mActiveScene->clearContent(UBGraphicsScene::clearBackground);
+        updateActionStates();
+    }
+}
 
 void UBBoardController::showDocumentsDialog()
 {
-    if (mActiveDocument)
+    if (selectedDocument())
         persistCurrentScene();
 
     UBApplication::mainWindow->actionLibrary->setChecked(false);
@@ -675,9 +875,16 @@ void UBBoardController::zoom(const qreal ratio, QPointF scenePoint)
     QPointF offset = scenePoint - viewCenter;
     QPointF scalledOffset = offset / ratio;
 
-    mControlView->scale(ratio, ratio);
+    qreal currentZoom = ratio * mControlView->viewportTransform().m11() / mSystemScaleFactor;
 
-    qreal currentZoom = mControlView->viewportTransform().m11() / mSystemScaleFactor;
+    qreal usedRatio = ratio;
+    if (currentZoom > UB_MAX_ZOOM)
+    {
+        currentZoom = UB_MAX_ZOOM;
+        usedRatio = currentZoom * mSystemScaleFactor / mControlView->viewportTransform().m11();
+    }
+
+    mControlView->scale(usedRatio, usedRatio);
 
     QPointF newCenter = scenePoint - scalledOffset;
 
@@ -707,7 +914,7 @@ void UBBoardController::previousScene()
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
         persistCurrentScene();
-        setActiveDocumentScene(mActiveDocument, mActiveSceneIndex - 1);
+        setActiveDocumentScene(mActiveSceneIndex - 1);
         QApplication::restoreOverrideCursor();
     }
 
@@ -718,11 +925,11 @@ void UBBoardController::previousScene()
 
 void UBBoardController::nextScene()
 {
-    if (mActiveSceneIndex < mActiveDocument->pageCount() - 1)
+    if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
         persistCurrentScene();
-        setActiveDocumentScene(mActiveDocument, mActiveSceneIndex + 1);
+        setActiveDocumentScene(mActiveSceneIndex + 1);
         QApplication::restoreOverrideCursor();
     }
 
@@ -737,7 +944,7 @@ void UBBoardController::firstScene()
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
         persistCurrentScene();
-        setActiveDocumentScene(mActiveDocument, 0);
+        setActiveDocumentScene(0);
         QApplication::restoreOverrideCursor();
     }
 
@@ -748,11 +955,11 @@ void UBBoardController::firstScene()
 
 void UBBoardController::lastScene()
 {
-    if (mActiveSceneIndex < mActiveDocument->pageCount() - 1)
+    if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
         persistCurrentScene();
-        setActiveDocumentScene(mActiveDocument, mActiveDocument->pageCount() - 1);
+        setActiveDocumentScene(selectedDocument()->pageCount() - 1);
         QApplication::restoreOverrideCursor();
     }
 
@@ -760,20 +967,52 @@ void UBBoardController::lastScene()
     emit pageChanged();
 }
 
+void UBBoardController::groupButtonClicked()
+{
+    QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
+    QList<QGraphicsItem*> selItems = activeScene()->selectedItems();
+    if (!selItems.count()) {
+        qDebug() << "Got grouping request when there is no any selected item on the scene";
+        return;
+    }
+
+    if (groupAction->text() == mActionGroupText) { //The only way to get information from item, considering using smth else
+        UBGraphicsGroupContainerItem *groupItem = activeScene()->createGroup(selItems);
+        groupItem->setSelected(true);
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
 
-void UBBoardController::downloadURL(const QUrl& url, const QPointF& pPos, const QSize& pSize, bool isBackground)
+    }
+    else if (groupAction->text() == mActionUngroupText) {
+        //Considering one selected item and it's a group
+        if (selItems.count() > 1)
+        {
+            qDebug() << "can't make sense of ungrouping more then one item. Grouping action should be performed for that purpose";
+            return;
+        }
+        UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(selItems.first());
+        if (currentGroup) {
+            currentGroup->destroy();
+        }
+    }
+}
+
+void UBBoardController::downloadURL(const QUrl& url, QString contentSourceUrl, const QPointF& pPos, const QSize& pSize, bool isBackground, bool internalData)
 {
     qDebug() << "something has been dropped on the board! Url is: " << url.toString();
     QString sUrl = url.toString();
 
+    QGraphicsItem *oldBackgroundObject = NULL;
+    if (isBackground)
+        oldBackgroundObject = mActiveScene->backgroundObject();
+
     if(sUrl.startsWith("uniboardTool://"))
     {
-        downloadFinished(true, url, "application/vnd.mnemis-uniboard-tool", QByteArray(), pPos, pSize, isBackground);
+        downloadFinished(true, url, QUrl(), "application/vnd.mnemis-uniboard-tool", QByteArray(), pPos, pSize, isBackground);
     }
     else if (sUrl.startsWith("file://") || sUrl.startsWith("/"))
     {
-        QString fileName = url.toLocalFile();
-
+        QUrl formedUrl = sUrl.startsWith("file://") ? url : QUrl::fromLocalFile(sUrl);
+        QString fileName = formedUrl.toLocalFile();
         QString contentType = UBFileSystemUtils::mimeTypeFromFileName(fileName);
 
         bool shouldLoadFileData =
@@ -781,24 +1020,44 @@ void UBBoardController::downloadURL(const QUrl& url, const QPointF& pPos, const
                 || contentType.startsWith("application/widget")
                 || contentType.startsWith("application/vnd.apple-widget");
 
-        QFile file(fileName);
-
-        if (shouldLoadFileData)
+       if (shouldLoadFileData)
+       {
+            QFile file(fileName);
             file.open(QIODevice::ReadOnly);
-
-        downloadFinished(true, url, contentType, file.readAll(), pPos, pSize, isBackground);
-
-        if (shouldLoadFileData)
+            downloadFinished(true, formedUrl, QUrl(), contentType, file.readAll(), pPos, pSize, isBackground, internalData);
             file.close();
+       }
+       else
+       {
+           // media items should be copyed in separate thread
+
+           sDownloadFileDesc desc;
+           desc.modal = false;
+           desc.srcUrl = sUrl;
+           desc.originalSrcUrl = contentSourceUrl;
+           desc.currentSize = 0;
+           desc.name = QFileInfo(url.toString()).fileName();
+           desc.totalSize = 0; // The total size will be retrieved during the download
+           desc.pos = pPos;
+           desc.size = pSize;
+           desc.isBackground = isBackground;
+
+           UBDownloadManager::downloadManager()->addFileToDownload(desc);
+       }
     }
     else
     {
+        QString urlString = url.toString();
+        int parametersStringPosition = urlString.indexOf("?");
+        if(parametersStringPosition != -1)
+            urlString = urlString.left(parametersStringPosition);
+
         // When we fall there, it means that we are dropping something from the web to the board
         sDownloadFileDesc desc;
         desc.modal = true;
-        desc.url = url.toString();
+        desc.srcUrl = urlString;
         desc.currentSize = 0;
-        desc.name = QFileInfo(url.toString()).fileName();
+        desc.name = QFileInfo(urlString).fileName();
         desc.totalSize = 0; // The total size will be retrieved during the download
         desc.pos = pPos;
         desc.size = pSize;
@@ -806,42 +1065,65 @@ void UBBoardController::downloadURL(const QUrl& url, const QPointF& pPos, const
 
         UBDownloadManager::downloadManager()->addFileToDownload(desc);
     }
+
+    if (isBackground && oldBackgroundObject != mActiveScene->backgroundObject())
+    {
+        if (mActiveScene->isURStackIsEnabled()) { //should be deleted after scene own undo stack implemented
+            UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(mActiveScene, oldBackgroundObject, mActiveScene->backgroundObject());
+            UBApplication::undoStack->push(uc);
+        }
+    }
+
+
 }
 
 
-void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground)
+UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader,
+                                            QByteArray pData, QPointF pPos, QSize pSize,
+                                            bool isBackground, bool internalData)
 {
     QString mimeType = pContentTypeHeader;
 
     // In some cases "image/jpeg;charset=" is retourned by the drag-n-drop. That is
     // why we will check if an ; exists and take the first part (the standard allows this kind of mimetype)
+    if(mimeType.isEmpty())
+      mimeType = UBFileSystemUtils::mimeTypeFromFileName(sourceUrl.toString());
+
     int position=mimeType.indexOf(";");
     if(position != -1)
         mimeType=mimeType.left(position);
 
+    UBMimeType::Enum itemMimeType = UBFileSystemUtils::mimeTypeFromString(mimeType);
+
     if (!pSuccess)
     {
-        UBApplication::showMessage(tr("Downloading content %1 failed").arg(sourceUrl.toString()));
-        return;
+        showMessage(tr("Downloading content %1 failed").arg(sourceUrl.toString()));
+        return NULL;
     }
 
+
+    mActiveScene->deselectAllItems();
+
     if (!sourceUrl.toString().startsWith("file://") && !sourceUrl.toString().startsWith("uniboardTool://"))
-        UBApplication::showMessage(tr("Download finished"));
+        showMessage(tr("Download finished"));
 
-    if (mimeType == "image/jpeg"
-            || mimeType == "image/png"
-            || mimeType == "image/gif"
-            || mimeType == "image/tiff"
-            || mimeType == "image/bmp")
+    if (UBMimeType::RasterImage == itemMimeType)
     {
 
         qDebug() << "accepting mime type" << mimeType << "as raster image";
 
-        QImage img;
-        img.loadFromData(pData);
-        QPixmap pix = QPixmap::fromImage(img);
 
-        UBGraphicsPixmapItem* pixItem = mActiveScene->addPixmap(pix, pPos, 1.);
+        QPixmap pix;
+        if(pData.length() == 0){
+            pix.load(sourceUrl.toLocalFile());
+        }
+        else{
+            QImage img;
+            img.loadFromData(pData);
+            pix = QPixmap::fromImage(img);
+        }
+
+        UBGraphicsPixmapItem* pixItem = mActiveScene->addPixmap(pix, NULL, pPos, 1.);
         pixItem->setSourceUrl(sourceUrl);
 
         if (isBackground)
@@ -851,15 +1133,17 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
         else
         {
             mActiveScene->scaleToFitDocumentSize(pixItem, true, UBSettings::objectInControlViewMargin);
-            pixItem->setSelected(true);
             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+            pixItem->setSelected(true);
         }
+
+        return pixItem;
     }
-    else if (mimeType == "image/svg+xml")
+    else if (UBMimeType::VectorImage == itemMimeType)
     {
         qDebug() << "accepting mime type" << mimeType << "as vecto image";
 
-        UBGraphicsSvgItem* svgItem = mActiveScene->addSvg(sourceUrl, pPos);
+        UBGraphicsSvgItem* svgItem = mActiveScene->addSvg(sourceUrl, pPos, pData);
         svgItem->setSourceUrl(sourceUrl);
 
         if (isBackground)
@@ -869,11 +1153,13 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
         else
         {
             mActiveScene->scaleToFitDocumentSize(svgItem, true, UBSettings::objectInControlViewMargin);
-            svgItem->setSelected(true);
             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+            svgItem->setSelected(true);
         }
+
+        return svgItem;
     }
-    else if (mimeType == "application/vnd.apple-widget") //mime type invented by us :-(
+    else if (UBMimeType::AppleWidget == itemMimeType) //mime type invented by us :-(
     {
         qDebug() << "accepting mime type" << mimeType << "as Apple widget";
 
@@ -896,8 +1182,10 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
         {
             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
         }
+
+        return appleWidgetItem;
     }
-    else if (mimeType == "application/widget")
+    else if (UBMimeType::W3CWidget == itemMimeType)
     {
         qDebug() << "accepting mime type" << mimeType << "as W3C widget";
         QUrl widgetUrl = sourceUrl;
@@ -917,67 +1205,99 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
         {
             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
         }
+
+        return w3cWidgetItem;
     }
-    else if (mimeType.startsWith("video/"))
+    else if (UBMimeType::Video == itemMimeType)
     {
         qDebug() << "accepting mime type" << mimeType << "as video";
 
-        UBGraphicsVideoItem *videoItem = 0;
-
+        UBGraphicsMediaItem *mediaVideoItem = 0;
+        QUuid uuid = QUuid::createUuid();
         if (pData.length() > 0)
         {
-            QUuid uuid = QUuid::createUuid();
-
-            QUrl url = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
-                                           ->addVideoFileToDocument(mActiveDocument, sourceUrl, pData, uuid));
+            QString destFile;
+            bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+                sourceUrl.toString(),
+                UBPersistenceManager::videoDirectory,
+                uuid,
+                destFile,
+                &pData);
+            if (!b)
+            {
+                showMessage(tr("Add file operation failed: file copying error"));
+                return NULL;
+            }
 
-            videoItem = mActiveScene->addVideo(url, false, pPos);
+            QUrl url = QUrl::fromLocalFile(destFile);
 
-            videoItem->setSourceUrl(sourceUrl);
-            videoItem->setUuid(uuid);
+            mediaVideoItem = mActiveScene->addMedia(url, false, pPos);
         }
         else
         {
-            videoItem = addVideo(sourceUrl, false, pPos);
+            qDebug() << sourceUrl.toString();
+            mediaVideoItem = addVideo(sourceUrl, false, pPos, true);
         }
 
-        if(videoItem){
-            connect(this, SIGNAL(activeSceneChanged()), videoItem, SLOT(activeSceneChanged()));
+        if(mediaVideoItem){
+            if (contentUrl.isEmpty())
+                mediaVideoItem->setSourceUrl(sourceUrl);
+            else
+                mediaVideoItem->setSourceUrl(contentUrl);
+            mediaVideoItem->setUuid(uuid);
+            connect(this, SIGNAL(activeSceneChanged()), mediaVideoItem, SLOT(activeSceneChanged()));
         }
 
         UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+        return mediaVideoItem;
     }
-    else if (mimeType.startsWith("audio/"))
+    else if (UBMimeType::Audio == itemMimeType)
     {
         qDebug() << "accepting mime type" << mimeType << "as audio";
 
-        UBGraphicsAudioItem *audioItem = 0;
+        UBGraphicsMediaItem *audioMediaItem = 0;
 
+        QUuid uuid = QUuid::createUuid();
         if (pData.length() > 0)
         {
-            QUuid uuid = QUuid::createUuid();
-
-            QUrl url = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
-                                           ->addAudioFileToDocument(mActiveDocument, sourceUrl, pData, uuid));
+            QString destFile;
+            bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+                sourceUrl.toString(),
+                UBPersistenceManager::audioDirectory,
+                uuid,
+                destFile,
+                &pData);
+            if (!b)
+            {
+                showMessage(tr("Add file operation failed: file copying error"));
+                return NULL;
+            }
 
-            audioItem = mActiveScene->addAudio(url, false, pPos);
+            QUrl url = QUrl::fromLocalFile(destFile);
 
-            audioItem->setSourceUrl(sourceUrl);
-            audioItem->setUuid(uuid);
+            audioMediaItem = mActiveScene->addMedia(url, false, pPos);
         }
         else
         {
-            audioItem = addAudio(sourceUrl, false, pPos);
+            audioMediaItem = addAudio(sourceUrl, false, pPos, true);
         }
 
-        if(audioItem){
-            connect(this, SIGNAL(activeSceneChanged()), audioItem, SLOT(activeSceneChanged()));
+        if(audioMediaItem){
+            if (contentUrl.isEmpty())
+                audioMediaItem->setSourceUrl(sourceUrl);
+            else
+                audioMediaItem->setSourceUrl(contentUrl);
+            audioMediaItem->setUuid(uuid);
+            connect(this, SIGNAL(activeSceneChanged()), audioMediaItem, SLOT(activeSceneChanged()));
         }
 
         UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+        return audioMediaItem;
     }
 
-    else if (mimeType.startsWith("application/x-shockwave-flash"))
+    else if (UBMimeType::Flash == itemMimeType)
     {
 
         qDebug() << "accepting mime type" << mimeType << "as flash";
@@ -1009,46 +1329,54 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
         else
             size = mActiveScene->nominalSize() * .8;
 
-        QString widgetUrl = UBW3CWidget::createNPAPIWrapper(sUrl, mimeType, size);
+        Q_UNUSED(internalData)
+
+        QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(sUrl, mimeType, size);
+        emit npapiWidgetCreated(widgetUrl);
 
         if (widgetUrl.length() > 0)
         {
             UBGraphicsWidgetItem *widgetItem = mActiveScene->addW3CWidget(QUrl::fromLocalFile(widgetUrl), pPos);
-
-            widgetItem->setSourceUrl(sourceUrl);
+            widgetItem->setUuid(QUuid::createUuid());
+            widgetItem->setSourceUrl(QUrl::fromLocalFile(widgetUrl));
 
             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+            return widgetItem;
         }
 
         if (eduMediaFile)
             delete eduMediaFile;
 
     }
-    else if (mimeType.startsWith("application/pdf"))
+    else if (UBMimeType::PDF == itemMimeType)
     {
         qDebug() << "accepting mime type" << mimeType << "as PDF";
         qDebug() << "pdf data length: " << pData.size();
         qDebug() << "sourceurl : " + sourceUrl.toString();
         int result = 0;
         if(!sourceUrl.isEmpty()){
-            QFile sourceFile(sourceUrl.toLocalFile());
-            result = UBDocumentManager::documentManager()->addFileToDocument(mActiveDocument, sourceFile);
+            QStringList fileNames;
+            fileNames << sourceUrl.toLocalFile();
+            result = UBDocumentManager::documentManager()->addFilesToDocument(selectedDocument(), fileNames);
         }
         else if(pData.size()){
             QTemporaryFile pdfFile("XXXXXX.pdf");
             if (pdfFile.open())
             {
                 pdfFile.write(pData);
-                result = UBDocumentManager::documentManager()->addFileToDocument(mActiveDocument, pdfFile);
+                QStringList fileNames;
+                fileNames << pdfFile.fileName();
+                result = UBDocumentManager::documentManager()->addFilesToDocument(selectedDocument(), fileNames);
                 pdfFile.close();
             }
         }
 
         if (result){
-            mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
         }
     }
-    else if (mimeType.startsWith("application/vnd.mnemis-uniboard-tool"))
+    else if (UBMimeType::UniboardTool == itemMimeType)
     {
         qDebug() << "accepting mime type" << mimeType << "as Uniboard Tool";
 
@@ -1092,9 +1420,14 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
             mActiveScene->addMask(pPos);
             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
         }
+        else if (sourceUrl.toString() == UBToolsManager::manager()->aristo.id)
+        {
+            mActiveScene->addAristo(pPos);
+            UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+        }
         else
         {
-            UBApplication::showMessage(tr("Unknown tool type %1").arg(sourceUrl.toString()));
+            showMessage(tr("Unknown tool type %1").arg(sourceUrl.toString()));
         }
     }
     else if (sourceUrl.toString().contains("edumedia-sciences.com"))
@@ -1130,7 +1463,7 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
                         else
                             size = mActiveScene->nominalSize() * .8;
 
-                        QString widgetUrl = UBW3CWidget::createNPAPIWrapper(swfFile, "application/x-shockwave-flash", size);
+                        QString widgetUrl = UBGraphicsW3CWidgetItem::createNPAPIWrapper(swfFile, "application/x-shockwave-flash", size);
 
                         if (widgetUrl.length() > 0)
                         {
@@ -1139,6 +1472,8 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
                             widgetItem->setSourceUrl(sourceUrl);
 
                             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+                            return widgetItem;
                         }
                     }
                 }
@@ -1147,17 +1482,23 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
     }
     else
     {
-        UBApplication::showMessage(tr("Unknown content type %1").arg(pContentTypeHeader));
+        showMessage(tr("Unknown content type %1").arg(pContentTypeHeader));
         qWarning() << "ignoring mime type" << pContentTypeHeader ;
     }
+
+    return NULL;
 }
 
+void UBBoardController::setActiveDocumentScene(int pSceneIndex)
+{
+    setActiveDocumentScene(selectedDocument(), pSceneIndex);
+}
 
-void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, const int pSceneIndex)
+void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, const int pSceneIndex, bool forceReload)
 {
     saveViewState();
 
-    bool documentChange = mActiveDocument != pDocumentProxy;
+    bool documentChange = selectedDocument() != pDocumentProxy;
 
     int index = pSceneIndex;
     int sceneCount = pDocumentProxy->pageCount();
@@ -1172,14 +1513,13 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
     {
         freezeW3CWidgets(true);
 
-        if(sceneChange)
-            emit activeSceneWillChange();
+        persistCurrentScene();
 
         ClearUndoStack();
 
         mActiveScene = targetScene;
-        mActiveDocument = pDocumentProxy;
         mActiveSceneIndex = index;
+        setDocument(pDocumentProxy, forceReload);
 
         updateSystemScaleFactor();
 
@@ -1204,12 +1544,9 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
 
     if(documentChange)
     {
-        emit activeDocumentChanged();
         UBGraphicsTextItem::lastUsedTextColor = QColor();
     }
 
-    // Notify the navigator palette that the document has changed
-    emit setDocOnPageNavigator(pDocumentProxy);
 
     if (sceneChange)
     {
@@ -1218,56 +1555,85 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
     }
 }
 
-void UBBoardController::ClearUndoStack()
+
+void UBBoardController::moveSceneToIndex(int source, int target)
 {
-    QSet<QGraphicsItem*> uniqueItems;
-    // go through all stack command
-    for(int i = 0; i < UBApplication::undoStack->count(); i++)
+    if (selectedDocument())
     {
 
-        UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i);
-        if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM)
-            continue;
+        persistCurrentScene();
 
-        UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i);
+        UBDocumentContainer::movePageToIndex(source, target);
 
-        // go through all added and removed objects, for create list of unique objects
-        QSetIterator<QGraphicsItem*> itAdded(cmd->GetAddedList());
-        while (itAdded.hasNext())
-        {
-            QGraphicsItem* item = itAdded.next();
-            if( !uniqueItems.contains(item) )
-                uniqueItems.insert(item);
-        }
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        UBMetadataDcSubsetAdaptor::persist(selectedDocument());
+        mMovingSceneIndex = source;
+        setActiveDocumentScene(target);
+        mMovingSceneIndex = -1;
 
-        QSetIterator<QGraphicsItem*> itRemoved(cmd->GetRemovedList());
-        while (itRemoved.hasNext())
-        {
-            QGraphicsItem* item = itRemoved.next();
-            if( !uniqueItems.contains(item) )
-                uniqueItems.insert(item);
-        }
     }
+}
+
+void UBBoardController::ClearUndoStack()
+{
+// The code has been removed because it leads to a strange error and because the final goal has never been
+// reached on tests and sound a little bit strange.
+// Strange error: item->scene() crashes the application because item doesn't implement scene() method. I'm
+// not able to give all the steps to reproduce this error sistematically but is quite frequent (~ twice per utilisation hours)
+// strange goal: if item is on the undocommand, the item->scene() is null and the item is not on the deleted scene item list then
+// then it's deleted.
+
+    //    QSet<QGraphicsItem*> uniqueItems;
+//    // go through all stack command
+//    for(int i = 0; i < UBApplication::undoStack->count(); i++)
+//    {
+
+//        UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i);
+//        if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM)
+//            continue;
+
+//        UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i);
+
+//        // go through all added and removed objects, for create list of unique objects
+//        // grouped items will be deleted by groups, so we don't need do delete that items.
+//        QSetIterator<QGraphicsItem*> itAdded(cmd->GetAddedList());
+//        while (itAdded.hasNext())
+//        {
+//            QGraphicsItem* item = itAdded.next();
+//            if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
+//                uniqueItems.insert(item);
+//        }
+
+//        QSetIterator<QGraphicsItem*> itRemoved(cmd->GetRemovedList());
+//        while (itRemoved.hasNext())
+//        {
+//            QGraphicsItem* item = itRemoved.next();
+//            if( !uniqueItems.contains(item) && !(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()))
+//                uniqueItems.insert(item);
+//        }
+//    }
+
+//    // go through all unique items, and check, ot on scene, or not.
+//    // if not on scene, than item can be deleted
+
+//    QSetIterator<QGraphicsItem*> itUniq(uniqueItems);
+//    while (itUniq.hasNext())
+//    {
+//        QGraphicsItem* item = itUniq.next();
+//        UBGraphicsScene *scene = NULL;
+//        if (item->scene()) {
+//            scene = dynamic_cast<UBGraphicsScene*>(item->scene());
+//        }
+//        if(!scene)
+//        {
+//           if (!mActiveScene->deleteItem(item))
+//               delete item;
+//        }
+//    }
 
     // clear stack, and command list
     UBApplication::undoStack->clear();
 
-    // go through all unique items, and check, ot on scene, or not.
-    // if not on scene, than item can be deleted
-
-    QSetIterator<QGraphicsItem*> itUniq(uniqueItems);
-    while (itUniq.hasNext())
-    {
-        QGraphicsItem* item = itUniq.next();
-        if (item->scene()) {
-            UBGraphicsScene *scene = dynamic_cast<UBGraphicsScene*>(item->scene());
-            if(!scene)
-            {
-                mActiveScene->deleteItem(item);
-            }
-        }
-    }
-
 }
 
 void UBBoardController::adjustDisplayViews()
@@ -1275,7 +1641,7 @@ void UBBoardController::adjustDisplayViews()
     if (UBApplication::applicationController)
     {
         UBApplication::applicationController->adjustDisplayView();
-        UBApplication::applicationController->adjustPreviousViews(mActiveSceneIndex, mActiveDocument);
+        UBApplication::applicationController->adjustPreviousViews(mActiveSceneIndex, selectedDocument());
     }
 }
 
@@ -1298,7 +1664,6 @@ void UBBoardController::changeBackground(bool isDark, bool isCrossed)
     }
 }
 
-
 void UBBoardController::boardViewResized(QResizeEvent* event)
 {
     Q_UNUSED(event);
@@ -1317,15 +1682,19 @@ void UBBoardController::boardViewResized(QResizeEvent* event)
 
     mControlView->centerOn(0,0);
 
+    if (mDisplayView)
+        mDisplayView->centerOn(0,0);
+
     mPaletteManager->containerResized();
 
+    UBApplication::boardController->controlView()->scene()->moveMagnifier();
 
 }
 
 
 void UBBoardController::documentWillBeDeleted(UBDocumentProxy* pProxy)
 {
-    if (mActiveDocument == pProxy)
+    if (selectedDocument() == pProxy)
     {
         if (!mIsClosing)
             setActiveDocumentScene(UBPersistenceManager::persistenceManager()->createDocument());
@@ -1355,6 +1724,7 @@ void UBBoardController::setDisabled(bool disable)
 void UBBoardController::selectionChanged()
 {
     updateActionStates();
+    emit pageSelectionChanged(activeSceneIndex());
 }
 
 
@@ -1371,18 +1741,12 @@ void UBBoardController::undoRedoStateChange(bool canUndo)
 
 void UBBoardController::updateActionStates()
 {
-    mMainWindow->actionBack->setEnabled(mActiveDocument && (mActiveSceneIndex > 0));
-    mMainWindow->actionForward->setEnabled(mActiveDocument && (mActiveSceneIndex < mActiveDocument->pageCount() - 1));
+    mMainWindow->actionBack->setEnabled(selectedDocument() && (mActiveSceneIndex > 0));
+    mMainWindow->actionForward->setEnabled(selectedDocument() && (mActiveSceneIndex < selectedDocument()->pageCount() - 1));
     mMainWindow->actionErase->setEnabled(mActiveScene && !mActiveScene->isEmpty());
 }
 
 
-UBDocumentProxy* UBBoardController::activeDocument() const
-{
-    return mActiveDocument;
-}
-
-
 UBGraphicsScene* UBBoardController::activeScene() const
 {
     return mActiveScene;
@@ -1399,9 +1763,9 @@ void UBBoardController::documentSceneChanged(UBDocumentProxy* pDocumentProxy, in
 {
     Q_UNUSED(pIndex);
 
-    if(mActiveDocument == pDocumentProxy)
+    if(selectedDocument() == pDocumentProxy)
     {
-        setActiveDocumentScene(mActiveDocument, mActiveSceneIndex);
+        setActiveDocumentScene(mActiveSceneIndex);
     }
 }
 
@@ -1416,9 +1780,12 @@ void UBBoardController::lastWindowClosed()
 {
     if (!mCleanupDone)
     {
-        if (mActiveDocument->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()))
+        bool teacherGuideModified = false;
+        if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget())
+            teacherGuideModified = UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
+        if (selectedDocument()->pageCount() == 1 && (!mActiveScene || mActiveScene->isEmpty()) && !teacherGuideModified)
         {
-            UBPersistenceManager::persistenceManager()->deleteDocument(mActiveDocument);
+            UBPersistenceManager::persistenceManager()->deleteDocument(selectedDocument());
         }
         else
         {
@@ -1489,69 +1856,35 @@ qreal UBBoardController::currentZoom()
         return 1.0;
 }
 
-
-UBToolWidget* UBBoardController::addTool(const QUrl& toolUrl)
-{
-    return addTool(toolUrl, mControlView->mapToScene(mControlView->rect().center()));
-}
-
-
-UBToolWidget* UBBoardController::addTool(const QUrl& toolUrl, QPointF scenePos)
-{
-    UBToolWidget *toolWidget = new UBToolWidget(toolUrl, mMainWindow); // Deleted in UBBoardController::removeTool
-    QPoint pos = mControlView->mapToGlobal(mControlView->mapFromScene(scenePos));
-    pos -= QPoint(toolWidget->width() / 2, toolWidget->height() / 2);
-
-    toolWidget->move(pos);
-
-    mTools.append(toolWidget);
-
-    toolWidget->show();
-
-    return toolWidget;
-}
-
-
 void UBBoardController::removeTool(UBToolWidget* toolWidget)
 {
     toolWidget->hide();
 
-    mTools.removeAll(toolWidget);
-
     delete toolWidget;
 }
 
-
 void UBBoardController::hide()
 {
     UBApplication::mainWindow->actionLibrary->setChecked(false);
-
-    controlViewHidden();
 }
 
-
 void UBBoardController::show()
 {
     UBApplication::mainWindow->actionLibrary->setChecked(false);
-
-    controlViewShown();
 }
 
-
 void UBBoardController::persistCurrentScene()
 {
     if(UBPersistenceManager::persistenceManager()
-            && mActiveDocument && mActiveScene
-            && (mActiveSceneIndex >= 0))
+            && selectedDocument() && mActiveScene && mActiveSceneIndex != mDeletingSceneIndex
+            && (mActiveSceneIndex >= 0) && mActiveSceneIndex != mMovingSceneIndex
+            && (mActiveScene->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified())))
     {
-        emit activeSceneWillBePersisted();
-
-        UBPersistenceManager::persistenceManager()->persistDocumentScene(mActiveDocument, mActiveScene, mActiveSceneIndex);
-        UBMetadataDcSubsetAdaptor::persist(mActiveDocument);
+        UBPersistenceManager::persistenceManager()->persistDocumentScene(selectedDocument(), mActiveScene, mActiveSceneIndex);
+        updatePage(mActiveSceneIndex);
     }
 }
 
-
 void UBBoardController::updateSystemScaleFactor()
 {
     qreal newScaleFactor = 1.0;
@@ -1632,7 +1965,7 @@ void UBBoardController::setPageSize(QSize newSize)
         updateSystemScaleFactor();
         updatePageSizeState();
         adjustDisplayViews();
-        mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
 
         UBSettings::settings()->pageSize->set(newSize);
     }
@@ -1648,6 +1981,7 @@ void UBBoardController::notifyCache(bool visible)
     {
         emit cacheDisabled();
     }
+    mCacheWidgetIsEnabled = visible;
 }
 
 void UBBoardController::updatePageSizeState()
@@ -1753,44 +2087,35 @@ void UBBoardController::grabScene(const QRectF& pSceneRect)
         mActiveScene->setRenderingQuality(UBItem::RenderingQualityNormal);
 
         mPaletteManager->addItem(QPixmap::fromImage(image));
-        mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
     }
 }
 
-
-void UBBoardController::controlViewHidden()
-{
-    foreach(UBToolWidget* tool, mTools)
-    {
-        tool->hide();
-    }
-}
-
-
-void UBBoardController::controlViewShown()
-{
-    foreach(UBToolWidget* tool, mTools)
-    {
-        tool->show();
-    }
-}
-
-
-UBGraphicsVideoItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos)
+UBGraphicsMediaItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos, bool bUseSource)
 {
     QUuid uuid = QUuid::createUuid();
     QUrl concreteUrl = pSourceUrl;
 
-#ifdef Q_WS_X11
-    concreteUrl = QUrl::fromLocalFile(mActiveDocument->persistencePath() + "/" + UBPersistenceManager::persistenceManager()
-                                      ->addVideoFileToDocument(mActiveDocument, pSourceUrl.toLocalFile(), uuid));
-#else
-    concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
-                                      ->addVideoFileToDocument(mActiveDocument, pSourceUrl.toLocalFile(), uuid));
-#endif
+    // media file is not in document folder yet
+    if (!bUseSource)
+    {
+        QString destFile;
+        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+                    pSourceUrl.toLocalFile(),
+                    UBPersistenceManager::videoDirectory,
+                    uuid,
+                    destFile);
+        if (!b)
+        {
+            showMessage(tr("Add file operation failed: file copying error"));
+            return NULL;
+        }
+        concreteUrl = QUrl::fromLocalFile(destFile);
+    }// else we just use source Url.
+
 
-    UBGraphicsVideoItem* vi = mActiveScene->addVideo(concreteUrl, startPlay, pos);
-    mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    UBGraphicsMediaItem* vi = mActiveScene->addMedia(concreteUrl, startPlay, pos);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
 
     if (vi) {
         vi->setUuid(uuid);
@@ -1801,28 +2126,37 @@ UBGraphicsVideoItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool st
 
 }
 
-UBGraphicsAudioItem* UBBoardController::addAudio(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos)
+UBGraphicsMediaItem* UBBoardController::addAudio(const QUrl& pSourceUrl, bool startPlay, const QPointF& pos, bool bUseSource)
 {
     QUuid uuid = QUuid::createUuid();
     QUrl concreteUrl = pSourceUrl;
 
-#ifdef Q_WS_X11
-    concreteUrl = QUrl::fromLocalFile(mActiveDocument->persistencePath() + "/" + UBPersistenceManager::persistenceManager()
-                       ->addAudioFileToDocument(mActiveDocument, pSourceUrl.toLocalFile(), uuid));
-#else
-    concreteUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
-                       ->addAudioFileToDocument(mActiveDocument, pSourceUrl.toLocalFile(), uuid));
-#endif
+    // media file is not in document folder yet
+    if (!bUseSource)
+    {
+        QString destFile;
+        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(selectedDocument(),
+            pSourceUrl.toLocalFile(),
+            UBPersistenceManager::audioDirectory,
+            uuid,
+            destFile);
+        if (!b)
+        {
+            showMessage(tr("Add file operation failed: file copying error"));
+            return NULL;
+        }
+        concreteUrl = QUrl::fromLocalFile(destFile);
+    }// else we just use source Url.
 
-    UBGraphicsAudioItem* vi = mActiveScene->addAudio(concreteUrl, startPlay, pos);
-    mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    UBGraphicsMediaItem* ai = mActiveScene->addMedia(concreteUrl, startPlay, pos);
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
 
-    if (vi){
-        vi->setUuid(uuid);
-        vi->setSourceUrl(pSourceUrl);
+    if (ai){
+        ai->setUuid(uuid);
+        ai->setSourceUrl(pSourceUrl);
     }
 
-    return vi;
+    return ai;
 
 }
 
@@ -1831,9 +2165,11 @@ UBGraphicsWidgetItem *UBBoardController::addW3cWidget(const QUrl &pUrl, const QP
     UBGraphicsWidgetItem* w3cWidgetItem = 0;
 
     QUuid uuid = QUuid::createUuid();
-    QUrl newUrl = pUrl;
 
-    newUrl = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()->addGraphicsWidgteToDocument(mActiveDocument, pUrl.toLocalFile(), uuid));
+    QString destPath;
+    if (!UBPersistenceManager::persistenceManager()->addGraphicsWidgteToDocument(selectedDocument(), pUrl.toLocalFile(), uuid, destPath))
+        return NULL;
+    QUrl newUrl = QUrl::fromLocalFile(destPath);
 
     w3cWidgetItem = mActiveScene->addW3CWidget(newUrl, pos);
 
@@ -1843,15 +2179,15 @@ UBGraphicsWidgetItem *UBBoardController::addW3cWidget(const QUrl &pUrl, const QP
         w3cWidgetItem->setSourceUrl(pUrl);
 
         QString struuid = UBStringUtils::toCanonicalUuid(uuid);
-        QString snapshotPath = mActiveDocument->persistencePath() +  "/" + UBPersistenceManager::widgetDirectory + "/" + struuid + ".png";
+        QString snapshotPath = selectedDocument()->persistencePath() +  "/" + UBPersistenceManager::widgetDirectory + "/" + struuid + ".png";
         w3cWidgetItem->setSnapshotPath(QUrl::fromLocalFile(snapshotPath));
         UBGraphicsWidgetItem *tmpItem = dynamic_cast<UBGraphicsWidgetItem*>(w3cWidgetItem);
-        if (tmpItem)
-           tmpItem->widgetWebView()->takeSnapshot().save(snapshotPath, "PNG");
+        if (tmpItem && tmpItem->scene())
+           tmpItem->takeSnapshot().save(snapshotPath, "PNG");
 
     }
 
-    return 0;
+    return w3cWidgetItem;
 }
 
 void UBBoardController::cut()
@@ -1890,7 +2226,7 @@ void UBBoardController::cut()
         mimeGi->setData(UBApplication::mimeTypeUniboardPageItem, QByteArray());
         clipboard->setMimeData(mimeGi);
 
-        mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
     }
 
     //---------------------------------------------------------//
@@ -1906,7 +2242,11 @@ void UBBoardController::copy()
         UBItem* ubItem = dynamic_cast<UBItem*>(gi);
 
         if (ubItem && !mActiveScene->tools().contains(gi))
-            selected << ubItem->deepCopy();
+        {
+            UBItem *itemCopy = ubItem->deepCopy();
+            if (itemCopy)
+                selected << itemCopy;
+        }
     }
 
     if (selected.size() > 0)
@@ -1928,7 +2268,7 @@ void UBBoardController::paste()
     QPointF pos(0, 0);
     processMimeData(clipboard->mimeData(), pos);
 
-    mActiveDocument->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+    selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
 }
 
 
@@ -1941,15 +2281,15 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
         if (mimeData)
         {
             int previousActiveSceneIndex = activeSceneIndex();
-            int previousPageCount = activeDocument()->pageCount();
+            int previousPageCount = selectedDocument()->pageCount();
 
             foreach (UBMimeDataItem sourceItem, mimeData->items())
                 addScene(sourceItem.documentProxy(), sourceItem.sceneIndex(), true);
 
-            if (activeDocument()->pageCount() < previousPageCount + mimeData->items().count())
-                setActiveDocumentScene(activeDocument(), previousActiveSceneIndex);
+            if (selectedDocument()->pageCount() < previousPageCount + mimeData->items().count())
+                setActiveDocumentScene(previousActiveSceneIndex);
             else
-                setActiveDocumentScene(activeDocument(), previousActiveSceneIndex + 1);
+                setActiveDocumentScene(previousActiveSceneIndex + 1);
 
             return;
         }
@@ -1963,12 +2303,9 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
         {
             foreach(UBItem* item, mimeData->items())
             {
-                QGraphicsItem* gi = dynamic_cast<QGraphicsItem*>(item->deepCopy());
-
-                if (gi)
-                {
-                    mActiveScene->addItem(gi);
-                    gi->setPos(gi->pos() + QPointF(50, 50));
+                QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(item);
+                if(NULL != pItem){
+                    duplicateItem(item);
                 }
             }
 
@@ -1983,7 +2320,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
 
         if("" != url)
         {
-            downloadURL(url, pPos);
+            downloadURL(url, QString(), pPos);
             return;
         }
     }
@@ -1994,9 +2331,16 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
 
         int index = 0;
 
+        const UBFeaturesMimeData *internalMimeData = qobject_cast<const UBFeaturesMimeData*>(pMimeData);
+        bool internalData = false;
+        if (internalMimeData) {
+            internalData = true;
+        }
+
         foreach(const QUrl url, urls){
             QPointF pos(pPos + QPointF(index * 15, index * 15));
-            downloadURL(url, pos);
+
+            downloadURL(url, QString(), pos, QSize(), false,  internalData);
             index++;
         }
 
@@ -2011,7 +2355,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
         // validate that the image is really an image, webkit does not fill properly the image mime data
         if (pix.width() != 0 && pix.height() != 0)
         {
-            mActiveScene->addPixmap(pix, pPos, 1.);
+            mActiveScene->addPixmap(pix, NULL, pPos, 1.);
             return;
         }
     }
@@ -2022,7 +2366,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
             // Sometimes, it is possible to have an URL as text. we check here if it is the case
             QString qsTmp = pMimeData->text().remove(QRegExp("[\\0]"));
             if(qsTmp.startsWith("http")){
-                downloadURL(QUrl(qsTmp), pPos);
+                downloadURL(QUrl(qsTmp), QString(), pPos);
             }
             else{
                 mActiveScene->addTextHtml(pMimeData->html(), pPos);
@@ -2036,7 +2380,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
                 QString qsUrl = UBPlatformUtils::urlFromClipboard();
                 if("" != qsUrl){
                     // We finally got the url of the dropped ressource! Let's import it!
-                    downloadURL(qsUrl, pPos);
+                    downloadURL(qsUrl, qsUrl, pPos);
                     return;
                 }
 #endif
@@ -2051,59 +2395,41 @@ void UBBoardController::togglePodcast(bool checked)
         UBPodcastController::instance()->toggleRecordingPalette(checked);
 }
 
-
 void UBBoardController::moveGraphicsWidgetToControlView(UBGraphicsWidgetItem* graphicsWidget)
 {
-    QPoint controlViewPos = mControlView->mapFromScene(graphicsWidget->sceneBoundingRect().center());
+    mActiveScene->setURStackEnable(false);
+    UBGraphicsItem *toolW3C = duplicateItem(dynamic_cast<UBItem *>(graphicsWidget));
+    UBGraphicsWidgetItem *copyedGraphicsWidget = NULL;
 
-    graphicsWidget->setSelected(false);
+    if (UBGraphicsWidgetItem::Type == toolW3C->type())
+        copyedGraphicsWidget = static_cast<UBGraphicsWidgetItem *>(toolW3C);
 
-    UBAbstractWidget *aw = graphicsWidget->widgetWebView();
-    graphicsWidget->setWidget(0);
+    UBToolWidget *toolWidget = new UBToolWidget(copyedGraphicsWidget, mControlView);
 
-    UBToolWidget *toolWidget = new UBToolWidget(aw, mControlContainer);
+    graphicsWidget->remove(false);
+    mActiveScene->addItemToDeletion(graphicsWidget);
 
-    graphicsWidget->scene()->removeItem(graphicsWidget); // TODO UB 4.6 probably leaking the frame
+    mActiveScene->setURStackEnable(true);
 
+    QPoint controlViewPos = mControlView->mapFromScene(graphicsWidget->sceneBoundingRect().center());
     toolWidget->centerOn(mControlView->mapTo(mControlContainer, controlViewPos));
-
     toolWidget->show();
 }
 
 
 void UBBoardController::moveToolWidgetToScene(UBToolWidget* toolWidget)
 {
-    int xIsOdd = toolWidget->width() % 2;
-    int yIsOdd = toolWidget->height() % 2;
-
-    QPoint mainWindowCenter = toolWidget->mapTo(mMainWindow, QPoint(toolWidget->width(), toolWidget->height()) / 2);
+    UBGraphicsWidgetItem *widgetToScene = toolWidget->toolWidget();
 
-    UBAbstractWidget* webWidget = toolWidget->webWidget();
-    webWidget->setParent(0);
-
-    UBGraphicsWidgetItem* graphicsWidget = 0;
-
-    UBW3CWidget* w3cWidget = qobject_cast<UBW3CWidget*>(webWidget);
-    if (w3cWidget)
-    {
-        graphicsWidget = new UBGraphicsW3CWidgetItem(w3cWidget);
-    }
-    else
-    {
-        UBAppleWidget* appleWidget = qobject_cast<UBAppleWidget*>(webWidget);
-        if (appleWidget)
-        {
-            graphicsWidget = new UBGraphicsAppleWidgetItem(appleWidget);
-        }
-    }
+    widgetToScene->resetTransform();
 
+    QPoint mainWindowCenter = toolWidget->mapTo(mMainWindow, QPoint(toolWidget->width(), toolWidget->height()) / 2);
     QPoint controlViewCenter = mControlView->mapFrom(mMainWindow, mainWindowCenter);
-    QPointF scenePos = mControlView->mapToScene(controlViewCenter) + QPointF(xIsOdd * 0.5, yIsOdd * 0.5);
+    QPointF scenePos = mControlView->mapToScene(controlViewCenter);
 
-    mActiveScene->addGraphicsWidget(graphicsWidget, scenePos);
+    mActiveScene->addGraphicsWidget(widgetToScene, scenePos);
 
-    toolWidget->hide();
-    toolWidget->deleteLater();
+    toolWidget->remove();
 }
 
 
@@ -2145,11 +2471,10 @@ void UBBoardController::addItem()
 
 void UBBoardController::importPage()
 {
-    int pageCount = mActiveDocument->pageCount();
-
-    if (UBApplication::documentController->addFileToDocument(mActiveDocument))
+    int pageCount = selectedDocument()->pageCount();
+    if (UBApplication::documentController->addFileToDocument(selectedDocument()))
     {
-        setActiveDocumentScene(mActiveDocument, pageCount);
+        setActiveDocumentScene(selectedDocument(), pageCount, true);
     }
 }
 
@@ -2189,8 +2514,8 @@ void UBBoardController::freezeW3CWidget(QGraphicsItem *item, bool freeze)
             return;
 
         if (freeze) {
-            item_casted->widgetWebView()->page()->mainFrame()->setContent(UBW3CWidget::freezedWidgetPage().toAscii());
+            item_casted->load(QUrl(UBGraphicsW3CWidgetItem::freezedWidgetFilePath()));
         } else
-            item_casted->widgetWebView()->loadMainHtml();
+            item_casted->loadMainHtml();
     }
 }
diff --git a/Sankore-3.1/src/board/UBBoardController.h b/Sankore-3.1/src/board/UBBoardController.h
index 5a794b3..152ea39 100644
--- a/Sankore-3.1/src/board/UBBoardController.h
+++ b/Sankore-3.1/src/board/UBBoardController.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBBOARDCONTROLLER_H_
 #define UBBOARDCONTROLLER_H_
@@ -19,6 +26,7 @@
 #include <QtGui>
 
 #include <QObject>
+#include "document/UBDocumentContainer.h"
 
 class UBMainWindow;
 class UBApplication;
@@ -33,13 +41,16 @@ class UBToolWidget;
 class UBVersion;
 class UBSoftwareUpdate;
 class UBSoftwareUpdateDialog;
+class UBGraphicsMediaItem;
 class UBGraphicsVideoItem;
 class UBGraphicsAudioItem;
 class UBGraphicsWidgetItem;
 class UBBoardPaletteManager;
+class UBItem;
+class UBGraphicsItem;
 
 
-class UBBoardController : public QObject
+class UBBoardController : public UBDocumentContainer
 {
     Q_OBJECT
 
@@ -49,7 +60,7 @@ class UBBoardController : public QObject
 
         void init();
         void setupLayout();
-        UBDocumentProxy* activeDocument() const;
+
         UBGraphicsScene* activeScene() const;
         int activeSceneIndex() const;
         QSize displayViewport();
@@ -59,14 +70,6 @@ class UBBoardController : public QObject
 
         int currentPage();
 
-        int pageFromSceneIndex(int sceneIndex);
-        int sceneIndexFromPage(int page);
-
-        UBDocumentProxy* activeDocument()
-        {
-            return mActiveDocument;
-        }
-
         QWidget* controlContainer()
         {
             return mControlContainer;
@@ -157,10 +160,21 @@ class UBBoardController : public QObject
         void displayMetaData(QMap<QString, QString> metadatas);
 
         void ClearUndoStack();
-        void emitScrollSignal() { emit scrollToSelectedPage(); }
+
+        void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0, bool forceReload = false);
+        void setActiveDocumentScene(int pSceneIndex);
+
+        void moveSceneToIndex(int source, int target);
+        void duplicateScene(int index);
+        UBGraphicsItem *duplicateItem(UBItem *item, bool bAsync = true);
+        void deleteScene(int index);
+
+        bool cacheIsVisible() {return mCacheWidgetIsEnabled;}
+
+        QString actionGroupText(){ return mActionGroupText;}
+        QString actionUngroupText(){ return mActionUngroupText;}
 
     public slots:
-        void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0);
         void showDocumentsDialog();
         void showKeyboard(bool show);
         void togglePodcast(bool checked);
@@ -173,6 +187,7 @@ class UBBoardController : public QObject
         void clearScene();
         void clearSceneItems();
         void clearSceneAnnotation();
+        void clearSceneBackground();
         void zoomIn(QPointF scenePoint = QPointF(0,0));
         void zoomOut(QPointF scenePoint = QPointF(0,0));
         void zoomRestore();
@@ -184,16 +199,17 @@ class UBBoardController : public QObject
         void nextScene();
         void firstScene();
         void lastScene();
-        void downloadURL(const QUrl& url, const QPointF& pPos = QPointF(0.0, 0.0), const QSize& pSize = QSize(), bool isBackground = false);
-        void downloadFinished(bool pSuccess, QUrl sourceUrl, QString pHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground = false);
+        void groupButtonClicked();
+        void downloadURL(const QUrl& url, QString contentSourceUrl = QString(), const QPointF& pPos = QPointF(0.0, 0.0), const QSize& pSize = QSize(), bool isBackground = false, bool internalData = false);
+        UBItem *downloadFinished(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pHeader,
+                                 QByteArray pData, QPointF pPos, QSize pSize,
+                                 bool isBackground = false, bool internalData = false);
         void changeBackground(bool isDark, bool isCrossed);
         void setToolCursor(int tool);
-        void showMessage(const QString& message, bool showSpinningWheel);
+        void showMessage(const QString& message, bool showSpinningWheel = false);
         void hideMessage();
         void setDisabled(bool disable);
         void setColorIndex(int pColorIndex);
-        UBToolWidget* addTool(const QUrl& toolUrl, QPointF scenePos);
-        UBToolWidget* addTool(const QUrl& toolUrl);
         void removeTool(UBToolWidget* toolWidget);
         void hide();
         void show();
@@ -201,10 +217,8 @@ class UBBoardController : public QObject
         void setRegularPageSize(bool checked);
         void stylusToolChanged(int tool);
         void grabScene(const QRectF& pSceneRect);
-        void controlViewHidden();
-        void controlViewShown();
-        UBGraphicsVideoItem* addVideo(const QUrl& pUrl, bool startPlay, const QPointF& pos);
-        UBGraphicsAudioItem* addAudio(const QUrl& pUrl, bool startPlay, const QPointF& pos);
+        UBGraphicsMediaItem* addVideo(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
+        UBGraphicsMediaItem* addAudio(const QUrl& pUrl, bool startPlay, const QPointF& pos, bool bUseSource = false);
         UBGraphicsWidgetItem *addW3cWidget(const QUrl& pUrl, const QPointF& pos);
 
         void cut();
@@ -221,10 +235,8 @@ class UBBoardController : public QObject
         void stopScript();
 
     signals:
-        void activeSceneWillBePersisted();
-        void activeSceneWillChange();
+        void newPageAdded();
         void activeSceneChanged();
-        void activeDocumentChanged();
         void zoomChanged(qreal pZoomFactor);
         void systemScaleFactorChanged(qreal pSystemScaleFactor);
         void penColorChanged();
@@ -233,10 +245,10 @@ class UBBoardController : public QObject
         void cacheEnabled();
         void cacheDisabled();
         void pageChanged();
-        void setDocOnPageNavigator(UBDocumentProxy* doc);
         void documentReorganized(int index);
         void displayMetadata(QMap<QString, QString> metadata);
-        void scrollToSelectedPage();
+        void pageSelectionChanged(int index);
+        void npapiWidgetCreated(const QString &Url);
 
     protected:
         void setupViews();
@@ -258,7 +270,6 @@ class UBBoardController : public QObject
         void adjustDisplayViews();
 
         UBMainWindow *mMainWindow;
-        UBDocumentProxy* mActiveDocument;
         UBGraphicsScene* mActiveScene;
         int mActiveSceneIndex;
         UBBoardPaletteManager *mPaletteManager;
@@ -274,10 +285,15 @@ class UBBoardController : public QObject
         QColor mPenColorOnLightBackground;
         QColor mMarkerColorOnDarkBackground;
         QColor mMarkerColorOnLightBackground;
-        QList<UBToolWidget*> mTools;
         qreal mSystemScaleFactor;
         bool mCleanupDone;
         QMap<QAction*, QPair<QString, QString> > mActionTexts;
+        bool mCacheWidgetIsEnabled;
+        QGraphicsItem* mLastCreatedItem;
+        int mDeletingSceneIndex;
+        int mMovingSceneIndex;
+        QString mActionGroupText;
+        QString mActionUngroupText;
 
     private slots:
         void stylusToolDoubleClicked(int tool);
diff --git a/Sankore-3.1/src/board/UBBoardPaletteManager.cpp b/Sankore-3.1/src/board/UBBoardPaletteManager.cpp
index 2173de6..8c9e84a 100644
--- a/Sankore-3.1/src/board/UBBoardPaletteManager.cpp
+++ b/Sankore-3.1/src/board/UBBoardPaletteManager.cpp
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "UBBoardPaletteManager.h"
 
@@ -29,6 +36,7 @@
 #include "gui/UBKeyboardPalette.h"
 #include "gui/UBToolWidget.h"
 #include "gui/UBZoomPalette.h"
+#include "gui/UBWebToolsPalette.h"
 #include "gui/UBActionPalette.h"
 #include "gui/UBFavoriteToolPalette.h"
 #include "gui/UBDockTeacherGuideWidget.h"
@@ -47,7 +55,6 @@
 #include "network/UBServerXMLHttpRequest.h"
 
 #include "domain/UBGraphicsScene.h"
-#include "domain/UBAbstractWidget.h"
 #include "domain/UBGraphicsPixmapItem.h"
 
 #include "document/UBDocumentProxy.h"
@@ -65,6 +72,7 @@
 UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardController* pBoardController)
     : QObject(container)
     , mKeyboardPalette(0)
+    , mWebToolsCurrentPalette(0)
     , mContainer(container)
     , mBoardControler(pBoardController)
     , mStylusPalette(0)
@@ -81,12 +89,8 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll
     , mPendingPanButtonPressed(false)
     , mPendingEraseButtonPressed(false)
     , mpPageNavigWidget(NULL)
-#ifdef USE_WEB_WIDGET
-    , mpLibWidget(NULL)
-#endif
     , mpCachePropWidget(NULL)
     , mpDownloadWidget(NULL)
-    , mpDesktopLibWidget(NULL)
     , mpTeacherGuideWidget(NULL)
     , mDownloadInProgress(false)
 {
@@ -97,20 +101,12 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll
 
 UBBoardPaletteManager::~UBBoardPaletteManager()
 {
-    delete mAddItemPalette;
 
+// mAddedItemPalette is delete automatically because of is parent 
+// that changes depending on the mode 
 
-    if(NULL != mStylusPalette)
-    {
-        delete mStylusPalette;
-        mStylusPalette = NULL;
-    }
-
-    if(NULL != mpDesktopLibWidget)
-    {
-        delete mpDesktopLibWidget;
-        mpDesktopLibWidget = NULL;
-    }
+// mMainWindow->centralWidget is the parent of mStylusPalette
+// do not delete this here.
 }
 
 void UBBoardPaletteManager::initPalettesPosAtStartup()
@@ -134,10 +130,6 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
 
     mpPageNavigWidget = new UBPageNavigationWidget();
 
-#ifdef USE_WEB_WIDGET
-    mpLibWidget = new UBLibWidget();
-#endif
-
     mpCachePropWidget = new UBCachePropertiesWidget();
 
     mpDownloadWidget = new UBDockDownloadWidget();
@@ -150,7 +142,7 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
     mLeftPalette->registerWidget(mpPageNavigWidget);
     mLeftPalette->addTab(mpPageNavigWidget);
 
-    if(UBSettings::settings()->teacherGuidePageZeroActivated || UBSettings::settings()->teacherGuideLessonPagesActivated){
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() || UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()){
         mpTeacherGuideWidget = new UBDockTeacherGuideWidget();
         mLeftPalette->registerWidget(mpTeacherGuideWidget);
         mLeftPalette->addTab(mpTeacherGuideWidget);
@@ -162,8 +154,8 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
     // RIGHT palette widgets
 #ifndef USE_WEB_WIDGET
     mpFeaturesWidget = new UBFeaturesWidget();
-	mRightPalette->registerWidget(mpFeaturesWidget);
-	mRightPalette->addTab(mpFeaturesWidget);
+    mRightPalette->registerWidget(mpFeaturesWidget);
+    mRightPalette->addTab(mpFeaturesWidget);
 #endif
 
     //Do not show deprecated lib widget to prevent collisions. Uncomment to return lib widget
@@ -268,6 +260,8 @@ void UBBoardPaletteManager::setupPalettes()
 
     mZoomPalette = new UBZoomPalette(mContainer);
 
+    mStylusPalette->stackUnder(mZoomPalette);
+
     QList<QAction*> backgroundsActions;
 
     backgroundsActions << UBApplication::mainWindow->actionPlainLightBackground;
@@ -289,7 +283,7 @@ void UBBoardPaletteManager::setupPalettes()
     addItemActions << UBApplication::mainWindow->actionAddItemToNewPage;
     addItemActions << UBApplication::mainWindow->actionAddItemToLibrary;
 
-    mAddItemPalette = new UBActionPalette(addItemActions, Qt::Horizontal, 0);
+    mAddItemPalette = new UBActionPalette(addItemActions, Qt::Horizontal, mContainer);
     mAddItemPalette->setButtonIconSize(QSize(128, 128));
     mAddItemPalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
     mAddItemPalette->groupActions();
@@ -302,6 +296,7 @@ void UBBoardPaletteManager::setupPalettes()
     eraseActions << UBApplication::mainWindow->actionEraseAnnotations;
     eraseActions << UBApplication::mainWindow->actionEraseItems;
     eraseActions << UBApplication::mainWindow->actionClearPage;
+    eraseActions << UBApplication::mainWindow->actionEraseBackground;
 
     mErasePalette = new UBActionPalette(eraseActions, Qt::Horizontal , mContainer);
     mErasePalette->setButtonIconSize(QSize(128, 128));
@@ -343,6 +338,29 @@ void UBBoardPaletteManager::pagePaletteButtonReleased()
     {
         if( mPageButtonPressedTime.msecsTo(QTime::currentTime()) > 900)
         {
+            // The palette is reinstanciated because the duplication depends on the current scene
+            delete(mPagePalette);
+            mPagePalette = 0;
+            QList<QAction*>pageActions;
+            pageActions << UBApplication::mainWindow->actionNewPage;
+            UBBoardController* boardController = UBApplication::boardController;
+            if(UBApplication::documentController->pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(boardController->activeSceneIndex()))){
+                pageActions << UBApplication::mainWindow->actionDuplicatePage;
+            }
+            pageActions << UBApplication::mainWindow->actionImportPage;
+
+            mPagePalette = new UBActionPalette(pageActions, Qt::Horizontal , mContainer);
+            mPagePalette->setButtonIconSize(QSize(128, 128));
+            mPagePalette->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+            mPagePalette->groupActions();
+            mPagePalette->setClosable(true);
+
+            // As we recreate the pagePalette every time, we must reconnect the slots
+            connect(UBApplication::mainWindow->actionNewPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+            connect(UBApplication::mainWindow->actionDuplicatePage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+            connect(UBApplication::mainWindow->actionImportPage, SIGNAL(triggered()), mPagePalette, SLOT(close()));
+            connect(mPagePalette, SIGNAL(closed()), this, SLOT(pagePaletteClosed()));
+
             togglePagePalette(true);
         }
         else
@@ -445,6 +463,7 @@ void UBBoardPaletteManager::connectPalettes()
     connect(UBApplication::mainWindow->actionEraseItems, SIGNAL(triggered()), mErasePalette, SLOT(close()));
     connect(UBApplication::mainWindow->actionEraseAnnotations, SIGNAL(triggered()), mErasePalette, SLOT(close()));
     connect(UBApplication::mainWindow->actionClearPage, SIGNAL(triggered()), mErasePalette, SLOT(close()));
+    connect(UBApplication::mainWindow->actionEraseBackground,SIGNAL(triggered()),mErasePalette,SLOT(close()));
     connect(mErasePalette, SIGNAL(closed()), this, SLOT(erasePaletteClosed()));
 
     foreach(QWidget *widget, UBApplication::mainWindow->actionErase->associatedWidgets())
@@ -546,7 +565,7 @@ void UBBoardPaletteManager::activeSceneChanged()
 
     if (mpPageNavigWidget)
     {
-        mpPageNavigWidget->setPageNumber(UBApplication::boardController->pageFromSceneIndex(pageIndex), activeScene->document()->pageCount());
+        mpPageNavigWidget->setPageNumber(UBDocumentContainer::pageFromSceneIndex(pageIndex), activeScene->document()->pageCount());
     }
 
     if (mZoomPalette)
@@ -643,11 +662,8 @@ void UBBoardPaletteManager::addItem(const QUrl& pUrl)
     mAddItemPalette->show();
     mAddItemPalette->adjustSizeAndPosition();
 
-    QRect controlGeo = UBApplication::applicationController->displayManager()->controlGeometry();
-
-    mAddItemPalette->move(controlGeo.x() + ((controlGeo.width() - mAddItemPalette->geometry().width()) / 2),
-          (controlGeo.y() + (controlGeo.height() - mAddItemPalette->geometry().height()) / 5));
-
+    mAddItemPalette->move((mContainer->width() - mAddItemPalette->width()) / 2,
+        (mContainer->height() - mAddItemPalette->height()) / 5);
 }
 
 void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool isInit)
@@ -659,8 +675,14 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
     {
         case eUBDockPaletteWidget_BOARD:
             {
-                mLeftPalette->assignParent(UBApplication::boardController->controlContainer());
-                mRightPalette->assignParent(UBApplication::boardController->controlContainer());
+                // On Application start up the mAddItemPalette isn't initialized yet
+                if(mAddItemPalette){
+                    mAddItemPalette->setParent(UBApplication::boardController->controlContainer());
+                }
+                mLeftPalette->assignParent(mContainer);
+                mRightPalette->assignParent(mContainer);
+                mRightPalette->stackUnder(mStylusPalette);
+                mLeftPalette->stackUnder(mStylusPalette);
                 if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
                 {
 
@@ -683,13 +705,18 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
 
                 if( !isInit )
                     containerResized();
+                if (mWebToolsCurrentPalette)
+                    mWebToolsCurrentPalette->hide();
             }
             break;
 
         case eUBDockPaletteWidget_DESKTOP:
             {
+                mAddItemPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
                 mLeftPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
                 mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+                mStylusPalette->raise();
+
                 if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
                 {
 
@@ -707,7 +734,12 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
                         mKeyboardPalette->show();
                     }
                     else
+// In linux keyboard in desktop mode have to allways be with null parent
+#ifdef Q_WS_X11
+                        mKeyboardPalette->setParent(0);
+#else
                         mKeyboardPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView());
+#endif //Q_WS_X11
 #ifdef Q_WS_MAC
                         mKeyboardPalette->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::FramelessWindowHint);
 #endif
@@ -717,17 +749,21 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
                 mLeftPalette->setVisible(leftPaletteVisible);
                 mRightPalette->setVisible(rightPaletteVisible);
 #ifdef Q_WS_WIN
-                if (rightPaletteVisible)
+                if (rightPaletteVisible && UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
                     mRightPalette->setAdditionalVOffset(30);
 #endif
 
-                if( !isInit )
+                if(!isInit)
                     UBApplication::applicationController->uninotesController()->TransparentWidgetResized();
+
+                if (mWebToolsCurrentPalette)
+                    mWebToolsCurrentPalette->hide();
             }
             break;
 
         case eUBDockPaletteWidget_WEB:
             {
+                mAddItemPalette->setParent(UBApplication::mainWindow);
                 if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL)
                 {
 //                    tmp variable?
@@ -764,6 +800,8 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is
                     else
                         mKeyboardPalette->setParent(UBApplication::documentController->controlView());
                 }
+                if (mWebToolsCurrentPalette)
+                    mWebToolsCurrentPalette->hide();
             }
             break;
 
@@ -802,13 +840,11 @@ void UBBoardPaletteManager::addItem(const QPixmap& pPixmap, const QPointF& pos,
     mPos = pos;
     mScaleFactor = scaleFactor;
 
-     QRect controlGeo = UBApplication::applicationController->displayManager()->controlGeometry();
-
     mAddItemPalette->show();
     mAddItemPalette->adjustSizeAndPosition();
 
-    mAddItemPalette->move(controlGeo.x() + ((controlGeo.width() - mAddItemPalette->geometry().width()) / 2),
-          (controlGeo.y() + (controlGeo.height() - mAddItemPalette->geometry().height()) / 5));
+    mAddItemPalette->move((mContainer->width() - mAddItemPalette->width()) / 2,
+        (mContainer->height() - mAddItemPalette->height()) / 5);
 }
 
 
@@ -820,7 +856,7 @@ void UBBoardPaletteManager::addItemToCurrentPage()
         UBApplication::boardController->downloadURL(mItemUrl);
     else
     {
-        UBGraphicsPixmapItem* item = UBApplication::boardController->activeScene()->addPixmap(mPixmap, mPos, mScaleFactor);
+        UBGraphicsPixmapItem* item = UBApplication::boardController->activeScene()->addPixmap(mPixmap, NULL, mPos, mScaleFactor);
 
         item->setSourceUrl(mItemUrl);
         item->setSelected(true);
@@ -855,6 +891,10 @@ void UBBoardPaletteManager::addItemToLibrary()
 
 #ifdef USE_WEB_WIDGET
         mpLibWidget->libNavigator()->libraryWidget()->libraryController()->importImageOnLibrary(image);
+#else
+        QDateTime now = QDateTime::currentDateTime();
+        QString capturedName  = tr("CapturedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss") + ".png";
+        mpFeaturesWidget->importImage(image, capturedName);
 #endif
 
     }
@@ -921,11 +961,11 @@ void UBBoardPaletteManager::changeStylusPaletteOrientation(QVariant var)
     bool bVertical = var.toBool();
     bool bVisible = mStylusPalette->isVisible();
 
-	// Clean the old palette
+    // Clean the old palette
     if(NULL != mStylusPalette)
     {
-        // TODO : check why this line creates a crash in the application.
         delete mStylusPalette;
+        mStylusPalette = NULL;
     }
 
     // Create the new palette
diff --git a/Sankore-3.1/src/board/UBBoardPaletteManager.h b/Sankore-3.1/src/board/UBBoardPaletteManager.h
index 86ef435..57d5d29 100644
--- a/Sankore-3.1/src/board/UBBoardPaletteManager.h
+++ b/Sankore-3.1/src/board/UBBoardPaletteManager.h
@@ -1,42 +1,47 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBBOARDPALETTEMANAGER_H_
 #define UBBOARDPALETTEMANAGER_H_
 
 #include <QtGui>
 #include <QtWebKit>
-
-#include "web/UBRoutedMouseEventWebView.h"
+ 
 #include "gui/UBLeftPalette.h"
 #include "gui/UBRightPalette.h"
 #include "gui/UBPageNavigationWidget.h"
-#include "gui/UBLibWidget.h"
 #include "gui/UBCachePropertiesWidget.h"
 #include "gui/UBDockDownloadWidget.h"
 #include "core/UBApplicationController.h"
 #include "gui/UBFeaturesWidget.h"
 
 
+class UBWebToolsPalette;
 class UBStylusPalette;
 class UBClockPalette;
 class UBPageNumberPalette;
 class UBZoomPalette;
 class UBActionPalette;
 class UBBoardController;
-class UBFloatingPalette;
 class UBServerXMLHttpRequest;
 class UBKeyboardPalette;
 class UBMainWindow;
@@ -44,7 +49,7 @@ class UBApplicationController;
 class UBDockTeacherGuideWidget;
 
 // Uncomment this to use old-styles lib paletter
- #define USE_WEB_WIDGET
+// #define USE_WEB_WIDGET
 
 
 class UBBoardPaletteManager : public QObject
@@ -59,6 +64,7 @@ class UBBoardPaletteManager : public QObject
         UBLeftPalette* leftPalette(){return mLeftPalette;}
         UBRightPalette* rightPalette(){return mRightPalette;}
         UBStylusPalette* stylusPalette(){return mStylusPalette;}
+        UBActionPalette *addItemPalette() {return mAddItemPalette;}
         void showVirtualKeyboard(bool show = true);
         void initPalettesPosAtStartup();
         void connectToDocumentController();
@@ -66,6 +72,11 @@ class UBBoardPaletteManager : public QObject
 
         UBKeyboardPalette *mKeyboardPalette;
 
+        void setCurrentWebToolsPalette(UBWebToolsPalette *palette) {mWebToolsCurrentPalette = palette;}
+        UBWebToolsPalette* mWebToolsCurrentPalette;
+
+        UBDockTeacherGuideWidget* teacherGuideDockWidget() { return mpTeacherGuideWidget;}
+
         void processPalettersWidget(UBDockPalette *paletter, eUBDockPaletteWidgetMode mode);
         void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false);
         void startDownloads();
@@ -85,6 +96,8 @@ class UBBoardPaletteManager : public QObject
         void slot_changeMainMode(UBApplicationController::MainMode);
         void slot_changeDesktopMode(bool);
 
+        void toggleErasePalette(bool ckecked);
+
     private:
 
         void setupPalettes();
@@ -130,11 +143,6 @@ class UBBoardPaletteManager : public QObject
         /** The page navigator widget */
         UBPageNavigationWidget* mpPageNavigWidget;
         
-#ifdef USE_WEB_WIDGET
-        /** The library widget */
-        UBLibWidget* mpLibWidget;
-#endif
-
         /** The cache properties widget */
         UBCachePropertiesWidget* mpCachePropWidget;
 
@@ -142,11 +150,6 @@ class UBBoardPaletteManager : public QObject
 
         /** The download widget */
         UBDockDownloadWidget* mpDownloadWidget;
-        // HACK: here we duplicate the lib widget for the desktop mode
-        //       we MUST refactor the architecture in order to use only one
-        //       lib widget!
-        UBLibWidget* mpDesktopLibWidget;
-
         UBDockTeacherGuideWidget* mpTeacherGuideWidget;
 
         bool mDownloadInProgress;
@@ -164,7 +167,6 @@ class UBBoardPaletteManager : public QObject
         void erasePaletteButtonPressed();
         void erasePaletteButtonReleased();
 
-        void toggleErasePalette(bool ckecked);
         void erasePaletteClosed();
 
         void togglePagePalette(bool ckecked);
diff --git a/Sankore-3.1/src/board/UBBoardView.cpp b/Sankore-3.1/src/board/UBBoardView.cpp
index e3f1e8b..99d2f2e 100644
--- a/Sankore-3.1/src/board/UBBoardView.cpp
+++ b/Sankore-3.1/src/board/UBBoardView.cpp
@@ -1,1046 +1,1626 @@
-/*
- * 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/>.
- */
-#include "UBBoardView.h"
-
-#include <QtGui>
-#include <QtXml>
-#include <QListView>
-
-#include "UBDrawingController.h"
-
-#include "frameworks/UBGeometryUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/UBSettings.h"
-#include "core/UBMimeData.h"
-#include "core/UBApplication.h"
-#include "core/UBSetting.h"
-#include "core/UBPersistenceManager.h"
-
-#include "network/UBHttpGet.h"
-
-#include "gui/UBStylusPalette.h"
-#include "gui/UBRubberBand.h"
-#include "gui/UBToolWidget.h"
-#include "gui/UBResources.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBThumbnailWidget.h"
-#include "gui/UBTeacherGuideWidgetsTools.h"
-
-#include "board/UBBoardController.h"
-
-#include "domain/UBGraphicsTextItem.h"
-#include "domain/UBGraphicsPixmapItem.h"
-#include "domain/UBGraphicsWidgetItem.h"
-#include "domain/UBGraphicsPDFItem.h"
-#include "domain/UBGraphicsPolygonItem.h"
-#include "domain/UBItem.h"
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/UBGraphicsAudioItem.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/ubgraphicsgroupcontaineritem.h"
-#include "domain/UBGraphicsStrokesGroup.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "tools/UBGraphicsCompass.h"
-#include "tools/UBGraphicsCache.h"
-#include "tools/UBGraphicsTriangle.h"
-
-#include "core/memcheck.h"
-
-UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent)
-: QGraphicsView (pParent)
-, mController (pController)
-, mIsCreatingTextZone (false)
-, mIsCreatingSceneGrabZone (false)
-, mOkOnWidget(false)
-, suspendedMousePressEvent(NULL)
-{
-  init ();
-
-  mFilterZIndex = false;
-}
-
-UBBoardView::UBBoardView (UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent)
-: QGraphicsView (pParent)
-, mController (pController)
-, suspendedMousePressEvent(NULL)
-{
-  init ();
-
-  mStartLayer = pStartLayer;
-  mEndLayer = pEndLayer;
-
-  mFilterZIndex = true;
-}
-
-UBBoardView::~UBBoardView () {
-  //NOOP
-    if (suspendedMousePressEvent)
-        delete suspendedMousePressEvent;
-}
-
-void
-UBBoardView::init ()
-{
-  connect (UBSettings::settings ()->boardPenPressureSensitive, SIGNAL (changed (QVariant)),
-           this, SLOT (settingChanged (QVariant)));
-
-  connect (UBSettings::settings ()->boardMarkerPressureSensitive, SIGNAL (changed (QVariant)),
-           this, SLOT (settingChanged (QVariant)));
-
-  connect (UBSettings::settings ()->boardUseHighResTabletEvent, SIGNAL (changed (QVariant)),
-           this, SLOT (settingChanged (QVariant)));
-
-  setWindowFlags (Qt::FramelessWindowHint);
-  setFrameStyle (QFrame::NoFrame);
-  setRenderHints (QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);
-  setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
-  setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
-  setAcceptDrops (true);
-
-  setOptimizationFlag (QGraphicsView::IndirectPainting); // enable UBBoardView::drawItems filter
-
-  mTabletStylusIsPressed = false;
-  mMouseButtonIsPressed = false;
-  mPendingStylusReleaseEvent = false;
-
-  setCacheMode (QGraphicsView::CacheBackground);
-
-  mUsingTabletEraser = false;
-  mIsCreatingTextZone = false;
-  mRubberBand = 0;
-  mUBRubberBand = 0;
-
-  mVirtualKeyboardActive = false;
-
-  settingChanged (QVariant ());
-
-  unsetCursor();
-
-  movingItem = NULL;
-  mWidgetMoved = false;
-}
-
-UBGraphicsScene*
-UBBoardView::scene ()
-{
-  return qobject_cast<UBGraphicsScene*> (QGraphicsView::scene ());
-}
-
-void
-UBBoardView::hideEvent (QHideEvent * event)
-{
-  Q_UNUSED (event);
-  emit hidden ();
-}
-
-void
-UBBoardView::showEvent (QShowEvent * event)
-{
-  Q_UNUSED (event);
-  emit shown ();
-}
-
-void
-UBBoardView::keyPressEvent (QKeyEvent *event)
-{
-  // send to the scene anyway
-  QApplication::sendEvent (scene (), event);
-
-  if (!event->isAccepted ())
-    {
-      switch (event->key ())
-        {
-        case Qt::Key_Up:
-        case Qt::Key_PageUp:
-        case Qt::Key_Left:
-          {
-            mController->previousScene ();
-            break;
-          }
-
-        case Qt::Key_Down:
-        case Qt::Key_PageDown:
-        case Qt::Key_Right:
-        case Qt::Key_Space:
-          {
-            mController->nextScene ();
-            break;
-          }
-
-        case Qt::Key_Home:
-          {
-            mController->firstScene ();
-            break;
-          }
-        case Qt::Key_End:
-          {
-            mController->lastScene ();
-            break;
-          }
-        case Qt::Key_Insert:
-          {
-            mController->addScene ();
-            break;
-          }
-        }
-
-
-      if (event->modifiers () & Qt::ControlModifier) // keep only ctrl/cmd keys
-        {
-          switch (event->key ())
-            {
-            case Qt::Key_Plus:
-            case Qt::Key_I:
-              {
-                mController->zoomIn ();
-                event->accept ();
-                break;
-              }
-            case Qt::Key_Minus:
-            case Qt::Key_O:
-              {
-                mController->zoomOut ();
-                event->accept ();
-                break;
-              }
-            case Qt::Key_0:
-              {
-                mController->zoomRestore ();
-                event->accept ();
-                break;
-              }
-            case Qt::Key_Left:
-              {
-                mController->handScroll (-100, 0);
-                event->accept ();
-                break;
-              }
-            case Qt::Key_Right:
-              {
-                mController->handScroll (100, 0);
-                event->accept ();
-                break;
-              }
-            case Qt::Key_Up:
-              {
-                mController->handScroll (0, -100);
-                event->accept ();
-                break;
-              }
-            case Qt::Key_Down:
-              {
-                mController->handScroll (0, 100);
-                event->accept ();
-                break;
-              }
-            default:
-              {
-                // NOOP
-              }
-            }
-        }
-    }
-}
-
-bool
-UBBoardView::event (QEvent * e)
-{
-  if (e->type () == QEvent::Gesture)
-    {
-      QGestureEvent *gestureEvent = dynamic_cast<QGestureEvent *> (e);
-      if (gestureEvent)
-        {
-          QSwipeGesture* swipe = dynamic_cast<QSwipeGesture*> (gestureEvent->gesture (Qt::SwipeGesture));
-
-          if (swipe)
-            {
-              if (swipe->horizontalDirection () == QSwipeGesture::Left)
-                {
-                  mController->previousScene ();
-                  gestureEvent->setAccepted (swipe, true);
-                }
-
-              if (swipe->horizontalDirection () == QSwipeGesture::Right)
-                {
-                  mController->nextScene ();
-                  gestureEvent->setAccepted (swipe, true);
-                }
-            }
-        }
-    }
-
-  return QGraphicsView::event (e);
-}
-
-void UBBoardView::tabletEvent (QTabletEvent * event)
-{
-    if (!mUseHighResTabletEvent) {
-        event->setAccepted (false);
-        return;
-    }
-
-    UBDrawingController *dc = UBDrawingController::drawingController ();
-
-    QPointF tabletPos = event->pos();
-    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)dc->stylusTool ();
-
-    if (event->type () == QEvent::TabletPress || event->type () == QEvent::TabletEnterProximity) {
-        if (event->pointerType () == QTabletEvent::Eraser) {
-            dc->setStylusTool (UBStylusTool::Eraser);
-            mUsingTabletEraser = true;
-        }
-        else {
-            if (mUsingTabletEraser && currentTool == UBStylusTool::Eraser)
-                dc->setStylusTool (dc->latestDrawingTool ());
-
-            mUsingTabletEraser = false;
-        }
-    }
-
-    // if event are not Pen events, we drop the tablet stuff and route everything through mouse event
-    if (currentTool != UBStylusTool::Pen && currentTool != UBStylusTool::Line && currentTool != UBStylusTool::Marker && !mMarkerPressureSensitive){
-        event->setAccepted (false);
-        return;
-    }
-
-    QPointF scenePos = viewportTransform ().inverted ().map (tabletPos);
-
-    qreal pressure = 1.0;
-    if (((currentTool == UBStylusTool::Pen || currentTool == UBStylusTool::Line)
-         && mPenPressureSensitive)
-            || (currentTool == UBStylusTool::Marker && mMarkerPressureSensitive))
-        pressure = event->pressure ();
-
-
-    bool acceptEvent = true;
-
-    switch (event->type ()) {
-    case QEvent::TabletPress: {
-        mTabletStylusIsPressed = true;
-        scene()->inputDevicePress (scenePos, pressure);
-
-        break;
-    }
-    case QEvent::TabletMove: {
-        if (mTabletStylusIsPressed)
-            scene ()->inputDeviceMove (scenePos, pressure);
-
-        acceptEvent = false; // rerouted to mouse move
-
-        break;
-
-    }
-    case QEvent::TabletRelease: {
-        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)dc->stylusTool ();
-        scene ()->setToolCursor (currentTool);
-        setToolCursor (currentTool);
-
-        scene ()->inputDeviceRelease ();
-
-        mPendingStylusReleaseEvent = false;
-
-        mTabletStylusIsPressed = false;
-        mMouseButtonIsPressed = false;
-
-        break;
-    }
-    default: {
-        //NOOP - avoid compiler warning
-    }
-    }
-
-    // ignore mouse press and mouse move tablet event so that it is rerouted to mouse events,
-    // documented in QTabletEvent Class Reference:
-    /* The event handler QWidget::tabletEvent() receives all three types of tablet events.
-     Qt will first send a tabletEvent then, if it is not accepted, it will send a mouse event. */
-    //
-    // This is a workaround to the fact that tablet event are not delivered to child widget (like palettes)
-    //
-
-    event->setAccepted (acceptEvent);
-
-}
-
-void UBBoardView::mousePressEvent (QMouseEvent *event)
-{
-    if (isAbsurdPoint (event->pos ()))
-    {
-        event->accept ();
-        return;
-    }
-
-    mMouseDownPos = event->pos ();
-
-    emit clickOnBoard();
-
-    if (event->button () == Qt::LeftButton && isInteractive ())
-    {
-
-        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
-
-        if (!mTabletStylusIsPressed)
-            mMouseButtonIsPressed = true;
-
-        if (currentTool == UBStylusTool::ZoomIn)
-        {
-            mController->zoomIn (mapToScene (event->pos ()));
-            event->accept ();
-        }
-        else if (currentTool == UBStylusTool::ZoomOut)
-        {
-            mController->zoomOut (mapToScene (event->pos ()));
-            event->accept ();
-        }
-        else if (currentTool == UBStylusTool::Hand)
-        {
-            viewport ()->setCursor (QCursor (Qt::ClosedHandCursor));
-            mPreviousPoint = event->posF ();
-            event->accept ();
-        }
-        else if (currentTool == UBStylusTool::Selector)
-        {
-//            QSet<QGraphicsItem*> existingTools = scene()->tools(); why do we need to get tools here?
-
-            movingItem = scene()->itemAt(this->mapToScene(event->posF().toPoint()));
-
-            if (!movingItem) {
-                // Rubberband selection implementation
-                if (!mUBRubberBand) {
-                    mUBRubberBand = new UBRubberBand(QRubberBand::Rectangle, this);
-                }
-                mUBRubberBand->setGeometry (QRect (mMouseDownPos, QSize ()));
-                mUBRubberBand->show();
-            }
-
-            if (!movingItem
-                || movingItem->isSelected()
-                || movingItem->type() == UBGraphicsDelegateFrame::Type
-                || movingItem->type() == DelegateButton::Type
-                || movingItem->type() == UBGraphicsCompass::Type
-                || movingItem->type() == UBGraphicsPDFItem::Type
-                || movingItem->type() == UBGraphicsPolygonItem::Type
-                || movingItem->type() == UBGraphicsCache::Type
-                || movingItem->type() == UBGraphicsTriangle::Type
-                || movingItem == this->scene()->backgroundObject()
-                || (movingItem->parentItem() && movingItem->parentItem()->type() == UBGraphicsGroupContainerItem::Type))
-            {
-                    movingItem = NULL;
-                    QGraphicsView::mousePressEvent (event);
-
-                }
-            else
-            {
-                mLastPressedMousePos = mapToScene(event->pos());
-                if (suspendedMousePressEvent)
-                {
-                    delete suspendedMousePressEvent;
-                }
-                suspendedMousePressEvent = new QMouseEvent(event->type(), event->pos(), event->button(), event->buttons(), event->modifiers()); // удалить
-            }
-
-
-            event->accept();
-        }
-        else if (currentTool == UBStylusTool::Text)
-        {
-            int frameWidth = UBSettings::settings ()->objectFrameWidth;
-            QRectF fuzzyRect (0, 0, frameWidth * 4, frameWidth * 4);
-            fuzzyRect.moveCenter (mapToScene (mMouseDownPos));
-
-            UBGraphicsTextItem* foundTextItem = 0;
-            QListIterator<QGraphicsItem *> it (scene ()->items (fuzzyRect));
-
-            while (it.hasNext () && !foundTextItem)
-            {
-                foundTextItem = qgraphicsitem_cast<UBGraphicsTextItem*>(it.next ());
-            }
-
-            if (foundTextItem)
-            {
-                mIsCreatingTextZone = false;
-                QGraphicsView::mousePressEvent (event);
-            }
-            else
-            {
-                scene ()->deselectAllItems ();
-
-                if (!mRubberBand)
-                    mRubberBand = new UBRubberBand (QRubberBand::Rectangle, this);
-                mRubberBand->setGeometry (QRect (mMouseDownPos, QSize ()));
-                mRubberBand->show ();
-                mIsCreatingTextZone = true;
-
-                event->accept ();
-            }
-        }
-        else if (currentTool == UBStylusTool::Capture)
-        {
-            scene ()->deselectAllItems ();
-
-            if (!mRubberBand)
-                mRubberBand = new UBRubberBand (QRubberBand::Rectangle, this);
-
-            mRubberBand->setGeometry (QRect (mMouseDownPos, QSize ()));
-            mRubberBand->show ();
-            mIsCreatingSceneGrabZone = true;
-
-            event->accept ();
-        }
-        else
-        {
-            if(UBDrawingController::drawingController()->mActiveRuler==NULL)
-            {
-                viewport()->setCursor (QCursor (Qt::BlankCursor));
-            }
-
-            if (scene () && !mTabletStylusIsPressed)
-            {
-                scene ()->inputDevicePress (mapToScene (UBGeometryUtils::pointConstrainedInRect (event->pos (), rect ())));
-            }
-            event->accept ();
-        }
-    }
-}
-
-void
-UBBoardView::mouseMoveEvent (QMouseEvent *event)
-{
-  UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
-
-  if (isAbsurdPoint (event->pos ()))
-    {
-      event->accept ();
-      return;
-    }
-
-  if (currentTool == UBStylusTool::Hand && (mMouseButtonIsPressed || mTabletStylusIsPressed))
-    {
-      QPointF eventPosition = event->posF ();
-      qreal dx = eventPosition.x () - mPreviousPoint.x ();
-      qreal dy = eventPosition.y () - mPreviousPoint.y ();
-      mController->handScroll (dx, dy);
-      mPreviousPoint = eventPosition;
-      event->accept ();
-    }
-  else if (currentTool == UBStylusTool::Selector)
-  {
-      if((event->pos() - mLastPressedMousePos).manhattanLength() < QApplication::startDragDistance()) {
-          return;
-      }
-
-      if (mUBRubberBand && mUBRubberBand->isVisible()) {
-          QRect bandRect(mMouseDownPos, event->pos());
-          bandRect = bandRect.normalized();
-
-          mUBRubberBand->setGeometry(bandRect);
-
-          QList<QGraphicsItem *> rubberItems = items(bandRect);
-          foreach (QGraphicsItem *item, mJustSelectedItems) {
-              if (!rubberItems.contains(item)) {
-                  item->setSelected(false);
-                  mJustSelectedItems.remove(item);
-              }
-          }
-          foreach (QGraphicsItem *item, items(bandRect)) {
-
-              if (item->type() == UBGraphicsW3CWidgetItem::Type
-                      || item->type() == UBGraphicsPixmapItem::Type
-                      || item->type() == UBGraphicsVideoItem::Type
-                      || item->type() == UBGraphicsAudioItem::Type
-                      || item->type() == UBGraphicsSvgItem::Type
-                      || item->type() == UBGraphicsTextItem::Type
-                      || item->type() == UBGraphicsStrokesGroup::Type) {
-
-                  if (!mJustSelectedItems.contains(item)) {
-                      item->setSelected(true);
-                      mJustSelectedItems.insert(item);
-                  }
-              }
-          }
-      }
-
-        if (movingItem && (mMouseButtonIsPressed || mTabletStylusIsPressed))
-        {
-            QPointF scenePos = mapToScene(event->pos());
-            QPointF newPos = movingItem->pos() + scenePos - mLastPressedMousePos;
-            movingItem->setPos(newPos);
-            mLastPressedMousePos = scenePos;
-            mWidgetMoved = true;
-            event->accept();
-        }
-        else QGraphicsView::mouseMoveEvent (event);
-    }
-  else if ((UBDrawingController::drawingController()->isDrawingTool())
-    && !mMouseButtonIsPressed)
-  {
-      QGraphicsView::mouseMoveEvent (event);
-  }
-  else if (currentTool == UBStylusTool::Text || currentTool == UBStylusTool::Capture)
-    {
-      if (mRubberBand && (mIsCreatingTextZone || mIsCreatingSceneGrabZone))
-        {
-          mRubberBand->setGeometry (QRect (mMouseDownPos, event->pos ()).normalized ());
-          event->accept ();
-        }
-      else
-        {
-          QGraphicsView::mouseMoveEvent (event);
-        }
-    }
-  else
-    {
-      if (!mTabletStylusIsPressed && scene ())
-      {
-          scene ()->inputDeviceMove (mapToScene (UBGeometryUtils::pointConstrainedInRect (event->pos (), rect ())), mMouseButtonIsPressed);
-      }
-      event->accept ();
-    }
-}
-
-void
-UBBoardView::mouseReleaseEvent (QMouseEvent *event)
-{
-    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
-
-    scene ()->setToolCursor (currentTool);
-    setToolCursor (currentTool);
-
-  // first propagate device release to the scene
-  if (scene ())
-    scene ()->inputDeviceRelease ();
-
-  if (currentTool == UBStylusTool::Selector)
-    {
-      if (mWidgetMoved)
-      {
-          mWidgetMoved = false;
-          movingItem = NULL;
-      }
-      else if (movingItem && suspendedMousePressEvent)
-      {
-          QGraphicsView::mousePressEvent(suspendedMousePressEvent);     // suspendedMousePressEvent is deleted by old Qt event loop
-          movingItem = NULL;
-          delete suspendedMousePressEvent;
-          suspendedMousePressEvent = NULL;
-      }
-
-      if (mUBRubberBand && mUBRubberBand->isVisible()) {
-          mUBRubberBand->hide();
-      }
-
-      QGraphicsView::mouseReleaseEvent (event);
-    }
-  else if (currentTool == UBStylusTool::Text)
-    {
-      if (mRubberBand)
-        mRubberBand->hide ();
-
-      if (scene () && mRubberBand && mIsCreatingTextZone)
-        {
-          QRect rubberRect = mRubberBand->geometry ();
-
-          UBGraphicsTextItem* textItem = scene()->addTextHtml ("", mapToScene (rubberRect.topLeft ()));
-          event->accept ();
-
-          UBDrawingController::drawingController ()->setStylusTool (UBStylusTool::Selector);
-
-          textItem->setSelected (true);
-        }
-      else
-        {
-          QGraphicsView::mouseReleaseEvent (event);
-        }
-
-      mIsCreatingTextZone = false;
-    }
-  else if (currentTool == UBStylusTool::Capture)
-    {
-      if (mRubberBand)
-        mRubberBand->hide ();
-
-      if (scene () && mRubberBand && mIsCreatingSceneGrabZone && mRubberBand->geometry ().width () > 16)
-        {
-          QRect rect = mRubberBand->geometry ();
-          QPointF sceneTopLeft = mapToScene (rect.topLeft ());
-          QPointF sceneBottomRight = mapToScene (rect.bottomRight ());
-          QRectF sceneRect (sceneTopLeft, sceneBottomRight);
-
-          mController->grabScene (sceneRect);
-
-          event->accept ();
-        }
-      else
-        {
-          QGraphicsView::mouseReleaseEvent (event);
-        }
-
-      mIsCreatingSceneGrabZone = false;
-    }
-  else
-    {
-      if (mPendingStylusReleaseEvent || mMouseButtonIsPressed)
-        {
-          event->accept ();
-        }
-    }
-
-  mMouseButtonIsPressed = false;
-  mPendingStylusReleaseEvent = false;
-  mTabletStylusIsPressed = false;
-
-}
-
-void
-UBBoardView::forcedTabletRelease ()
-{
-
-  if (mMouseButtonIsPressed || mTabletStylusIsPressed || mPendingStylusReleaseEvent)
-    {
-      qWarning () << "dirty mouse/tablet state:";
-      qWarning () << "mMouseButtonIsPressed =" << mMouseButtonIsPressed;
-      qWarning () << "mTabletStylusIsPressed = " << mTabletStylusIsPressed;
-      qWarning () << "mPendingStylusReleaseEvent" << mPendingStylusReleaseEvent;
-      qWarning () << "forcing device release";
-
-      scene ()->inputDeviceRelease ();
-
-      mMouseButtonIsPressed = false;
-      mTabletStylusIsPressed = false;
-      mPendingStylusReleaseEvent = false;
-    }
-}
-
-void
-UBBoardView::mouseDoubleClickEvent (QMouseEvent *event)
-{
-  // We don't want a double click, we want two clicks
-  mousePressEvent (event);
-}
-
-void
-UBBoardView::wheelEvent (QWheelEvent *wheelEvent)
-{
-  if (isInteractive () && wheelEvent->orientation () == Qt::Vertical)
-    {
-      // Too many wheelEvent are sent, how should we handle them to "smoothly" zoom ?
-      // something like zoom( pow(zoomFactor, event->delta() / 120) )
-
-      // use DateTime man, store last event time, and if if less than 300ms than this is one big scroll
-      // and move scroll with one const speed.
-        // so, you no will related with scroll event count
-    }
-
-    QList<QGraphicsItem *> selItemsList = scene()->selectedItems();
-    // if NO have selected items, than no need process mouse wheel. just exist
-    if( selItemsList.count() > 0 )
-    {
-        // only one selected item possible, so we will work with first item only
-        QGraphicsItem * selItem = selItemsList[0];
-
-        // get items list under mouse cursor
-        QPointF scenePos = mapToScene(wheelEvent->pos());
-        QList<QGraphicsItem *> itemsList = scene()->items(scenePos);
-
-        QBool isSlectedAndMouseHower = itemsList.contains(selItem);
-        if(isSlectedAndMouseHower)
-        {
-            QGraphicsView::wheelEvent(wheelEvent);
-            wheelEvent->accept();
-        }
-
-    }
-
-}
-
-void
-UBBoardView::leaveEvent (QEvent * event)
-{
-  if (scene ())
-    scene ()->leaveEvent (event);
-
-  QGraphicsView::leaveEvent (event);
-}
-
-void
-UBBoardView::drawItems (QPainter *painter, int numItems,
-                        QGraphicsItem* items[],
-                        const QStyleOptionGraphicsItem options[])
-{
-  if (!mFilterZIndex)
-    {
-      QGraphicsView::drawItems (painter, numItems, items, options);
-    }
-  else
-    {
-      int count = 0;
-
-      QGraphicsItem** itemsFiltered = new QGraphicsItem*[numItems];
-      QStyleOptionGraphicsItem *optionsFiltered = new QStyleOptionGraphicsItem[numItems];
-
-      for (int i = 0; i < numItems; i++)
-        {
-          if (shouldDisplayItem (items[i]))
-            {
-              itemsFiltered[count] = items[i];
-              optionsFiltered[count] = options[i];
-              count++;
-            }
-        }
-
-      QGraphicsView::drawItems (painter, count, itemsFiltered, optionsFiltered);
-
-      delete[] optionsFiltered;
-      delete[] itemsFiltered;
-    }
-}
-
-
-void UBBoardView::dragMoveEvent (QDragMoveEvent *event)
-{
-    QGraphicsItem* graphicsItemAtPos = itemAt(event->pos().x(),event->pos().y());
-    UBGraphicsWidgetItem* graphicsWidget = dynamic_cast<UBGraphicsWidgetItem*>(graphicsItemAtPos);
-
-    if (graphicsWidget) {
-        if (graphicsWidget->acceptDrops()) {
-            if (!mOkOnWidget) {
-                if (!graphicsWidget->isDropableData(event->mimeData())) {
-                    mOkOnWidget = false;
-                    event->ignore();
-                    return;
-                } else {
-                    mOkOnWidget = true;
-                }
-            }
-            QPoint newPoint(graphicsWidget->mapFromScene(mapToScene(event->pos())).toPoint());
-            QDragMoveEvent newEvent(newPoint, event->dropAction(), event->mimeData(), event->mouseButtons(), event->keyboardModifiers());
-            QApplication::sendEvent(graphicsWidget->widgetWebView(),&newEvent);
-        } else {
-            mOkOnWidget = false;
-            event->ignore();
-        }
-    }  else {
-        event->acceptProposedAction();
-        mOkOnWidget = false;
-    }
-}
-
-void UBBoardView::dropEvent (QDropEvent *event)
-{
-    mOkOnWidget = false;
-    QGraphicsItem* graphicsItemAtPos = itemAt(event->pos().x(),event->pos().y());
-    UBGraphicsWidgetItem* graphicsWidget = dynamic_cast<UBGraphicsWidgetItem*>(graphicsItemAtPos);
-
-    if (graphicsWidget && graphicsWidget->acceptDrops()) {
-
-        graphicsWidget->processDropEvent(event);
-        event->acceptProposedAction();
-
-    } else if (!event->source()
-               || dynamic_cast<UBThumbnailWidget *>(event->source())
-               || dynamic_cast<QWebView*>(event->source())
-               || dynamic_cast<UBTGMediaWidget*>(event->source())
-               || dynamic_cast<QListView *>(event->source())
-               || dynamic_cast<UBTGDraggableTreeItem*>(event->source())) {
-
-        mController->processMimeData (event->mimeData (), mapToScene (event->pos ()));
-        event->acceptProposedAction();
-    }
-}
-
-void
-UBBoardView::resizeEvent (QResizeEvent * event)
-{
-  const qreal maxWidth = width () * 10;
-  const qreal maxHeight = height () * 10;
-
-  setSceneRect (-(maxWidth / 2), -(maxHeight / 2), maxWidth, maxHeight);
-  centerOn (0, 0);
-
-  emit resized (event);
-}
-
-void
-UBBoardView::drawBackground (QPainter *painter, const QRectF &rect)
-{
-  if (testAttribute (Qt::WA_TranslucentBackground))
-    {
-      QGraphicsView::drawBackground (painter, rect);
-      return;
-    }
-
-  bool darkBackground = scene () && scene ()->isDarkBackground ();
-
-  if (darkBackground)
-    {
-      painter->fillRect (rect, QBrush (QColor (Qt::black)));
-    }
-  else
-    {
-      painter->fillRect (rect, QBrush (QColor (Qt::white)));
-    }
-
-  if (transform ().m11 () > 0.5)
-    {
-      QColor bgCrossColor;
-
-      if (darkBackground)
-        bgCrossColor = UBSettings::crossDarkBackground;
-      else
-        bgCrossColor = UBSettings::crossLightBackground;
-
-      if (transform ().m11 () < 1.0)
-        {
-          int alpha = 255 * transform ().m11 () / 2;
-          bgCrossColor.setAlpha (alpha); // fade the crossing on small zooms
-        }
-
-      painter->setPen (bgCrossColor);
-
-      if (scene () && scene ()->isCrossedBackground ())
-        {
-          qreal firstY = ((int) (rect.y () / UBSettings::crossSize)) * UBSettings::crossSize;
-
-          for (qreal yPos = firstY; yPos < rect.y () + rect.height (); yPos += UBSettings::crossSize)
-            {
-              painter->drawLine (rect.x (), yPos, rect.x () + rect.width (), yPos);
-            }
-
-          qreal firstX = ((int) (rect.x () / UBSettings::crossSize)) * UBSettings::crossSize;
-
-          for (qreal xPos = firstX; xPos < rect.x () + rect.width (); xPos += UBSettings::crossSize)
-            {
-              painter->drawLine (xPos, rect.y (), xPos, rect.y () + rect.height ());
-            }
-        }
-    }
-
-  if (!mFilterZIndex && scene ())
-    {
-      QSize pageNominalSize = scene ()->nominalSize ();
-
-      if (pageNominalSize.isValid ())
-        {
-          qreal penWidth = 8.0 / transform ().m11 ();
-
-          QRectF pageRect (pageNominalSize.width () / -2, pageNominalSize.height () / -2
-                           , pageNominalSize.width (), pageNominalSize.height ());
-
-          pageRect.adjust (-penWidth / 2, -penWidth / 2, penWidth / 2, penWidth / 2);
-
-          QColor docSizeColor;
-
-          if (darkBackground)
-            docSizeColor = UBSettings::documentSizeMarkColorDarkBackground;
-          else
-            docSizeColor = UBSettings::documentSizeMarkColorLightBackground;
-
-          QPen pen (docSizeColor);
-          pen.setWidth (penWidth);
-          painter->setPen (pen);
-          painter->drawRect (pageRect);
-        }
-    }
-}
-
-void
-UBBoardView::settingChanged (QVariant newValue)
-{
-  Q_UNUSED (newValue);
-
-  mPenPressureSensitive = UBSettings::settings ()->boardPenPressureSensitive->get ().toBool ();
-  mMarkerPressureSensitive = UBSettings::settings ()->boardMarkerPressureSensitive->get ().toBool ();
-  mUseHighResTabletEvent = UBSettings::settings ()->boardUseHighResTabletEvent->get ().toBool ();
-}
-
-void UBBoardView::virtualKeyboardActivated(bool b)
-{
-    UBPlatformUtils::setWindowNonActivableFlag(this, b);
-    mVirtualKeyboardActive = b;
-    setInteractive(!b);
-}
-
-
-// Apple remote desktop sends funny events when the transmission is bad
-
-bool
-UBBoardView::isAbsurdPoint (QPoint point)
-{
-    QDesktopWidget *desktop = qApp->desktop ();
-    bool isValidPoint = false;
-
-    for (int i = 0; i < desktop->numScreens (); i++)
-    {
-      QRect screenRect = desktop->screenGeometry (i);
-      isValidPoint = isValidPoint || screenRect.contains (point);
-    }
-
-    return !isValidPoint;
-}
-
-void
-UBBoardView::focusOutEvent (QFocusEvent * event)
-{
-  Q_UNUSED (event);
-}
-
-void
-UBBoardView::setToolCursor (int tool)
-{
-  QWidget *controlViewport = viewport ();
-  switch (tool)
-    {
-    case UBStylusTool::Pen:
-      controlViewport->setCursor (UBResources::resources ()->penCursor);
-      break;
-    case UBStylusTool::Eraser:
-      controlViewport->setCursor (UBResources::resources ()->eraserCursor);
-      break;
-    case UBStylusTool::Marker:
-      controlViewport->setCursor (UBResources::resources ()->markerCursor);
-      break;
-    case UBStylusTool::Pointer:
-      controlViewport->setCursor (UBResources::resources ()->pointerCursor);
-      break;
-    case UBStylusTool::Hand:
-      controlViewport->setCursor (UBResources::resources ()->handCursor);
-      break;
-    case UBStylusTool::ZoomIn:
-      controlViewport->setCursor (UBResources::resources ()->zoomInCursor);
-      break;
-    case UBStylusTool::ZoomOut:
-      controlViewport->setCursor (UBResources::resources ()->zoomOutCursor);
-      break;
-    case UBStylusTool::Selector:
-      controlViewport->setCursor (UBResources::resources ()->arrowCursor);
-      break;
-    case UBStylusTool::Line:
-      controlViewport->setCursor (UBResources::resources ()->penCursor);
-      break;
-    case UBStylusTool::Text:
-      controlViewport->setCursor (UBResources::resources ()->textCursor);
-      break;
-    case UBStylusTool::Capture:
-      controlViewport->setCursor (UBResources::resources ()->penCursor);
-      break;
-    default:
-      Q_ASSERT (false);
-      //failsafe
-      controlViewport->setCursor (UBResources::resources ()->penCursor);
-    }
-}
-
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBBoardView.h"
+
+#include <QtGui>
+#include <QtXml>
+#include <QListView>
+
+#include "UBDrawingController.h"
+
+#include "frameworks/UBGeometryUtils.h"
+#include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBSettings.h"
+#include "core/UBMimeData.h"
+#include "core/UBApplication.h"
+#include "core/UBSetting.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UB.h"
+
+#include "network/UBHttpGet.h"
+
+#include "gui/UBStylusPalette.h"
+#include "gui/UBRubberBand.h"
+#include "gui/UBToolWidget.h"
+#include "gui/UBResources.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBThumbnailWidget.h"
+#include "gui/UBTeacherGuideWidgetsTools.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
+
+#include "domain/UBGraphicsTextItem.h"
+#include "domain/UBGraphicsPixmapItem.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "domain/UBGraphicsPDFItem.h"
+#include "domain/UBGraphicsPolygonItem.h"
+#include "domain/UBItem.h"
+#include "domain/UBGraphicsMediaItem.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBGraphicsStrokesGroup.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "tools/UBGraphicsRuler.h"
+#include "tools/UBGraphicsCurtainItem.h"
+#include "tools/UBGraphicsCompass.h"
+#include "tools/UBGraphicsCache.h"
+#include "tools/UBGraphicsTriangle.h"
+#include "tools/UBGraphicsProtractor.h"
+#include "tools/UBGraphicsAristo.h"
+
+#include "core/memcheck.h"
+
+UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool isControl, bool isDesktop)
+: QGraphicsView (pParent)
+, mController (pController)
+, mIsCreatingTextZone (false)
+, mIsCreatingSceneGrabZone (false)
+, mOkOnWidget(false)
+, suspendedMousePressEvent(NULL)
+, mLongPressInterval(1000)
+, mIsDragInProgress(false)
+, mMultipleSelectionIsEnabled(false)
+, bIsControl(isControl)
+, bIsDesktop(isDesktop)
+, mRubberBandInPlayMode(false) //enables rubberband with play tool
+{
+  init ();
+
+  mFilterZIndex = false;
+
+  mLongPressTimer.setInterval(mLongPressInterval);
+  mLongPressTimer.setSingleShot(true);
+}
+
+UBBoardView::UBBoardView (UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent, bool isControl, bool isDesktop)
+: QGraphicsView (pParent)
+, mController (pController)
+, suspendedMousePressEvent(NULL)
+, mLongPressInterval(1000)
+, mIsDragInProgress(false)
+, mMultipleSelectionIsEnabled(false)
+, bIsControl(isControl)
+, bIsDesktop(isDesktop)
+{
+  init ();
+
+  mStartLayer = pStartLayer;
+  mEndLayer = pEndLayer;
+
+  mFilterZIndex = true;
+
+  mLongPressTimer.setInterval(mLongPressInterval);
+  mLongPressTimer.setSingleShot(true);
+}
+
+UBBoardView::~UBBoardView () {
+  //NOOP
+    if (suspendedMousePressEvent)
+        delete suspendedMousePressEvent;
+}
+
+void UBBoardView::init ()
+{
+  connect (UBSettings::settings ()->boardPenPressureSensitive, SIGNAL (changed (QVariant)),
+           this, SLOT (settingChanged (QVariant)));
+
+  connect (UBSettings::settings ()->boardMarkerPressureSensitive, SIGNAL (changed (QVariant)),
+           this, SLOT (settingChanged (QVariant)));
+
+  connect (UBSettings::settings ()->boardUseHighResTabletEvent, SIGNAL (changed (QVariant)),
+           this, SLOT (settingChanged (QVariant)));
+
+  setWindowFlags (Qt::FramelessWindowHint);
+  setFrameStyle (QFrame::NoFrame);
+  setRenderHints (QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);
+  setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
+  setHorizontalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
+  setAcceptDrops (true);
+
+  setOptimizationFlag (QGraphicsView::IndirectPainting); // enable UBBoardView::drawItems filter
+
+  mTabletStylusIsPressed = false;
+  mMouseButtonIsPressed = false;
+  mPendingStylusReleaseEvent = false;
+
+  setCacheMode (QGraphicsView::CacheBackground);
+
+  mUsingTabletEraser = false;
+  mIsCreatingTextZone = false;
+  mRubberBand = 0;
+  mUBRubberBand = 0;
+
+  mVirtualKeyboardActive = false;
+
+  settingChanged (QVariant ());
+
+  unsetCursor();
+
+  movingItem = NULL;
+  mWidgetMoved = false;
+}
+
+UBGraphicsScene*
+UBBoardView::scene ()
+{
+  return qobject_cast<UBGraphicsScene*> (QGraphicsView::scene ());
+}
+
+void
+UBBoardView::hideEvent (QHideEvent * event)
+{
+  Q_UNUSED (event);
+  emit hidden ();
+}
+
+void
+UBBoardView::showEvent (QShowEvent * event)
+{
+  Q_UNUSED (event);
+  emit shown ();
+}
+
+void
+UBBoardView::keyPressEvent (QKeyEvent *event)
+{
+  // send to the scene anyway
+  QApplication::sendEvent (scene (), event);
+
+  if (!event->isAccepted ())
+    {
+      switch (event->key ())
+        {
+        case Qt::Key_Up:
+        case Qt::Key_PageUp:
+        case Qt::Key_Left:
+          {
+            mController->previousScene ();
+            break;
+          }
+
+        case Qt::Key_Down:
+        case Qt::Key_PageDown:
+        case Qt::Key_Right:
+        case Qt::Key_Space:
+          {
+            mController->nextScene ();
+            break;
+          }
+
+        case Qt::Key_Home:
+          {
+            mController->firstScene ();
+            break;
+          }
+        case Qt::Key_End:
+          {
+            mController->lastScene ();
+            break;
+          }
+        case Qt::Key_Insert:
+          {
+            mController->addScene ();
+            break;
+          }
+        case Qt::Key_Control:
+        case Qt::Key_Shift:
+          {
+            setMultiselection(true);
+          }break;
+        }
+
+
+      if (event->modifiers () & Qt::ControlModifier) // keep only ctrl/cmd keys
+        {
+          switch (event->key ())
+            {
+            case Qt::Key_Plus:
+            case Qt::Key_I:
+              {
+                mController->zoomIn ();
+                event->accept ();
+                break;
+              }
+            case Qt::Key_Minus:
+            case Qt::Key_O:
+              {
+                mController->zoomOut ();
+                event->accept ();
+                break;
+              }
+            case Qt::Key_0:
+              {
+                mController->zoomRestore ();
+                event->accept ();
+                break;
+              }
+            case Qt::Key_Left:
+              {
+                mController->handScroll (-100, 0);
+                event->accept ();
+                break;
+              }
+            case Qt::Key_Right:
+              {
+                mController->handScroll (100, 0);
+                event->accept ();
+                break;
+              }
+            case Qt::Key_Up:
+              {
+                mController->handScroll (0, -100);
+                event->accept ();
+                break;
+              }
+            case Qt::Key_Down:
+              {
+                mController->handScroll (0, 100);
+                event->accept ();
+                break;
+              }
+            default:
+              {
+                // NOOP
+              }
+            }
+        }
+    }
+
+    // if ctrl of shift was pressed combined with other keys - we need to disable multiple selection.
+    if (event->isAccepted())
+        setMultiselection(false);
+}
+
+
+void UBBoardView::keyReleaseEvent(QKeyEvent *event)
+{
+   // if (!event->isAccepted ())
+    {
+        if (Qt::Key_Shift == event->key()
+          ||Qt::Key_Control == event->key())
+        {
+            setMultiselection(false);
+        }
+    }
+
+    QGraphicsView::keyReleaseEvent(event);
+}
+
+bool
+UBBoardView::event (QEvent * e)
+{
+  if (e->type () == QEvent::Gesture)
+    {
+      QGestureEvent *gestureEvent = dynamic_cast<QGestureEvent *> (e);
+      if (gestureEvent)
+        {
+          QSwipeGesture* swipe = dynamic_cast<QSwipeGesture*> (gestureEvent->gesture (Qt::SwipeGesture));
+          if (swipe)
+            {
+              if (swipe->horizontalDirection () == QSwipeGesture::Left)
+                {
+                  mController->previousScene ();
+                  gestureEvent->setAccepted (swipe, true);
+                }
+
+              if (swipe->horizontalDirection () == QSwipeGesture::Right)
+                {
+                  mController->nextScene ();
+                  gestureEvent->setAccepted (swipe, true);
+                }
+            }
+        }
+    }
+
+  return QGraphicsView::event (e);
+}
+
+void UBBoardView::tabletEvent (QTabletEvent * event)
+{
+    if (!mUseHighResTabletEvent) {
+        event->setAccepted (false);
+        return;
+    }
+
+    UBDrawingController *dc = UBDrawingController::drawingController ();
+
+    QPointF tabletPos = event->pos();
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)dc->stylusTool ();
+
+    if (event->type () == QEvent::TabletPress || event->type () == QEvent::TabletEnterProximity) {
+        if (event->pointerType () == QTabletEvent::Eraser) {
+            dc->setStylusTool (UBStylusTool::Eraser);
+            mUsingTabletEraser = true;
+        }
+        else {
+            if (mUsingTabletEraser && currentTool == UBStylusTool::Eraser)
+                dc->setStylusTool (dc->latestDrawingTool ());
+
+            mUsingTabletEraser = false;
+        }
+    }
+
+    // if event are not Pen events, we drop the tablet stuff and route everything through mouse event
+    if (currentTool != UBStylusTool::Pen && currentTool != UBStylusTool::Line && currentTool != UBStylusTool::Marker && !mMarkerPressureSensitive){
+        event->setAccepted (false);
+        return;
+    }
+
+    QPointF scenePos = viewportTransform ().inverted ().map (tabletPos);
+
+    qreal pressure = 1.0;
+    if (((currentTool == UBStylusTool::Pen || currentTool == UBStylusTool::Line) && mPenPressureSensitive) || (currentTool == UBStylusTool::Marker && mMarkerPressureSensitive))
+        pressure = event->pressure ();
+
+
+    bool acceptEvent = true;
+
+    switch (event->type ()) {
+    case QEvent::TabletPress: {
+        mTabletStylusIsPressed = true;
+        scene()->inputDevicePress (scenePos, pressure);
+
+        break;
+    }
+    case QEvent::TabletMove: {
+        if (mTabletStylusIsPressed)
+            scene ()->inputDeviceMove (scenePos, pressure);
+
+        acceptEvent = false; // rerouted to mouse move
+
+        break;
+
+    }
+    case QEvent::TabletRelease: {
+        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)dc->stylusTool ();
+        scene ()->setToolCursor (currentTool);
+        setToolCursor (currentTool);
+
+        scene ()->inputDeviceRelease ();
+
+        mPendingStylusReleaseEvent = false;
+
+        mTabletStylusIsPressed = false;
+        mMouseButtonIsPressed = false;
+
+        break;
+    }
+    default: {
+        //NOOP - avoid compiler warning
+    }
+    }
+
+    // ignore mouse press and mouse move tablet event so that it is rerouted to mouse events,
+    // documented in QTabletEvent Class Reference:
+    /* The event handler QWidget::tabletEvent() receives all three types of tablet events.
+     Qt will first send a tabletEvent then, if it is not accepted, it will send a mouse event. */
+    //
+    // This is a workaround to the fact that tablet event are not delivered to child widget (like palettes)
+    //
+
+    event->setAccepted (acceptEvent);
+
+}
+
+bool UBBoardView::itemIsLocked(QGraphicsItem *item)
+{
+    if (!item)
+        return false;
+
+    return item->data(UBGraphicsItemData::ItemLocked).toBool();
+}
+
+bool UBBoardView::itemHaveParentWithType(QGraphicsItem *item, int type)
+{
+    if (!item)
+        return false;
+
+    if (type == item->type())
+        return true;
+
+    return itemHaveParentWithType(item->parentItem(), type);
+
+}
+bool UBBoardView::isUBItem(QGraphicsItem *item)
+{
+    if ((UBGraphicsItemType::UserTypesCount > item->type()) && (item->type() > QGraphicsItem::UserType))
+        return true;
+    else
+    {
+        return false;
+    }
+}
+
+bool UBBoardView::isCppTool(QGraphicsItem *item)
+{
+    return (item->type() == UBGraphicsItemType::CompassItemType
+        || item->type() == UBGraphicsItemType::RulerItemType
+        || item->type() == UBGraphicsItemType::ProtractorItemType
+        || item->type() == UBGraphicsItemType::TriangleItemType
+        || item->type() == UBGraphicsItemType::AristoItemType
+        || item->type() == UBGraphicsItemType::CurtainItemType);
+}
+
+void UBBoardView::handleItemsSelection(QGraphicsItem *item)
+{
+// we need to select new pressed itemOnBoard and deselect all other items.
+// the trouble is in:
+//                  some items can has parents (groupped items or strokes, or strokes in groups).
+//                  some items is already selected and we don't need to reselect them
+//
+// item selection managed by QGraphicsView::mousePressEvent(). It should be called later.
+
+    if (item)
+    {
+        //  item has group as first parent - it is any item or UBGraphicsStrokesGroup.
+        if(item->parentItem() && UBGraphicsGroupContainerItem::Type == movingItem->parentItem()->type())
+            return;
+
+        // delegate buttons shouldn't selected
+        if (DelegateButton::Type == item->type())
+            return;
+
+        // click on svg items (images on Frame) shouldn't change selection.
+        if (QGraphicsSvgItem::Type == item->type())
+            return;
+
+        // Delegate frame shouldn't selected
+        if (UBGraphicsDelegateFrame::Type == item->type())
+            return;
+
+
+        // if we need to uwe multiple selection - we shouldn't deselect other items.
+        if (!isMultipleSelectionEnabled())
+        {
+            // here we need to determine what item is pressed. We should work
+            // only with UB items.
+            if ((UBGraphicsItemType::UserTypesCount > item->type()) && (item->type() > QGraphicsItem::UserType))
+            {
+                // if Item can be selected at mouse press - then we need to deselect all other items.
+                foreach(QGraphicsItem *iter_item, scene()->selectedItems())
+                {
+                    if (iter_item != item)
+                    {
+                        iter_item->setSelected(false);
+                    }
+                }
+            }
+        }
+    }
+}
+
+bool UBBoardView::itemShouldReceiveMousePressEvent(QGraphicsItem *item)
+{
+/*
+Some items should receive mouse press events averytime,
+some items should receive that events when they are selected,
+some items shouldn't receive mouse press events at mouse press, but should receive them at mouse release (suspended mouse press event)
+
+Here we determines cases when items should to get mouse press event at pressing on mouse.
+*/
+
+    if (!item)
+        return true;
+
+    // for now background objects is not interactable, but it can be deprecated for some items in the future.
+    if (item == scene()->backgroundObject())
+        return false;
+
+    // some behavior depends on current tool.
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+
+    switch(item->type())
+    {
+    case UBGraphicsProtractor::Type:
+    case UBGraphicsRuler::Type:
+    case UBGraphicsTriangle::Type:
+    case UBGraphicsCompass::Type:
+    case UBGraphicsCache::Type:
+    case UBGraphicsAristo::Type:
+        return true;
+
+    case UBGraphicsDelegateFrame::Type:
+    case QGraphicsSvgItem::Type:
+        return true;
+
+    case DelegateButton::Type:
+        return true;
+
+    case UBGraphicsMediaItem::Type:
+        return false;
+
+    case UBGraphicsSvgItem::Type:
+    case UBGraphicsPixmapItem::Type:
+    case UBGraphicsTextItem::Type:
+        if ((currentTool == UBStylusTool::Selector) && item->isSelected())
+            return true;
+        if ((currentTool == UBStylusTool::Selector) && item->parentItem() && item->parentItem()->isSelected())
+            return true;
+        if (currentTool != UBStylusTool::Selector)
+            return false;
+        break;
+
+    // Groups shouldn't reacts on any presses and moves for Play tool.
+    case UBGraphicsGroupContainerItem::Type:
+        if(currentTool == UBStylusTool::Play)
+        {
+            movingItem = NULL;
+        }
+        return false;
+        break;
+
+    //case UBToolWidget::Type:
+      //  return true;
+
+    case QGraphicsWebView::Type:
+        return true;
+
+    case UBGraphicsWidgetItem::Type:
+        if (currentTool == UBStylusTool::Selector && item->parentItem() && item->parentItem()->isSelected())
+            return true;
+        if (currentTool == UBStylusTool::Selector && item->isSelected())
+            return true;
+        if (currentTool == UBStylusTool::Play)
+            return true;
+        return false;
+        break;
+    }
+
+    return !isUBItem(item); // standard behavior of QGraphicsScene for not UB items. UB items should be managed upper.
+}
+
+bool UBBoardView::itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item)
+{
+    if (!item)
+        return false;
+
+    if (item == scene()->backgroundObject())
+        return false;
+
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+
+    switch(item->type())
+    {
+    case QGraphicsWebView::Type:
+        return false;
+    case UBGraphicsPixmapItem::Type:
+    case UBGraphicsTextItem::Type:
+    case UBGraphicsWidgetItem::Type:
+        if (currentTool == UBStylusTool::Selector && !item->isSelected() && item->parentItem())
+            return true;
+        if (currentTool == UBStylusTool::Selector && item->isSelected())
+            return true;
+        break;
+
+    case DelegateButton::Type:
+    case UBGraphicsMediaItem::Type:
+        return true;
+    }
+
+    return false;
+
+}
+
+bool UBBoardView::itemShouldBeMoved(QGraphicsItem *item)
+{
+    if (!item)
+        return false;
+
+    if (item == scene()->backgroundObject())
+        return false;
+
+    if (!(mMouseButtonIsPressed || mTabletStylusIsPressed))
+        return false;
+
+    if (movingItem->data(UBGraphicsItemData::ItemLocked).toBool())
+        return false;
+
+    if (movingItem->parentItem() && UBGraphicsGroupContainerItem::Type == movingItem->parentItem()->type() && !movingItem->isSelected() && movingItem->parentItem()->isSelected())
+        return false;
+
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+
+    switch(item->type())
+    {
+    case UBGraphicsCurtainItem::Type:
+    case UBGraphicsGroupContainerItem::Type:
+        return true;
+
+    case UBGraphicsWidgetItem::Type:
+        if(currentTool == UBStylusTool::Selector && item->isSelected())
+            return false;
+        if(currentTool == UBStylusTool::Play)
+            return false;
+
+    case UBGraphicsSvgItem::Type:
+    case UBGraphicsPixmapItem::Type:
+        if (item->isSelected())
+            return false;
+    case UBGraphicsMediaItem::Type:
+    case UBGraphicsStrokesGroup::Type:
+        return true;
+    case UBGraphicsTextItem::Type:
+        return !item->isSelected();
+    }
+
+    return false;
+}
+
+
+QGraphicsItem* UBBoardView::determineItemToPress(QGraphicsItem *item)
+{
+    if(item)
+    {
+        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+
+        // if item is on group and group is not selected - group should take press.
+        if (UBStylusTool::Selector == currentTool
+            && item->parentItem()
+            && UBGraphicsGroupContainerItem::Type == item->parentItem()->type()
+            && !item->parentItem()->isSelected())
+            return item->parentItem();
+
+        // items like polygons placed in two groups nested, so we need to recursive call.
+        if(item->parentItem() && UBGraphicsStrokesGroup::Type == item->parentItem()->type())
+            return determineItemToPress(item->parentItem());
+    }
+
+    return item;
+}
+
+// determine item to interacts: item self or it's container.
+QGraphicsItem* UBBoardView::determineItemToMove(QGraphicsItem *item)
+{
+    if(item)
+    {
+        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+
+        //W3C widgets should take mouse move events from play tool.
+        if ((UBStylusTool::Play == currentTool) && (UBGraphicsWidgetItem::Type == item->type()))
+                return item;
+
+        // if item is in group
+        if(item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())
+        {
+            // play tool should move groups by any element
+            if (UBStylusTool::Play == currentTool && item->parentItem()->isSelected())
+                return item->parentItem();
+
+            // groups should should be moved instead of strokes groups
+            if (UBGraphicsStrokesGroup::Type == item->type())
+                return item->parentItem();
+
+            // selected groups should be moved by moving any element
+            if (item->parentItem()->isSelected())
+                return item;
+
+            if (item->isSelected())
+                return NULL;
+
+            return item->parentItem();
+        }
+
+        // items like polygons placed in two groups nested, so we need to recursive call.
+        if(item->parentItem() && UBGraphicsStrokesGroup::Type == item->parentItem()->type())
+            return determineItemToMove(item->parentItem());
+    }
+
+    return item;
+}
+
+void UBBoardView::handleItemMousePress(QMouseEvent *event)
+{
+    mLastPressedMousePos = mapToScene(event->pos());
+
+    // Determining item who will take mouse press event
+    //all other items will be deselected and if all item will be deselected, then
+    // wrong item can catch mouse press. because selected items placed on the top
+    movingItem = determineItemToPress(movingItem);
+    handleItemsSelection(movingItem);
+
+    if (isMultipleSelectionEnabled())
+        return;
+
+    if (itemShouldReceiveMousePressEvent(movingItem))
+    {
+        QGraphicsView::mousePressEvent (event);
+    }
+    else
+    {
+        if (movingItem)
+        {
+            UBGraphicsItem *graphicsItem = dynamic_cast<UBGraphicsItem*>(movingItem);
+            if (graphicsItem)
+                graphicsItem->Delegate()->startUndoStep();
+
+            movingItem->clearFocus();
+        }
+
+        if (suspendedMousePressEvent)
+        {
+            delete suspendedMousePressEvent;
+            suspendedMousePressEvent = NULL;
+        }
+
+        if (itemShouldReceiveSuspendedMousePressEvent(movingItem))
+        {
+            suspendedMousePressEvent = new QMouseEvent(event->type(), event->pos(), event->button(), event->buttons(), event->modifiers());
+        }
+    }
+}
+
+void UBBoardView::handleItemMouseMove(QMouseEvent *event)
+{
+    // determine item to move (maybee we need to move group of item or his parent.
+    movingItem = determineItemToMove(movingItem);
+
+    // items should be moved not every mouse move.
+    if (movingItem && itemShouldBeMoved(movingItem) && (mMouseButtonIsPressed || mTabletStylusIsPressed))
+    {
+        QPointF scenePos = mapToScene(event->pos());
+        QPointF newPos = movingItem->pos() + scenePos - mLastPressedMousePos;
+        movingItem->setPos(newPos);
+        mLastPressedMousePos = scenePos;
+        mWidgetMoved = true;
+        event->accept();
+    }
+    else
+    {
+        QPointF posBeforeMove;
+        QPointF posAfterMove;
+
+        if (movingItem)
+            posBeforeMove = movingItem->pos();
+
+        QGraphicsView::mouseMoveEvent (event);
+
+        if (movingItem)
+          posAfterMove = movingItem->pos();
+
+        mWidgetMoved = ((posAfterMove-posBeforeMove).manhattanLength() != 0);
+
+        // a cludge for terminate moving of w3c widgets.
+        // in some cases w3c widgets catches mouse move and doesn't sends that events to web page,
+        // at simple - in google map widget - mouse move events doesn't comes to web page from rectangle of wearch bar on bottom right corner of widget.
+        if (mWidgetMoved && UBGraphicsW3CWidgetItem::Type == movingItem->type())
+            movingItem->setPos(posBeforeMove);
+    }
+}
+
+void UBBoardView::rubberItems()
+{
+    if (mUBRubberBand)
+        mRubberedItems = items(mUBRubberBand->geometry());
+
+    foreach(QGraphicsItem *item, mRubberedItems)
+    {
+        if (item->parentItem() && UBGraphicsGroupContainerItem::Type == item->parentItem()->type())
+            mRubberedItems.removeOne(item);
+    }
+}
+
+void UBBoardView::moveRubberedItems(QPointF movingVector)
+{
+    QRectF invalidateRect = scene()->itemsBoundingRect();
+
+    foreach (QGraphicsItem *item, mRubberedItems)
+    {
+
+        if (item->type() == UBGraphicsW3CWidgetItem::Type
+              || item->type() == UBGraphicsPixmapItem::Type
+              || item->type() == UBGraphicsMediaItem::Type
+              || item->type() == UBGraphicsSvgItem::Type
+              || item->type() == UBGraphicsTextItem::Type
+              || item->type() == UBGraphicsStrokesGroup::Type
+              || item->type() == UBGraphicsGroupContainerItem::Type)
+        {
+              item->setPos(item->pos()+movingVector);
+        }
+    }
+
+    scene()->invalidate(invalidateRect);
+}
+
+void UBBoardView::setMultiselection(bool enable)
+{
+    mMultipleSelectionIsEnabled = enable;
+}
+
+void UBBoardView::longPressEvent()
+{
+   UBDrawingController *drawingController = UBDrawingController::drawingController();
+   UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+
+   disconnect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressEvent()));
+
+   if (UBStylusTool::Selector == currentTool)
+   {
+        drawingController->setStylusTool(UBStylusTool::Play);
+   }
+   else
+   if (currentTool == UBStylusTool::Play)
+   {
+        drawingController->setStylusTool(UBStylusTool::Selector);
+   }
+   else
+   if (UBStylusTool::Eraser == currentTool)
+   {
+       UBApplication::boardController->paletteManager()->toggleErasePalette(true);
+   }
+
+}
+
+void UBBoardView::mousePressEvent (QMouseEvent *event)
+{
+    if (!bIsControl && !bIsDesktop) {
+        event->ignore();
+        return;
+    }
+
+    mIsDragInProgress = false;
+
+    if (isAbsurdPoint (event->pos ()))
+    {
+        event->accept ();
+        return;
+    }
+
+    mMouseDownPos = event->pos ();
+
+    movingItem = scene()->itemAt(this->mapToScene(event->posF().toPoint()));
+
+    if (!movingItem)
+        emit clickOnBoard();
+
+    if (event->button () == Qt::LeftButton && isInteractive ())
+    {
+
+        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+        if (!mTabletStylusIsPressed)
+            mMouseButtonIsPressed = true;
+
+        if (currentTool == UBStylusTool::ZoomIn)
+        {
+            mController->zoomIn (mapToScene (event->pos ()));
+            event->accept ();
+        }
+        else if (currentTool == UBStylusTool::ZoomOut)
+        {
+            mController->zoomOut (mapToScene (event->pos ()));
+            event->accept ();
+        }
+        else if (currentTool == UBStylusTool::Hand)
+        {
+            viewport ()->setCursor (QCursor (Qt::ClosedHandCursor));
+            mPreviousPoint = event->posF ();
+            event->accept ();
+        }
+        else if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play)
+        {
+            if (bIsDesktop) {
+                event->ignore();
+                return;
+            }
+
+            if (scene()->backgroundObject() == movingItem)
+                movingItem = NULL;
+
+            connect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressEvent()));
+            if (!movingItem && !mController->cacheIsVisible())
+                mLongPressTimer.start();
+
+            if (!movingItem) {
+                // Rubberband selection implementation
+                if (!mUBRubberBand) {
+                    mUBRubberBand = new UBRubberBand(QRubberBand::Rectangle, this);
+                }
+                mUBRubberBand->setGeometry (QRect (mMouseDownPos, QSize ()));
+                mUBRubberBand->show();
+            }
+            else
+            {
+                if(mUBRubberBand)
+                    mUBRubberBand->hide();
+            }
+
+            handleItemMousePress(event);
+            event->accept();
+        }
+        else if (currentTool == UBStylusTool::Text)
+        {
+            int frameWidth = UBSettings::settings ()->objectFrameWidth;
+            QRectF fuzzyRect (0, 0, frameWidth * 4, frameWidth * 4);
+            fuzzyRect.moveCenter (mapToScene (mMouseDownPos));
+
+            UBGraphicsTextItem* foundTextItem = 0;
+            QListIterator<QGraphicsItem *> it (scene ()->items (fuzzyRect));
+
+            while (it.hasNext () && !foundTextItem)
+            {
+                foundTextItem = qgraphicsitem_cast<UBGraphicsTextItem*>(it.next ());
+            }
+
+            if (foundTextItem)
+            {
+                mIsCreatingTextZone = false;
+                QGraphicsView::mousePressEvent (event);
+            }
+            else
+            {
+                scene ()->deselectAllItems ();
+
+                if (!mRubberBand)
+                    mRubberBand = new UBRubberBand (QRubberBand::Rectangle, this);
+                mRubberBand->setGeometry (QRect (mMouseDownPos, QSize ()));
+                mRubberBand->show ();
+                mIsCreatingTextZone = true;
+
+                event->accept ();
+            }
+        }
+        else if (currentTool == UBStylusTool::Capture)
+        {
+            scene ()->deselectAllItems ();
+
+            if (!mRubberBand)
+                mRubberBand = new UBRubberBand (QRubberBand::Rectangle, this);
+
+            mRubberBand->setGeometry (QRect (mMouseDownPos, QSize ()));
+            mRubberBand->show ();
+            mIsCreatingSceneGrabZone = true;
+
+            event->accept ();
+        }
+        else
+        {
+            if(UBDrawingController::drawingController()->mActiveRuler==NULL)
+            {
+                viewport()->setCursor (QCursor (Qt::BlankCursor));
+            }
+
+            if (scene () && !mTabletStylusIsPressed)
+            {
+                if (currentTool == UBStylusTool::Eraser)
+                {
+                    connect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressEvent()));
+                    mLongPressTimer.start();
+                }
+                scene ()->inputDevicePress (mapToScene (UBGeometryUtils::pointConstrainedInRect (event->pos (), rect ())));
+            }
+            event->accept ();
+        }
+    }
+}
+
+void
+UBBoardView::mouseMoveEvent (QMouseEvent *event)
+{
+  if(!mIsDragInProgress && ((mapToScene(event->pos()) - mLastPressedMousePos).manhattanLength() < QApplication::startDragDistance()))
+  {
+      return;
+  }
+
+  mIsDragInProgress = true;
+  UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+  mLongPressTimer.stop();
+
+  if (isAbsurdPoint (event->pos ()))
+    {
+      event->accept ();
+      return;
+    }
+
+  if (currentTool == UBStylusTool::Hand && (mMouseButtonIsPressed || mTabletStylusIsPressed))
+    {
+      QPointF eventPosition = event->posF ();
+      qreal dx = eventPosition.x () - mPreviousPoint.x ();
+      qreal dy = eventPosition.y () - mPreviousPoint.y ();
+      mController->handScroll (dx, dy);
+      mPreviousPoint = eventPosition;
+      event->accept ();
+    }
+  else if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play)
+  {
+      if((event->pos() - mLastPressedMousePos).manhattanLength() < QApplication::startDragDistance()) {
+          return;
+      }
+
+      if (bIsDesktop) {
+          event->ignore();
+          return;
+      }
+
+      if (currentTool != UBStylusTool::Play || mRubberBandInPlayMode) {
+
+          if (!movingItem && (mMouseButtonIsPressed || mTabletStylusIsPressed) && mUBRubberBand && mUBRubberBand->isVisible()) {
+
+              QRect bandRect(mMouseDownPos, event->pos());
+
+              bandRect = bandRect.normalized();
+
+              mUBRubberBand->setGeometry(bandRect);
+
+              QList<QGraphicsItem *> rubberItems = items(bandRect);
+              foreach (QGraphicsItem *item, mJustSelectedItems) {
+                  if (!rubberItems.contains(item)) {
+                      item->setSelected(false);
+                      mJustSelectedItems.remove(item);
+                  }
+              }
+
+              if (currentTool == UBStylusTool::Selector)
+                  foreach (QGraphicsItem *item, items(bandRect)) {
+
+                      if (item->type() == UBGraphicsW3CWidgetItem::Type
+                              || item->type() == UBGraphicsPixmapItem::Type
+                              || item->type() == UBGraphicsMediaItem::Type
+                              || item->type() == UBGraphicsSvgItem::Type
+                              || item->type() == UBGraphicsTextItem::Type
+                              || item->type() == UBGraphicsStrokesGroup::Type
+                              || item->type() == UBGraphicsGroupContainerItem::Type) {
+
+                          if (!mJustSelectedItems.contains(item)) {
+                              item->setSelected(true);
+                              mJustSelectedItems.insert(item);
+                          }
+                      }
+                  }
+          }
+      }
+
+      handleItemMouseMove(event);
+    }
+  else if ((UBDrawingController::drawingController()->isDrawingTool())
+    && !mMouseButtonIsPressed)
+  {
+      QGraphicsView::mouseMoveEvent (event);
+  }
+  else if (currentTool == UBStylusTool::Text || currentTool == UBStylusTool::Capture)
+    {
+      if (mRubberBand && (mIsCreatingTextZone || mIsCreatingSceneGrabZone))
+        {
+          mRubberBand->setGeometry (QRect (mMouseDownPos, event->pos ()).normalized ());
+          event->accept ();
+        }
+      else
+        {
+          QGraphicsView::mouseMoveEvent (event);
+        }
+    }
+  else
+    {
+      if (!mTabletStylusIsPressed && scene ())
+      {
+          scene ()->inputDeviceMove (mapToScene (UBGeometryUtils::pointConstrainedInRect (event->pos (), rect ())), mMouseButtonIsPressed);
+      }
+      event->accept ();
+    }
+
+  if((event->pos() - mLastPressedMousePos).manhattanLength() < QApplication::startDragDistance())
+      mWidgetMoved = true;
+}
+
+void
+UBBoardView::mouseReleaseEvent (QMouseEvent *event)
+{
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+  setToolCursor (currentTool);
+  // first/ propagate device release to the scene
+  if (scene ())
+    scene ()->inputDeviceRelease ();
+
+  if (currentTool == UBStylusTool::Selector)
+  {
+      if (bIsDesktop) {
+          event->ignore();
+          return;
+      }
+
+      UBGraphicsItem *graphicsItem = dynamic_cast<UBGraphicsItem*>(movingItem);
+      if (graphicsItem)
+          graphicsItem->Delegate()->commitUndoStep();
+
+      bool bReleaseIsNeed = true;
+      if (movingItem != determineItemToPress(scene()->itemAt(this->mapToScene(event->posF().toPoint()))))
+      {
+          movingItem = NULL;
+          bReleaseIsNeed = false;
+      }
+      if (mWidgetMoved)
+      {
+          mWidgetMoved = false;
+          movingItem = NULL;
+      }
+      else
+      if (movingItem && !isCppTool(movingItem))
+      {
+          if (suspendedMousePressEvent)
+          {
+              QGraphicsView::mousePressEvent(suspendedMousePressEvent);     // suspendedMousePressEvent is deleted by old Qt event loop
+              movingItem = NULL;
+              delete suspendedMousePressEvent;
+              suspendedMousePressEvent = NULL;
+              bReleaseIsNeed = true;
+          }
+          else
+          {
+             if (isUBItem(movingItem) &&
+                DelegateButton::Type != movingItem->type() &&
+                QGraphicsSvgItem::Type !=  movingItem->type() &&
+                UBGraphicsDelegateFrame::Type !=  movingItem->type() &&
+                UBGraphicsCache::Type != movingItem->type() &&
+                QGraphicsWebView::Type != movingItem->type() && // for W3C widgets as Tools.
+                !(!isMultipleSelectionEnabled() && movingItem->parentItem() && UBGraphicsWidgetItem::Type == movingItem->type() && UBGraphicsGroupContainerItem::Type == movingItem->parentItem()->type()))
+             {
+                 bReleaseIsNeed = false;
+                 if (movingItem->isSelected() && isMultipleSelectionEnabled())
+                    movingItem->setSelected(false);
+                 else
+                 if (movingItem->parentItem() && movingItem->parentItem()->isSelected() && isMultipleSelectionEnabled())
+                    movingItem->parentItem()->setSelected(false);
+                 else
+                 {
+                    if (movingItem->isSelected())
+                        bReleaseIsNeed = true;
+
+                    movingItem->setSelected(true);
+                 }
+
+             }
+          }
+      }
+      else
+          bReleaseIsNeed = true;
+
+      if (mUBRubberBand && mUBRubberBand->isVisible()) {
+          mUBRubberBand->hide();
+      }
+
+      if (bReleaseIsNeed)
+      {
+          QGraphicsView::mouseReleaseEvent (event);
+      }
+  }
+  else if (currentTool == UBStylusTool::Play)
+  {
+      if (bIsDesktop) {
+          event->ignore();
+          return;
+      }
+
+      if (mWidgetMoved)
+      {
+          movingItem = NULL;
+          mWidgetMoved = false;
+      }
+      else
+      {
+          if (suspendedMousePressEvent)
+          {
+              QGraphicsView::mousePressEvent(suspendedMousePressEvent);     // suspendedMousePressEvent is deleted by old Qt event loop
+              movingItem = NULL;
+              delete suspendedMousePressEvent;
+              suspendedMousePressEvent = NULL;
+          }
+      }
+      QGraphicsView::mouseReleaseEvent (event);
+  }
+  else if (currentTool == UBStylusTool::Text)
+    {
+      if (mRubberBand)
+        mRubberBand->hide ();
+
+      if (scene () && mRubberBand && mIsCreatingTextZone)
+        {
+          QRect rubberRect = mRubberBand->geometry ();
+
+          UBGraphicsTextItem* textItem = scene()->addTextHtml ("", mapToScene (rubberRect.topLeft ()));
+          event->accept ();
+
+          UBDrawingController::drawingController ()->setStylusTool (UBStylusTool::Selector);
+
+          textItem->setSelected (true);
+          textItem->setFocus();
+        }
+      else
+        {
+          QGraphicsView::mouseReleaseEvent (event);
+        }
+
+      mIsCreatingTextZone = false;
+    }
+  else if (currentTool == UBStylusTool::Capture)
+    {
+      if (mRubberBand)
+        mRubberBand->hide ();
+
+      if (scene () && mRubberBand && mIsCreatingSceneGrabZone && mRubberBand->geometry ().width () > 16)
+        {
+          QRect rect = mRubberBand->geometry ();
+          QPointF sceneTopLeft = mapToScene (rect.topLeft ());
+          QPointF sceneBottomRight = mapToScene (rect.bottomRight ());
+          QRectF sceneRect (sceneTopLeft, sceneBottomRight);
+
+          mController->grabScene (sceneRect);
+
+          event->accept ();
+        }
+      else
+        {
+          QGraphicsView::mouseReleaseEvent (event);
+        }
+
+      mIsCreatingSceneGrabZone = false;
+    }
+  else
+    {
+      if (mPendingStylusReleaseEvent || mMouseButtonIsPressed)
+        {
+          event->accept ();
+        }
+    }
+
+  mMouseButtonIsPressed = false;
+  mPendingStylusReleaseEvent = false;
+  mTabletStylusIsPressed = false;
+  movingItem = NULL;
+
+  mLongPressTimer.stop();
+}
+
+void
+UBBoardView::forcedTabletRelease ()
+{
+
+  if (mMouseButtonIsPressed || mTabletStylusIsPressed || mPendingStylusReleaseEvent)
+    {
+      qWarning () << "dirty mouse/tablet state:";
+      qWarning () << "mMouseButtonIsPressed =" << mMouseButtonIsPressed;
+      qWarning () << "mTabletStylusIsPressed = " << mTabletStylusIsPressed;
+      qWarning () << "mPendingStylusReleaseEvent" << mPendingStylusReleaseEvent;
+      qWarning () << "forcing device release";
+
+      scene ()->inputDeviceRelease ();
+
+      mMouseButtonIsPressed = false;
+      mTabletStylusIsPressed = false;
+      mPendingStylusReleaseEvent = false;
+    }
+}
+
+void
+UBBoardView::mouseDoubleClickEvent (QMouseEvent *event)
+{
+  // We don't want a double click, we want two clicks
+  mousePressEvent (event);
+}
+
+void
+UBBoardView::wheelEvent (QWheelEvent *wheelEvent)
+{
+  if (isInteractive () && wheelEvent->orientation () == Qt::Vertical)
+    {
+      // Too many wheelEvent are sent, how should we handle them to "smoothly" zoom ?
+      // something like zoom( pow(zoomFactor, event->delta() / 120) )
+
+      // use DateTime man, store last event time, and if if less than 300ms than this is one big scroll
+      // and move scroll with one const speed.
+        // so, you no will related with scroll event count
+    }
+
+    QList<QGraphicsItem *> selItemsList = scene()->selectedItems();
+    // if NO have selected items, than no need process mouse wheel. just exist
+    if( selItemsList.count() > 0 )
+    {
+        // only one selected item possible, so we will work with first item only
+        QGraphicsItem * selItem = selItemsList[0];
+
+        // get items list under mouse cursor
+        QPointF scenePos = mapToScene(wheelEvent->pos());
+        QList<QGraphicsItem *> itemsList = scene()->items(scenePos);
+
+        QBool isSlectedAndMouseHower = itemsList.contains(selItem);
+        if(isSlectedAndMouseHower)
+        {
+            QGraphicsView::wheelEvent(wheelEvent);
+            wheelEvent->accept();
+        }
+
+    }
+
+}
+
+void
+UBBoardView::leaveEvent (QEvent * event)
+{
+  if (scene ())
+    scene ()->leaveEvent (event);
+
+  QGraphicsView::leaveEvent (event);
+}
+
+void
+UBBoardView::drawItems (QPainter *painter, int numItems,
+                        QGraphicsItem* items[],
+                        const QStyleOptionGraphicsItem options[])
+{
+  if (!mFilterZIndex)
+    {
+      QGraphicsView::drawItems (painter, numItems, items, options);
+    }
+  else
+    {
+      int count = 0;
+
+      QGraphicsItem** itemsFiltered = new QGraphicsItem*[numItems];
+      QStyleOptionGraphicsItem *optionsFiltered = new QStyleOptionGraphicsItem[numItems];
+
+      for (int i = 0; i < numItems; i++)
+        {
+          if (shouldDisplayItem (items[i]))
+            {
+              itemsFiltered[count] = items[i];
+              optionsFiltered[count] = options[i];
+              count++;
+            }
+        }
+
+      QGraphicsView::drawItems (painter, count, itemsFiltered, optionsFiltered);
+
+      delete[] optionsFiltered;
+      delete[] itemsFiltered;
+    }
+}
+
+
+void UBBoardView::dragMoveEvent(QDragMoveEvent *event)
+{
+  QGraphicsView::dragMoveEvent(event);
+  event->acceptProposedAction();
+}
+
+void UBBoardView::dropEvent (QDropEvent *event)
+{
+    QGraphicsItem *onItem = itemAt(event->pos().x(),event->pos().y());
+    if (onItem && onItem->type() == UBGraphicsWidgetItem::Type) {
+        QGraphicsView::dropEvent(event);
+    } else {
+        if (!event->source()
+                || qobject_cast<UBThumbnailWidget *>(event->source())
+                || qobject_cast<QWebView*>(event->source())
+                || qobject_cast<UBTGMediaWidget*>(event->source())
+                || qobject_cast<QListView *>(event->source())
+                || qobject_cast<UBTGDraggableTreeItem*>(event->source())) {
+            mController->processMimeData (event->mimeData (), mapToScene (event->pos ()));
+            event->acceptProposedAction();
+        }
+    }
+    //prevent features in UBFeaturesWidget deletion from the model when event is processing inside
+    //Qt base classes
+    if (event->dropAction() == Qt::MoveAction) {
+        event->setDropAction(Qt::CopyAction);
+    }
+}
+
+void
+UBBoardView::resizeEvent (QResizeEvent * event)
+{
+  const qreal maxWidth = width () * 10;
+  const qreal maxHeight = height () * 10;
+
+  setSceneRect (-(maxWidth / 2), -(maxHeight / 2), maxWidth, maxHeight);
+  centerOn (0, 0);
+
+  emit resized (event);
+}
+
+void
+UBBoardView::drawBackground (QPainter *painter, const QRectF &rect)
+{
+  if (testAttribute (Qt::WA_TranslucentBackground))
+    {
+      QGraphicsView::drawBackground (painter, rect);
+      return;
+    }
+
+  bool darkBackground = scene () && scene ()->isDarkBackground ();
+
+  if (darkBackground)
+    {
+      painter->fillRect (rect, QBrush (QColor (Qt::black)));
+    }
+  else
+    {
+      painter->fillRect (rect, QBrush (QColor (Qt::white)));
+    }
+
+  if (transform ().m11 () > 0.5)
+    {
+      QColor bgCrossColor;
+
+      if (darkBackground)
+        bgCrossColor = UBSettings::crossDarkBackground;
+      else
+        bgCrossColor = UBSettings::crossLightBackground;
+
+      if (transform ().m11 () < 1.0)
+        {
+          int alpha = 255 * transform ().m11 () / 2;
+          bgCrossColor.setAlpha (alpha); // fade the crossing on small zooms
+        }
+
+      painter->setPen (bgCrossColor);
+
+      if (scene () && scene ()->isCrossedBackground ())
+        {
+          qreal firstY = ((int) (rect.y () / UBSettings::crossSize)) * UBSettings::crossSize;
+
+          for (qreal yPos = firstY; yPos < rect.y () + rect.height (); yPos += UBSettings::crossSize)
+            {
+              painter->drawLine (rect.x (), yPos, rect.x () + rect.width (), yPos);
+            }
+
+          qreal firstX = ((int) (rect.x () / UBSettings::crossSize)) * UBSettings::crossSize;
+
+          for (qreal xPos = firstX; xPos < rect.x () + rect.width (); xPos += UBSettings::crossSize)
+            {
+              painter->drawLine (xPos, rect.y (), xPos, rect.y () + rect.height ());
+            }
+        }
+    }
+
+  if (!mFilterZIndex && scene ())
+    {
+      QSize pageNominalSize = scene ()->nominalSize ();
+
+      if (pageNominalSize.isValid ())
+        {
+          qreal penWidth = 8.0 / transform ().m11 ();
+
+          QRectF pageRect (pageNominalSize.width () / -2, pageNominalSize.height () / -2
+                           , pageNominalSize.width (), pageNominalSize.height ());
+
+          pageRect.adjust (-penWidth / 2, -penWidth / 2, penWidth / 2, penWidth / 2);
+
+          QColor docSizeColor;
+
+          if (darkBackground)
+            docSizeColor = UBSettings::documentSizeMarkColorDarkBackground;
+          else
+            docSizeColor = UBSettings::documentSizeMarkColorLightBackground;
+
+          QPen pen (docSizeColor);
+          pen.setWidth (penWidth);
+          painter->setPen (pen);
+          painter->drawRect (pageRect);
+        }
+    }
+}
+
+void
+UBBoardView::settingChanged (QVariant newValue)
+{
+  Q_UNUSED (newValue);
+
+  mPenPressureSensitive = UBSettings::settings ()->boardPenPressureSensitive->get ().toBool ();
+  mMarkerPressureSensitive = UBSettings::settings ()->boardMarkerPressureSensitive->get ().toBool ();
+  mUseHighResTabletEvent = UBSettings::settings ()->boardUseHighResTabletEvent->get ().toBool ();
+}
+
+void UBBoardView::virtualKeyboardActivated(bool b)
+{
+    UBPlatformUtils::setWindowNonActivableFlag(this, b);
+    mVirtualKeyboardActive = b;
+    setInteractive(!b);
+}
+
+
+// Apple remote desktop sends funny events when the transmission is bad
+
+bool UBBoardView::isAbsurdPoint(QPoint point)
+{
+    QDesktopWidget *desktop = qApp->desktop ();
+    bool isValidPoint = false;
+
+    for (int i = 0; i < desktop->numScreens (); i++)
+    {
+      QRect screenRect = desktop->screenGeometry (i);
+      isValidPoint = isValidPoint || screenRect.contains (mapToGlobal(point));
+    }
+
+    return !isValidPoint;
+}
+
+void
+UBBoardView::focusOutEvent (QFocusEvent * event)
+{
+  Q_UNUSED (event);
+}
+
+void
+UBBoardView::setToolCursor (int tool)
+{
+  QWidget *controlViewport = viewport ();
+  switch (tool)
+    {
+    case UBStylusTool::Pen:
+      controlViewport->setCursor (UBResources::resources ()->penCursor);
+      break;
+    case UBStylusTool::Eraser:
+      controlViewport->setCursor (UBResources::resources ()->eraserCursor);
+      scene()->hideEraser();
+      break;
+    case UBStylusTool::Marker:
+      controlViewport->setCursor (UBResources::resources ()->markerCursor);
+      break;
+    case UBStylusTool::Pointer:
+      controlViewport->setCursor (UBResources::resources ()->pointerCursor);
+      break;
+    case UBStylusTool::Hand:
+      controlViewport->setCursor (UBResources::resources ()->handCursor);
+      break;
+    case UBStylusTool::ZoomIn:
+      controlViewport->setCursor (UBResources::resources ()->zoomInCursor);
+      break;
+    case UBStylusTool::ZoomOut:
+      controlViewport->setCursor (UBResources::resources ()->zoomOutCursor);
+      break;
+    case UBStylusTool::Selector:
+      controlViewport->setCursor (UBResources::resources ()->arrowCursor);
+      break;
+    case UBStylusTool::Play:
+      controlViewport->setCursor (UBResources::resources ()->playCursor);
+      break;
+    case UBStylusTool::Line:
+      controlViewport->setCursor (UBResources::resources ()->penCursor);
+      break;
+    case UBStylusTool::Text:
+      controlViewport->setCursor (UBResources::resources ()->textCursor);
+      break;
+    case UBStylusTool::Capture:
+      controlViewport->setCursor (UBResources::resources ()->penCursor);
+      break;
+    default:
+      Q_ASSERT (false);
+      //failsafe
+      controlViewport->setCursor (UBResources::resources ()->penCursor);
+    }
+}
+
+
+bool UBBoardView::hasSelectedParents(QGraphicsItem * item)
+{
+    if (item->isSelected())
+        return true;
+    if (item->parentItem()==NULL)
+        return false;
+    return hasSelectedParents(item->parentItem());
+}
diff --git a/Sankore-3.1/src/board/UBBoardView.h b/Sankore-3.1/src/board/UBBoardView.h
index 21bc12b..91fa280 100644
--- a/Sankore-3.1/src/board/UBBoardView.h
+++ b/Sankore-3.1/src/board/UBBoardView.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBBOARDVIEW_H_
 #define UBBOARDVIEW_H_
@@ -21,19 +28,18 @@
 #include "domain/UBGraphicsDelegateFrame.h"
 
 class UBBoardController;
-class UBAppleWidget;
 class UBGraphicsScene;
 class UBGraphicsWidgetItem;
 class UBRubberBand;
 
 class UBBoardView : public QGraphicsView
 {
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
 
-        UBBoardView(UBBoardController* pController, QWidget* pParent = 0);
-        UBBoardView(UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent = 0);
+        UBBoardView(UBBoardController* pController, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false);
+        UBBoardView(UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false);
         virtual ~UBBoardView();
 
         UBGraphicsScene* scene();
@@ -42,6 +48,12 @@ class UBBoardView : public QGraphicsView
 
         void setToolCursor(int tool);
 
+        void rubberItems();
+        void moveRubberedItems(QPointF movingVector);
+
+        void setMultiselection(bool enable);
+        bool isMultipleSelectionEnabled() { return mMultipleSelectionIsEnabled; }
+
     signals:
 
         void resized(QResizeEvent* event);
@@ -51,9 +63,23 @@ class UBBoardView : public QGraphicsView
 
     protected:
 
+        bool itemIsLocked(QGraphicsItem *item);
+        bool isUBItem(QGraphicsItem *item); // we should to determine items who is not UB and use general scene behavior for them.
+        bool isCppTool(QGraphicsItem *item);
+        void handleItemsSelection(QGraphicsItem *item);
+        bool itemShouldReceiveMousePressEvent(QGraphicsItem *item);
+        bool itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item);
+        bool itemHaveParentWithType(QGraphicsItem *item, int type);
+        bool itemShouldBeMoved(QGraphicsItem *item);
+        QGraphicsItem* determineItemToPress(QGraphicsItem *item);
+        QGraphicsItem* determineItemToMove(QGraphicsItem *item);
+        void handleItemMousePress(QMouseEvent *event);
+        void handleItemMouseMove(QMouseEvent *event);
+
         virtual bool event (QEvent * e);
 
         virtual void keyPressEvent(QKeyEvent *event);
+        virtual void keyReleaseEvent(QKeyEvent *event);
         virtual void tabletEvent(QTabletEvent * event);
         virtual void mouseDoubleClickEvent(QMouseEvent *event);
         virtual void mousePressEvent(QMouseEvent *event);
@@ -124,9 +150,23 @@ class UBBoardView : public QGraphicsView
         QGraphicsItem *movingItem;
         QMouseEvent *suspendedMousePressEvent;
 
+        bool moveRubberBand;
         UBRubberBand *mUBRubberBand;
+        
+        QList<QGraphicsItem *> mRubberedItems;
         QSet<QGraphicsItem*> mJustSelectedItems;
 
+        int mLongPressInterval;
+        QTimer mLongPressTimer;
+
+        bool mIsDragInProgress;
+        bool mMultipleSelectionIsEnabled;
+        bool bIsControl;
+        bool bIsDesktop;
+        bool mRubberBandInPlayMode;
+
+        static bool hasSelectedParents(QGraphicsItem * item);
+
     private slots:
 
         void settingChanged(QVariant newValue);
@@ -134,6 +174,7 @@ class UBBoardView : public QGraphicsView
 	public slots:
 
 		void virtualKeyboardActivated(bool b);
+        void longPressEvent();
 
 };
 
diff --git a/Sankore-3.1/src/board/UBDrawingController.cpp b/Sankore-3.1/src/board/UBDrawingController.cpp
index e03ef40..fcd03a0 100644
--- a/Sankore-3.1/src/board/UBDrawingController.cpp
+++ b/Sankore-3.1/src/board/UBDrawingController.cpp
@@ -1,25 +1,34 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBDrawingController.h"
 
 #include "core/UBSettings.h"
 #include "core/UBApplication.h"
 
-#include "gui/UBMainWindow.h"
+#include "domain/UBGraphicsScene.h"
+#include "board/UBBoardController.h"
 
+#include "gui/UBMainWindow.h"
 #include "core/memcheck.h"
 
 UBDrawingController* UBDrawingController::sDrawingController = 0;
@@ -45,8 +54,7 @@ UBDrawingController::UBDrawingController(QObject * parent)
     , mActiveRuler(NULL)
     , mStylusTool((UBStylusTool::Enum)-1)
     , mLatestDrawingTool((UBStylusTool::Enum)-1)
-    , mDrawingMode(DRAWING_MODE)
-
+	, mIsDesktopMode(false)
 {
     connect(UBSettings::settings(), SIGNAL(colorContextChanged()), this, SIGNAL(colorPaletteChanged()));
 
@@ -54,6 +62,7 @@ UBDrawingController::UBDrawingController(QObject * parent)
     connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(eraserToolSelected(bool)));
     connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(markerToolSelected(bool)));
     connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(selectorToolSelected(bool)));
+    connect(UBApplication::mainWindow->actionPlay, SIGNAL(triggered(bool)), this, SLOT(playToolSelected(bool)));
     connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(handToolSelected(bool)));
     connect(UBApplication::mainWindow->actionZoomIn, SIGNAL(triggered(bool)), this, SLOT(zoomInToolSelected(bool)));
     connect(UBApplication::mainWindow->actionZoomOut, SIGNAL(triggered(bool)), this, SLOT(zoomOutToolSelected(bool)));
@@ -86,6 +95,7 @@ void UBDrawingController::setStylusTool(int tool)
 {
     if (tool != mStylusTool)
     {
+    	UBApplication::boardController->activeScene()->deselectAllItems();
         if (mStylusTool == UBStylusTool::Pen || mStylusTool == UBStylusTool::Marker
                 || mStylusTool == UBStylusTool::Line)
         {
@@ -106,20 +116,16 @@ void UBDrawingController::setStylusTool(int tool)
         mStylusTool = (UBStylusTool::Enum)tool;
 
 
-        if(eDrawingMode_Vector == DRAWING_MODE){
-            mDrawingMode = eDrawingMode_Vector;
-        }
-
         if (mStylusTool == UBStylusTool::Pen)
             UBApplication::mainWindow->actionPen->setChecked(true);
-        else if (mStylusTool == UBStylusTool::Eraser){
+        else if (mStylusTool == UBStylusTool::Eraser)
             UBApplication::mainWindow->actionEraser->setChecked(true);
-            mDrawingMode = eDrawingMode_Artistic;
-        }
         else if (mStylusTool == UBStylusTool::Marker)
             UBApplication::mainWindow->actionMarker->setChecked(true);
         else if (mStylusTool == UBStylusTool::Selector)
             UBApplication::mainWindow->actionSelector->setChecked(true);
+        else if (mStylusTool == UBStylusTool::Play)
+            UBApplication::mainWindow->actionPlay->setChecked(true);
         else if (mStylusTool == UBStylusTool::Hand)
             UBApplication::mainWindow->actionHand->setChecked(true);
         else if (mStylusTool == UBStylusTool::ZoomIn)
@@ -347,6 +353,12 @@ void UBDrawingController::selectorToolSelected(bool checked)
         setStylusTool(UBStylusTool::Selector);
 }
 
+void UBDrawingController::playToolSelected(bool checked)
+{
+    if (checked)
+        setStylusTool(UBStylusTool::Play);
+}
+
 void UBDrawingController::handToolSelected(bool checked)
 {
     if (checked)
@@ -395,12 +407,3 @@ void UBDrawingController::captureToolSelected(bool checked)
         setStylusTool(UBStylusTool::Capture);
 }
 
-void UBDrawingController::setDrawingMode(eDrawingMode mode)
-{
-    mDrawingMode = mode;
-}
-
-eDrawingMode UBDrawingController::drawingMode()
-{
-    return mDrawingMode;
-}
diff --git a/Sankore-3.1/src/board/UBDrawingController.h b/Sankore-3.1/src/board/UBDrawingController.h
index 4c620f1..b52c9fa 100644
--- a/Sankore-3.1/src/board/UBDrawingController.h
+++ b/Sankore-3.1/src/board/UBDrawingController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDRAWINGCONTROLLER_H_
 #define UBDRAWINGCONTROLLER_H_
 
@@ -22,13 +29,6 @@
 
 class UBAbstractDrawRuler;
 
-typedef enum{
-    eDrawingMode_Artistic,
-    eDrawingMode_Vector
-}eDrawingMode;
-
-#define DRAWING_MODE    eDrawingMode_Vector
-
 class UBDrawingController : public QObject
 {
     Q_OBJECT;
@@ -56,11 +56,17 @@ class UBDrawingController : public QObject
         void setPenColor(bool onDarkBackground, const QColor& color, int pIndex);
         void setMarkerColor(bool onDarkBackground, const QColor& color, int pIndex);
         void setMarkerAlpha(qreal alpha);
-        void setDrawingMode(eDrawingMode mode);
-        eDrawingMode drawingMode();
 
         UBAbstractDrawRuler* mActiveRuler;
 
+        void setInDestopMode(bool mode){
+        	mIsDesktopMode = mode;
+        }
+
+        bool isInDesktopMode(){
+        	return mIsDesktopMode;
+        }
+
     public slots:
 
         void setStylusTool(int tool);
@@ -78,7 +84,7 @@ class UBDrawingController : public QObject
     private:
         UBStylusTool::Enum mStylusTool;
         UBStylusTool::Enum mLatestDrawingTool;
-        eDrawingMode mDrawingMode;
+        bool mIsDesktopMode;
 
         static UBDrawingController* sDrawingController;
 
@@ -88,6 +94,7 @@ class UBDrawingController : public QObject
         void eraserToolSelected(bool checked);
         void markerToolSelected(bool checked);
         void selectorToolSelected(bool checked);
+        void playToolSelected(bool checked);
         void handToolSelected(bool checked);
         void zoomInToolSelected(bool checked);
         void zoomOutToolSelected(bool checked);
diff --git a/Sankore-3.1/src/board/UBFeaturesController.cpp b/Sankore-3.1/src/board/UBFeaturesController.cpp
index 5bd9f5b..96d29b9 100644
--- a/Sankore-3.1/src/board/UBFeaturesController.cpp
+++ b/Sankore-3.1/src/board/UBFeaturesController.cpp
@@ -1,5 +1,28 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include <QGraphicsItem>
 #include <QPointF>
+#include <QtGui>
 
 #include "core/UBApplication.h"
 #include "board/UBBoardController.h"
@@ -9,33 +32,237 @@
 #include "frameworks/UBFileSystemUtils.h"
 #include "frameworks/UBPlatformUtils.h"
 
-
 #include "core/UBDownloadManager.h"
-#include "domain/UBAbstractWidget.h"
 #include "domain/UBGraphicsScene.h"
 #include "domain/UBGraphicsSvgItem.h"
 #include "domain/UBGraphicsPixmapItem.h"
 #include "domain/UBGraphicsVideoItem.h"
 #include "domain/UBGraphicsWidgetItem.h"
 
-UBFeature::UBFeature(const QString &url, const QPixmap &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type)
-: virtualPath(url), mThumbnail(icon), mName(name), mPath(realPath), elementType(type)
+#include "gui/UBFeaturesWidget.h"
+
+const QString UBFeaturesController::virtualRootName = "root";
+const QString UBFeaturesController::rootPath  = "/" + virtualRootName;
+
+const QString UBFeaturesController::appPath = rootPath + "/Applications";
+const QString UBFeaturesController::audiosPath = rootPath + "/Audios";
+const QString UBFeaturesController::moviesPath = rootPath + "/Movies";
+const QString UBFeaturesController::picturesPath = rootPath + "/Pictures";
+const QString UBFeaturesController::flashPath = rootPath + "/Animations";
+const QString UBFeaturesController::interactPath = rootPath + "/Interactivities";
+const QString UBFeaturesController::shapesPath = rootPath + "/Shapes";
+const QString UBFeaturesController::trashPath = rootPath + "/Trash";
+const QString UBFeaturesController::favoritePath = rootPath + "/Favorites";
+const QString UBFeaturesController::webSearchPath = rootPath + "/Web search";
+
+
+void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet<QUrl> &pFavoriteSet)
 {
-	
+    Q_ASSERT(QFileInfo(currentPath.toLocalFile()).exists());
+
+    QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currentPath.toLocalFile());
+
+    QFileInfoList::iterator fileInfo;
+    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1) {
+        if (abort) {
+            return;
+        }
+
+        QString fullFileName = fileInfo->absoluteFilePath();
+        UBFeatureElementType featureType = UBFeaturesController::fileTypeFromUrl(fullFileName);
+        QString fileName = fileInfo->fileName();
+
+        QImage icon = UBFeaturesController::getIcon(fullFileName, featureType);
+
+        if ( fullFileName.contains(".thumbnail."))
+            continue;
+
+        UBFeature testFeature(currVirtualPath + "/" + fileName, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType);
+
+        emit sendFeature(testFeature);
+        emit featureSent();
+        emit scanPath(fullFileName);
+
+        if ( pFavoriteSet.find(QUrl::fromLocalFile(fullFileName)) != pFavoriteSet.end()) {
+            //TODO send favoritePath from the controller or make favoritePath public and static
+            emit sendFeature(UBFeature( UBFeaturesController::favoritePath + "/" + fileName, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType));
+        }
+
+        if (featureType == FEATURE_FOLDER) {
+            scanFS(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName, pFavoriteSet);
+        }
+    }
+}
+
+void UBFeaturesComputingThread::scanAll(QList<QPair<QUrl, UBFeature> > pScanningData, const QSet<QUrl> &pFavoriteSet)
+{
+    for (int i = 0; i < pScanningData.count(); i++) {
+        if (abort) {
+            return;
+        }
+        QPair<QUrl, UBFeature> curPair = pScanningData.at(i);
+
+        emit scanCategory(curPair.second.getDisplayName());
+        scanFS(curPair.first, curPair.second.getFullVirtualPath(), pFavoriteSet);
+    }
+}
+
+int UBFeaturesComputingThread::featuresCount(const QUrl &pPath)
+{
+    int noItems = 0;
+
+    QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(pPath.toLocalFile());
+
+    QFileInfoList::iterator fileInfo;
+    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1) {
+        QString fullFileName = fileInfo->absoluteFilePath();
+        UBFeatureElementType featureType = UBFeaturesController::fileTypeFromUrl(fullFileName);
+
+        if (featureType != FEATURE_INVALID && !fullFileName.contains(".thumbnail.")) {
+            noItems++;
+        }
+
+        if (featureType == FEATURE_FOLDER) {
+            noItems += featuresCount(QUrl::fromLocalFile(fullFileName));
+        }
+    }
+
+    return noItems;
+}
+
+int UBFeaturesComputingThread::featuresCountAll(QList<QPair<QUrl, UBFeature> > pScanningData)
+{
+    int noItems = 0;
+    for (int i = 0; i < pScanningData.count(); i++) {
+        QPair<QUrl, UBFeature> curPair = pScanningData.at(i);
+        noItems += featuresCount(curPair.first);
+    }
+
+    return noItems;
+}
+
+UBFeaturesComputingThread::UBFeaturesComputingThread(QObject *parent) :
+QThread(parent)
+{
+    restart = false;
+    abort = false;
+}
+
+void UBFeaturesComputingThread::compute(const QList<QPair<QUrl, UBFeature> > &pScanningData, QSet<QUrl> *pFavoritesSet)
+{
+    QMutexLocker curLocker(&mMutex);
+
+    mScanningData = pScanningData;
+    mFavoriteSet = *pFavoritesSet;
+
+    if (!isRunning()) {
+        start(LowPriority);
+    } else {
+        restart = true;
+        mWaitCondition.wakeOne();
+    }
+}
+
+void UBFeaturesComputingThread::run()
+{
+    forever {
+//        qDebug() << "Custom thread started execution";
+
+        mMutex.lock();
+        QList<QPair<QUrl, UBFeature> > searchData = mScanningData;
+        QSet<QUrl> favoriteSet = mFavoriteSet;
+        mMutex.unlock();
+
+        if (abort) {
+            return;
+        }
+        if (restart) {
+            break;
+        }
+
+//        QTime curTime = QTime::currentTime();
+        int fsCnt = featuresCountAll(searchData);
+//        int msecsto = curTime.msecsTo(QTime::currentTime());
+//        qDebug() << "time on evaluation" << msecsto;
+
+        emit maxFilesCountEvaluated(fsCnt);
+
+        emit scanStarted();
+//        curTime = QTime::currentTime();
+        scanAll(searchData, favoriteSet);
+//        qDebug() << "Time on finishing" << curTime.msecsTo(QTime::currentTime());
+        emit scanFinished();
+
+        mMutex.lock();
+        if (!abort) {
+            mWaitCondition.wait(&mMutex);
+        }
+        restart = false;
+        mMutex.unlock();
+
+    }
+}
+
+UBFeaturesComputingThread::~UBFeaturesComputingThread()
+{
+//    qDebug() <<  "thread destructor catched";
+
+    mMutex.lock();
+    abort = true;
+    mWaitCondition.wakeOne();
+    mMutex.unlock();
+
+    wait();
+}
+
+UBFeature::UBFeature(const QString &url, const QImage &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type)
+    : mThumbnail(icon), mDisplayName(name), mPath(realPath), elementType(type)
+{
+    mName = getNameFromVirtualPath(url);
+    virtualDir = getVirtualDirFromVirtualPath(url);
+}
+
+UBFeature::~UBFeature()
+{
+}
+
+QString UBFeature::getNameFromVirtualPath(const QString &pVirtPath)
+{
+    QString result;
+    int slashPos = pVirtPath.lastIndexOf("/");
+    if (slashPos != -1) {
+        result = pVirtPath.right(pVirtPath.count() - slashPos - 1);
+    } else {
+        qDebug() << "UBFeature: incorrect virtual path parameter specified";
+    }
+
+    return result;
+}
+
+QString UBFeature::getVirtualDirFromVirtualPath(const QString &pVirtPath)
+{
+    QString result;
+    int slashPos = pVirtPath.lastIndexOf("/");
+    if (slashPos != -1) {
+        result = pVirtPath.left(slashPos);
+    } else {
+        qDebug() << "UBFeature: incorrect virtual path parameter specified";
+    }
+
+    return result;
 }
 
 QString UBFeature::getUrl() const
 {
 	if ( elementType == FEATURE_INTERNAL )
         return getFullPath().toString();
-	/*if ( UBApplication::isFromWeb( getFullPath() ) )
-		return QUrl( getFullPath() );*/
+
     return getFullPath().toLocalFile();
 }
 
 bool UBFeature::operator ==( const UBFeature &f )const
 {
-	return virtualPath == f.getVirtualPath() && mName == f.getName() && mPath == f.getFullPath() && elementType == f.getType();
+    return virtualDir == f.getVirtualPath() && mName == f.getName() && mPath == f.getFullPath() && elementType == f.getType();
 }
 
 bool UBFeature::operator !=( const UBFeature &f )const
@@ -46,153 +273,214 @@ bool UBFeature::operator !=( const UBFeature &f )const
 bool UBFeature::isFolder() const
 {
 	return elementType == FEATURE_CATEGORY || elementType == FEATURE_TRASH || elementType == FEATURE_FAVORITE
-		|| elementType == FEATURE_FOLDER;
+        || elementType == FEATURE_FOLDER || elementType == FEATURE_SEARCH;
 }
 
-bool UBFeature::isDeletable()const
+bool UBFeature::allowedCopy() const
 {
-	return elementType == FEATURE_ITEM;
+    return isFolder()
+            && elementType != FEATURE_CATEGORY
+            && elementType != FEATURE_SEARCH;
 }
 
-UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
-        QObject(pParentWidget),
-		mLastItemOffsetIndex(0)
+bool UBFeature::isDeletable() const
 {
-	rootPath = "/root";
-	initDirectoryTree();
+    return elementType == FEATURE_ITEM
+            || elementType == FEATURE_AUDIO
+            || elementType == FEATURE_VIDEO
+            || elementType == FEATURE_IMAGE
+            || elementType == FEATURE_FLASH
+            || elementType == FEATURE_FOLDER
+    //Ilia. Just a hotfix. Permission mechanism for UBFeatures should be reworked
+            || getVirtualPath().startsWith("/root/Applications/Web");
 }
 
-void UBFeaturesController::initDirectoryTree()
+bool UBFeature::inTrash() const
 {
-    mUserAudioDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->userAudioDirectory() );
-	mUserVideoDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->userVideoDirectory() );
-    mUserPicturesDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->userImageDirectory() );
-    mUserInteractiveDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->userInteractiveDirectory() );
-    mUserAnimationDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->userAnimationDirectory() );
+    return getFullPath().toLocalFile().startsWith(QUrl::fromLocalFile(UBSettings::userTrashDirPath()).toLocalFile() );
+}
 
-	mLibPicturesDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->applicationImageLibraryDirectory() );
-	mLibInteractiveDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->applicationInteractivesDirectory() );
-	mLibApplicationsDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->applicationApplicationsLibraryDirectory() );
-	mLibShapesDirectoryPath = QUrl::fromLocalFile( UBSettings::settings()->applicationShapeLibraryDirectory() );
-	mLibSearchDirectoryPath =QUrl::fromLocalFile(  UBSettings::settings()->userSearchDirectory() );
-	trashDirectoryPath = QUrl::fromLocalFile( UBSettings::userTrashDirPath() );
+UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
+    QObject(pParentWidget)
+    ,featuresList(0)
+    ,mLastItemOffsetIndex(0)
+{
+    //Initializing physical directories from UBSettings
+    mUserAudioDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAudioDirectory());
+    mUserVideoDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userVideoDirectory());
+    mUserPicturesDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userImageDirectory());
+    mUserInteractiveDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userInteractiveDirectory());
+    mUserAnimationDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAnimationDirectory());
+
+    mLibPicturesDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationImageLibraryDirectory());
+    mLibAudiosDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationAudiosLibraryDirectory());
+    mLibVideosDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationVideosLibraryDirectory());
+    mLibAnimationsDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationAnimationsLibraryDirectory());
+    mLibInteractiveDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationInteractivesDirectory());
+    mLibApplicationsDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationApplicationsLibraryDirectory());
+    mLibShapesDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationShapeLibraryDirectory());
+    mLibSearchDirectoryPath =QUrl::fromLocalFile(UBSettings::settings()->userSearchDirectory());
+    trashDirectoryPath = QUrl::fromLocalFile(UBSettings::userTrashDirPath());
+
+    rootElement = UBFeature(rootPath, QImage( ":images/libpalette/home.png" ), "root", QUrl());
+    audiosElement = UBFeature( audiosPath, QImage(":images/libpalette/AudiosCategory.svg"), tr("Audios") , mUserAudioDirectoryPath, FEATURE_CATEGORY);
+    moviesElement = UBFeature( moviesPath, QImage(":images/libpalette/MoviesCategory.svg"), tr("Movies") , mUserVideoDirectoryPath, FEATURE_CATEGORY);
+    picturesElement = UBFeature( picturesPath, QImage(":images/libpalette/PicturesCategory.svg"), tr("Pictures") , mUserPicturesDirectoryPath, FEATURE_CATEGORY);
+    flashElement = UBFeature( flashPath, QImage(":images/libpalette/FlashCategory.svg"), tr("Animations") , mUserAnimationDirectoryPath, FEATURE_CATEGORY);
+    interactElement = UBFeature( interactPath, QImage(":images/libpalette/InteractivesCategory.svg"), tr("Interactivities") ,  mLibInteractiveDirectoryPath, FEATURE_CATEGORY);
+    applicationsElement = UBFeature( appPath, QImage(":images/libpalette/ApplicationsCategory.svg"), tr("Applications") , mUserInteractiveDirectoryPath, FEATURE_CATEGORY);
+    shapesElement = UBFeature( shapesPath, QImage(":images/libpalette/ShapesCategory.svg"), tr("Shapes") , mLibShapesDirectoryPath, FEATURE_CATEGORY );
+    favoriteElement = UBFeature( favoritePath, QImage(":images/libpalette/FavoritesCategory.svg"), tr("Favorites"), QUrl("favorites"), FEATURE_FAVORITE );
+    webSearchElement = UBFeature( webSearchPath, QImage(":images/libpalette/WebSearchCategory.svg"), tr("Web search"), mLibSearchDirectoryPath, FEATURE_CATEGORY);
+
+    trashElement = UBFeature( trashPath, QImage(":images/libpalette/TrashCategory.svg"), tr("Trash"), trashDirectoryPath, FEATURE_TRASH);
+
+    featuresList = new QList <UBFeature>();
+
+    scanFS();
+
+    featuresModel = new UBFeaturesModel(featuresList, this);
+    featuresModel->setSupportedDragActions(Qt::CopyAction | Qt::MoveAction);
+
+    featuresProxyModel = new UBFeaturesProxyModel(this);
+    featuresProxyModel->setFilterFixedString(rootPath);
+    featuresProxyModel->setSourceModel(featuresModel);
+    featuresProxyModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
+
+    featuresSearchModel = new UBFeaturesSearchProxyModel(this);
+    featuresSearchModel->setSourceModel(featuresModel);
+    featuresSearchModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
+
+    featuresPathModel = new UBFeaturesPathProxyModel(this);
+    featuresPathModel->setPath(rootPath);
+    featuresPathModel->setSourceModel(featuresModel);
+
+    connect(featuresModel, SIGNAL(dataRestructured()), featuresProxyModel, SLOT(invalidate()));
+    connect(&mCThread, SIGNAL(sendFeature(UBFeature)), featuresModel, SLOT(addItem(UBFeature)));
+    connect(&mCThread, SIGNAL(featureSent()), this, SIGNAL(featureAddedFromThread()));
+    connect(&mCThread, SIGNAL(scanStarted()), this, SIGNAL(scanStarted()));
+    connect(&mCThread, SIGNAL(scanFinished()), this, SIGNAL(scanFinished()));
+    connect(&mCThread, SIGNAL(maxFilesCountEvaluated(int)), this, SIGNAL(maxFilesCountEvaluated(int)));
+    connect(&mCThread, SIGNAL(scanCategory(QString)), this, SIGNAL(scanCategory(QString)));
+    connect(&mCThread, SIGNAL(scanPath(QString)), this, SIGNAL(scanPath(QString)));
+    connect(UBApplication::boardController, SIGNAL(npapiWidgetCreated(QString)), this, SLOT(createNpApiFeature(QString)));
+
+    QTimer::singleShot(0, this, SLOT(startThread()));
+}
 
-	featuresList = new QList <UBFeature>();
+void UBFeaturesController::startThread()
+{
+    QList<QPair<QUrl, UBFeature> > computingData;
+
+    computingData << QPair<QUrl, UBFeature>(mLibAudiosDirectoryPath, audiosElement)
+            <<  QPair<QUrl, UBFeature>(mLibVideosDirectoryPath, moviesElement)
+            <<  QPair<QUrl, UBFeature>(mLibAnimationsDirectoryPath, flashElement)
+            <<  QPair<QUrl, UBFeature>(mLibPicturesDirectoryPath, picturesElement)
+
+            <<  QPair<QUrl, UBFeature>(mUserInteractiveDirectoryPath, applicationsElement)
+            <<  QPair<QUrl, UBFeature>(mUserAudioDirectoryPath, audiosElement)
+            <<  QPair<QUrl, UBFeature>(mUserPicturesDirectoryPath, picturesElement)
+            <<  QPair<QUrl, UBFeature>(mUserVideoDirectoryPath, moviesElement)
+            <<  QPair<QUrl, UBFeature>(mUserAnimationDirectoryPath, flashElement)
+
+            <<  QPair<QUrl, UBFeature>(mLibApplicationsDirectoryPath, applicationsElement)
+            <<  QPair<QUrl, UBFeature>(mLibShapesDirectoryPath, shapesElement)
+            <<  QPair<QUrl, UBFeature>(mLibInteractiveDirectoryPath, interactElement)
+            <<  QPair<QUrl, UBFeature>(trashDirectoryPath, trashElement)
+            <<  QPair<QUrl, UBFeature>(mLibSearchDirectoryPath, webSearchElement);
+
+    mCThread.compute(computingData, favoriteSet);
+}
 
-	QList <UBToolsManager::UBToolDescriptor> tools = UBToolsManager::manager()->allTools();
+void UBFeaturesController::createNpApiFeature(const QString &str)
+{
+    Q_ASSERT(QFileInfo(str).exists() && QFileInfo(str).isDir());
 
-	featuresList->append( UBFeature( QString(), QPixmap( ":images/libpalette/home.png" ), "root", QUrl() ) );
-	currentElement = featuresList->at(0);
-	
-	appPath = rootPath + "/Applications";
-	audiosPath = rootPath + "/Audios";
-	moviesPath = rootPath + "/Movies";
-	picturesPath = rootPath + "/Pictures";
-	flashPath = rootPath + "/Animations";
-	interactPath = rootPath + "/Interactivities";
-	shapesPath = rootPath + "/Shapes";
-	trashPath = rootPath + "/Trash";
-	favoritePath = rootPath + "/Favorites";
-
-	audiosElement = UBFeature( rootPath, QPixmap(":images/libpalette/AudiosCategory.svg"), "Audios" , mUserAudioDirectoryPath );
-	featuresList->append( audiosElement );
-	moviesElement = UBFeature( rootPath, QPixmap(":images/libpalette/MoviesCategory.svg"), "Movies" , mUserVideoDirectoryPath );
-	featuresList->append( moviesElement );
-	picturesElement = UBFeature( rootPath, QPixmap(":images/libpalette/PicturesCategory.svg"), "Pictures" , mUserPicturesDirectoryPath );
-	featuresList->append( picturesElement );
-	featuresList->append( UBFeature( rootPath, QPixmap(":images/libpalette/ApplicationsCategory.svg"), "Applications" , mUserInteractiveDirectoryPath ) );
-	flashElement = UBFeature( rootPath, QPixmap(":images/libpalette/FlashCategory.svg"), "Animations" , mUserAnimationDirectoryPath );
-	featuresList->append( flashElement );
-	interactElement = UBFeature( rootPath, QPixmap(":images/libpalette/InteractivesCategory.svg"), "Interactivities" ,  mLibInteractiveDirectoryPath );
-	featuresList->append( interactElement );
-	featuresList->append( UBFeature( rootPath, QPixmap(":images/libpalette/ShapesCategory.svg"), "Shapes" , mLibShapesDirectoryPath ) );
-	trashElement = UBFeature( rootPath, QPixmap(":images/libpalette/TrashCategory.svg"), "Trash", trashDirectoryPath, FEATURE_TRASH );
-	featuresList->append( trashElement );
-	favoriteElement = UBFeature( rootPath, QPixmap(":images/libpalette/FavoritesCategory.svg"), "Favorites", QUrl("favorites"), FEATURE_FAVORITE );
-	featuresList->append( favoriteElement );
-	webSearchElement = UBFeature( rootPath, QPixmap(":images/libpalette/WebSearchCategory.svg"), "Web search", mLibSearchDirectoryPath );
-	featuresList->append( webSearchElement );
-	loadFavoriteList();
-
-	foreach (UBToolsManager::UBToolDescriptor tool, tools)
-	{
-		featuresList->append( UBFeature( appPath, tool.icon, tool.label, QUrl( tool.id ), FEATURE_INTERNAL ) );
-		if ( favoriteSet->find( QUrl( tool.id ) ) != favoriteSet->end() )
-		{
-			featuresList->append( UBFeature( favoritePath, tool.icon, tool.label, QUrl( tool.id ), FEATURE_INTERNAL ) );
-		}
-	}
-	fileSystemScan( mUserInteractiveDirectoryPath, appPath  );
-	fileSystemScan( mUserAudioDirectoryPath, audiosPath  );
-	fileSystemScan( mUserPicturesDirectoryPath, picturesPath  );
-	fileSystemScan( mUserVideoDirectoryPath, moviesPath  );
-	fileSystemScan( mUserAnimationDirectoryPath, flashPath  );
-
-	fileSystemScan( mLibApplicationsDirectoryPath, appPath  );
-	fileSystemScan( mLibPicturesDirectoryPath, picturesPath  );
-	fileSystemScan( mLibShapesDirectoryPath, shapesPath  );
-	fileSystemScan( mLibInteractiveDirectoryPath, interactPath  );
-	fileSystemScan( trashDirectoryPath, trashPath );
-	fileSystemScan( mLibSearchDirectoryPath, rootPath + "/" + "Web search" );
-	
+    QString widgetName = QFileInfo(str).fileName();
 
+    featuresModel->addItem(UBFeature(QString(appPath + "/Web/" + widgetName), QImage(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(str))), widgetName, QUrl::fromLocalFile(str), FEATURE_INTERACTIVE));
 }
 
+void UBFeaturesController::scanFS()
+{
+    featuresList->clear();
+    featuresList->append(rootElement);
+
+    *featuresList << audiosElement
+                    << moviesElement
+                    << picturesElement
+                    << flashElement
+                    << interactElement
+                    << applicationsElement
+                    << shapesElement
+                    << favoriteElement
+                    << webSearchElement
+                    << trashElement;
+
+    //filling favoriteList
+    loadFavoriteList();
+
+    QList <UBToolsManager::UBToolDescriptor> tools = UBToolsManager::manager()->allTools();
+
+    foreach (UBToolsManager::UBToolDescriptor tool, tools) {
+        featuresList->append(UBFeature(appPath + "/" + tool.label, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL));
+        if (favoriteSet->find(QUrl(tool.id)) != favoriteSet->end()) {
+            featuresList->append(UBFeature(favoritePath + "/" + tool.label, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL));
+        }
+    }
+}
 void UBFeaturesController::fileSystemScan(const QUrl & currentPath, const QString & currVirtualPath)
 {
     QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currentPath.toLocalFile());
 
     QFileInfoList::iterator fileInfo;
-    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1)
-	{
-		UBFeatureElementType fileType = fileInfo->isDir() ? FEATURE_FOLDER : FEATURE_ITEM;
-
+    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1) {
+        QString fullFileName = fileInfo->absoluteFilePath();
+        UBFeatureElementType featureType = fileTypeFromUrl(fullFileName);
         QString fileName = fileInfo->fileName();
-        if ( UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application") ) 
-		{
-			if ( UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application/search") )
-			{
-				fileType = FEATURE_SEARCH;
-			}
-			else
-             fileType = FEATURE_INTERACTIVE;
-        }
-		QString itemName = (fileType != FEATURE_ITEM) ? fileName : fileInfo->completeBaseName();
-		QPixmap icon = QPixmap(":images/libpalette/soundIcon.svg");
-		QString fullFileName = fileInfo->filePath();
+
+        QImage icon = getIcon(fullFileName, featureType);
+
+        if ( fullFileName.contains(".thumbnail."))
+            continue;
  
+        UBFeature testFeature(currVirtualPath + "/" + fileName, icon, fileName, QUrl::fromLocalFile(fullFileName), featureType);
 
-		if ( fileType == FEATURE_FOLDER ) 
-		{
-            icon = QPixmap(":images/libpalette/folder.svg");
-        }
-        else if ( fileType == FEATURE_INTERACTIVE )
-		{
-			icon = QPixmap( UBAbstractWidget::iconFilePath( QUrl::fromLocalFile(fullFileName) ) );
-		}
-		else
-		{
-			if ( fullFileName.contains(".thumbnail.") )
-                continue;
-			icon = thumbnailForFile( fullFileName );
-			/*QString thumbnailPath = UBFileSystemUtils::thumbnailPath( fullFileName );
-
-			if (QFileInfo( thumbnailPath).exists() )
-				icon = QPixmap( thumbnailPath );
-			else icon = createThumbnail( fullFileName );*/
-		}
-        featuresList->append( UBFeature( currVirtualPath, icon, fileName, QUrl::fromLocalFile( fullFileName ), fileType ) );
-		if ( favoriteSet->find( QUrl::fromLocalFile( fullFileName ) ) != favoriteSet->end() )
-		{
-			featuresList->append( UBFeature( favoritePath, icon, fileName, QUrl::fromLocalFile( fullFileName ), fileType ) );
+        featuresList->append(testFeature);
+
+        if ( favoriteSet->find( QUrl::fromLocalFile( fullFileName ) ) != favoriteSet->end() ) {
+            featuresList->append( UBFeature( favoritePath + "/" + fileName, icon, fileName, QUrl::fromLocalFile( fullFileName ), featureType ) );
 		}
 
-		if ( fileType == FEATURE_FOLDER )
-		{
-			fileSystemScan( QUrl::fromLocalFile( fullFileName ), currVirtualPath + "/" + fileName );
+        if (featureType == FEATURE_FOLDER) {
+            fileSystemScan(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName);
 		}
+    }
+}
 
-	}
+int UBFeaturesController::featuresCount(const QUrl &currPath)
+{
+    int noItems = 0;
+
+    QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currPath.toLocalFile());
+
+    QFileInfoList::iterator fileInfo;
+    for ( fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo +=  1) {
+        QString fullFileName = fileInfo->absoluteFilePath();
+        UBFeatureElementType featureType = fileTypeFromUrl(fullFileName);
+
+        if (featureType != FEATURE_INVALID && !fullFileName.contains(".thumbnail.")) {
+            noItems++;
+        } else {
+            continue;
+        }
+
+        if (featureType == FEATURE_FOLDER) {
+            noItems += featuresCount(QUrl::fromLocalFile(fullFileName));
+        }
+    }
+
+    return noItems;
 }
 
 void UBFeaturesController::loadFavoriteList()
@@ -209,12 +497,7 @@ void UBFeaturesController::loadFavoriteList()
 		{
 			QUrl path;
 			in >> path;
-			/*QFileInfo fileInfo( path );
-			QString fileName = fileInfo.fileName();
-
-			UBFeature elem( favoritePath, thumbnailForFile( path ), fileName, path, fileTypeFromUrl(path) );
-			featuresList->append( elem );*/
-			favoriteSet->insert( path );
+            favoriteSet->insert( path );
 		}
 	}
 }
@@ -233,29 +516,100 @@ void UBFeaturesController::saveFavoriteList()
 	file.close();
 }
 
-UBFeature UBFeaturesController::addToFavorite( const QUrl &path )
+QString UBFeaturesController::uniqNameForFeature(const UBFeature &feature, const QString &pName, const QString &pExtention) const
+{
+    Q_ASSERT(featuresList);
+
+    QStringList resultList;
+    QString parentVirtualPath = feature.getFullVirtualPath();
+    QString resultName;
+
+    qDebug() << "start";
+    foreach (UBFeature curFeature, *featuresList) {
+
+        if (curFeature.getFullVirtualPath().startsWith(feature.getFullVirtualPath())) {
+
+            QString curResultName = curFeature.getFullVirtualPath();
+            if (!parentVirtualPath.endsWith("/")) {
+                parentVirtualPath.append("/");
+            }
+            //Cut virtual path prevfix
+            int i = curResultName.indexOf(feature.getFullVirtualPath());
+            if (i != -1) {
+                curResultName = curResultName.right(curFeature.getFullVirtualPath().count() - i - parentVirtualPath.count());
+            }
+            //if directory has children, emptying the name;
+            i = curResultName.indexOf("/");
+            if (i != -1) {
+                curResultName = "";
+            }
+
+            if (!curResultName.isEmpty()) {
+                resultList.append(curResultName);
+            }
+
+            qDebug() << curResultName;
+        }
+    }
+
+    if (!resultList.contains(pName + pExtention, Qt::CaseInsensitive)) {
+        resultName = pName + pExtention;
+
+    } else {
+        for (int i = 0; i < 16777215; i++) {
+            QString probeName = pName + "_" + QString::number(i) + pExtention;
+            if (!resultList.contains(probeName, Qt::CaseInsensitive)) {
+                resultName = probeName;
+                break;
+            }
+        }
+    }
+    qDebug() << "result name is " << resultName;
+
+    return resultName;
+}
+
+QString UBFeaturesController::adjustName(const QString &str)
+{
+    if (str.isNull()) {
+        return QString();
+    }
+
+    QString resultStr = str;
+    QRegExp invalidSymbols("[\\/\\s\\:\\?\\*\\|\\<\\>\\\"]+");
+
+    return resultStr.replace(invalidSymbols, "_");
+}
+
+void UBFeaturesController::addToFavorite( const QUrl &path )
 {
 	QString filePath = fileNameFromUrl( path );
 	if ( favoriteSet->find( path ) == favoriteSet->end() )
 	{
 		QFileInfo fileInfo( filePath );
 		QString fileName = fileInfo.fileName();
-		UBFeature elem( favoritePath, thumbnailForFile( filePath ), fileName, path, fileTypeFromUrl(filePath) );
+        UBFeatureElementType type = fileTypeFromUrl(filePath);
+        UBFeature elem(favoritePath + "/" + fileName, getIcon(filePath, type), fileName, path, fileTypeFromUrl(filePath) );
 		favoriteSet->insert( path );
 		saveFavoriteList();
-		return elem;
+
+        if ( !elem.getVirtualPath().isEmpty() && !elem.getVirtualPath().isNull())
+        featuresModel->addItem( elem );
 	}
-	return UBFeature();
 }
 
-void UBFeaturesController::removeFromFavorite( const QUrl &path )
+void UBFeaturesController::removeFromFavorite( const QUrl &path, bool deleteManualy)
 {
-	QString filePath = fileNameFromUrl( path );
+//	QString filePath = fileNameFromUrl( path );
 	if ( favoriteSet->find( path ) != favoriteSet->end() )
 	{
 		favoriteSet->erase( favoriteSet->find( path ) );
 		saveFavoriteList();
 	}
+
+    if (deleteManualy) {
+        featuresModel->deleteFavoriteItem(path.toString());
+    }
 }
 
 QString UBFeaturesController::fileNameFromUrl( const QUrl &url )
@@ -267,114 +621,195 @@ QString UBFeaturesController::fileNameFromUrl( const QUrl &url )
 }
 
 
-UBFeatureElementType UBFeaturesController::fileTypeFromUrl( const QString &path )
+UBFeatureElementType UBFeaturesController::fileTypeFromUrl(const QString &path)
 {
-	QFileInfo fileInfo( path );
-	QString fileName = fileInfo.fileName();
+    QFileInfo fileInfo(path);
+
+    if ( path.contains("uniboardTool://"))
+        return FEATURE_INTERNAL;
+
+    if (!fileInfo.exists()) {
+        return FEATURE_INVALID;
+    }
+
+    UBFeatureElementType fileType = FEATURE_INVALID;
+    QString fileName = fileInfo.fileName();
+    QString mimeString = UBFileSystemUtils::mimeTypeFromFileName(fileName);
+
+    if ( mimeString.contains("application")) {
+        if (mimeString.contains("application/search")) {
+            fileType = FEATURE_SEARCH;
+        } else if (mimeString.contains("application/x-shockwave-flash")) {
+            fileType = FEATURE_FLASH;
+        } else {
+            fileType = FEATURE_INTERACTIVE;
+        }
+    } else if (mimeString.contains("audio")) {
+        fileType = FEATURE_AUDIO;
+    } else if (mimeString.contains("video")) {
+        fileType = FEATURE_VIDEO;
+    } else if (mimeString.contains("image")) {
+        fileType = FEATURE_IMAGE;
+    } else if (fileInfo.isDir()) {
+        fileType = FEATURE_FOLDER;
+    } else {
+        fileType = FEATURE_INVALID;
+    }
 
-	UBFeatureElementType fileType = fileInfo.isDir() ? FEATURE_FOLDER : FEATURE_ITEM;
-	if ( UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application") ) 
-	{
-		fileType = FEATURE_INTERACTIVE;
-	}
-	else if ( path.contains("uniboardTool://")  )
-	{
-		fileType = FEATURE_INTERNAL;
-	}
 	return fileType;
 }
 
-QPixmap UBFeaturesController::thumbnailForFile(const QString &path)
+QImage UBFeaturesController::getIcon(const QString &path, UBFeatureElementType pFType = FEATURE_INVALID)
 {
-	if ( path.contains("uniboardTool://") )
-	{
-            return QPixmap( UBToolsManager::manager()->iconFromToolId(path) );
-    }
-    if ( UBFileSystemUtils::mimeTypeFromFileName(path).contains("application") )
-	{
-        return QPixmap( UBAbstractWidget::iconFilePath( QUrl::fromLocalFile(path) ) );
+    if (pFType == FEATURE_FOLDER) {
+        return QImage(":images/libpalette/folder.svg");
+    } else if (pFType == FEATURE_INTERACTIVE || pFType == FEATURE_SEARCH) {
+        return QImage(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(path)));
+    } else if (pFType == FEATURE_INTERNAL) {
+        return QImage(UBToolsManager::manager()->iconFromToolId(path));
+    } else if (pFType == FEATURE_FLASH) {
+        return QImage(":images/libpalette/FlashIcon.svg");
+    } else if (pFType == FEATURE_AUDIO) {
+        return QImage(":images/libpalette/soundIcon.svg");
+    } else if (pFType == FEATURE_VIDEO) {
+        return QImage(":images/libpalette/movieIcon.svg");
+    } else if (pFType == FEATURE_IMAGE) {
+        QImage pix(path);
+        if (pix.isNull()) {
+            pix = QImage(":images/libpalette/notFound.png");
+        } else {
+            pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()));
+        }
+        return pix;
     }
 
-	QPixmap thumb;
-	QString thumbnailPath = UBFileSystemUtils::thumbnailPath( path );
-
-	if ( QFileInfo( thumbnailPath ).exists() )
-		thumb = QPixmap( thumbnailPath );
-	else thumb = createThumbnail( path );
-	return thumb;
+    return QImage(":images/libpalette/notFound.png");
 }
 
 bool UBFeaturesController::isDeletable( const QUrl &url )
 {
-	UBFeatureElementType type = fileTypeFromUrl( fileNameFromUrl(url) );
-	return type == FEATURE_ITEM;
+    UBFeatureElementType type = fileTypeFromUrl(fileNameFromUrl(url));
+    return type == FEATURE_AUDIO
+            || type == FEATURE_VIDEO
+            || type == FEATURE_IMAGE
+            || type == FEATURE_ITEM;
+}
+
+QString UBFeaturesController::categoryNameForVirtualPath(const QString &str)
+{
+    QString result;
+    int ind = str.lastIndexOf("/");
+    if (ind != -1) {
+        result = str.right(str.count() - ind - 1);
+    }
+    return result;
 }
 
-QPixmap UBFeaturesController::createThumbnail(const QString &path)
+QImage UBFeaturesController::createThumbnail(const QString &path)
 {
-    QString thumbnailPath = UBFileSystemUtils::thumbnailPath(path);
+    QString thumbnailPath = path;
     QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(path);
-	QString extension = QFileInfo(path).completeSuffix();
-    //UBApplication::showMessage(tr("Creating image thumbnail for %1.").arg(pElement->name()));
 
-    if ( mimetype.contains("audio" ))
+    if ( mimetype.contains("audio" )) {
         thumbnailPath = ":images/libpalette/soundIcon.svg";
-    else if ( mimetype.contains("video") )
+    } else if ( mimetype.contains("video")) {
         thumbnailPath = ":images/libpalette/movieIcon.svg";
-    else 
-	{
-        if ( extension.startsWith("svg", Qt::CaseInsensitive) || extension.startsWith("svgz", Qt::CaseInsensitive) ) 
-		{
-            thumbnailPath = path;
-        }
-        else 
-		{
-            QPixmap pix(path);
-            if (!pix.isNull()) 
-			{
-                pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()), Qt::SmoothTransformation);
-                pix.save(thumbnailPath);
-                UBPlatformUtils::hideFile(thumbnailPath);
-            }
-            else{
-                thumbnailPath = ":images/libpalette/notFound.png";
-            }
+    } else {
+        QImage pix(path);
+        if (!pix.isNull()) {
+            pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()), Qt::SmoothTransformation);
+            return pix;
+
+        } else {
+            thumbnailPath = ":images/libpalette/notFound.png";
         }
+
     }
 
-    return QPixmap(thumbnailPath);
+    return QImage(thumbnailPath);
 }
 
-UBFeature UBFeaturesController::importImage( const QImage &image, const UBFeature &destination )
+void UBFeaturesController::importImage(const QImage &image, const QString &fileName)
 {
-    QDateTime now = QDateTime::currentDateTime();
-    QString fileName = tr("ImportedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss") + ".png";
+    importImage(image, currentElement, fileName);
+}
 
+
+void UBFeaturesController::importImage( const QImage &image, const UBFeature &destination, const QString &fileName )
+{
+    QString mFileName = fileName;
+    QString filePath;
     UBFeature dest = destination;
+    if (mFileName.isNull()) {
+        QDateTime now = QDateTime::currentDateTime();
+        static int imageCounter = 0;
+        mFileName  = tr("ImportedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss");
+        
+        filePath = dest.getFullPath().toLocalFile() + "/" + mFileName;
+
+        if (QFile::exists(filePath+".png"))
+            mFileName += QString("-[%1]").arg(++imageCounter);
+        else
+            imageCounter = 0;
+        
+        mFileName += ".png";
+    }
+    
 
     if ( !destination.getFullVirtualPath().startsWith( picturesElement.getFullVirtualPath(), Qt::CaseInsensitive ) )
     {
 	    dest = picturesElement;
     }
 
-    QString filePath = dest.getFullPath().toLocalFile() + "/" + fileName;
+    filePath = dest.getFullPath().toLocalFile() + "/" + mFileName;
     image.save(filePath);
 
-    QPixmap thumb = createThumbnail( filePath );
-    return UBFeature( dest.getFullVirtualPath(), thumb, fileName, 
+    QImage thumb = createThumbnail( filePath );
+    UBFeature resultItem =  UBFeature( dest.getFullVirtualPath() + "/" + mFileName, thumb, mFileName,
         QUrl::fromLocalFile( filePath ), FEATURE_ITEM );
-    
+
+    featuresModel->addItem(resultItem);
+
 }
 
-UBFeature UBFeaturesController::newFolder( const QString &name )
+QStringList UBFeaturesController::getFileNamesInFolders()
+{
+    QStringList strList;
+
+    Q_ASSERT(curListModel);
+
+    for (int i = 0; i < curListModel->rowCount(QModelIndex()); i++) {
+        QModelIndex ind = curListModel->index(i, 0);
+        if (!ind.isValid()) {
+            qDebug() << "incorrect model index catched";
+            continue;
+        }
+        UBFeature curFeature = curListModel->data(ind, Qt::UserRole + 1).value<UBFeature>();
+        if (curFeature.getType() == FEATURE_FOLDER) {
+            strList << QFileInfo(curFeature.getFullPath().toLocalFile()).fileName();
+        }
+    }
+
+    return strList;
+}
+
+void UBFeaturesController::addNewFolder(QString name)
 {
     QString path = currentElement.getFullPath().toLocalFile() + "/" + name;
-	if(!QFileInfo(path).exists())
-	{
+
+    if ("/root" == currentElement.getFullVirtualPath())
+    {
+        return;
+    }
+
+    if(!QFileInfo(path).exists()) {
         QDir().mkpath(path);
 	}
-    return UBFeature( currentElement.getFullVirtualPath(), QPixmap(":images/libpalette/folder.svg"), 
-        name, QUrl::fromLocalFile( path ), FEATURE_FOLDER );
+    UBFeature newFeatureFolder = UBFeature( currentElement.getFullVirtualPath() + "/" + name, QImage(":images/libpalette/folder.svg"),
+                                            name, QUrl::fromLocalFile( path ), FEATURE_FOLDER );
+
+    featuresModel->addItem(newFeatureFolder);
+    featuresProxyModel->invalidate();
 }
 
 void UBFeaturesController::addItemToPage(const UBFeature &item)
@@ -384,23 +819,26 @@ void UBFeaturesController::addItemToPage(const UBFeature &item)
 
 void UBFeaturesController::addItemAsBackground(const UBFeature &item)
 {
-    UBApplication::boardController->downloadURL( item.getFullPath(), QPointF(), QSize(), true );
+    UBApplication::boardController->downloadURL( item.getFullPath(), QString(), QPointF(), QSize(), true );
 }
 
-
-UBFeature UBFeaturesController::getDestinationForItem( const QUrl &url )
+UBFeature UBFeaturesController::getDestinationFeatureForUrl( const QUrl &url )
 {
     QString mimetype = UBFileSystemUtils::mimeTypeFromFileName( url.toString() );
+    return getDestinationFeatureForMimeType(mimetype);
+}
 
-    if ( mimetype.contains("audio") )
+UBFeature UBFeaturesController::getDestinationFeatureForMimeType(const QString &pMmimeType)
+{
+    if ( pMmimeType.contains("audio") )
         return audiosElement;
-    if ( mimetype.contains("video") )
+    if ( pMmimeType.contains("video") )
         return moviesElement;
-    else if ( mimetype.contains("image") )
+    else if ( pMmimeType.contains("image") || pMmimeType.isEmpty())
         return picturesElement;
-    else if ( mimetype.contains("application") )
-	{
-        if ( mimetype.contains( "x-shockwave-flash") )
+    else if ( pMmimeType.contains("application") )
+    {
+        if ( pMmimeType.contains( "x-shockwave-flash") )
             return flashElement;
         else
             return interactElement;
@@ -408,23 +846,52 @@ UBFeature UBFeaturesController::getDestinationForItem( const QUrl &url )
     return UBFeature();
 }
 
-UBFeature UBFeaturesController::addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData )
+void UBFeaturesController::addDownloadedFile(const QUrl &sourceUrl, const QByteArray &pData, const QString pContentSource, const QString pTitle)
 {
-    UBFeature dest = getDestinationForItem( sourceUrl );
-    if ( dest == UBFeature() )
-        return UBFeature();
-    QString fileName = QFileInfo( sourceUrl.toString() ).fileName();
-    QString filePath = dest.getFullPath().toLocalFile() + "/" + fileName;
+    UBFeature dest = getDestinationFeatureForMimeType(pContentSource);
 
-    QFile file( filePath );
-    if( file.open(QIODevice::WriteOnly )) 
-    {
-        file.write(pData);
-        file.close();
-        return UBFeature( dest.getFullVirtualPath(), thumbnailForFile( filePath ), 
-            fileName, QUrl::fromLocalFile(filePath), FEATURE_ITEM );
+    if (dest == UBFeature())
+        return;
+
+    QString fileName;
+    QString filePath;
+	
+    //Audio item
+    if(dest == picturesElement) {
+
+        QString UniqName = uniqNameForFeature(dest, adjustName(pTitle), ".jpg");
+        fileName =  !UniqName.isNull()
+                ? UniqName
+                : tr("ImportedImage") + "-" + QDateTime::currentDateTime().toString("dd-MM-yyyy hh-mm-ss")+ ".jpg";
+
+        filePath = dest.getFullPath().toLocalFile() + "/" + fileName;
+
+        QImage::fromData(pData).save(filePath);
+
+        UBFeature downloadedFeature = UBFeature(dest.getFullVirtualPath() + "/" + fileName, getIcon( filePath, fileTypeFromUrl(filePath)),
+                                                 fileName, QUrl::fromLocalFile(filePath), FEATURE_ITEM);
+        if (downloadedFeature != UBFeature()) {
+            featuresModel->addItem(downloadedFeature);
+        }
+
+    } else {
+        fileName = QFileInfo( sourceUrl.toString() ).fileName();
+        filePath = dest.getFullPath().toLocalFile() + "/" + fileName;
+
+        QFile file( filePath );
+        if ( file.open(QIODevice::WriteOnly ))
+        {
+            file.write(pData);
+            file.close();
+
+            UBFeature downloadedFeature = UBFeature(dest.getFullVirtualPath() + "/" + fileName, getIcon( filePath, fileTypeFromUrl(filePath)),
+                                                    fileName, QUrl::fromLocalFile(filePath), FEATURE_ITEM);
+            if (downloadedFeature != UBFeature()) {
+                featuresModel->addItem(downloadedFeature);
+            }
+        }
     }
-    return UBFeature();
+
 }
 
 UBFeature UBFeaturesController::moveItemToFolder( const QUrl &url, const UBFeature &destination )
@@ -436,7 +903,7 @@ UBFeature UBFeaturesController::moveItemToFolder( const QUrl &url, const UBFeatu
 
 	Q_ASSERT( QFileInfo( sourcePath ).exists() );
 
-	UBFeature possibleDest = getDestinationForItem( url );
+    UBFeature possibleDest = getDestinationFeatureForUrl(url);
 
 	UBFeature dest = destination;
 
@@ -456,65 +923,231 @@ UBFeature UBFeaturesController::moveItemToFolder( const QUrl &url, const UBFeatu
         deleteItem( url );
     }
 
-	QPixmap thumb = thumbnailForFile( newFullPath );
+    QImage thumb = getIcon( newFullPath );
 	
     UBFeatureElementType type = FEATURE_ITEM;
 	if ( UBFileSystemUtils::mimeTypeFromFileName( newFullPath ).contains("application") ) 
         type = FEATURE_INTERACTIVE;
-    UBFeature newElement( destVirtualPath, thumb, name, QUrl::fromLocalFile( newFullPath ), type );
-	return newElement;
+    UBFeature newElement( destVirtualPath + "/" + name, thumb, name, QUrl::fromLocalFile( newFullPath ), type );
+    return newElement;
+}
+
+void UBFeaturesController::rescanModel()
+{
+    featuresModel->removeRows(0, featuresList->count());
+
+    //Could implement infolder scanning for better perfomance
+    scanFS();
+    refreshModels();
+}
+
+void UBFeaturesController::siftElements(const QString &pSiftValue)
+{
+    featuresProxyModel->setFilterFixedString(pSiftValue);
+    featuresProxyModel->invalidate();
+
+    featuresPathModel->setPath(pSiftValue);
+    featuresPathModel->invalidate();
+}
+
+UBFeature UBFeaturesController::getFeature(const QModelIndex &index, const QString &listName)
+{
+//    QSortFilterProxyModel *model = qobject_cast<QSortFilterProxyModel *>(pOnView->model());
+    QAbstractItemModel *model = 0;
+    if (listName == UBFeaturesWidget::objNamePathList) {
+        model = featuresPathModel;
+    } else if (listName == UBFeaturesWidget::objNameFeatureList) {
+        model = curListModel;
+    }
+
+    if (model) {
+        return model->data(index, Qt::UserRole + 1).value<UBFeature>();
+    }
+
+    return UBFeature();
+
+
+//    return pOnView->model()->data(index, Qt::UserRole + 1).value<UBFeature>();  /*featuresSearchModel->data(index, Qt::UserRole + 1).value<UBFeature>()*/;
+}
+
+void UBFeaturesController::searchStarted(const QString &pattern, QListView *pOnView)
+{
+    if (pattern.isEmpty()) {
+
+        pOnView->setModel(featuresProxyModel);
+        featuresProxyModel->invalidate();
+        curListModel = featuresProxyModel;
+    } else if ( pattern.size() > 1 ) {
+
+        //        featuresSearchModel->setFilterPrefix(currentElement.getFullVirtualPath());
+        featuresSearchModel->setFilterWildcard( "*" + pattern + "*" );
+        pOnView->setModel(featuresSearchModel );
+        featuresSearchModel->invalidate();
+        curListModel = featuresSearchModel;
+    }
+}
+
+void UBFeaturesController::refreshModels()
+{
+    featuresProxyModel->invalidate();
+    featuresSearchModel->invalidate();
+    featuresPathModel->invalidate();
 }
 
 UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeature &destination )
 {
-	QString sourcePath = url.toLocalFile();
+    QString sourcePath = url.toLocalFile();
 
-	Q_ASSERT( QFileInfo( sourcePath ).exists() );
+    Q_ASSERT( QFileInfo( sourcePath ).exists() );
 
-	UBFeature possibleDest = getDestinationForItem( url );
+    UBFeature possibleDest = getDestinationFeatureForUrl( url );
 
-	UBFeature dest = destination;
+    UBFeature dest = destination;
 
-	if ( destination != trashElement && 
-		!destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive ) )
-	{
-		dest = possibleDest;
-	}
+    if ( destination != trashElement &&
+        !destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive ) )
+    {
+        dest = possibleDest;
+    }
 
-	QString name = QFileInfo( sourcePath ).fileName();
+    QString name = QFileInfo(sourcePath).fileName();
     QString destPath = dest.getFullPath().toLocalFile();
-	QString destVirtualPath = dest.getFullVirtualPath();
-	QString newFullPath = destPath + "/" + name;
-    if ( !sourcePath.compare( newFullPath, Qt::CaseInsensitive ) )
-	    QFile( sourcePath ).copy( newFullPath );
+    QString destVirtualPath = dest.getFullVirtualPath();
+    QString newFullPath = destPath + "/" + name;
+    if (!sourcePath.compare(newFullPath, Qt::CaseInsensitive))
+        QFile(sourcePath).copy(newFullPath);
+
+    QImage thumb = getIcon(newFullPath);
 
-	QPixmap thumb = thumbnailForFile( newFullPath );
-	
     UBFeatureElementType type = FEATURE_ITEM;
-	if ( UBFileSystemUtils::mimeTypeFromFileName( newFullPath ).contains("application") ) 
+    if (UBFileSystemUtils::mimeTypeFromFileName(newFullPath).contains("application"))
         type = FEATURE_INTERACTIVE;
-    UBFeature newElement( destVirtualPath, thumb, name, QUrl::fromLocalFile( newFullPath ), type );
-	return newElement;
+    UBFeature newElement( destVirtualPath + "/" + name, thumb, name, QUrl::fromLocalFile( newFullPath ), type );
+    return newElement;
 }
 
-void UBFeaturesController::deleteItem( const QUrl &url )
+void UBFeaturesController::moveExternalData(const QUrl &url, const UBFeature &destination)
 {
-	QString path = url.toLocalFile();
-	Q_ASSERT( QFileInfo( path ).exists() );
+    QString sourcePath = url.toLocalFile();
+
+    Q_ASSERT( QFileInfo( sourcePath ).exists() );
+
+    UBFeature possibleDest = getDestinationFeatureForUrl(url);
+
+    UBFeature dest = destination;
+
+    if ( destination != trashElement && destination != UBFeature()
+       /*&& !destination.getFullVirtualPath().startsWith( possibleDest.getFullVirtualPath(), Qt::CaseInsensitive )*/ )
+    {
+        dest = possibleDest;
+    }
+
+    UBFeatureElementType type = fileTypeFromUrl(sourcePath);
+
+    if (type == FEATURE_FOLDER) {
+        return;
+    }
+
+    QString name = QFileInfo(sourcePath).fileName();
+    QString destPath = dest.getFullPath().toLocalFile();
+    QString destVirtualPath = dest.getFullVirtualPath();
+    QString newFullPath = destPath + "/" + name;
+
+    if (!sourcePath.compare(newFullPath, Qt::CaseInsensitive) || !UBFileSystemUtils::copy(sourcePath, newFullPath)) {
+        return;
+    }
+
+    Q_ASSERT(QFileInfo(newFullPath).exists());
+
+    QImage thumb = getIcon(newFullPath, type);
+    UBFeature newElement(destVirtualPath + "/" + name, thumb, name, QUrl::fromLocalFile(newFullPath), type);
+
+    featuresModel->addItem(newElement);
+}
+
+void UBFeaturesController::deleteItem(const QUrl &url)
+{
+    QString path = url.toLocalFile();
+    Q_ASSERT( QFileInfo( path ).exists() );
 
 	QString thumbnailPath = UBFileSystemUtils::thumbnailPath( path );
-    if ( thumbnailPath.length() && QFileInfo( thumbnailPath ).exists() ) 
-	{
-        QFile::remove(thumbnailPath);
+    if ( thumbnailPath.length() && QFileInfo( thumbnailPath ).exists()) {
+        if (QFileInfo(thumbnailPath).isFile()) {
+            QFile::remove(thumbnailPath);
+        } else if (QFileInfo(thumbnailPath).isDir()){
+            if (!UBFileSystemUtils::deleteDir(thumbnailPath)) {
+                qDebug() << "Not able to delete directory";
+             }
+        }
     }
-	QFile::remove( path );
+    if (QFileInfo(path).isFile()) {
+        QFile::remove( path );
+
+    } else if (QFileInfo(path).isDir()) {
+        UBFileSystemUtils::deleteDir(path);
+    }
+}
+
+void UBFeaturesController::deleteItem(const UBFeature &pFeature)
+{
+    QUrl sourceUrl = pFeature.getFullPath();
+    featuresModel->deleteItem(pFeature);
+    deleteItem(sourceUrl);
 }
 
 bool UBFeaturesController::isTrash( const QUrl &url )
 {
     return url.toLocalFile().startsWith( trashDirectoryPath.toLocalFile() );
 }
+void UBFeaturesController::moveToTrash(UBFeature feature, bool deleteManualy)
+{
+    featuresModel->moveData(feature, trashElement, Qt::MoveAction, deleteManualy);
+    removeFromFavorite(feature.getFullPath());
+    featuresModel->deleteFavoriteItem(UBFeaturesController::fileNameFromUrl(feature.getFullPath()));
+}
 
 UBFeaturesController::~UBFeaturesController()
 {
+    if (featuresList) {
+        delete featuresList;
+    }
+}
+
+void UBFeaturesController::assignFeaturesListView(UBFeaturesListView *pList)
+{
+    pList->setDragDropMode( QAbstractItemView::DragDrop );
+    pList->setSelectionMode( QAbstractItemView::ContiguousSelection );
+
+    pList->setResizeMode( QListView::Adjust );
+    pList->setViewMode( QListView::IconMode );
+
+    pList->setIconSize(QSize(UBFeaturesWidget::defaultThumbnailSize, UBFeaturesWidget::defaultThumbnailSize));
+    pList->setGridSize(QSize(UBFeaturesWidget::defaultThumbnailSize + 20, UBFeaturesWidget::defaultThumbnailSize + 20));
+
+    itemDelegate = new UBFeaturesItemDelegate(this, pList);
+    pList->setItemDelegate(itemDelegate);
+
+    pList->setModel(featuresProxyModel);
+    curListModel = featuresProxyModel;
+}
+
+void UBFeaturesController::assignPathListView(UBFeaturesListView *pList)
+{
+    pList->setViewMode(QListView::IconMode );
+    pList->setIconSize(QSize(UBFeaturesWidget::defaultThumbnailSize - 10, UBFeaturesWidget::defaultThumbnailSize - 10));
+    pList->setGridSize(QSize(UBFeaturesWidget::defaultThumbnailSize + 10, UBFeaturesWidget::defaultThumbnailSize - 10));
+    pList->setFixedHeight(60);
+    pList->setSelectionMode(QAbstractItemView::NoSelection);
+    pList->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    pList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+    pList->setFlow(QListView::LeftToRight);
+    pList->setWrapping(false);
+    pList->setDragDropMode(QAbstractItemView::DropOnly);
+
+    pList->setModel( featuresPathModel);
+
+    pathItemDelegate = new UBFeaturesPathItemDelegate(this);
+    pList->setItemDelegate(pathItemDelegate);
 }
+
+
diff --git a/Sankore-3.1/src/board/UBFeaturesController.h b/Sankore-3.1/src/board/UBFeaturesController.h
index 254514a..b4fe887 100644
--- a/Sankore-3.1/src/board/UBFeaturesController.h
+++ b/Sankore-3.1/src/board/UBFeaturesController.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBFEATURESCONTROLLER_H
 #define UBFEATURESCONTROLLER_H
 
@@ -11,8 +33,61 @@
 #include <QMap>
 #include <QUrl>
 #include <QByteArray>
+#include <QtGui>
+#include <QImage>
+#include <QThread>
+#include <QMutex>
+#include <QWaitCondition>
+
+class UBFeaturesModel;
+class UBFeaturesItemDelegate;
+class UBFeaturesPathItemDelegate;
+class UBFeaturesProxyModel;
+class UBFeaturesSearchProxyModel;
+class UBFeaturesPathProxyModel;
+class UBFeaturesListView;
+class UBFeature;
+
+
+class UBFeaturesComputingThread : public QThread
+{
+    Q_OBJECT
+public:
+    explicit UBFeaturesComputingThread(QObject *parent = 0);
+    virtual ~UBFeaturesComputingThread();
+        void compute(const QList<QPair<QUrl, UBFeature> > &pScanningData, QSet<QUrl> *pFavoritesSet);
+
+protected:
+    void run();
+
+signals:
+    void sendFeature(UBFeature pFeature);
+    void featureSent();
+    void scanStarted();
+    void scanFinished();
+    void maxFilesCountEvaluated(int max);
+    void scanCategory(const QString &str);
+    void scanPath(const QString &str);
+
+public slots:
+
+private:
+    void scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet<QUrl> &pFavoriteSet);
+    void scanAll(QList<QPair<QUrl, UBFeature> > pScanningData, const QSet<QUrl> &pFavoriteSet);
+    int featuresCount(const QUrl &pPath);
+    int featuresCountAll(QList<QPair<QUrl, UBFeature> > pScanningData);
+
+private:
+    QMutex mMutex;
+    QWaitCondition mWaitCondition;
+    QUrl mScanningPath;
+    QString mScanningVirtualPath;
+    QList<QPair<QUrl, UBFeature> > mScanningData;
+    QSet<QUrl> mFavoriteSet;
+    bool restart;
+    bool abort;
+};
 
-//#include "UBDockPaletteWidget.h"
 
 enum UBFeatureElementType
 {
@@ -20,90 +95,172 @@ enum UBFeatureElementType
     FEATURE_VIRTUALFOLDER,
     FEATURE_FOLDER,
     FEATURE_INTERACTIVE,
-	FEATURE_INTERNAL,
+    FEATURE_INTERNAL,
     FEATURE_ITEM,
-	FEATURE_TRASH,
-	FEATURE_FAVORITE,
-	FEATURE_SEARCH
+    FEATURE_AUDIO,
+    FEATURE_VIDEO,
+    FEATURE_IMAGE,
+    FEATURE_FLASH,
+    FEATURE_TRASH,
+    FEATURE_FAVORITE,
+    FEATURE_SEARCH,
+    FEATURE_INVALID
 };
 
 class UBFeature
 {
 public:
     UBFeature() {;}
-	//UBFeature(const UBFeature &f);
-    UBFeature(const QString &url, const QPixmap &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type = FEATURE_CATEGORY);
-    virtual ~UBFeature() {;}
+//    UBFeature(const UBFeature &f);
+    UBFeature(const QString &url, const QImage &icon, const QString &name, const QUrl &realPath, UBFeatureElementType type = FEATURE_CATEGORY);
+//    UBFeature();
+    virtual ~UBFeature();
     QString getName() const { return mName; }
-    QPixmap getThumbnail() const {return mThumbnail;}
-    QString getVirtualPath() const { return virtualPath; }
+    QString getDisplayName() const {return mDisplayName;}
+    QImage getThumbnail() const {return mThumbnail;}
+    QString getVirtualPath() const { return virtualDir; }
 	//QString getPath() const { return mPath; };
     QUrl getFullPath() const { return mPath; }
-	QString getFullVirtualPath() const { return  virtualPath + "/" + mName; }
+    QString getFullVirtualPath() const { return  virtualDir + "/" + mName; }
 	QString getUrl() const;
+    void setFullPath(const QUrl &newPath) {mPath = newPath;}
+    void setFullVirtualPath(const QString &newVirtualPath) {virtualDir = newVirtualPath;}
     UBFeatureElementType getType() const { return elementType; }
 
 	bool isFolder() const;
+    bool allowedCopy() const;
 	bool isDeletable() const;
+    bool inTrash() const;
 	bool operator ==( const UBFeature &f )const;
 	bool operator !=( const UBFeature &f )const;
 	const QMap<QString,QString> & getMetadata() const { return metadata; }
 	void setMetadata( const QMap<QString,QString> &data ) { metadata = data; }
+
+
 private:
-	QString virtualPath;
-    QPixmap mThumbnail;
+    QString getNameFromVirtualPath(const QString &pVirtPath);
+    QString getVirtualDirFromVirtualPath(const QString &pVirtPath);
+
+private:
+    QString virtualDir;
+    QString virtualPath;
+    QImage mThumbnail;
     QString mName;
+    QString mDisplayName;
 	QUrl mPath;
     UBFeatureElementType elementType;
-	QMap<QString,QString> metadata;
+    QMap<QString,QString> metadata;
 };
 Q_DECLARE_METATYPE( UBFeature )
 
-
 class UBFeaturesController : public QObject
 {
+friend class UBFeaturesWidget;
+
 Q_OBJECT
+
 public:
 	UBFeaturesController(QWidget *parentWidget);
     virtual ~UBFeaturesController();
 
-    QList <UBFeature>* getFeatures()const { return featuresList; }
+    QList <UBFeature>* getFeatures() const {return featuresList;}
 	
-    const QString& getRootPath()const { return rootPath; }
+    const QString& getRootPath()const {return rootPath;}
+    void scanFS();
 
-	void addItemToPage( const UBFeature &item );
-    void addItemAsBackground( const UBFeature &item );
-	const UBFeature& getCurrentElement()const { return currentElement; }
-	void setCurrentElement( const UBFeature &elem ) { currentElement = elem; }
+    void addItemToPage(const UBFeature &item);
+    void addItemAsBackground(const UBFeature &item);
+    const UBFeature& getCurrentElement()const {return currentElement;}
+    void setCurrentElement( const UBFeature &elem ) {currentElement = elem;}
 	const UBFeature & getTrashElement () const { return trashElement; }
 
-    UBFeature addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData );
+    void addDownloadedFile( const QUrl &sourceUrl, const QByteArray &pData, const QString pContentSource, const QString pTitle );
 
 	UBFeature moveItemToFolder( const QUrl &url, const UBFeature &destination );
 	UBFeature copyItemToFolder( const QUrl &url, const UBFeature &destination );
+    void moveExternalData(const QUrl &url, const UBFeature &destination);
+
+    void rescanModel();
+    void siftElements(const QString &pSiftValue);
+    //TODO make less complicated for betteer maintainence
+    UBFeature getFeature(const QModelIndex &index, const QString &listName);
+    void searchStarted(const QString &pattern, QListView *pOnView);
+    void refreshModels();
+
 	void deleteItem( const QUrl &url );
+    void deleteItem(const UBFeature &pFeature);
 	bool isTrash( const QUrl &url );
-	UBFeature newFolder( const QString &name );
-	UBFeature addToFavorite( const QUrl &path );
-	void removeFromFavorite( const QUrl &path );
-    UBFeature importImage( const QImage &image, const UBFeature &destination );
+    void moveToTrash(UBFeature feature, bool deleteManualy = false);
+    void addToFavorite( const QUrl &path );
+    void removeFromFavorite(const QUrl &path, bool deleteManualy = false);
+    void importImage(const QImage &image, const QString &fileName = QString());
+    void importImage( const QImage &image, const UBFeature &destination, const QString &fileName = QString() );
+    QStringList getFileNamesInFolders();
+
+    void fileSystemScan(const QUrl &currPath, const QString & currVirtualPath);
+    int featuresCount(const QUrl &currPath);
+    static UBFeatureElementType fileTypeFromUrl( const QString &path );
 
 	static QString fileNameFromUrl( const QUrl &url );
-	static QPixmap thumbnailForFile( const QString &path );
+    static QImage getIcon( const QString &path, UBFeatureElementType pFType );
 	static bool isDeletable( const QUrl &url );
+    static char featureTypeSplitter() {return ':';}
+    static QString categoryNameForVirtualPath(const QString &str);
+
+    static const QString virtualRootName;
+
+    void assignFeaturesListView(UBFeaturesListView *pList);
+    void assignPathListView(UBFeaturesListView *pList);
+
+public:
+    static const QString rootPath;
+    static const QString audiosPath;
+    static const QString moviesPath;
+    static const QString picturesPath;
+    static const QString appPath;
+    static const QString flashPath;
+    static const QString shapesPath;
+    static const QString interactPath;
+    static const QString trashPath;
+    static const QString favoritePath;
+    static const QString webSearchPath;
+
+signals:
+    void maxFilesCountEvaluated(int pLimit);
+    void scanStarted();
+    void scanFinished();
+    void featureAddedFromThread();
+    void scanCategory(const QString &);
+    void scanPath(const QString &);
+
+private slots:
+    void addNewFolder(QString name);
+    void startThread();
+    void createNpApiFeature(const QString &str);
+
+private:
+
+    UBFeaturesItemDelegate *itemDelegate;
+    UBFeaturesPathItemDelegate *pathItemDelegate;
+
+    UBFeaturesModel *featuresModel;
+    UBFeaturesProxyModel *featuresProxyModel;
+    UBFeaturesSearchProxyModel *featuresSearchModel;
+    UBFeaturesPathProxyModel *featuresPathModel;
+
+    QAbstractItemModel *curListModel;
+    UBFeaturesComputingThread mCThread;
+
 private:
-	void initDirectoryTree();
-	void fileSystemScan(const QUrl &currPath, const QString & currVirtualPath);
-	static QPixmap createThumbnail(const QString &path);
+
+    static QImage createThumbnail(const QString &path);
 	//void addImageToCurrentPage( const QString &path );
 	void loadFavoriteList();
 	void saveFavoriteList();
-	UBFeature getDestinationForItem( const QUrl &url );
-
-	static UBFeatureElementType fileTypeFromUrl( const QString &path );
+    QString uniqNameForFeature(const UBFeature &feature, const QString &pName = "Imported", const QString &pExtention = "") const;
+    QString adjustName(const QString &str);
 
-	QList <UBFeature> *featuresList;
-	UBFeature *rootElement;
+    QList <UBFeature> *featuresList;
 
 	QUrl mUserAudioDirectoryPath;
     QUrl mUserVideoDirectoryPath;
@@ -112,42 +269,40 @@ private:
     QUrl mUserAnimationDirectoryPath;
 
 	QString libraryPath;
-	QUrl mLibAudioDirectoryPath;
-    QUrl mLibVideoDirectoryPath;
     QUrl mLibPicturesDirectoryPath;
+	QUrl mLibAudiosDirectoryPath;
+	QUrl mLibVideosDirectoryPath;
     QUrl mLibInteractiveDirectoryPath;
-    QUrl mLibAnimationDirectoryPath;
+    QUrl mLibAnimationsDirectoryPath;
 	QUrl mLibApplicationsDirectoryPath;
 	QUrl mLibShapesDirectoryPath;
+
 	QUrl trashDirectoryPath;
 	QUrl mLibSearchDirectoryPath;
 
-	QString rootPath;
-	QString audiosPath;
-	QString moviesPath;
-	QString picturesPath;
-	QString appPath;
-	QString flashPath;
-	QString shapesPath;
-	QString interactPath;
-	QString trashPath;
-	QString favoritePath;
+
 
 	int mLastItemOffsetIndex;
 	UBFeature currentElement;
-	UBFeature trashElement;
-	UBFeature favoriteElement;
+
+    UBFeature rootElement;
+    UBFeature favoriteElement;
 	UBFeature audiosElement;
 	UBFeature moviesElement;
 	UBFeature picturesElement;
 	UBFeature interactElement;
+    UBFeature applicationsElement;
 	UBFeature flashElement;
 	UBFeature shapesElement;
 	UBFeature webSearchElement;
 
 	QSet <QUrl> *favoriteSet;
-};
 
+public:
+    UBFeature trashElement;
+    UBFeature getDestinationFeatureForUrl( const QUrl &url );
+    UBFeature getDestinationFeatureForMimeType(const QString &pMmimeType);
 
+};
 
 #endif
diff --git a/Sankore-3.1/src/board/UBLibraryController.cpp b/Sankore-3.1/src/board/UBLibraryController.cpp
deleted file mode 100644
index 0403416..0000000
--- a/Sankore-3.1/src/board/UBLibraryController.cpp
+++ /dev/null
@@ -1,838 +0,0 @@
-/*
- * 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/>.
- */
-#include "UBLibraryController.h"
-
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-#include "core/UBApplicationController.h"
-#include "core/UBDownloadManager.h"
-
-#include "domain/UBAbstractWidget.h"
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/UBGraphicsPixmapItem.h"
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/UBGraphicsWidgetItem.h"
-
-#include "tools/UBToolsManager.h"
-
-#include "board/UBBoardView.h"
-
-#include "UBBoardController.h"
-
-#include "gui/UBThumbnailWidget.h"
-#include "../core/UBSettings.h"
-
-#include "core/memcheck.h"
-
-static quint32 magicNumber = 0xACDCAFE0;
-static QString favoriteVirtualPath = "$favorite$";
-
-UBLibraryController::UBLibraryController(QWidget *pParentWidget) :
-        QObject(pParentWidget),
-        mParentWidget(pParentWidget),
-        mBoardController(UBApplication::boardController),
-        mLastItemOffsetIndex(0)
-{
-    readFavoriteList();
-
-    mAudioStandardDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAudioDirectory());
-
-    mVideoStandardDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userVideoDirectory());
-
-    mPicturesStandardDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userImageDirectory());
-
-    mInteractiveUserDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userInteractiveDirectory());
-
-    mAnimationUserDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAnimationDirectory());
-
-    createInternalWidgetItems();
-
-}
-
-bool UBLibraryController::canItemsOnElementBeDeleted(UBLibElement *pElement)
-{
-    return !pElement->path().toLocalFile().startsWith(UBSettings::settings()->applicationShapeLibraryDirectory()) &&
-            !pElement->path().toLocalFile().startsWith(UBSettings::settings()->applicationInteractivesDirectory()) &&
-            pElement->isDeletable();
-}
-
-void UBLibraryController::createInternalWidgetItems()
-{
-    QStringList toolUris = UBToolsManager::manager()->allToolIDs();
-
-    foreach(QString toolUri, toolUris)
-    {
-        UBToolsManager::UBToolDescriptor tool = UBToolsManager::manager()->toolByID(toolUri);
-        UBLibElement *newTool = new UBLibElement(eUBLibElementType_InteractiveItem, QUrl(tool.id), tool.label);
-        QImage toolImage = tool.icon.toImage();
-        newTool->setThumbnail(toolImage);
-        newTool->setInformation(tool.label + " " + tool.version);
-
-        mInternalLibElements << newTool;
-    }
-}
-
-void UBLibraryController::createNewFolder(QString name, UBLibElement *parentElem)
-{
-    Q_ASSERT(parentElem);
-    Q_ASSERT(parentElem->type() == eUBLibElementType_Folder);
-
-    QUrl qsPath = QUrl::fromLocalFile(parentElem->path().toLocalFile() + "/" + name);
-    createDirectory(qsPath);
-}
-
-void UBLibraryController::createDirectory(QUrl& pDirPath)
-{
-    if(!QFileInfo(pDirPath.toLocalFile()).exists())
-        QDir().mkpath(pDirPath.toLocalFile());
-}
-
-
-QString UBLibraryController::getBaseDestinationForItem(QString& pItem)
-{
-    QString destination("");
-    QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(pItem);
-
-    if(mimetype.contains("audio"))
-        destination = mAudioStandardDirectoryPath.toLocalFile();
-    else if (mimetype.contains("video"))
-        destination = mVideoStandardDirectoryPath.toLocalFile();
-    else if (mimetype.contains("image"))
-        destination = mPicturesStandardDirectoryPath.toLocalFile();
-    else if (mimetype.contains("application")){
-        if (mimetype.contains("x-shockwave-flash"))
-            destination = mAnimationUserDirectoryPath.toLocalFile();
-        else
-            destination = mInteractiveUserDirectoryPath.toLocalFile();
-    }
-    return destination;
-}
-
-void UBLibraryController::routeDataItem(QString& pItem, QByteArray pData)
-{
-    QString fileName = QFileInfo(pItem).fileName();
-    QString destination = getBaseDestinationForItem(pItem);
-    if(!destination.isEmpty()){
-        QString destinationPath = UBFileSystemUtils::normalizeFilePath(QString("%0/%1").arg(destination).arg(fileName));
-        QFile file(destinationPath);
-        if(file.open(QIODevice::WriteOnly)) {
-            file.write(pData);
-            file.close();
-        }
-    }
-    else
-        qWarning() << "no destination found for pItem "  << pItem;
-}
-
-void UBLibraryController::routeItem(QString& pItem, QString pMiddleDirectory)
-{
-    QFileInfo itemToRoute(pItem);
-    QString destination = getBaseDestinationForItem(pItem);
-
-    if(!destination.isEmpty()){
-        if(!pMiddleDirectory.isEmpty()){
-            destination = destination + "/" + pMiddleDirectory;
-            QUrl url = QUrl::fromLocalFile(destination);
-            createDirectory(url);
-        }
-        destination = UBFileSystemUtils::normalizeFilePath(destination + "/" + itemToRoute.fileName());
-
-        QFile::copy(pItem, destination);
-    }
-}
-
-void UBLibraryController::importImageOnLibrary(QImage& pImage)
-{
-    if(!pImage.isNull()){
-        QDateTime now = QDateTime::currentDateTime();
-        QString filePath = mPicturesStandardDirectoryPath.toLocalFile() + "/" + tr("ImportedImage") + "-" + now.toString("dd-MM-yyyy hh-mm-ss") + ".png";
-        filePath = UBFileSystemUtils::normalizeFilePath(filePath);
-        pImage.save(filePath);
-        UBApplication::showMessage(tr("Added 1 Image to Library"));
-        emit updateItemsList();
-    }
-}
-
-void UBLibraryController::importItemOnLibrary(QString& pItemString)
-{
-    pItemString.replace("\r","");
-    pItemString.replace("\n","");
-
-    QFileInfo itemToImport(pItemString);
-
-    bool isZip = false;
-    if(itemToImport.isDir() || (isZip = UBFileSystemUtils::isAZipFile(pItemString))){
-        if(pItemString.contains(".wgt",Qt::CaseInsensitive) || pItemString.contains(".wdgt",Qt::CaseInsensitive)){
-            QString destination = UBSettings::settings()->userInteractiveDirectory() + "/" + itemToImport.fileName();
-            if(isZip)
-                UBFileSystemUtils::expandZipToDir(pItemString,destination);
-            else{
-                if(pItemString.endsWith("/")) pItemString.chop(1);
-                UBFileSystemUtils::copyDir(pItemString, destination + QFileInfo(pItemString).fileName() + "/");
-            }
-            return;
-        }
-
-        QStringList allFiles = UBFileSystemUtils::allFiles(pItemString);
-        QString pathBeforeCurrentDir = pItemString;
-        pathBeforeCurrentDir.replace(UBFileSystemUtils::lastPathComponent(pathBeforeCurrentDir), "");
-        if(pathBeforeCurrentDir.endsWith("//"))
-            pathBeforeCurrentDir.chop(1);
-
-        foreach(QString eachFile, allFiles){
-            QString intermediateDirectory = eachFile;
-            intermediateDirectory = intermediateDirectory.remove(pathBeforeCurrentDir);
-            intermediateDirectory = intermediateDirectory.remove(QFileInfo(eachFile).fileName());
-            routeItem(eachFile,intermediateDirectory);
-        }
-    }
-    else{
-        if(pItemString.startsWith("uniboardTool://") || pItemString.startsWith("file://") || pItemString.startsWith("/"))
-        {
-            // The user dropped a local file
-            routeItem(pItemString);
-        }
-        else
-        {
-            // The user dropped a file from the web. We must download it.
-            sDownloadFileDesc desc;
-            desc.currentSize = 0;
-            desc.id = 0;
-            desc.isBackground = false;
-            desc.modal = false;
-            desc.name = QFileInfo(pItemString).fileName();
-            desc.totalSize = 0;
-            desc.url = pItemString;
-            UBDownloadManager::downloadManager()->addFileToDownload(desc);
-        }
-    }
-
-}
-
-QList<UBLibElement*> UBLibraryController::rootCategoriesList()
-{
-    QList<UBLibElement*> categories;
-
-    UBLibElement* element = new UBLibElement(eUBLibElementType_Folder, mAudioStandardDirectoryPath, tr("Audios", "Audio category element"));
-    element->setThumbnail(QImage(":images/libpalette/AudiosCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    element = new UBLibElement(eUBLibElementType_Folder, mVideoStandardDirectoryPath, tr("Movies", "Movies category element"));
-    element->setThumbnail(QImage(":images/libpalette/MoviesCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    element = new UBLibElement(eUBLibElementType_Folder, mPicturesStandardDirectoryPath, tr("Pictures", "Pictures category element"));
-    element->setThumbnail(QImage(":images/libpalette/PicturesCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    QString path = UBSettings::settings()->applicationShapeLibraryDirectory();
-    element = new UBLibElement(eUBLibElementType_Folder, QUrl::fromLocalFile(path), tr("Shapes", "Shapes category element"));
-    element->setThumbnail(QImage(":images/libpalette/ShapesCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    element = new UBLibElement(eUBLibElementType_Folder, mInteractiveUserDirectoryPath, tr("Applications", "Applications category element"));
-    element->setThumbnail(QImage(":images/libpalette/ApplicationsCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    element = new UBLibElement(eUBLibElementType_VirtualFolder, favoriteVirtualPath, tr("Favorite", "Favorite category element"));
-    element->setThumbnail(QImage(":images/libpalette/FavoritesCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    mInteractiveCategoryPath = QUrl::fromLocalFile(UBSettings::settings()->applicationGipLibraryDirectory());
-    element = new UBLibElement(eUBLibElementType_Folder, mInteractiveCategoryPath, tr("Interactivities", "Interactives category element"));
-    element->setThumbnail(QImage(":images/libpalette/InteractivesCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-//  Note : FEATURE IN DEVELOPMENT, DO NOT ERASE (or you will get problems) !!!!
-    mSearchCategoryPath = QUrl::fromLocalFile(UBSettings::userSearchDirectory());
-    element = new UBLibElement(eUBLibElementType_Folder, mSearchCategoryPath, tr("Web Search", "Web search category element"));
-    element->setThumbnail(QImage(":images/libpalette/WebSearchCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-    element = new UBLibElement(eUBLibElementType_Folder, mAnimationUserDirectoryPath, tr("Animations", "Animations category element"));
-    element->setThumbnail(QImage(":images/libpalette/FlashCategory.svg"));
-    element->setMoveable(false);
-    categories << element;
-
-
-
-    categories << UBLibElement::trashElement();
-
-    return categories;
-}
-
-QImage UBLibraryController::createThumbnail(UBLibElement* pElement)
-{
-    QString thumbnailPath = UBFileSystemUtils::thumbnailPath(pElement->path().toLocalFile());
-    QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(pElement->path().toLocalFile());
-    UBApplication::showMessage(tr("Creating image thumbnail for %1.").arg(pElement->name()));
-
-    if (mimetype.contains("audio"))
-        thumbnailPath = ":images/libpalette/soundIcon.svg";
-    else if (mimetype.contains("video"))
-        thumbnailPath = ":images/libpalette/movieIcon.svg";
-    else {
-        if (pElement->extension().startsWith("svg", Qt::CaseInsensitive) || pElement->extension().startsWith("svgz", Qt::CaseInsensitive)) {
-            thumbnailPath = pElement->path().toLocalFile();
-            UBThumbnailSvg(pElement->path().toLocalFile());
-        }
-        else {
-            QPixmap pix(pElement->path().toLocalFile());
-            if (!pix.isNull()) {
-                pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()), Qt::SmoothTransformation);
-                pix.save(thumbnailPath);
-                UBThumbnailPixmap pixmap(pix);
-                UBPlatformUtils::hideFile(thumbnailPath);
-            }
-            else{
-                thumbnailPath = ":images/libpalette/notFound.png";
-            }
-        }
-    }
-
-    return QImage(thumbnailPath);
-}
-
-QImage UBLibraryController::thumbnailForFile(UBLibElement* pElement)
-{
-    if (pElement->path().toString().contains("uniboardTool://")){
-            QImage image = QImage(UBToolsManager::manager()->iconFromToolId(pElement->path().toString()));
-            return image;
-    }
-    if (pElement->type() == eUBLibElementType_InteractiveItem){
-        QImage image = QImage(UBAbstractWidget::iconFilePath(pElement->path()));
-        return image;
-    }
-
-    QString thumbnailPath = UBFileSystemUtils::thumbnailPath(pElement->path().toLocalFile());
-
-    if (!thumbnailPath.length())
-        qWarning() << "thumbnailForFile impossible to create thumbnail path for the element " + pElement->path().toLocalFile();
-
-    if (QFileInfo(thumbnailPath).exists())
-        return QImage(thumbnailPath);
-    else
-        return createThumbnail(pElement);
-}
-
-QList<UBLibElement*> UBLibraryController::addVirtualElementsForItemPath(const QString& pPath)
-{
-    QList<UBLibElement*> content;
-    if (pPath == mInteractiveUserDirectoryPath.toLocalFile()){
-        content << listElementsInPath(UBSettings::settings()->applicationApplicationsLibraryDirectory());
-        content << listElementsInPath(UBSettings::settings()->userInteractiveFavoritesDirectory());
-        foreach(UBLibElement* eachElement, mInternalLibElements)
-            content << new UBLibElement(eachElement);
-    }
-    else if (pPath == mPicturesStandardDirectoryPath.toLocalFile()){
-        QUrl path = QUrl::fromLocalFile(UBSettings::settings()->applicationImageLibraryDirectory());
-        content << listElementsInPath(path.toLocalFile());
-    }
-    else if (pPath == mInteractiveCategoryPath.toLocalFile()){
-        content << listElementsInPath(UBSettings::settings()->applicationInteractivesDirectory());
-    }
-
-    return content;
-}
-
-QList<UBLibElement*> UBLibraryController::listElementsInPath(const QString& pPath)
-{
-    QList<UBLibElement*> content;
-    QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(pPath);
-
-    QFileInfoList::iterator fileInfo;
-    for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo += 1) {
-        eUBLibElementType fileType = fileInfo->isDir() ? eUBLibElementType_Folder : eUBLibElementType_Item;
-
-        QString fileName = fileInfo->fileName();
-        if (UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application")) {
-            fileType = eUBLibElementType_InteractiveItem;
-        }
-
-        // This is necessary because of the w3c widget directory (xxxx.wgt).
-        QString itemName = (fileType != eUBLibElementType_Item) ? fileName : fileInfo->completeBaseName();
-
-        UBLibElement *element = new UBLibElement(fileType, QUrl::fromLocalFile(fileInfo->absoluteFilePath()), itemName);
-
-        if (fileType == eUBLibElementType_Folder) {
-            element->setThumbnail(QImage(":images/libpalette/folder.svg"));
-        }
-        else if (fileType == eUBLibElementType_Item) {
-            if (element->path().toLocalFile().contains(".thumbnail."))
-                continue;
-            element->setThumbnail(thumbnailForFile(element));
-        }
-        content << element;
-    }
-    content << addVirtualElementsForItemPath(pPath);
-
-    return content;
-}
-
-
-
-QList<UBLibElement*> UBLibraryController::listElementsInVirtualForlder(UBLibElement* pElement)
-{
-    Q_UNUSED(pElement);
-    QList<UBLibElement*> copyOfTheFavoriteList;
-    foreach(UBLibElement* eachElement, mFavoriteList)
-        copyOfTheFavoriteList << new UBLibElement(eachElement);
-    return copyOfTheFavoriteList;
-}
-
-void UBLibraryController::moveContent(QList<UBLibElement*> sourceList, UBLibElement *pDestination)
-{
-    if (pDestination->type() != eUBLibElementType_Folder)
-        qWarning() << "moveContent the destination element isn't a directory";
-
-    foreach (UBLibElement* eachSource, sourceList) {
-        if (!eachSource || pDestination->path().toLocalFile() == eachSource->path().toLocalFile() || eachSource->type() == eUBLibElementType_VirtualFolder)
-            continue;
-
-        if (QFileInfo(eachSource->path().toLocalFile()).isDir())
-            UBFileSystemUtils::moveDir(eachSource->path().toLocalFile(), pDestination->path().toLocalFile() + "/" + eachSource->name());
-        else {
-            QFile(eachSource->path().toLocalFile()).copy(pDestination->path().toLocalFile() + "/" + eachSource->name() + "." + eachSource->extension());
-            QFile::remove(eachSource->path().toLocalFile());
-            QString thumbnailPath = UBFileSystemUtils::thumbnailPath(eachSource->path().toLocalFile());
-            if (thumbnailPath.length() && QFileInfo(thumbnailPath).exists()) {
-                QString thumbnailFileName = UBFileSystemUtils::lastPathComponent(thumbnailPath);
-                QFile(thumbnailPath).copy(pDestination->path().toLocalFile() + "/" + thumbnailFileName);
-                QFile::remove(thumbnailPath);
-            }
-        }
-    }
-}
-
-void UBLibraryController::trashElements(QList<UBLibElement*> trashList)
-{
-    moveContent(trashList, UBLibElement::trashElement());
-    removeFromFavorite(trashList);
-}
-
-void UBLibraryController::emptyElementsOnTrash( QList<UBLibElement*> elementsList)
-{
-    foreach(UBLibElement* eachElement, elementsList) {
-        if (QFileInfo(eachElement->path().toLocalFile()).isDir())
-            UBFileSystemUtils::deleteDir(eachElement->path().toLocalFile());
-        else
-            QFile::remove(eachElement->path().toLocalFile());
-    }
-}
-
-void UBLibraryController::cleanElementsList()
-{
-    qDeleteAll(mElementsList);
-    mElementsList.clear();
-}
-
-QList<UBLibElement*> UBLibraryController::getContent(UBLibElement *element)
-{
-    cleanElementsList();
-
-    switch (element->type()) {
-    case eUBLibElementType_Category: {
-            mElementsList = rootCategoriesList();
-            break;
-        }
-    case eUBLibElementType_VirtualFolder: {
-            mElementsList = listElementsInVirtualForlder(element);
-            break;
-        }
-    case eUBLibElementType_Folder: {
-            mElementsList = listElementsInPath(element->path().toLocalFile());
-            break;
-        }
-    case eUBLibElementType_Item: {
-            qWarning() << "You are browsing a file";
-            break;
-        }
-    default:
-        // We should never come here...
-        Q_ASSERT(false);
-        break;
-    }
-
-    return mElementsList;
-}
-
-UBLibraryController::~UBLibraryController()
-{
-    cleanElementsList();
-	
-    qDeleteAll(mInternalLibElements);
-    mInternalLibElements.clear();
-}
-
-void UBLibraryController::setItemAsBackground(UBLibElement* image)
-{
-    if (!activeScene()){
-        qDebug() << "No active scene";
-        return;
-    }
-    QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(image->path().toLocalFile());
-
-    if(mimeType == "image/svg+xml"){
-        QUrl url(QUrl::fromLocalFile(image->path().toLocalFile()));
-        QGraphicsSvgItem* boardItem = activeScene()->addSvg(url, QPointF(0, 0));
-        activeScene()->setAsBackgroundObject(boardItem, true, true);
-    }
-    else{
-        QPixmap pix(image->path().toLocalFile());
-        UBGraphicsPixmapItem* boardItem = activeScene()->addPixmap(pix, QPointF(0, 0));
-        activeScene()->setAsBackgroundObject(boardItem, true);
-    }
-}
-
-void UBLibraryController::addItemToPage(UBLibElement* item)
-{
-    QList<QUrl> list;
-    list << QUrl::fromLocalFile(item->path().toLocalFile());
-    QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(item->path().toLocalFile());
-
-    if (mimeType.contains("image")){
-        addImagesToCurrentPage(list);
-    }
-    else if (mimeType.contains("audio")){
-        addAudiosToCurrentPage(list);
-    }
-    else if (mimeType.contains("video")){
-        addVideosToCurrentPage(list);
-    }
-    else if (mimeType.contains("application")){
-        addInteractivesToCurrentPage(list);
-    }
-    else if (mimeType.isEmpty() && item->type() == eUBLibElementType_InteractiveItem){
-        // Those conditions allow us to detect internal app like
-        // mask, ruler, compass and protractor
-        list.clear();
-        list << item->path().toString().replace("file:","");
-        addInteractivesToCurrentPage(list);
-    }
-    else{
-        UBApplication::showMessage(tr("Adding to page failed for item %1.").arg(item->name()));
-    }
-}
-
-void UBLibraryController::removeBackground()
-{
-    if (activeScene())
-        activeScene()->setAsBackgroundObject(0);
-
-}
-
-UBGraphicsScene* UBLibraryController::activeScene()
-{
-    if (mBoardController->activeDocument())
-        return mBoardController->activeScene();
-
-    return 0;
-}
-
-
-void UBLibraryController::persistFavoriteList()
-{
-    QFile file(UBSettings::userFavoriteListFilePath());
-    file.open(QIODevice::WriteOnly);
-    QDataStream out(&file);
-    //magic number
-    out << magicNumber;
-    out << (quint32)mFavoriteList.count();
-    foreach(UBLibElement* eachElement, mFavoriteList)
-    {
-        out << (quint32)eachElement->type();
-        out << eachElement->path().toString();
-        out << eachElement->information();
-        out << eachElement->name();
-        out << eachElement->extension();
-    }
-    file.close();
-}
-
-void UBLibraryController::readFavoriteList()
-{
-    QFile file(UBSettings::userFavoriteListFilePath());
-    file.open(QIODevice::ReadOnly);
-    QDataStream in(&file);    // read the data serialized from the file
-    quint32 magicNumber;
-    quint32 numberOfElements;
-
-    in >> magicNumber >> numberOfElements;
-
-    for(quint32 i = 0; i < numberOfElements; i += 1){
-        quint32 type;
-        QString path;
-        QString info;
-        QString name;
-        QString extension;
-
-        in >> type >> path >> info >> name >> extension;
-
-        UBLibElement* eachElement = new UBLibElement((eUBLibElementType)type, QUrl(path), name);
-        eachElement->setInformation(info);
-        eachElement->setExtension(extension);
-        eachElement->setThumbnail(thumbnailForFile(eachElement));
-        if(!isOnFavoriteList(eachElement))
-            mFavoriteList << eachElement;
-    }
-
-    file.close();
-    persistFavoriteList();
-}
-
-UBLibElement* UBLibraryController::isOnFavoriteList(UBLibElement * element)
-{
-    foreach(UBLibElement* eachElement, mFavoriteList)
-        if(eachElement->path() == element->path())
-            return eachElement;
-
-    return 0;
-}
-void UBLibraryController::addToFavorite(QList<UBLibElement*> elementList)
-{
-
-    foreach(UBLibElement* eachElement, elementList)
-        if(!isOnFavoriteList(eachElement))
-            mFavoriteList << new UBLibElement(eachElement);
-
-    persistFavoriteList();
-}
-
-
-void UBLibraryController::removeFromFavorite(QList<UBLibElement*> elementList)
-{
-    foreach(UBLibElement* eachElement, elementList){
-        UBLibElement* elementToRemove = isOnFavoriteList(eachElement);
-        if(elementToRemove)
-            mFavoriteList.removeOne(elementToRemove);
-    }
-
-    persistFavoriteList();
-}
-
-QRectF UBLibraryController::visibleSceneRect()
-{
-    QRectF visibleSceneRect(0, 0, 0, 0);
-
-    if (activeScene() && mBoardController && mBoardController->controlView()) {
-        QPointF topLeftCorner = mBoardController->controlGeometry().topLeft();
-        QPointF bottomRightCorner =
-                mBoardController->controlGeometry().bottomRight();
-
-        QPointF sceneTopLeft = mBoardController->controlView()->mapToScene(
-                topLeftCorner.toPoint());
-        QPointF sceneBottomRight = mBoardController->controlView()->mapToScene(
-                bottomRightCorner.toPoint());
-
-        visibleSceneRect.setTopLeft(sceneTopLeft);
-        visibleSceneRect.setBottomRight(sceneBottomRight);
-    }
-
-    return visibleSceneRect;
-}
-
-void UBLibraryController::addImagesToCurrentPage(const QList<QUrl>& images)
-{
-    QPointF pos = UBApplication::boardController->activeScene()->normalizedSceneRect().center();
-
-   
-    foreach(const QUrl url, images)
-    {
-        mLastItemOffsetIndex = qMin(mLastItemOffsetIndex, 5);
-
-        QGraphicsItem* itemInScene = 0;
-
-        if (activeScene()) {
-            QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(
-                    url.toString());
-
-            pos = QPointF(pos.x() + 50 * mLastItemOffsetIndex, pos.y() + 50 * mLastItemOffsetIndex);
-            mLastItemOffsetIndex++;
-            //TODO UB 4.x move this logic to the scene ..
-            if (mimeType == "image/svg+xml") {
-                itemInScene = activeScene()->addSvg(url, pos);
-            } else {
-                itemInScene = activeScene()->addPixmap(QPixmap(
-                        url.toLocalFile()), pos);
-            }
-        }
-
-        if (itemInScene) {
-            itemInScene = activeScene()->scaleToFitDocumentSize(itemInScene, false, UBSettings::objectInControlViewMargin);
-        }
-    }
-}
-
-void UBLibraryController::addVideosToCurrentPage(const QList<QUrl>& videos)
-{
-    QPointF pos = visibleSceneRect().topLeft();
-
-    foreach(const QUrl url, videos)
-    {
-        mLastItemOffsetIndex++;
-        mLastItemOffsetIndex = qMin(mLastItemOffsetIndex, 5);
-
-        UBGraphicsVideoItem* itemInScene = UBApplication::boardController->addVideo(url, false, pos);
-        itemInScene->setPos(QPoint(pos.x() + 50 * mLastItemOffsetIndex, pos.y() + 50 * mLastItemOffsetIndex));
-    }
-}
-
-void UBLibraryController::addAudiosToCurrentPage(const QList<QUrl>& sounds)
-{
-    QPointF centerPos = visibleSceneRect().center();
-
-    QPointF pos = centerPos;
-
-    //move it a little higher for convenience
-    centerPos.setX(pos.x() - 200);
-    centerPos.setY(pos.y() - 100);
-
-    foreach(const QUrl url, sounds)
-    {
-        mLastItemOffsetIndex++;
-        mLastItemOffsetIndex = qMin(mLastItemOffsetIndex, 5);
-        pos = QPointF(centerPos.x() + 50 * mLastItemOffsetIndex,
-                      centerPos.y() + 50 * mLastItemOffsetIndex);
-        UBApplication::boardController->addAudio(url, false, pos);
-    }
-}
-
-void UBLibraryController::addInteractivesToCurrentPage( const QList<QUrl>& widgets)
-{
-    foreach(const QUrl url, widgets)
-        mBoardController->downloadURL(url, QPointF(0, 0));
-}
-
-QString UBLibraryController::favoritePath()
-{
-    return favoriteVirtualPath;
-}
-
-UBLibElement::UBLibElement() {
-    mType = eUBLibElementType_Category;
-    mName = QObject::tr("/Home", "Category list label on navigation tool bar");
-    mbMoveable = false;
-    mbDeletable = true;
-}
-
-UBLibElement::UBLibElement(UBLibElement* element)
-{
-    mType = element->type();
-    mPath = element->path();
-    mThumbnail = *element->thumbnail();
-    mInfo = element->information();
-    mName = element->name();
-    mExtension = element->extension();
-    mbMoveable = element->isMoveable();
-    mbDeletable = element->isDeletable();
-}
-
-
-UBLibElement::UBLibElement(eUBLibElementType type, const QUrl &path, const QString &name)
-{
-    mType = type;
-    mPath = path;
-    mName = name;
-    mInfo = "";
-    mbMoveable = true;
-    mbDeletable = true;
-
-    if (type == eUBLibElementType_Folder)
-        mThumbnail = QImage(":images/libpalette/folder.svg");
-
-    if (type == eUBLibElementType_InteractiveItem)
-        mThumbnail = QImage(UBAbstractWidget::iconFilePath(path));
-
-    if (type == eUBLibElementType_Item)
-        mExtension = QFileInfo(path.toLocalFile()).completeSuffix();
-
-    if(type == eUBLibElementType_VirtualFolder || type == eUBLibElementType_Category)
-        mbMoveable = false;
-}
-
-UBLibElement::~UBLibElement()
-{
-    //NOOP
-}
-
-UBChainedLibElement::UBChainedLibElement(UBLibElement *pElem, UBChainedLibElement *pNextElem)
-{
-    mpElem = new UBLibElement(pElem);
-    mpNextElem = pNextElem;
-}
-
-UBChainedLibElement::~UBChainedLibElement()
-{
-    if (NULL != mpNextElem) {
-        delete mpNextElem;
-        mpNextElem = NULL;
-    }
-    delete mpElem;
-}
-
-void UBChainedLibElement::setNextElement(UBChainedLibElement *nextElem)
-{
-    mpNextElem = nextElem;
-}
-
-UBChainedLibElement* UBChainedLibElement::lastElement()
-{
-    UBChainedLibElement* pElem = NULL;
-
-    if(NULL != mpNextElem)
-    {
-        UBChainedLibElement* pLast = mpNextElem->lastElement();
-        if(NULL != pLast)
-        {
-            pElem = pLast;
-        }
-        else
-        {
-            pElem = mpNextElem;
-        }
-    }
-
-    return pElem;
-}
-
-QUrl UBChainedLibElement::lastItemPath()
-{
-    return lastElement()->element()->path();
-}
-
-UBLibElement* UBLibElement::trashElement()
-{
-    UBLibElement *trashElement;
-	trashElement = new UBLibElement(eUBLibElementType_Folder, QUrl::fromLocalFile(UBSettings::userTrashDirPath()), QObject::tr("Trash", "Pictures category element"));
-    trashElement->setThumbnail(QImage(":images/libpalette/TrashCategory.svg"));
-    trashElement->setMoveable(false);
-
-    return trashElement;
-}
-
diff --git a/Sankore-3.1/src/board/UBLibraryController.h b/Sankore-3.1/src/board/UBLibraryController.h
deleted file mode 100644
index f10b2b7..0000000
--- a/Sankore-3.1/src/board/UBLibraryController.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBRARYCONTROLLER_H_
-#define UBLIBRARYCONTROLLER_H_
-
-#include <QtGui>
-#include <QtWebKit>
-
-#include "web/UBWebPage.h"
-
-class UBGraphicsScene;
-class UBBoardController;
-class QGraphicsSvgItem;
-class UBLibraryWebView;
-class UBWebView;
-
-typedef enum
-{
-    eUBLibElementType_Category = 0,
-    eUBLibElementType_VirtualFolder,
-    eUBLibElementType_Folder,
-    eUBLibElementType_InteractiveItem,
-    eUBLibElementType_Item
-}eUBLibElementType;
-
-
-class UBLibElement
-{
-
-public:
-    UBLibElement();
-    UBLibElement(eUBLibElementType type, const QUrl& path, const QString& name);
-    UBLibElement(UBLibElement* element);
-    virtual ~UBLibElement();
-
-    static UBLibElement* trashElement();
-
-    eUBLibElementType type(){return mType;}
-    void setType(eUBLibElementType type) {mType = type;}
-    QUrl path(){return mPath;}
-    void setPath(QUrl path){mPath = path;}
-    QImage* thumbnail(){return &mThumbnail;}
-    void setThumbnail(QImage pThumb){mThumbnail = pThumb;}
-    QString information(){return mInfo;}
-    void setInformation(QString info){mInfo = info;}
-    QString name(){return mName;}
-    void setName(QString name){mName = name;}
-    QString extension(){return mExtension;}
-    void setExtension(QString &extension){ mExtension = extension;}
-    bool isMoveable(){return mbMoveable;}
-    void setMoveable(bool bState){mbMoveable = bState;}
-    bool isDeletable() const {return mbDeletable;}
-    void setDeletable(bool mState) {mbDeletable = mState;}
-    void setMetadata(QMap<QString, QString> metadatas){mMetadata = metadatas;}
-    QMap<QString, QString> metadatas(){return mMetadata;}
-
-private:
-    eUBLibElementType mType;
-    QUrl mPath;
-    QImage mThumbnail;
-    QString mInfo;
-    QString mName;
-    QString mExtension;
-    bool mbMoveable;
-    bool mbDeletable;
-    QMap<QString, QString> mMetadata;
-};
-
-class UBChainedLibElement
-{
-public:
-    UBChainedLibElement(UBLibElement* pElem, UBChainedLibElement* pNextElem=NULL);
-    virtual ~UBChainedLibElement();
-
-    UBChainedLibElement* nextElement(){return mpNextElem;}
-    UBChainedLibElement* lastElement();
-    void setNextElement(UBChainedLibElement* nextElem);
-    UBLibElement* element(){return mpElem;}
-    QUrl lastItemPath();
-
-private:
-    UBLibElement* mpElem;
-    UBChainedLibElement* mpNextElem;
-};
-
-class UBLibraryController : public QObject
-{
-    Q_OBJECT;
-
-    public:
-        UBLibraryController(QWidget *parentWidget);
-        virtual ~UBLibraryController();
-
-        QList<UBLibElement*> getContent(UBLibElement* pElement);
-        void moveContent(QList<UBLibElement*> sourceList, UBLibElement *pDestination);
-        void trashElements(QList<UBLibElement*> trashList);
-        void emptyElementsOnTrash(QList<UBLibElement*> elementsList);
-
-        void addNativeToolToFavorites(const QUrl& url);
-
-        void setItemAsBackground(UBLibElement* image);
-        void addItemToPage(UBLibElement* item);
-
-        void addToFavorite(QList<UBLibElement*> elementList);
-        void removeFromFavorite(QList<UBLibElement*> elementList);
-
-        void importItemOnLibrary(QString& pItemString);
-        void importImageOnLibrary(QImage &pImage);
-
-        QString favoritePath();
-
-        void createNewFolder(QString name, UBLibElement* parentElem);
-        bool canItemsOnElementBeDeleted(UBLibElement *pElement);
-
-        void routeItem(QString& pItem, QString pMiddleDirectory = QString());
-        void routeDataItem(QString& pItem, QByteArray pData);
-
-    signals:
-        void dialogClosed(int state);
-        void setResource(QString &pathResource,QString &mimetype);
-        void updateItemsList();
-
-    public slots:
-        void removeBackground();
-        void addImagesToCurrentPage(const QList<QUrl>& images);
-        void addVideosToCurrentPage(const QList<QUrl>& videos);
-        void addAudiosToCurrentPage(const QList<QUrl>& sounds);
-        void addInteractivesToCurrentPage(const QList<QUrl>& interactiveWidgets);
-
-    protected:
-
-        UBGraphicsScene* activeScene();
-        QRectF visibleSceneRect();
-        QList<UBLibElement*> mFavoriteList;
-        void persistFavoriteList();
-        void readFavoriteList();
-        QList<UBLibElement*> mInternalLibElements;
-        QList<UBLibElement*> mElementsList;
-        void cleanElementsList();
-
-    private:
-        QList<UBLibElement*> rootCategoriesList();
-        QList<UBLibElement*> listElementsInPath(const QString& pPath);
-        QList<UBLibElement*> listElementsInVirtualForlder(UBLibElement* pElement);
-        void userPath(QUrl &pPath);
-        QImage thumbnailForFile(UBLibElement* pPath);
-        QImage createThumbnail(UBLibElement* pPath);
-        QList<UBLibElement*> addVirtualElementsForItemPath(const QString& pPath);
-
-        void createInternalWidgetItems();
-        void createDirectory(QUrl& pDirPath);
-
-        QUrl mAudioStandardDirectoryPath;
-        QUrl mVideoStandardDirectoryPath;
-        QUrl mPicturesStandardDirectoryPath;
-        QUrl mInteractiveUserDirectoryPath;
-        QUrl mInteractiveCategoryPath;
-        QUrl mAnimationUserDirectoryPath;
-        QUrl mSearchCategoryPath;
-
-        QStringList addItemsToCurrentLibrary(const QDir& pSelectedFolder, const QStringList& pExtensions);
-
-        UBLibElement* isOnFavoriteList(UBLibElement * element);
-
-        QWidget *mParentWidget;
-        UBBoardController *mBoardController;
-
-        int mLastItemOffsetIndex;
-        QString getBaseDestinationForItem(QString& pItem);
-
-};
-
-#endif /* UBLIBRARYCONTROLLER_H_ */
diff --git a/Sankore-3.1/src/board/board.pri b/Sankore-3.1/src/board/board.pri
index 1208db8..c8d421e 100644
--- a/Sankore-3.1/src/board/board.pri
+++ b/Sankore-3.1/src/board/board.pri
@@ -2,14 +2,12 @@
 HEADERS      += src/board/UBBoardController.h \
                 src/board/UBBoardPaletteManager.h \
                 src/board/UBBoardView.h \
-                src/board/UBLibraryController.h \
                 src/board/UBDrawingController.h \
 		src/board/UBFeaturesController.h
 
 SOURCES      += src/board/UBBoardController.cpp \
                 src/board/UBBoardPaletteManager.cpp \
                 src/board/UBBoardView.cpp \
-                src/board/UBLibraryController.cpp \
                 src/board/UBDrawingController.cpp \
 		src/board/UBFeaturesController.cpp
 
diff --git a/Sankore-3.1/src/core/UB.h b/Sankore-3.1/src/core/UB.h
index 86eaa5d..66ac810 100644
--- a/Sankore-3.1/src/core/UB.h
+++ b/Sankore-3.1/src/core/UB.h
@@ -1,24 +1,49 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UB_H_
 #define UB_H_
 
 #include <QtGui>
 
-#define UB_MAX_ZOOM 15
+#define UB_MAX_ZOOM 9
+
+struct UBMimeType
+{
+    enum Enum
+    {
+        RasterImage = 0,
+        VectorImage,
+        AppleWidget,
+        W3CWidget,
+        Video,
+        Audio,
+        Flash,
+        PDF,
+        UniboardTool,
+        Group,
+        UNKNOWN
+    };
+};
 
 struct UBStylusTool
 {
@@ -28,6 +53,7 @@ struct UBStylusTool
 		Eraser, 
  		Marker, 
 		Selector, 
+        Play,
 		Hand, 
 		ZoomIn, 
 		ZoomOut, 
@@ -98,6 +124,10 @@ struct UBGraphicsItemData
         , ItemEditable//for text only
         , ItemOwnZValue
         , itemLayerType //use instead of deprecated ItemLayerType
+        , ItemUuid //storing uuid in QGraphicsItem for fast finding operations
+        //Duplicating delegate's functions to make possible working with pure QGraphicsItem
+        , ItemFlippable // (bool)
+        , ItemRotatable // (bool)
     };
 };
 
@@ -110,12 +140,10 @@ struct UBGraphicsItemType
         PolygonItemType = QGraphicsItem::UserType + 1, 
 		PixmapItemType,
         SvgItemType, 
-		VideoItemType, 
-		AudioItemType, 
-		AppleWidgetItemType, 
+        DelegateButtonType,
+		MediaItemType, 
 		PDFItemType, 
-		TextItemType, 
-		W3CWidgetItemType, 
+		TextItemType,
 		CurtainItemType,
         RulerItemType, 
 		CompassItemType, 
@@ -124,7 +152,11 @@ struct UBGraphicsItemType
 		TriangleItemType,
         MagnifierItemType,
         cacheItemType,
-        groupContainerType
+        AristoItemType,
+        groupContainerType,
+        ToolWidgetItemType,
+        GraphicsWidgetItemType,
+        UserTypesCount // this line must be the last line in this enum because it is types counter.
     };
 };
 
diff --git a/Sankore-3.1/src/core/UBApplication.cpp b/Sankore-3.1/src/core/UBApplication.cpp
index faab24b..1d2f966 100644
--- a/Sankore-3.1/src/core/UBApplication.cpp
+++ b/Sankore-3.1/src/core/UBApplication.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBApplication.h"
 
 #include <QtGui>
@@ -36,8 +43,6 @@
 #include "UBIdleTimer.h"
 #include "UBApplicationController.h"
 
-//#include "softwareupdate/UBSoftwareUpdateController.h"
-
 #include "board/UBBoardController.h"
 #include "board/UBDrawingController.h"
 #include "board/UBBoardView.h"
@@ -57,6 +62,7 @@
 #include "frameworks/UBCryptoUtils.h"
 #include "tools/UBToolsManager.h"
 
+#include "UBDisplayManager.h"
 #include "core/memcheck.h"
 
 QPointer<QUndoStack> UBApplication::undoStack;
@@ -131,31 +137,15 @@ UBApplication::UBApplication(const QString &id, int &argc, char **argv) : QtSing
         || args.contains("-log")
         || args.contains("log");
 
-    UBPlatformUtils::init();
+
+    setupTranslators(args);
+
     UBResources::resources();
 
     if (!undoStack)
-    {
         undoStack = new QUndoStack(staticMemoryCleaner);
-    }
 
-    mApplicationTranslator = new QTranslator(this);
-    mApplicationTranslator->load(UBPlatformUtils::preferredTranslation(QString("sankore_")));
-    installTranslator(mApplicationTranslator);
-
-    QString localString;
-    if (!mApplicationTranslator->isEmpty())
-        localString = UBPlatformUtils::preferredLanguage();
-    else
-        localString = "en_US";
-
-    mQtGuiTranslator = new QTranslator(this);
-    mQtGuiTranslator->load(UBPlatformUtils::preferredTranslation(QString("qt_")));
-    installTranslator(mQtGuiTranslator);
-
-
-    QLocale::setDefault(QLocale(localString));
-    qDebug() << "Running application in:" << localString;
+    UBPlatformUtils::init();
 
     UBSettings *settings = UBSettings::settings();
 
@@ -217,6 +207,76 @@ UBApplication::~UBApplication()
     staticMemoryCleaner = 0;
 }
 
+QString UBApplication::checkLanguageAvailabilityForSankore(QString &language)
+{
+    QStringList availableTranslations = UBPlatformUtils::availableTranslations();
+    if(availableTranslations.contains(language,Qt::CaseInsensitive))
+        return language;
+    else{
+        if(language.length() > 2){
+            QString shortLanguageCode = language.left(2);
+            if(availableTranslations.contains(shortLanguageCode,Qt::CaseInsensitive))
+                return shortLanguageCode;
+        }
+    }
+    return QString("");
+}
+
+void UBApplication::setupTranslators(QStringList args)
+{
+    QString forcedLanguage("");
+    if(args.contains("-lang"))
+        forcedLanguage=args.at(args.indexOf("-lang") + 1);
+// TODO claudio: this has been commented because some of the translation seem to be loaded at this time
+//               especially tools name. This is a workaround and we have to be able to load settings without
+//               impacting the translations
+//    else{
+//        QString setLanguage = UBSettings::settings()->appPreferredLanguage->get().toString();
+//        if(!setLanguage.isEmpty())
+//            forcedLanguage = setLanguage;
+//    }
+
+    QString language("");
+
+    if(!forcedLanguage.isEmpty())
+        language = checkLanguageAvailabilityForSankore(forcedLanguage);
+
+    if(language.isEmpty()){
+        QString systemLanguage = UBPlatformUtils::systemLanguage();
+        language = checkLanguageAvailabilityForSankore(systemLanguage);
+    }
+
+    if(language.isEmpty()){
+        language = "en_US";
+        //fallback if no translation are available
+    }
+    else{
+        mApplicationTranslator = new QTranslator(this);
+        mQtGuiTranslator = new QTranslator(this);
+        mApplicationTranslator->load(UBPlatformUtils::translationPath(QString("sankore_"),language));
+        installTranslator(mApplicationTranslator);
+
+        QString qtGuiTranslationPath = UBPlatformUtils::translationPath("qt_", language);
+
+
+        if(!QFile(qtGuiTranslationPath).exists()){
+            qtGuiTranslationPath = UBPlatformUtils::translationPath("qt_", language.left(2));
+            if(!QFile(qtGuiTranslationPath).exists())
+                qtGuiTranslationPath = "";
+        }
+
+        if(!qtGuiTranslationPath.isEmpty()){
+            mQtGuiTranslator->load(qtGuiTranslationPath);
+            installTranslator(mQtGuiTranslator);
+        }
+        else
+            qDebug() << "Qt gui translation in " << language << " is not available";
+    }
+
+    QLocale::setDefault(QLocale(language));
+    qDebug() << "Running application in:" << language;
+}
+
 int UBApplication::exec(const QString& pFileToImport)
 {
     QPixmapCache::setCacheLimit(1024 * 100);
@@ -264,7 +324,11 @@ int UBApplication::exec(const QString& pFileToImport)
 
     UBDrawingController::drawingController()->setStylusTool((int)UBStylusTool::Pen);
 
-    applicationController = new UBApplicationController(boardController->controlView(), boardController->displayView(), mainWindow, staticMemoryCleaner);
+    applicationController = new UBApplicationController(boardController->controlView(), 
+                                                        boardController->displayView(), 
+                                                        mainWindow, 
+                                                        staticMemoryCleaner,
+                                                        boardController->paletteManager()->rightPalette());
 
 
     connect(applicationController, SIGNAL(mainModeChanged(UBApplicationController::MainMode)),
@@ -283,8 +347,6 @@ int UBApplication::exec(const QString& pFileToImport)
     connect(mainWindow->actionHideApplication, SIGNAL(triggered()), this, SLOT(showMinimized()));
 #endif
 
-    connect(documentController, SIGNAL(movedToIndex(int)), boardController, SIGNAL(documentReorganized(int)));
-
     mPreferencesController = new UBPreferencesController(mainWindow);
 
     connect(mainWindow->actionPreferences, SIGNAL(triggered()), mPreferencesController, SLOT(show()));
@@ -312,49 +374,30 @@ int UBApplication::exec(const QString& pFileToImport)
     boardController->setupLayout();
 
     if (pFileToImport.length() > 0)
-    {
         UBApplication::applicationController->importFile(pFileToImport);
-    }
 
 #if defined(Q_WS_MAC)
     static AEEventHandlerUPP ub_proc_ae_handlerUPP = AEEventHandlerUPP(ub_appleEventProcessor);
     AEInstallEventHandler(kCoreEventClass, kAEReopenApplication, ub_proc_ae_handlerUPP, SRefCon(UBApplication::applicationController), true);
 #endif
-    if (UBSettings::settings()->appStartMode->get() == "Desktop")
+
+    if (UBSettings::settings()->appStartMode->get().toInt())
         applicationController->showDesktop();
     else
         applicationController->showBoard();
 
-
-    if (UBSettings::settings()->appIsInSoftwareUpdateProcess->get().toBool())
-    {
-        UBSettings::settings()->appIsInSoftwareUpdateProcess->set(false);
-
-        // clean potential updater in temp directory
-        UBFileSystemUtils::cleanupGhostTempFolders();
-
-        QUuid docUuid( UBSettings::settings()->appLastSessionDocumentUUID->get().toString());
-
-        if (!docUuid.isNull())
-        {
-            UBDocumentProxy* proxy = UBPersistenceManager::persistenceManager()->documentByUuid(docUuid);
-
-            if (proxy)
-            {
-                bool ok;
-                int lastSceneIndex = UBSettings::settings()->appLastSessionPageIndex->get().toInt(&ok);
-
-                if (!ok)
-                    lastSceneIndex = 0;
-
-                boardController->setActiveDocumentScene(proxy, lastSceneIndex);
-            }
-        }
-    }
-
+    onScreenCountChanged(1);
+    connect(desktop(), SIGNAL(screenCountChanged(int)), this, SLOT(onScreenCountChanged(int)));
     return QApplication::exec();
 }
 
+void UBApplication::onScreenCountChanged(int newCount)
+{
+    Q_UNUSED(newCount);
+    UBDisplayManager displayManager;
+    mainWindow->actionMultiScreen->setEnabled(displayManager.numScreens() > 1);
+}
+
 void UBApplication::importUniboardFiles()
 {
     mUniboardSankoreTransition = new UniboardSankoreTransition();
@@ -450,6 +493,8 @@ void UBApplication::closing()
     if (webController)
         webController->closing();
 
+    UBSettings::settings()->closing();
+
     UBSettings::settings()->appToolBarPositionedAtTop->set(mainWindow->toolBarArea(mainWindow->boardToolBar) == Qt::TopToolBarArea);
 
     quit();
@@ -493,30 +538,29 @@ void UBApplication::decorateActionMenu(QAction* action)
             menu->addAction(mainWindow->actionCut);
             menu->addAction(mainWindow->actionCopy);
             menu->addAction(mainWindow->actionPaste);
-
-            menu->addSeparator();
-            menu->addAction(mainWindow->actionPreferences);
             menu->addAction(mainWindow->actionHideApplication);
             menu->addAction(mainWindow->actionSleep);
 
             menu->addSeparator();
-            menu->addAction(mainWindow->actionSankoreEditor);
-
+            menu->addAction(mainWindow->actionPreferences);
+            menu->addAction(mainWindow->actionMultiScreen);
+            menu->addAction(mainWindow->actionImportUniboardDocuments);
             // SANKORE-48: Hide the check update action if the setting
             // EnableAutomaticSoftwareUpdates is false in Uniboard.config
-            if(UBSettings::settings()->appEnableAutomaticSoftwareUpdates->get().toBool()){
+            if(UBSettings::settings()->appEnableAutomaticSoftwareUpdates->get().toBool())
                 menu->addAction(mainWindow->actionCheckUpdate);
-            }
-            else{
+            else
                 mainWindow->actionCheckUpdate->setEnabled(false);
-            }
+
+            menu->addSeparator();
+            menu->addAction(mainWindow->actionTutorial);
+            menu->addAction(mainWindow->actionSankoreEditor);
 
 #ifndef Q_WS_X11 // No Podcast on Linux yet
             menu->addAction(mainWindow->actionPodcast);
             mainWindow->actionPodcast->setText(tr("Podcast"));
 #endif
-            menu->addAction(mainWindow->actionMultiScreen);
-            menu->addAction(mainWindow->actionImportUniboardDocuments);
+
             menu->addSeparator();
             menu->addAction(mainWindow->actionQuit);
 
@@ -578,6 +622,12 @@ bool UBApplication::eventFilter(QObject *obj, QEvent *event)
             boardController->controlView()->forcedTabletRelease();
     }
 
+
+    if (event->type() == QEvent::ApplicationActivate)
+    {
+        boardController->controlView()->setMultiselection(false);
+    }
+
 #ifdef Q_WS_MAC
     if (bIsMinimized && event->type() == QEvent::ApplicationActivate){
         if (mainWindow->isHidden()) mainWindow->show();
diff --git a/Sankore-3.1/src/core/UBApplication.h b/Sankore-3.1/src/core/UBApplication.h
index 2950005..dc72c3a 100644
--- a/Sankore-3.1/src/core/UBApplication.h
+++ b/Sankore-3.1/src/core/UBApplication.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBAPPLICATION_H_
 #define UBAPPLICATION_H_
@@ -37,7 +44,6 @@ class UBSettings;
 class UBPersistenceManager;
 class UBApplicationController;
 class UBDocumentController;
-class UBSoftwareUpdateController;
 class UBMainWindow;
 
 class UBApplication : public QtSingleApplication
@@ -59,7 +65,6 @@ class UBApplication : public QtSingleApplication
         static UBBoardController* boardController;
         static UBWebController* webController;
         static UBDocumentController* documentController;
-        static UBSoftwareUpdateController* softwareUpdateController;
         static UniboardSankoreTransition* mUniboardSankoreTransition;
 
         static UBMainWindow* mainWindow;
@@ -119,11 +124,14 @@ class UBApplication : public QtSingleApplication
 #endif
         void importUniboardFiles();
 
+        void onScreenCountChanged(int newCount);
+
     private:
         void updateProtoActionsState();
+        void setupTranslators(QStringList args);
         QList<QMenu*> mProtoMenus;
         bool mIsVerbose;
-
+        QString checkLanguageAvailabilityForSankore(QString& language);
     protected:
 
 #if defined(Q_WS_MACX) && !defined(QT_MAC_USE_COCOA)
diff --git a/Sankore-3.1/src/core/UBApplicationController.cpp b/Sankore-3.1/src/core/UBApplicationController.cpp
index 328fe88..7fe8c11 100644
--- a/Sankore-3.1/src/core/UBApplicationController.cpp
+++ b/Sankore-3.1/src/core/UBApplicationController.cpp
@@ -1,17 +1,25 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBApplicationController.h"
 
 #include "frameworks/UBPlatformUtils.h"
@@ -33,6 +41,8 @@
 #include "document/UBDocumentProxy.h"
 #include "document/UBDocumentController.h"
 
+#include "domain/UBGraphicsWidgetItem.h"
+
 #include "desktop/UBDesktopPalette.h"
 #include "desktop/UBDesktopAnnotationController.h"
 
@@ -40,9 +50,10 @@
 
 #include "gui/UBScreenMirror.h"
 #include "gui/UBMainWindow.h"
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
 
 #include "domain/UBGraphicsPixmapItem.h"
-#include "domain/UBW3CWidget.h"
 
 #include "podcast/UBPodcastController.h"
 
@@ -56,25 +67,26 @@
 
 #include "core/memcheck.h"
 
-UBApplicationController::UBApplicationController(UBBoardView *pControlView, UBBoardView *pDisplayView,
-        UBMainWindow* pMainWindow, QObject* parent)
+UBApplicationController::UBApplicationController(UBBoardView *pControlView, 
+                                                 UBBoardView *pDisplayView,
+                                                 UBMainWindow* pMainWindow, 
+                                                 QObject* parent,
+                                                 UBRightPalette* rightPalette)
     : QObject(parent)
     , mMainWindow(pMainWindow)
     , mControlView(pControlView)
     , mDisplayView(pDisplayView)
     , mMirror(0)
-    , mFtp(0)
     , mMainMode(Board)
     , mDisplayManager(0)
     , mAutomaticCheckForUpdates(false)
     , mCheckingForUpdates(false)
     , mIsShowingDesktop(false)
     , mHttp(0)
-
 {
     mDisplayManager = new UBDisplayManager(this);
 
-    mUninoteController = new UBDesktopAnnotationController(this);
+    mUninoteController = new UBDesktopAnnotationController(this, rightPalette);
 
     connect(mDisplayManager, SIGNAL(screenLayoutChanged()), this, SLOT(screenLayoutChanged()));
     connect(mDisplayManager, SIGNAL(screenLayoutChanged()), mUninoteController, SLOT(screenLayoutChanged()));
@@ -120,7 +132,6 @@ UBApplicationController::~UBApplicationController()
 
     delete mBlackScene;
     delete mMirror;
-	if (mFtp) delete mFtp;
     if (mHttp) delete mHttp;
 }
 
@@ -319,7 +330,7 @@ void UBApplicationController::addCapturedEmbedCode(const QString& embedCode)
         int width = 300;
         int height = 150;
 
-        QString widgetPath = UBW3CWidget::createHtmlWrapperInDir(embedCode, userWidgetDir,
+        QString widgetPath = UBGraphicsW3CWidgetItem::createHtmlWrapperInDir(embedCode, userWidgetDir,
                 QSize(width, height), UBStringUtils::toCanonicalUuid(QUuid::createUuid()));
 
         if (widgetPath.length() > 0)
@@ -340,8 +351,7 @@ void UBApplicationController::showBoard()
         int selectedSceneIndex = UBApplication::documentController->getSelectedItemIndex();
         if (selectedSceneIndex != -1)
         {
-            UBApplication::boardController->setActiveDocumentScene(UBApplication::documentController->getCurrentDocument(), selectedSceneIndex);
-            UBApplication::boardController->emitScrollSignal();
+            UBApplication::boardController->setActiveDocumentScene(UBApplication::documentController->selectedDocument(), selectedSceneIndex, true);
         }
     }
 
@@ -366,6 +376,7 @@ void UBApplicationController::showBoard()
     emit mainModeChanged(Board);
 
     UBApplication::boardController->freezeW3CWidgets(false);
+    UBApplication::boardController->activeScene()->updateGroupButtonState();
 }
 
 
@@ -422,7 +433,7 @@ void UBApplicationController::showDocument()
 
     if (UBApplication::boardController)
     {
-        if (UBApplication::boardController->activeScene()->isModified())
+        if (UBApplication::boardController->activeScene()->isModified() || (UBApplication::boardController->paletteManager()->teacherGuideDockWidget() && UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()))
             UBApplication::boardController->persistCurrentScene();
         UBApplication::boardController->hide();
     }
@@ -460,7 +471,7 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess)
         UBPlatformUtils::bringPreviousProcessToFront();
     }
 
-    UBDrawingController::drawingController()->setDrawingMode(eDrawingMode_Artistic);
+    UBDrawingController::drawingController()->setInDestopMode(true);
     UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
 }
 
@@ -474,23 +485,30 @@ void UBApplicationController::showTutorial()
         UBApplication::boardController->hide();
     }
 
-    // it's needed not to duplicate webbrowser search in web mode. If I've breaked smbd's code let Ivan know
-    UBApplication::webController->show(UBWebController::Tutorial);
+    if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
+    {
+        showDesktop(true);
+        UBApplication::webController->show(UBWebController::Tutorial);
 
-    mMainWindow->webToolBar->hide();
-    mMainWindow->boardToolBar->hide();
-    mMainWindow->documentToolBar->hide();
-    mMainWindow->tutorialToolBar->show();
+    }
+    else{
+    	mMainWindow->webToolBar->hide();
+    	mMainWindow->boardToolBar->hide();
+    	mMainWindow->documentToolBar->hide();
+    	mMainWindow->tutorialToolBar->show();
 
 
-    mMainMode = Tutorial;
+    	mMainMode = Tutorial;
 
-    adaptToolBar();
+    	adaptToolBar();
 
-    mUninoteController->hideWindow();
+    	mUninoteController->hideWindow();
 
-    mirroringEnabled(false);
-    emit mainModeChanged(mMainMode);
+    	UBApplication::webController->show(UBWebController::Tutorial);
+
+    	mirroringEnabled(false);
+    	emit mainModeChanged(mMainMode);
+    }
 }
 
 
@@ -522,42 +540,26 @@ void UBApplicationController::showSankoreEditor()
     emit mainModeChanged(mMainMode);
 }
 
-void UBApplicationController::runCheckUpdate(int id, bool error)
-{
-	Q_UNUSED(id);
-    if(!error){
-        if(mFtp!=NULL)
-            delete mFtp;
-        mFtp = new QFtp(this);
-        connect(mFtp, SIGNAL(commandFinished(int,bool)), this, SLOT(ftpCommandFinished(int,bool)));
-        mFtp->connectToHost("91.121.248.138",21);
-        mFtp->login("anonymous", "anonymous");
-        mFtp->get("update.json",0);
-    }
-}
-
 void UBApplicationController::checkUpdate()
 {
-    //TODO change this when upgrade the qt version
-    // networkAccessible : NetworkAccessibility not yet available
-    if(mHttp)
+	if(mHttp)
         delete mHttp;
-    QUrl url("http://www.google.com");
+    QUrl url("http://ftp.open-sankore.org/update.json");
     mHttp = new QHttp(url.host());
-    connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(runCheckUpdate(int,bool)));
+    connect(mHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(updateRequestFinished(int,bool)));
     mHttp->get(url.path());
 }
 
-void UBApplicationController::ftpCommandFinished(int id, bool error)
+void UBApplicationController::updateRequestFinished(int id, bool error)
 {
    if (error){
-       qWarning() << "ftp command id" << id << "return the error: " << mFtp->errorString();
-       mFtp->close();
+       qWarning() << "http command id" << id << "return the error: " << mHttp->errorString();
+       mHttp->close();
    }
    else{
-       QString responseString =  QString(mFtp->readAll());
+       QString responseString =  QString(mHttp->readAll());
        if (!responseString.isEmpty() && responseString.contains("version") && responseString.contains("url")){
-           mFtp->close();
+           mHttp->close();
            downloadJsonFinished(responseString);
        }
    }
@@ -603,9 +605,6 @@ void UBApplicationController::checkUpdateRequest()
 
 void UBApplicationController::hideDesktop()
 {
-    mDisplayManager->adjustScreens(-1);
-    UBDrawingController::drawingController()->setDrawingMode(eDrawingMode_Vector);
-
     if (mMainMode == Board)
     {
         showBoard();
@@ -628,6 +627,9 @@ void UBApplicationController::hideDesktop()
     }
 
     mIsShowingDesktop = false;
+
+    mDisplayManager->adjustScreens(-1);
+
     emit desktopMode(false);
 }
 
diff --git a/Sankore-3.1/src/core/UBApplicationController.h b/Sankore-3.1/src/core/UBApplicationController.h
index 4d578b4..54b65db 100644
--- a/Sankore-3.1/src/core/UBApplicationController.h
+++ b/Sankore-3.1/src/core/UBApplicationController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBAPPLICATIONCONTROLLER_H_
 #define UBAPPLICATIONCONTROLLER_H_
 
@@ -31,6 +38,7 @@ class UBSoftwareUpdate;
 class QNetworkAccessManager;
 class QNetworkReply;
 class QHttp;
+class UBRightPalette;
 
 
 class UBApplicationController : public QObject
@@ -39,7 +47,7 @@ class UBApplicationController : public QObject
 
     public:
 
-        UBApplicationController(UBBoardView *pControlView, UBBoardView *pDisplayView, UBMainWindow *pMainWindow, QObject* parent = 0);
+        UBApplicationController(UBBoardView *pControlView, UBBoardView *pDisplayView, UBMainWindow *pMainWindow, QObject* parent, UBRightPalette* rightPalette);
         virtual ~UBApplicationController();
 
         int initialHScroll() { return mInitialHScroll; }
@@ -134,8 +142,7 @@ class UBApplicationController : public QObject
         void checkUpdateAtLaunch();
 
     private slots:
-        void ftpCommandFinished(int id, bool error);
-        void runCheckUpdate(int id, bool error);
+        void updateRequestFinished(int id, bool error);
 
     protected:
 
@@ -152,7 +159,6 @@ class UBApplicationController : public QObject
         UBScreenMirror* mMirror;
 
         int mInitialHScroll, mInitialVScroll;
-        QFtp* mFtp;
 
     private:
 
diff --git a/Sankore-3.1/src/core/UBDisplayManager.cpp b/Sankore-3.1/src/core/UBDisplayManager.cpp
index 140dc87..315cdd9 100644
--- a/Sankore-3.1/src/core/UBDisplayManager.cpp
+++ b/Sankore-3.1/src/core/UBDisplayManager.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBDisplayManager.h"
 
 #include "frameworks/UBPlatformUtils.h"
@@ -121,25 +128,13 @@ int UBDisplayManager::numPreviousViews()
 void UBDisplayManager::setControlWidget(QWidget* pControlWidget)
 {
     if(hasControl() && pControlWidget && (pControlWidget != mControlWidget))
-    {
         mControlWidget = pControlWidget;
-		// !!!! Should be included into Windows after QT recompilation
-#ifdef Q_WS_MAC
-//        mControlWidget->setAttribute(Qt::WA_MacNoShadow);
-#endif
-    }
 }
 
 void UBDisplayManager::setDesktopWidget(QWidget* pControlWidget )
 {
     if(pControlWidget && (pControlWidget != mControlWidget))
-    {
         mDesktopWidget = pControlWidget;
-        // !!!! Should be included into Windows after QT recompilation
-#ifdef Q_WS_MAC
-        //        mControlWidget->setAttribute(Qt::WA_MacNoShadow);
-#endif
-    }
 }
 
 void UBDisplayManager::setDisplayWidget(QWidget* pDisplayWidget)
@@ -148,14 +143,14 @@ void UBDisplayManager::setDisplayWidget(QWidget* pDisplayWidget)
     {
         if (mDisplayWidget)
         {
+            mDisplayWidget->hide();
             pDisplayWidget->setGeometry(mDisplayWidget->geometry());
             pDisplayWidget->setWindowFlags(mDisplayWidget->windowFlags());
         }
         mDisplayWidget = pDisplayWidget;
-		// !!!! Should be included into Windows after QT recompilation
-#ifdef Q_WS_MAC
-//        mDisplayWidget->setAttribute(Qt::WA_MacNoShadow);
-#endif
+        mDisplayWidget->setGeometry(mDesktop->screenGeometry(mDisplayScreenIndex));
+        if (UBSettings::settings()->appUseMultiscreen->get().toBool())
+            mDisplayWidget->showFullScreen();
     }
 }
 
diff --git a/Sankore-3.1/src/core/UBDisplayManager.h b/Sankore-3.1/src/core/UBDisplayManager.h
index f6ca289..3f8e2d5 100644
--- a/Sankore-3.1/src/core/UBDisplayManager.h
+++ b/Sankore-3.1/src/core/UBDisplayManager.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDISPLAYMANAGER_H_
 #define UBDISPLAYMANAGER_H_
 
diff --git a/Sankore-3.1/src/core/UBDocumentManager.cpp b/Sankore-3.1/src/core/UBDocumentManager.cpp
index fbe315e..f78ebd6 100644
--- a/Sankore-3.1/src/core/UBDocumentManager.cpp
+++ b/Sankore-3.1/src/core/UBDocumentManager.cpp
@@ -1,19 +1,25 @@
-/*
- * 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/>.
- */
-
-
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBDocumentManager.h"
 
 #include "frameworks/UBStringUtils.h"
@@ -33,6 +39,8 @@
 #include "domain/UBGraphicsPixmapItem.h"
 
 #include "document/UBDocumentProxy.h"
+#include "document/UBDocumentController.h"
+#include "board/UBBoardController.h"
 
 #include "UBApplication.h"
 #include "UBSettings.h"
@@ -64,15 +72,15 @@ UBDocumentManager::UBDocumentManager(QObject *parent)
     QString dummyWidgets = tr("widgets");
 
     UBExportCFF* cffExporter = new UBExportCFF(this);
-    mExportAdaptors.append(cffExporter);
     UBExportFullPDF* exportFullPdf = new UBExportFullPDF(this);
-    mExportAdaptors.append(exportFullPdf);
     UBExportDocument* exportDocument = new UBExportDocument(this);
+    UBWebPublisher* webPublished = new UBWebPublisher(this);
     mExportAdaptors.append(exportDocument);
+    mExportAdaptors.append(webPublished);
+    mExportAdaptors.append(exportFullPdf);
+    mExportAdaptors.append(cffExporter);
 //     UBExportWeb* exportWeb = new UBExportWeb(this);
 //     mExportAdaptors.append(exportWeb);
-    UBWebPublisher* webPublished = new UBWebPublisher(this);
-    mExportAdaptors.append(webPublished);
 
     UBImportDocument* documentImport = new UBImportDocument(this);
     mImportAdaptors.append(documentImport);
@@ -128,36 +136,129 @@ UBDocumentProxy* UBDocumentManager::importFile(const QFile& pFile, const QString
 {
     QFileInfo fileInfo(pFile);
 
-    UBDocumentProxy* document = 0;
-
-    foreach (UBImportAdaptor *importAdaptor, mImportAdaptors)
+    foreach (UBImportAdaptor *adaptor, mImportAdaptors)
     {
-        if (importAdaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
+        if (adaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
         {
+            UBDocumentProxy* document;
             UBApplication::setDisabled(true);
-            document = importAdaptor->importFile(pFile, pGroup);
+
+            if (adaptor->isDocumentBased())
+            {
+                UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor;
+
+                document = importAdaptor->importFile(pFile, pGroup);
+            
+            }
+            else
+            {
+                UBPageBasedImportAdaptor* importAdaptor = (UBPageBasedImportAdaptor*)adaptor;
+
+                // Document import procedure.....
+                QString documentName = QFileInfo(pFile.fileName()).completeBaseName();
+                document = UBPersistenceManager::persistenceManager()->createDocument(pGroup, documentName);
+
+                QUuid uuid = QUuid::createUuid();
+                QString filepath = pFile.fileName();
+                if (importAdaptor->folderToCopy() != "")
+                {
+                    bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(document, pFile.fileName(), importAdaptor->folderToCopy() , uuid, filepath);
+                    if (!b)
+                    {
+                        UBPersistenceManager::persistenceManager()->deleteDocument(document);
+                        UBApplication::setDisabled(false);
+                        return NULL;
+                    }
+                }
+
+                QList<UBGraphicsItem*> pages = importAdaptor->import(uuid, filepath);
+                int nPage = 0;
+                foreach(UBGraphicsItem* page, pages)
+                {
+                    UBApplication::showMessage(tr("Inserting page %1 of %2").arg(++nPage).arg(pages.size()), true);
+#ifdef Q_WS_MACX
+                    //Workaround for issue 912
+                    QApplication::processEvents();
+#endif
+                    int pageIndex = document->pageCount();
+                    UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(document, pageIndex);
+                    importAdaptor->placeImportedItemToScene(scene, page);
+                    UBPersistenceManager::persistenceManager()->persistDocumentScene(document, scene, pageIndex);
+                }
+
+                UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document);
+                UBApplication::showMessage(tr("Import successful."));
+            }
+
             UBApplication::setDisabled(false);
+            return document;
         }
-    }
 
-    return document;
+    }
+    return NULL;
 }
 
 
-bool UBDocumentManager::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile)
+int UBDocumentManager::addFilesToDocument(UBDocumentProxy* document, QStringList fileNames)
 {
-    QFileInfo fileInfo(pFile);
-    foreach (UBImportAdaptor *importAdaptor, mImportAdaptors)
+    int nImportedDocuments = 0;
+    foreach(const QString& fileName, fileNames)
     {
-        if (importAdaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
+        UBApplication::showMessage(tr("Importing file %1").arg(fileName));
+
+        QFile file(fileName);
+        QFileInfo fileInfo(file);
+
+        foreach (UBImportAdaptor *adaptor, mImportAdaptors)
         {
-            UBApplication::setDisabled(true);
-            bool result = importAdaptor->addFileToDocument(pDocument, pFile);
-            UBApplication::setDisabled(false);
-            return result;
+            if (adaptor->supportedExtentions().lastIndexOf(fileInfo.suffix().toLower()) != -1)
+            {
+                UBApplication::setDisabled(true);
+
+                if (adaptor->isDocumentBased())
+                {
+                    UBDocumentBasedImportAdaptor* importAdaptor = (UBDocumentBasedImportAdaptor*)adaptor;
+
+                    if (importAdaptor->addFileToDocument(document, file))
+                        nImportedDocuments++;
+                }
+                else
+                {
+                    UBPageBasedImportAdaptor* importAdaptor = (UBPageBasedImportAdaptor*)adaptor;
+
+                    QUuid uuid = QUuid::createUuid();
+                    QString filepath = file.fileName();
+                    if (importAdaptor->folderToCopy() != "")
+                    {
+                        bool b = UBPersistenceManager::persistenceManager()->addFileToDocument(document, file.fileName(), importAdaptor->folderToCopy() , uuid, filepath);
+                        if (!b)
+                        {
+                            continue;
+                        }
+                    }
+
+                    QList<UBGraphicsItem*> pages = importAdaptor->import(uuid, filepath);
+                    int nPage = 0;
+                    foreach(UBGraphicsItem* page, pages)
+                    {
+                        UBApplication::showMessage(tr("Inserting page %1 of %2").arg(++nPage).arg(pages.size()), true);
+                        int pageIndex = document->pageCount();
+                        UBGraphicsScene* scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(document, pageIndex);
+                        importAdaptor->placeImportedItemToScene(scene, page);
+                        UBPersistenceManager::persistenceManager()->persistDocumentScene(document, scene, pageIndex);
+                        UBApplication::boardController->addEmptyThumbPage();
+                    }
+
+                    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document);
+                    UBApplication::showMessage(tr("Import of file %1 successful.").arg(file.fileName()));
+                    nImportedDocuments++;
+                }
+
+                UBApplication::setDisabled(false);
+            }
         }
     }
-    return false;
+    return nImportedDocuments;
 }
 
 
@@ -167,14 +268,14 @@ int UBDocumentManager::addImageDirToDocument(const QDir& pDir, UBDocumentProxy*
 
     filenames = UBStringUtils::sortByLastDigit(filenames);
 
-    QStringList fullPathFilenames;
+    QStringList fileNames;
 
     foreach(QString f, filenames)
     {
-        fullPathFilenames << pDir.absolutePath() + "/" + f;
+        fileNames << pDir.absolutePath() + "/" + f;
     }
 
-    return addImageAsPageToDocument(fullPathFilenames, pDocument);
+    return addFilesToDocument(pDocument, fileNames);
 
 }
 
@@ -209,88 +310,6 @@ QList<UBExportAdaptor*> UBDocumentManager::supportedExportAdaptors()
     return mExportAdaptors;
 }
 
-int UBDocumentManager::addImageAsPageToDocument(const QStringList& filenames, UBDocumentProxy* pDocument)
-{
-
-    int result = 0;
-
-    if (filenames.size() > 0)
-    {
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-        QApplication::processEvents();
-
-        int pageIndex = pDocument->pageCount();
-
-                if (pageIndex == 1 && UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocument, 0)->isEmpty())
-                {
-                        pageIndex = 0;
-                }
-
-        int expectedPageCount = filenames.size();
-
-        for(int i = 0; i < filenames.size(); i ++)
-        {
-            UBApplication::showMessage(tr("Importing page %1 of %2").arg(i + 1).arg(expectedPageCount));
-
-            UBGraphicsScene* scene = 0;
-
-            QString fullPath = filenames.at(i);
-
-            QGraphicsItem *gi = 0;
-
-            if (pageIndex == 0)
-            {
-                scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(pDocument, pageIndex);
-            }
-            else
-            {
-                scene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(pDocument, pageIndex);
-            }
-
-            scene->setBackground(false, false);
-
-            if (fullPath.endsWith(".svg") || fullPath.endsWith(".svgz"))
-            {
-                                gi = scene->addSvg(QUrl::fromLocalFile(fullPath), QPointF(0, 0));
-            }
-            else
-            {
-                QPixmap pix(fullPath);
-
-                if (pix.isNull())
-                {
-                    UBApplication::showMessage(tr("Erronous image data, skipping file %1").arg(filenames.at(i)));
-                    expectedPageCount--;
-                    continue;
-                }
-                else
-                {
-                    gi = scene->addPixmap(pix, QPointF(0, 0));
-                }
-            }
-
-            if (gi)
-            {
-                scene->setAsBackgroundObject(gi, true);
-
-                UBPersistenceManager::persistenceManager()->persistDocumentScene(pDocument, scene, pageIndex);
-
-                pageIndex++;
-            }
-
-        }
-
-        result = expectedPageCount;
-
-        QApplication::restoreOverrideCursor();
-
-    }
-
-    return result;
-
-}
-
 void UBDocumentManager::emitDocumentUpdated(UBDocumentProxy* pDocument)
 {
     emit documentUpdated(pDocument);
diff --git a/Sankore-3.1/src/core/UBDocumentManager.h b/Sankore-3.1/src/core/UBDocumentManager.h
index 74a6a46..4fec25f 100644
--- a/Sankore-3.1/src/core/UBDocumentManager.h
+++ b/Sankore-3.1/src/core/UBDocumentManager.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDOCUMENTMANAGER_H_
 #define UBDOCUMENTMANAGER_H_
 
@@ -36,13 +43,11 @@ class UBDocumentManager : public QObject
 
         UBDocumentProxy* importFile(const QFile& pFile, const QString& pGroup);
 
-        bool addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile);
+        int addFilesToDocument(UBDocumentProxy* pDocument, QStringList fileNames);
 
         UBDocumentProxy* importDir(const QDir& pDir, const QString& pGroup);
         int addImageDirToDocument(const QDir& pDir, UBDocumentProxy* pDocument);
 
-        int addImageAsPageToDocument(const QStringList& images, UBDocumentProxy* document);
-
         QList<UBExportAdaptor*> supportedExportAdaptors();
         void emitDocumentUpdated(UBDocumentProxy* pDocument);
 
diff --git a/Sankore-3.1/src/core/UBDownloadManager.cpp b/Sankore-3.1/src/core/UBDownloadManager.cpp
index a20b0bc..f56a254 100644
--- a/Sankore-3.1/src/core/UBDownloadManager.cpp
+++ b/Sankore-3.1/src/core/UBDownloadManager.cpp
@@ -1,25 +1,99 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBDownloadManager.h"
 #include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
 #include "gui/UBMainWindow.h"
 #include "board/UBBoardController.h"
 #include "board/UBBoardPaletteManager.h"
+#include "frameworks/UBFileSystemUtils.h"
 
 #include "core/memcheck.h"
 
+
+UBAsyncLocalFileDownloader::UBAsyncLocalFileDownloader(sDownloadFileDesc desc, QObject *parent)
+: QThread(parent)
+, mDesc(desc)
+, m_bAborting(false)
+{
+
+}
+
+UBAsyncLocalFileDownloader *UBAsyncLocalFileDownloader::download()
+{
+    start();
+    return this;
+}
+
+void UBAsyncLocalFileDownloader::run()
+{
+
+    if(mDesc.srcUrl.startsWith("file://"))
+        mDesc.srcUrl = QUrl(mDesc.srcUrl).toLocalFile();
+    else
+        mDesc.srcUrl = QUrl::fromLocalFile(mDesc.srcUrl).toLocalFile();
+
+    QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(mDesc.srcUrl);
+
+    int position=mimeType.indexOf(";");
+    if(position != -1)
+        mimeType=mimeType.left(position);
+
+    UBMimeType::Enum itemMimeType = UBFileSystemUtils::mimeTypeFromString(mimeType);
+
+
+    QString destDirectory;
+    if (UBMimeType::Video == itemMimeType)
+        destDirectory = UBPersistenceManager::videoDirectory;
+    else 
+        if (UBMimeType::Audio == itemMimeType)
+            destDirectory = UBPersistenceManager::audioDirectory;
+
+    if (mDesc.originalSrcUrl.isEmpty())
+        mDesc.originalSrcUrl = mDesc.srcUrl;
+
+    QString uuid = QUuid::createUuid();
+    UBPersistenceManager::persistenceManager()->addFileToDocument(UBApplication::boardController->selectedDocument(), 
+        mDesc.srcUrl,
+        destDirectory,
+        uuid,
+        mTo,
+        NULL);
+
+    if (m_bAborting)
+    {
+        if (QFile::exists(mTo))
+            QFile::remove(mTo);
+    }
+    else
+        emit signal_asyncCopyFinished(mDesc.id, !mTo.isEmpty(), QUrl::fromLocalFile(mTo), QUrl(mDesc.originalSrcUrl), "", NULL, mDesc.pos, mDesc.size, mDesc.isBackground);
+}
+
+void UBAsyncLocalFileDownloader::abort()
+{
+    m_bAborting = true;
+}
+
 /** The unique instance of the download manager */
 static UBDownloadManager* pInstance = NULL;
 
@@ -100,7 +174,7 @@ void UBDownloadManager::init()
 {
     mCrntDL.clear();
     mPendingDL.clear();
-    mReplies.clear();
+    mDownloads.clear();
     mLastID = 1;
     mDLAvailability.clear();
     for(int i=0; i<SIMULTANEOUS_DOWNLOAD; i++)
@@ -193,7 +267,8 @@ void UBDownloadManager::onDownloadProgress(int id, qint64 received, qint64 total
  * \brief Called when the download of the given file is finished
  * @param desc as the current downloaded file description
  */
-void UBDownloadManager::onDownloadFinished(int id, bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground)
+
+void UBDownloadManager::onDownloadFinished(int id, bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground)
 {
 //    Temporary data for dnd do not delete it please
     Q_UNUSED(pPos)
@@ -209,13 +284,13 @@ void UBDownloadManager::onDownloadFinished(int id, bool pSuccess, QUrl sourceUrl
                 desc.contentTypeHeader = pContentTypeHeader;
                 emit downloadFinished(pSuccess, desc, pData);
 
-            } else if(desc.modal) {
+            } else if(desc.dest == sDownloadFileDesc::board) {
                 // The downloaded file is modal so we must put it on the board
-                emit addDownloadedFileToBoard(pSuccess, sourceUrl, pContentTypeHeader, pData, pPos, pSize, isBackground);
+                emit addDownloadedFileToBoard(pSuccess, sourceUrl, contentUrl, pContentTypeHeader, pData, pPos, pSize, isBackground);
             }
             else
             {
-                emit addDownloadedFileToLibrary(pSuccess, sourceUrl, pContentTypeHeader, pData);
+                emit addDownloadedFileToLibrary(pSuccess, sourceUrl, pContentTypeHeader, pData, desc.name);
             }
 
             break;
@@ -259,7 +334,7 @@ void UBDownloadManager::updateFileCurrentSize(int id, qint64 received, qint64 to
                 mCrntDL.remove(i);
 
                 // Here we don't forget to remove the reply related to the finished download
-                mReplies.remove(id);
+                mDownloads.remove(id);
 
                 // Free the download slot used by the finished file
                 for(int j=0; j<mDLAvailability.size();j++)
@@ -302,12 +377,28 @@ void UBDownloadManager::updateFileCurrentSize(int id, qint64 received, qint64 to
  */
 void UBDownloadManager::startFileDownload(sDownloadFileDesc desc)
 {
-    UBDownloadHttpFile* http = new UBDownloadHttpFile(desc.id, this);
-    connect(http, SIGNAL(downloadProgress(int, qint64,qint64)), this, SLOT(onDownloadProgress(int,qint64,qint64)));
-    connect(http, SIGNAL(downloadFinished(int, bool, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onDownloadFinished(int, bool, QUrl, QString, QByteArray, QPointF, QSize, bool)));
-
-    // We send here the request and store its reply in order to be able to cancel it if needed
-    mReplies[desc.id] = http->get(QUrl(desc.url), desc.pos, desc.size, desc.isBackground);
+    if (desc.srcUrl.startsWith("file://") || desc.srcUrl.startsWith("/"))
+    {
+        UBAsyncLocalFileDownloader * cpHelper = new UBAsyncLocalFileDownloader(desc, this);
+        connect(cpHelper, SIGNAL(signal_asyncCopyFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onDownloadFinished(int, bool, QUrl, QUrl,QString, QByteArray, QPointF, QSize, bool)));
+        QObject *res = dynamic_cast<QObject *>(cpHelper->download());
+        if (!res)
+            delete res;
+        else
+            mDownloads[desc.id] = res;
+    }
+    else
+    {    
+        UBDownloadHttpFile* http = new UBDownloadHttpFile(desc.id, this);
+        connect(http, SIGNAL(downloadProgress(int, qint64,qint64)), this, SLOT(onDownloadProgress(int,qint64,qint64)));
+        connect(http, SIGNAL(downloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onDownloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)));
+    
+        //the desc.srcUrl is encoded. So we have to decode it before.
+        QUrl url;
+        url.setEncodedUrl(desc.srcUrl.toUtf8());
+        // We send here the request and store its reply in order to be able to cancel it if needed
+        mDownloads[desc.id] = dynamic_cast<QObject *>(http->get(url, desc.pos, desc.size, desc.isBackground));
+    } 
 }
 
 /**
@@ -353,10 +444,18 @@ void UBDownloadManager::checkIfModalRemains()
 void UBDownloadManager::cancelDownloads()
 {
     // Stop the current downloads
-    QMap<int, QNetworkReply*>::iterator it = mReplies.begin();
-    for(; it!=mReplies.end();it++)
+    QMap<int, QObject*>::iterator it = mDownloads.begin();
+    for(; it!=mDownloads.end();it++)
     {
-        dynamic_cast<QNetworkReply*>(it.value())->abort();
+        QNetworkReply *netReply = dynamic_cast<QNetworkReply*>(it.value());
+        if (netReply)
+            netReply->abort();
+        else
+        {        
+            UBAsyncLocalFileDownloader *localDownload = dynamic_cast<UBAsyncLocalFileDownloader *>(it.value());
+            if (localDownload)
+                localDownload->abort();
+        }
     }
 
     // Clear all the lists
@@ -369,7 +468,8 @@ void UBDownloadManager::cancelDownloads()
 
 void UBDownloadManager::onDownloadError(int id)
 {
-    QNetworkReply* pReply = mReplies.value(id);
+    QNetworkReply *pReply = dynamic_cast<QNetworkReply *>(mDownloads.value(id));
+    
     if(NULL != pReply)
     {
         // Check which error occured:
@@ -399,9 +499,25 @@ void UBDownloadManager::finishDownloads(bool cancel)
 
 void UBDownloadManager::cancelDownload(int id)
 {
+    if (!mDownloads.size())
+        return;
+   
     // Stop the download
-    mReplies[id]->abort();
-    mReplies.remove(id);
+
+    QNetworkReply *pNetworkDownload = dynamic_cast<QNetworkReply *>(mDownloads[id]);
+    if (pNetworkDownload)
+        pNetworkDownload->abort();
+    else
+    {
+        UBAsyncLocalFileDownloader *pLocalDownload = dynamic_cast<UBAsyncLocalFileDownloader *>(mDownloads[id]);
+        if (pLocalDownload)
+        {
+            if (pLocalDownload->isRunning())
+                pLocalDownload->abort();                          
+        }
+    }
+
+    mDownloads.remove(id);
 
     // Remove the canceled download from the download lists
     bool bFound = false;
@@ -491,7 +607,7 @@ void UBDownloadHttpFile::onDownloadFinished(bool pSuccess, QUrl sourceUrl, QStri
     if(pSuccess)
     {
         // Notify the end of the download
-        emit downloadFinished(mId, pSuccess, sourceUrl, pContentTypeHeader, pData, pPos, pSize, isBackground);
+        emit downloadFinished(mId, pSuccess, sourceUrl, sourceUrl, pContentTypeHeader, pData, pPos, pSize, isBackground);
     }
     else
     {
diff --git a/Sankore-3.1/src/core/UBDownloadManager.h b/Sankore-3.1/src/core/UBDownloadManager.h
index 16ce445..22861c1 100644
--- a/Sankore-3.1/src/core/UBDownloadManager.h
+++ b/Sankore-3.1/src/core/UBDownloadManager.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBDOWNLOADMANAGER_H
 #define UBDOWNLOADMANAGER_H
 
@@ -52,7 +60,8 @@ struct sDownloadFileDesc
     int id;
     int totalSize;
     int currentSize;
-    QString url;
+    QString srcUrl;
+    QString originalSrcUrl;
     QString contentTypeHeader;
     bool modal;
     QPointF pos;        // For board drop only
@@ -75,7 +84,7 @@ public:
 
 signals:
     void downloadProgress(int id, qint64 current,qint64 total);
-    void downloadFinished(int id, bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
+    void downloadFinished(int id, bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
     void downloadError(int id);
 
 private slots:
@@ -86,6 +95,28 @@ private:
     int mId;
 };
 
+class UBAsyncLocalFileDownloader : public QThread
+{
+    Q_OBJECT
+public:
+    UBAsyncLocalFileDownloader(sDownloadFileDesc desc, QObject *parent = 0);
+
+    UBAsyncLocalFileDownloader *download();    
+    void run();
+    void abort();
+
+signals:
+    void finished(QString srcUrl, QString resUrl);
+    void signal_asyncCopyFinished(int id, bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
+
+
+private:
+    sDownloadFileDesc mDesc;
+    bool m_bAborting;
+    QString mFrom;
+    QString mTo;
+};
+
 class UBDownloadManager : public QObject
 {
     Q_OBJECT
@@ -108,15 +139,15 @@ signals:
     void downloadFinished(bool pSuccess, int id, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData);
     void downloadFinished(bool pSuccess, sDownloadFileDesc desc, QByteArray pData);
     void downloadModalFinished();
-    void addDownloadedFileToBoard(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
-    void addDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData);
+    void addDownloadedFileToBoard(bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
+    void addDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QString pTitle);
     void cancelAllDownloads();
     void allDownloadsFinished();
 
 private slots:
     void onUpdateDownloadLists();
     void onDownloadProgress(int id, qint64 received, qint64 total);
-    void onDownloadFinished(int id, bool pSuccess, QUrl sourceUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
+    void onDownloadFinished(int id, bool pSuccess, QUrl sourceUrl, QUrl contentUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
     void onDownloadError(int id);
 
 private:
@@ -138,7 +169,7 @@ private:
     /** The current download availability (-1 = free, otherwise the file ID is recorded)*/
     QVector<int> mDLAvailability;
     /** A map containing the replies of the GET operations */
-    QMap<int, QNetworkReply*> mReplies;
+    QMap<int, QObject*> mDownloads;
 };
 
 #endif // UBDOWNLOADMANAGER_H
diff --git a/Sankore-3.1/src/core/UBDownloadThread.cpp b/Sankore-3.1/src/core/UBDownloadThread.cpp
index 18fc00f..2563ea3 100644
--- a/Sankore-3.1/src/core/UBDownloadThread.cpp
+++ b/Sankore-3.1/src/core/UBDownloadThread.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <QDebug>
 #include <QNetworkProxy>
 #include <QNetworkDiskCache>
diff --git a/Sankore-3.1/src/core/UBDownloadThread.h b/Sankore-3.1/src/core/UBDownloadThread.h
index 455bcec..fbfb27c 100644
--- a/Sankore-3.1/src/core/UBDownloadThread.h
+++ b/Sankore-3.1/src/core/UBDownloadThread.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBDOWNLOADTHREAD_H
 #define UBDOWNLOADTHREAD_H
 
diff --git a/Sankore-3.1/src/core/UBIdleTimer.cpp b/Sankore-3.1/src/core/UBIdleTimer.cpp
index d45df0b..f874c7e 100644
--- a/Sankore-3.1/src/core/UBIdleTimer.cpp
+++ b/Sankore-3.1/src/core/UBIdleTimer.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBIdleTimer.h"
 
 #include <QApplication>
diff --git a/Sankore-3.1/src/core/UBIdleTimer.h b/Sankore-3.1/src/core/UBIdleTimer.h
index 31409b8..c4ec233 100644
--- a/Sankore-3.1/src/core/UBIdleTimer.h
+++ b/Sankore-3.1/src/core/UBIdleTimer.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBIDLETIMER_H_
 #define UBIDLETIMER_H_
 
diff --git a/Sankore-3.1/src/core/UBMimeData.cpp b/Sankore-3.1/src/core/UBMimeData.cpp
index e57e324..b0c4a07 100644
--- a/Sankore-3.1/src/core/UBMimeData.cpp
+++ b/Sankore-3.1/src/core/UBMimeData.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBMimeData.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/core/UBMimeData.h b/Sankore-3.1/src/core/UBMimeData.h
index 9baeaf6..59b0432 100644
--- a/Sankore-3.1/src/core/UBMimeData.h
+++ b/Sankore-3.1/src/core/UBMimeData.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBMIMEDATA_H_
 #define UBMIMEDATA_H_
 
diff --git a/Sankore-3.1/src/core/UBPersistenceManager.cpp b/Sankore-3.1/src/core/UBPersistenceManager.cpp
index 29e0ef7..62da1ff 100644
--- a/Sankore-3.1/src/core/UBPersistenceManager.cpp
+++ b/Sankore-3.1/src/core/UBPersistenceManager.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPersistenceManager.h"
 #include "gui/UBMainWindow.h"
 
@@ -25,6 +32,9 @@
 #include "core/UBSettings.h"
 #include "core/UBSetting.h"
 
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
 #include "document/UBDocumentProxy.h"
 
 #include "adaptors/UBExportPDF.h"
@@ -33,6 +43,7 @@
 #include "adaptors/UBMetadataDcSubsetAdaptor.h"
 
 #include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
 
 #include "interfaces/IDataStorage.h"
 
@@ -155,7 +166,7 @@ QStringList UBPersistenceManager::allShapes()
 
 QStringList UBPersistenceManager::allGips()
 {
-    QString gipLibraryPath = UBSettings::settings()->applicationGipLibraryDirectory();
+    QString gipLibraryPath = UBSettings::settings()->userGipLibraryDirectory();
 
     QDir dir(gipLibraryPath);
 
@@ -261,7 +272,7 @@ UBDocumentProxy* UBPersistenceManager::createDocument(const QString& pGroupName,
     return doc;
 }
 
-UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDocumentDirectory, const QString& pGroupName, const QString& pName, bool withEmptyPage)
+UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDocumentDirectory, const QString& pGroupName, const QString& pName, bool withEmptyPage, bool addTitlePage)
 {
     checkIfDocumentRepositoryExists();
 
@@ -276,7 +287,8 @@ UBDocumentProxy* UBPersistenceManager::createDocumentFromDir(const QString& pDoc
     {
         doc->setMetaData(UBSettings::documentName, pName);
     }
-    if (withEmptyPage) createDocumentSceneAt(doc, 0);
+    if(withEmptyPage) createDocumentSceneAt(doc, 0);
+    if(addTitlePage) persistDocumentScene(doc, mSceneCache.createScene(doc, 0, false), 0);
 
     QMap<QString, QVariant> metadatas = UBMetadataDcSubsetAdaptor::load(pDocumentDirectory);
 
@@ -459,11 +471,6 @@ void UBPersistenceManager::deleteDocumentScenes(UBDocumentProxy* proxy, const QL
 
         }
     }
-
-    foreach(int index, compactedIndexes)
-    {
-         emit documentSceneDeleted(proxy, index);
-    }
 }
 
 
@@ -489,7 +496,7 @@ void UBPersistenceManager::duplicateDocumentScene(UBDocumentProxy* proxy, int in
 }
 
 
-UBGraphicsScene* UBPersistenceManager::createDocumentSceneAt(UBDocumentProxy* proxy, int index)
+UBGraphicsScene* UBPersistenceManager::createDocumentSceneAt(UBDocumentProxy* proxy, int index, bool useUndoRedoStack)
 {
     int count = sceneCount(proxy);
 
@@ -498,7 +505,7 @@ UBGraphicsScene* UBPersistenceManager::createDocumentSceneAt(UBDocumentProxy* pr
 
     mSceneCache.shiftUpScenes(proxy, index, count -1);
 
-    UBGraphicsScene *newScene = mSceneCache.createScene(proxy, index);
+    UBGraphicsScene *newScene = mSceneCache.createScene(proxy, index, useUndoRedoStack);
 
     newScene->setBackground(UBSettings::settings()->isDarkBackground(),
             UBSettings::settings()->UBSettings::isCrossedBackground());
@@ -572,8 +579,6 @@ void UBPersistenceManager::moveSceneToIndex(UBDocumentProxy* proxy, int source,
     thumb.rename(proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", target));
 
     mSceneCache.moveScene(proxy, source, target);
-
-    emit documentSceneMoved(proxy, target);
 }
 
 
@@ -582,8 +587,11 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
     if (mSceneCache.contains(proxy, sceneIndex))
         return mSceneCache.value(proxy, sceneIndex);
     else {
-        qDebug() << "scene" << sceneIndex << "retrieved from file ...";
         UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, sceneIndex);
+        if(!scene && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
+            createDocumentSceneAt(proxy,0);
+            scene = UBSvgSubsetAdaptor::loadScene(proxy, 0);
+        }
 
         if (scene)
             mSceneCache.insert(proxy, sceneIndex, scene);
@@ -592,7 +600,6 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
     }
 }
 
-
 void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* pScene, const int pSceneIndex)
 {
     checkIfDocumentRepositoryExists();
@@ -604,21 +611,24 @@ void UBPersistenceManager::persistDocumentScene(UBDocumentProxy* pDocumentProxy,
     QDir dir(pDocumentProxy->persistencePath());
     dir.mkpath(pDocumentProxy->persistencePath());
 
-    if (pDocumentProxy->isModified())
+    UBBoardPaletteManager* paletteManager = UBApplication::boardController->paletteManager();
+    bool teacherGuideModified = false;
+    if(UBApplication::app()->boardController->currentPage() == pSceneIndex &&  paletteManager->teacherGuideDockWidget())
+    	teacherGuideModified = paletteManager->teacherGuideDockWidget()->teacherGuideWidget()->isModified();
+
+    if (pDocumentProxy->isModified() || teacherGuideModified)
         UBMetadataDcSubsetAdaptor::persist(pDocumentProxy);
 
-    if (pScene->isModified())
+    if (pScene->isModified() || teacherGuideModified)
     {
-        UBThumbnailAdaptor::persistScene(pDocumentProxy->persistencePath(), pScene, pSceneIndex);
-
         UBSvgSubsetAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex);
 
+        UBThumbnailAdaptor::persistScene(pDocumentProxy, pScene, pSceneIndex);
+
         pScene->setModified(false);
     }
 
     mSceneCache.insert(pDocumentProxy, pSceneIndex, pScene);
-
-    emit documentCommitted(pDocumentProxy);
 }
 
 
@@ -656,11 +666,8 @@ void UBPersistenceManager::copyPage(UBDocumentProxy* pDocumentProxy, const int s
 
 int UBPersistenceManager::sceneCount(const UBDocumentProxy* proxy)
 {
-    return sceneCountInDir(proxy->persistencePath());
-}
+    const QString pPath = proxy->persistencePath();
 
-int UBPersistenceManager::sceneCountInDir(const QString& pPath)
-{
     int pageIndex = 0;
     bool moreToProcess = true;
     bool addedMissingZeroPage = false;
@@ -677,7 +684,7 @@ int UBPersistenceManager::sceneCountInDir(const QString& pPath)
         }
         else
         {
-            if(UBSettings::settings()->teacherGuidePageZeroActivated && pageIndex == 0){
+            if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool() && pageIndex == 0){
                 // the document has no zero file but doesn't means that it hasn't any file
                 // at all. Just importing a document without the first page using a configuartion
                 // that enables zero page.
@@ -698,15 +705,23 @@ int UBPersistenceManager::sceneCountInDir(const QString& pPath)
     return pageIndex;
 }
 
-
-QString UBPersistenceManager::generateUniqueDocumentPath()
+QStringList UBPersistenceManager::getSceneFileNames(const QString& folder)
 {
-    QString ubPath = UBSettings::userDocumentDirectory();
+    QDir dir(folder, "page???.svg", QDir::Name, QDir::Files);
+    return dir.entryList();
+}
 
+QString UBPersistenceManager::generateUniqueDocumentPath(const QString& baseFolder)
+{
     QDateTime now = QDateTime::currentDateTime();
     QString dirName = now.toString("yyyy-MM-dd hh-mm-ss.zzz");
 
-    return ubPath + QString("/Sankore Document %1").arg(dirName);
+    return baseFolder + QString("/Sankore Document %1").arg(dirName);
+}
+
+QString UBPersistenceManager::generateUniqueDocumentPath()
+{
+    return generateUniqueDocumentPath(UBSettings::userDocumentDirectory());
 }
 
 
@@ -719,34 +734,42 @@ void UBPersistenceManager::generatePathIfNeeded(UBDocumentProxy* pDocumentProxy)
 }
 
 
-void UBPersistenceManager::addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument)
+bool UBPersistenceManager::addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument)
 {
-    int sourcePageCount = sceneCountInDir(documentRootFolder);
+    QStringList sourceScenes = getSceneFileNames(documentRootFolder);
+    if (sourceScenes.empty())
+        return false;
 
     int targetPageCount = pDocument->pageCount();
 
-    for(int sourceIndex = 0 ; sourceIndex < sourcePageCount; sourceIndex++)
+    for(int sourceIndex = 0 ; sourceIndex < sourceScenes.size(); sourceIndex++)
     {
         int targetIndex = targetPageCount + sourceIndex;
 
-        QFile svg(documentRootFolder + UBFileSystemUtils::digitFileFormat("/page%1.svg", sourceIndex));
-        svg.copy(pDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", targetIndex));
+        QFile svg(documentRootFolder + "/" + sourceScenes[sourceIndex]);
+        if (!svg.copy(pDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.svg", targetIndex)))
+            return false;
 
         UBSvgSubsetAdaptor::setSceneUuid(pDocument, targetIndex, QUuid::createUuid());
 
         QFile thumb(documentRootFolder + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceIndex));
+        // We can ignore error in this case, thumbnail will be genarated
         thumb.copy(pDocument->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetIndex));
     }
 
     foreach(QString dir, mDocumentSubDirectories)
     {
         qDebug() << "copying " << documentRootFolder << "/" << dir << " to " << pDocument->persistencePath() << "/" + dir;
-
-        UBFileSystemUtils::copyDir(documentRootFolder + "/" + dir, pDocument->persistencePath() + "/" + dir);
+        
+        QDir srcDir(documentRootFolder + "/" + dir);
+        if (srcDir.exists())
+            if (!UBFileSystemUtils::copyDir(documentRootFolder + "/" + dir, pDocument->persistencePath() + "/" + dir))
+                return false;
     }
 
     pDocument->setPageCount(sceneCount(pDocument));
 
+    return false;
 }
 
 
@@ -848,11 +871,7 @@ QString UBPersistenceManager::teacherGuideAbsoluteObjectPath(UBDocumentProxy* pD
 
 QString UBPersistenceManager::addObjectToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath)
 {
-	QString path = pPath;
-	//windows
-	path.replace("file:///","");
-	//others
-	path.replace("file://","");
+    QString path = UBFileSystemUtils::removeLocalFilePrefix(pPath);
 	QFileInfo fi(path);
     QString uuid = QUuid::createUuid();
 
@@ -875,169 +894,113 @@ QString UBPersistenceManager::addObjectToTeacherGuideDirectory(UBDocumentProxy*
     return destPath;
 }
 
-
-QString UBPersistenceManager::addVideoFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, QUuid objectUuid)
+QString UBPersistenceManager::addWidgetToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath)
 {
+    QString path = UBFileSystemUtils::removeLocalFilePrefix(pPath);
     QFileInfo fi(path);
+    Q_ASSERT(fi.isDir());
 
-    if (!fi.exists() || !pDocumentProxy || objectUuid.isNull())
-        return "";
-
-    QString fileName = UBPersistenceManager::videoDirectory + "/" + objectUuid.toString() + "." + fi.suffix();
-
-    QString destPath = pDocumentProxy->persistencePath() + "/" + fileName;
-
-    if (!QFile::exists(destPath))
-    {
-        QDir dir;
-        dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::videoDirectory);
-
-        QFile source(path);
-
-        source.copy(destPath);
-
-    }
-
-    return fileName;
-
-}
+    int lastIndex = path.lastIndexOf(".");
+    QString extension("");
+    if(lastIndex != -1)
+        extension = path.right(path.length() - lastIndex);
 
+    QString uuid = QUuid::createUuid();
 
-QString UBPersistenceManager::addVideoFileToDocument(UBDocumentProxy* pDocumentProxy, QUrl sourceUrl, QByteArray pPayload, QUuid objectUuid)
-{
-    if (!pDocumentProxy || objectUuid.isNull())
+    if (!fi.exists() || !pDocumentProxy)
         return "";
 
-    QString urlPath = sourceUrl.path();
-    int lastDot = urlPath.lastIndexOf(".");
-    QString suffix = urlPath.right(urlPath.length() - lastDot - 1);
-
-    QString fileName = UBPersistenceManager::videoDirectory + "/" + objectUuid.toString() + "." + suffix;
-    QString destPath = pDocumentProxy->persistencePath() + "/" + fileName;
+    QString directoryName = UBPersistenceManager::teacherGuideDirectory + "/" + uuid + extension;
+    QString destPath = pDocumentProxy->persistencePath() + "/" + directoryName;
 
-    if (!QFile::exists(destPath))
-    {
+    if (!QDir(destPath).exists()){
         QDir dir;
-        dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::videoDirectory);
-
-        QFile newFile(destPath);
-
-        if (newFile.open(QIODevice::WriteOnly))
-        {
-            newFile.write(pPayload);
-            newFile.flush();
-            newFile.close();
-        }
+        dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::teacherGuideDirectory);
+        UBFileSystemUtils::copyDir(path,destPath);
     }
 
-    return fileName;
-
+    return destPath;
 }
 
-
-
-QString UBPersistenceManager::addAudioFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, QUuid objectUuid)
+bool UBPersistenceManager::addFileToDocument(UBDocumentProxy* pDocumentProxy, 
+                                                     QString path, 
+                                                     const QString& subdir,
+                                                     QUuid objectUuid,
+                                                     QString& destinationPath,
+                                                     QByteArray* data)
 {
+    Q_ASSERT(path.length());
     QFileInfo fi(path);
 
-    if (!fi.exists() || !pDocumentProxy || objectUuid.isNull())
-        return "";
-
-    QString fileName = UBPersistenceManager::audioDirectory + "/" + objectUuid.toString() + "." + fi.suffix();
-
-    QString destPath = pDocumentProxy->persistencePath() + "/" + fileName;
-
-    if (!QFile::exists(destPath))
-    {
-        QDir dir;
-        dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::audioDirectory);
-
-        QFile source(path);
-
-        source.copy(destPath);
-
-    }
-
-    return fileName;
-
-}
-
-
-QString UBPersistenceManager::addAudioFileToDocument(UBDocumentProxy* pDocumentProxy, QUrl sourceUrl, QByteArray pPayload, QUuid objectUuid)
-{
     if (!pDocumentProxy || objectUuid.isNull())
-        return "";
+        return false;
+    if (data == NULL && !fi.exists())
+        return false;
 
-    QString urlPath = sourceUrl.path();
-    int lastDot = urlPath.lastIndexOf(".");
-    QString suffix = urlPath.right(urlPath.length() - lastDot - 1);
+    qDebug() << fi.suffix();
 
-    QString fileName = UBPersistenceManager::audioDirectory + "/" + objectUuid.toString() + "." + suffix;
-    QString destPath = pDocumentProxy->persistencePath() + "/" + fileName;
+    QString fileName = subdir + "/" + objectUuid.toString() + "." + fi.suffix();
 
-    if (!QFile::exists(destPath))
+    destinationPath = pDocumentProxy->persistencePath() + "/" + fileName;
+
+    if (!QFile::exists(destinationPath))
     {
         QDir dir;
-        dir.mkdir(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::audioDirectory);
-
-        QFile newFile(destPath);
+        dir.mkdir(pDocumentProxy->persistencePath() + "/" + subdir);
+        if (!QFile::exists(pDocumentProxy->persistencePath() + "/" + subdir))
+            return false;
 
-        if (newFile.open(QIODevice::WriteOnly))
+        if (data == NULL)
         {
-            newFile.write(pPayload);
-            newFile.flush();
-            newFile.close();
+            QFile source(path);
+            return source.copy(destinationPath);
         }
-    }
-
-    return fileName;
-
-}
-
-
-QString UBPersistenceManager::addPdfFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, QUuid objectUuid)
-{
-    QFileInfo fi(path);
-
-    if (!fi.exists() || !pDocumentProxy || objectUuid.isNull())
-        return "";
-
-    QString fileName = UBPersistenceManager::objectDirectory + "/" + objectUuid.toString() + "." + fi.suffix();
-    QString destPath = pDocumentProxy->persistencePath() + "/" + fileName;
+        else
+        {
+            QFile newFile(destinationPath);
 
-    if (!QFile::exists(destPath))
+            if (newFile.open(QIODevice::WriteOnly))
+            {
+                qint64 n = newFile.write(*data);
+                newFile.flush();
+                newFile.close();
+                return n == data->size();
+            }
+            else
+            {
+                return false;
+            }
+        }
+    }
+    else
     {
-        QDir dir;
-        dir.mkpath(pDocumentProxy->persistencePath() + "/" + UBPersistenceManager::objectDirectory);
-
-        QFile source(path);
-        source.copy(destPath);
+        return false;    
     }
-
-    return fileName;
 }
-QString UBPersistenceManager::addGraphicsWidgteToDocument(UBDocumentProxy *pDocumentProxy, QString path, QUuid objectUuid)
+
+bool UBPersistenceManager::addGraphicsWidgteToDocument(UBDocumentProxy *pDocumentProxy, 
+                                                       QString path, 
+                                                       QUuid objectUuid,
+                                                       QString& destinationPath)
 {
     QFileInfo fi(path);
 
     if (!fi.exists() || !pDocumentProxy || objectUuid.isNull())
-        return "";
+        return false;
 
     QString widgetRootDir = path;
     QString extension = QFileInfo(widgetRootDir).suffix();
 
-    QString widgetTargetDir = pDocumentProxy->persistencePath() + "/" + widgetDirectory +  "/" + objectUuid.toString() + "." + extension;
+    destinationPath = pDocumentProxy->persistencePath() + "/" + widgetDirectory +  "/" + objectUuid.toString() + "." + extension;
 
-    if (!QFile::exists(widgetTargetDir)) {
+    if (!QFile::exists(destinationPath)) {
         QDir dir;
-        dir.mkpath(widgetTargetDir);
-        UBFileSystemUtils::copyDir(widgetRootDir, widgetTargetDir);
+        if (!dir.mkpath(destinationPath))
+            return false;
+        return UBFileSystemUtils::copyDir(widgetRootDir, destinationPath);
     }
-
-    if (!QFile::exists(widgetTargetDir))
-        widgetTargetDir = QString();
-
-    return widgetTargetDir;
+    else
+        return false;
 }
 
 
diff --git a/Sankore-3.1/src/core/UBPersistenceManager.h b/Sankore-3.1/src/core/UBPersistenceManager.h
index e5e8811..b306bc8 100644
--- a/Sankore-3.1/src/core/UBPersistenceManager.h
+++ b/Sankore-3.1/src/core/UBPersistenceManager.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBPERSISTENCEMANAGER_H_
 #define UBPERSISTENCEMANAGER_H_
 
@@ -47,7 +54,7 @@ class UBPersistenceManager : public QObject
         static void destroy();
 
         virtual UBDocumentProxy* createDocument(const QString& pGroupName = "", const QString& pName = "", bool withEmptyPage = true);
-        virtual UBDocumentProxy* createDocumentFromDir(const QString& pDocumentDirectory, const QString& pGroupName = "", const QString& pName = "", bool withEmptyPage = false);
+        virtual UBDocumentProxy* createDocumentFromDir(const QString& pDocumentDirectory, const QString& pGroupName = "", const QString& pName = "", bool withEmptyPage = false, bool addTitlePage = false);
 
         virtual UBDocumentProxy* persistDocumentMetadata(UBDocumentProxy* pDocumentProxy);
 
@@ -62,7 +69,7 @@ class UBPersistenceManager : public QObject
         virtual void persistDocumentScene(UBDocumentProxy* pDocumentProxy,
                 UBGraphicsScene* pScene, const int pSceneIndex);
 
-        virtual UBGraphicsScene* createDocumentSceneAt(UBDocumentProxy* pDocumentProxy, int index);
+        virtual UBGraphicsScene* createDocumentSceneAt(UBDocumentProxy* pDocumentProxy, int index, bool useUndoRedoStack = true);
 
         virtual void insertDocumentSceneAt(UBDocumentProxy* pDocumentProxy, UBGraphicsScene* scene, int index);
 
@@ -79,12 +86,14 @@ class UBPersistenceManager : public QObject
         virtual QStringList allVideos(const QDir& dir);
         virtual QStringList allWidgets(const QDir& dir);
 
-        virtual QString generateUniqueDocumentPath();
+        QString generateUniqueDocumentPath();
+        QString generateUniqueDocumentPath(const QString& baseFolder);
 
         QString teacherGuideAbsoluteObjectPath(UBDocumentProxy* pDocumentProxy);
         QString addObjectToTeacherGuideDirectory(UBDocumentProxy* proxy, QString pPath);
+        QString addWidgetToTeacherGuideDirectory(UBDocumentProxy* pDocumentProxy, QString pPath);
 
-        virtual void addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument);
+        bool addDirectoryContentToDocument(const QString& documentRootFolder, UBDocumentProxy* pDocument);
 
         virtual void upgradeDocumentIfNeeded(UBDocumentProxy* pDocumentProxy);
 
@@ -100,12 +109,8 @@ class UBPersistenceManager : public QObject
         virtual bool isEmpty(UBDocumentProxy* pDocumentProxy);
         virtual void purgeEmptyDocuments();
 
-        virtual QString addVideoFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, QUuid objectUuid);
-        virtual QString addVideoFileToDocument(UBDocumentProxy* pDocumentProxy, QUrl sourceUrl, QByteArray pPayload, QUuid objectUuid);
-        virtual QString addAudioFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, QUuid objectUuid);
-        virtual QString addAudioFileToDocument(UBDocumentProxy* pDocumentProxy, QUrl sourceUrl, QByteArray pPayload, QUuid objectUuid);
-        virtual QString addPdfFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, QUuid objectUuid);
-        virtual QString addGraphicsWidgteToDocument(UBDocumentProxy *mDocumentProxy, QString path, QUuid objectUuid);
+        bool addGraphicsWidgteToDocument(UBDocumentProxy *mDocumentProxy, QString path, QUuid objectUuid, QString& destinationPath);
+        bool addFileToDocument(UBDocumentProxy* pDocumentProxy, QString path, const QString& subdir,  QUuid objectUuid, QString& destinationPath, QByteArray* data = NULL);
 
         bool mayHaveVideo(UBDocumentProxy* pDocumentProxy);
         bool mayHaveAudio(UBDocumentProxy* pDocumentProxy);
@@ -119,19 +124,16 @@ class UBPersistenceManager : public QObject
 
         void documentCreated(UBDocumentProxy* pDocumentProxy);
         void documentMetadataChanged(UBDocumentProxy* pDocumentProxy);
-        void documentCommitted(UBDocumentProxy* pDocumentProxy);
         void documentWillBeDeleted(UBDocumentProxy* pDocumentProxy);
 
         void documentSceneCreated(UBDocumentProxy* pDocumentProxy, int pIndex);
-        void documentSceneMoved(UBDocumentProxy* pDocumentProxy, int pIndex);
         void documentSceneWillBeDeleted(UBDocumentProxy* pDocumentProxy, int pIndex);
-        void documentSceneDeleted(UBDocumentProxy* pDocumentProxy, int pDeletedIndex);
 
     private:
 
         int sceneCount(const UBDocumentProxy* pDocumentProxy);
 
-        int sceneCountInDir(const QString& pPath);
+        static QStringList getSceneFileNames(const QString& folder);
 
         QList<QPointer<UBDocumentProxy> > allDocumentProxies();
 
diff --git a/Sankore-3.1/src/core/UBPreferencesController.cpp b/Sankore-3.1/src/core/UBPreferencesController.cpp
index fa9ad19..15fd16e 100644
--- a/Sankore-3.1/src/core/UBPreferencesController.cpp
+++ b/Sankore-3.1/src/core/UBPreferencesController.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPreferencesController.h"
 
 #include "UBSettings.h"
@@ -64,11 +71,12 @@ UBPreferencesController::UBPreferencesController(QWidget *parent)
     , mPenProperties(0)
     , mMarkerProperties(0)
 {
+    mDesktop = qApp->desktop();
     mPreferencesWindow = new UBPreferencesDialog(this,parent, Qt::Dialog);
     mPreferencesUI = new Ui::preferencesDialog();  // deleted in
     mPreferencesUI->setupUi(mPreferencesWindow);
-    connect(mPreferencesUI->Username_textBox, SIGNAL(editingFinished()), this, SLOT(onCommunityUsernameChanged()));
-    connect(mPreferencesUI->Password_textEdit, SIGNAL(editingFinished()), this, SLOT(onCommunityPasswordChanged()));
+    adjustScreens(1);
+    connect(mDesktop, SIGNAL(screenCountChanged(int)), this, SLOT(adjustScreens(int)));
 
     wire();
 }
@@ -76,7 +84,7 @@ UBPreferencesController::UBPreferencesController(QWidget *parent)
 
 UBPreferencesController::~UBPreferencesController()
 {
-	delete mPreferencesWindow;
+    delete mPreferencesWindow;
 
     delete mPreferencesUI;
 
@@ -85,6 +93,12 @@ UBPreferencesController::~UBPreferencesController()
     delete mMarkerProperties;
 }
 
+void UBPreferencesController::adjustScreens(int screen)
+{
+    Q_UNUSED(screen);
+    UBDisplayManager displayManager;
+    mPreferencesUI->multiDisplayGroupBox->setEnabled(displayManager.numScreens() > 1);
+}
 
 void UBPreferencesController::show()
 {
@@ -112,7 +126,7 @@ void UBPreferencesController::wire()
 
 
     connect(mPreferencesUI->keyboardPaletteKeyButtonSize, SIGNAL(currentIndexChanged(const QString &)), settings->boardKeyboardPaletteKeyBtnSize, SLOT(setString(const QString &)));
-    connect(mPreferencesUI->startModeComboBox, SIGNAL(currentIndexChanged(const QString &)), settings->appStartMode, SLOT(setString(const QString &)));
+    connect(mPreferencesUI->startModeComboBox, SIGNAL(currentIndexChanged(int)), settings->appStartMode, SLOT(setInt(int)));
 
 
     connect(mPreferencesUI->useExternalBrowserCheckBox, SIGNAL(clicked(bool)), settings->webUseExternalBrowser, SLOT(setBool(bool)));
@@ -161,6 +175,12 @@ void UBPreferencesController::wire()
     connect(mMarkerProperties->pressureSensitiveCheckBox, SIGNAL(clicked(bool)), settings, SLOT(setMarkerPressureSensitive(bool)));
     connect(mMarkerProperties->opacitySlider, SIGNAL(valueChanged(int)), this, SLOT(opacitySliderChanged(int)));
 
+
+    //network
+    connect(mPreferencesUI->Username_textBox, SIGNAL(editingFinished()), this, SLOT(onCommunityUsernameChanged()));
+    connect(mPreferencesUI->Password_textEdit, SIGNAL(editingFinished()), this, SLOT(onCommunityPasswordChanged()));
+    connect(mPreferencesUI->PSCredentialsPersistenceCheckBox,SIGNAL(clicked()),this, SLOT(onCommunityPersistenceChanged()));
+
     // about tab
     connect(mPreferencesUI->checkSoftwareUpdateAtLaunchCheckBox, SIGNAL(clicked(bool)), settings->appEnableAutomaticSoftwareUpdates, SLOT(setBool(bool)));
 }
@@ -174,20 +194,12 @@ void UBPreferencesController::init()
 
     // display tab
     for(int i=0; i<mPreferencesUI->keyboardPaletteKeyButtonSize->count(); i++)
-        if (mPreferencesUI->keyboardPaletteKeyButtonSize->itemText(i) ==
-                settings->boardKeyboardPaletteKeyBtnSize->get().toString())
-        {
+        if (mPreferencesUI->keyboardPaletteKeyButtonSize->itemText(i) == settings->boardKeyboardPaletteKeyBtnSize->get().toString()) {
             mPreferencesUI->keyboardPaletteKeyButtonSize->setCurrentIndex(i);
             break;
         }
 
-    for(int i=0; i<mPreferencesUI->startModeComboBox->count(); i++)
-        if (mPreferencesUI->startModeComboBox->itemText(i) ==
-                settings->appStartMode->get().toString())
-        {
-            mPreferencesUI->startModeComboBox->setCurrentIndex(i);
-            break;
-        }
+    mPreferencesUI->startModeComboBox->setCurrentIndex(settings->appStartMode->get().toInt());
 
     mPreferencesUI->useExternalBrowserCheckBox->setChecked(settings->webUseExternalBrowser->get().toBool());
     mPreferencesUI->displayBrowserPageCheckBox->setChecked(settings->webShowPageImmediatelyOnMirroredScreen->get().toBool());
@@ -220,18 +232,36 @@ void UBPreferencesController::init()
 
     mMarkerProperties->opacitySlider->setValue(settings->boardMarkerAlpha->get().toDouble() * 100);
 
+    //network
+    mPreferencesUI->PSCredentialsPersistenceCheckBox->setChecked(settings->getCommunityDataPersistence());
+    persistanceCheckboxUpdate();
+
 }
 
 void UBPreferencesController::onCommunityUsernameChanged()
 {
     UBSettings* settings = UBSettings::settings();
     settings->setCommunityUsername(mPreferencesUI->Username_textBox->text());
+    persistanceCheckboxUpdate();
 }
 
 void UBPreferencesController::onCommunityPasswordChanged()
 {
     UBSettings* settings = UBSettings::settings();
     settings->setCommunityPassword(mPreferencesUI->Password_textEdit->text());
+    persistanceCheckboxUpdate();
+}
+
+void UBPreferencesController::onCommunityPersistenceChanged()
+{
+    UBSettings::settings()->setCommunityPersistence(mPreferencesUI->PSCredentialsPersistenceCheckBox->isChecked());
+}
+
+void UBPreferencesController::persistanceCheckboxUpdate()
+{
+    bool checkBoxEnabled = mPreferencesUI->Username_textBox->text().length() || mPreferencesUI->Password_textEdit->text().length();
+    mPreferencesUI->PSCredentialsPersistenceCheckBox->setEnabled(checkBoxEnabled);
+    mPreferencesUI->PSCredentialsPersistenceCheckBox->setStyleSheet(checkBoxEnabled ? "color:black;" : "color:lightgray;");
 }
 
 
diff --git a/Sankore-3.1/src/core/UBPreferencesController.h b/Sankore-3.1/src/core/UBPreferencesController.h
index d55c89b..b82b00c 100644
--- a/Sankore-3.1/src/core/UBPreferencesController.h
+++ b/Sankore-3.1/src/core/UBPreferencesController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBPREFERENCESCONTROLLER_H_
 #define UBPREFERENCESCONTROLLER_H_
 
@@ -83,12 +90,17 @@ class UBPreferencesController : public QObject
         void toolbarOrientationHorizontal(bool checked);
         void onCommunityUsernameChanged();
         void onCommunityPasswordChanged();
+        void onCommunityPersistenceChanged();
 
-    private:
+    private slots:
+        void adjustScreens(int screen);
 
+    private:
         static qreal sSliderRatio;
         static qreal sMinPenWidth;
         static qreal sMaxPenWidth;
+        void persistanceCheckboxUpdate();
+        QDesktopWidget* mDesktop;
 
 };
 
diff --git a/Sankore-3.1/src/core/UBSceneCache.cpp b/Sankore-3.1/src/core/UBSceneCache.cpp
index bcc0384..11dc8b8 100644
--- a/Sankore-3.1/src/core/UBSceneCache.cpp
+++ b/Sankore-3.1/src/core/UBSceneCache.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBSceneCache.h"
 
 #include "domain/UBGraphicsScene.h"
@@ -38,9 +46,9 @@ UBSceneCache::~UBSceneCache()
 }
 
 
-UBGraphicsScene* UBSceneCache::createScene(UBDocumentProxy* proxy, int pageIndex)
+UBGraphicsScene* UBSceneCache::createScene(UBDocumentProxy* proxy, int pageIndex, bool useUndoRedoStack)
 {
-    UBGraphicsScene* newScene = new UBGraphicsScene(proxy);
+    UBGraphicsScene* newScene = new UBGraphicsScene(proxy, useUndoRedoStack);
     insert(proxy, pageIndex, newScene);
 
     return newScene;
diff --git a/Sankore-3.1/src/core/UBSceneCache.h b/Sankore-3.1/src/core/UBSceneCache.h
index 9222537..210b8c2 100644
--- a/Sankore-3.1/src/core/UBSceneCache.h
+++ b/Sankore-3.1/src/core/UBSceneCache.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBSCENECACHE_H
 #define UBSCENECACHE_H
 
@@ -64,7 +72,7 @@ class UBSceneCache : public QHash<UBSceneCacheID, UBGraphicsScene*>
         UBSceneCache();
         virtual ~UBSceneCache();
 
-        UBGraphicsScene* createScene(UBDocumentProxy* proxy, int pageIndex);
+        UBGraphicsScene* createScene(UBDocumentProxy* proxy, int pageIndex, bool useUndoRedoStack);
 
         void insert (UBDocumentProxy* proxy, int pageIndex, UBGraphicsScene* scene );
 
diff --git a/Sankore-3.1/src/core/UBSetting.cpp b/Sankore-3.1/src/core/UBSetting.cpp
index 7d63452..3e87194 100644
--- a/Sankore-3.1/src/core/UBSetting.cpp
+++ b/Sankore-3.1/src/core/UBSetting.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBSetting.h"
 
 #include <QtGui>
@@ -74,6 +81,10 @@ void UBSetting::setString(const QString& pValue)
 {
     set(pValue);
 }
+void UBSetting::setInt(int pValue)
+{
+    set(pValue);
+}
 
 
 UBColorListSetting::UBColorListSetting(UBSettings* parent)
diff --git a/Sankore-3.1/src/core/UBSetting.h b/Sankore-3.1/src/core/UBSetting.h
index edfaf83..56c6a71 100644
--- a/Sankore-3.1/src/core/UBSetting.h
+++ b/Sankore-3.1/src/core/UBSetting.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSETTING_H_
 #define UBSETTING_H_
 
@@ -54,6 +61,7 @@ class UBSetting : public QObject
 
         void setBool(bool pValue);
 		void setString(const QString& pValue);
+        void setInt(int pValue);
 
     signals:
 
diff --git a/Sankore-3.1/src/core/UBSettings.cpp b/Sankore-3.1/src/core/UBSettings.cpp
index 292b5a4..ad4cfa2 100644
--- a/Sankore-3.1/src/core/UBSettings.cpp
+++ b/Sankore-3.1/src/core/UBSettings.cpp
@@ -1,11 +1,25 @@
-
 /*
- * UBSettings.cpp
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- *  Created on: Oct 29, 2008
- *      Author: luc
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBSettings.h"
 
 #include <QtGui>
@@ -78,6 +92,7 @@ QPointer<QSettings> UBSettings::sAppSettings = 0;
 
 const int UBSettings::maxThumbnailWidth = 400;
 const int UBSettings::defaultThumbnailWidth = 150;
+const int UBSettings::defaultLibraryIconSize = 80;
 
 const int UBSettings::defaultGipWidth = 150;
 const int UBSettings::defaultSoundWidth = 50;
@@ -87,7 +102,7 @@ const int UBSettings::defaultWidgetIconWidth = 110;
 const int UBSettings::defaultVideoWidth = 80;
 
 const int UBSettings::thumbnailSpacing = 20;
-const int UBSettings::longClickInterval = 2000;
+const int UBSettings::longClickInterval = 1200;
 
 const qreal UBSettings::minScreenRatio = 1.33; // 800/600 or 1024/768
 
@@ -103,9 +118,6 @@ int UBSettings::objectInControlViewMargin = 100;
 
 QString UBSettings::appPingMessage = "__uniboard_ping";
 
-QString UBSettings::defaultDocumentGroupName;
-QString UBSettings::documentTrashGroupName;
-
 UBSettings* UBSettings::settings()
 {
     if (!sSingleton)
@@ -175,7 +187,7 @@ void UBSettings::ValidateKeyboardPaletteKeyBtnSize()
 {
     // if boardKeyboardPaletteKeyBtnSize is not initialized, or supportedKeyboardSizes not initialized or empty
     if( !boardKeyboardPaletteKeyBtnSize ||
-        !supportedKeyboardSizes || 
+        !supportedKeyboardSizes ||
         supportedKeyboardSizes->size() == 0 ) return;
 
     // get original size value
@@ -206,9 +218,16 @@ void UBSettings::init()
     appEnableAutomaticSoftwareUpdates = new UBSetting(this, "App", "EnableAutomaticSoftwareUpdates", true);
     appEnableSoftwareUpdates = new UBSetting(this, "App", "EnableSoftwareUpdates", true);
     appToolBarOrientationVertical = new UBSetting(this, "App", "ToolBarOrientationVertical", false);
-    navigPaletteWidth = new UBSetting(this, "Board", "NavigPaletteWidth", 270);
-    rightLibPaletteWidth = new UBSetting(this, "Board", "RightLibPaletteWidth", 270);
-    leftLibPaletteWidth = new UBSetting(this, "Board", "LeftLibPaletteWidth",270);
+    appPreferredLanguage = new UBSetting(this,"App","PreferredLanguage", "");
+
+    rightLibPaletteBoardModeWidth = new UBSetting(this, "Board", "RightLibPaletteBoardModeWidth", 270);
+    rightLibPaletteBoardModeIsCollapsed = new UBSetting(this,"Board", "RightLibPaletteBoardModeIsCollapsed",false);
+    rightLibPaletteDesktopModeWidth = new UBSetting(this, "Board", "RightLibPaletteDesktopModeWidth", 270);
+    rightLibPaletteDesktopModeIsCollapsed = new UBSetting(this,"Board", "RightLibPaletteDesktopModeIsCollapsed",false);
+    leftLibPaletteBoardModeWidth = new UBSetting(this, "Board", "LeftLibPaletteBoardModeWidth",270);
+    leftLibPaletteBoardModeIsCollapsed = new UBSetting(this,"Board","LeftLibPaletteBoardModeIsCollapsed",false);
+    leftLibPaletteDesktopModeWidth = new UBSetting(this, "Board", "LeftLibPaletteDesktopModeWidth",270);
+    leftLibPaletteDesktopModeIsCollapsed = new UBSetting(this,"Board","LeftLibPaletteDesktopModeIsCollapsed",false);
 
     appIsInSoftwareUpdateProcess = new UBSetting(this, "App", "IsInSoftwareUpdateProcess", false);
     appLastSessionDocumentUUID = new UBSetting(this, "App", "LastSessionDocumentUUID", "");
@@ -217,6 +236,8 @@ void UBSettings::init()
 
     appStartMode = new UBSetting(this, "App", "StartMode", "");
 
+    featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40);
+
     boardPenFineWidth = new UBSetting(this, "Board", "PenFineWidth", 1.5);
     boardPenMediumWidth = new UBSetting(this, "Board", "PenMediumWidth", 3.0);
     boardPenStrongWidth = new UBSetting(this, "Board", "PenStrongWidth", 8.0);
@@ -234,7 +255,9 @@ void UBSettings::init()
     ValidateKeyboardPaletteKeyBtnSize();
 
     pageSize = new UBSetting(this, "Board", "DefaultPageSize", documentSizes.value(DocumentSizeRatio::Ratio4_3));
-    
+
+    pageDpi = new UBSetting(this, "Board", "pageDpi", 0);
+
     QStringList penLightBackgroundColors;
     penLightBackgroundColors << "#000000" << "#FF0000" <<"#004080" << "#008000" << "#C87400" << "#800040" << "#008080"  << "#5F2D0A";
     boardPenLightBackgroundColors = new UBColorListSetting(this, "Board", "PenLightBackgroundColors", penLightBackgroundColors, 1.0);
@@ -322,9 +345,6 @@ void UBSettings::init()
     lastWidgetPath = new UBSetting(this, "Library", "LastWidgetPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation)));
     lastVideoPath = new UBSetting(this, "Library", "LastVideoPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::MoviesLocation)));
 
-    defaultDocumentGroupName = tr("Untitled Documents");
-    documentTrashGroupName = tr("Trash");
-
     appOnlineUserName = new UBSetting(this, "App", "OnlineUserName", "");
 
     boardShowToolsPalette = new UBSetting(this, "Board", "ShowToolsPalette", "false");
@@ -344,6 +364,7 @@ void UBSettings::init()
 
     podcastPublishToYoutube = new UBSetting(this, "Podcast", "PublishToYouTube", false);
     youTubeUserEMail = new UBSetting(this, "YouTube", "UserEMail", "");
+    youTubeCredentialsPersistence = new UBSetting(this,"YouTube", "CredentialsPersistence",false);
 
     uniboardWebEMail = new UBSetting(this, "UniboardWeb", "EMail", "");
     uniboardWebAuthor = new UBSetting(this, "UniboardWeb", "Author", "");
@@ -351,6 +372,7 @@ void UBSettings::init()
 
     communityUser = new UBSetting(this, "Community", "Username", "");
     communityPsw = new UBSetting(this, "Community", "Password", "");
+    communityCredentialsPersistence = new UBSetting(this,"Community", "CredentialsPersistence",false);
 
     QStringList uris = UBToolsManager::manager()->allToolIDs();
 
@@ -377,13 +399,17 @@ void UBSettings::init()
     intranetPodcastPublishingUrl = new UBSetting(this, "IntranetPodcast", "PublishingUrl", "");
     intranetPodcastAuthor = new UBSetting(this, "IntranetPodcast", "Author", "");
 
-	KeyboardLocale = new UBSetting(this, "Board", "StartupKeyboardLocale", 0);
+    KeyboardLocale = new UBSetting(this, "Board", "StartupKeyboardLocale", 0);
     swapControlAndDisplayScreens = new UBSetting(this, "App", "SwapControlAndDisplayScreens", false);
 
     angleTolerance = new UBSetting(this, "App", "AngleTolerance", 4);
     historyLimit = new UBSetting(this, "Web", "HistoryLimit", 15);
     teacherGuidePageZeroActivated = new UBSetting(this,"DockPalette","TeacherGuideActivatePageZero",true);
     teacherGuideLessonPagesActivated = new UBSetting(this,"DockPalette","TeacherGuideActivateLessonPages",true);
+
+    libIconSize = new UBSetting(this, "Library", "LibIconSize", defaultLibraryIconSize);
+
+    cleanNonPersistentSettings();
 }
 
 
@@ -393,7 +419,7 @@ QVariant UBSettings::value ( const QString & key, const QVariant & defaultValue)
     {
         sAppSettings->setValue(key, defaultValue);
     }
-    
+
     return mUserSettings->value(key, sAppSettings->value(key, defaultValue));
 }
 
@@ -884,6 +910,17 @@ QString UBSettings::userTrashDirPath()
 }
 
 
+QString UBSettings::userGipLibraryDirectory()
+{
+    static QString dirPath = "";
+    if(dirPath.isEmpty()){
+        dirPath = userDataDirectory() + "/library/gips";
+        checkDirectory(dirPath);
+    }
+    return dirPath;
+}
+
+
 QString UBSettings::applicationShapeLibraryDirectory()
 {
     QString defaultRelativePath = QString("./library/shape");
@@ -911,16 +948,6 @@ QString UBSettings::applicationCustomFontDirectory()
     return applicationCustomizationDirectory() + defaultFontDirectory;
 }
 
-QString UBSettings::applicationGipLibraryDirectory()
-{
-    static QString dirPath = "";
-    if(dirPath.isEmpty()){
-        dirPath = UBPlatformUtils::applicationResourcesDirectory() + "/library/gips";
-        checkDirectory(dirPath);
-    }
-    return dirPath;
-}
-
 QString UBSettings::userSearchDirectory()
 {
     static QString dirPath = "";
@@ -933,7 +960,7 @@ QString UBSettings::userSearchDirectory()
 
 QString UBSettings::applicationImageLibraryDirectory()
 {
-    QString defaultRelativePath = QString("./library/image");
+    QString defaultRelativePath = QString("./library/pictures");
 
     QString configPath = value("Library/ImageDirectory", QVariant(defaultRelativePath)).toString();
 
@@ -1003,6 +1030,48 @@ QString UBSettings::applicationApplicationsLibraryDirectory()
 }
 
 
+QString UBSettings::applicationAudiosLibraryDirectory()
+{
+    QString defaultRelativePath = QString("./library/audios");
+
+    QString configPath = value("Library/AudiosDirectory", QVariant(defaultRelativePath)).toString();
+
+    if (configPath.startsWith(".")) {
+        return UBPlatformUtils::applicationResourcesDirectory() + configPath.right(configPath.size() - 1);
+    }
+    else {
+        return configPath;
+    }
+}
+
+QString UBSettings::applicationVideosLibraryDirectory()
+{
+    QString defaultRelativePath = QString("./library/videos");
+
+    QString configPath = value("Library/VideosDirectory", QVariant(defaultRelativePath)).toString();
+
+    if (configPath.startsWith(".")) {
+        return UBPlatformUtils::applicationResourcesDirectory() + configPath.right(configPath.size() - 1);
+    }
+    else {
+        return configPath;
+    }
+}
+
+QString UBSettings::applicationAnimationsLibraryDirectory()
+{
+    QString defaultRelativePath = QString("./library/animations");
+
+    QString configPath = value("Library/AnimationsDirectory", QVariant(defaultRelativePath)).toString();
+
+    if (configPath.startsWith(".")) {
+        return UBPlatformUtils::applicationResourcesDirectory() + configPath.right(configPath.size() - 1);
+    }
+    else {
+        return configPath;
+    }
+}
+
 QString UBSettings::userInteractiveFavoritesDirectory()
 {
     static QString dirPath = "";
@@ -1129,6 +1198,18 @@ void UBSettings::setCommunityPassword(const QString &password)
     communityPsw->set(QVariant(password));
 }
 
+void UBSettings::setCommunityPersistence(const bool persistence)
+{
+    communityCredentialsPersistence->set(QVariant(persistence));
+}
+
+int UBSettings::libraryIconSize(){
+    return libIconSize->get().toInt();
+}
+
+void UBSettings::setLibraryIconsize(const int& size){
+    libIconSize->set(QVariant(size));
+}
 
 bool UBSettings::checkDirectory(QString& dirPath)
 {
@@ -1160,3 +1241,20 @@ QString UBSettings::replaceWildcard(QString& path)
     return result;
 }
 
+void UBSettings::closing()
+{
+    cleanNonPersistentSettings();
+}
+
+void UBSettings::cleanNonPersistentSettings()
+{
+    if(!communityCredentialsPersistence->get().toBool()){
+        communityPsw->set(QVariant(""));
+        communityUser->set(QVariant(""));
+    }
+
+    if(!youTubeCredentialsPersistence->get().toBool()){
+        removePassword(youTubeUserEMail->get().toString());
+        youTubeUserEMail->set(QVariant(""));
+    }
+}
diff --git a/Sankore-3.1/src/core/UBSettings.h b/Sankore-3.1/src/core/UBSettings.h
index f97d7b4..3871289 100644
--- a/Sankore-3.1/src/core/UBSettings.h
+++ b/Sankore-3.1/src/core/UBSettings.h
@@ -1,10 +1,25 @@
 /*
- * UBSettings.h
+ * Copyright (C) 2012 Webdoc SA
  *
- *  Created on: Oct 29, 2008
- *      Author: luc
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSETTINGS_H_
 #define UBSETTINGS_H_
 
@@ -18,7 +33,7 @@
 class UBSettings : public QObject
 {
 
-    Q_OBJECT;
+    Q_OBJECT
 
     public:
 
@@ -29,13 +44,14 @@ class UBSettings : public QObject
 
         UBSettings(QObject *parent = 0);
         virtual ~UBSettings();
+        void cleanNonPersistentSettings();
 
     public:
 
         QStringList* supportedKeyboardSizes;
         void InitKeyboardPaletteKeyBtnSizes();
         void ValidateKeyboardPaletteKeyBtnSize();
-
+        void closing();
 
         int penWidthIndex();
 
@@ -95,9 +111,14 @@ class UBSettings : public QObject
         void setCommunityUsername(const QString& username);
         QString communityPassword();
         void setCommunityPassword(const QString& password);
+        bool getCommunityDataPersistence(){return communityCredentialsPersistence->get().toBool();}
+        void setCommunityPersistence(const bool persistence);
+
+        int libraryIconSize();
+        void setLibraryIconsize(const int& size);
 
         void init();
-        
+
         //user directories
         static QString userDataDirectory();
         static QString userDocumentDirectory();
@@ -112,15 +133,18 @@ class UBSettings : public QObject
         static QString userInteractiveFavoritesDirectory();
         static QString userPodcastRecordingDirectory();
 
+        QString userGipLibraryDirectory();
+
         //application directory
         QString applicationShapeLibraryDirectory();
-        QString applicationGipLibraryDirectory();
         QString applicationImageLibraryDirectory();
         QString applicationApplicationsLibraryDirectory();
         QString applicationInteractivesDirectory();
         QString applicationCustomizationDirectory();
         QString applicationCustomFontDirectory();
-
+        QString applicationAudiosLibraryDirectory();
+        QString applicationVideosLibraryDirectory();
+        QString applicationAnimationsLibraryDirectory();
 
         QNetworkProxy* httpProxy();
 
@@ -174,6 +198,7 @@ class UBSettings : public QObject
 
         static const int maxThumbnailWidth;
         static const int defaultThumbnailWidth;
+        static const int defaultLibraryIconSize;
 
         static const int defaultImageWidth;
         static const int defaultShapeWidth;
@@ -199,9 +224,6 @@ class UBSettings : public QObject
 
         static QString appPingMessage;
 
-        static QString defaultDocumentGroupName;
-        static QString documentTrashGroupName;
-
         UBSetting* productWebUrl;
 
         QString softwareHomeUrl;
@@ -211,6 +233,7 @@ class UBSettings : public QObject
         UBSetting* appEnableAutomaticSoftwareUpdates;
         UBSetting* appEnableSoftwareUpdates;
         UBSetting* appToolBarOrientationVertical;
+        UBSetting* appPreferredLanguage;
 
         UBSetting* appIsInSoftwareUpdateProcess;
 
@@ -236,6 +259,8 @@ class UBSettings : public QObject
 
         UBSetting* appStartMode;
 
+        UBSetting* featureSliderPosition;
+
         UBColorListSetting* boardPenLightBackgroundColors;
         UBColorListSetting* boardPenLightBackgroundSelectedColors;
 
@@ -295,6 +320,7 @@ class UBSettings : public QObject
 
         UBSetting* podcastPublishToYoutube;
         UBSetting* youTubeUserEMail;
+        UBSetting* youTubeCredentialsPersistence;
 
         UBSetting* uniboardWebEMail;
         UBSetting* uniboardWebAuthor;
@@ -319,14 +345,21 @@ class UBSettings : public QObject
         UBSetting* gipThumbnailWidth;
         UBSetting* soundThumbnailWidth;
 
-        UBSetting* navigPaletteWidth;
-        UBSetting* rightLibPaletteWidth;
-        UBSetting* leftLibPaletteWidth;
+        UBSetting* rightLibPaletteBoardModeWidth;
+        UBSetting* rightLibPaletteBoardModeIsCollapsed;
+        UBSetting* rightLibPaletteDesktopModeWidth;
+        UBSetting* rightLibPaletteDesktopModeIsCollapsed;
+        UBSetting* leftLibPaletteBoardModeWidth;
+        UBSetting* leftLibPaletteBoardModeIsCollapsed;
+        UBSetting* leftLibPaletteDesktopModeWidth;
+        UBSetting* leftLibPaletteDesktopModeIsCollapsed;
 
         UBSetting* communityUser;
         UBSetting* communityPsw;
+        UBSetting* communityCredentialsPersistence;
 
         UBSetting* pageSize;
+        UBSetting* pageDpi;
 
         UBSetting* KeyboardLocale;
         UBSetting* swapControlAndDisplayScreens;
@@ -336,6 +369,8 @@ class UBSettings : public QObject
         UBSetting* teacherGuidePageZeroActivated;
         UBSetting* teacherGuideLessonPagesActivated;
 
+        UBSetting* libIconSize;
+
     public slots:
 
         void setPenWidthIndex(int index);
diff --git a/Sankore-3.1/src/core/main.cpp b/Sankore-3.1/src/core/main.cpp
index 33cb711..e965109 100644
--- a/Sankore-3.1/src/core/main.cpp
+++ b/Sankore-3.1/src/core/main.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <QtGui>
 #include <QTextCodec>
 
@@ -93,7 +101,7 @@ int main(int argc, char *argv[])
     //when importing a sankore file that contains a non standard character
     //the codecForLocale or the codecForCString is used to convert the file path
     //into a const char*. This is why in french windows setup the codec name shouldn't be
-    //set to UTF-8. For example, setting UTF-8, will convert "Haïti" into "HaÂ-ti.
+    //set to UTF-8. For example, setting UTF-8, will convert "Haïti" into "HaÂ-ti.
 
     QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
     //QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
@@ -127,9 +135,9 @@ int main(int argc, char *argv[])
 
     app.initialize(false);
 
-    QObject::connect(&app, SIGNAL(messageReceived(const QString&)), &app,
-                     SLOT(handleOpenMessage(const QString&)));
+    QObject::connect(&app, SIGNAL(messageReceived(const QString&)), &app, SLOT(handleOpenMessage(const QString&)));
 
+    qDebug() << "file name argument" << fileToOpen;
     int result = app.exec(fileToOpen);
 
     app.cleanup();
diff --git a/Sankore-3.1/src/core/memcheck.h b/Sankore-3.1/src/core/memcheck.h
index c574267..8d0a107 100644
--- a/Sankore-3.1/src/core/memcheck.h
+++ b/Sankore-3.1/src/core/memcheck.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #if defined(WIN32) && defined(_DEBUG)
    #include <cstdlib>
    #define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )
diff --git a/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp b/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp
index 25c1809..d1d055f 100644
--- a/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp
+++ b/Sankore-3.1/src/customWidgets/UBActionableWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QPainter>
 #include <QDebug>
 
diff --git a/Sankore-3.1/src/customWidgets/UBActionableWidget.h b/Sankore-3.1/src/customWidgets/UBActionableWidget.h
index 23a2478..7a477b1 100644
--- a/Sankore-3.1/src/customWidgets/UBActionableWidget.h
+++ b/Sankore-3.1/src/customWidgets/UBActionableWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBACTIONABLEWIDGET_H
 #define UBACTIONABLEWIDGET_H
 
diff --git a/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp b/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp
index bc3d4f8..8890c68 100644
--- a/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp
+++ b/Sankore-3.1/src/customWidgets/UBMediaWidget.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "core/UBApplication.h"
 #include "globals/UBGlobals.h"
 #include "UBMediaWidget.h"
@@ -114,17 +122,21 @@ eMediaType UBMediaWidget::mediaType()
 
 void UBMediaWidget::showEvent(QShowEvent* event)
 {
-    if(!mpVideoWidget){
-        mpVideoWidget = new Phonon::VideoWidget(this);
-        mMediaLayout->addStretch(1);
-        mMediaLayout->addWidget(mpVideoWidget);
-        mMediaLayout->addStretch(1);
-        Phonon::createPath(mpMediaObject, mpVideoWidget);
-        adaptSizeToVideo();
-        mpMediaObject->play();
-        mpMediaObject->stop();
-    }
-    QWidget::showEvent(event);
+	if(mType == eMediaType_Audio){
+		return;
+	}else{
+		if(!mpVideoWidget){
+			mpVideoWidget = new Phonon::VideoWidget(this);
+			mMediaLayout->addStretch(1);
+			mMediaLayout->addWidget(mpVideoWidget);
+			mMediaLayout->addStretch(1);
+			Phonon::createPath(mpMediaObject, mpVideoWidget);
+			adaptSizeToVideo();
+			mpMediaObject->play();
+			mpMediaObject->stop();
+		}
+		QWidget::showEvent(event);
+	}
 }
 
 void UBMediaWidget::hideEvent(QHideEvent* event)
@@ -159,11 +171,11 @@ void UBMediaWidget::createMediaPlayer()
     }else if(eMediaType_Audio == mType){
         mMediaLayout->setContentsMargins(10, 10, 10, 10);
         mpCover = new QLabel(mpMediaContainer);
-        mpMediaContainer->setStyleSheet(QString("background: none;"));
+        //mpMediaContainer->setStyleSheet(QString("background: none;"));
         setAudioCover(":images/libpalette/soundIcon.svg");
         mpCover->setScaledContents(true);
         mMediaLayout->addStretch(1);
-        mMediaLayout->addWidget(mpCover, 0);
+        mMediaLayout->addWidget(mpCover);
         mMediaLayout->addStretch(1);
         mpAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
         Phonon::createPath(mpMediaObject, mpAudioOutput);
diff --git a/Sankore-3.1/src/customWidgets/UBMediaWidget.h b/Sankore-3.1/src/customWidgets/UBMediaWidget.h
index 13a96a8..7a18652 100644
--- a/Sankore-3.1/src/customWidgets/UBMediaWidget.h
+++ b/Sankore-3.1/src/customWidgets/UBMediaWidget.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBMEDIAWIDGET_H
 #define UBMEDIAWIDGET_H
 
diff --git a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp
index 01af046..c00920f 100644
--- a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp
+++ b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBCustomCaptureWindow.h"
 
 #include "gui/UBRubberBand.h"
diff --git a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h
index b8576cd..544f50f 100644
--- a/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h
+++ b/Sankore-3.1/src/desktop/UBCustomCaptureWindow.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBCUSTOMCAPTUREWINDOW_H_
 #define UBCUSTOMCAPTUREWINDOW_H_
 
diff --git a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp
index 8ec7496..e11b401 100644
--- a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp
+++ b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QDesktopWidget>
 
 #include "UBDesktopAnnotationController.h"
@@ -38,16 +45,14 @@
 #include "UBCustomCaptureWindow.h"
 #include "UBWindowCapture.h"
 #include "UBDesktopPalette.h"
-#include "UBDesktopPenPalette.h"
-#include "UBDesktopMarkerPalette.h"
-#include "UBDesktopEraserPalette.h"
+#include "UBDesktopPropertyPalette.h"
 
 #include "gui/UBKeyboardPalette.h"
 #include "gui/UBResources.h"
 
 #include "core/memcheck.h"
 
-UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent)
+UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent, UBRightPalette* rightPalette)
         : QObject(parent)
         , mTransparentDrawingView(0)
         , mTransparentDrawingScene(0)
@@ -55,7 +60,8 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent)
         , mDesktopPenPalette(NULL)
         , mDesktopMarkerPalette(NULL)
         , mDesktopEraserPalette(NULL)
-        , mWindowPositionInitialized(0)
+        , mRightPalette(rightPalette)
+        , mWindowPositionInitialized(false)
         , mIsFullyTransparent(false)
         , mDesktopToolsPalettePositioned(false)
         , mPendingPenButtonPressed(false)
@@ -66,10 +72,8 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent)
         , mDesktopStylusTool(UBDrawingController::drawingController()->stylusTool())
 {
 
-    mTransparentDrawingView = new UBBoardView(UBApplication::boardController, 0); // deleted in UBDesktopAnnotationController::destructor
-
+    mTransparentDrawingView = new UBBoardView(UBApplication::boardController, static_cast<QWidget*>(0), false, true); // deleted in UBDesktopAnnotationController::destructor
     mTransparentDrawingView->setAttribute(Qt::WA_TranslucentBackground, true);
-	// !!!! Should be included into Windows after QT recompilation
 #ifdef Q_WS_MAC
     mTransparentDrawingView->setAttribute(Qt::WA_MacNoShadow, true);
 #endif
@@ -84,11 +88,13 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent)
     QString backgroundStyle = "QWidget {background-color: rgba(127, 127, 127, 0)}";
     mTransparentDrawingView->setStyleSheet(backgroundStyle);
 
-    mTransparentDrawingScene = new UBGraphicsScene(0);
+    mTransparentDrawingScene = new UBGraphicsScene(0, false);
     mTransparentDrawingView->setScene(mTransparentDrawingScene);
     mTransparentDrawingScene->setDrawingMode(true);
 
-    mDesktopPalette = new UBDesktopPalette(mTransparentDrawingView);
+    mDesktopPalette = new UBDesktopPalette(mTransparentDrawingView, rightPalette); 
+    // This was not fix, parent reverted
+    // FIX #633: The palette must be 'floating' in order to stay on top of the library palette
 
     if (UBPlatformUtils::hasVirtualKeyboard())
     {
@@ -106,23 +112,24 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent)
     connect(mDesktopPalette, SIGNAL(customClick()), this, SLOT(customCapture()));
     connect(mDesktopPalette, SIGNAL(windowClick()), this, SLOT(windowCapture()));
     connect(mDesktopPalette, SIGNAL(screenClick()), this, SLOT(screenCapture()));
+    connect(UBApplication::mainWindow->actionPointer, SIGNAL(triggered()), this, SLOT(onToolClicked()));
+    connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered()), this, SLOT(onToolClicked()));
     connect(mDesktopPalette, SIGNAL(maximized()), this, SLOT(onDesktopPaletteMaximized()));
     connect(mDesktopPalette, SIGNAL(minimizeStart(eMinimizedLocation)), this, SLOT(onDesktopPaletteMinimize()));
 
     connect(mTransparentDrawingView, SIGNAL(resized(QResizeEvent*)), this, SLOT(onTransparentWidgetResized()));
 
 
-    connect(UBDrawingController::drawingController(), SIGNAL(stylusToolChanged(int))
-            , this, SLOT(stylusToolChanged(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(stylusToolChanged(int)), this, SLOT(stylusToolChanged(int)));
 
     // Add the desktop associated palettes
-    mDesktopPenPalette = new UBDesktopPenPalette(mTransparentDrawingView);
+    mDesktopPenPalette = new UBDesktopPenPalette(mTransparentDrawingView, rightPalette); 
 
     connect(mDesktopPalette, SIGNAL(maximized()), mDesktopPenPalette, SLOT(onParentMaximized()));
     connect(mDesktopPalette, SIGNAL(minimizeStart(eMinimizedLocation)), mDesktopPenPalette, SLOT(onParentMinimized()));
 
-    mDesktopMarkerPalette = new UBDesktopMarkerPalette(mTransparentDrawingView);
-    mDesktopEraserPalette = new UBDesktopEraserPalette(mTransparentDrawingView);
+    mDesktopMarkerPalette = new UBDesktopMarkerPalette(mTransparentDrawingView, rightPalette);
+    mDesktopEraserPalette = new UBDesktopEraserPalette(mTransparentDrawingView, rightPalette);
 
     mDesktopPalette->setBackgroundBrush(UBSettings::settings()->opaquePaletteColor);
     mDesktopPenPalette->setBackgroundBrush(UBSettings::settings()->opaquePaletteColor);
@@ -148,66 +155,21 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent)
 
 #ifdef Q_WS_X11
     connect(mDesktopPalette, SIGNAL(moving()), this, SLOT(refreshMask()));
-//    connect(mRightPalette, SIGNAL(resized()), this, SLOT(refreshMask()));
     connect(UBApplication::boardController->paletteManager()->rightPalette(), SIGNAL(resized()), this, SLOT(refreshMask()));
+    connect(UBApplication::boardController->paletteManager()->addItemPalette(), SIGNAL(closed()), this, SLOT(refreshMask()));
 #endif
     onDesktopPaletteMaximized();
-}
 
-// void UBDesktopAnnotationController::showKeyboard(bool show)
-// {
-//     #ifdef Q_WS_X11
-//         if (!mTransparentDrawingView->isVisible())
-//             return;
-//     #endif
-// 
-//     if(mKeyboardPalette)
-//     {
-//         if(show)
-//             UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
-//         mKeyboardPalette->setVisible(show);
-// 
-//         #ifdef Q_WS_X11
-//             updateMask(true);
-//         #endif
-//         
-//     }
-// 
-// }
-
-// void UBDesktopAnnotationController::showKeyboard()
-// {
-//     if (UBApplication::mainWindow->actionVirtualKeyboard->isChecked())
-//         mKeyboardPalette->show();
-// }
+    // FIX #633: Ensure that these palettes stay on top of the other elements
+    //mDesktopEraserPalette->raise();
+    //mDesktopMarkerPalette->raise();
+    //mDesktopPenPalette->raise();
+}
 
 UBDesktopAnnotationController::~UBDesktopAnnotationController()
 {
     delete mTransparentDrawingScene;
     delete mTransparentDrawingView;
-
-	/*
-    if(NULL != mDesktopPenPalette)
-    {
-        delete mDesktopPalette;
-        mDesktopPenPalette = NULL;
-    }
-    if(NULL != mDesktopMarkerPalette)
-    {
-        delete mDesktopMarkerPalette;
-        mDesktopMarkerPalette = NULL;
-    }
-    if(NULL != mDesktopEraserPalette)
-    {
-        delete mDesktopEraserPalette;
-        mDesktopEraserPalette = NULL;
-    }
-    if(NULL != mRightPalette)
-    {
-        delete mRightPalette;
-        mRightPalette = NULL;
-    }
-	*/
 }
 
 
@@ -268,17 +230,13 @@ void UBDesktopAnnotationController::setAssociatedPalettePosition(UBActionPalette
         if(act->objectName() == actionName)
         {
             int iAction = actions.indexOf(act);
-            yPen = iAction * mDesktopPalette->buttonSize().height();
-
-            // Add the borders
-            yPen += (iAction) * (mDesktopPalette->border() + 4); // 4 has been set after some experiment. We must determine why this value is good
-
+            yPen = iAction * (mDesktopPalette->buttonSize().height() + 2 * mDesktopPalette->border() +6); // This is the mysterious value (6)
             break;
         }
     }
 
     // First determine if the palette must be shown on the left or on the right
-    if(desktopPalettePos.x() <= (mTransparentDrawingView->width() - (palette->width() + mDesktopPalette->width() + 20))) // we take a small margin of 20 pixels
+    if(desktopPalettePos.x() <= (mTransparentDrawingView->width() - (palette->width() + mDesktopPalette->width() + mRightPalette->width() + 20))) // we take a small margin of 20 pixels
     {
         // Display it on the right
         desktopPalettePos += QPoint(mDesktopPalette->width(), yPen);
@@ -297,7 +255,7 @@ void UBDesktopAnnotationController::eraseDesktopAnnotations()
 {
     if (mTransparentDrawingScene)
     {
-        mTransparentDrawingScene->clearAnnotations();
+        mTransparentDrawingScene->clearContent(UBGraphicsScene::clearAnnotations);
     }
 }
 
@@ -329,6 +287,7 @@ void UBDesktopAnnotationController::showWindow()
         mDesktopPalette->move(5, desktopRect.top() + 150);
 
         mWindowPositionInitialized = true;
+        mDesktopPalette->maximizeMe();
     }
 
     updateBackground();
@@ -337,8 +296,12 @@ void UBDesktopAnnotationController::showWindow()
 
     UBDrawingController::drawingController()->setStylusTool(mDesktopStylusTool);
 
+#ifndef Q_WS_X11
     mTransparentDrawingView->showFullScreen();
-
+#else
+    // this is necessary to avoid unity to hide the panels
+    mTransparentDrawingView->show();
+#endif
     UBPlatformUtils::setDesktopMode(true);
 
     mDesktopPalette->appear();
@@ -412,9 +375,11 @@ void UBDesktopAnnotationController::hideWindow()
 
 void UBDesktopAnnotationController::goToUniboard()
 {
+	onToolClicked();
     hideWindow();
 
     UBPlatformUtils::setDesktopMode(false);
+    UBDrawingController::drawingController()->setInDestopMode(false);
 
     emit restoreUniboard();
 }
@@ -422,12 +387,12 @@ void UBDesktopAnnotationController::goToUniboard()
 
 void UBDesktopAnnotationController::customCapture()
 {
+	onToolClicked();
     mIsFullyTransparent = true;
     updateBackground();
 
     mDesktopPalette->disappearForCapture();
     UBCustomCaptureWindow customCaptureWindow(mDesktopPalette);
-
     // need to show the window before execute it to avoid some glitch on windows.
 
 #ifndef Q_WS_WIN // Working only without this call on win32 desktop mode
@@ -449,6 +414,7 @@ void UBDesktopAnnotationController::customCapture()
 
 void UBDesktopAnnotationController::windowCapture()
 {
+	onToolClicked();
     mIsFullyTransparent = true;
     updateBackground();
 
@@ -478,6 +444,7 @@ void UBDesktopAnnotationController::windowCapture()
 
 void UBDesktopAnnotationController::screenCapture()
 {
+    onToolClicked();
     mIsFullyTransparent = true;
     updateBackground();
 
@@ -564,7 +531,6 @@ void UBDesktopAnnotationController::penActionPressed()
  */
 void UBDesktopAnnotationController::penActionReleased()
 {
-    qDebug() << "penActionReleased()";
     mHoldTimerPen.stop();
     if(mPendingPenButtonPressed)
     {
@@ -619,7 +585,6 @@ void UBDesktopAnnotationController::eraserActionPressed()
  */
 void UBDesktopAnnotationController::eraserActionReleased()
 {
-    qDebug() << "eraserActionReleased()";
     mHoldTimerEraser.stop();
     if(mPendingEraserButtonPressed)
     {
@@ -676,7 +641,6 @@ void UBDesktopAnnotationController::markerActionPressed()
  */
 void UBDesktopAnnotationController::markerActionReleased()
 {
-    qDebug() << "markerActionReleased()";
     mHoldTimerMarker.stop();
     if(mPendingMarkerButtonPressed)
     {
@@ -702,6 +666,7 @@ void UBDesktopAnnotationController::selectorActionPressed()
 
 void UBDesktopAnnotationController::selectorActionReleased()
 {
+    UBApplication::mainWindow->actionSelector->setChecked(true);
     switchCursor(UBStylusTool::Selector);
 }
 
@@ -713,6 +678,7 @@ void UBDesktopAnnotationController::pointerActionPressed()
 
 void UBDesktopAnnotationController::pointerActionReleased()
 {
+    UBApplication::mainWindow->actionPointer->setChecked(true);
     switchCursor(UBStylusTool::Pointer);
 }
 
@@ -753,7 +719,6 @@ void UBDesktopAnnotationController::switchCursor(const int tool)
  */
 void UBDesktopAnnotationController::onDesktopPaletteMaximized()
 {
-
     // Pen
     UBActionPaletteButton* pPenButton = mDesktopPalette->getButtonFromAction(UBApplication::mainWindow->actionPen);
     if(NULL != pPenButton)
@@ -900,6 +865,16 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
             p.drawRect(tabsPalette);
         }
 
+#ifdef Q_WS_X11
+        //Rquiered only for compiz wm
+        //TODO. Window manager detection screen
+
+        if (UBApplication::boardController->paletteManager()->addItemPalette()->isVisible()) {
+            p.drawRect(UBApplication::boardController->paletteManager()->addItemPalette()->geometry());
+        }
+
+#endif
+
         p.end();
 
         // Then we add the annotations. We create another painter because we need to
@@ -944,14 +919,23 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent)
 
 void UBDesktopAnnotationController::refreshMask()
 {
-    if(mIsFullyTransparent
-            || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Selector
-            //Needed to work correctly when another actions on stylus are checked
-            || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Eraser
-            || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Pointer
-            || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Pen
-            || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Marker)
-    {
-        updateMask(true);
+    if (mTransparentDrawingScene && mTransparentDrawingView->isVisible()) {
+        if(mIsFullyTransparent
+                || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Selector
+                //Needed to work correctly when another actions on stylus are checked
+                || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Eraser
+                || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Pointer
+                || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Pen
+                || UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Marker)
+        {
+            updateMask(true);
+        }
     }
 }
+
+void UBDesktopAnnotationController::onToolClicked()
+{
+	mDesktopEraserPalette->hide();
+	mDesktopMarkerPalette->hide();
+	mDesktopPenPalette->hide();
+}
diff --git a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h
index 924156b..a3c3b23 100644
--- a/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h
+++ b/Sankore-3.1/src/desktop/UBDesktopAnnotationController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBUNINOTESWINDOWCONTROLLER_H_
 #define UBUNINOTESWINDOWCONTROLLER_H_
 
@@ -29,8 +36,8 @@ class UBDesktopPenPalette;
 class UBDesktopMarkerPalette;
 class UBDesktopEraserPalette;
 class UBActionPalette;
-//class UBKeyboardPalette;
 class UBMainWindow;
+class UBRightPalette;
 
 #define PROPERTY_PALETTE_TIMER      1000
 
@@ -47,7 +54,7 @@ class UBDesktopAnnotationController : public QObject
     Q_OBJECT;
 
     public:
-        UBDesktopAnnotationController(QObject *parent = 0);
+        UBDesktopAnnotationController(QObject *parent, UBRightPalette* rightPalette);
         virtual ~UBDesktopAnnotationController();
         void showWindow();
         void hideWindow();
@@ -111,6 +118,7 @@ class UBDesktopAnnotationController : public QObject
         void onDesktopPaletteMinimize();
         void onTransparentWidgetResized();
         void refreshMask();
+        void onToolClicked();
 
     private:
         void setAssociatedPalettePosition(UBActionPalette* palette, const QString& actionName);
diff --git a/Sankore-3.1/src/desktop/UBDesktopEraserPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopEraserPalette.cpp
deleted file mode 100644
index 276e34a..0000000
--- a/Sankore-3.1/src/desktop/UBDesktopEraserPalette.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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/>.
- */
-#include "UBDesktopEraserPalette.h"
-
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-#include "board/UBBoardController.h"
-#include "board/UBDrawingController.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBToolbarButtonGroup.h"
-
-
-#include "core/memcheck.h"
-
-UBDesktopEraserPalette::UBDesktopEraserPalette(QWidget *parent)
-    : UBPropertyPalette(Qt::Horizontal, parent)
-{
-    // Setup eraser width choice widget
-    QList<QAction *> eraserWidthActions;
-    eraserWidthActions.append(UBApplication::mainWindow->actionEraserSmall);
-    eraserWidthActions.append(UBApplication::mainWindow->actionEraserMedium);
-    eraserWidthActions.append(UBApplication::mainWindow->actionEraserLarge);
-
-    UBToolbarButtonGroup *eraserWidthChoice = new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, eraserWidthActions);
-
-    connect(eraserWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setEraserWidthIndex(int)));
-    connect(eraserWidthChoice, SIGNAL(activated(int)), this, SLOT(close()));
-    connect(UBApplication::mainWindow->actionEraseDesktopAnnotations, SIGNAL(triggered()), this, SLOT(close()));
-
-    eraserWidthChoice->displayText(false);
-    eraserWidthChoice->setCurrentIndex(UBSettings::settings()->eraserWidthIndex());
-
-    layout()->addWidget(eraserWidthChoice);
-
-    addAction(UBApplication::mainWindow->actionEraseDesktopAnnotations);
-}
diff --git a/Sankore-3.1/src/desktop/UBDesktopEraserPalette.h b/Sankore-3.1/src/desktop/UBDesktopEraserPalette.h
deleted file mode 100644
index 37dbd9b..0000000
--- a/Sankore-3.1/src/desktop/UBDesktopEraserPalette.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBDESKTOPERASERPALETTE_H
-#define UBDESKTOPERASERPALETTE_H
-
-#include <QtGui>
-
-#include "gui/UBPropertyPalette.h"
-
-class UBDesktopEraserPalette : public UBPropertyPalette
-{
-    public:
-        UBDesktopEraserPalette(QWidget *parent = 0);
-        virtual ~UBDesktopEraserPalette(){}
-};
-
-#endif // UBDESKTOPERASERPALETTE_H
diff --git a/Sankore-3.1/src/desktop/UBDesktopMarkerPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopMarkerPalette.cpp
deleted file mode 100644
index a27da65..0000000
--- a/Sankore-3.1/src/desktop/UBDesktopMarkerPalette.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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/>.
- */
-#include "UBDesktopMarkerPalette.h"
-
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-#include "board/UBDrawingController.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBToolbarButtonGroup.h"
-
-#include "core/memcheck.h"
-
-UBDesktopMarkerPalette::UBDesktopMarkerPalette(QWidget *parent)
-    : UBPropertyPalette(Qt::Horizontal, parent)
-{
-    // Setup color choice widget
-    QList<QAction *> colorActions;
-    colorActions.append(UBApplication::mainWindow->actionColor0);
-    colorActions.append(UBApplication::mainWindow->actionColor1);
-    colorActions.append(UBApplication::mainWindow->actionColor2);
-    colorActions.append(UBApplication::mainWindow->actionColor3);
-
-    UBToolbarButtonGroup *colorChoice = new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, colorActions);
-    colorChoice->displayText(false);
-
-    //connect(colorChoice, SIGNAL(activated(int)), this, SLOT(UBApplication::boardController->setColorIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), colorChoice, SLOT(setCurrentIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), this, SLOT(close()));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), colorChoice, SLOT(colorPaletteChanged()));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), this, SLOT(close()));
-
-    layout()->addWidget(colorChoice);
-
-    // Setup line width choice widget
-    QList<QAction *> lineWidthActions;
-    lineWidthActions.append(UBApplication::mainWindow->actionLineSmall);
-    lineWidthActions.append(UBApplication::mainWindow->actionLineMedium);
-    lineWidthActions.append(UBApplication::mainWindow->actionLineLarge);
-
-    UBToolbarButtonGroup *lineWidthChoice = new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, lineWidthActions);
-    lineWidthChoice->displayText(false);
-
-    connect(lineWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setLineWidthIndex(int)));
-    connect(lineWidthChoice, SIGNAL(activated(int)), this, SLOT(close()));
-    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), lineWidthChoice, SLOT(setCurrentIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), this, SLOT(close()));
-
-    layout()->addWidget(lineWidthChoice);
-}
diff --git a/Sankore-3.1/src/desktop/UBDesktopMarkerPalette.h b/Sankore-3.1/src/desktop/UBDesktopMarkerPalette.h
deleted file mode 100644
index fe0c056..0000000
--- a/Sankore-3.1/src/desktop/UBDesktopMarkerPalette.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBDESKTOPMARKERPALETTE_H
-#define UBDESKTOPMARKERPALETTE_H
-
-#include <QtGui>
-
-#include "gui/UBPropertyPalette.h"
-
-class UBDesktopMarkerPalette : public UBPropertyPalette
-{
-    public:
-        UBDesktopMarkerPalette(QWidget *parent = 0);
-        virtual ~UBDesktopMarkerPalette(){}
-};
-
-#endif // UBDESKTOPMARKERPALETTE_H
diff --git a/Sankore-3.1/src/desktop/UBDesktopPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopPalette.cpp
index 2ac196f..aba1ad1 100644
--- a/Sankore-3.1/src/desktop/UBDesktopPalette.cpp
+++ b/Sankore-3.1/src/desktop/UBDesktopPalette.cpp
@@ -1,9 +1,25 @@
 /*
- * UBDesktopPalette.cpp
+ * Copyright (C) 2012 Webdoc SA
  *
- *  Created on: Jan 9, 2009
- *      Author: julienbachmann
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBDesktopPalette.h"
 
 #include <QtGui>
@@ -21,14 +37,15 @@
 
 #include "core/memcheck.h"
 
-UBDesktopPalette::UBDesktopPalette(QWidget *parent)
+UBDesktopPalette::UBDesktopPalette(QWidget *parent, UBRightPalette* _rightPalette)
     : UBActionPalette(Qt::TopLeftCorner, parent)
-        , mShowHideAction(0)
-        , mDisplaySelectAction(0)
+    , mShowHideAction(NULL)
+    , mDisplaySelectAction(NULL)
+    , rightPalette(_rightPalette)
 {
     QList<QAction*> actions;
 
-    mActionUniboard = new QAction(QIcon(":/images/toolbar/board.png"), tr("Show Uniboard"), this);
+    mActionUniboard = new QAction(QIcon(":/images/toolbar/board.png"), tr("Show Open-Sankore"), this);
     connect(mActionUniboard, SIGNAL(triggered()), this, SIGNAL(uniboardClick()));
     actions << mActionUniboard;
 
@@ -57,9 +74,7 @@ UBDesktopPalette::UBDesktopPalette(QWidget *parent)
     mShowHideAction->setCheckable(true);
 
     connect(mShowHideAction, SIGNAL(triggered(bool)), this, SLOT(showHideClick(bool)));
-#ifndef Q_WS_X11
     actions << mShowHideAction;
-#endif
 
     setActions(actions);
     setButtonIconSize(QSize(42, 42));
@@ -74,6 +89,8 @@ UBDesktopPalette::UBDesktopPalette(QWidget *parent)
     connect(this, SIGNAL(maximizeStart()), this, SLOT(maximizeMe()));
     connect(this, SIGNAL(minimizeStart(eMinimizedLocation)), this, SLOT(minimizeMe(eMinimizedLocation)));
     setMinimizePermission(true);
+
+    connect(rightPalette, SIGNAL(resized()), this, SLOT(parentResized()));
 }
 
 
@@ -111,6 +128,9 @@ void UBDesktopPalette::updateShowHideState(bool pShowEnabled)
         mShowHideAction->setToolTip(tr("Show Board on Secondary Screen"));
     else
         mShowHideAction->setToolTip(tr("Show Desktop on Secondary Screen"));
+
+    if (pShowEnabled)
+        raise();
 }
 
 
@@ -219,3 +239,20 @@ QPoint UBDesktopPalette::buttonPos(QAction *action)
 
     return p;
 }
+
+
+int UBDesktopPalette::getParentRightOffset()
+{
+    return rightPalette->width();
+}
+
+void UBDesktopPalette::parentResized()
+{
+    QPoint p = pos();
+    if (minimizedLocation() == eMinimizedLocation_Right)
+    {
+        p.setX(parentWidget()->width() - getParentRightOffset() -width());
+    }
+
+    moveInsideParent(p);
+}
diff --git a/Sankore-3.1/src/desktop/UBDesktopPalette.h b/Sankore-3.1/src/desktop/UBDesktopPalette.h
index cd22d43..ca3c340 100644
--- a/Sankore-3.1/src/desktop/UBDesktopPalette.h
+++ b/Sankore-3.1/src/desktop/UBDesktopPalette.h
@@ -1,10 +1,25 @@
 /*
- * UNWindow.h
+ * Copyright (C) 2012 Webdoc SA
  *
- *  Created on: Jan 9, 2009
- *      Author: julienbachmann
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBUNINOTESWINDOW_H_
 #define UBUNINOTESWINDOW_H_
 #include <QtGui>
@@ -12,6 +27,7 @@
 #include <QHideEvent>
 
 #include "gui/UBActionPalette.h"
+#include "gui/UBRightPalette.h"
 
 /**
  * The uninotes window. This window is controlled by UBUninotesWindowController.
@@ -21,7 +37,7 @@ class UBDesktopPalette : public UBActionPalette
     Q_OBJECT;
 
     public:
-        UBDesktopPalette(QWidget *parent = 0);
+        UBDesktopPalette(QWidget *parent, UBRightPalette* rightPalette);
         virtual ~UBDesktopPalette();
 
         void disappearForCapture();
@@ -41,17 +57,19 @@ class UBDesktopPalette : public UBActionPalette
     public slots:
 
         void showHideClick(bool checked);
-
         void updateShowHideState(bool pShowEnabled);
         void setShowHideButtonVisible(bool visible);
         void setDisplaySelectButtonVisible(bool show);
-	void minimizeMe(eMinimizedLocation location);
+	    void minimizeMe(eMinimizedLocation location);
         void maximizeMe();
+        void parentResized();
 
 protected:
         void showEvent(QShowEvent *event);
         void hideEvent(QHideEvent *event);
 
+        virtual int getParentRightOffset();
+
     private:
         QAction *mShowHideAction;
         QAction *mDisplaySelectAction;
@@ -60,6 +78,9 @@ protected:
         QAction *mActionCustomSelect;
         QAction* mActionTest;
 
+
+        UBRightPalette* rightPalette;
+
     signals:
         void stylusToolChanged(int tool);
 
diff --git a/Sankore-3.1/src/desktop/UBDesktopPenPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopPenPalette.cpp
deleted file mode 100644
index 6665340..0000000
--- a/Sankore-3.1/src/desktop/UBDesktopPenPalette.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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/>.
- */
-#include "UBDesktopPenPalette.h"
-
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-#include "board/UBDrawingController.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBToolbarButtonGroup.h"
-
-#include "core/memcheck.h"
-
-UBDesktopPenPalette::UBDesktopPenPalette(QWidget *parent)
-    : UBPropertyPalette(Qt::Horizontal, parent)
-{
-    // Setup color choice widget
-    QList<QAction *> colorActions;
-    colorActions.append(UBApplication::mainWindow->actionColor0);
-    colorActions.append(UBApplication::mainWindow->actionColor1);
-    colorActions.append(UBApplication::mainWindow->actionColor2);
-    colorActions.append(UBApplication::mainWindow->actionColor3);
-
-    UBToolbarButtonGroup *colorChoice =
-            new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, colorActions);
-
-    colorChoice->displayText(false);
-
-    //connect(colorChoice, SIGNAL(activated(int)), this, SLOT(UBApplication::boardController->setColorIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), colorChoice, SLOT(setCurrentIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), this, SLOT(close()));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), colorChoice, SLOT(colorPaletteChanged()));
-    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), this, SLOT(close()));
-
-    layout()->addWidget(colorChoice);
-
-    // Setup line width choice widget
-    QList<QAction *> lineWidthActions;
-    lineWidthActions.append(UBApplication::mainWindow->actionLineSmall);
-    lineWidthActions.append(UBApplication::mainWindow->actionLineMedium);
-    lineWidthActions.append(UBApplication::mainWindow->actionLineLarge);
-
-    UBToolbarButtonGroup *lineWidthChoice =
-            new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, lineWidthActions);
-    lineWidthChoice->displayText(false);
-
-    connect(lineWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setLineWidthIndex(int)));
-    connect(lineWidthChoice, SIGNAL(activated(int)), this, SLOT(close()));
-    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), lineWidthChoice, SLOT(setCurrentIndex(int)));
-    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), this, SLOT(close()));
-
-    onParentMaximized();
-
-    layout()->addWidget(lineWidthChoice);
-}
-
-void UBDesktopPenPalette::onButtonReleased()
-{
-    qDebug() << "Pen palette released!";
-    // trigger the related action
-
-
-    // Close the palette
-    close();
-}
-
-/**
- * \brief Disconnect the released event of the buttons
- */
-void UBDesktopPenPalette::onParentMinimized()
-{
-    for(int i = 0; i < mButtons.size(); i++)
-    {
-        disconnect(mButtons.at(i), SIGNAL(released()), this, SLOT(onButtonReleased()));
-    }
-}
-
-/**
- * \brief Connect the released event of the buttons
- */
-void UBDesktopPenPalette::onParentMaximized()
-{
-    for(int i = 0; i < mButtons.size(); i++)
-    {
-        connect(mButtons.at(i), SIGNAL(released()), this, SLOT(onButtonReleased()));
-    }
-}
-
-void UBDesktopPenPalette::resizeEvent(QResizeEvent *)
-{
-    qDebug("pen palette resized!");
-}
diff --git a/Sankore-3.1/src/desktop/UBDesktopPenPalette.h b/Sankore-3.1/src/desktop/UBDesktopPenPalette.h
deleted file mode 100644
index 6b4ced5..0000000
--- a/Sankore-3.1/src/desktop/UBDesktopPenPalette.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBDESKTOPPENPALETTE_H
-#define UBDESKTOPPENPALETTE_H
-
-#include <QtGui>
-#include <QResizeEvent>
-
-#include "gui/UBPropertyPalette.h"
-
-class UBDesktopPenPalette : public UBPropertyPalette
-{
-    Q_OBJECT
-    public:
-        UBDesktopPenPalette(QWidget *parent = 0);
-        virtual ~UBDesktopPenPalette(){}
-
-    public slots:
-        void onParentMinimized();
-        void onParentMaximized();
-
-    protected:
-        void resizeEvent(QResizeEvent *);
-
-    private slots:
-        void onButtonReleased();
-};
-
-#endif // UBDESKTOPPENPALETTE_H
diff --git a/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp
new file mode 100644
index 0000000..83f1c3f
--- /dev/null
+++ b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.cpp
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "gui/UBRightPalette.h"
+
+#include "core/memcheck.h"
+
+UBDesktopPropertyPalette::UBDesktopPropertyPalette(QWidget *parent, UBRightPalette* _rightPalette)
+    :UBPropertyPalette(Qt::Horizontal, parent)
+    ,rightPalette(_rightPalette)
+{}
+
+int UBDesktopPropertyPalette::getParentRightOffset()
+{
+    return rightPalette->width();
+}
+
+
+UBDesktopPenPalette::UBDesktopPenPalette(QWidget *parent, UBRightPalette* rightPalette)
+    : UBDesktopPropertyPalette(parent, rightPalette)
+{
+    // Setup color choice widget
+    QList<QAction *> colorActions;
+    colorActions.append(UBApplication::mainWindow->actionColor0);
+    colorActions.append(UBApplication::mainWindow->actionColor1);
+    colorActions.append(UBApplication::mainWindow->actionColor2);
+    colorActions.append(UBApplication::mainWindow->actionColor3);
+
+    UBToolbarButtonGroup *colorChoice =
+            new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, colorActions);
+
+    colorChoice->displayText(false);
+
+    //connect(colorChoice, SIGNAL(activated(int)), this, SLOT(UBApplication::boardController->setColorIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), colorChoice, SLOT(setCurrentIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), this, SLOT(close()));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), colorChoice, SLOT(colorPaletteChanged()));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), this, SLOT(close()));
+
+    layout()->addWidget(colorChoice);
+
+    // Setup line width choice widget
+    QList<QAction *> lineWidthActions;
+    lineWidthActions.append(UBApplication::mainWindow->actionLineSmall);
+    lineWidthActions.append(UBApplication::mainWindow->actionLineMedium);
+    lineWidthActions.append(UBApplication::mainWindow->actionLineLarge);
+
+    UBToolbarButtonGroup *lineWidthChoice =
+            new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, lineWidthActions);
+    lineWidthChoice->displayText(false);
+
+    connect(lineWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setLineWidthIndex(int)));
+    connect(lineWidthChoice, SIGNAL(activated(int)), this, SLOT(close()));
+    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), lineWidthChoice, SLOT(setCurrentIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), this, SLOT(close()));
+
+    onParentMaximized();
+
+    layout()->addWidget(lineWidthChoice);
+}
+
+
+void UBDesktopPenPalette::onButtonReleased()
+{
+    close();
+}
+
+/**
+ * \brief Disconnect the released event of the buttons
+ */
+void UBDesktopPenPalette::onParentMinimized()
+{
+    for(int i = 0; i < mButtons.size(); i++)
+    {
+        disconnect(mButtons.at(i), SIGNAL(released()), this, SLOT(onButtonReleased()));
+    }
+}
+
+/**
+ * \brief Connect the released event of the buttons
+ */
+void UBDesktopPenPalette::onParentMaximized()
+{
+    for(int i = 0; i < mButtons.size(); i++)
+    {
+        connect(mButtons.at(i), SIGNAL(released()), this, SLOT(onButtonReleased()));
+    }
+}
+
+
+UBDesktopEraserPalette::UBDesktopEraserPalette(QWidget *parent, UBRightPalette* rightPalette)
+    : UBDesktopPropertyPalette(parent, rightPalette)
+{
+    // Setup eraser width choice widget
+    QList<QAction *> eraserWidthActions;
+    eraserWidthActions.append(UBApplication::mainWindow->actionEraserSmall);
+    eraserWidthActions.append(UBApplication::mainWindow->actionEraserMedium);
+    eraserWidthActions.append(UBApplication::mainWindow->actionEraserLarge);
+
+    UBToolbarButtonGroup *eraserWidthChoice = new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, eraserWidthActions);
+
+    connect(eraserWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setEraserWidthIndex(int)));
+    connect(eraserWidthChoice, SIGNAL(activated(int)), this, SLOT(close()));
+    connect(UBApplication::mainWindow->actionEraseDesktopAnnotations, SIGNAL(triggered()), this, SLOT(close()));
+
+    eraserWidthChoice->displayText(false);
+    eraserWidthChoice->setCurrentIndex(UBSettings::settings()->eraserWidthIndex());
+
+    layout()->addWidget(eraserWidthChoice);
+
+    addAction(UBApplication::mainWindow->actionEraseDesktopAnnotations);
+}
+
+
+UBDesktopMarkerPalette::UBDesktopMarkerPalette(QWidget *parent, UBRightPalette* rightPalette)
+    : UBDesktopPropertyPalette(parent, rightPalette)
+{
+    // Setup color choice widget
+    QList<QAction *> colorActions;
+    colorActions.append(UBApplication::mainWindow->actionColor0);
+    colorActions.append(UBApplication::mainWindow->actionColor1);
+    colorActions.append(UBApplication::mainWindow->actionColor2);
+    colorActions.append(UBApplication::mainWindow->actionColor3);
+
+    UBToolbarButtonGroup *colorChoice = new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, colorActions);
+    colorChoice->displayText(false);
+
+    //connect(colorChoice, SIGNAL(activated(int)), this, SLOT(UBApplication::boardController->setColorIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), colorChoice, SLOT(setCurrentIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorIndexChanged(int)), this, SLOT(close()));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), colorChoice, SLOT(colorPaletteChanged()));
+    connect(UBDrawingController::drawingController(), SIGNAL(colorPaletteChanged()), this, SLOT(close()));
+
+    layout()->addWidget(colorChoice);
+
+    // Setup line width choice widget
+    QList<QAction *> lineWidthActions;
+    lineWidthActions.append(UBApplication::mainWindow->actionLineSmall);
+    lineWidthActions.append(UBApplication::mainWindow->actionLineMedium);
+    lineWidthActions.append(UBApplication::mainWindow->actionLineLarge);
+
+    UBToolbarButtonGroup *lineWidthChoice = new UBToolbarButtonGroup(UBApplication::mainWindow->boardToolBar, lineWidthActions);
+    lineWidthChoice->displayText(false);
+
+    connect(lineWidthChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setLineWidthIndex(int)));
+    connect(lineWidthChoice, SIGNAL(activated(int)), this, SLOT(close()));
+    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), lineWidthChoice, SLOT(setCurrentIndex(int)));
+    connect(UBDrawingController::drawingController(), SIGNAL(lineWidthIndexChanged(int)), this, SLOT(close()));
+
+    layout()->addWidget(lineWidthChoice);
+}
+
diff --git a/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h
new file mode 100644
index 0000000..f6d9ebd
--- /dev/null
+++ b/Sankore-3.1/src/desktop/UBDesktopPropertyPalette.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBDESKTOPPENPALETTE_H
+#define UBDESKTOPPENPALETTE_H
+
+#include <QtGui>
+#include <QResizeEvent>
+
+#include "gui/UBPropertyPalette.h"
+
+class UBRightPalette;
+
+class UBDesktopPropertyPalette : public UBPropertyPalette
+{
+    Q_OBJECT
+
+    public:
+        UBDesktopPropertyPalette(QWidget *parent, UBRightPalette* _rightPalette);
+    private:
+        UBRightPalette* rightPalette;
+    protected:
+        virtual int getParentRightOffset();
+};
+
+class UBDesktopPenPalette : public UBDesktopPropertyPalette
+{
+    Q_OBJECT
+    public:
+        UBDesktopPenPalette(QWidget *parent, UBRightPalette* rightPalette);
+        virtual ~UBDesktopPenPalette(){}
+    public slots:
+        void onParentMinimized();
+        void onParentMaximized();
+
+    private slots:
+        void onButtonReleased();
+
+};
+
+class UBDesktopEraserPalette : public UBDesktopPropertyPalette
+{
+    public:
+        UBDesktopEraserPalette(QWidget *parent, UBRightPalette* rightPalette);
+        virtual ~UBDesktopEraserPalette(){}
+};
+
+class UBDesktopMarkerPalette : public UBDesktopPropertyPalette
+{
+    public:
+        UBDesktopMarkerPalette(QWidget *parent, UBRightPalette* rightPalette);
+        virtual ~UBDesktopMarkerPalette(){}
+};
+
+
+#endif // UBDESKTOPPENPALETTE_H
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture.h b/Sankore-3.1/src/desktop/UBWindowCapture.h
index f1d544f..81ffcee 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture.h
+++ b/Sankore-3.1/src/desktop/UBWindowCapture.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWINDOWCAPTURE_H_
 #define UBWINDOWCAPTURE_H_
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp
index 61b65ce..53ca5ae 100644
--- a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp
+++ b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBWindowCaptureDelegate_win.h"
 #include <windows.h>
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h
index 2b194ba..2a3a3b1 100644
--- a/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h
+++ b/Sankore-3.1/src/desktop/UBWindowCaptureDelegate_win.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBWINDOWCAPTUREDELEGATE_H_
 #define UBWINDOWCAPTUREDELEGATE_H_
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp b/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp
index 124fc1c..f28dbc2 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp
+++ b/Sankore-3.1/src/desktop/UBWindowCapture_linux.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWindowCapture.h"
 #include "UBDesktopAnnotationController.h"
 
diff --git a/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp b/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp
index 5863d70..433d9f3 100644
--- a/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp
+++ b/Sankore-3.1/src/desktop/UBWindowCapture_win.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWindowCapture.h"
 
 #include "UBWindowCaptureDelegate_win.h"
diff --git a/Sankore-3.1/src/desktop/desktop.pri b/Sankore-3.1/src/desktop/desktop.pri
index 642e014..5fb3934 100644
--- a/Sankore-3.1/src/desktop/desktop.pri
+++ b/Sankore-3.1/src/desktop/desktop.pri
@@ -2,16 +2,12 @@ HEADERS += src/desktop/UBDesktopPalette.h \
            src/desktop/UBDesktopAnnotationController.h \
            src/desktop/UBCustomCaptureWindow.h \
            src/desktop/UBWindowCapture.h \
-    src/desktop/UBDesktopPenPalette.h \
-    src/desktop/UBDesktopMarkerPalette.h \
-    src/desktop/UBDesktopEraserPalette.h
+		   src/desktop/UBDesktopPropertyPalette.h
 
 SOURCES += src/desktop/UBDesktopPalette.cpp \
            src/desktop/UBDesktopAnnotationController.cpp \
            src/desktop/UBCustomCaptureWindow.cpp \
-    src/desktop/UBDesktopPenPalette.cpp \
-    src/desktop/UBDesktopMarkerPalette.cpp \
-    src/desktop/UBDesktopEraserPalette.cpp
+    	   src/desktop/UBDesktopPropertyPalette.cpp
 
 win32 { 
     HEADERS += src/desktop/UBWindowCaptureDelegate_win.h
@@ -19,7 +15,7 @@ win32 {
                src/desktop/UBWindowCaptureDelegate_win.cpp
 }
 
-macx:SOURCES += src/desktop/UBWindowCapture_mac.mm
+macx:OBJECTIVE_SOURCES += src/desktop/UBWindowCapture_mac.mm
 
 linux-g++:SOURCES += src/desktop/UBWindowCapture_linux.cpp
 linux-g++-32:SOURCES += src/desktop/UBWindowCapture_linux.cpp
diff --git a/Sankore-3.1/src/document/UBDocumentContainer.cpp b/Sankore-3.1/src/document/UBDocumentContainer.cpp
new file mode 100644
index 0000000..81899b8
--- /dev/null
+++ b/Sankore-3.1/src/document/UBDocumentContainer.cpp
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBDocumentContainer.h"
+#include "adaptors/UBThumbnailAdaptor.h"
+#include "core/UBPersistenceManager.h"
+#include "core/memcheck.h"
+
+
+UBDocumentContainer::UBDocumentContainer(QObject * parent)
+    :QObject(parent)
+    ,mCurrentDocument(NULL)
+{}
+
+UBDocumentContainer::~UBDocumentContainer()
+{
+    foreach(const QPixmap* pm, mDocumentThumbs){
+        delete pm;
+        pm = NULL;
+    }
+}
+
+void UBDocumentContainer::setDocument(UBDocumentProxy* document, bool forceReload)
+{
+    if (mCurrentDocument != document || forceReload)
+    {
+        mCurrentDocument = document;
+        reloadThumbnails();
+        emit documentSet(mCurrentDocument);
+    }
+}
+
+void UBDocumentContainer::duplicatePages(QList<int>& pageIndexes)
+{
+    int offset = 0;
+    foreach(int sceneIndex, pageIndexes)
+    {
+        UBPersistenceManager::persistenceManager()->duplicateDocumentScene(mCurrentDocument, sceneIndex + offset);
+        offset++;
+    }
+}
+
+bool UBDocumentContainer::movePageToIndex(int source, int target)
+{
+    if (source==0)
+    {
+        // Title page - cant be moved
+        return false;
+    }
+    UBPersistenceManager::persistenceManager()->moveSceneToIndex(mCurrentDocument, source, target);
+    deleteThumbPage(source);
+    insertThumbPage(target);
+    emit documentThumbnailsUpdated(this);
+    return true;
+}
+
+void UBDocumentContainer::deletePages(QList<int>& pageIndexes)
+{
+    UBPersistenceManager::persistenceManager()->deleteDocumentScenes(mCurrentDocument, pageIndexes);
+    int offset = 0;
+    foreach(int index, pageIndexes)
+    {
+        deleteThumbPage(index - offset);
+        offset++;
+    }
+    emit documentThumbnailsUpdated(this);
+}
+
+void UBDocumentContainer::addPage(int index)
+{
+    UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mCurrentDocument, index);
+    insertThumbPage(index);
+    emit documentThumbnailsUpdated(this);
+}
+
+void UBDocumentContainer::updatePage(int index)
+{
+    updateThumbPage(index);
+    emit documentThumbnailsUpdated(this);
+}
+
+void UBDocumentContainer::deleteThumbPage(int index)
+{
+    mDocumentThumbs.removeAt(index);
+}
+
+void UBDocumentContainer::updateThumbPage(int index)
+{
+    mDocumentThumbs[index] = UBThumbnailAdaptor::get(mCurrentDocument, index);
+    emit documentPageUpdated(index);
+}
+
+void UBDocumentContainer::insertThumbPage(int index)
+{
+    mDocumentThumbs.insert(index, UBThumbnailAdaptor::get(mCurrentDocument, index));
+}
+
+void UBDocumentContainer::reloadThumbnails()
+{
+    if (mCurrentDocument)
+    {
+        UBThumbnailAdaptor::load(mCurrentDocument, mDocumentThumbs);
+        qDebug() << "Reloading Thumbnails. new mDocumentThumbs size: " << mDocumentThumbs.size();
+        emit documentThumbnailsUpdated(this);
+    }
+}
+
+int UBDocumentContainer::pageFromSceneIndex(int sceneIndex)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return sceneIndex;
+    return sceneIndex+1;
+}
+
+int UBDocumentContainer::sceneIndexFromPage(int page)
+{
+    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+        return page;
+    return page-1;
+}
+
+void UBDocumentContainer::addEmptyThumbPage()
+{
+	const QPixmap* pThumb = new QPixmap();
+	mDocumentThumbs.append(pThumb);
+}
diff --git a/Sankore-3.1/src/document/UBDocumentContainer.h b/Sankore-3.1/src/document/UBDocumentContainer.h
new file mode 100644
index 0000000..4481e31
--- /dev/null
+++ b/Sankore-3.1/src/document/UBDocumentContainer.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBDOCUMENTCONTAINER_H_
+#define UBDOCUMENTCONTAINER_H_
+
+#include <QtGui>
+#include "UBDocumentProxy.h"
+
+class UBDocumentContainer : public QObject
+{
+    Q_OBJECT
+
+    public:
+        UBDocumentContainer(QObject * parent = 0);
+        virtual ~UBDocumentContainer();
+
+        void setDocument(UBDocumentProxy* document, bool forceReload = false);
+
+        UBDocumentProxy* selectedDocument(){return mCurrentDocument;}
+        int pageCount(){return mDocumentThumbs.size();}
+        const QPixmap* pageAt(int index){return mDocumentThumbs[index];}
+
+        static int pageFromSceneIndex(int sceneIndex);    
+        static int sceneIndexFromPage(int sceneIndex); 
+
+        void duplicatePages(QList<int>& pageIndexes);
+        bool movePageToIndex(int source, int target);
+        void deletePages(QList<int>& pageIndexes);
+        void addPage(int index);
+        void updatePage(int index);
+        void addEmptyThumbPage();
+
+    private:
+        UBDocumentProxy* mCurrentDocument;
+        QList<const QPixmap*>  mDocumentThumbs;
+
+   
+    protected:
+        void deleteThumbPage(int index);
+        void updateThumbPage(int index);
+        void insertThumbPage(int index);
+        void reloadThumbnails();
+
+    signals:
+        void documentSet(UBDocumentProxy* document);
+        void documentPageUpdated(int index);
+        void documentThumbnailsUpdated(UBDocumentContainer* source);
+};
+
+
+#endif /* UBDOCUMENTPROXY_H_ */
diff --git a/Sankore-3.1/src/document/UBDocumentController.cpp b/Sankore-3.1/src/document/UBDocumentController.cpp
index 96650d0..00ae74b 100644
--- a/Sankore-3.1/src/document/UBDocumentController.cpp
+++ b/Sankore-3.1/src/document/UBDocumentController.cpp
@@ -1,1646 +1,1714 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#include "UBDocumentController.h"
-
-#include <QtCore>
-#include <QtGui>
-
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBStringUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBDocumentManager.h"
-#include "core/UBApplicationController.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-
-#include "adaptors/UBExportPDF.h"
-#include "adaptors/UBThumbnailAdaptor.h"
-
-#include "adaptors/UBMetadataDcSubsetAdaptor.h"
-
-#include "board/UBBoardController.h"
-#include "board/UBBoardPaletteManager.h"
-#include "board/UBDrawingController.h"
-
-
-#include "gui/UBThumbnailView.h"
-#include "gui/UBDocumentTreeWidget.h"
-#include "gui/UBMousePressFilter.h"
-#include "gui/UBMessageWindow.h"
-#include "gui/UBMainWindow.h"
-#include "gui/UBDocumentToolsPalette.h"
-
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsSvgItem.h"
-#include "domain/UBGraphicsPixmapItem.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "ui_documents.h"
-#include "ui_mainWindow.h"
-
-#include "core/memcheck.h"
-
-UBDocumentController::UBDocumentController(UBMainWindow* mainWindow)
-   : QObject(mainWindow->centralWidget())
-   , mSelectionType(None)
-   , mParentWidget(mainWindow->centralWidget())
-   , mBoardController(UBApplication::boardController)
-   , mDocumentUI(0)
-   , mMainWindow(mainWindow)
-   , mDocumentWidget(0)
-   , mIsClosing(false)
-   , mToolsPalette(0)
-   , mToolsPalettePositionned(false)
-   , mTrashTi(0)
-{
-    setupViews();
-    setupToolbar();
-    this->selectDocument(UBApplication::boardController->activeDocument());
-    connect(this, SIGNAL(exportDone()), mMainWindow, SLOT(onExportDone()));
-    connect(mMainWindow->actionNewPage, SIGNAL(triggered()), this, SLOT(reloadThumbs()));
-}
-
-void UBDocumentController::reloadThumbs()
-{
-    mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
-}
-
-UBDocumentController::~UBDocumentController()
-{
-   if (mDocumentUI)
-       delete mDocumentUI;
-}
-
-
-void UBDocumentController::createNewDocument()
-{
-    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
-
-    if (group)
-    {
-        UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(group->groupName());
-
-        selectDocument(document);
-    }
-}
-
-
-UBDocumentProxyTreeItem* UBDocumentController::findDocument(UBDocumentProxy* proxy)
-{
-    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
-
-    while (*it)
-    {
-        UBDocumentProxyTreeItem *treeItem = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
-
-        if (treeItem && treeItem->proxy() == proxy)
-            return treeItem;
-
-        ++it;
-    }
-
-    return 0;
-}
-
-
-void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument)
-{
-    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
-
-    mDocumentUI->documentTreeWidget->clearSelection();
-    mDocumentUI->documentTreeWidget->setCurrentItem(0);
-
-    UBDocumentProxyTreeItem* selected = 0;
-
-    while (*it)
-    {
-        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
-
-        if (pi)
-        {
-            if (setAsCurrentDocument)
-                pi->setIcon(0, QIcon(""));
-
-            pi->setSelected(false);
-
-            if (pi->proxy() == proxy)
-            {
-                selected = pi;
-            }
-        }
-
-        ++it;
-    }
-
-    if (selected)
-    {
-        selected->setSelected(true);
-
-        selected->parent()->setExpanded(true);
-        selected->setText(0, proxy->name());
-
-        if (setAsCurrentDocument)
-        {
-            selected->setIcon(0, QIcon(":/images/currentDocument.png"));
-            if (proxy != mBoardController->activeDocument())
-                mBoardController->setActiveDocumentScene(proxy);
-        }
-
-        mDocumentUI->documentTreeWidget->setCurrentItem(selected);
-
-        mDocumentUI->documentTreeWidget->scrollToItem(selected);
-
-        mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
-        refreshDocumentThumbnailsView();
-
-        mSelectionType = Document;
-    }
-}
-
-
-void UBDocumentController::createNewDocumentGroup()
-{
-    UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
-    int i = 1;
-    QString newFolderName = tr("New Folder");
-    while (allGroupNames().contains(newFolderName))
-    {
-        newFolderName = tr("New Folder") + " " + QVariant(i++).toString();
-    }
-    docGroupItem->setGroupName(newFolderName);
-
-    int trashIndex =  mDocumentUI->documentTreeWidget->indexOfTopLevelItem(mTrashTi);
-
-    mDocumentUI->documentTreeWidget->insertTopLevelItem(trashIndex, docGroupItem);
-    mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
-    mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
-}
-
-
-UBDocumentProxy* UBDocumentController::selectedDocumentProxy()
-{
-    UBDocumentProxyTreeItem* proxyItem = selectedDocumentProxyTreeItem();
-    return proxyItem ? proxyItem->proxy() : 0;
-}
-
-
-UBDocumentProxyTreeItem* UBDocumentController::selectedDocumentProxyTreeItem()
-{
-    if (mDocumentUI && mDocumentUI->documentTreeWidget)
-    {
-        QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
-
-        foreach (QTreeWidgetItem * item, selectedItems)
-        {
-            UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
-
-            if (proxyItem)
-            {
-                return proxyItem;
-            }
-        }
-    }
-
-    return 0;
-}
-
-
-UBDocumentGroupTreeItem* UBDocumentController::selectedDocumentGroupTreeItem()
-{
-    QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
-
-    foreach (QTreeWidgetItem * item, selectedItems)
-    {
-        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-
-        if (groupItem)
-        {
-            return groupItem;
-        }
-        else
-        {
-            UBDocumentGroupTreeItem* parent = dynamic_cast<UBDocumentGroupTreeItem*>(item->parent());
-            if (parent)
-            {
-                return parent;
-            }
-        }
-    }
-
-    return 0;
-}
-
-
-void UBDocumentController::itemSelectionChanged()
-{
-    refreshDocumentThumbnailsView();
-
-    if (selectedDocumentProxy())
-        mSelectionType = Document;
-    else if (selectedDocumentGroupTreeItem())
-        mSelectionType = Folder;
-    else
-        mSelectionType = None;
-
-    selectionChanged();
-}
-
-
-void UBDocumentController::refreshDocumentThumbnailsView()
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    QList<QGraphicsItem*> items;
-    QList<QUrl> itemsPath;
-
-    UBDocumentProxy *proxy = selectedDocumentProxy();
-    QGraphicsPixmapItem *selection = 0;
-
-    QStringList labels;
-
-    if (proxy)
-    {
-        mCurrentDocument = proxy;
-
-        for (int i = 0; i < mDocumentThumbs.count(); i++)
-        {
-            QPixmap pix = mDocumentThumbs.at(i);
-            QGraphicsPixmapItem *pixmapItem = new UBSceneThumbnailPixmap(pix, proxy, i); // deleted by the tree widget
-
-            if (proxy == mBoardController->activeDocument() && mBoardController->activeSceneIndex() == i)
-            {
-                selection = pixmapItem;
-            }
-
-            items << pixmapItem;
-            labels << tr("Page %1").arg(UBApplication::boardController->pageFromSceneIndex(i));
-
-            itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBApplication::boardController->pageFromSceneIndex(i))));
-        }
-    }
-
-    mDocumentUI->thumbnailWidget->setGraphicsItems(items, itemsPath, labels, UBApplication::mimeTypeUniboardPage);
-
-    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
-    if (proxyTi && (proxyTi->parent() == mTrashTi))
-        mDocumentUI->thumbnailWidget->setDragEnabled(false);
-    else
-        mDocumentUI->thumbnailWidget->setDragEnabled(true);
-
-    mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10);
-
-    if (selection) {
-        disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
-        UBSceneThumbnailPixmap *currentScene = dynamic_cast<UBSceneThumbnailPixmap*>(selection);
-        if (currentScene)
-            mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex());
-        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
-    }
-
-    emit refreshThumbnails();
-    QApplication::restoreOverrideCursor();
-}
-
-
-void UBDocumentController::setupViews()
-{
-
-    if (!mDocumentWidget)
-    {
-        mDocumentWidget = new QWidget(mMainWindow->centralWidget());
-        mMainWindow->addDocumentsWidget(mDocumentWidget);
-
-        mDocumentUI = new Ui::documents();
-
-        mDocumentUI->setupUi(mDocumentWidget);
-
-        int thumbWidth = UBSettings::settings()->documentThumbnailWidth->get().toInt();
-
-        mDocumentUI->documentZoomSlider->setValue(thumbWidth);
-        mDocumentUI->thumbnailWidget->setThumbnailWidth(thumbWidth);
-
-        connect(mDocumentUI->documentZoomSlider, SIGNAL(valueChanged(int)), this,
-                SLOT(documentZoomSliderValueChanged(int)));
-
-        connect(mMainWindow->actionOpen, SIGNAL(triggered()), this, SLOT(openSelectedItem()));
-        connect(mMainWindow->actionNewFolder, SIGNAL(triggered()), this, SLOT(createNewDocumentGroup()));
-        connect(mMainWindow->actionNewDocument, SIGNAL(triggered()), this, SLOT(createNewDocument()));
-
-        connect(mMainWindow->actionImport, SIGNAL(triggered(bool)), this, SLOT(importFile()));
-
-        QMenu* addMenu = new QMenu(mDocumentWidget);
-        mAddFolderOfImagesAction = addMenu->addAction(tr("Add Folder of Images"));
-        mAddImagesAction = addMenu->addAction(tr("Add Images"));
-        mAddFileToDocumentAction = addMenu->addAction(tr("Add Pages from File"));
-
-        connect(mAddFolderOfImagesAction, SIGNAL(triggered(bool)), this, SLOT(addFolderOfImages()));
-        connect(mAddFileToDocumentAction, SIGNAL(triggered(bool)), this, SLOT(addFileToDocument()));
-        connect(mAddImagesAction, SIGNAL(triggered(bool)), this, SLOT(addImages()));
-
-        foreach (QWidget* menuWidget,  mMainWindow->actionDocumentAdd->associatedWidgets())
-        {
-            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
-
-            if (tb && !tb->menu())
-            {
-                tb->setObjectName("ubButtonMenu");
-                tb->setPopupMode(QToolButton::InstantPopup);
-
-                QMenu* menu = new QMenu(mDocumentWidget);
-
-                menu->addAction(mAddFolderOfImagesAction);
-                menu->addAction(mAddImagesAction);
-                menu->addAction(mAddFileToDocumentAction);
-
-                tb->setMenu(menu);
-            }
-        }
-
-        QMenu* exportMenu = new QMenu(mDocumentWidget);
-
-        UBDocumentManager *documentManager = UBDocumentManager::documentManager();
-        for (int i = 0; i < documentManager->supportedExportAdaptors().length(); i++)
-        {
-            UBExportAdaptor* adaptor = documentManager->supportedExportAdaptors()[i];
-            QAction *currentExportAction = exportMenu->addAction(adaptor->exportName());
-            currentExportAction->setData(i);
-            connect(currentExportAction, SIGNAL(triggered (bool)), this, SLOT(exportDocument()));
-            exportMenu->addAction(currentExportAction);
-        }
-
-        foreach (QWidget* menuWidget,  mMainWindow->actionExport->associatedWidgets())
-        {
-            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
-
-            if (tb && !tb->menu())
-            {
-                tb->setObjectName("ubButtonMenu");
-                tb->setPopupMode(QToolButton::InstantPopup);
-
-                tb->setMenu(exportMenu);
-            }
-        }
-
-#ifdef Q_WS_MAC
-        mMainWindow->actionDelete->setShortcut(QKeySequence(Qt::Key_Backspace));
-#endif
-
-        connect(mMainWindow->actionDelete, SIGNAL(triggered()), this, SLOT(deleteSelectedItem()));
-        connect(mMainWindow->actionDuplicate, SIGNAL(triggered()), this, SLOT(duplicateSelectedItem()));
-        connect(mMainWindow->actionRename, SIGNAL(triggered()), this, SLOT(renameSelectedItem()));
-        connect(mMainWindow->actionAddToWorkingDocument, SIGNAL(triggered()), this, SLOT(addToDocument()));
-
-        loadDocumentProxies();
-
-        mDocumentUI->documentTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
-        mDocumentUI->documentTreeWidget->setDragEnabled(true);
-        mDocumentUI->documentTreeWidget->viewport()->setAcceptDrops(true);
-        mDocumentUI->documentTreeWidget->setDropIndicatorShown(true);
-        mDocumentUI->documentTreeWidget->setIndentation(18); // 1.5 * /resources/style/treeview-branch-closed.png width
-        mDocumentUI->documentTreeWidget->setDragDropMode(QAbstractItemView::InternalMove);
-
-        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged()));
-        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(itemChanged(QTreeWidgetItem *, int)));
-        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(itemClicked(QTreeWidgetItem *, int)));
-
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(sceneDropped(UBDocumentProxy*, int, int)), this, SLOT(moveSceneToIndex ( UBDocumentProxy*, int, int)));
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(resized()), this, SLOT(thumbnailViewResized()));
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)),
-                this, SLOT(pageDoubleClicked(QGraphicsItem*, int)));
-        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)),
-                this, SLOT(pageClicked(QGraphicsItem*, int)));
-
-        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()),
-                this, SLOT(pageSelectionChanged()));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)),
-                        this, SLOT(addDocumentInTree(UBDocumentProxy*)));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)),
-                        this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)),
-                this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
-        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)),
-                this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
-
-        mDocumentUI->thumbnailWidget->setBackgroundBrush(UBSettings::documentViewLightColor);
-
-        mMessageWindow = new UBMessageWindow(mDocumentUI->thumbnailWidget);
-        mMessageWindow->hide();
-
-    }
-}
-
-
-QWidget* UBDocumentController::controlView()
-{
-    return mDocumentWidget;
-}
-
-
-void UBDocumentController::setupToolbar()
-{
-    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->documentToolBar, mMainWindow->actionBoard);
-    connect(mMainWindow->actionDocumentTools, SIGNAL(triggered()), this, SLOT(toggleDocumentToolsPalette()));
-}
-
-void UBDocumentController::setupPalettes()
-{
-
-    mToolsPalette = new UBDocumentToolsPalette(controlView());
-
-    mToolsPalette->hide();
-
-    bool showToolsPalette = !mToolsPalette->isEmpty();
-    mMainWindow->actionDocumentTools->setVisible(showToolsPalette);
-
-    if (showToolsPalette)
-    {
-        mMainWindow->actionDocumentTools->trigger();
-    }
-}
-
-
-void UBDocumentController::show()
-{
-    selectDocument(mBoardController->activeDocument());
-
-    selectionChanged();
-
-    if(!mToolsPalette)
-        setupPalettes();
-}
-
-
-void UBDocumentController::hide()
-{
-    // NOOP
-}
-
-
-void UBDocumentController::openSelectedItem()
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-    if (selectedItems.count() > 0)
-    {
-        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
-
-        if (thumb)
-        {
-            UBDocumentProxy* proxy = thumb->proxy();
-
-            if (proxy && isOKToOpenDocument(proxy))
-            {
-                UBApplication::applicationController->showBoard();
-            }
-        }
-    }
-    else
-    {
-        UBDocumentProxy* proxy = selectedDocumentProxy();
-
-        if (proxy && isOKToOpenDocument(proxy))
-        {
-            mBoardController->setActiveDocumentScene(proxy);
-            UBApplication::applicationController->showBoard();
-        }
-    }
-
-    QApplication::restoreOverrideCursor();
-}
-
-
-void UBDocumentController::duplicateSelectedItem()
-{
-    if (UBApplication::applicationController->displayMode() != UBApplicationController::Document)
-        return;
-
-	if (mSelectionType == Page)
-    {
-        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-        QList<int> selectedSceneIndexes;
-        foreach (QGraphicsItem *item, selectedItems)
-        {
-            UBSceneThumbnailPixmap *thumb = dynamic_cast<UBSceneThumbnailPixmap*>(item);
-            if (thumb)
-            {
-                UBDocumentProxy *proxy = thumb->proxy();
-
-                if (proxy)
-                {
-                    int sceneIndex = thumb->sceneIndex();
-                    selectedSceneIndexes << sceneIndex;
-                }
-            }
-        }
-
-        if (selectedSceneIndexes.count() > 0)
-        {
-            UBSceneThumbnailPixmap *thumb = dynamic_cast<UBSceneThumbnailPixmap*>(selectedItems.at(0));
-            UBDocumentProxy *proxy = thumb->proxy();
-            int offset = 0;
-            if (proxy)
-            {
-                foreach (int sceneIndex, selectedSceneIndexes)
-                {
-                    UBPersistenceManager::persistenceManager()->duplicateDocumentScene(proxy, sceneIndex + offset);
-                    mDocumentThumbs.insert(sceneIndex + offset, mDocumentThumbs.at(sceneIndex + offset));
-                    offset++;
-                }
-            }
-            refreshDocumentThumbnailsView();
-            proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(proxy);
-            mDocumentUI->thumbnailWidget->selectItemAt(selectedSceneIndexes.last() + offset);
-        }
-    }
-    else
-    {
-        UBDocumentProxy* source = selectedDocumentProxy();
-        UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
-
-        if (source && group)
-        {
-                QString docName = source->metaData(UBSettings::documentName).toString();
-
-                showMessage(tr("Duplicating Document %1").arg(docName), true);
-
-            UBDocumentProxy* duplicatedDoc = UBPersistenceManager::persistenceManager()->duplicateDocument(source);
-            duplicatedDoc->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(duplicatedDoc);
-
-            selectDocument(duplicatedDoc, false);
-
-            showMessage(tr("Document %1 copied").arg(docName), false);
-        }
-    }
-}
-
-
-void UBDocumentController::deleteSelectedItem()
-{
-    if (mSelectionType == Page)
-    {
-        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-        deletePages(selectedItems);
-    }
-    else
-    {
-
-        UBDocumentProxyTreeItem *proxyTi = selectedDocumentProxyTreeItem();
-
-        UBDocumentGroupTreeItem* groupTi = selectedDocumentGroupTreeItem();
-
-        if (proxyTi && proxyTi->proxy() && proxyTi->parent())
-        {
-            if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Document"), tr("Are you sure you want to remove the document '%1'?").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString())))
-            {
-                if (proxyTi->parent() == mTrashTi)
-                {
-                    int index = proxyTi->parent()->indexOfChild(proxyTi);
-                    index --;
-
-                    if (index >= 0)
-                    {
-                        if (proxyTi->proxy() == mBoardController->activeDocument())
-                        {
-                            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(index))->proxy());
-                        }
-                        else
-                            proxyTi->parent()->child(index)->setSelected(true);
-                    }
-                    else if (proxyTi->parent()->childCount() > 1)
-                    {
-                        if (proxyTi->proxy() == mBoardController->activeDocument())
-                        {
-                            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(1))->proxy());
-                        }
-                        else
-                            proxyTi->parent()->child(1)->setSelected(true);
-                    }
-                    else
-                    {
-                        if (proxyTi->proxy() == mBoardController->activeDocument())
-                        {
-                            for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-                            {
-                                QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-                                UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-                                if (groupItem != selectedDocumentGroupTreeItem() && groupItem->childCount() > 0)
-                                {
-                                    selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy());
-                                    break;
-                                }
-                            }
-                        }
-                        else
-                            proxyTi->parent()->setSelected(true);
-                    }
-
-                    proxyTi->parent()->removeChild(proxyTi);
-
-                    UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
-
-                    refreshDocumentThumbnailsView();
-                }
-                else
-                {
-                    // Move document to trash
-                    QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
-                    proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
-                    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
-
-                    proxyTi->parent()->removeChild(proxyTi);
-                    mTrashTi->addChild(proxyTi);
-                    proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
-                }
-            }
-        }
-        else if (groupTi)
-        {
-            if (groupTi == mTrashTi)
-            {
-                if(UBApplication::mainWindow->yesNoQuestion(tr("Empty Trash"), tr("Are you sure you want to empty trash?")))
-                {
-                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-                    QList<UBDocumentProxyTreeItem*> toBeDeleted;
-
-                    for (int i = 0; i < groupTi->childCount(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
-                        if (proxyTi && proxyTi->proxy())
-                            toBeDeleted << proxyTi;
-                    }
-
-                    UBApplication::showMessage(tr("Emptying trash"));
-
-                    for (int i = 0; i < toBeDeleted.count(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
-
-                        proxyTi->parent()->removeChild(proxyTi);
-                        UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
-                    }
-
-                    UBApplication::showMessage(tr("Emptied trash"));
-
-                    QApplication::restoreOverrideCursor();
-                    mMainWindow->actionDelete->setEnabled(false);
-                }
-            }
-            else
-            {
-                if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Folder"), tr("Are you sure you want to remove the folder '%1' and all its content?").arg(groupTi->groupName())))
-                {
-                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-                    bool changeCurrentDocument = false;
-                    for (int i = 0; i < groupTi->childCount(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi  = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
-                        if (proxyTi && proxyTi->proxy() && proxyTi->proxy() == mBoardController->activeDocument())
-                        {
-                            changeCurrentDocument = true;
-                            break;
-                        }
-                    }
-
-                    if (changeCurrentDocument)
-                    {
-                        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-                        {
-                            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-                            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-                            if (groupItem != groupTi && groupItem->childCount() > 0)
-                            {
-                                selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy());
-                                break;
-                            }
-                        }
-                    }
-
-                    QList<UBDocumentProxyTreeItem*> toBeDeleted;
-
-                    for (int i = 0; i < groupTi->childCount(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
-                        if (proxyTi && proxyTi->proxy())
-                            toBeDeleted << proxyTi;
-                    }
-
-                    for (int i = 0; i < toBeDeleted.count(); i++)
-                    {
-                        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
-
-                        UBApplication::showMessage(QString("Deleting %1").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString()));
-                        // Move document to trash
-                        QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
-                        proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
-                        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
-
-                        groupTi->removeChild(proxyTi);
-                        mTrashTi->addChild(proxyTi);
-                        proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
-
-                        UBApplication::showMessage(QString("%1 deleted").arg(groupTi->groupName()));
-                    }
-
-                    // dont remove default group
-                    if (!groupTi->isDefaultFolder())
-                    {
-                        int index = mDocumentUI->documentTreeWidget->indexOfTopLevelItem(groupTi);
-
-                        if (index >= 0)
-                        {
-                            mDocumentUI->documentTreeWidget->takeTopLevelItem(index);
-                        }
-                    }
-
-                    refreshDocumentThumbnailsView();
-
-                    QApplication::restoreOverrideCursor();
-                }
-            }
-        }
-    }
-}
-
-
-void UBDocumentController::exportDocument()
-{
-    QAction *currentExportAction = qobject_cast<QAction *>(sender());
-    QVariant actionData = currentExportAction->data();
-    UBExportAdaptor* selectedExportAdaptor = UBDocumentManager::documentManager()->supportedExportAdaptors()[actionData.toInt()];
-
-    UBDocumentProxy* proxy = selectedDocumentProxy();
-
-    if (proxy)
-    {
-        selectedExportAdaptor->persist(proxy);
-        emit exportDone();
-    }
-    else
-    {
-       UBApplication::showMessage(tr("No document selected!"));
-    }
-}
-
-
-void UBDocumentController::documentZoomSliderValueChanged (int value)
-{
-    mDocumentUI->thumbnailWidget->setThumbnailWidth(value);
-
-    UBSettings::settings()->documentThumbnailWidth->set(value);
-}
-
-
-UBGraphicsScene* UBDocumentController::activeScene()
-{
-    if (mBoardController->activeDocument())
-    {
-        return mBoardController->activeScene();
-    }
-    else
-    {
-        return 0;
-    }
-}
-
-
-void UBDocumentController::loadDocumentProxies()
-{
-    QList<QPointer<UBDocumentProxy> > proxies = UBPersistenceManager::persistenceManager()->documentProxies;
-
-    QStringList emptyGroupNames = UBSettings::settings()->value("Document/EmptyGroupNames", QStringList()).toStringList();
-
-    mDocumentUI->documentTreeWidget->clear();
-
-    QMap<QString, UBDocumentGroupTreeItem*> groupNamesMap;
-
-    UBDocumentGroupTreeItem* emptyGroupNameTi = 0;
-
-    mTrashTi = new UBDocumentGroupTreeItem(0, false); // deleted by the tree widget
-    mTrashTi->setGroupName(UBSettings::documentTrashGroupName);
-    mTrashTi->setIcon(0, QIcon(":/images/trash.png"));
-
-    foreach (QPointer<UBDocumentProxy> proxy, proxies)
-    {
-        if (proxy)
-        {
-            QString docGroup = proxy->metaData(UBSettings::documentGroupName).toString();
-
-            bool isEmptyGroupName = false;
-            bool isInTrash = false;
-
-            if (docGroup.isEmpty()) // #see https://trac.assembla.com/uniboard/ticket/426
-            {
-                docGroup = UBSettings::defaultDocumentGroupName;
-                isEmptyGroupName = true;
-            }
-            else if (docGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
-            {
-                isInTrash = true;
-            }
-
-            QString docName = proxy->metaData(UBSettings::documentName).toString();
-
-            if (emptyGroupNames.contains(docGroup))
-                emptyGroupNames.removeAll(docGroup);
-
-            if (!groupNamesMap.contains(docGroup) && !isInTrash)
-            {
-                UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0, !isEmptyGroupName); // deleted by the tree widget
-                groupNamesMap.insert(docGroup, docGroupItem);
-                docGroupItem->setGroupName(docGroup);
-
-                if (isEmptyGroupName)
-                    emptyGroupNameTi = docGroupItem;
-            }
-
-            UBDocumentGroupTreeItem* docGroupItem;
-            if (isInTrash)
-                docGroupItem = mTrashTi;
-            else
-                docGroupItem = groupNamesMap.value(docGroup);
-
-            QTreeWidgetItem* docItem = new UBDocumentProxyTreeItem(docGroupItem, proxy, !isInTrash);
-            docItem->setText(0, docName);
-
-            if (mBoardController->activeDocument() == proxy)
-            {
-                mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
-                mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
-            }
-        }
-    }
-
-    foreach (const QString emptyGroupName, emptyGroupNames)
-    {
-        UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
-        groupNamesMap.insert(emptyGroupName, docGroupItem);
-        docGroupItem->setGroupName(emptyGroupName);
-    }
-
-    QList<QString> groupNamesList = groupNamesMap.keys();
-    qSort(groupNamesList);
-
-    foreach (const QString groupName, groupNamesList)
-    {
-        UBDocumentGroupTreeItem* ti = groupNamesMap.value(groupName);
-
-        if (ti != emptyGroupNameTi)
-            mDocumentUI->documentTreeWidget->addTopLevelItem(ti);
-    }
-
-    if (emptyGroupNameTi)
-        mDocumentUI->documentTreeWidget->addTopLevelItem(emptyGroupNameTi);
-
-    mDocumentUI->documentTreeWidget->addTopLevelItem(mTrashTi);
-}
-
-
-void UBDocumentController::itemClicked(QTreeWidgetItem * item, int column )
-{
-    Q_UNUSED(item);
-    Q_UNUSED(column);
-
-    selectDocument(selectedDocumentProxy(), false);
-    itemSelectionChanged();
-}
-
-
-void UBDocumentController::itemChanged(QTreeWidgetItem * item, int column)
-{
-    UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
-
-    disconnect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*))
-            , this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
-
-    if (proxyItem)
-    {
-        if (proxyItem->proxy()->metaData(UBSettings::documentName).toString() != item->text(column))
-        {
-            proxyItem->proxy()->setMetaData(UBSettings::documentName, item->text(column));
-            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyItem->proxy());
-        }
-    }
-    else
-    {
-        // it is a group
-        UBDocumentGroupTreeItem* editedGroup = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-        if (editedGroup)
-        {
-            for (int i = 0; i < item->childCount(); i++)
-            {
-                UBDocumentProxyTreeItem* childItem = dynamic_cast<UBDocumentProxyTreeItem*>(item->child(i));
-
-                if (childItem)
-                {
-                    QString groupName;
-                    if (0 != (item->flags() & Qt::ItemIsEditable))
-                    {
-                        childItem->proxy()->setMetaData(UBSettings::documentGroupName, item->text(column));
-                        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(childItem->proxy());
-                    }
-                }
-            }
-        }
-    }
-
-    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)),
-            this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
-}
-
-
-void UBDocumentController::importFile()
-{
-    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
-    UBDocumentManager *docManager = UBDocumentManager::documentManager();
-
-    if (group)
-    {
-        QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
-        QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"),
-                defaultPath, docManager->importFileFilter());
-
-        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-        QApplication::processEvents();
-        QFileInfo fileInfo(filePath);
-        UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
-
-        if (filePath.length() > 0)
-        {
-            UBDocumentProxy* createdDocument = 0;
-            QApplication::processEvents();
-            QFile selectedFile(filePath);
-
-            QString groupName = group->groupName();
-
-            if (groupName == UBSettings::defaultDocumentGroupName)
-                groupName = "";
-
-            UBApplication::showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
-
-            createdDocument = docManager->importFile(selectedFile, groupName);
-
-            if (createdDocument)
-            {
-                selectDocument(createdDocument, false);
-            }
-            else
-            {
-                UBApplication::showMessage(tr("Failed to import file ... "));
-            }
-        }
-
-        QApplication::restoreOverrideCursor();
-    }
-}
-
-void UBDocumentController::addFolderOfImages()
-{
-    UBDocumentProxy* document = selectedDocumentProxy();
-
-    if (document)
-    {
-        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
-
-        QString imagesDir = QFileDialog::getExistingDirectory(mParentWidget, tr("Import all Images from Folder"), defaultPath);
-        QDir parentImageDir(imagesDir);
-        parentImageDir.cdUp();
-
-        UBSettings::settings()->lastImportFolderPath->set(QVariant(parentImageDir.absolutePath()));
-
-        if (imagesDir.length() > 0)
-        {
-            QDir dir(imagesDir);
-
-            int importedImageNumber
-                  = UBDocumentManager::documentManager()->addImageDirToDocument(dir, document);
-
-            if (importedImageNumber == 0)
-            {
-                UBApplication::showMessage(tr("Folder does not contain any image files!"));
-                UBApplication::applicationController->showDocument();
-            }
-            else
-            {
-                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-                UBMetadataDcSubsetAdaptor::persist(document);
-                mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
-                refreshDocumentThumbnailsView();
-            }
-        }
-    }
-}
-
-
-void UBDocumentController::addFileToDocument()
-{
-    UBDocumentProxy* document = selectedDocumentProxy();
-
-    if (document)
-    {
-         addFileToDocument(document);
-         mDocumentThumbs = UBThumbnailAdaptor::load(document);
-         refreshDocumentThumbnailsView();
-    }
-}
-
-
-bool UBDocumentController::addFileToDocument(UBDocumentProxy* document)
-{
-    QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
-    QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File")
-            , defaultPath, UBDocumentManager::documentManager()->importFileFilter());
-
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    QApplication::processEvents();
-
-    QFileInfo fileInfo(filePath);
-    UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
-
-    bool success = false;
-
-    if (filePath.length() > 0)
-    {
-        QApplication::processEvents();
-        QFile selectedFile(filePath);
-
-        UBApplication::showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
-
-        success = UBDocumentManager::documentManager()->addFileToDocument(document, selectedFile);
-
-        if (success)
-        {
-            document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(document);
-        }
-        else
-        {
-            UBApplication::showMessage(tr("Failed to import file ... "));
-        }
-    }
-
-    QApplication::restoreOverrideCursor();
-
-    return success;
-}
-
-
-void UBDocumentController::moveSceneToIndex(UBDocumentProxy* proxy, int source, int target)
-{
-    UBPersistenceManager::persistenceManager()->moveSceneToIndex(proxy, source, target);
-
-    proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-    UBMetadataDcSubsetAdaptor::persist(proxy);
-    mDocumentThumbs.insert(target, mDocumentThumbs.takeAt(source));
-    refreshDocumentThumbnailsView();
-    mDocumentUI->thumbnailWidget->hightlightItem(target);
-}
-
-
-void UBDocumentController::thumbnailViewResized()
-{
-    int maxWidth = qMin(UBSettings::maxThumbnailWidth, mDocumentUI->thumbnailWidget->width());
-
-    mDocumentUI->documentZoomSlider->setMaximum(maxWidth);
-}
-
-
-void UBDocumentController::pageSelectionChanged()
-{
-    if (mIsClosing)
-        return;
-
-    bool pageSelected = mDocumentUI->thumbnailWidget->selectedItems().count() > 0;
-
-    if (pageSelected)
-        mSelectionType = Page;
-    else
-        mSelectionType = None;
-
-    selectionChanged();
-}
-
-
-void UBDocumentController::selectionChanged()
-{
-    if (mIsClosing)
-        return;
-
-    int pageCount = -1;
-
-    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
-
-    if (proxyTi && proxyTi->proxy())
-        pageCount = proxyTi->proxy()->pageCount();
-
-    bool pageSelected = (mSelectionType == Page);
-    bool groupSelected = (mSelectionType == Folder);
-    bool docSelected = (mSelectionType == Document);
-
-    bool trashSelected = false;
-    if (groupSelected && selectedDocumentGroupTreeItem())
-        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
-
-    if ((docSelected || pageSelected) && proxyTi)
-        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
-
-    bool defaultGroupSelected = false;
-    if (groupSelected && selectedDocumentGroupTreeItem())
-        defaultGroupSelected = selectedDocumentGroupTreeItem()->isDefaultFolder();
-
-    mMainWindow->actionNewDocument->setEnabled((groupSelected || docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionExport->setEnabled((docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionDuplicate->setEnabled((docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionOpen->setEnabled((docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionRename->setEnabled((groupSelected || docSelected) && !trashSelected && !defaultGroupSelected);
-
-    mMainWindow->actionAddToWorkingDocument->setEnabled(pageSelected
-            && !(selectedDocumentProxy() == mBoardController->activeDocument()) && !trashSelected);
-
-    bool deleteEnabled = false;
-    if (trashSelected)
-    {
-        if (docSelected)
-            deleteEnabled = true;
-        else if (groupSelected && selectedDocumentGroupTreeItem())
-        {
-            if (selectedDocumentGroupTreeItem()->childCount() > 0)
-                deleteEnabled = true;
-        }
-    }
-    else
-    {
-        deleteEnabled = groupSelected || docSelected || pageSelected;
-    }
-
-    if (pageSelected && (pageCount == mDocumentUI->thumbnailWidget->selectedItems().count()))
-    {
-        deleteEnabled = false;
-    }
-
-    mMainWindow->actionDelete->setEnabled(deleteEnabled);
-
-    if (trashSelected)
-    {
-        if (docSelected)
-        {
-            mMainWindow->actionDelete->setIcon(QIcon(":/images/toolbar/deleteDocument.png"));
-            mMainWindow->actionDelete->setText(tr("Delete"));
-        }
-        else
-        {
-            mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
-            mMainWindow->actionDelete->setText(tr("Empty"));
-        }
-    }
-    else
-    {
-        mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
-        mMainWindow->actionDelete->setText(tr("Trash"));
-    }
-
-    mMainWindow->actionDocumentAdd->setEnabled((docSelected || pageSelected) && !trashSelected);
-    mMainWindow->actionImport->setEnabled(!trashSelected);
-
-}
-
-
-void UBDocumentController::documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex)
-{
-    Q_UNUSED(pSceneIndex);
-
-    if (proxy == selectedDocumentProxy())
-    {
-        refreshDocumentThumbnailsView();
-    }
-}
-
-
-void UBDocumentController::pageDoubleClicked(QGraphicsItem* item, int index)
-{
-    Q_UNUSED(item);
-    Q_UNUSED(index);
-
-    bool pageSelected = (mSelectionType == Page);
-    bool groupSelected = (mSelectionType == Folder);
-    bool docSelected = (mSelectionType == Document);
-
-    bool trashSelected = false;
-    if (groupSelected && selectedDocumentGroupTreeItem())
-        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
-    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
-    if ((docSelected || pageSelected) && proxyTi)
-        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
-    if (trashSelected) return;
-
-    openSelectedItem();
-}
-
-
-void UBDocumentController::pageClicked(QGraphicsItem* item, int index)
-{
-    Q_UNUSED(item);
-    Q_UNUSED(index);
-
-    pageSelectionChanged();
-}
-
-
-void UBDocumentController::closing()
-{
-    mIsClosing = true;
-
-    QStringList emptyGroups;
-
-    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-    {
-        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-
-        if (item->childCount() == 0)
-        {
-            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-            if (groupItem)
-            {
-                QString groupName = groupItem->groupName();
-                if (!emptyGroups.contains(groupName) && groupName != UBSettings::documentTrashGroupName)
-                    emptyGroups << groupName;
-            }
-        }
-    }
-
-    UBSettings::settings()->setValue("Document/EmptyGroupNames", emptyGroups);
-
-}
-
-void UBDocumentController::addToDocument()
-{
-    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-    if (selectedItems.count() > 0)
-    {
-        int oldActiveSceneIndex = mBoardController->activeSceneIndex();
-
-        QList<QPair<UBDocumentProxy*, int> > pageInfoList;
-
-        foreach (QGraphicsItem* item, selectedItems)
-        {
-            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
-
-            if (thumb &&  thumb->proxy())
-            {
-                QPair<UBDocumentProxy*, int> pageInfo(thumb->proxy(), thumb->sceneIndex());
-                pageInfoList << pageInfo;
-            }
-        }
-
-        for (int i = 0; i < pageInfoList.length(); i++)
-        {
-            mBoardController->addScene(pageInfoList.at(i).first, pageInfoList.at(i).second, true);
-        }
-
-        int newActiveSceneIndex = selectedItems.count() == mBoardController->activeDocument()->pageCount() ? 0 : oldActiveSceneIndex + 1;
-        mDocumentUI->thumbnailWidget->selectItemAt(newActiveSceneIndex, false);
-        selectDocument(mBoardController->activeDocument());
-        mBoardController->activeDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-        UBMetadataDcSubsetAdaptor::persist(mBoardController->activeDocument());
-
-        UBApplication::applicationController->showBoard();
-    }
-
-    QApplication::restoreOverrideCursor();
-}
-
-
-void UBDocumentController::addDocumentInTree(UBDocumentProxy* pDocument)
-{
-    QString documentName = pDocument->name();
-    QString documentGroup = pDocument->groupName();
-    if (documentGroup.isEmpty())
-    {
-        documentGroup = UBSettings::defaultDocumentGroupName;
-    }
-    UBDocumentGroupTreeItem* group = 0;
-    if (documentGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
-    {
-        group = mTrashTi;
-    }
-    else
-    {
-        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-        {
-            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-            if (groupItem->groupName() == documentGroup)
-            {
-                group = groupItem;
-                break;
-            }
-        }
-    }
-
-    if (group == 0)
-    {
-        group = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
-        group->setGroupName(documentGroup);
-        mDocumentUI->documentTreeWidget->addTopLevelItem(group);
-    }
-
-    UBDocumentProxyTreeItem *ti = new UBDocumentProxyTreeItem(group, pDocument, !group->isTrashFolder());
-    ti->setText(0, documentName);
-}
-
-
-void UBDocumentController::updateDocumentInTree(UBDocumentProxy* pDocument)
-{
-    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
-    while (*it)
-    {
-        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
-
-        if (pi && pi->proxy() == pDocument)
-        {
-            pi->setText(0, pDocument->name());
-            break;
-        }
-        ++it;
-    }
-}
-
-
-QStringList UBDocumentController::allGroupNames()
-{
-    QStringList result;
-
-    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
-    {
-        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
-        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
-        result << groupItem->groupName();
-    }
-
-    return result;
-}
-
-
-void UBDocumentController::renameSelectedItem()
-{
-    if (mDocumentUI->documentTreeWidget->selectedItems().count() > 0)
-        mDocumentUI->documentTreeWidget->editItem(mDocumentUI->documentTreeWidget->selectedItems().at(0));
-}
-
-
-bool UBDocumentController::isOKToOpenDocument(UBDocumentProxy* proxy)
-{
-    //check version
-    QString docVersion = proxy->metaData(UBSettings::documentVersion).toString();
-
-    if (docVersion.isEmpty() || docVersion.startsWith("4.1") || docVersion.startsWith("4.2")
-            || docVersion.startsWith("4.3") || docVersion.startsWith("4.4") || docVersion.startsWith("4.5")
-            || docVersion.startsWith("4.6")) // TODO UB 4.7 update if necessary
-    {
-        return true;
-    }
-    else
-    {
-        if (UBApplication::mainWindow->yesNoQuestion(tr("Open Document"),
-                tr("The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?")
-                    .arg(proxy->metaData(UBSettings::documentName).toString())
-                    .arg(docVersion)))
-        {
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-}
-
-
-void UBDocumentController::showMessage(const QString& message, bool showSpinningWheel)
-{
-    int margin = UBSettings::boardMargin;
-
-    QRect newSize = mDocumentUI->thumbnailWidget->geometry();
-
-    if (mMessageWindow)
-    {
-        mMessageWindow->move(margin, newSize.height() - mMessageWindow->height() - margin);
-        mMessageWindow->showMessage(message, showSpinningWheel);
-    }
-}
-
-
-void UBDocumentController::hideMessage()
-{
-    if (mMessageWindow)
-        mMessageWindow->hideMessage();
-}
-
-
-void UBDocumentController::addImages()
-{
-    UBDocumentProxy* document = selectedDocumentProxy();
-
-    if (document)
-    {
-        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
-
-        QString extensions;
-
-        foreach (QString ext, UBSettings::settings()->imageFileExtensions)
-        {
-            extensions += " *.";
-            extensions += ext;
-        }
-
-        QStringList images = QFileDialog::getOpenFileNames(mParentWidget, tr("Add all Images to Document"),
-                defaultPath, tr("All Images (%1)").arg(extensions));
-
-        if (images.length() > 0)
-        {
-            QFileInfo firstImage(images.at(0));
-
-            UBSettings::settings()->lastImportFolderPath->set(QVariant(firstImage.absoluteDir().absolutePath()));
-
-            int importedImageNumber
-                  = UBDocumentManager::documentManager()->addImageAsPageToDocument(images, document);
-
-            if (importedImageNumber == 0)
-            {
-                UBApplication::showMessage(tr("Selection does not contain any image files!"));
-                UBApplication::applicationController->showDocument();
-            }
-            else
-            {
-                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-                UBMetadataDcSubsetAdaptor::persist(document);
-                mDocumentThumbs = UBThumbnailAdaptor::load(selectedDocumentProxy());
-                refreshDocumentThumbnailsView();
-            }
-        }
-    }
-}
-
-
-void UBDocumentController::toggleDocumentToolsPalette()
-{
-    if (!mToolsPalette->isVisible() && !mToolsPalettePositionned)
-    {
-        mToolsPalette->adjustSizeAndPosition();
-        int left = controlView()->width() - 20 - mToolsPalette->width();
-        int top = (controlView()->height() - mToolsPalette->height()) / 2;
-
-        mToolsPalette->setCustomPosition(true);
-        mToolsPalette->move(left, top);
-
-        mToolsPalettePositionned = true;
-    }
-
-    bool visible = mToolsPalette->isVisible();
-    mToolsPalette->setVisible(!visible);
-}
-
-
-void UBDocumentController::cut()
-{
-    // TODO - implemented me
-}
-
-
-void UBDocumentController::copy()
-{
-    // TODO - implemented me
-}
-
-
-void UBDocumentController::paste()
-{
-    // TODO - implemented me
-}
-
-
-void UBDocumentController::focusChanged(QWidget *old, QWidget *current)
-{
-    Q_UNUSED(old);
-
-    if (current == mDocumentUI->thumbnailWidget)
-    {
-        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
-            mSelectionType = Page;
-        else
-            mSelectionType = None;
-    }
-    else if (current == mDocumentUI->documentTreeWidget)
-    {
-        if (selectedDocumentProxy())
-            mSelectionType = Document;
-        else if (selectedDocumentGroupTreeItem())
-            mSelectionType = Folder;
-        else
-            mSelectionType = None;
-    }
-    else if (current == mDocumentUI->documentZoomSlider)
-    {
-        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
-            mSelectionType = Page;
-        else
-            mSelectionType = None;
-    }
-    else
-    {
-        if (old != mDocumentUI->thumbnailWidget &&
-            old != mDocumentUI->documentTreeWidget &&
-            old != mDocumentUI->documentZoomSlider)
-        {
-            mSelectionType = None;
-        }
-    }
-
-    selectionChanged();
-}
-
-void UBDocumentController::deletePages(QList<QGraphicsItem *> itemsToDelete)
-{
-    if (itemsToDelete.count() > 0)
-    {
-        QList<int> sceneIndexes;
-        UBDocumentProxy* proxy = 0;
-
-        foreach (QGraphicsItem* item, itemsToDelete)
-        {
-            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
-
-            if (thumb)
-            {
-                proxy = thumb->proxy();
-                if (proxy)
-                {
-                    sceneIndexes.append(thumb->sceneIndex());
-                }
-            }
-        }
-
-        if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Page"), tr("Are you sure you want to remove %n page(s) from the selected document '%1'?", "", sceneIndexes.count()).arg(proxy->metaData(UBSettings::documentName).toString())))
-        {
-            UBPersistenceManager::persistenceManager()->deleteDocumentScenes(proxy, sceneIndexes);
-            proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-            UBMetadataDcSubsetAdaptor::persist(proxy);
-
-            int offset = 0;
-            foreach(int index, sceneIndexes)
-            {
-                mDocumentThumbs.removeAt(index - offset);
-                offset++;
-            }
-            refreshDocumentThumbnailsView();
-
-            int minIndex = proxy->pageCount() - 1;
-
-            foreach (int i, sceneIndexes)
-                 minIndex = qMin(i, minIndex);
-
-            mDocumentUI->thumbnailWidget->selectItemAt(minIndex);
-        }
-    }
-}
-
-int UBDocumentController::getSelectedItemIndex()
-{
-    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
-
-    if (selectedItems.count() > 0)
-    {
-        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
-        return thumb->sceneIndex();
-    }
-    else return -1;
-}
+
+
+#include "UBDocumentController.h"
+
+#include <QtCore>
+#include <QtGui>
+
+#include "frameworks/UBFileSystemUtils.h"
+#include "frameworks/UBStringUtils.h"
+#include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBDocumentManager.h"
+#include "core/UBApplicationController.h"
+#include "core/UBSettings.h"
+#include "core/UBSetting.h"
+
+#include "adaptors/UBExportPDF.h"
+#include "adaptors/UBThumbnailAdaptor.h"
+
+#include "adaptors/UBMetadataDcSubsetAdaptor.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBBoardPaletteManager.h"
+#include "board/UBDrawingController.h"
+
+
+#include "gui/UBThumbnailView.h"
+#include "gui/UBDocumentTreeWidget.h"
+#include "gui/UBMousePressFilter.h"
+#include "gui/UBMessageWindow.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBDocumentToolsPalette.h"
+
+#include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsPixmapItem.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "ui_documents.h"
+#include "ui_mainWindow.h"
+
+#include "core/memcheck.h"
+
+UBDocumentController::UBDocumentController(UBMainWindow* mainWindow)
+   : UBDocumentContainer(mainWindow->centralWidget())
+   , mSelectionType(None)
+   , mParentWidget(mainWindow->centralWidget())
+   , mBoardController(UBApplication::boardController)
+   , mDocumentUI(0)
+   , mMainWindow(mainWindow)
+   , mDocumentWidget(0)
+   , mIsClosing(false)
+   , mToolsPalette(0)
+   , mToolsPalettePositionned(false)
+   , mTrashTi(0)
+   , mDocumentTrashGroupName(tr("Trash"))
+   , mDefaultDocumentGroupName(tr("Untitled Documents"))
+{
+    setupViews();
+    setupToolbar();
+    this->selectDocument(UBApplication::boardController->selectedDocument());
+    connect(this, SIGNAL(exportDone()), mMainWindow, SLOT(onExportDone()));
+    connect(this, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(refreshDocumentThumbnailsView(UBDocumentContainer*)));
+}
+
+UBDocumentController::~UBDocumentController()
+{
+   if (mDocumentUI)
+       delete mDocumentUI;
+}
+
+
+void UBDocumentController::createNewDocument()
+{
+    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
+
+    if (group)
+    {
+        UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(group->groupName());
+
+        selectDocument(document);
+    }
+}
+
+
+UBDocumentProxyTreeItem* UBDocumentController::findDocument(UBDocumentProxy* proxy)
+{
+    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
+
+    while (*it)
+    {
+        UBDocumentProxyTreeItem *treeItem = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
+
+        if (treeItem && treeItem->proxy() == proxy)
+            return treeItem;
+
+        ++it;
+    }
+
+    return 0;
+}
+
+
+void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument)
+{
+    if (proxy==NULL)
+    {
+        setDocument(NULL);
+        return;
+    }
+
+    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
+
+    mDocumentUI->documentTreeWidget->clearSelection();
+    mDocumentUI->documentTreeWidget->setCurrentItem(0);
+
+    UBDocumentProxyTreeItem* selected = 0;
+
+    while (*it)
+    {
+        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
+
+        if (pi)
+        {
+            if (setAsCurrentDocument)
+                pi->setIcon(0, QIcon(""));
+
+            pi->setSelected(false);
+
+            if (pi->proxy() == proxy)
+            {
+                selected = pi;
+            }
+        }
+
+        ++it;
+    }
+
+    if (selected)
+    {
+        setDocument(proxy);
+
+        selected->setSelected(true);
+
+        selected->parent()->setExpanded(true);
+        selected->setText(0, proxy->name());
+
+        if (setAsCurrentDocument)
+        {
+            selected->setIcon(0, QIcon(":/images/currentDocument.png"));
+            if (proxy != mBoardController->selectedDocument())
+                mBoardController->setActiveDocumentScene(proxy);
+        }
+
+        mDocumentUI->documentTreeWidget->setCurrentItem(selected);
+
+        mDocumentUI->documentTreeWidget->scrollToItem(selected);
+
+        mSelectionType = Document;
+    }
+}
+
+
+void UBDocumentController::createNewDocumentGroup()
+{
+    UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
+    int i = 1;
+    QString newFolderName = tr("New Folder");
+    while (allGroupNames().contains(newFolderName))
+    {
+        newFolderName = tr("New Folder") + " " + QVariant(i++).toString();
+    }
+    docGroupItem->setGroupName(newFolderName);
+
+    int trashIndex =  mDocumentUI->documentTreeWidget->indexOfTopLevelItem(mTrashTi);
+
+    mDocumentUI->documentTreeWidget->insertTopLevelItem(trashIndex, docGroupItem);
+    mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
+    mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
+}
+
+
+UBDocumentProxy* UBDocumentController::selectedDocumentProxy()
+{
+    UBDocumentProxyTreeItem* proxyItem = selectedDocumentProxyTreeItem();
+    return proxyItem ? proxyItem->proxy() : 0;
+}
+
+
+UBDocumentProxyTreeItem* UBDocumentController::selectedDocumentProxyTreeItem()
+{
+    if (mDocumentUI && mDocumentUI->documentTreeWidget)
+    {
+        QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
+
+        foreach (QTreeWidgetItem * item, selectedItems)
+        {
+            UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
+
+            if (proxyItem)
+            {
+                return proxyItem;
+            }
+        }
+    }
+
+    return 0;
+}
+
+
+UBDocumentGroupTreeItem* UBDocumentController::selectedDocumentGroupTreeItem()
+{
+    QList<QTreeWidgetItem *> selectedItems = mDocumentUI->documentTreeWidget->selectedItems();
+
+    foreach (QTreeWidgetItem * item, selectedItems)
+    {
+        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+
+        if (groupItem)
+        {
+            return groupItem;
+        }
+        else
+        {
+            UBDocumentGroupTreeItem* parent = dynamic_cast<UBDocumentGroupTreeItem*>(item->parent());
+            if (parent)
+            {
+                return parent;
+            }
+        }
+    }
+
+    return 0;
+}
+
+
+void UBDocumentController::itemSelectionChanged()
+{
+    reloadThumbnails();
+
+    if (selectedDocumentProxy())
+        mSelectionType = Document;
+    else if (selectedDocumentGroupTreeItem())
+        mSelectionType = Folder;
+    else
+        mSelectionType = None;
+
+    selectionChanged();
+}
+
+
+void UBDocumentController::setupViews()
+{
+
+    if (!mDocumentWidget)
+    {
+        mDocumentWidget = new QWidget(mMainWindow->centralWidget());
+        mMainWindow->addDocumentsWidget(mDocumentWidget);
+
+        mDocumentUI = new Ui::documents();
+
+        mDocumentUI->setupUi(mDocumentWidget);
+
+        int thumbWidth = UBSettings::settings()->documentThumbnailWidth->get().toInt();
+
+        mDocumentUI->documentZoomSlider->setValue(thumbWidth);
+        mDocumentUI->thumbnailWidget->setThumbnailWidth(thumbWidth);
+
+        connect(mDocumentUI->documentZoomSlider, SIGNAL(valueChanged(int)), this,
+                SLOT(documentZoomSliderValueChanged(int)));
+
+        connect(mMainWindow->actionOpen, SIGNAL(triggered()), this, SLOT(openSelectedItem()));
+        connect(mMainWindow->actionNewFolder, SIGNAL(triggered()), this, SLOT(createNewDocumentGroup()));
+        connect(mMainWindow->actionNewDocument, SIGNAL(triggered()), this, SLOT(createNewDocument()));
+
+        connect(mMainWindow->actionImport, SIGNAL(triggered(bool)), this, SLOT(importFile()));
+
+        QMenu* addMenu = new QMenu(mDocumentWidget);
+        mAddFolderOfImagesAction = addMenu->addAction(tr("Add Folder of Images"));
+        mAddImagesAction = addMenu->addAction(tr("Add Images"));
+        mAddFileToDocumentAction = addMenu->addAction(tr("Add Pages from File"));
+
+        connect(mAddFolderOfImagesAction, SIGNAL(triggered(bool)), this, SLOT(addFolderOfImages()));
+        connect(mAddFileToDocumentAction, SIGNAL(triggered(bool)), this, SLOT(addFileToDocument()));
+        connect(mAddImagesAction, SIGNAL(triggered(bool)), this, SLOT(addImages()));
+
+        foreach (QWidget* menuWidget,  mMainWindow->actionDocumentAdd->associatedWidgets())
+        {
+            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
+
+            if (tb && !tb->menu())
+            {
+                tb->setObjectName("ubButtonMenu");
+                tb->setPopupMode(QToolButton::InstantPopup);
+
+                QMenu* menu = new QMenu(mDocumentWidget);
+
+                menu->addAction(mAddFolderOfImagesAction);
+                menu->addAction(mAddImagesAction);
+                menu->addAction(mAddFileToDocumentAction);
+
+                tb->setMenu(menu);
+            }
+        }
+
+        QMenu* exportMenu = new QMenu(mDocumentWidget);
+
+        UBDocumentManager *documentManager = UBDocumentManager::documentManager();
+        for (int i = 0; i < documentManager->supportedExportAdaptors().length(); i++)
+        {
+            UBExportAdaptor* adaptor = documentManager->supportedExportAdaptors()[i];
+            QAction *currentExportAction = exportMenu->addAction(adaptor->exportName());
+            currentExportAction->setData(i);
+            connect(currentExportAction, SIGNAL(triggered (bool)), this, SLOT(exportDocument()));
+            exportMenu->addAction(currentExportAction);
+        }
+
+        foreach (QWidget* menuWidget,  mMainWindow->actionExport->associatedWidgets())
+        {
+            QToolButton *tb = qobject_cast<QToolButton*>(menuWidget);
+
+            if (tb && !tb->menu())
+            {
+                tb->setObjectName("ubButtonMenu");
+                tb->setPopupMode(QToolButton::InstantPopup);
+
+                tb->setMenu(exportMenu);
+            }
+        }
+
+#ifdef Q_WS_MAC
+        mMainWindow->actionDelete->setShortcut(QKeySequence(Qt::Key_Backspace));
+#endif
+
+        connect(mMainWindow->actionDelete, SIGNAL(triggered()), this, SLOT(deleteSelectedItem()));
+        connect(mMainWindow->actionDuplicate, SIGNAL(triggered()), this, SLOT(duplicateSelectedItem()));
+        connect(mMainWindow->actionRename, SIGNAL(triggered()), this, SLOT(renameSelectedItem()));
+        connect(mMainWindow->actionAddToWorkingDocument, SIGNAL(triggered()), this, SLOT(addToDocument()));
+
+        loadDocumentProxies();
+
+        mDocumentUI->documentTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+        mDocumentUI->documentTreeWidget->setDragEnabled(true);
+        mDocumentUI->documentTreeWidget->viewport()->setAcceptDrops(true);
+        mDocumentUI->documentTreeWidget->setDropIndicatorShown(true);
+        mDocumentUI->documentTreeWidget->setIndentation(18); // 1.5 * /resources/style/treeview-branch-closed.png width
+        mDocumentUI->documentTreeWidget->setDragDropMode(QAbstractItemView::InternalMove);
+
+        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelectionChanged()));
+        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(itemChanged(QTreeWidgetItem *, int)));
+        connect(mDocumentUI->documentTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(itemClicked(QTreeWidgetItem *, int)));
+
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(sceneDropped(UBDocumentProxy*, int, int)), this, SLOT(moveSceneToIndex ( UBDocumentProxy*, int, int)));
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(resized()), this, SLOT(thumbnailViewResized()));
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), this, SLOT(pageDoubleClicked(QGraphicsItem*, int)));
+        connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), this, SLOT(pageClicked(QGraphicsItem*, int)));
+
+        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
+
+        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), this, SLOT(addDocumentInTree(UBDocumentProxy*)));
+
+        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
+
+        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
+
+        connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int)));
+
+        mDocumentUI->thumbnailWidget->setBackgroundBrush(UBSettings::documentViewLightColor);
+
+        #ifdef Q_WS_MACX
+            mMessageWindow = new UBMessageWindow(NULL);
+        #else
+            mMessageWindow = new UBMessageWindow(mDocumentUI->thumbnailWidget);
+        #endif
+
+        mMessageWindow->hide();
+
+    }
+}
+
+
+QWidget* UBDocumentController::controlView()
+{
+    return mDocumentWidget;
+}
+
+
+void UBDocumentController::setupToolbar()
+{
+    UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->documentToolBar, mMainWindow->actionBoard);
+    connect(mMainWindow->actionDocumentTools, SIGNAL(triggered()), this, SLOT(toggleDocumentToolsPalette()));
+}
+
+void UBDocumentController::setupPalettes()
+{
+
+    mToolsPalette = new UBDocumentToolsPalette(controlView());
+
+    mToolsPalette->hide();
+
+    bool showToolsPalette = !mToolsPalette->isEmpty();
+    mMainWindow->actionDocumentTools->setVisible(showToolsPalette);
+
+    if (showToolsPalette)
+    {
+        mMainWindow->actionDocumentTools->trigger();
+    }
+}
+
+
+void UBDocumentController::show()
+{
+    selectDocument(mBoardController->selectedDocument());
+
+    selectionChanged();
+
+    if(!mToolsPalette)
+        setupPalettes();
+}
+
+
+void UBDocumentController::hide()
+{
+    // NOOP
+}
+
+
+void UBDocumentController::openSelectedItem()
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+    if (selectedItems.count() > 0)
+    {
+        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
+
+        if (thumb)
+        {
+            UBDocumentProxy* proxy = thumb->proxy();
+
+            if (proxy && isOKToOpenDocument(proxy))
+            {
+                UBApplication::applicationController->showBoard();
+            }
+        }
+    }
+    else
+    {
+        UBDocumentProxy* proxy = selectedDocumentProxy();
+
+        if (proxy && isOKToOpenDocument(proxy))
+        {
+            mBoardController->setActiveDocumentScene(proxy);
+            UBApplication::applicationController->showBoard();
+        }
+    }
+
+    QApplication::restoreOverrideCursor();
+}
+
+void UBDocumentController::duplicateSelectedItem()
+{
+    if (UBApplication::applicationController->displayMode() != UBApplicationController::Document)
+        return;
+
+	if (mSelectionType == Page)
+    {
+        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+        QList<int> selectedSceneIndexes;
+        foreach (QGraphicsItem *item, selectedItems)
+        {
+            UBSceneThumbnailPixmap *thumb = dynamic_cast<UBSceneThumbnailPixmap*>(item);
+            if (thumb)
+            {
+                UBDocumentProxy *proxy = thumb->proxy();
+
+                if (proxy)
+                {
+                    int sceneIndex = thumb->sceneIndex();
+                    selectedSceneIndexes << sceneIndex;
+                }
+            }
+        }
+        if (selectedSceneIndexes.count() > 0)
+        {
+            duplicatePages(selectedSceneIndexes);
+            emit documentThumbnailsUpdated(this);
+            selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(selectedDocument());
+            mDocumentUI->thumbnailWidget->selectItemAt(selectedSceneIndexes.last() + selectedSceneIndexes.size());
+        }
+    }
+    else
+    {
+        UBDocumentProxy* source = selectedDocumentProxy();
+        UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
+
+        if (source && group)
+        {
+                QString docName = source->metaData(UBSettings::documentName).toString();
+
+                showMessage(tr("Duplicating Document %1").arg(docName), true);
+
+            UBDocumentProxy* duplicatedDoc = UBPersistenceManager::persistenceManager()->duplicateDocument(source);
+            duplicatedDoc->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(duplicatedDoc);
+
+            selectDocument(duplicatedDoc, false);
+
+            showMessage(tr("Document %1 copied").arg(docName), false);
+        }
+    }
+}
+
+void UBDocumentController::moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi)
+{
+    int index = proxyTi->parent()->indexOfChild(proxyTi);
+    index --;
+
+    if (index >= 0)
+    {
+        if (proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(index))->proxy(), true);
+        }
+        else
+            proxyTi->parent()->child(index)->setSelected(true);
+    }
+    else if (proxyTi->parent()->childCount() > 1)
+    {
+        if (proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            selectDocument(((UBDocumentProxyTreeItem*)proxyTi->parent()->child(1))->proxy(), true);
+        }
+        else
+            proxyTi->parent()->child(1)->setSelected(true);
+    }
+    else
+    {
+        if (proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            bool documentFound = false;
+            for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+            {
+                QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+                UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+                if (!groupItem->isTrashFolder())
+                {
+                    for(int j=0; j<groupItem->childCount(); j++)
+                    {
+                        if (((UBDocumentProxyTreeItem*)groupItem->child(j))->proxy() != mBoardController->selectedDocument())
+                        {
+                            selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy(), true);
+                            documentFound = true;
+                            break;
+                        }
+                    }
+                }
+                if (documentFound)
+                    break;
+            }
+            if (!documentFound)
+            {
+                UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(groupTi->groupName());
+                selectDocument(document, true);
+            }
+        }
+        else
+            proxyTi->parent()->setSelected(true);
+    }
+
+    QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
+    proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
+    UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
+
+    proxyTi->parent()->removeChild(proxyTi);
+    mTrashTi->addChild(proxyTi);
+    proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
+}
+
+void UBDocumentController::moveFolderToTrash(UBDocumentGroupTreeItem* groupTi)
+{
+    bool changeCurrentDocument = false;
+    for (int i = 0; i < groupTi->childCount(); i++)
+    {
+        UBDocumentProxyTreeItem* proxyTi  = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
+        if (proxyTi && proxyTi->proxy() && proxyTi->proxy() == mBoardController->selectedDocument())
+        {
+            changeCurrentDocument = true;
+            break;
+        }
+    }
+
+    QList<UBDocumentProxyTreeItem*> toBeDeleted;
+
+    for (int i = 0; i < groupTi->childCount(); i++)
+    {
+        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
+        if (proxyTi && proxyTi->proxy())
+            toBeDeleted << proxyTi;
+    }
+
+    for (int i = 0; i < toBeDeleted.count(); i++)
+    {
+        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
+
+        showMessage(QString("Deleting %1").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString()));
+        // Move document to trash
+        QString oldGroupName = proxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
+        proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
+        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
+
+        groupTi->removeChild(proxyTi);
+        mTrashTi->addChild(proxyTi);
+        proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
+
+        showMessage(QString("%1 deleted").arg(groupTi->groupName()));
+    }
+
+    // dont remove default group
+    if (!groupTi->isDefaultFolder())
+    {
+        int index = mDocumentUI->documentTreeWidget->indexOfTopLevelItem(groupTi);
+
+        if (index >= 0)
+        {
+            mDocumentUI->documentTreeWidget->takeTopLevelItem(index);
+        }
+    }
+
+    if (changeCurrentDocument)
+    {
+        bool documentFound = false;
+        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+        {
+            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+            if (!groupItem->isTrashFolder() && groupItem != groupTi)
+            {
+                for(int j=0; j<groupItem->childCount(); j++)
+                {
+                    if (((UBDocumentProxyTreeItem*)groupItem->child(j))->proxy() != mBoardController->selectedDocument())
+                    {
+                        selectDocument(((UBDocumentProxyTreeItem*)groupItem->child(0))->proxy(), true);
+                        documentFound = true;
+                        break;
+                    }
+                }
+            }
+            if (documentFound)
+                break;
+        }
+        if (!documentFound)
+        {
+            UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument( mDefaultDocumentGroupName );
+            selectDocument(document, true);
+        }
+    }
+
+    reloadThumbnails();
+}
+
+void UBDocumentController::deleteSelectedItem()
+{
+    if (mSelectionType == Page)
+    {
+        QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+        deletePages(selectedItems);
+    }
+    else
+    {
+
+        UBDocumentProxyTreeItem *proxyTi = selectedDocumentProxyTreeItem();
+
+        UBDocumentGroupTreeItem* groupTi = selectedDocumentGroupTreeItem();
+
+        if (proxyTi && proxyTi->proxy() && proxyTi->parent())
+        {
+            if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Document"), tr("Are you sure you want to remove the document '%1'?").arg(proxyTi->proxy()->metaData(UBSettings::documentName).toString())))
+            {
+                if (proxyTi->parent() != mTrashTi)
+                {
+                    moveDocumentToTrash(groupTi, proxyTi);
+                }
+                else
+                {
+                    // We have to physically delete document
+                    proxyTi->parent()->removeChild(proxyTi);
+                    UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
+
+                    if (mTrashTi->childCount()==0)
+                        selectDocument(NULL);
+                    else
+                        selectDocument(((UBDocumentProxyTreeItem*)mTrashTi->child(0))->proxy());
+                    reloadThumbnails();
+                }
+            }
+        }
+        else if (groupTi)
+        {
+            if (groupTi == mTrashTi)
+            {
+                if(UBApplication::mainWindow->yesNoQuestion(tr("Empty Trash"), tr("Are you sure you want to empty trash?")))
+                {
+                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+                    QList<UBDocumentProxyTreeItem*> toBeDeleted;
+
+                    for (int i = 0; i < groupTi->childCount(); i++)
+                    {
+                        UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
+                        if (proxyTi && proxyTi->proxy())
+                            toBeDeleted << proxyTi;
+                    }
+
+                    showMessage(tr("Emptying trash"));
+
+                    for (int i = 0; i < toBeDeleted.count(); i++)
+                    {
+                        UBDocumentProxyTreeItem* proxyTi = toBeDeleted.at(i);
+
+                        proxyTi->parent()->removeChild(proxyTi);
+                        UBPersistenceManager::persistenceManager()->deleteDocument(proxyTi->proxy());
+                    }
+
+                    showMessage(tr("Emptied trash"));
+
+                    QApplication::restoreOverrideCursor();
+                    mMainWindow->actionDelete->setEnabled(false);
+                }
+            }
+            else
+            {
+                if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Folder"), tr("Are you sure you want to remove the folder '%1' and all its content?").arg(groupTi->groupName())))
+                {
+                    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+                    moveFolderToTrash(groupTi);
+                    QApplication::restoreOverrideCursor();
+                }
+            }
+        }
+    }
+}
+
+
+void UBDocumentController::exportDocument()
+{
+    QAction *currentExportAction = qobject_cast<QAction *>(sender());
+    QVariant actionData = currentExportAction->data();
+    UBExportAdaptor* selectedExportAdaptor = UBDocumentManager::documentManager()->supportedExportAdaptors()[actionData.toInt()];
+
+    UBDocumentProxy* proxy = selectedDocumentProxy();
+
+    if (proxy)
+    {
+        selectedExportAdaptor->persist(proxy);
+        emit exportDone();
+    }
+    else
+    {
+       showMessage(tr("No document selected!"));
+    }
+}
+
+
+void UBDocumentController::documentZoomSliderValueChanged (int value)
+{
+    mDocumentUI->thumbnailWidget->setThumbnailWidth(value);
+
+    UBSettings::settings()->documentThumbnailWidth->set(value);
+}
+
+
+void UBDocumentController::loadDocumentProxies()
+{
+    QList<QPointer<UBDocumentProxy> > proxies = UBPersistenceManager::persistenceManager()->documentProxies;
+
+    QStringList emptyGroupNames = UBSettings::settings()->value("Document/EmptyGroupNames", QStringList()).toStringList();
+
+    mDocumentUI->documentTreeWidget->clear();
+
+    QMap<QString, UBDocumentGroupTreeItem*> groupNamesMap;
+
+    UBDocumentGroupTreeItem* emptyGroupNameTi = 0;
+
+    mTrashTi = new UBDocumentGroupTreeItem(0, false); // deleted by the tree widget
+    mTrashTi->setGroupName(mDocumentTrashGroupName);
+    mTrashTi->setIcon(0, QIcon(":/images/trash.png"));
+
+    foreach (QPointer<UBDocumentProxy> proxy, proxies)
+    {
+        if (proxy)
+        {
+            QString docGroup = proxy->metaData(UBSettings::documentGroupName).toString();
+
+            bool isEmptyGroupName = false;
+            bool isInTrash = false;
+
+            if (docGroup.isEmpty()) // #see https://trac.assembla.com/uniboard/ticket/426
+            {
+                docGroup = mDefaultDocumentGroupName;
+                isEmptyGroupName = true;
+            }
+            else if (docGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
+            {
+                isInTrash = true;
+            }
+
+            QString docName = proxy->metaData(UBSettings::documentName).toString();
+
+            if (emptyGroupNames.contains(docGroup))
+                emptyGroupNames.removeAll(docGroup);
+
+            if (!groupNamesMap.contains(docGroup) && !isInTrash)
+            {
+                UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0, !isEmptyGroupName); // deleted by the tree widget
+                groupNamesMap.insert(docGroup, docGroupItem);
+                docGroupItem->setGroupName(docGroup);
+
+                if (isEmptyGroupName)
+                    emptyGroupNameTi = docGroupItem;
+            }
+
+            UBDocumentGroupTreeItem* docGroupItem;
+            if (isInTrash)
+                docGroupItem = mTrashTi;
+            else
+                docGroupItem = groupNamesMap.value(docGroup);
+
+            QTreeWidgetItem* docItem = new UBDocumentProxyTreeItem(docGroupItem, proxy, !isInTrash);
+            docItem->setText(0, docName);
+
+            if (mBoardController->selectedDocument() == proxy)
+            {
+                mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
+                mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
+            }
+        }
+    }
+
+    foreach (const QString emptyGroupName, emptyGroupNames)
+    {
+        UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
+        groupNamesMap.insert(emptyGroupName, docGroupItem);
+        docGroupItem->setGroupName(emptyGroupName);
+    }
+
+    QList<QString> groupNamesList = groupNamesMap.keys();
+    qSort(groupNamesList);
+
+    foreach (const QString groupName, groupNamesList)
+    {
+        UBDocumentGroupTreeItem* ti = groupNamesMap.value(groupName);
+
+        if (ti != emptyGroupNameTi)
+            mDocumentUI->documentTreeWidget->addTopLevelItem(ti);
+    }
+
+    if (emptyGroupNameTi)
+        mDocumentUI->documentTreeWidget->addTopLevelItem(emptyGroupNameTi);
+
+    mDocumentUI->documentTreeWidget->addTopLevelItem(mTrashTi);
+}
+
+
+void UBDocumentController::itemClicked(QTreeWidgetItem * item, int column )
+{
+    Q_UNUSED(item);
+    Q_UNUSED(column);
+
+    selectDocument(selectedDocumentProxy(), false);
+    itemSelectionChanged();
+}
+
+
+void UBDocumentController::itemChanged(QTreeWidgetItem * item, int column)
+{
+    UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
+
+    disconnect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*))
+            , this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
+
+    if (proxyItem)
+    {
+        if (proxyItem->proxy()->metaData(UBSettings::documentName).toString() != item->text(column))
+        {
+            proxyItem->proxy()->setMetaData(UBSettings::documentName, item->text(column));
+            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyItem->proxy());
+        }
+    }
+    else
+    {
+        // it is a group
+        UBDocumentGroupTreeItem* editedGroup = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+        if (editedGroup)
+        {
+            for (int i = 0; i < item->childCount(); i++)
+            {
+                UBDocumentProxyTreeItem* childItem = dynamic_cast<UBDocumentProxyTreeItem*>(item->child(i));
+
+                if (childItem)
+                {
+                    QString groupName;
+                    if (0 != (item->flags() & Qt::ItemIsEditable))
+                    {
+                        childItem->proxy()->setMetaData(UBSettings::documentGroupName, item->text(column));
+                        UBPersistenceManager::persistenceManager()->persistDocumentMetadata(childItem->proxy());
+                    }
+                }
+            }
+        }
+    }
+
+    connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)),
+            this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
+}
+
+
+void UBDocumentController::importFile()
+{
+    UBDocumentGroupTreeItem* group = selectedDocumentGroupTreeItem();
+    UBDocumentManager *docManager = UBDocumentManager::documentManager();
+
+    if (group)
+    {
+        QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
+        QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"),
+                defaultPath, docManager->importFileFilter());
+
+        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        QApplication::processEvents();
+        QFileInfo fileInfo(filePath);
+        UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
+
+        if (filePath.length() > 0)
+        {
+            UBDocumentProxy* createdDocument = 0;
+            QApplication::processEvents();
+            QFile selectedFile(filePath);
+
+            QString groupName = group->groupName();
+
+            if (groupName == mDefaultDocumentGroupName || fileInfo.suffix() != "ubz")
+                groupName = "";
+
+            showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
+
+            createdDocument = docManager->importFile(selectedFile, groupName);
+
+            if (createdDocument)
+            {
+                selectDocument(createdDocument, false);
+            }
+            else
+            {
+                showMessage(tr("Failed to import file ... "));
+            }
+        }
+
+        QApplication::restoreOverrideCursor();
+    }
+}
+
+void UBDocumentController::addFolderOfImages()
+{
+    UBDocumentProxy* document = selectedDocumentProxy();
+
+    if (document)
+    {
+        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
+
+        QString imagesDir = QFileDialog::getExistingDirectory(mParentWidget, tr("Import all Images from Folder"), defaultPath);
+        QDir parentImageDir(imagesDir);
+        parentImageDir.cdUp();
+
+        UBSettings::settings()->lastImportFolderPath->set(QVariant(parentImageDir.absolutePath()));
+
+        if (imagesDir.length() > 0)
+        {
+            QDir dir(imagesDir);
+
+            int importedImageNumber
+                  = UBDocumentManager::documentManager()->addImageDirToDocument(dir, document);
+
+            if (importedImageNumber == 0)
+            {
+                showMessage(tr("Folder does not contain any image files"));
+                UBApplication::applicationController->showDocument();
+            }
+            else
+            {
+                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+                UBMetadataDcSubsetAdaptor::persist(document);
+                reloadThumbnails();
+            }
+        }
+    }
+}
+
+
+void UBDocumentController::addFileToDocument()
+{
+    UBDocumentProxy* document = selectedDocumentProxy();
+
+    if (document)
+    {
+         addFileToDocument(document);
+         reloadThumbnails();
+    }
+}
+
+
+bool UBDocumentController::addFileToDocument(UBDocumentProxy* document)
+{
+    QString defaultPath = UBSettings::settings()->lastImportFilePath->get().toString();
+    QString filePath = QFileDialog::getOpenFileName(mParentWidget, tr("Open Supported File"), defaultPath, UBDocumentManager::documentManager()->importFileFilter());
+
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    QApplication::processEvents();
+
+    QFileInfo fileInfo(filePath);
+    UBSettings::settings()->lastImportFilePath->set(QVariant(fileInfo.absolutePath()));
+
+    bool success = false;
+
+    if (filePath.length() > 0)
+    {
+        QApplication::processEvents(); // NOTE: We performed this just a few lines before. Is it really necessary to do it again here??
+        QFile selectedFile(filePath);
+
+        showMessage(tr("Importing file %1...").arg(fileInfo.baseName()), true);
+
+        QStringList fileNames;
+        fileNames << filePath;
+        success = UBDocumentManager::documentManager()->addFilesToDocument(document, fileNames);
+
+        if (success)
+        {
+            document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(document);
+        }
+        else
+        {
+            showMessage(tr("Failed to import file ... "));
+        }
+    }
+
+    QApplication::restoreOverrideCursor();
+
+    return success;
+}
+
+
+void UBDocumentController::moveSceneToIndex(UBDocumentProxy* proxy, int source, int target)
+{
+    if (UBDocumentContainer::movePageToIndex(source, target))
+    {
+        proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        UBMetadataDcSubsetAdaptor::persist(proxy);
+    
+        mDocumentUI->thumbnailWidget->hightlightItem(target);
+    }
+}
+
+
+void UBDocumentController::thumbnailViewResized()
+{
+    int maxWidth = qMin(UBSettings::maxThumbnailWidth, mDocumentUI->thumbnailWidget->width());
+
+    mDocumentUI->documentZoomSlider->setMaximum(maxWidth);
+}
+
+
+void UBDocumentController::pageSelectionChanged()
+{
+    if (mIsClosing)
+        return;
+
+    bool pageSelected = mDocumentUI->thumbnailWidget->selectedItems().count() > 0;
+
+    if (pageSelected)
+        mSelectionType = Page;
+    else
+        mSelectionType = None;
+
+    selectionChanged();
+}
+
+
+void UBDocumentController::selectionChanged()
+{
+    if (mIsClosing)
+        return;
+
+    int pageCount = -1;
+
+    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
+
+    if (proxyTi && proxyTi->proxy())
+        pageCount = proxyTi->proxy()->pageCount();
+
+    bool pageSelected = (mSelectionType == Page);
+    bool groupSelected = (mSelectionType == Folder);
+    bool docSelected = (mSelectionType == Document);
+
+    bool trashSelected = false;
+    if (groupSelected && selectedDocumentGroupTreeItem())
+        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
+
+    if ((docSelected || pageSelected) && proxyTi)
+        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
+
+    bool defaultGroupSelected = false;
+    if (groupSelected && selectedDocumentGroupTreeItem())
+        defaultGroupSelected = selectedDocumentGroupTreeItem()->isDefaultFolder();
+
+    mMainWindow->actionNewDocument->setEnabled((groupSelected || docSelected || pageSelected) && !trashSelected);
+    mMainWindow->actionExport->setEnabled((docSelected || pageSelected) && !trashSelected);
+	bool firstSceneSelected = false;
+    if(docSelected)
+    	mMainWindow->actionDuplicate->setEnabled(!trashSelected);
+    else if(pageSelected){
+    	QList<QGraphicsItem*> selection = mDocumentUI->thumbnailWidget->selectedItems();
+    	if(pageCount == 1)
+    		mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
+    	else{
+    		for(int i = 0; i < selection.count() && !firstSceneSelected; i += 1){
+    			if(dynamic_cast<UBSceneThumbnailPixmap*>(selection.at(i))->sceneIndex() == 0){
+    				mMainWindow->actionDuplicate->setEnabled(!trashSelected && pageCanBeDuplicated(UBDocumentContainer::pageFromSceneIndex(0)));
+    				firstSceneSelected = true;
+    			}
+    		}
+    		if(!firstSceneSelected)
+    			mMainWindow->actionDuplicate->setEnabled(!trashSelected);
+    	}
+    }
+    else
+    	mMainWindow->actionDuplicate->setEnabled(false);
+
+    mMainWindow->actionOpen->setEnabled((docSelected || pageSelected) && !trashSelected);
+    mMainWindow->actionRename->setEnabled((groupSelected || docSelected) && !trashSelected && !defaultGroupSelected);
+
+    mMainWindow->actionAddToWorkingDocument->setEnabled(pageSelected
+            && !(selectedDocumentProxy() == mBoardController->selectedDocument()) && !trashSelected);
+
+    bool deleteEnabled = false;
+    if (trashSelected)
+    {
+        if (docSelected)
+            deleteEnabled = true;
+        else if (groupSelected && selectedDocumentGroupTreeItem())
+        {
+            if (selectedDocumentGroupTreeItem()->childCount() > 0)
+                deleteEnabled = true;
+        }
+    }
+    else
+    {
+        deleteEnabled = groupSelected || docSelected || pageSelected;
+    }
+
+    if (pageSelected && (pageCount == mDocumentUI->thumbnailWidget->selectedItems().count()))
+    {
+        deleteEnabled = false;
+    }
+
+    if(pageSelected && firstSceneSelected)
+    	deleteEnabled = false;
+
+    mMainWindow->actionDelete->setEnabled(deleteEnabled);
+
+    if (trashSelected)
+    {
+        if (docSelected)
+        {
+            mMainWindow->actionDelete->setIcon(QIcon(":/images/toolbar/deleteDocument.png"));
+            mMainWindow->actionDelete->setText(tr("Delete"));
+        }
+        else
+        {
+            mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
+            mMainWindow->actionDelete->setText(tr("Empty"));
+        }
+    }
+    else
+    {
+        mMainWindow->actionDelete->setIcon(QIcon(":/images/trash.png"));
+        mMainWindow->actionDelete->setText(tr("Trash"));
+    }
+
+    mMainWindow->actionDocumentAdd->setEnabled((docSelected || pageSelected) && !trashSelected);
+    mMainWindow->actionImport->setEnabled(!trashSelected);
+
+}
+
+
+void UBDocumentController::documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex)
+{
+    Q_UNUSED(pSceneIndex);
+
+    if (proxy == selectedDocumentProxy())
+    {
+        reloadThumbnails();
+    }
+}
+
+
+void UBDocumentController::pageDoubleClicked(QGraphicsItem* item, int index)
+{
+    Q_UNUSED(item);
+    Q_UNUSED(index);
+
+    bool pageSelected = (mSelectionType == Page);
+    bool groupSelected = (mSelectionType == Folder);
+    bool docSelected = (mSelectionType == Document);
+
+    bool trashSelected = false;
+    if (groupSelected && selectedDocumentGroupTreeItem())
+        trashSelected = selectedDocumentGroupTreeItem()->isTrashFolder();
+    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
+    if ((docSelected || pageSelected) && proxyTi)
+        trashSelected = dynamic_cast<UBDocumentGroupTreeItem*>(proxyTi->parent())->isTrashFolder();
+    if (trashSelected) return;
+
+    openSelectedItem();
+}
+
+
+void UBDocumentController::pageClicked(QGraphicsItem* item, int index)
+{
+    Q_UNUSED(item);
+    Q_UNUSED(index);
+
+    pageSelectionChanged();
+}
+
+
+void UBDocumentController::closing()
+{
+    mIsClosing = true;
+
+    QStringList emptyGroups;
+
+    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+
+        if (item->childCount() == 0)
+        {
+            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+            if (groupItem)
+            {
+                QString groupName = groupItem->groupName();
+                if (!emptyGroups.contains(groupName) && groupName != mDocumentTrashGroupName)
+                    emptyGroups << groupName;
+            }
+        }
+    }
+
+    UBSettings::settings()->setValue("Document/EmptyGroupNames", emptyGroups);
+
+}
+
+void UBDocumentController::addToDocument()
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+    if (selectedItems.count() > 0)
+    {
+        int oldActiveSceneIndex = mBoardController->activeSceneIndex();
+
+        QList<QPair<UBDocumentProxy*, int> > pageInfoList;
+
+        foreach (QGraphicsItem* item, selectedItems)
+        {
+            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
+
+            if (thumb &&  thumb->proxy())
+            {
+                QPair<UBDocumentProxy*, int> pageInfo(thumb->proxy(), thumb->sceneIndex());
+                pageInfoList << pageInfo;
+            }
+        }
+
+        for (int i = 0; i < pageInfoList.length(); i++)
+        {
+            mBoardController->addScene(pageInfoList.at(i).first, pageInfoList.at(i).second, true);
+        }
+
+        int newActiveSceneIndex = selectedItems.count() == mBoardController->selectedDocument()->pageCount() ? 0 : oldActiveSceneIndex + 1;
+        mDocumentUI->thumbnailWidget->selectItemAt(newActiveSceneIndex, false);
+        selectDocument(mBoardController->selectedDocument());
+        mBoardController->selectedDocument()->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+        UBMetadataDcSubsetAdaptor::persist(mBoardController->selectedDocument());
+
+        UBApplication::applicationController->showBoard();
+    }
+
+    QApplication::restoreOverrideCursor();
+}
+
+
+void UBDocumentController::addDocumentInTree(UBDocumentProxy* pDocument)
+{
+    QString documentName = pDocument->name();
+    QString documentGroup = pDocument->groupName();
+    if (documentGroup.isEmpty())
+    {
+        documentGroup = mDefaultDocumentGroupName;
+    }
+    UBDocumentGroupTreeItem* group = 0;
+    if (documentGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
+    {
+        group = mTrashTi;
+    }
+    else
+    {
+        for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+        {
+            QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+            UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+            if (groupItem->groupName() == documentGroup)
+            {
+                group = groupItem;
+                break;
+            }
+        }
+    }
+
+    if (group == 0)
+    {
+        group = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
+        group->setGroupName(documentGroup);
+        mDocumentUI->documentTreeWidget->addTopLevelItem(group);
+    }
+
+    UBDocumentProxyTreeItem *ti = new UBDocumentProxyTreeItem(group, pDocument, !group->isTrashFolder());
+    ti->setText(0, documentName);
+}
+
+
+void UBDocumentController::updateDocumentInTree(UBDocumentProxy* pDocument)
+{
+    QTreeWidgetItemIterator it(mDocumentUI->documentTreeWidget);
+    while (*it)
+    {
+        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>((*it));
+
+        if (pi && pi->proxy() == pDocument)
+        {
+            pi->setText(0, pDocument->name());
+            break;
+        }
+        ++it;
+    }
+}
+
+
+QStringList UBDocumentController::allGroupNames()
+{
+    QStringList result;
+
+    for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
+        UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
+        result << groupItem->groupName();
+    }
+
+    return result;
+}
+
+
+void UBDocumentController::renameSelectedItem()
+{
+    if (mDocumentUI->documentTreeWidget->selectedItems().count() > 0)
+        mDocumentUI->documentTreeWidget->editItem(mDocumentUI->documentTreeWidget->selectedItems().at(0));
+}
+
+
+bool UBDocumentController::isOKToOpenDocument(UBDocumentProxy* proxy)
+{
+    //check version
+    QString docVersion = proxy->metaData(UBSettings::documentVersion).toString();
+
+    if (docVersion.isEmpty() || docVersion.startsWith("4.1") || docVersion.startsWith("4.2")
+            || docVersion.startsWith("4.3") || docVersion.startsWith("4.4") || docVersion.startsWith("4.5")
+            || docVersion.startsWith("4.6")) // TODO UB 4.7 update if necessary
+    {
+        return true;
+    }
+    else
+    {
+        if (UBApplication::mainWindow->yesNoQuestion(tr("Open Document"),
+                tr("The document '%1' has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?")
+                    .arg(proxy->metaData(UBSettings::documentName).toString())
+                    .arg(docVersion)))
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+}
+
+
+void UBDocumentController::showMessage(const QString& message, bool showSpinningWheel)
+{
+    if (mMessageWindow)
+    {
+        int margin = UBSettings::boardMargin;
+
+        QRect newSize = mDocumentUI->thumbnailWidget->geometry();
+
+        #ifdef Q_WS_MACX
+            QPoint point(newSize.left() + margin, newSize.bottom() - mMessageWindow->height() - margin);
+            mMessageWindow->move(mDocumentUI->thumbnailWidget->mapToGlobal(point));
+        #else
+            mMessageWindow->move(margin, newSize.height() - mMessageWindow->height() - margin);
+        #endif
+
+        mMessageWindow->showMessage(message, showSpinningWheel);
+    }
+}
+
+
+void UBDocumentController::hideMessage()
+{
+    if (mMessageWindow)
+        mMessageWindow->hideMessage();
+}
+
+
+void UBDocumentController::addImages()
+{
+    UBDocumentProxy* document = selectedDocumentProxy();
+
+    if (document)
+    {
+        QString defaultPath = UBSettings::settings()->lastImportFolderPath->get().toString();
+
+        QString extensions;
+
+        foreach (QString ext, UBSettings::settings()->imageFileExtensions)
+        {
+            extensions += " *.";
+            extensions += ext;
+        }
+
+        QStringList images = QFileDialog::getOpenFileNames(mParentWidget, tr("Add all Images to Document"),
+                defaultPath, tr("All Images (%1)").arg(extensions));
+
+        if (images.length() > 0)
+        {
+            QFileInfo firstImage(images.at(0));
+
+            UBSettings::settings()->lastImportFolderPath->set(QVariant(firstImage.absoluteDir().absolutePath()));
+
+            int importedImageNumber
+                = UBDocumentManager::documentManager()->addFilesToDocument(document, images);
+
+            if (importedImageNumber == 0)
+            {
+                UBApplication::showMessage(tr("Selection does not contain any image files!"));
+                UBApplication::applicationController->showDocument();
+            }
+            else
+            {
+                document->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+                UBMetadataDcSubsetAdaptor::persist(document);
+                reloadThumbnails();
+            }
+        }
+    }
+}
+
+
+void UBDocumentController::toggleDocumentToolsPalette()
+{
+    if (!mToolsPalette->isVisible() && !mToolsPalettePositionned)
+    {
+        mToolsPalette->adjustSizeAndPosition();
+        int left = controlView()->width() - 20 - mToolsPalette->width();
+        int top = (controlView()->height() - mToolsPalette->height()) / 2;
+
+        mToolsPalette->setCustomPosition(true);
+        mToolsPalette->move(left, top);
+
+        mToolsPalettePositionned = true;
+    }
+
+    bool visible = mToolsPalette->isVisible();
+    mToolsPalette->setVisible(!visible);
+}
+
+
+void UBDocumentController::cut()
+{
+    // TODO - implemented me
+}
+
+
+void UBDocumentController::copy()
+{
+    // TODO - implemented me
+}
+
+
+void UBDocumentController::paste()
+{
+    // TODO - implemented me
+}
+
+
+void UBDocumentController::focusChanged(QWidget *old, QWidget *current)
+{
+    Q_UNUSED(old);
+
+    if (current == mDocumentUI->thumbnailWidget)
+    {
+        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
+            mSelectionType = Page;
+        else
+            mSelectionType = None;
+    }
+    else if (current == mDocumentUI->documentTreeWidget)
+    {
+        if (selectedDocumentProxy())
+            mSelectionType = Document;
+        else if (selectedDocumentGroupTreeItem())
+            mSelectionType = Folder;
+        else
+            mSelectionType = None;
+    }
+    else if (current == mDocumentUI->documentZoomSlider)
+    {
+        if (mDocumentUI->thumbnailWidget->selectedItems().count() > 0)
+            mSelectionType = Page;
+        else
+            mSelectionType = None;
+    }
+    else
+    {
+        if (old != mDocumentUI->thumbnailWidget &&
+            old != mDocumentUI->documentTreeWidget &&
+            old != mDocumentUI->documentZoomSlider)
+        {
+            mSelectionType = None;
+        }
+    }
+
+    selectionChanged();
+}
+
+void UBDocumentController::deletePages(QList<QGraphicsItem *> itemsToDelete)
+{
+    if (itemsToDelete.count() > 0)
+    {
+        QList<int> sceneIndexes;
+        UBDocumentProxy* proxy = 0;
+
+        foreach (QGraphicsItem* item, itemsToDelete)
+        {
+            UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (item);
+
+            if (thumb)
+            {
+                proxy = thumb->proxy();
+                if (proxy)
+                {
+                    sceneIndexes.append(thumb->sceneIndex());
+                }
+            }
+        }
+
+        if(UBApplication::mainWindow->yesNoQuestion(tr("Remove Page"), tr("Are you sure you want to remove %n page(s) from the selected document '%1'?", "", sceneIndexes.count()).arg(proxy->metaData(UBSettings::documentName).toString())))
+        {
+            UBDocumentContainer::deletePages(sceneIndexes);
+
+            proxy->setMetaData(UBSettings::documentUpdatedAt, UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+            UBMetadataDcSubsetAdaptor::persist(proxy);
+
+            int minIndex = proxy->pageCount() - 1;
+            foreach (int i, sceneIndexes)
+                 minIndex = qMin(i, minIndex);
+
+            mDocumentUI->thumbnailWidget->selectItemAt(minIndex);
+        }
+    }
+}
+
+int UBDocumentController::getSelectedItemIndex()
+{
+    QList<QGraphicsItem*> selectedItems = mDocumentUI->thumbnailWidget->selectedItems();
+
+    if (selectedItems.count() > 0)
+    {
+        UBSceneThumbnailPixmap* thumb = dynamic_cast<UBSceneThumbnailPixmap*> (selectedItems.last());
+        return thumb->sceneIndex();
+    }
+    else return -1;
+}
+
+bool UBDocumentController::pageCanBeMovedUp(int page)
+{
+	if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+		return page >= 2;
+	else
+		return page >= 1;
+}
+
+bool UBDocumentController::pageCanBeMovedDown(int page)
+{
+	if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+		return page != 0 && page < selectedDocument()->pageCount() - 1;
+	else
+		return page < selectedDocument()->pageCount() - 1;
+}
+
+bool UBDocumentController::pageCanBeDuplicated(int page)
+{
+	return page != 0;
+}
+
+bool UBDocumentController::pageCanBeDeleted(int page)
+{
+	return page != 0;
+}
+
+void UBDocumentController::refreshDocumentThumbnailsView(UBDocumentContainer*)
+{
+    QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+    QList<QGraphicsItem*> items;
+    QList<QUrl> itemsPath;
+
+    UBDocumentProxy *proxy = selectedDocumentProxy();
+    QGraphicsPixmapItem *selection = 0;
+
+    QStringList labels;
+
+    if (proxy) 
+    {
+        setDocument(proxy); 
+
+        for (int i = 0; i < selectedDocument()->pageCount(); i++)
+        {
+            const QPixmap* pix = pageAt(i);
+            QGraphicsPixmapItem *pixmapItem = new UBSceneThumbnailPixmap(*pix, proxy, i); // deleted by the tree widget
+
+            if (proxy == mBoardController->selectedDocument() && mBoardController->activeSceneIndex() == i)
+            {
+                selection = pixmapItem;
+            }
+
+            items << pixmapItem;
+            int pageIndex = pageFromSceneIndex(i);
+            if(pageIndex)
+            	labels << tr("Page %1").arg(pageIndex);
+            else
+            	labels << tr("Title page");
+
+            itemsPath.append(QUrl::fromLocalFile(proxy->persistencePath() + QString("/pages/%1").arg(UBDocumentContainer::pageFromSceneIndex(i))));
+        }
+    }
+
+    mDocumentUI->thumbnailWidget->setGraphicsItems(items, itemsPath, labels, UBApplication::mimeTypeUniboardPage);
+
+    UBDocumentProxyTreeItem* proxyTi = selectedDocumentProxyTreeItem();
+    if (proxyTi && (proxyTi->parent() == mTrashTi))
+        mDocumentUI->thumbnailWidget->setDragEnabled(false);
+    else
+        mDocumentUI->thumbnailWidget->setDragEnabled(true);
+
+    mDocumentUI->thumbnailWidget->ensureVisible(0, 0, 10, 10);
+
+    if (selection) {
+        disconnect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
+        UBSceneThumbnailPixmap *currentScene = dynamic_cast<UBSceneThumbnailPixmap*>(selection);
+        if (currentScene)
+            mDocumentUI->thumbnailWidget->hightlightItem(currentScene->sceneIndex());
+        connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged()));
+    }
+
+    QApplication::restoreOverrideCursor();
+}
diff --git a/Sankore-3.1/src/document/UBDocumentController.h b/Sankore-3.1/src/document/UBDocumentController.h
index f3e387b..0adc46c 100644
--- a/Sankore-3.1/src/document/UBDocumentController.h
+++ b/Sankore-3.1/src/document/UBDocumentController.h
@@ -1,140 +1,153 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#ifndef UBDOCUMENTCONTROLLER_H_
-#define UBDOCUMENTCONTROLLER_H_
-
-#include <QtGui>
-
-namespace Ui
-{
-    class documents;
-}
-
-#include "gui/UBMessageWindow.h"
-
-class UBGraphicsScene;
-class QDialog;
-class UBDocumentProxy;
-class UBBoardController;
-class UBThumbnailsScene;
-class UBDocumentGroupTreeItem;
-class UBDocumentProxyTreeItem;
-class UBMainWindow;
-class UBDocumentToolsPalette;
-
-class UBDocumentController : public QObject
-{
-    Q_OBJECT;
-
-    public:
-        UBDocumentController(UBMainWindow* mainWindow);
-        virtual ~UBDocumentController();
-
-        void closing();
-        QWidget* controlView();
-        UBDocumentProxyTreeItem* findDocument(UBDocumentProxy* proxy);
-        bool addFileToDocument(UBDocumentProxy* document);
-        UBDocumentProxy* getCurrentDocument() { return mCurrentDocument; };
-        void deletePages(QList<QGraphicsItem*> itemsToDelete);
-        int getSelectedItemIndex();
-
-    signals:
-        void refreshThumbnails();
-        void exportDone();
-        void movedToIndex(int index);
-
-    public slots:
-        void createNewDocument();
-        void createNewDocumentGroup();
-        void deleteSelectedItem();
-        void renameSelectedItem();
-        void openSelectedItem();
-        void duplicateSelectedItem();
-        void importFile();
-        void moveSceneToIndex(UBDocumentProxy* proxy, int source, int target);
-        void selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument = true);
-        void show();
-        void hide();
-        void showMessage(const QString& message, bool showSpinningWheel);
-        void hideMessage();
-        void toggleDocumentToolsPalette();
-        void cut();
-        void copy();
-        void paste();
-        void focusChanged(QWidget *old, QWidget *current);
-        void reloadThumbs();
-
-    protected:
-        virtual void setupViews();
-        virtual void setupToolbar();
-        void setupPalettes();
-        bool isOKToOpenDocument(UBDocumentProxy* proxy);
-        UBGraphicsScene* activeScene();
-        UBDocumentProxy* selectedDocumentProxy();
-        UBDocumentProxyTreeItem* selectedDocumentProxyTreeItem();
-        UBDocumentGroupTreeItem* selectedDocumentGroupTreeItem();
-        QStringList allGroupNames();
-
-        enum LastSelectedElementType
-        {
-            None = 0, Folder, Document, Page
-        };
-
-        LastSelectedElementType mSelectionType;
-
-    private:
-        QWidget *mParentWidget;
-        UBBoardController *mBoardController;
-        Ui::documents* mDocumentUI;
-        UBMainWindow* mMainWindow;
-        QWidget *mDocumentWidget;
-        QPointer<UBMessageWindow> mMessageWindow;
-        QAction* mAddFolderOfImagesAction;
-        QAction* mAddFileToDocumentAction;
-        QAction* mAddImagesAction;
-        bool mIsClosing;
-        UBDocumentToolsPalette *mToolsPalette;
-        bool mToolsPalettePositionned;
-        UBDocumentGroupTreeItem* mTrashTi;
-        UBDocumentProxy* mCurrentDocument;
-        QList<QPixmap> mDocumentThumbs;
-
-    private slots:
-        void documentZoomSliderValueChanged (int value);
-        void loadDocumentProxies();
-        void itemSelectionChanged();
-        void refreshDocumentThumbnailsView();
-        void exportDocument();
-        void itemChanged(QTreeWidgetItem * item, int column);
-        void thumbnailViewResized();
-        void pageSelectionChanged();
-        void selectionChanged();
-        void documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex);
-        void pageDoubleClicked(QGraphicsItem* item, int index);
-        void pageClicked(QGraphicsItem* item, int index);
-        void itemClicked(QTreeWidgetItem * item, int column );
-        void addToDocument();
-        void addDocumentInTree(UBDocumentProxy* pDocument);
-        void updateDocumentInTree(UBDocumentProxy* pDocument);
-        void addFolderOfImages();
-        void addFileToDocument();
-        void addImages();
-
-};
-
-
-
-#endif /* UBDOCUMENTCONTROLLER_H_ */
+
+
+#ifndef UBDOCUMENTCONTROLLER_H_
+#define UBDOCUMENTCONTROLLER_H_
+
+#include <QtGui>
+#include "document/UBDocumentContainer.h"
+
+namespace Ui
+{
+    class documents;
+}
+
+#include "gui/UBMessageWindow.h"
+
+class UBGraphicsScene;
+class QDialog;
+class UBDocumentProxy;
+class UBBoardController;
+class UBThumbnailsScene;
+class UBDocumentGroupTreeItem;
+class UBDocumentProxyTreeItem;
+class UBMainWindow;
+class UBDocumentToolsPalette;
+
+class UBDocumentController : public UBDocumentContainer
+{
+    Q_OBJECT;
+
+    public:
+        UBDocumentController(UBMainWindow* mainWindow);
+        virtual ~UBDocumentController();
+
+        void closing();
+        QWidget* controlView();
+        UBDocumentProxyTreeItem* findDocument(UBDocumentProxy* proxy);
+        bool addFileToDocument(UBDocumentProxy* document);
+        void deletePages(QList<QGraphicsItem*> itemsToDelete);
+        int getSelectedItemIndex();
+
+        bool pageCanBeMovedUp(int page);
+        bool pageCanBeMovedDown(int page);
+        bool pageCanBeDuplicated(int page);
+        bool pageCanBeDeleted(int page);
+        QString documentTrashGroupName(){ return mDocumentTrashGroupName;}
+        QString defaultDocumentGroupName(){ return mDefaultDocumentGroupName;}
+
+    signals:
+        void exportDone();
+
+    public slots:
+        void createNewDocument();
+        void createNewDocumentGroup();
+        void deleteSelectedItem();
+        void renameSelectedItem();
+        void openSelectedItem();
+        void duplicateSelectedItem();
+        void importFile();
+        void moveSceneToIndex(UBDocumentProxy* proxy, int source, int target);
+        void selectDocument(UBDocumentProxy* proxy, bool setAsCurrentDocument = true);
+        void show();
+        void hide();
+        void showMessage(const QString& message, bool showSpinningWheel = false);
+        void hideMessage();
+        void toggleDocumentToolsPalette();
+        void cut();
+        void copy();
+        void paste();
+        void focusChanged(QWidget *old, QWidget *current);
+
+    protected:
+        virtual void setupViews();
+        virtual void setupToolbar();
+        void setupPalettes();
+        bool isOKToOpenDocument(UBDocumentProxy* proxy);
+        UBDocumentProxy* selectedDocumentProxy();
+        UBDocumentProxyTreeItem* selectedDocumentProxyTreeItem();
+        UBDocumentGroupTreeItem* selectedDocumentGroupTreeItem();
+        QStringList allGroupNames();
+
+        enum LastSelectedElementType
+        {
+            None = 0, Folder, Document, Page
+        };
+
+        LastSelectedElementType mSelectionType;
+
+    private:
+        QWidget *mParentWidget;
+        UBBoardController *mBoardController;
+        Ui::documents* mDocumentUI;
+        UBMainWindow* mMainWindow;
+        QWidget *mDocumentWidget;
+        QPointer<UBMessageWindow> mMessageWindow;
+        QAction* mAddFolderOfImagesAction;
+        QAction* mAddFileToDocumentAction;
+        QAction* mAddImagesAction;
+        bool mIsClosing;
+        UBDocumentToolsPalette *mToolsPalette;
+        bool mToolsPalettePositionned;
+        UBDocumentGroupTreeItem* mTrashTi;
+
+        void moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi, UBDocumentProxyTreeItem *proxyTi);
+        void moveFolderToTrash(UBDocumentGroupTreeItem* groupTi);
+        QString mDocumentTrashGroupName;
+        QString mDefaultDocumentGroupName;
+
+    private slots:
+        void documentZoomSliderValueChanged (int value);
+        void loadDocumentProxies();
+        void itemSelectionChanged();
+        void exportDocument();
+        void itemChanged(QTreeWidgetItem * item, int column);
+        void thumbnailViewResized();
+        void pageSelectionChanged();
+        void selectionChanged();
+        void documentSceneChanged(UBDocumentProxy* proxy, int pSceneIndex);
+        void pageDoubleClicked(QGraphicsItem* item, int index);
+        void pageClicked(QGraphicsItem* item, int index);
+        void itemClicked(QTreeWidgetItem * item, int column );
+        void addToDocument();
+        void addDocumentInTree(UBDocumentProxy* pDocument);
+        void updateDocumentInTree(UBDocumentProxy* pDocument);
+        void addFolderOfImages();
+        void addFileToDocument();
+        void addImages();
+
+        void refreshDocumentThumbnailsView(UBDocumentContainer* source);
+};
+
+
+
+#endif /* UBDOCUMENTCONTROLLER_H_ */
diff --git a/Sankore-3.1/src/document/UBDocumentProxy.cpp b/Sankore-3.1/src/document/UBDocumentProxy.cpp
index a128a16..82f95df 100644
--- a/Sankore-3.1/src/document/UBDocumentProxy.cpp
+++ b/Sankore-3.1/src/document/UBDocumentProxy.cpp
@@ -1,232 +1,239 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#include "UBDocumentProxy.h"
-
-#include "frameworks/UBStringUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBSettings.h"
-#include "core/UBDocumentManager.h"
-
-#include "core/memcheck.h"
-
-UBDocumentProxy::UBDocumentProxy()
-    : mPageCount(0)
-{
-    init();
-}
-
-
-UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath)
-    : mPageCount(0)
-{
-    init();
-    setPersistencePath(pPersistancePath);
-}
-
-
-void UBDocumentProxy::init()
-{
-    setMetaData(UBSettings::documentGroupName, "");
-
-    QDateTime now = QDateTime::currentDateTime();
-    setMetaData(UBSettings::documentName, now.toString(Qt::SystemLocaleShortDate));
-
-    setUuid(QUuid::createUuid());
-
-    setDefaultDocumentSize(UBSettings::settings()->pageSize->get().toSize());
-
-    //teacherGuide metadata
-    setMetaData(UBSettings::sessionTitle,"");
-    setMetaData(UBSettings::sessionAuthors,"");
-    setMetaData(UBSettings::sessionObjectives,"");
-    setMetaData(UBSettings::sessionKeywords,"");
-    setMetaData(UBSettings::sessionGradeLevel,"");
-    setMetaData(UBSettings::sessionSubjects,"");
-    setMetaData(UBSettings::sessionType,"");
-    setMetaData(UBSettings::sessionLicence,"");
-}
-
-
-UBDocumentProxy::~UBDocumentProxy()
-{
-    // NOOP
-}
-
-
-int UBDocumentProxy::pageCount()
-{
-    return mPageCount;
-}
-
-
-void UBDocumentProxy::setPageCount(int pPageCount)
-{
-    mPageCount = pPageCount;
-}
-
-
-int UBDocumentProxy::incPageCount()
-{
-    if (mPageCount <= 0)
-    {
-        mPageCount = 1;
-    }
-    else
-    {
-        mPageCount++;
-    }
-
-    return mPageCount;
-
-}
-
-
-int UBDocumentProxy::decPageCount()
-{
-    mPageCount --;
-
-    if (mPageCount < 0)
-    {
-        mPageCount = 0;
-    }
-
-    return mPageCount;
-}
-
-QString UBDocumentProxy::persistencePath() const
-{
-    return mPersistencePath;
-}
-
-void UBDocumentProxy::setPersistencePath(const QString& pPersistencePath)
-{
-    if (pPersistencePath != mPersistencePath)
-    {
-        mIsModified = true;
-        mPersistencePath = pPersistencePath;
-    }
-}
-
-void UBDocumentProxy::setMetaData(const QString& pKey, const QVariant& pValue)
-{
-    if (mMetaDatas.contains(pKey) && mMetaDatas.value(pKey) == pValue)
-        return;
-    else
-    {
-        mIsModified = true;
-        mMetaDatas.insert(pKey, pValue);
-        if (pKey == UBSettings::documentUpdatedAt)
-        {
-            UBDocumentManager *documentManager = UBDocumentManager::documentManager();
-            if (documentManager)
-                documentManager->emitDocumentUpdated(this);
-        }
-    }
-}
-
-QVariant UBDocumentProxy::metaData(const QString& pKey) const
-{
-    if (mMetaDatas.contains(pKey))
-    {
-        return mMetaDatas.value(pKey);
-    }
-    else
-    {
-        qDebug() << "Unknown metadata key" << pKey;
-        return QString(""); // failsafe
-    }
-}
-
-QHash<QString, QVariant> UBDocumentProxy::metaDatas() const
-{
-    return mMetaDatas;
-}
-
-QString UBDocumentProxy::name() const
-{
-    return metaData(UBSettings::documentName).toString();
-}
-
-QString UBDocumentProxy::groupName() const
-{
-    return metaData(UBSettings::documentGroupName).toString();
-}
-
-QSize UBDocumentProxy::defaultDocumentSize() const
-{
-    if (mMetaDatas.contains(UBSettings::documentSize))
-        return metaData(UBSettings::documentSize).toSize();
-    else
-        return UBSettings::settings()->pageSize->get().toSize();
-}
-
-void UBDocumentProxy::setDefaultDocumentSize(QSize pSize)
-{
-    if (defaultDocumentSize() != pSize)
-    {
-        setMetaData(UBSettings::documentSize, QVariant(pSize));
-        emit defaultDocumentSizeChanged();
-
-        mIsModified = true;
-    }
-}
-
-void UBDocumentProxy::setDefaultDocumentSize(int pWidth, int pHeight)
-{
-    setDefaultDocumentSize(QSize(pWidth, pHeight));
-}
-
-
-QUuid UBDocumentProxy::uuid() const
-{
-    QString id = metaData(UBSettings::documentIdentifer).toString();
-    QString sUuid = id.replace(UBSettings::uniboardDocumentNamespaceUri + "/", "");
-
-    return QUuid(sUuid);
-}
-
-void UBDocumentProxy::setUuid(const QUuid& uuid)
-{
-    setMetaData(UBSettings::documentIdentifer,
-            UBSettings::uniboardDocumentNamespaceUri + "/" + UBStringUtils::toCanonicalUuid(uuid));
-}
-
-
-QDateTime UBDocumentProxy::documentDate()
-{
-    if(mMetaDatas.contains(UBSettings::documentDate))
-        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentDate).toString());
-    return QDateTime::currentDateTime();
-}
-
-QDateTime UBDocumentProxy::lastUpdate()
-{
-    if(mMetaDatas.contains(UBSettings::documentUpdatedAt))
-        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentUpdatedAt).toString());
-    return QDateTime().currentDateTime();
-}
-
-bool UBDocumentProxy::isModified() const
-{
-    return mIsModified;
-}
-
-
-
-
-
+
+
+#include "UBDocumentProxy.h"
+
+#include "frameworks/UBStringUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBSettings.h"
+#include "core/UBDocumentManager.h"
+
+#include "core/memcheck.h"
+
+UBDocumentProxy::UBDocumentProxy()
+    : mPageCount(0)
+{
+    init();
+}
+
+
+UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath)
+    : mPageCount(0)
+{
+    init();
+    setPersistencePath(pPersistancePath);
+}
+
+
+void UBDocumentProxy::init()
+{
+    setMetaData(UBSettings::documentGroupName, "");
+
+    QDateTime now = QDateTime::currentDateTime();
+    setMetaData(UBSettings::documentName, now.toString(Qt::SystemLocaleShortDate));
+
+    setUuid(QUuid::createUuid());
+
+    setDefaultDocumentSize(UBSettings::settings()->pageSize->get().toSize());
+
+    //teacherGuide metadata
+    setMetaData(UBSettings::sessionTitle,"");
+    setMetaData(UBSettings::sessionAuthors,"");
+    setMetaData(UBSettings::sessionObjectives,"");
+    setMetaData(UBSettings::sessionKeywords,"");
+    setMetaData(UBSettings::sessionGradeLevel,"");
+    setMetaData(UBSettings::sessionSubjects,"");
+    setMetaData(UBSettings::sessionType,"");
+    setMetaData(UBSettings::sessionLicence,"");
+}
+
+
+UBDocumentProxy::~UBDocumentProxy()
+{
+    // NOOP
+}
+
+
+int UBDocumentProxy::pageCount()
+{
+    return mPageCount;
+}
+
+
+void UBDocumentProxy::setPageCount(int pPageCount)
+{
+    mPageCount = pPageCount;
+}
+
+
+int UBDocumentProxy::incPageCount()
+{
+    if (mPageCount <= 0)
+    {
+        mPageCount = 1;
+    }
+    else
+    {
+        mPageCount++;
+    }
+
+    return mPageCount;
+
+}
+
+
+int UBDocumentProxy::decPageCount()
+{
+    mPageCount --;
+
+    if (mPageCount < 0)
+    {
+        mPageCount = 0;
+    }
+
+    return mPageCount;
+}
+
+QString UBDocumentProxy::persistencePath() const
+{
+    return mPersistencePath;
+}
+
+void UBDocumentProxy::setPersistencePath(const QString& pPersistencePath)
+{
+    if (pPersistencePath != mPersistencePath)
+    {
+        mIsModified = true;
+        mPersistencePath = pPersistencePath;
+    }
+}
+
+void UBDocumentProxy::setMetaData(const QString& pKey, const QVariant& pValue)
+{
+    if (mMetaDatas.contains(pKey) && mMetaDatas.value(pKey) == pValue)
+        return;
+    else
+    {
+        mIsModified = true;
+        mMetaDatas.insert(pKey, pValue);
+        if (pKey == UBSettings::documentUpdatedAt)
+        {
+            UBDocumentManager *documentManager = UBDocumentManager::documentManager();
+            if (documentManager)
+                documentManager->emitDocumentUpdated(this);
+        }
+    }
+}
+
+QVariant UBDocumentProxy::metaData(const QString& pKey) const
+{
+    if (mMetaDatas.contains(pKey))
+    {
+        return mMetaDatas.value(pKey);
+    }
+    else
+    {
+        qDebug() << "Unknown metadata key" << pKey;
+        return QString(""); // failsafe
+    }
+}
+
+QHash<QString, QVariant> UBDocumentProxy::metaDatas() const
+{
+    return mMetaDatas;
+}
+
+QString UBDocumentProxy::name() const
+{
+    return metaData(UBSettings::documentName).toString();
+}
+
+QString UBDocumentProxy::groupName() const
+{
+    return metaData(UBSettings::documentGroupName).toString();
+}
+
+QSize UBDocumentProxy::defaultDocumentSize() const
+{
+    if (mMetaDatas.contains(UBSettings::documentSize))
+        return metaData(UBSettings::documentSize).toSize();
+    else
+        return UBSettings::settings()->pageSize->get().toSize();
+}
+
+void UBDocumentProxy::setDefaultDocumentSize(QSize pSize)
+{
+    if (defaultDocumentSize() != pSize)
+    {
+        setMetaData(UBSettings::documentSize, QVariant(pSize));
+        emit defaultDocumentSizeChanged();
+
+        mIsModified = true;
+    }
+}
+
+void UBDocumentProxy::setDefaultDocumentSize(int pWidth, int pHeight)
+{
+    setDefaultDocumentSize(QSize(pWidth, pHeight));
+}
+
+
+QUuid UBDocumentProxy::uuid() const
+{
+    QString id = metaData(UBSettings::documentIdentifer).toString();
+    QString sUuid = id.replace(UBSettings::uniboardDocumentNamespaceUri + "/", "");
+
+    return QUuid(sUuid);
+}
+
+void UBDocumentProxy::setUuid(const QUuid& uuid)
+{
+    setMetaData(UBSettings::documentIdentifer,
+            UBSettings::uniboardDocumentNamespaceUri + "/" + UBStringUtils::toCanonicalUuid(uuid));
+}
+
+
+QDateTime UBDocumentProxy::documentDate()
+{
+    if(mMetaDatas.contains(UBSettings::documentDate))
+        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentDate).toString());
+    return QDateTime::currentDateTime();
+}
+
+QDateTime UBDocumentProxy::lastUpdate()
+{
+    if(mMetaDatas.contains(UBSettings::documentUpdatedAt))
+        return UBStringUtils::fromUtcIsoDate(metaData(UBSettings::documentUpdatedAt).toString());
+    return QDateTime().currentDateTime();
+}
+
+bool UBDocumentProxy::isModified() const
+{
+    return mIsModified;
+}
+
+
+
+
+
diff --git a/Sankore-3.1/src/document/UBDocumentProxy.h b/Sankore-3.1/src/document/UBDocumentProxy.h
index 4879d66..8273501 100644
--- a/Sankore-3.1/src/document/UBDocumentProxy.h
+++ b/Sankore-3.1/src/document/UBDocumentProxy.h
@@ -1,95 +1,106 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#ifndef UBDOCUMENTPROXY_H_
-#define UBDOCUMENTPROXY_H_
-
-#include <QtGui>
-
-#include "frameworks/UBStringUtils.h"
-
-#include "core/UBSettings.h"
-
-class UBGraphicsScene;
-
-class UBDocumentProxy : public QObject
-{
-    Q_OBJECT;
-
-    public:
-
-        UBDocumentProxy();
-        UBDocumentProxy(const QString& pPersistencePath);
-
-        virtual ~UBDocumentProxy();
-
-        QString persistencePath() const;
-
-        void setPersistencePath(const QString& pPersistencePath);
-
-        void setMetaData(const QString& pKey , const QVariant& pValue);
-        QVariant metaData(const QString& pKey) const;
-        QHash<QString, QVariant> metaDatas() const;
-
-        QString name() const;
-        QString groupName() const;
-        QDateTime documentDate();
-
-        QDateTime lastUpdate();
-
-
-        QSize defaultDocumentSize() const;
-        void setDefaultDocumentSize(QSize pSize);
-        void setDefaultDocumentSize(int pWidth, int pHeight);
-
-        QUuid uuid() const;
-        void setUuid(const QUuid& uuid);
-
-        bool isModified() const;
-
-        int pageCount();
-        void setPageCount(int pPageCount);
-        int incPageCount();
-        int decPageCount();
-
-    signals:
-        void defaultDocumentSizeChanged();
-
-    private:
-
-        void init();
-
-        QString mPersistencePath;
-
-        QHash<QString, QVariant> mMetaDatas;
-
-        bool mIsModified;
-
-        int mPageCount;
-
-};
-
-inline bool operator==(const UBDocumentProxy &proxy1, const UBDocumentProxy &proxy2)
-{
-    return proxy1.persistencePath() == proxy2.persistencePath();
-}
-
-inline uint qHash(const UBDocumentProxy &key)
-{
-    return qHash(key.persistencePath());
-}
-
-
-#endif /* UBDOCUMENTPROXY_H_ */
+
+
+#ifndef UBDOCUMENTPROXY_H_
+#define UBDOCUMENTPROXY_H_
+
+#include <QtGui>
+
+#include "frameworks/UBStringUtils.h"
+
+#include "core/UBSettings.h"
+
+class UBGraphicsScene;
+
+class UBDocumentProxy : public QObject
+{
+    Q_OBJECT
+
+    friend class UBPersistenceManager;
+
+    public:
+
+        UBDocumentProxy();
+        UBDocumentProxy(const QString& pPersistencePath);
+
+        virtual ~UBDocumentProxy();
+
+        QString persistencePath() const;
+
+        void setPersistencePath(const QString& pPersistencePath);
+
+        void setMetaData(const QString& pKey , const QVariant& pValue);
+        QVariant metaData(const QString& pKey) const;
+        QHash<QString, QVariant> metaDatas() const;
+
+        QString name() const;
+        QString groupName() const;
+        QDateTime documentDate();
+
+        QDateTime lastUpdate();
+
+
+        QSize defaultDocumentSize() const;
+        void setDefaultDocumentSize(QSize pSize);
+        void setDefaultDocumentSize(int pWidth, int pHeight);
+
+        QUuid uuid() const;
+        void setUuid(const QUuid& uuid);
+
+        bool isModified() const;
+
+        int pageCount();
+
+    protected:
+        void setPageCount(int pPageCount);
+        int incPageCount();
+        int decPageCount();
+
+    signals:
+        void defaultDocumentSizeChanged();
+
+    private:
+
+        void init();
+
+        QString mPersistencePath;
+
+        QHash<QString, QVariant> mMetaDatas;
+
+        bool mIsModified;
+
+        int mPageCount;
+
+};
+
+inline bool operator==(const UBDocumentProxy &proxy1, const UBDocumentProxy &proxy2)
+{
+    return proxy1.persistencePath() == proxy2.persistencePath();
+}
+
+inline uint qHash(const UBDocumentProxy &key)
+{
+    return qHash(key.persistencePath());
+}
+
+
+#endif /* UBDOCUMENTPROXY_H_ */
diff --git a/Sankore-3.1/src/document/document.pri b/Sankore-3.1/src/document/document.pri
index 85b8293..8be38d7 100644
--- a/Sankore-3.1/src/document/document.pri
+++ b/Sankore-3.1/src/document/document.pri
@@ -1,6 +1,6 @@
-
-HEADERS      += src/document/UBDocumentController.h \
-                src/document/UBDocumentProxy.h
-                
-SOURCES      += src/document/UBDocumentController.cpp \   
-                src/document/UBDocumentProxy.cpp
\ No newline at end of file
+HEADERS += src/document/UBDocumentController.h \
+    src/document/UBDocumentContainer.h \
+    src/document/UBDocumentProxy.h
+SOURCES += src/document/UBDocumentController.cpp \
+    src/document/UBDocumentContainer.cpp \
+    src/document/UBDocumentProxy.cpp
diff --git a/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp b/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp
index fc5d9fd..628c92c 100644
--- a/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBAbstractUndoCommand.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBAbstractUndoCommand.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/domain/UBAbstractUndoCommand.h b/Sankore-3.1/src/domain/UBAbstractUndoCommand.h
index 3276284..9fa03df 100644
--- a/Sankore-3.1/src/domain/UBAbstractUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBAbstractUndoCommand.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBABSTRACTUNDOCOMMAND_H_
 #define UBABSTRACTUNDOCOMMAND_H_
 
@@ -32,7 +39,8 @@ class UBAbstractUndoCommand : public QUndoCommand
             undotype_GRAPHICITEMTRANSFORM  = 2,
             undotype_GRAPHICITEM           = 3,
             undotype_GRAPHICTEXTITEM       = 4,
-            undotype_PAGESIZE              = 5
+            undotype_PAGESIZE              = 5,
+            undotype_GRAPHICSGROUPITEM     = 6
         };
 
         virtual UndoType getType() { return undotype_UNKNOWN; }
diff --git a/Sankore-3.1/src/domain/UBAbstractWidget.cpp b/Sankore-3.1/src/domain/UBAbstractWidget.cpp
deleted file mode 100644
index 8832317..0000000
--- a/Sankore-3.1/src/domain/UBAbstractWidget.cpp
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- * 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/>.
- */
-
-#include "UBAbstractWidget.h"
-
-#include <QtNetwork>
-#include <QtXml>
-
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/UBApplicationController.h"
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-
-#include "network/UBNetworkAccessManager.h"
-
-#include "web/UBWebPage.h"
-#include "web/UBWebKitUtils.h"
-#include "web/UBWebController.h"
-
-#include "core/memcheck.h"
-
-QStringList UBAbstractWidget::sInlineJavaScripts;
-bool UBAbstractWidget::sInlineJavaScriptLoaded = false;
-
-UBAbstractWidget::UBAbstractWidget(const QUrl& pWidgetUrl, QWidget *parent)
-    : UBRoutedMouseEventWebView(parent)
-    , mWidgetUrl(pWidgetUrl)
-    , mIsResizable(false)
-    , mInitialLoadDone(false)
-    , mLoadIsErronous(false)
-    , mIsFreezable(true)
-    , mCanBeContent(0)
-    , mCanBeTool(0)
-    , mIsFrozen(false)
-    , mIsTakingSnapshot(false)
-{
-    setAcceptDrops(true);
-    setPage(new UBWebPage(this));
-    QWebView::settings()->setAttribute(QWebSettings::JavaEnabled, true);
-    QWebView::settings()->setAttribute(QWebSettings::PluginsEnabled, true);
-    QWebView::settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
-    QWebView::settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
-    QWebView::settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
-    QWebView::settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
-    QWebView::settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
-
-    QWebView::page()->setNetworkAccessManager(UBNetworkAccessManager::defaultAccessManager());
-
-    setAutoFillBackground(false);
-
-    QPalette pagePalette = QWebView::page()->palette();
-    pagePalette.setBrush(QPalette::Base, QBrush(Qt::transparent));
-    pagePalette.setBrush(QPalette::Window, QBrush(Qt::transparent));
-    QWebView::page()->setPalette(pagePalette);
-
-    QPalette viewPalette = palette();
-    pagePalette.setBrush(QPalette::Base, QBrush(Qt::transparent));
-    viewPalette.setBrush(QPalette::Window, QBrush(Qt::transparent));
-    setPalette(viewPalette);
-
-    connect(QWebView::page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
-    connect(QWebView::page(), SIGNAL(geometryChangeRequested(const QRect&)), this, SIGNAL(geometryChangeRequested(const QRect&)));
-    connect(QWebView::page(), SIGNAL(loadFinished(bool)), this, SLOT(mainFrameLoadFinished (bool)));
-
-    setMouseTracking(true);
-}
-
-bool UBAbstractWidget::canBeContent()
-{
-    // if we under MAC OS
-    #if defined(Q_OS_MAC)
-        return mCanBeContent & UBAbstractWidget::type_MAC;
-    #endif
-
-    // if we under UNIX OS
-    #if defined(Q_OS_UNIX)
-        return mCanBeContent & UBAbstractWidget::type_UNIX;
-    #endif
-
-    // if we under WINDOWS OS
-    #if defined(Q_OS_WIN)
-        return mCanBeContent & UBAbstractWidget::type_WIN;
-    #endif
-}
-
-bool UBAbstractWidget::canBeTool()
-{
-    // if we under MAC OS
-    #if defined(Q_OS_MAC)
-        return mCanBeTool & UBAbstractWidget::type_MAC;
-    #endif
-
-        // if we under UNIX OS
-    #if defined(Q_OS_UNIX)
-        return mCanBeTool & UBAbstractWidget::type_UNIX;
-    #endif
-
-        // if we under WINDOWS OS
-    #if defined(Q_OS_WIN)
-        return mCanBeTool & UBAbstractWidget::type_WIN;
-    #endif
-}
-
-UBAbstractWidget::~UBAbstractWidget()
-{
-    // NOOP
-}
-
-void UBAbstractWidget::loadMainHtml()
-{
-    QWebView::load(mMainHtmlUrl);
-}
-
-bool UBAbstractWidget::event(QEvent *event)
-{
-    if (event->type() == QEvent::ContextMenu)
-    {
-        event->accept();
-        return true;
-    } else {
-        return QWebView::event(event);
-    }
-}
-
-
-void UBAbstractWidget::mainFrameLoadFinished (bool ok)
-{
-    mInitialLoadDone = true;
-    mLoadIsErronous = !ok;
-
-    update();
-}
-
-
-bool UBAbstractWidget::hasEmbededObjects()
-{
-    if (QWebView::page()->mainFrame())
-    {
-        QList<UBWebKitUtils::HtmlObject> htmlObjects = UBWebKitUtils::objectsInFrame(QWebView::page()->mainFrame());
-        return htmlObjects.length() > 0;
-    }
-
-    return false;
-}
-
-
-bool UBAbstractWidget::hasEmbededFlash()
-{
-    if (hasEmbededObjects())
-    {
-        return QWebView::page()->mainFrame()->toHtml().contains("application/x-shockwave-flash");
-    }
-    else
-    {
-        return false;
-    }
-}
-
-
-void UBAbstractWidget::resize(qreal width, qreal height)
-{
-    QWebView::page()->setViewportSize(QSize(width, height));
-    QWebView::setFixedSize(QSize(width, height));
-}
-
-
-QString UBAbstractWidget::iconFilePath(const QUrl& pUrl)
-{
-    // TODO UB 4.x read config.xml widget.icon param first
-
-    QStringList files;
-
-    files << "icon.svg";  // W3C widget default 1
-    files << "icon.ico";  // W3C widget default 2
-    files << "icon.png";  // W3C widget default 3
-    files << "icon.gif";  // W3C widget default 4
-
-    files << "Icon.png";  // Apple widget default
-
-    QString file = UBFileSystemUtils::getFirstExistingFileFromList(pUrl.toLocalFile(), files);
-
-    // default
-    if (file.length() == 0)
-    {
-        file = QString(":/images/defaultWidgetIcon.png");
-    }
-
-    return file;
-}
-
-
-
-QString UBAbstractWidget::widgetName(const QUrl& widgetPath)
-{
-    QString name;
-    QString version;
-
-    QFile w3CConfigFile(widgetPath.toLocalFile() + "/config.xml");
-    QFile appleConfigFile(widgetPath.toLocalFile() + "/Info.plist");
-
-    if (w3CConfigFile.exists() && w3CConfigFile.open(QFile::ReadOnly))
-    {
-        QDomDocument doc;
-        doc.setContent(w3CConfigFile.readAll());
-        QDomElement root = doc.firstChildElement("widget");
-        if (!root.isNull())
-        {
-            QDomElement nameElement = root.firstChildElement("name");
-            if (!nameElement.isNull())
-                name = nameElement.text();
-
-            version = root.attribute("version", "");
-        }
-
-        w3CConfigFile.close();
-    }
-    else if (appleConfigFile.exists() && appleConfigFile.open(QFile::ReadOnly))
-    {
-        QDomDocument doc;
-        doc.setContent(appleConfigFile.readAll());
-        QDomElement root = doc.firstChildElement("plist");
-        if (!root.isNull())
-        {
-            QDomElement dictElement = root.firstChildElement("dict");
-            if (!dictElement.isNull())
-            {
-                QDomNodeList childNodes  = dictElement.childNodes();
-
-                // looking for something like
-                //  ..
-                //  <key>CFBundleDisplayName</key>
-                //  <string>brain scans</string>
-                //  ..
-
-                for(int i = 0; i < childNodes.count() - 1; i++)
-                {
-                    if (childNodes.at(i).isElement())
-                    {
-                        QDomElement elKey = childNodes.at(i).toElement();
-                        if (elKey.text() == "CFBundleDisplayName")
-                        {
-                            if (childNodes.at(i + 1).isElement())
-                            {
-                               QDomElement elValue = childNodes.at(i + 1).toElement();
-                               name = elValue.text();
-                            }
-                        }
-                        else if (elKey.text() == "CFBundleShortVersionString")
-                        {
-                            if (childNodes.at(i + 1).isElement())
-                            {
-                               QDomElement elValue = childNodes.at(i + 1).toElement();
-                               version = elValue.text();
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        appleConfigFile.close();
-    }
-
-    QString result;
-
-    if (name.length() > 0)
-    {
-        result = name;
-        if (version.length() > 0)
-        {
-            result += " ";
-            result += version;
-        }
-    }
-
-    return result;
-}
-
-
-int UBAbstractWidget::widgetType(const QUrl& pUrl)
-{
-    QString mime = UBFileSystemUtils::mimeTypeFromFileName(pUrl.toString());
-
-    if (mime == "application/vnd.apple-widget")
-    {
-        return UBWidgetType::Apple;
-    }
-    else if (mime == "application/widget")
-    {
-        return UBWidgetType::W3C;
-    }
-    else
-    {
-        return UBWidgetType::Other;
-    }
-}
-
-
-void UBAbstractWidget::mousePressEvent(QMouseEvent *event)
-{
-    if(mIsFrozen)
-    {
-        event->accept();
-        return;
-    }
-    UBRoutedMouseEventWebView::mousePressEvent(event);
-    mMouseIsPressed = true;
-}
-
-
-void UBAbstractWidget::mouseMoveEvent(QMouseEvent *event)
-{
-
-    if(mIsFrozen)
-    {
-        event->accept();
-        return;
-    }
-
-    // TODO UB 4.x fix web kit mouse move routing
-
-    if (mFirstReleaseAfterMove)
-    {
-        mFirstReleaseAfterMove = false;
-    }
-    else
-    {
-        UBRoutedMouseEventWebView::mouseMoveEvent(event);
-    }
-}
-
-
-void UBAbstractWidget::mouseReleaseEvent(QMouseEvent *event)
-{
-    if(mIsFrozen)
-    {
-        event->accept();
-        return;
-    }
-
-    UBRoutedMouseEventWebView::mouseReleaseEvent(event);
-    mMouseIsPressed = false;
-    mFirstReleaseAfterMove = true;
-}
-
-QWebView * UBAbstractWidget::createWindow(QWebPage::WebWindowType type)
-{
-    if (type == QWebPage::WebBrowserWindow)
-    {
-        UBApplication::applicationController->showInternet();
-        return UBApplication::webController->createNewTab();
-    }
-    else
-    {
-        return this;
-    }
-}
-
-
-void UBAbstractWidget::injectInlineJavaScript()
-{
-    if (!sInlineJavaScriptLoaded)
-    {
-        sInlineJavaScripts = UBApplication::applicationController->widgetInlineJavaScripts();
-        sInlineJavaScriptLoaded = true;
-    }
-
-    foreach(QString script, sInlineJavaScripts)
-    {
-        QWebView::page()->mainFrame()->evaluateJavaScript(script);
-    }
-}
-
-
-void UBAbstractWidget::javaScriptWindowObjectCleared()
-{
-    injectInlineJavaScript();
-}
-
-
-void UBAbstractWidget::paintEvent(QPaintEvent * event)
-{
-    if (mIsFrozen)
-    {
-        QPainter p(this);
-        p.drawPixmap(0, 0, mSnapshot);
-    }
-    else if(mIsTakingSnapshot || (mInitialLoadDone && !mLoadIsErronous))
-    {
-        QWebView::paintEvent(event);
-    }
-    else
-    {
-         QPainter p(this);
-         QString message;
-
-         if (mLoadIsErronous)
-             message = tr("Cannot load content");
-         else
-             message = tr("Loading ...");
-
-         p.setFont(QFont("Arial", 12));
-
-         QFontMetrics fm = p.fontMetrics();
-         QRect txtBoundingRect = fm.boundingRect(message);
-
-         txtBoundingRect.moveCenter(rect().center());
-         txtBoundingRect.adjust(-10, -5, 10, 5);
-
-         p.setPen(Qt::NoPen);
-         p.setBrush(UBSettings::paletteColor);
-         p.drawRoundedRect(txtBoundingRect, 3, 3);
-
-         p.setPen(Qt::white);
-         p.drawText(rect(), Qt::AlignCenter, message);
-    }
-}
-void UBAbstractWidget::dropEvent(QDropEvent *event)
-{
-    QWebView::dropEvent(event);
-}
-
-QPixmap UBAbstractWidget::takeSnapshot()
-{
-    mIsTakingSnapshot = true;
-
-    QPixmap pix(size());
-    pix.fill(Qt::transparent);
-
-    render(&pix);
-
-    mIsTakingSnapshot = false;
-
-    return pix;
-}
-
-
-void UBAbstractWidget::setSnapshot(const QPixmap& pix)
-{
-    mSnapshot = pix;
-}
-
-
-void UBAbstractWidget::freeze()
-{
-    QPixmap pix = takeSnapshot();
-    mIsFrozen = true;
-    setSnapshot(pix);
-    update();
-}
-
-
-void UBAbstractWidget::unFreeze()
-{
-    mIsFrozen = false;
-    update();
-}
-
diff --git a/Sankore-3.1/src/domain/UBAbstractWidget.h b/Sankore-3.1/src/domain/UBAbstractWidget.h
deleted file mode 100644
index d2b6546..0000000
--- a/Sankore-3.1/src/domain/UBAbstractWidget.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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/>.
- */
-
-#ifndef UBABSTRACTWIDGET_H_
-#define UBABSTRACTWIDGET_H_
-
-#include <QtGui>
-#include <QtWebKit>
-
-#include "web/UBRoutedMouseEventWebView.h"
-
-
-struct UBWidgetType
-{
-    enum Enum
-    {
-        W3C = 0, Apple, Other
-    };
-};
-
-
-class UBAbstractWidget : public UBRoutedMouseEventWebView
-{
-    Q_OBJECT;
-
-    public:
-        UBAbstractWidget(const QUrl& pWidgetUrl, QWidget *parent = 0);
-        virtual ~UBAbstractWidget();
-
-        void loadMainHtml();
-
-        QUrl mainHtml()
-        {
-            return mMainHtmlUrl;
-        }
-
-        QUrl widgetUrl()
-        {
-            return mWidgetUrl;
-        }
-
-        QString mainHtmlFileName()
-        {
-            return mMainHtmlFileName;
-        }
-
-        bool hasEmbededObjects();
-        bool hasEmbededFlash();
-
-        void resize(qreal width, qreal height);
-
-        QSize nominalSize() const
-        {
-            return mNominalSize;
-        }
-
-        bool canBeContent();
-        bool canBeTool();
-
-        bool hasLoadedSuccessfully() const
-        {
-            return (mInitialLoadDone && !mLoadIsErronous);
-        }
-
-        bool freezable() { return mIsFreezable;}
-        bool resizable() { return mIsResizable;}
-
-        static QString iconFilePath(const QUrl& pUrl);
-        static QString widgetName(const QUrl& pUrl);
-        static int widgetType(const QUrl& pUrl);
-
-        bool isFrozen(){ return mIsFrozen;}
-
-        QPixmap snapshot(){return mSnapshot;}
-        void setSnapshot(const QPixmap& pix);
-
-        QPixmap takeSnapshot();
-
-    public slots:
-        void freeze();
-        void unFreeze();
-
-    signals:
-
-        void geometryChangeRequested(const QRect & geom);
-
-    protected:
-
-        bool mMouseIsPressed;
-        bool mFirstReleaseAfterMove;
-
-        virtual bool event(QEvent *e);
-
-        virtual void mousePressEvent(QMouseEvent *event);
-        virtual void mouseMoveEvent(QMouseEvent *event);
-        virtual void mouseReleaseEvent(QMouseEvent *event);
-
-        virtual QWebView * createWindow(QWebPage::WebWindowType type);
-
-        QUrl mMainHtmlUrl;
-        QString mMainHtmlFileName;
-        QUrl mWidgetUrl;
-        QSize mNominalSize;
-        bool mIsResizable;
-        bool mInitialLoadDone;
-        bool mLoadIsErronous;
-
-        bool mIsFreezable;
-        int mCanBeContent;
-        int mCanBeTool;
-        enum OSType
-        {
-            type_NONE = 0, // 0000
-            type_WIN  = 1, // 0001
-            type_MAC  = 2, // 0010
-            type_UNIX = 4, // 0100
-            type_ALL  = 7, // 0111
-        };
-
-        virtual void injectInlineJavaScript();
-        virtual void paintEvent(QPaintEvent * event);
-        virtual void dropEvent(QDropEvent *);
-
-    protected slots:
-
-        void mainFrameLoadFinished(bool ok);
-
-    private:
-
-        static QStringList sInlineJavaScripts;
-        static bool sInlineJavaScriptLoaded;
-
-        bool mIsFrozen;
-        QPixmap mSnapshot;
-
-        bool mIsTakingSnapshot;
-
-    private slots:
-        void javaScriptWindowObjectCleared();
-
-};
-
-#endif /* UBABSTRACTWIDGET_H_ */
diff --git a/Sankore-3.1/src/domain/UBAngleWidget.cpp b/Sankore-3.1/src/domain/UBAngleWidget.cpp
deleted file mode 100644
index 7be0bf3..0000000
--- a/Sankore-3.1/src/domain/UBAngleWidget.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "UBAngleWidget.h"
-#include <QPainter>
-
-#include "core/memcheck.h"
-
-UBAngleWidget::UBAngleWidget(QWidget *parent)
-    : QWidget(parent)
-{
-    this->setFixedSize(45,30);
-    this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
-    this->setAttribute(Qt::WA_TranslucentBackground);
-
-    QImage mask_img(width(), height(), QImage::Format_Mono);
-    mask_img.fill(0xff);
-    QPainter mask_ptr(&mask_img);
-    mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
-    mask_ptr.drawRoundedRect(0,0,this->geometry().width() - 6,this->geometry().height() - 6,1,1);
-    bmpMask = QBitmap::fromImage(mask_img);
-    this->setMask(bmpMask);
-}
-
-UBAngleWidget::~UBAngleWidget()
-{
-
-}
-
-void UBAngleWidget::paintEvent(QPaintEvent *event)
-{
-    Q_UNUSED(event);
-
-    this->move(this->cursor().pos().x(), this->cursor().pos().y() - 30);
-
-    QPainter painter(this);
-    painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
-    QBrush brush(Qt::white);
-    painter.setBrush(brush);
-    painter.drawRoundedRect(1,1,this->geometry().width() - 10,this->geometry().height() - 10,1,1);
-
-    painter.setPen(QColor(85,50,127));
-    painter.setFont(QFont("Arial", 10));
-    painter.drawText(1,1,this->geometry().width() - 10,this->geometry().height() - 10, Qt::AlignCenter, text);
-}
-
-void UBAngleWidget::setText(QString newText)
-{
-    text = newText;
-    text.append(QChar(176));
-}
\ No newline at end of file
diff --git a/Sankore-3.1/src/domain/UBAngleWidget.h b/Sankore-3.1/src/domain/UBAngleWidget.h
deleted file mode 100644
index 20b0943..0000000
--- a/Sankore-3.1/src/domain/UBAngleWidget.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef UBANGLEWIDGET_H
-#define UBANGLEWIDGET_H
-
-#include <QWidget>
-#include <QBitmap>
-
-class UBAngleWidget : public QWidget
-{
-    Q_OBJECT
-
-public:
-    UBAngleWidget(QWidget *parent = 0);
-    ~UBAngleWidget();
-
-    void setText(QString);
-
-protected:
-    void paintEvent(QPaintEvent *event);
-
-private:
-    QString text;
-    QBitmap bmpMask;
-};
-
-#endif // UBANGLEWIDGET_H
diff --git a/Sankore-3.1/src/domain/UBAppleWidget.cpp b/Sankore-3.1/src/domain/UBAppleWidget.cpp
deleted file mode 100644
index 1ba3815..0000000
--- a/Sankore-3.1/src/domain/UBAppleWidget.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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/>.
- */
-
-#include "UBAppleWidget.h"
-
-#include <QtNetwork>
-
-#include "web/UBWebKitUtils.h"
-
-#include "network/UBNetworkAccessManager.h"
-
-#include "core/memcheck.h"
-
-UBAppleWidget::UBAppleWidget(const QUrl& pWidgetUrl, QWidget *parent)
-    : UBAbstractWidget(pWidgetUrl, parent)
-{
-    QString path = pWidgetUrl.toLocalFile();
-
-    if (!path.endsWith(".wdgt") && !path.endsWith(".wdgt/"))
-    {
-        int lastSlashIndex = path.lastIndexOf("/");
-        if (lastSlashIndex > 0)
-        {
-            path = path.mid(0, lastSlashIndex + 1);
-        }
-    }
-
-    QFile plistFile(path + "/Info.plist");
-    plistFile.open(QFile::ReadOnly);
-
-    QByteArray plistBin = plistFile.readAll();
-    QString plist = QString::fromUtf8(plistBin);
-
-    int mainHtmlIndex = plist.indexOf("MainHTML");
-    int mainHtmlIndexStart = plist.indexOf("<string>", mainHtmlIndex);
-    int mainHtmlIndexEnd = plist.indexOf("</string>", mainHtmlIndexStart);
-
-    if (mainHtmlIndex > -1 && mainHtmlIndexStart > -1 && mainHtmlIndexEnd > -1)
-    {
-        mMainHtmlFileName = plist.mid(mainHtmlIndexStart + 8, mainHtmlIndexEnd - mainHtmlIndexStart - 8);
-    }
-
-    mMainHtmlUrl = pWidgetUrl;
-    mMainHtmlUrl.setPath(pWidgetUrl.path() + "/" + mMainHtmlFileName);
-
-    QWebView::load(mMainHtmlUrl);
-
-    QPixmap defaultPixmap(pWidgetUrl.toLocalFile() + "/Default.png");
-
-    setFixedSize(defaultPixmap.size());
-
-    mNominalSize = defaultPixmap.size();
-}
-
-UBAppleWidget::~UBAppleWidget()
-{
-    // NOOP
-}
-
-
-
-
-
-
-
diff --git a/Sankore-3.1/src/domain/UBAppleWidget.h b/Sankore-3.1/src/domain/UBAppleWidget.h
deleted file mode 100644
index d6526c9..0000000
--- a/Sankore-3.1/src/domain/UBAppleWidget.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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/>.
- */
-
-#ifndef UBAPPLEWIDGET_H_
-#define UBAPPLEWIDGET_H_
-
-#include <QtGui>
-#include <QtWebKit>
-
-#include "UBAbstractWidget.h"
-
-class UBItem;
-
-class UBAppleWidget : public UBAbstractWidget
-{
-    Q_OBJECT;
-
-    public:
-        UBAppleWidget(const QUrl& pWidgetUrl, QWidget *parent = 0);
-        virtual ~UBAppleWidget();
-
-};
-
-#endif /* UBAPPLEWIDGET_H_ */
diff --git a/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp b/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp
index 9bfa147..b1eacd2 100644
--- a/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBDocumentUndoCommand.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBDocumentUndoCommand.h"
 
 #include "document/UBDocumentProxy.h"
diff --git a/Sankore-3.1/src/domain/UBDocumentUndoCommand.h b/Sankore-3.1/src/domain/UBDocumentUndoCommand.h
index b6b1785..90d079a 100644
--- a/Sankore-3.1/src/domain/UBDocumentUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBDocumentUndoCommand.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDOCUMENTUNDOCOMMAND_H_
 #define UBDOCUMENTUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItem.cpp b/Sankore-3.1/src/domain/UBGraphicsAudioItem.cpp
deleted file mode 100644
index b43271b..0000000
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItem.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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/>.
- */
-
-#include "UBGraphicsAudioItem.h"
-#include "UBGraphicsAudioItemDelegate.h"
-#include "UBGraphicsDelegateFrame.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsAudioItem::UBGraphicsAudioItem(const QUrl& pAudioFileUrl, QGraphicsItem *parent):
-        UBGraphicsMediaItem(pAudioFileUrl,parent)
-{
-    update();
-
-    mAudioOutput = new Phonon::AudioOutput ( Phonon::MusicCategory, this );
-    mMediaObject = new Phonon::MediaObject ( this );
-    mMediaObject->setTickInterval ( 1000 );
-    Phonon::createPath ( mMediaObject, mAudioOutput );
-
-    mMediaObject->clearQueue();
-    mSource = Phonon::MediaSource(pAudioFileUrl);
-    mMediaObject->setCurrentSource (mSource );
-
-    connect (mMediaObject,SIGNAL ( tick ( qint64 ) ), this, SLOT ( tick ( qint64 ) ) );
-    connect(mMediaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(onStateChanged(Phonon::State,Phonon::State)));
-
-    mAudioWidget = new QWidget();
-
-    mSeekSlider = new Phonon::SeekSlider ( mAudioWidget );
-    mSeekSlider->setMediaObject ( mMediaObject );
-
-    QPalette palette;
-    palette.setBrush ( QPalette::Light, Qt::darkGray );
-
-    mTimeLcd = new QLCDNumber;
-    mTimeLcd->setPalette ( palette );
-    mTimeLcd->display ( "00:00" );
-
-    QHBoxLayout *seekerLayout = new QHBoxLayout;
-    seekerLayout->addWidget ( mSeekSlider );
-    seekerLayout->addWidget ( mTimeLcd );
-
-    QVBoxLayout *mainLayout = new QVBoxLayout;
-    mainLayout->addLayout ( seekerLayout );
-
-    mAudioWidget->setLayout ( mainLayout );
-    setWidget ( mAudioWidget );
-
-    UBGraphicsAudioItemDelegate* delegate = new UBGraphicsAudioItemDelegate ( this, mMediaObject );
-    delegate->init();
-    setDelegate ( delegate );
-
-    mDelegate->frame()->setOperationMode ( UBGraphicsDelegateFrame::Resizing );
-
-    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
-
-}
-
-void UBGraphicsAudioItem::onStateChanged(Phonon::State newState, Phonon::State oldState)
-{
-    qDebug() << "STATE CHANGED!";
-    qDebug() << "old state:" << oldState;
-    qDebug() << "new state:" << newState;
-
-    if(oldState == Phonon::ErrorState)
-    {
-        qDebug() << "ERROR! : " << mMediaObject->errorString();
-    }
-    else if(newState == Phonon::LoadingState)
-    {
-        int itotaltime = mMediaObject->totalTime();
-        qDebug() << "[Loading State entered!] Total time : " << itotaltime;
-    }
-}
-
-UBGraphicsAudioItem::~UBGraphicsAudioItem()
-{
-    //NOOP
-}
-
-UBItem* UBGraphicsAudioItem::deepCopy() const
-{
-    QUrl audioUrl = this->mediaFileUrl();
-
-    UBGraphicsAudioItem *copy = new UBGraphicsAudioItem(audioUrl, parentItem());
-
-    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), copy, SLOT(activeSceneChanged()));
-
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
-    copy->setUuid(this->uuid()); // this is OK as long as Videos are imutable
-    copy->setSourceUrl(this->sourceUrl());
-
-    copy->resize(this->size());
-
-    // TODO UB 4.7 complete all members
-
-    return copy;
-}
-
-void UBGraphicsAudioItem::tick ( qint64 time )
-{
-    QTime displayTime ( 0, ( time / 60000 ) % 60, ( time / 1000 ) % 60 );
-
-    mTimeLcd->display ( displayTime.toString ( "mm:ss" ) );
-}
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItem.h b/Sankore-3.1/src/domain/UBGraphicsAudioItem.h
index 438dfca..f1d2d6b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsAudioItem.h
@@ -1,65 +1,21 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBGRAPHICSAUDIOITEM_H
-#define UBGRAPHICSAUDIOITEM_H
-
-#include "UBGraphicsMediaItem.h"
-#include "phonon/seekslider.h"
-#include "phonon/mediasource.h"
-#include "core/UB.h"
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-
-class UBGraphicsAudioItem : public UBGraphicsMediaItem
-{
-    Q_OBJECT
-
-public:
-
-    UBGraphicsAudioItem(const QUrl& pAudioFileUrl, QGraphicsItem *parent = 0);
-    ~UBGraphicsAudioItem();
-
-    enum { Type = UBGraphicsItemType::AudioItemType };
-
-    virtual int type() const
-    {
-        return Type;
-    }
-
-    virtual UBItem* deepCopy () const;
-    virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;}
-
-    virtual void clearSource()
-    {
-        UBGraphicsMediaItem::clearSource();
-    }
-
-private slots:
-
-    void tick ( qint64 time );
-    void onStateChanged(Phonon::State newState,Phonon::State oldState);
-
-protected:
-
-    QWidget* mAudioWidget;
-    QLCDNumber* mTimeLcd;
-
-    Phonon::SeekSlider* mSeekSlider;
-private:
-    Phonon::MediaSource mSource;
-
-};
 
-#endif // UBGRAPHICSAUDIOITEM_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp
index 93c9fd6..f1d2d6b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.cpp
@@ -1,123 +1,21 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "UBGraphicsAudioItemDelegate.h"
-#include "domain/UBGraphicsAudioItem.h"
-#include "domain/UBGraphicsDelegateFrame.h"
-#include "UBGraphicsScene.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsAudioItemDelegate::UBGraphicsAudioItemDelegate ( UBGraphicsAudioItem* pDelegated, QObject *parent )
-        : UBGraphicsItemDelegate ( pDelegated, parent )
-        , mDelegated ( pDelegated )
-{
-    //NOOP
-}
-
-UBGraphicsAudioItemDelegate::~UBGraphicsAudioItemDelegate()
-{
-    //NNOP
-}
-
-
-void UBGraphicsAudioItemDelegate::buildButtons()
-{
-    mPlayPauseButton = new DelegateButton ( ":/images/play.svg", mDelegated, mFrame );
-
-    mStopButton = new DelegateButton ( ":/images/stop.svg", mDelegated, mFrame );
-    mStopButton->hide();
-
-    if ( mDelegated->isMuted() )
-        mMuteButton = new DelegateButton ( ":/images/soundOff.svg", mDelegated, mFrame );
-    else
-        mMuteButton = new DelegateButton ( ":/images/soundOn.svg", mDelegated, mFrame );
-
-    mMuteButton->hide();
-
-
-    connect ( mPlayPauseButton, SIGNAL ( clicked ( bool ) ), this, SLOT ( togglePlayPause() ) );
-    connect ( mStopButton, SIGNAL ( clicked ( bool ) ), mDelegated->mediaObject(), SLOT ( stop() ) );
-    connect ( mMuteButton, SIGNAL ( clicked ( bool ) ), mDelegated, SLOT ( toggleMute() ) );
-    connect ( mMuteButton, SIGNAL ( clicked ( bool ) ), this, SLOT ( toggleMute() ) );
-
-    connect ( mDelegated->mediaObject(), SIGNAL ( stateChanged ( Phonon::State, Phonon::State ) ), this, SLOT ( mediaStateChanged ( Phonon::State, Phonon::State ) ) );
-    connect ( mDelegated->mediaObject(), SIGNAL ( finished() ), this, SLOT ( updatePlayPauseState() ) );
-
-    mButtons << mPlayPauseButton << mStopButton << mMuteButton;
-
-}
-
-void UBGraphicsAudioItemDelegate::togglePlayPause()
-{
-    if ( mDelegated && mDelegated->mediaObject() )
-    {
-        Phonon::MediaObject* media = mDelegated->mediaObject();
-
-        if ( media->state() == Phonon::StoppedState ) {
-            media->play();
-        } else if ( media->state() == Phonon::PlayingState ) {
-            if ( media->remainingTime() <= 0 ) {
-                media->stop();
-                media->play();
-            } else {
-                media->pause();
-                if ( mDelegated->scene() )
-                    mDelegated->scene()->setModified ( true );
-            }
-        } else if ( media->state() == Phonon::PausedState ) {
-            if ( media->remainingTime() <= 0 ) {
-                media->stop();
-            }
-            media->play();
-        } else  if ( media->state() == Phonon::LoadingState ) {
-            mDelegated->mediaObject()->setCurrentSource(mDelegated->mediaFileUrl());
-            media->play();
-        } else if (media->state() == Phonon::ErrorState){
-            qDebug() << "Error appeared." << media->errorString();
-        }
-    }
-}
-
-void UBGraphicsAudioItemDelegate::toggleMute()
-{
-    if ( mDelegated->isMuted() )
-        mMuteButton->setFileName ( ":/images/soundOff.svg" );
-    else
-        mMuteButton->setFileName ( ":/images/soundOn.svg" );
-}
-
-void UBGraphicsAudioItemDelegate::updatePlayPauseState()
-{
-    Phonon::MediaObject* media = mDelegated->mediaObject();
-
-    if ( media->state() == Phonon::PlayingState )
-        mPlayPauseButton->setFileName ( ":/images/pause.svg" );
-    else
-        mPlayPauseButton->setFileName ( ":/images/play.svg" );
-}
-
-void UBGraphicsAudioItemDelegate::mediaStateChanged ( Phonon::State newstate, Phonon::State oldstate )
-{
-    Q_UNUSED ( newstate );
-    Q_UNUSED ( oldstate );
-    updatePlayPauseState();
-}
-
-void UBGraphicsAudioItemDelegate::remove ( bool canUndo )
-{
-    mDelegated->mediaObject()->stop();
-    UBGraphicsItemDelegate::remove ( canUndo );
-}
diff --git a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h
index 3df4fd5..812b015 100644
--- a/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsAudioItemDelegate.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBGRAPHICSAUDIOITEMDELEGATE_H
 #define UBGRAPHICSAUDIOITEMDELEGATE_H
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp
index 91a9d35..70b7617 100644
--- a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.cpp
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "UBGraphicsDelegateFrame.h"
 
@@ -21,6 +28,9 @@
 #include "core/UBApplication.h"
 #include "core/UBSettings.h"
 
+#include "board/UBBoardController.h"
+#include "board/UBBoardView.h"
+
 #include "domain/UBGraphicsItemDelegate.h"
 #include "domain/UBGraphicsScene.h"
 #include "domain/UBGraphicsProxyWidget.h"
@@ -46,6 +56,8 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
     , mTotalTranslateX(0)
     , mTotalTranslateY(0)
     , mOperationMode(Scaling)
+    , mFlippedX(false)
+    , mFlippedY(false)
     , mMirrorX(false)
     , mMirrorY(false)
 {
@@ -71,11 +83,9 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
     mBottomResizeGrip = new QGraphicsRectItem(this);
     mBottomResizeGrip->setPen(Qt::NoPen);
     mLeftResizeGrip = new QGraphicsRectItem(this);
-    mLeftResizeGrip->setToolTip("left");
     mLeftResizeGrip->setPen(Qt::NoPen);
     mRightResizeGrip = new QGraphicsRectItem(this);
     mRightResizeGrip->setPen(Qt::NoPen);
-    mRightResizeGrip->setToolTip("Right");
     mTopResizeGrip = new QGraphicsRectItem(this);
     mTopResizeGrip->setPen(Qt::NoPen);
 
@@ -90,14 +100,11 @@ UBGraphicsDelegateFrame::UBGraphicsDelegateFrame(UBGraphicsItemDelegate* pDelega
     positionHandles();
 
     this->setAcceptHoverEvents(true);
-
-    angleWidget = new UBAngleWidget();
 }
 
 
 UBGraphicsDelegateFrame::~UBGraphicsDelegateFrame()
 {
-delete angleWidget;
     // NOOP
 }
 
@@ -224,12 +231,53 @@ void UBGraphicsDelegateFrame::mousePressEvent(QGraphicsSceneMouseEvent *event)
     mAngleOffset = 0;
 
     mInitialTransform = buildTransform();
+    mOriginalSize = delegated()->boundingRect().size();
 
     mCurrentTool = toolFromPos(event->pos());
-
+    setCursorFromAngle(QString::number((int)mAngle % 360));
     event->accept();
+
+    if (moving())
+        prepareFramesToMove(getLinkedFrames());
+
+}
+
+void UBGraphicsDelegateFrame::setCursorFromAngle(QString angle)
+{
+    if (mCurrentTool == Rotate)
+    {
+        QWidget *controlViewport = UBApplication::boardController->controlView()->viewport();
+
+        QSize cursorSize(45,30);
+
+
+        QImage mask_img(cursorSize, QImage::Format_Mono);
+        mask_img.fill(0xff);
+        QPainter mask_ptr(&mask_img);
+        mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
+        mask_ptr.drawRoundedRect(0,0, cursorSize.width()-1, cursorSize.height()-1, 6, 6);
+        QBitmap bmpMask = QBitmap::fromImage(mask_img);
+
+
+        QPixmap pixCursor(cursorSize);
+        pixCursor.fill(QColor(Qt::white));
+
+        QPainter painter(&pixCursor);
+
+        painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
+        painter.setBrush(QBrush(Qt::white));
+        painter.setPen(QPen(QColor(Qt::black)));
+        painter.drawRoundedRect(1,1,cursorSize.width()-2,cursorSize.height()-2,6,6);
+        painter.setFont(QFont("Arial", 10));
+        painter.drawText(1,1,cursorSize.width(),cursorSize.height(), Qt::AlignCenter, angle.append(QChar(176)));
+        painter.end();
+
+        pixCursor.setMask(bmpMask);
+        controlViewport->setCursor(pixCursor);
+    }
 }
 
+
 bool UBGraphicsDelegateFrame::canResizeBottomRight(qreal width, qreal height, qreal scaleFactor)
 {
     bool res = false;
@@ -247,153 +295,214 @@ bool UBGraphicsDelegateFrame::canResizeBottomRight(qreal width, qreal height, qr
     return res;
 }
 
+QPointF UBGraphicsDelegateFrame::getFixedPointFromPos()
+{
+    QPointF fixedPoint;
+    if (!moving() && !rotating())
+    {
+        if (resizingTop())
+        {
+            if (mMirrorX && mMirrorY)
+            {
+                if ((0 < mAngle) && (mAngle < 90))
+                    fixedPoint = delegated()->sceneBoundingRect().topLeft();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().topRight();
+            }
+            else
+            {
+                if ((0 < mAngle) && (mAngle <= 90))
+                    fixedPoint = delegated()->sceneBoundingRect().bottomRight();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
+            }
+        }
+        else if (resizingLeft())
+        {
+            if (mMirrorX && mMirrorY)
+            {
+                if ((0 < mAngle) && (mAngle < 90))
+                    fixedPoint = delegated()->sceneBoundingRect().bottomLeft();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().topLeft();
+            }
+            else
+            {
+                if ((0 < mAngle) && (mAngle <= 90))
+                    fixedPoint = delegated()->sceneBoundingRect().topRight();
+                else
+                    fixedPoint = delegated()->sceneBoundingRect().bottomRight();
+            }
+        }
+    }
+    return fixedPoint;
+}
+
+
+QSizeF UBGraphicsDelegateFrame::getResizeVector(qreal moveX, qreal moveY)
+{
+    qreal dPosX = 0;
+    qreal dPosY = 0;
+
+    if (resizingTop())
+    {
+        if (mMirrorX && mMirrorY)
+            dPosY = moveY;
+        else
+            dPosY = -moveY;
+    }
+    else if (resizingLeft())
+    {
+        if (mMirrorX && mMirrorY)
+            dPosX = moveX;
+        else
+            dPosX = -moveX;
+    }
+
+    else if (resizingRight())
+        dPosX = (mMirrorX) ?  -moveX : moveX;
+    else if (resizingBottom())
+        dPosY = mMirrorY ? -moveY : moveY;
+
+    return QSizeF(dPosX, dPosY);
+}
+
+QSizeF UBGraphicsDelegateFrame::resizeDelegate(qreal moveX, qreal moveY)
+{
+    QSizeF incVector;
+    mFixedPoint = getFixedPointFromPos();
+
+    UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated());
+    if (resizableItem)
+    {
+        incVector = getResizeVector(moveX, moveY);
+        resizableItem->resize(mOriginalSize + incVector);
+
+        if (resizingTop() || resizingLeft() || ((mMirrorX || mMirrorY) && resizingBottomRight()))
+        {
+            QPointF pos1 = getFixedPointFromPos();
+            delegated()->setPos(delegated()->pos()-pos1+mFixedPoint);
+        }
+    }
+
+    return incVector;
+}
+
 void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    QLineF move(mStartingPoint, event->scenePos());
+    if (None == mCurrentTool)
+        return;
+
+    QLineF move = QLineF(mStartingPoint, event->scenePos());
     qreal moveX = move.length() * cos((move.angle() - mAngle) * PI / 180);
     qreal moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180);
     qreal width = delegated()->boundingRect().width() * mTotalScaleX;
     qreal height = delegated()->boundingRect().height() * mTotalScaleY;
 
-    if(mOperationMode == Scaling)
+    if (mOperationMode == Scaling)
     {
-        mTranslateX = moveX;
-        // Perform the resize
-        if (resizingBottomRight())
+        if(!rotating())
         {
-            // -----------------------------------------------------
-            // ! We want to keep the aspect ratio with this resize !
-            // -----------------------------------------------------
-            qreal scaleX;
-            qreal scaleY;
-
-            if(!mMirrorX){
-                scaleX = (width + moveX) / width;
-            }else{
-                scaleX = (width - moveX) / width;
-            }
-
-            if(!mMirrorY){
-                scaleY = (height + moveY) / height;
-            }else{
-                scaleY = (height - moveY) / height;
-            }
+            mTranslateX = moveX;
+            // Perform the resize
+            if (resizingBottomRight())
+            {
+                // -----------------------------------------------------
+                // ! We want to keep the aspect ratio with this resize !
+                // -----------------------------------------------------
+                qreal scaleX;
+                qreal scaleY;
 
-            qreal scaleFactor = (scaleX + scaleY) / 2;
+                if(!mMirrorX){
+                    scaleX = (width + moveX) / width;
+                }else{
+                    scaleX = (width - moveX) / width;
+                }
 
-            // Do not allow resizing of image size under frame size
-            if (canResizeBottomRight(width, height, scaleFactor))
-            {
-                if (mRespectRatio)
-                {
-                    mScaleX = scaleFactor;
-                    mScaleY = scaleFactor;
+                if(!mMirrorY){
+                    scaleY = (height + moveY) / height;
+                }else{
+                    scaleY = (height - moveY) / height;
                 }
-                else
+
+                qreal scaleFactor = (scaleX + scaleY) / 2;
+
+                // Do not allow resizing of image size under frame size
+                if (canResizeBottomRight(width, height, scaleFactor))
                 {
-                    mScaleX = scaleX;
-                    mScaleY = scaleY;
-                }
-            }
-        }else if (resizingLeft() || resizingRight())
-        {
-            if(width != 0){
-                qreal scaleX = 0.0;
-                if(resizingLeft()){
-                    scaleX = (width - moveX) / width;
-                }else if(resizingRight()){
-                    scaleX = (width + moveX) / width;
-                }
-                if(mDelegate->isFlippable() && qAbs(scaleX) != 0){
-                    if((qAbs(width * scaleX)) < 2*mFrameWidth){
-                        bool negative = (scaleX < 0)?true:false;
-                        if(negative){
-                            if(mMirrorX)
-                                scaleX = 2*mFrameWidth/width;
-                            else
-                                scaleX = -2*mFrameWidth/width;
-                        }else{
-                            scaleX = -1;
-                        }
+                    if (mRespectRatio)
+                    {
+                        mScaleX = scaleFactor;
+                        mScaleY = scaleFactor;
                     }
-                    mScaleX = scaleX;
-                }else if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth){
-                    mScaleX = scaleX;
-                    if(resizingLeft()){
-                        mTranslateX = moveX;
+                    else
+                    {
+                        mScaleX = scaleX;
+                        mScaleY = scaleY;
                     }
                 }
-            }
-        }else if(resizingTop() || resizingBottom()){
-            if(height != 0){
-                qreal scaleY = 0.0;
-                if(resizingTop()){
-                    scaleY = (height - moveY) / height;
-                }else if(resizingBottom()){
-                    scaleY = (height + moveY) / height;
-                }
-
-                if(mDelegate->isFlippable() && qAbs(scaleY) != 0){
-                    if((qAbs(height * scaleY)) < 2*mFrameWidth){
-                        bool negative = (scaleY < 0)?true:false;
-                        if(negative){
-                            if(mMirrorY)
-                                scaleY = 2*mFrameWidth/width;
-                            else
-                                scaleY = -2*mFrameWidth/width;
-                        }else{
-                            scaleY = -1;
+            }else if (resizingLeft() || resizingRight())
+            {
+                if(width != 0){
+                    qreal scaleX = 0.0;
+                    if(resizingLeft()){
+                        scaleX = (width - moveX) / width;
+                    }else if(resizingRight()){
+                        scaleX = (width + moveX) / width;
+                    }
+                    if(mDelegate->isFlippable() && qAbs(scaleX) != 0){
+                        if((qAbs(width * scaleX)) < 2*mFrameWidth){
+                            bool negative = (scaleX < 0)?true:false;
+                            if(negative){
+                                if(mMirrorX)
+                                    scaleX = 2*mFrameWidth/width;
+                                else
+                                    scaleX = -2*mFrameWidth/width;
+                            }else{
+                                scaleX = -1;
+                                mFlippedX = !mFlippedX;
+                            }
+                        }
+                        mScaleX = scaleX;
+                    }else if (scaleX > 1 || (width * scaleX) > 2 * mFrameWidth){
+                        mScaleX = scaleX;
+                        if(resizingLeft()){
+                            mTranslateX = moveX;
                         }
                     }
-                    mScaleY = scaleY;
-                }else if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
-                {
-                    mScaleY = scaleY;
+                }
+            }else if(resizingTop() || resizingBottom()){
+                if(height != 0){
+                    qreal scaleY = 0.0;
                     if(resizingTop()){
-                        mTranslateY = moveY;
+                        scaleY = (height - moveY) / height;
+                    }else if(resizingBottom()){
+                        scaleY = (height + moveY) / height;
                     }
-                }
-            }
-        }
-    }
-    else if (mOperationMode == Resizing)
-    {
-        mTranslateX = moveX;
-        UBResizableGraphicsItem* resizableItem = dynamic_cast<UBResizableGraphicsItem*>(delegated());
 
-        if (resizableItem)
-        {
-            QLineF mousePosDelta(delegated()->mapFromScene(event->lastScenePos())
-                    , delegated()->mapFromScene(event->scenePos()));
-            QSizeF incVector(0, 0);
-
-            if (resizingBottomRight())
-            {
-                incVector = QSizeF(mousePosDelta.dx(), mousePosDelta.dy());
-            }
-            else if (resizingRight())
-            {
-                incVector = QSizeF(mousePosDelta.dx(), 0);
-            }
-            else if (resizingBottom())
-            {
-                incVector = QSizeF(0, mousePosDelta.dy());
-            }
-            else if (resizingLeft())
-            {
-                incVector = QSizeF(- mousePosDelta.dx(), 0);
-            }
-            else if (resizingTop())
-            {
-                incVector = QSizeF(0, - mousePosDelta.dy());
+                    if(mDelegate->isFlippable() && qAbs(scaleY) != 0){
+                        if((qAbs(height * scaleY)) < 2*mFrameWidth){
+                            bool negative = (scaleY < 0)?true:false;
+                            if(negative){
+                                if(mMirrorY)
+                                    scaleY = 2*mFrameWidth/width;
+                                else
+                                    scaleY = -2*mFrameWidth/width;
+                            }else{
+                                scaleY = -1;
+                                mFlippedY = !mFlippedY;
+                            }
+                        }
+                        mScaleY = scaleY;
+                    }else if (scaleY > 1 || (height * scaleY) > 2 * mFrameWidth)
+                    {
+                        mScaleY = scaleY;
+                        if(resizingTop()){
+                            mTranslateY = moveY;
+                        }
+                    }
+                }
             }
-
-            QSizeF newSize = resizableItem->size() + incVector;
-
-            if (!(mDelegate->getToolBarItem()->isVisibleOnBoard()
-                && (newSize.width() < mDelegate->getToolBarItem()->minWidth() / mDelegate->antiScaleRatio()
-                || newSize.height() < mDelegate->getToolBarItem()->minWidth() / mDelegate->antiScaleRatio() * 3/4)))
-                    resizableItem->resize(newSize);
         }
     }
 
@@ -427,82 +536,172 @@ void UBGraphicsDelegateFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
             }
         }
 
-        if (!angleWidget->isVisible())
-            angleWidget->show();
-
-        angleWidget->setText(QString::number((int)mAngle % 360));
-        angleWidget->update();
-
+        setCursorFromAngle(QString::number((int)mAngle % 360));
     }
     else if (moving())
     {
         mTranslateX = move.dx();
         mTranslateY = move.dy();
+        moveLinkedItems(move);
     }
 
-    QTransform tr = buildTransform();
-
-    //TODO UB 4.x: Could find a better solution ?
-    if (resizingRight() || resizingBottom() || resizingBottomRight())
+    if (mOperationMode == Scaling || moving() || rotating())
     {
-        QPointF ref;
-        if(!mMirrorX && !mMirrorY){
-            ref = delegated()->boundingRect().topLeft();
-        }else if(mMirrorX && !mMirrorY){
-            ref = delegated()->boundingRect().topLeft();
-        }else if(!mMirrorX && mMirrorY){
-            ref = delegated()->boundingRect().topLeft();
-        }else if(mMirrorX && mMirrorY){
-            ref = delegated()->boundingRect().topRight();
-        }
+        QTransform tr = buildTransform();
 
-        // Map the item topleft point to the current mouse move transform
-        QPointF topLeft = tr.map(ref);
-
-        // Map the item topleft point to the mouse press transform
-        QPointF fixedPoint = mInitialTransform.map(ref);
-
-        // Update the translation coordinates
-        mTranslateX += fixedPoint.x() - topLeft.x();
-        mTranslateY += fixedPoint.y() - topLeft.y();
+        if (resizingRight() || resizingBottom() || resizingBottomRight())
+        {
+            QPointF ref;
 
-        // Update the transform
-        tr = buildTransform();
-    }
-    else if (resizingTop() || resizingLeft())
-    {
-        if (mOperationMode == Scaling)
+            // we just detects coordinates of corner before and after scaling and then moves object at diff between them.
+            if (resizingBottomRight() && (mMirrorX || mMirrorY))
+            {
+                if (mFlippedX && !mMirrorX && mFlippedY)// && !mMirrorY)
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).x() - tr.map(delegated()->boundingRect().bottomLeft()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).y() - tr.map(delegated()->boundingRect().bottomLeft()).y();
+                }
+                else if ((mFlippedX || mMirrorX) && (mFlippedY || mMirrorY))
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomRight()).x() - tr.map(delegated()->boundingRect().bottomRight()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomRight()).y() - tr.map(delegated()->boundingRect().bottomRight()).y();
+                }
+                else if (mFlippedX || mMirrorX)
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().topRight()).x() - tr.map(delegated()->boundingRect().topRight()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().topRight()).y() - tr.map(delegated()->boundingRect().topRight()).y();
+                }
+                else if (mFlippedY || mMirrorY)
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).x() - tr.map(delegated()->boundingRect().bottomLeft()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomLeft()).y() - tr.map(delegated()->boundingRect().bottomLeft()).y();
+                }
+                else
+                {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().bottomRight()).x() - tr.map(delegated()->boundingRect().bottomRight()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().bottomRight()).y() - tr.map(delegated()->boundingRect().bottomRight()).y();
+                }
+            }
+            else
+            {
+                    mTranslateX += mInitialTransform.map(delegated()->boundingRect().topLeft()).x() - tr.map(delegated()->boundingRect().topLeft()).x();
+                    mTranslateY += mInitialTransform.map(delegated()->boundingRect().topLeft()).y() - tr.map(delegated()->boundingRect().topLeft()).y();
+            }
+        }
+        else if (resizingTop() || resizingLeft())
         {
             QPointF bottomRight = tr.map(delegated()->boundingRect().bottomRight());
             QPointF fixedPoint = mInitialTransform.map(delegated()->boundingRect().bottomRight());
             mTranslateX += fixedPoint.x() - bottomRight.x();
             mTranslateY += fixedPoint.y() - bottomRight.y();
         }
-        else
+        delegated()->setTransform(buildTransform());
+    }
+    else // resizing/resizing horizontally
+    {
+
+        if (resizingBottomRight())
         {
-            QLineF vector;
-            if (resizingLeft())
-            {
-                QPointF topRight1 = mInitialTransform.map(QPointF(delegated()->boundingRect().width() - moveX, 0));
-                QPointF topRight2 = mInitialTransform.map(QPointF(delegated()->boundingRect().width(), 0));
-                vector.setPoints(topRight1, topRight2);
-            }
+            static QSizeF incV = QSizeF();
+            static QSizeF incH = QSizeF();
+
+            if (mMirrorX && mMirrorY)
+                mCurrentTool = ResizeTop;
             else
-            {
-                QPointF bottomLeft1 = mInitialTransform.map(QPointF(0, delegated()->boundingRect().height() - moveY));
-                QPointF bottomLeft2 = mInitialTransform.map(QPointF(0, delegated()->boundingRect().height()));
-                vector.setPoints(bottomLeft1, bottomLeft2);
-            }
-            mTranslateX = vector.dx();
-            mTranslateY = vector.dy();
+                mCurrentTool = ResizeBottom;
+
+            incV = resizeDelegate(moveX, moveY);
+            mOriginalSize += incV;
+
+            if (mMirrorX && mMirrorY)
+                mCurrentTool = ResizeLeft;
+            else
+                mCurrentTool = ResizeRight;
+
+            move = QLineF(event->lastScenePos(), event->scenePos());
+            moveX = move.length() * cos((move.angle() - mAngle) * PI / 180);
+            moveY = -move.length() * sin((move.angle() - mAngle) * PI / 180);
+
+            mFixedPoint = getFixedPointFromPos();
+
+            incH = resizeDelegate(moveX, moveY);
+
+            mOriginalSize -= incV;
+            mOriginalSize += incH;
+
+            mCurrentTool = ResizeBottomRight;
         }
-        tr = buildTransform();
+        else
+            resizeDelegate(moveX, moveY);
     }
-
-    delegated()->setTransform(tr);
     event->accept();
 }
 
+QList<UBGraphicsDelegateFrame *> UBGraphicsDelegateFrame::getLinkedFrames()
+{
+    QList<UBGraphicsDelegateFrame*> linkedFrames;
+    QList<QGraphicsItem*> sItems = mDelegate->delegated()->scene()->selectedItems();
+    if (sItems.count())
+    {
+        sItems.removeAll(delegated());
+
+        foreach(QGraphicsItem *item, sItems)
+        {
+            UBGraphicsItem *gitem = dynamic_cast<UBGraphicsItem*>(item);
+            if (gitem)
+                linkedFrames << gitem->Delegate()->frame();
+        }
+    }
+    return linkedFrames;
+}
+
+void UBGraphicsDelegateFrame::prepareFramesToMove(QList<UBGraphicsDelegateFrame *> framesToMove)
+{
+    mLinkedFrames = framesToMove;
+    foreach (UBGraphicsDelegateFrame *frame, mLinkedFrames)
+    {
+        frame->prepareLinkedFrameToMove();
+    }
+}
+
+void UBGraphicsDelegateFrame::prepareLinkedFrameToMove()
+{
+    mDelegate->startUndoStep();
+
+    mStartingPoint = QPointF(0,0);
+
+    initializeTransform();
+
+    mScaleX = 1;
+    mScaleY = 1;
+    mTranslateX = 0;
+    mTranslateY = 0;
+    mAngleOffset = 0;
+
+    mInitialTransform = buildTransform();
+
+    mCurrentTool = Move;
+}
+
+void UBGraphicsDelegateFrame::moveLinkedItems(QLineF movingVector, bool bLinked)
+{
+    if (bLinked)
+    {
+        mCurrentTool = Move;
+
+        mTranslateX = movingVector.dx();
+        mTranslateY = movingVector.dy();
+
+        delegated()->setTransform(buildTransform(), false);
+    }
+    else
+    {
+        foreach(UBGraphicsDelegateFrame* frame, mLinkedFrames)
+        {
+           frame->moveLinkedItems(movingVector, true);
+        }
+    }
+}
 
 QTransform UBGraphicsDelegateFrame::buildTransform()
 {
@@ -525,9 +724,6 @@ QTransform UBGraphicsDelegateFrame::buildTransform()
 
 void UBGraphicsDelegateFrame::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (angleWidget->isVisible())
-        angleWidget->hide();
-
     updateResizeCursors();
 
     mDelegate->commitUndoStep();
@@ -538,13 +734,13 @@ void UBGraphicsDelegateFrame::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
     event->accept();
 
     mCurrentTool = None;
+
     QGraphicsRectItem::mouseReleaseEvent(event);
 
     // Show the buttons
     if(isResizing()){
         mResizing = false;
     }
-    mDelegate->setButtonsVisible(true);
 }
 
 
@@ -582,10 +778,13 @@ void UBGraphicsDelegateFrame::setVisible(bool visible)
 void UBGraphicsDelegateFrame::positionHandles()
 {
     QRectF itemRect = delegated()->boundingRect();
-    
-    if (mDelegate->getToolBarItem()->isVisibleOnBoard()
+
+    if (mDelegate->getToolBarItem() && mDelegate->getToolBarItem()->isVisibleOnBoard()
         && mDelegate->getToolBarItem()->isShifting())
-        itemRect.setHeight(itemRect.height() + mDelegate->getToolBarItem()->rect().height() * mDelegate->antiScaleRatio() * 1.1);
+    {
+        QPointF graphicsItemPosition = itemRect.topLeft();
+        itemRect.setTopLeft(graphicsItemPosition-QPointF(0,mDelegate->getToolBarItem()->boundingRect().height()* mDelegate->antiScaleRatio()));
+    }
 
     QTransform itemTransform = delegated()->sceneTransform();
     QPointF topLeft = itemTransform.map(itemRect.topLeft());
@@ -673,19 +872,22 @@ void UBGraphicsDelegateFrame::positionHandles()
 
     QVariant vLocked = delegated()->data(UBGraphicsItemData::ItemLocked);
     bool isLocked = (vLocked.isValid() && vLocked.toBool());
-
-    mBottomRightResizeGripSvgItem->setVisible(!isLocked);
-    mBottomResizeGripSvgItem->setVisible(!isLocked);
-    mLeftResizeGripSvgItem->setVisible(!isLocked);
-    mRightResizeGripSvgItem->setVisible(!isLocked);
-    mTopResizeGripSvgItem->setVisible(!isLocked);
+    bool bShowHorizontalResizers = ResizingHorizontally == mOperationMode;
+    bool bShowVerticalResizers   = ResizingHorizontally != mOperationMode;
+    bool bShowAllResizers        = Resizing == mOperationMode || Scaling == mOperationMode ;
+
+    mBottomRightResizeGripSvgItem->setVisible(!isLocked && bShowAllResizers);
+    mBottomResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
+    mLeftResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mRightResizeGripSvgItem->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mTopResizeGripSvgItem->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
     mRotateButton->setVisible(mDelegate->canRotate() && !isLocked);
 
-    mBottomRightResizeGrip->setVisible(!isLocked);
-    mBottomResizeGrip->setVisible(!isLocked);
-    mLeftResizeGrip->setVisible(!isLocked);
-    mRightResizeGrip->setVisible(!isLocked);
-    mTopResizeGrip->setVisible(!isLocked);
+    mBottomRightResizeGrip->setVisible(!isLocked && bShowAllResizers);
+    mBottomResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
+    mLeftResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mRightResizeGrip->setVisible(!isLocked && (bShowHorizontalResizers || bShowAllResizers));
+    mTopResizeGrip->setVisible(!isLocked && (bShowVerticalResizers || bShowAllResizers));
 
     if (isLocked)
     {
@@ -710,11 +912,11 @@ QGraphicsItem* UBGraphicsDelegateFrame::delegated()
 
 UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF pos)
 {
-        if(mDelegate->isLocked())
-                return None;
-    else if (bottomRightResizeGripRect().contains(pos))
+    if(mDelegate->isLocked())
+        return None;
+    else if (bottomRightResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode)
         return ResizeBottomRight;
-    else if (bottomResizeGripRect().contains(pos)){
+    else if (bottomResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
             if(mMirrorY){
                 return ResizeTop;
             }else{
@@ -736,7 +938,7 @@ UBGraphicsDelegateFrame::FrameTool UBGraphicsDelegateFrame::toolFromPos(QPointF
                 return ResizeRight;
             }
         }
-    else if (topResizeGripRect().contains(pos)){
+    else if (topResizeGripRect().contains(pos) && ResizingHorizontally != mOperationMode){
             if(mMirrorY){
                 return ResizeBottom;
             }else{
diff --git a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h
index 7aa2bd5..f52a38e 100644
--- a/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h
+++ b/Sankore-3.1/src/domain/UBGraphicsDelegateFrame.h
@@ -1,24 +1,30 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSDELEGATEFRAME_H_
 #define UBGRAPHICSDELEGATEFRAME_H_
 
 #include <QtGui>
 #include "core/UB.h"
-#include "domain/UBAngleWidget.h"
 
 class QGraphicsSceneMouseEvent;
 class UBGraphicsItemDelegate;
@@ -38,6 +44,9 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
         QPainterPath shape() const;
 
         virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+        QPointF getFixedPointFromPos();
+        QSizeF getResizeVector(qreal moveX, qreal moveY);
+        QSizeF resizeDelegate(qreal moveX, qreal moveY);
         virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
         virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
 
@@ -46,9 +55,13 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
 
                 virtual void setAntiScale(qreal pAntiScale);
 
-        enum OperationMode {Scaling, Resizing};
+        enum OperationMode {Scaling, Resizing, ResizingHorizontally};
         void setOperationMode(OperationMode pMode) {mOperationMode = pMode;}
         bool isResizing(){return mResizing;}
+        void moveLinkedItems(QLineF movingVector, bool bLinked = false);
+        void prepareFramesToMove(QList<UBGraphicsDelegateFrame *> framesToMove);
+        void prepareLinkedFrameToMove();
+        QList<UBGraphicsDelegateFrame *> getLinkedFrames();
 
     private:
         QRectF bottomRightResizeGripRect() const;
@@ -65,6 +78,7 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
         inline bool resizingTop () const { return mCurrentTool == ResizeTop; }
         inline bool rotating () const { return mCurrentTool == Rotate; }
         inline bool moving () const { return mCurrentTool == Move; }
+        void setCursorFromAngle(QString angle);
         bool canResizeBottomRight(qreal width, qreal height, qreal scaleFactor);
 
         QTransform buildTransform ();
@@ -98,6 +112,8 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
 
         QPointF mStartingPoint;
         QTransform mInitialTransform;
+        QSizeF mOriginalSize;
+        QPointF mFixedPoint;
 
         QGraphicsSvgItem* mBottomRightResizeGripSvgItem;
         QGraphicsSvgItem* mBottomResizeGripSvgItem;
@@ -115,13 +131,14 @@ class UBGraphicsDelegateFrame: public QGraphicsRectItem, public QObject
         OperationMode mOperationMode;
 
         QGraphicsItem* delegated();
+        bool mFlippedX;
+        bool mFlippedY;
         bool mMirrorX;
         bool mMirrorY;
         bool mResizing;
         bool mMirroredXAtStart;
         bool mMirroredYAtStart;
 
-        UBAngleWidget *angleWidget;
-
+        QList<UBGraphicsDelegateFrame *> mLinkedFrames;
 };
 #endif /* UBGRAPHICSDELEGATEFRAME_H_ */
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp
new file mode 100644
index 0000000..6ff7bd0
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.cpp
@@ -0,0 +1,384 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBGraphicsGroupContainerItem.h"
+
+#include <QtGui>
+
+#include "UBGraphicsMediaItem.h"
+#include "UBGraphicsTextItem.h"
+#include "domain/UBGraphicsItemDelegate.h"
+#include "domain/UBGraphicsGroupContainerItemDelegate.h"
+#include "domain/UBGraphicsScene.h"
+
+#include "core/memcheck.h"
+
+UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent)
+    : QGraphicsItem(parent)
+    , mCurrentItem(NULL)
+{
+    setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
+
+   	setDelegate(new UBGraphicsGroupContainerItemDelegate(this, 0));
+    Delegate()->init();
+
+    setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+    setFlag(QGraphicsItem::ItemIsSelectable, true);
+    setFlag(QGraphicsItem::ItemIsMovable, true);
+
+    UBGraphicsGroupContainerItem::setAcceptHoverEvents(true);
+
+    setUuid(QUuid::createUuid());
+
+    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
+}
+
+UBGraphicsGroupContainerItem::~UBGraphicsGroupContainerItem()
+{
+}
+
+void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
+{
+    if (!item) {
+        qWarning("UBGraphicsGroupContainerItem::addToGroup: cannot add null item");
+        return;
+    }
+    if (item == this) {
+        qWarning("UBGraphicsGroupContainerItem::addToGroup: cannot add a group to itself");
+        return;
+    }
+
+    //Check if group is allready rotatable or flippable
+    if (childItems().count()) {
+        if (UBGraphicsItem::isFlippable(this) && !UBGraphicsItem::isFlippable(item)) {
+            Delegate()->setFlippable(false);
+        }
+        if (UBGraphicsItem::isRotatable(this) && !UBGraphicsItem::isRotatable(item)) {
+            Delegate()->setRotatable(false);
+        }
+    } else {
+        Delegate()->setFlippable(UBGraphicsItem::isFlippable(item));
+        Delegate()->setRotatable(UBGraphicsItem::isRotatable(item));
+    }
+
+    // COMBINE
+    bool ok;
+    QTransform itemTransform = item->itemTransform(this, &ok);
+
+    if (!ok) {
+        qWarning("UBGraphicsGroupContainerItem::addToGroup: could not find a valid transformation from item to group coordinates");
+        return;
+    }
+
+    //setting item flags to given item
+    item->setSelected(false);
+    item->setFlag(QGraphicsItem::ItemIsSelectable, false);
+    item->setFlag( QGraphicsItem::ItemIsMovable, false);
+    item->setFlag(QGraphicsItem::ItemIsFocusable, true);
+
+    QTransform newItemTransform(itemTransform);
+    item->setPos(mapFromItem(item, 0, 0));
+
+    if (item->scene()) {
+        item->scene()->removeItem(item);
+    }
+
+    if (corescene())
+        corescene()->removeItemFromDeletion(item);
+    item->setParentItem(this);
+
+    // removing position from translation component of the new transform
+    if (!item->pos().isNull())
+        newItemTransform *= QTransform::fromTranslate(-item->x(), -item->y());
+
+    // removing additional transformations properties applied with itemTransform()
+    QPointF origin = item->transformOriginPoint();
+    QMatrix4x4 m;
+    QList<QGraphicsTransform*> transformList = item->transformations();
+    for (int i = 0; i < transformList.size(); ++i)
+        transformList.at(i)->applyTo(&m);
+    newItemTransform *= m.toTransform().inverted();
+    newItemTransform.translate(origin.x(), origin.y());
+    newItemTransform.rotate(-item->rotation());
+    newItemTransform.scale(1/item->scale(), 1/item->scale());
+    newItemTransform.translate(-origin.x(), -origin.y());
+
+    // ### Expensive, we could maybe use dirtySceneTransform bit for optimization
+
+    item->setTransform(newItemTransform);
+    //    item->d_func()->setIsMemberOfGroup(true);
+    prepareGeometryChange();
+    itemsBoundingRect |= itemTransform.mapRect(item->boundingRect() | item->childrenBoundingRect());
+    update();
+}
+void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item)
+{
+    if (!item) {
+        qDebug() << "can't specify the item because of the null pointer";
+        return;
+    }
+
+    UBCoreGraphicsScene *groupScene = corescene();
+    if (groupScene)
+    {    
+        groupScene->addItemToDeletion(item);
+    }
+
+    pRemoveFromGroup(item);
+
+    item->setFlags(ItemIsSelectable | ItemIsFocusable);
+
+}
+
+void UBGraphicsGroupContainerItem::deselectCurrentItem()
+{
+    if (mCurrentItem)
+    {
+        switch(mCurrentItem->type())
+        {
+        case UBGraphicsTextItem::Type:
+              {
+                  dynamic_cast<UBGraphicsTextItem*>(mCurrentItem)->Delegate()->getToolBarItem()->hide();
+              }
+              break;
+        case UBGraphicsMediaItem::Type:
+              {
+                  dynamic_cast<UBGraphicsMediaItem*>(mCurrentItem)->Delegate()->getToolBarItem()->hide();
+              }
+              break;                   
+
+        }
+        mCurrentItem->setSelected(false);
+        mCurrentItem = NULL;
+    }
+}
+
+QRectF UBGraphicsGroupContainerItem::boundingRect() const
+{
+    return itemsBoundingRect;
+}
+void UBGraphicsGroupContainerItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+                               QWidget *widget)
+{
+    Q_UNUSED(widget);
+    Q_UNUSED(painter);
+    Q_UNUSED(option);
+
+//    we would not use paint smth for the moment
+//    if (option->state & QStyle::State_Selected) {
+//        painter->setBrush(Qt::NoBrush);
+//        QPen tmpPen;
+//        qreal tmpPenWidth = 1.0;
+//        tmpPen.setWidth(tmpPenWidth);
+//        tmpPen.setColor(Qt::lightGray);
+//        painter->setPen(tmpPen);
+//        painter->drawRect(itemsBoundingRect.adjusted(tmpPenWidth / 2, tmpPenWidth / 2, -tmpPenWidth / 2, -tmpPenWidth / 2));
+//    }
+}
+
+UBCoreGraphicsScene *UBGraphicsGroupContainerItem::corescene()
+{
+    UBCoreGraphicsScene *castScene = dynamic_cast<UBCoreGraphicsScene*>(QGraphicsItem::scene());
+
+    return castScene;
+}
+UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItem::deepCopy() const
+{
+
+    UBGraphicsGroupContainerItem *copy = new UBGraphicsGroupContainerItem(parentItem());
+
+    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
+
+    copyItemParameters(copy);
+
+//    copy->resize(this->size());
+
+    return copy;
+}
+
+void UBGraphicsGroupContainerItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsGroupContainerItem *cp = dynamic_cast<UBGraphicsGroupContainerItem*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+    }
+}
+
+void UBGraphicsGroupContainerItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
+
+void UBGraphicsGroupContainerItem::destroy(bool canUndo) {
+
+    foreach (QGraphicsItem *item, childItems()) {
+        pRemoveFromGroup(item);
+        item->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        item->setFlag(QGraphicsItem::ItemIsFocusable, true);
+    }
+
+    remove(canUndo);
+}
+
+void UBGraphicsGroupContainerItem::clearSource()
+{
+    foreach(QGraphicsItem *child, childItems())
+    {
+        UBGraphicsItem *item = dynamic_cast<UBGraphicsItem *>(child);
+        if (item)
+        {
+            item->clearSource();
+        }
+    }
+}
+
+void UBGraphicsGroupContainerItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (Delegate()->mousePressEvent(event)) {
+        //NOOP
+    } else {
+
+    QGraphicsItem::mousePressEvent(event);
+        setSelected(true);
+    }
+
+
+}
+
+void UBGraphicsGroupContainerItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (Delegate()->mouseMoveEvent(event)) {
+        // NOOP;
+    } else {
+        QGraphicsItem::mouseMoveEvent(event);
+    }
+
+}
+
+void UBGraphicsGroupContainerItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+//    mDelegate->mouseReleaseEvent(event);
+    QGraphicsItem::mouseReleaseEvent(event);
+}
+
+QVariant UBGraphicsGroupContainerItem::itemChange(GraphicsItemChange change, const QVariant &value)
+{
+    QVariant newValue = Delegate()->itemChange(change, value);
+
+    foreach(QGraphicsItem *child, children())
+    {
+        UBGraphicsItem *item = dynamic_cast<UBGraphicsItem*>(child);
+        if (item)
+        {
+            item->Delegate()->positionHandles();
+        }
+    }
+
+    if (QGraphicsItem::ItemSelectedChange == change)
+    {
+        deselectCurrentItem();
+    }
+
+    return QGraphicsItem::itemChange(change, newValue);
+}
+
+void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item)
+{
+    if (!item) {
+        qWarning("QGraphicsItemGroup::removeFromGroup: cannot remove null item");
+        return;
+    }
+
+    QGraphicsItem *newParent = parentItem();
+
+    if (childItems().count()) {
+        if (!UBGraphicsItem::isFlippable(item) || !UBGraphicsItem::isRotatable(item)) {
+            bool flippableNow = true;
+            bool rotatableNow = true;
+
+            foreach (QGraphicsItem *item, childItems()) {
+                if (!UBGraphicsItem::isFlippable(item)) {
+                    flippableNow = false;
+                }
+                if (!UBGraphicsItem::isRotatable(item)) {
+                    rotatableNow = false;
+                }
+                if (!rotatableNow && !flippableNow) {
+                    break;
+                }
+            }
+            Delegate()->setFlippable(flippableNow);
+            Delegate()->setRotatable(rotatableNow);
+        }
+    }
+
+    // COMBINE
+    bool ok;
+    QTransform itemTransform;
+    if (newParent)
+        itemTransform = item->itemTransform(newParent, &ok);
+    else
+        itemTransform = item->sceneTransform();
+
+    QPointF oldPos = item->mapToItem(newParent, 0, 0);
+    item->setParentItem(newParent);
+    item->setPos(oldPos);
+
+    UBGraphicsScene *Scene = dynamic_cast<UBGraphicsScene *>(item->scene());
+    if (Scene)
+    {    
+        Scene->addItem(item);
+    }
+
+    // removing position from translation component of the new transform
+    if (!item->pos().isNull())
+        itemTransform *= QTransform::fromTranslate(-item->x(), -item->y());
+
+    // removing additional transformations properties applied
+    // with itemTransform() or sceneTransform()
+    QPointF origin = item->transformOriginPoint();
+    QMatrix4x4 m;
+    QList<QGraphicsTransform*> transformList = item->transformations();
+    for (int i = 0; i < transformList.size(); ++i)
+        transformList.at(i)->applyTo(&m);
+    itemTransform *= m.toTransform().inverted();
+    itemTransform.translate(origin.x(), origin.y());
+    itemTransform.rotate(-item->rotation());
+    itemTransform.scale(1 / item->scale(), 1 / item->scale());
+    itemTransform.translate(-origin.x(), -origin.y());
+
+    // ### Expensive, we could maybe use dirtySceneTransform bit for optimization
+
+    item->setTransform(itemTransform);
+//    item->d_func()->setIsMemberOfGroup(item->group() != 0);
+
+    // ### Quite expensive. But removeFromGroup() isn't called very often.
+    prepareGeometryChange();
+    itemsBoundingRect = childrenBoundingRect();
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h
new file mode 100644
index 0000000..362e43d
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItem.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBGRAPHICSGROUPCONTAINERITEM_H
+#define UBGRAPHICSGROUPCONTAINERITEM_H
+
+#include <QGraphicsItem>
+
+#include "domain/UBItem.h"
+#include "frameworks/UBCoreGraphicsScene.h"
+
+class UBGraphicsGroupContainerItem : public QGraphicsItem, public UBItem, public UBGraphicsItem
+{
+
+public:
+    UBGraphicsGroupContainerItem (QGraphicsItem *parent = 0);
+    virtual ~UBGraphicsGroupContainerItem();
+
+    void addToGroup(QGraphicsItem *item);
+    void removeFromGroup(QGraphicsItem *item);
+    void setCurrentItem(QGraphicsItem *item){mCurrentItem = item;}
+    QGraphicsItem *getCurrentItem() const {return mCurrentItem;}
+    void deselectCurrentItem();
+
+    QRectF boundingRect() const;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+
+    virtual UBCoreGraphicsScene *corescene();
+    virtual UBGraphicsGroupContainerItem *deepCopy() const;
+    virtual void copyItemParameters(UBItem *copy) const;
+
+    enum { Type = UBGraphicsItemType::groupContainerType };
+
+    virtual int type() const
+    {
+        return Type;
+    }
+
+    virtual void setUuid(const QUuid &pUuid);
+    void destroy(bool canUndo = true);
+
+    virtual void clearSource();
+
+protected:
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+    virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+
+    void pRemoveFromGroup(QGraphicsItem *item);
+
+private:
+
+    QRectF itemsBoundingRect;
+    QGraphicsItem *mCurrentItem;
+
+};
+
+#endif // UBGRAPHICSGROUPCONTAINERITEM_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp
new file mode 100644
index 0000000..f016336
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBGraphicsGroupContainerItemDelegate.h"
+
+#include <QtGui>
+
+#include "UBGraphicsScene.h"
+#include "gui/UBResources.h"
+
+#include "domain/UBGraphicsDelegateFrame.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+
+#include "board/UBBoardController.h"
+
+#include "core/memcheck.h"
+
+UBGraphicsGroupContainerItemDelegate::UBGraphicsGroupContainerItemDelegate(QGraphicsItem *pDelegated, QObject *parent) :
+    UBGraphicsItemDelegate(pDelegated, parent, true, false, false), mDestroyGroupButton(0)
+
+{
+    //Wrapper function. Use it to set correct data() to QGraphicsItem as well
+    setFlippable(false);
+    setRotatable(false);
+    setCanDuplicate(true);
+}
+
+UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated()
+{
+    return dynamic_cast<UBGraphicsGroupContainerItem*>(mDelegated);
+}
+
+void UBGraphicsGroupContainerItemDelegate::decorateMenu(QMenu *menu)
+{
+    mLockAction = menu->addAction(tr("Locked"), this, SLOT(lock(bool)));
+    QIcon lockIcon;
+    lockIcon.addPixmap(QPixmap(":/images/locked.svg"), QIcon::Normal, QIcon::On);
+    lockIcon.addPixmap(QPixmap(":/images/unlocked.svg"), QIcon::Normal, QIcon::Off);
+    mLockAction->setIcon(lockIcon);
+    mLockAction->setCheckable(true);
+
+    mShowOnDisplayAction = mMenu->addAction(tr("Visible on Extended Screen"), this, SLOT(showHide(bool)));
+    mShowOnDisplayAction->setCheckable(true);
+
+    QIcon showIcon;
+    showIcon.addPixmap(QPixmap(":/images/eyeOpened.svg"), QIcon::Normal, QIcon::On);
+    showIcon.addPixmap(QPixmap(":/images/eyeClosed.svg"), QIcon::Normal, QIcon::Off);
+    mShowOnDisplayAction->setIcon(showIcon);
+}
+
+void UBGraphicsGroupContainerItemDelegate::buildButtons()
+{
+    UBGraphicsItemDelegate::buildButtons();
+}
+
+bool UBGraphicsGroupContainerItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event)
+    delegated()->deselectCurrentItem();
+    return false;
+}
+
+bool UBGraphicsGroupContainerItemDelegate::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event)
+
+    return false;
+}
+
+bool UBGraphicsGroupContainerItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event)
+
+    return false;
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h
new file mode 100644
index 0000000..496f002
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsGroupContainerItemDelegate.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
+#define UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
+
+#include "domain/UBGraphicsItemDelegate.h"
+
+class UBGraphicsGroupContainerItem;
+
+class UBGraphicsGroupContainerItemDelegate : public UBGraphicsItemDelegate
+{
+Q_OBJECT
+
+public:
+    UBGraphicsGroupContainerItemDelegate(QGraphicsItem* pDelegated, QObject * parent = 0);
+    UBGraphicsGroupContainerItem *delegated();
+
+protected:
+    virtual void decorateMenu(QMenu *menu);
+    virtual void buildButtons();
+
+    virtual bool mousePressEvent(QGraphicsSceneMouseEvent *event);
+    virtual bool mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    virtual bool mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+private:
+    DelegateButton *mDestroyGroupButton;
+};
+
+#endif // UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp
index 35fc5bf..38127d8 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.cpp
@@ -1,23 +1,31 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 #include <QtSvg>
 #include <QDrag>
 
 #include "UBGraphicsItemDelegate.h"
+#include "UBGraphicsMediaItemDelegate.h"
 #include "UBGraphicsDelegateFrame.h"
 #include "UBGraphicsScene.h"
 #include "UBGraphicsItemUndoCommand.h"
@@ -36,11 +44,9 @@
 
 #include "UBGraphicsWidgetItem.h"
 
-#include "domain/UBAbstractWidget.h"
 #include "domain/UBGraphicsTextItem.h"
-#include "domain/UBGraphicsAudioItem.h"
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/ubgraphicsgroupcontaineritem.h"
+#include "domain/UBGraphicsMediaItem.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
 
 #include "web/UBWebController.h"
 
@@ -55,10 +61,15 @@ DelegateButton::DelegateButton(const QString & fileName, QGraphicsItem* pDelegat
     : QGraphicsSvgItem(fileName, parent)
     , mDelegated(pDelegated)
     , mIsTransparentToMouseEvent(false)
+    , mIsPressed(false)
+    , mProgressTimerId(-1)
+    , mPressProgres(0)
+    , mShowProgressIndicator(false)
     , mButtonAlignmentSection(section)
 {
     setAcceptedMouseButtons(Qt::LeftButton);
     setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+    setCacheMode(QGraphicsItem::NoCache); /* because of SANKORE-1017: this allows pixmap to be refreshed when grabbing window, thus teacher screen is synchronized with main screen. */
 }
 
 DelegateButton::~DelegateButton()
@@ -71,18 +82,28 @@ void DelegateButton::setFileName(const QString & fileName)
     QGraphicsSvgItem::setSharedRenderer(new QSvgRenderer (fileName, this));
 }
 
-
 void DelegateButton::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
+    if (mShowProgressIndicator) {
+        QTimer::singleShot(300, this, SLOT(startShowProgress()));
+    }
+
+    mIsPressed = true;
+
     // make sure delegate is selected, to avoid control being hidden
     mPressedTime = QTime::currentTime();
-//    mDelegated->setSelected(true);
 
     event->setAccepted(!mIsTransparentToMouseEvent);
- }
+}
 
 void DelegateButton::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
+    if (mShowProgressIndicator && mProgressTimerId != -1) {
+        killTimer(mProgressTimerId);
+        mPressProgres = 0;
+    }
+
+    mIsPressed = false;
     int timeto = qAbs(QTime::currentTime().msecsTo(mPressedTime));
 
     if (timeto < UBSettings::longClickInterval) {
@@ -92,9 +113,45 @@ void DelegateButton::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
     }
 
     event->setAccepted(!mIsTransparentToMouseEvent);
+
+    update();
+}
+
+void DelegateButton::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    QGraphicsSvgItem::paint(painter, option, widget);
+
+    if (mIsPressed && mShowProgressIndicator) {
+        QPen pen;
+        pen.setBrush(Qt::white);
+        pen.setWidth(3);
+        painter->save();
+
+        painter->setPen(pen);
+
+        int spanAngle = qMin(mPressProgres, UBSettings::longClickInterval) * 360 / UBSettings::longClickInterval;
+        painter->drawArc(option->rect.adjusted(pen.width(), pen.width(), -pen.width(), -pen.width()), 16 * 90, -16 * spanAngle);
+
+        painter->restore();
+    }
+}
+
+void DelegateButton::timerEvent(QTimerEvent *event)
+{
+    if (event->timerId() == mProgressTimerId) {
+        mPressProgres = qAbs(QTime::currentTime().msecsTo(mPressedTime));
+        update();
+    }
 }
 
-UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObject * parent, bool respectRatio, bool canRotate)
+void DelegateButton::startShowProgress()
+{
+    if (mIsPressed) {
+         mProgressTimerId = startTimer(37);
+    }
+}
+
+UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObject * parent, bool respectRatio, bool canRotate, bool useToolBar, bool showGoContentButton)
     : QObject(parent)
     , mDelegated(pDelegated)
     , mDeleteButton(NULL)
@@ -107,18 +164,22 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
     , mFrame(0)
     , mFrameWidth(UBSettings::settings()->objectFrameWidth)
     , mAntiScaleRatio(1.0)
+    , mToolBarItem(NULL)
     , mCanRotate(canRotate)
     , mCanDuplicate(true)
     , mRespectRatio(respectRatio)
     , mMimeData(NULL)
     , mFlippable(false)
+    , mToolBarUsed(useToolBar)
+    , mShowGoContentButton(showGoContentButton)
 {
-    // NOOP
+    connect(UBApplication::boardController, SIGNAL(zoomChanged(qreal)), this, SLOT(onZoomChanged()));
 }
 
 void UBGraphicsItemDelegate::init()
 {
-    mToolBarItem = new UBGraphicsToolBarItem(delegated());
+    if (mToolBarUsed)
+        mToolBarItem = new UBGraphicsToolBarItem(mDelegated);
 
     mFrame = new UBGraphicsDelegateFrame(this, QRectF(0, 0, 0, 0), mFrameWidth, mRespectRatio);
     mFrame->hide();
@@ -136,12 +197,14 @@ void UBGraphicsItemDelegate::init()
     connect(mMenuButton, SIGNAL(clicked()), this, SLOT(showMenu()));
     mButtons << mMenuButton;
 
-    mZOrderUpButton = new DelegateButton(":/images/plus.svg", mDelegated, mFrame, Qt::BottomLeftSection);
+    mZOrderUpButton = new DelegateButton(":/images/z_layer_up.svg", mDelegated, mFrame, Qt::BottomLeftSection);
+    mZOrderUpButton->setShowProgressIndicator(true);
     connect(mZOrderUpButton, SIGNAL(clicked()), this, SLOT(increaseZLevelUp()));
     connect(mZOrderUpButton, SIGNAL(longClicked()), this, SLOT(increaseZlevelTop()));
     mButtons << mZOrderUpButton;
 
-    mZOrderDownButton = new DelegateButton(":/images/minus.svg", mDelegated, mFrame, Qt::BottomLeftSection);
+    mZOrderDownButton = new DelegateButton(":/images/z_layer_down.svg", mDelegated, mFrame, Qt::BottomLeftSection);
+    mZOrderDownButton->setShowProgressIndicator(true);
     connect(mZOrderDownButton, SIGNAL(clicked()), this, SLOT(increaseZLevelDown()));
     connect(mZOrderDownButton, SIGNAL(longClicked()), this, SLOT(increaseZlevelBottom()));
     mButtons << mZOrderDownButton;
@@ -152,16 +215,21 @@ void UBGraphicsItemDelegate::init()
     {
         if (button->getSection() != Qt::TitleBarArea)
         {
-        button->hide();
-        button->setFlag(QGraphicsItem::ItemIsSelectable, true);
+            button->hide();
+            button->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        }
     }
-}
+
+    //Wrapper function. Use it to set correct data() to QGraphicsItem as well
+    setFlippable(false);
+    setRotatable(false);
 }
 
 
 UBGraphicsItemDelegate::~UBGraphicsItemDelegate()
 {
-    qDeleteAll(mButtons);
+    if (UBApplication::boardController)
+        disconnect(UBApplication::boardController, SIGNAL(zoomChanged(qreal)), this, SLOT(onZoomChanged()));
     // do not release mMimeData.
     // the mMimeData is owned by QDrag since the setMimeData call as specified in the documentation
 }
@@ -188,10 +256,10 @@ QVariant UBGraphicsItemDelegate::itemChange(QGraphicsItem::GraphicsItemChange ch
     if ((change == QGraphicsItem::ItemSelectedHasChanged
          || change == QGraphicsItem::ItemPositionHasChanged
          || change == QGraphicsItem::ItemTransformHasChanged)
-        && mDelegated->scene())
-        {
+            && mDelegated->scene()
+            && UBApplication::boardController)
+    {
         mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());
-
         positionHandles();
     }
 
@@ -247,16 +315,9 @@ bool UBGraphicsItemDelegate::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
         }
         mDrag->exec();
         mDragPixmap = QPixmap();
-
         return true;
     }
-
-    if(isLocked()) {
-        event->accept();
-        return true;
-    } else {
-        return false;
-    }
+    return false;
 }
 
 bool UBGraphicsItemDelegate::weelEvent(QGraphicsSceneWheelEvent *event)
@@ -327,23 +388,27 @@ void UBGraphicsItemDelegate::positionHandles()
     if (mDelegated->isSelected()) {
         bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control;
         showHide(shownOnDisplay);
-        lock(isLocked());
+        mDelegated->setData(UBGraphicsItemData::ItemLocked, QVariant(isLocked()));
         updateFrame();
-        mFrame->show();
+
+        if (UBStylusTool::Play != UBDrawingController::drawingController()->stylusTool())
+            mFrame->show();
 
         updateButtons(true);
 
-        if (mToolBarItem->isVisibleOnBoard())
+        if (mToolBarItem && mToolBarItem->isVisibleOnBoard())
         {
-        updateToolBar();
-           mToolBarItem->show();
+            mToolBarItem->positionHandles();
+            mToolBarItem->update();
+            mToolBarItem->show();
         }
     } else {
         foreach(DelegateButton* button, mButtons)
             button->hide();
 
         mFrame->hide();
-        mToolBarItem->hide();
+        if (mToolBarItem)
+            mToolBarItem->hide();
     }
 }
 
@@ -374,27 +439,52 @@ void UBGraphicsItemDelegate::setZOrderButtonsVisible(bool visible)
 
 void UBGraphicsItemDelegate::remove(bool canUndo)
 {
-//    QGraphicsScene* scene = mDelegated->scene();
+    /*UBGraphicsScene* scene = dynamic_cast<UBGraphicsScene*>(mDelegated->scene());
+    if (scene && canUndo)
+    {
+        UBGraphicsItemUndoCommand *uc = new UBGraphicsItemUndoCommand(scene, mDelegated, 0);
+        UBApplication::undoStack->push(uc);
+    }
+    mDelegated->hide();  */
+
     UBGraphicsScene* scene = dynamic_cast<UBGraphicsScene*>(mDelegated->scene());
     if (scene)
     {
-        foreach(DelegateButton* button, mButtons)
-            scene->removeItem(button);
+//        bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control;
+//        showHide(shownOnDisplay);
+//        updateFrame();
+//        updateButtons();
+
+        if (mFrame && !mFrame->scene() && mDelegated->scene())
+        {
+            mDelegated->scene()->addItem(mFrame);
+        }
+        mFrame->setAntiScale(mAntiScaleRatio);
+        mFrame->positionHandles();
+        updateButtons(true);
 
+        foreach(DelegateButton* button, mButtons) {
+            scene->removeItem(button);
+        }
         scene->removeItem(mFrame);
+
+        /* this is performed because when removing delegated from scene while it contains flash content, segfault happens because of QGraphicsScene::removeItem() */
+        UBGraphicsWidgetItem *mDelegated_casted = dynamic_cast<UBGraphicsWidgetItem*>(mDelegated);
+        if (mDelegated_casted)
+            mDelegated_casted->setHtml(QString());
+
         scene->removeItem(mDelegated);
-        scene->removeItem(mToolBarItem);
 
         if (canUndo)
         {
-            UBGraphicsItemUndoCommand *uc = new UBGraphicsItemUndoCommand((UBGraphicsScene*) scene, mDelegated, 0);
+            UBGraphicsItemUndoCommand *uc = new UBGraphicsItemUndoCommand(scene, mDelegated, 0);
             UBApplication::undoStack->push(uc);
         }
     }
 }
 
 
-bool UBGraphicsItemDelegate::isLocked()
+bool UBGraphicsItemDelegate::isLocked() const
 {
     return mDelegated->data(UBGraphicsItemData::ItemLocked).toBool();
 }
@@ -402,10 +492,7 @@ bool UBGraphicsItemDelegate::isLocked()
 
 void UBGraphicsItemDelegate::duplicate()
 {
-    // TODO UB 4.x .. rewrite .. .this is absurde ... we know what we are duplicating
-
-    UBApplication::boardController->copy();
-    UBApplication::boardController->paste();
+    UBApplication::boardController->duplicateItem(dynamic_cast<UBItem*>(delegated()));
 }
 
 void UBGraphicsItemDelegate::increaseZLevelUp()
@@ -449,31 +536,30 @@ void UBGraphicsItemDelegate::lock(bool locked)
     }
 
     mDelegated->update();
+    positionHandles();
     mFrame->positionHandles();
 }
 
-
-void UBGraphicsItemDelegate::showHide(bool show)
+void UBGraphicsItemDelegate::showHideRecurs(const QVariant &pShow, QGraphicsItem *pItem)
 {
-    if (show)
-    {
-        mDelegated->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Object));
-    }
-    else
-    {
-        mDelegated->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+    pItem->setData(UBGraphicsItemData::ItemLayerType, pShow);
+    foreach (QGraphicsItem *insideItem, pItem->childItems()) {
+        showHideRecurs(pShow, insideItem);
     }
+}
 
+void UBGraphicsItemDelegate::showHide(bool show)
+{
+    QVariant showFlag = QVariant(show ? UBItemLayerType::Object : UBItemLayerType::Control);
+    showHideRecurs(showFlag, mDelegated);
     mDelegated->update();
 
     emit showOnDisplayChanged(show);
 }
 
 
-void UBGraphicsItemDelegate::gotoContentSource(bool checked)
+void UBGraphicsItemDelegate::gotoContentSource()
 {
-    Q_UNUSED(checked)
-
     UBItem* item = dynamic_cast<UBItem*>(mDelegated);
 
     if(item && !item->sourceUrl().isEmpty())
@@ -517,6 +603,16 @@ void UBGraphicsItemDelegate::commitUndoStep()
     }
 }
 
+void UBGraphicsItemDelegate::onZoomChanged()
+{
+    mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());
+
+    positionHandles();
+}
+
+void UBGraphicsItemDelegate::buildButtons()
+{
+}
 
 void UBGraphicsItemDelegate::decorateMenu(QMenu* menu)
 {
@@ -535,12 +631,14 @@ void UBGraphicsItemDelegate::decorateMenu(QMenu* menu)
     showIcon.addPixmap(QPixmap(":/images/eyeClosed.svg"), QIcon::Normal, QIcon::Off);
     mShowOnDisplayAction->setIcon(showIcon);
 
-    mGotoContentSourceAction = menu->addAction(tr("Go to Content Source"), this, SLOT(gotoContentSource(bool)));
-
-    QIcon sourceIcon;
-    sourceIcon.addPixmap(QPixmap(":/images/toolbar/internet.png"), QIcon::Normal, QIcon::On);
-    mGotoContentSourceAction->setIcon(sourceIcon);
+    if (mShowGoContentButton)
+    {
+        mGotoContentSourceAction = menu->addAction(tr("Go to Content Source"), this, SLOT(gotoContentSource()));
 
+        QIcon sourceIcon;
+        sourceIcon.addPixmap(QPixmap(":/images/toolbar/internet.png"), QIcon::Normal, QIcon::On);
+        mGotoContentSourceAction->setIcon(sourceIcon);
+    }
 }
 
 void UBGraphicsItemDelegate::updateMenuActionState()
@@ -580,6 +678,22 @@ void UBGraphicsItemDelegate::showMenu()
 void UBGraphicsItemDelegate::setFlippable(bool flippable)
 {
     mFlippable = flippable;
+
+    Q_ASSERT (mDelegated);
+    if (mDelegated) {
+        mDelegated->setData(UBGraphicsItemData::ItemFlippable, QVariant(flippable));
+    }
+}
+
+void UBGraphicsItemDelegate::setRotatable(bool pCanRotate)
+{
+    mCanRotate = pCanRotate;
+
+    Q_ASSERT(mDelegated);
+
+    if (mDelegated) {
+        mDelegated->setData(UBGraphicsItemData::ItemRotatable, QVariant(pCanRotate));
+    }
 }
 
 bool UBGraphicsItemDelegate::isFlippable()
@@ -650,36 +764,6 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated)
     }
 }
 
-void UBGraphicsItemDelegate::updateToolBar()
-{
-    QTransform transformForToolbarButtons;
-    transformForToolbarButtons.scale(mAntiScaleRatio, 1);
-
-    QRectF toolBarRect = mToolBarItem->rect();
-    toolBarRect.setWidth(delegated()->boundingRect().width() - 10);
-    mToolBarItem->setRect(toolBarRect);
-
-    if (mToolBarItem->isShifting())
-        mToolBarItem->setPos(delegated()->boundingRect().bottomLeft() + QPointF(5 * mAntiScaleRatio, 0));
-    else mToolBarItem->setPos(delegated()->boundingRect().bottomLeft() - QPointF(-5 * mAntiScaleRatio, mToolBarItem->rect().height() * 1.1 * mAntiScaleRatio));
-
-    int offsetOnToolBar = 5 * mAntiScaleRatio;
-    QList<QGraphicsItem*> itemList = mToolBarItem->itemsOnToolBar();
-    foreach (QGraphicsItem* item, itemList)
-    {
-        item->setPos(offsetOnToolBar, 0);
-        offsetOnToolBar += (item->boundingRect().width() + 5) * mAntiScaleRatio;
-        item->setTransform(transformForToolbarButtons);
-        item->show();
-    }
-
-    mToolBarItem->setOffsetOnToolBar(offsetOnToolBar);
-
-    QTransform tr;
-    tr.scale(1, mAntiScaleRatio);
-    mToolBarItem->setTransform(tr);
-}
-
 void UBGraphicsItemDelegate::setButtonsVisible(bool visible)
 {
     foreach(DelegateButton* pButton, mButtons){
@@ -687,19 +771,42 @@ void UBGraphicsItemDelegate::setButtonsVisible(bool visible)
     }
 }
 
+
 UBGraphicsToolBarItem::UBGraphicsToolBarItem(QGraphicsItem * parent) : 
     QGraphicsRectItem(parent),
     mShifting(true),
     mVisible(false),
-    mMinWidth(200)
+    mMinWidth(200),
+    mInitialHeight(26),
+    mElementsPadding(2)
 {
     QRectF rect = this->rect();
-    rect.setHeight(26);
+    rect.setHeight(mInitialHeight);
+    rect.setWidth(parent->boundingRect().width());
     this->setRect(rect);
 
-    setBrush(QColor(UBSettings::paletteColor));             
+  //  setBrush(QColor(UBSettings::paletteColor));             
     setPen(Qt::NoPen);
     hide();
+
+    update();
+}
+
+
+void UBGraphicsToolBarItem::positionHandles()
+{
+    int itemXOffset = 0;
+    foreach (QGraphicsItem* item, mItemsOnToolBar)
+    {
+        item->setPos(itemXOffset, 0);
+        itemXOffset += (item->boundingRect().width()+mElementsPadding);
+        item->show();
+    }
+}
+
+void UBGraphicsToolBarItem::update()
+{
+    QGraphicsRectItem::update();
 }
 
 void UBGraphicsToolBarItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
@@ -710,5 +817,557 @@ void UBGraphicsToolBarItem::paint(QPainter *painter, const QStyleOptionGraphicsI
     QPainterPath path;
     path.addRoundedRect(rect(), 10, 10);  
 
+    setBrush(QBrush(UBSettings::paletteColor));
+
     painter->fillPath(path, brush());
 }
+
+MediaTimer::MediaTimer(QGraphicsItem * parent): QGraphicsRectItem(parent) 
+{
+    val        = 0;
+    smallPoint = false;
+    setNumDigits(4);
+}
+
+MediaTimer::~MediaTimer()
+{}
+
+void MediaTimer::drawString(const QString &s, QPainter &p,
+                                   QBitArray *newPoints, bool newString)
+{
+    QPoint  pos;
+
+    int digitSpace = smallPoint ? 2 : 1;
+    int xSegLen    = (rect().width()/1)*5/(ndigits*(5 + digitSpace) + digitSpace);
+    int ySegLen    = rect().height()*5/12;
+    int segLen     = ySegLen > xSegLen ? xSegLen : ySegLen;
+    int xAdvance   = segLen*(5 + digitSpace)/5;
+    int xOffset    = rect().x() + (rect().width()/1 - ndigits*xAdvance + segLen/5)/2;
+    int yOffset    = (rect().height() - segLen*2)/2;
+
+    for (int i=0;  i<ndigits; i++) {
+        pos = QPoint(xOffset + xAdvance*i, yOffset);
+        if (newString)
+            drawDigit(pos, p, segLen, s[i].toLatin1(), digitStr[i].toLatin1());
+        else
+            drawDigit(pos, p, segLen, s[i].toLatin1());
+        if (newPoints) {
+            char newPoint = newPoints->testBit(i) ? '.' : ' ';
+            if (newString) {
+                char oldPoint = points.testBit(i) ? '.' : ' ';
+                drawDigit(pos, p, segLen, newPoint, oldPoint);
+            } else {
+                drawDigit(pos, p, segLen, newPoint);
+            }
+        }
+    }
+    if (newString) {
+        digitStr = s;
+        digitStr.truncate(ndigits);
+        if (newPoints)
+            points = *newPoints;
+    }
+}
+
+void MediaTimer::drawDigit(const QPoint &pos, QPainter &p, int segLen,
+                                  char newCh, char oldCh)
+{
+     char updates[18][2];        // can hold 2 times number of segments, only
+                                 // first 9 used if segment table is correct
+     int  nErases;
+     int  nUpdates;
+     const char *segs;
+     int  i,j;
+ 
+     const char erase      = 0;
+     const char draw       = 1;
+     const char leaveAlone = 2;
+ 
+     segs = getSegments(oldCh);
+     for (nErases=0; segs[nErases] != 99; nErases++) {
+         updates[nErases][0] = erase;            // get segments to erase to
+         updates[nErases][1] = segs[nErases];    // remove old char
+     }
+     nUpdates = nErases;
+     segs = getSegments(newCh);
+     for(i = 0 ; segs[i] != 99 ; i++) {
+         for (j=0;  j<nErases; j++)
+             if (segs[i] == updates[j][1]) {   // same segment ?
+                 updates[j][0] = leaveAlone;     // yes, already on screen
+                 break;
+             }
+         if (j == nErases) {                   // if not already on screen
+             updates[nUpdates][0] = draw;
+             updates[nUpdates][1] = segs[i];
+             nUpdates++;
+         }
+     }
+     for (i=0; i<nUpdates; i++) {
+         if (updates[i][0] == draw)
+             drawSegment(pos, updates[i][1], p, segLen);
+         if (updates[i][0] == erase)
+             drawSegment(pos, updates[i][1], p, segLen, true);
+     }
+}
+
+char MediaTimer::segments [][8] = 
+        { 
+              { 0, 1, 2, 4, 5, 6,99, 0},             // 0    0
+              { 2, 5,99, 0, 0, 0, 0, 0},             // 1    1
+              { 0, 2, 3, 4, 6,99, 0, 0},             // 2    2
+              { 0, 2, 3, 5, 6,99, 0, 0},             // 3    3
+              { 1, 2, 3, 5,99, 0, 0, 0},             // 4    4
+              { 0, 1, 3, 5, 6,99, 0, 0},             // 5    5
+              { 0, 1, 3, 4, 5, 6,99, 0},             // 6    6
+              { 0, 2, 5,99, 0, 0, 0, 0},             // 7    7
+              { 0, 1, 2, 3, 4, 5, 6,99},             // 8    8
+              { 0, 1, 2, 3, 5, 6,99, 0},             // 9    9
+              { 8, 9,99, 0, 0, 0, 0, 0},             // 10   :
+              {99, 0, 0, 0, 0, 0, 0, 0}              // 11   empty
+        };
+
+const char* MediaTimer::getSegments(char ch)               // gets list of segments for ch
+{
+     if (ch >= '0' && ch <= '9')
+        return segments[ch - '0'];
+     if (ch == ':')
+        return segments[10];
+     if (ch == ' ')
+        return segments[11];
+     
+     return NULL;
+}
+
+void MediaTimer::drawSegment(const QPoint &pos, char segmentNo, QPainter &p,
+                                    int segLen, bool erase)
+{
+    Q_UNUSED(erase);
+
+    QPoint ppt;
+    QPoint pt = pos;
+    int width = segLen/5;
+ 
+#define LINETO(X,Y) addPoint(a, QPoint(pt.x() + (X),pt.y() + (Y)))
+#define LIGHT
+#define DARK
+
+    QPolygon a(0);
+    switch (segmentNo) {
+    case 0 :
+        ppt = pt;
+        LIGHT;
+        LINETO(segLen - 1,0);
+        DARK;
+        LINETO(segLen - width - 1,width);
+        LINETO(width,width);
+        LINETO(0,0);
+        break;
+    case 1 :
+        pt += QPoint(0 , 1);
+        ppt = pt;
+        LIGHT;
+        LINETO(width,width);
+        DARK;
+        LINETO(width,segLen - width/2 - 2);
+        LINETO(0,segLen - 2);
+        LIGHT;
+        LINETO(0,0);
+        break;
+    case 2 :
+        pt += QPoint(segLen - 1 , 1);
+        ppt = pt;
+        DARK;
+        LINETO(0,segLen - 2);
+        LINETO(-width,segLen - width/2 - 2);
+        LIGHT;
+        LINETO(-width,width);
+        LINETO(0,0);
+        break;
+    case 3 :
+        pt += QPoint(0 , segLen);
+        ppt = pt;
+        LIGHT;
+        LINETO(width,-width/2);
+        LINETO(segLen - width - 1,-width/2);
+        LINETO(segLen - 1,0);
+        DARK;
+        if (width & 1) {            // adjust for integer division error
+            LINETO(segLen - width - 3,width/2 + 1);
+            LINETO(width + 2,width/2 + 1);
+        } else {
+            LINETO(segLen - width - 1,width/2);
+            LINETO(width,width/2);
+        }
+        LINETO(0,0);
+        break;
+    case 4 :
+        pt += QPoint(0 , segLen + 1);
+        ppt = pt;
+        LIGHT;
+        LINETO(width,width/2);
+        DARK;
+        LINETO(width,segLen - width - 2);
+        LINETO(0,segLen - 2);
+        LIGHT;
+        LINETO(0,0);
+        break;
+    case 5 :
+        pt += QPoint(segLen - 1 , segLen + 1);
+        ppt = pt;
+        DARK;
+        LINETO(0,segLen - 2);
+        LINETO(-width,segLen - width - 2);
+        LIGHT;
+        LINETO(-width,width/2);
+        LINETO(0,0);
+        break;
+    case 6 :
+        pt += QPoint(0 , segLen*2);
+        ppt = pt;
+        LIGHT;
+        LINETO(width,-width);
+        LINETO(segLen - width - 1,-width);
+        LINETO(segLen - 1,0);
+        DARK;
+        LINETO(0,0);
+        break;
+    case 7 :
+        pt += QPoint(segLen/2 , segLen*2);
+        ppt = pt;
+        DARK;
+        LINETO(width,0);
+        LINETO(width,-width);
+        LIGHT;
+        LINETO(0,-width);
+        LINETO(0,0);
+        break;
+    case 8 :
+        pt += QPoint(segLen/2 - width/2 + 1 , segLen/2 + width);
+        ppt = pt;
+        DARK;
+        LINETO(width,0);
+        LINETO(width,-width);
+        LIGHT;
+        LINETO(0,-width);
+        LINETO(0,0);
+        break;
+    case 9 :
+        pt += QPoint(segLen/2 - width/2 + 1 , 3*segLen/2 + width);
+        ppt = pt;
+        DARK;
+        LINETO(width,0);
+        LINETO(width,-width);
+        LIGHT;
+        LINETO(0,-width);
+        LINETO(0,0);
+        break;
+    default :
+        break;
+    }
+    // End exact copy
+    p.setPen(Qt::white);
+    p.setBrush(Qt::white);
+    p.drawPolygon(a);
+    p.setBrush(Qt::NoBrush);
+
+    pt = pos;
+
+#undef LINETO
+#undef LIGHT
+#undef DARK
+}
+
+void MediaTimer::addPoint(QPolygon &a, const QPoint &p)
+{
+    uint n = a.size();
+    a.resize(n + 1);
+    a.setPoint(n, p);
+}
+
+void MediaTimer::paint(QPainter *p,
+        const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+
+    QFont f = p->font();
+    f.setPointSizeF(f.pointSizeF());
+    p->setFont(f);
+
+    if (smallPoint)
+        drawString(digitStr, *p, &points, false);
+    else
+        drawString(digitStr, *p, 0, false);
+}
+
+void MediaTimer::internalSetString(const QString& s)
+{
+    QString buffer;
+    int i;
+    int len = s.length();
+    QBitArray newPoints(ndigits);
+
+    if (!smallPoint) {
+        if (len == ndigits)
+            buffer = s;
+        else
+            buffer = s.right(ndigits).rightJustified(ndigits, QLatin1Char(' '));
+    } else {
+        int  index = -1;
+        bool lastWasPoint = true;
+        newPoints.clearBit(0);
+        for (i=0; i<len; i++) {
+            if (s[i] == QLatin1Char('.')) {
+                if (lastWasPoint) {           // point already set for digit?
+                    if (index == ndigits - 1) // no more digits
+                        break;
+                    index++;
+                    buffer[index] = QLatin1Char(' ');        // 2 points in a row, add space
+                }
+                newPoints.setBit(index);        // set decimal point
+                lastWasPoint = true;
+            } else {
+                if (index == ndigits - 1)
+                    break;
+                index++;
+                buffer[index] = s[i];
+                newPoints.clearBit(index);      // decimal point default off
+                lastWasPoint = false;
+            }
+        }
+        if (index < ((int) ndigits) - 1) {
+            for(i=index; i>=0; i--) {
+                buffer[ndigits - 1 - index + i] = buffer[i];
+                newPoints.setBit(ndigits - 1 - index + i,
+                                   newPoints.testBit(i));
+            }
+            for(i=0; i<ndigits-index-1; i++) {
+                buffer[i] = QLatin1Char(' ');
+                newPoints.clearBit(i);
+            }
+        }
+    }
+
+    if (buffer == digitStr)
+        return;
+
+    digitStr = buffer;
+    if (smallPoint)
+        points = newPoints;
+    update();
+}
+
+void MediaTimer::display(const QString &s)
+{
+    val = 0;
+    bool ok = false;
+    double v = s.toDouble(&ok);
+    if (ok)
+        val = v;
+    internalSetString(s);
+}
+
+void MediaTimer::setNumDigits(int numDigits)
+{
+    if (numDigits > 99) {
+        qWarning("QLCDNumber::setNumDigits: Max 99 digits allowed");
+        numDigits = 99;
+    }
+    if (numDigits < 0) {
+        qWarning("QLCDNumber::setNumDigits: Min 0 digits allowed");
+        numDigits = 0;
+    }
+    if (digitStr.isNull()) {                  // from constructor
+        ndigits = numDigits;
+        digitStr.fill(QLatin1Char(' '), ndigits);
+        points.fill(0, ndigits);
+        digitStr[ndigits - 1] = QLatin1Char('0');            // "0" is the default number
+    } else {
+        if (numDigits == ndigits)             // no change
+            return;
+        register int i;
+        int dif;
+        if (numDigits > ndigits) {            // expand
+            dif = numDigits - ndigits;
+            QString buf;
+            buf.fill(QLatin1Char(' '), dif);
+            digitStr.insert(0, buf);
+            points.resize(numDigits);
+            for (i=numDigits-1; i>=dif; i--)
+                points.setBit(i, points.testBit(i-dif));
+            for (i=0; i<dif; i++)
+                points.clearBit(i);
+        } else {                                        // shrink
+            dif = ndigits - numDigits;
+            digitStr = digitStr.right(numDigits);
+            QBitArray tmpPoints = points;
+            points.resize(numDigits);
+            for (i=0; i<(int)numDigits; i++)
+                points.setBit(i, tmpPoints.testBit(i+dif));
+        }
+        ndigits = numDigits;
+        update();
+    }
+}
+
+DelegateMediaControl::DelegateMediaControl(UBGraphicsMediaItem* pDelegated, QGraphicsItem * parent)
+    : QGraphicsRectItem(parent)
+    , mDelegate(pDelegated)
+    , mDisplayCurrentTime(false)
+    , mCurrentTimeInMs(0)
+    , mTotalTimeInMs(0)
+    , mStartWidth(200)
+    , mSeecAreaBorderHeight(0)
+{
+    setAcceptedMouseButtons(Qt::LeftButton);
+    setBrush(QBrush(Qt::white));
+    setPen(Qt::NoPen);
+    setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+
+    lcdTimer = new MediaTimer(this);
+
+    update();
+}
+
+
+void DelegateMediaControl::paint(QPainter *painter,
+        const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(option);
+    Q_UNUSED(widget);
+    
+    QPainterPath path;
+
+    mLCDTimerArea.setHeight(rect().height());
+    mLCDTimerArea.setWidth(rect().height());
+
+    mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2);
+    mSeecArea.setHeight(rect().height()-2*mSeecAreaBorderHeight);
+    mSeecArea.setY(mSeecAreaBorderHeight);
+
+    path.addRoundedRect(mSeecArea, mSeecArea.height()/2, mSeecArea.height()/2);
+    painter->fillPath(path, brush());
+
+    qreal frameWidth = mSeecArea.height() / 2;
+    int position = frameWidth;
+
+    if (mTotalTimeInMs > 0)
+    {
+        position = frameWidth + ((mSeecArea.width() - (2 * frameWidth)) / mTotalTimeInMs) * mCurrentTimeInMs;
+    }
+
+    int clearance = 2;
+    int radius = frameWidth-clearance;
+    QRectF r(position - radius, clearance+mSeecAreaBorderHeight, radius * 2, radius * 2);
+
+    painter->setBrush(UBSettings::documentViewLightColor);
+    painter->drawEllipse(r);
+}
+
+
+QPainterPath DelegateMediaControl::shape() const
+{
+    QPainterPath path;
+    path.addRoundedRect(rect(), rect().height()/ 2, rect().height()/2);
+    return path;
+}
+
+void DelegateMediaControl::positionHandles()
+{
+    mLCDTimerArea.setWidth(parentItem()->boundingRect().height());
+    mLCDTimerArea.setHeight(parentItem()->boundingRect().height());
+    lcdTimer->setRect(mLCDTimerArea);
+    lcdTimer->setPos(mSeecArea.width()-mLCDTimerArea.width(),0);
+
+    mSeecAreaBorderHeight = rect().height()/20;
+    mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2);
+    mSeecArea.setHeight(rect().height()-2*mSeecAreaBorderHeight);
+    mSeecArea.setY(mSeecAreaBorderHeight);
+
+    QRectF selfRect = rect();
+    selfRect.setHeight(parentItem()->boundingRect().height());
+    setRect(selfRect);
+
+    lcdTimer->setPos(rect().width() - mLCDTimerArea.width(), 0); 
+}
+
+void DelegateMediaControl::update()
+{
+    QTime t;
+    t = t.addMSecs(mCurrentTimeInMs < 0 ? 0 : mCurrentTimeInMs);
+    lcdTimer->display(t.toString("m:ss"));
+
+    QGraphicsRectItem::update();
+}
+
+void DelegateMediaControl::updateTicker(qint64 time )
+{
+    mCurrentTimeInMs = time;
+    update();
+}
+
+
+void DelegateMediaControl::totalTimeChanged(qint64 newTotalTime)
+{
+    mTotalTimeInMs = newTotalTime;
+    update();
+}
+
+
+void DelegateMediaControl::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+   qreal frameWidth =  mSeecArea.height()/2;
+    if (boundingRect().contains(event->pos() - QPointF(frameWidth,0)) 
+        && boundingRect().contains(event->pos() + QPointF(frameWidth,0)))
+    {  
+        mDisplayCurrentTime = true;
+        seekToMousePos(event->pos());
+        this->update();
+        event->accept();
+        emit used();
+    }
+}
+
+void DelegateMediaControl::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    qreal frameWidth = mSeecArea.height() / 2;
+    if (boundingRect().contains(event->pos() - QPointF(frameWidth,0)) 
+        && boundingRect().contains(event->pos() + QPointF(frameWidth,0)))
+    {   
+        seekToMousePos(event->pos());
+        this->update();
+        event->accept();
+        emit used();
+    }
+}
+
+void DelegateMediaControl::seekToMousePos(QPointF mousePos)
+{
+    qreal minX, length;
+    qreal frameWidth = rect().height() / 2;
+
+    minX = frameWidth;
+    length = mSeecArea.width() - lcdTimer->rect().width();
+
+    qreal mouseX = mousePos.x();
+    if (mouseX >= (mSeecArea.width() - mSeecArea.height()/2))
+        mouseX = mSeecArea.width() - mSeecArea.height()/2;
+
+    if (mTotalTimeInMs > 0 && length > 0 && mDelegate
+        && mDelegate->mediaObject() && mDelegate->mediaObject()->isSeekable())
+    {
+        qint64 tickPos = (mTotalTimeInMs/length)* (mouseX - minX);
+        mDelegate->mediaObject()->seek(tickPos);
+
+        //OSX is a bit lazy
+        updateTicker(tickPos);
+    }
+    emit used();
+}
+
+void DelegateMediaControl::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    mDisplayCurrentTime = false;
+    this->update();
+    event->accept();
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h
index 2aeedfe..16542a3 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemDelegate.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This prograscenem is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSITEMDELEGATE_H_
 #define UBGRAPHICSITEMDELEGATE_H_
 
@@ -29,6 +36,7 @@ class UBGraphicsScene;
 class UBGraphicsProxyWidget;
 class UBGraphicsDelegateFrame;
 class UBGraphicsWidgetItem;
+class UBGraphicsMediaItem;
 
 class DelegateButton: public QGraphicsSvgItem
 {
@@ -39,6 +47,9 @@ class DelegateButton: public QGraphicsSvgItem
 
         virtual ~DelegateButton();
 
+        enum { Type = UBGraphicsItemType::DelegateButtonType };
+        virtual int type() const { return Type; }
+
         void setTransparentToMouseEvent(bool tr)
         {
             mIsTransparentToMouseEvent = tr;
@@ -46,6 +57,9 @@ class DelegateButton: public QGraphicsSvgItem
 
         void setFileName(const QString & fileName);
 
+        void setShowProgressIndicator(bool pShow) {mShowProgressIndicator = pShow;}
+        bool testShowProgresIndicator() const {return mShowProgressIndicator;}
+
         void setSection(Qt::WindowFrameSection section) {mButtonAlignmentSection =  section;}
         Qt::WindowFrameSection getSection() const {return mButtonAlignmentSection;}
 
@@ -53,15 +67,24 @@ class DelegateButton: public QGraphicsSvgItem
 
         virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
         virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
+        void timerEvent(QTimerEvent *event);
 
         void modified();
 
+private slots:
+        void startShowProgress();
+
     private:
 
         QGraphicsItem* mDelegated;
 
         QTime mPressedTime;
         bool mIsTransparentToMouseEvent;
+        bool mIsPressed;
+        int mProgressTimerId;
+        int mPressProgres;
+        bool mShowProgressIndicator;
         Qt::WindowFrameSection mButtonAlignmentSection;
 
     signals:
@@ -70,29 +93,119 @@ class DelegateButton: public QGraphicsSvgItem
 
 };
 
+/*
+    Code of this class is copied from QT QLCDNumber class sources
+    See src\gui\widgets\qlcdnumber.cpp for original code
+*/
+class MediaTimer: public QGraphicsRectItem
+{
+public:
+    MediaTimer(QGraphicsItem * parent = 0);
+    ~MediaTimer();
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+                QWidget *widget);
+
+    void display(const QString &str);
+
+private:
+
+    static const char* getSegments(char);
+    void drawString(const QString& s, QPainter &, QBitArray * = 0, bool = true);
+    void drawDigit(const QPoint &, QPainter &, int, char, char = ' ');
+    void drawSegment(const QPoint &, char, QPainter &, int, bool = false);
+    void addPoint(QPolygon&, const QPoint&);
+    void internalSetString(const QString& s);
+    void setNumDigits(int nDigits);
+
+    static char segments [][8];
+
+    int ndigits;
+    QString digitStr;
+    QBitArray points;
+    double val;
+
+    uint shadow : 1;
+    uint smallPoint : 1;
+};
+
+class DelegateMediaControl: public QObject, public QGraphicsRectItem
+{
+    Q_OBJECT
+
+    public:
+
+        DelegateMediaControl(UBGraphicsMediaItem* pDelegated, QGraphicsItem * parent = 0);
+
+        virtual ~DelegateMediaControl()
+        {
+            // NOOP
+        }
+
+        void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+                QWidget *widget);
+
+        QPainterPath shape() const;
+
+        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+        virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+        virtual void update();
+
+        void positionHandles();
+        void updateTicker(qint64 time);
+        void totalTimeChanged(qint64 newTotalTime);
+        QSizeF lcdAreaSize(){return mLCDTimerArea.size();}
+
+    signals:
+        void used();
+
+    protected:
+        void seekToMousePos(QPointF mousePos);
+
+        UBGraphicsMediaItem* mDelegate;
+        bool mDisplayCurrentTime;
+
+        qint64 mCurrentTimeInMs;
+        qint64 mTotalTimeInMs;
+
+    private:
+        int mStartWidth;
+        int mSeecAreaBorderHeight;
+
+        QRectF mSeecArea;
+        QRectF mLCDTimerArea;
+
+        MediaTimer *lcdTimer;
+};
+
 class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject
 {
     public:
         UBGraphicsToolBarItem(QGraphicsItem * parent = 0);
-        virtual ~UBGraphicsToolBarItem() {};
+        virtual ~UBGraphicsToolBarItem() {;}
 
         bool isVisibleOnBoard() const { return mVisible; }
         void setVisibleOnBoard(bool visible) { mVisible = visible; }
         bool isShifting() const { return mShifting; }
         void setShifting(bool shifting) { mShifting = shifting; } 
-        int offsetOnToolBar() const { return mOffsetOnToolBar; }
-        void setOffsetOnToolBar(int pOffset) { mOffsetOnToolBar = pOffset; }
         QList<QGraphicsItem*> itemsOnToolBar() const { return mItemsOnToolBar; }
         void setItemsOnToolBar(QList<QGraphicsItem*> itemsOnToolBar) { mItemsOnToolBar = itemsOnToolBar;}
         int minWidth() { return mMinWidth; }
+        void positionHandles();
+        void update();
+        int getElementsPadding(){return mElementsPadding;}
+
+    private:
         void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                 QWidget *widget);
 
     private:
         bool mShifting;
         bool mVisible;
-        int mOffsetOnToolBar;
         int mMinWidth;
+        int mInitialHeight;
+        int mElementsPadding;
         QList<QGraphicsItem*> mItemsOnToolBar;
 };
 
@@ -101,7 +214,7 @@ class UBGraphicsItemDelegate : public QObject
     Q_OBJECT
 
     public:
-        UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObject * parent = 0,  bool respectRatio = true, bool canRotate = false);
+        UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObject * parent = 0,  bool respectRatio = true, bool canRotate = false, bool useToolBar = true, bool showGoContentButton = false);
 
         virtual ~UBGraphicsItemDelegate();
 
@@ -133,8 +246,8 @@ class UBGraphicsItemDelegate : public QObject
 
         UBGraphicsDelegateFrame* frame() { return mFrame; }
 
-        bool canRotate() { return mCanRotate; }
-        bool isLocked();
+        bool canRotate() const { return mCanRotate; }
+        bool isLocked() const;
         bool canDuplicate() { return mCanDuplicate; }
 
         QMimeData* mimeData(){ return mMimeData; }
@@ -142,6 +255,7 @@ class UBGraphicsItemDelegate : public QObject
         void setDragPixmap(const QPixmap &pix) {mDragPixmap = pix;}
 
         void setFlippable(bool flippable);
+        void setRotatable(bool pCanRotate);
         bool isFlippable();
 
         void setButtonsVisible(bool visible);
@@ -149,6 +263,7 @@ class UBGraphicsItemDelegate : public QObject
         UBGraphicsToolBarItem* getToolBarItem() const { return mToolBarItem; }
 
         qreal antiScaleRatio() const { return mAntiScaleRatio; }
+        virtual void update() {positionHandles();}
 
     signals:
         void showOnDisplayChanged(bool shown);
@@ -167,8 +282,10 @@ class UBGraphicsItemDelegate : public QObject
         void increaseZlevelTop();
         void increaseZlevelBottom();
 
+        void onZoomChanged();
+
     protected:
-        virtual void buildButtons() {;}
+        virtual void buildButtons();
         virtual void decorateMenu(QMenu *menu);
         virtual void updateMenuActionState();
 
@@ -194,18 +311,16 @@ class UBGraphicsItemDelegate : public QObject
         qreal mAntiScaleRatio;
 
         QList<DelegateButton*> mButtons;
-
+        QList<DelegateButton*> mToolBarButtons;
         UBGraphicsToolBarItem* mToolBarItem;
 
 protected slots:
-        virtual void gotoContentSource(bool checked);
+        virtual void gotoContentSource();
 
 private:
         void updateFrame();
         void updateButtons(bool showUpdated = false);
-        void updateToolBar();
-
-
+        inline void showHideRecurs(const QVariant &pShow, QGraphicsItem *pItem);
 
         QPointF mOffset;
         QTransform mPreviousTransform;
@@ -221,6 +336,9 @@ private:
 
         /** A boolean saying that this object can be flippable (mirror effect) */
         bool mFlippable;
+        bool mToolBarUsed;
+
+        bool mShowGoContentButton;
 };
 
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp
new file mode 100644
index 0000000..da37dd2
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.cpp
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBGraphicsItemGroupUndoCommand.h"
+
+#include "UBGraphicsGroupContainerItem.h"
+#include "UBGraphicsScene.h"
+#include "core/memcheck.h"
+
+
+UBGraphicsItemGroupUndoCommand::UBGraphicsItemGroupUndoCommand(UBGraphicsScene *pScene, UBGraphicsGroupContainerItem *pGroupCreated) :
+    mScene (pScene), mGroup(pGroupCreated), mFirstRedo(true)
+
+{
+    if (pGroupCreated->childItems().count()) {
+        foreach (QGraphicsItem *item, pGroupCreated->childItems()) {
+            mItems << item;
+        }
+    }
+}
+
+UBGraphicsItemGroupUndoCommand::~UBGraphicsItemGroupUndoCommand()
+{
+}
+
+void UBGraphicsItemGroupUndoCommand::undo()
+{
+    mGroup->destroy(false);
+    foreach(QGraphicsItem *item, mItems) {
+        item->setSelected(true);
+    }
+}
+
+void UBGraphicsItemGroupUndoCommand::redo()
+{
+    if (mFirstRedo) {
+        //Work around. TODO determine why does Qt call the redo function on pushing to undo
+        mFirstRedo = false;
+        return;
+    }
+
+    foreach (QGraphicsItem *item, mItems) {
+        if (item->type() == UBGraphicsGroupContainerItem::Type) {
+            QList<QGraphicsItem*> childItems = item->childItems();
+            UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
+            if (currentGroup) {
+                currentGroup->destroy(false);
+            }
+            foreach (QGraphicsItem *chItem, childItems) {
+                mGroup->addToGroup(chItem);
+            }
+        } else {
+            mGroup->addToGroup(item);
+        }
+    }
+
+    mScene->addItem(mGroup);
+    mGroup->setVisible(true);
+    mGroup->setFocus();
+    mGroup->setSelected(true);
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h
new file mode 100644
index 0000000..cc68a60
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsItemGroupUndoCommand.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBGRAPHICSITEMGROUPUNDOCOMMAND_H
+#define UBGRAPHICSITEMGROUPUNDOCOMMAND_H
+
+#include <QList>
+#include "UBAbstractUndoCommand.h"
+
+class UBGraphicsScene;
+class UBGraphicsGroupContainerItem;
+
+class UBGraphicsItemGroupUndoCommand : public UBAbstractUndoCommand
+{
+public:
+    UBGraphicsItemGroupUndoCommand(UBGraphicsScene *pScene, UBGraphicsGroupContainerItem *pGroupCreated);
+    virtual ~UBGraphicsItemGroupUndoCommand();
+
+    virtual UndoType getType() { return undotype_GRAPHICSGROUPITEM; }
+
+protected:
+    virtual void undo();
+    virtual void redo();
+
+private:
+    UBGraphicsScene *mScene;
+    UBGraphicsGroupContainerItem *mGroup;
+    QList<QGraphicsItem*> mItems;
+
+    bool mFirstRedo;
+};
+
+#endif // UBGRAPHICSITEMGROUPUNDOCOMMAND_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp
index f21355b..770315b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsItemTransformUndoCommand.h"
 #include "UBResizableGraphicsItem.h"
 #include "domain/UBItem.h"
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h
index 2f4538d..8fc57a4 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemTransformUndoCommand.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSITEMTRANSFORMUNDOCOMMAND_H_
 #define UBGRAPHICSITEMTRANSFORMUNDOCOMMAND_H_
 
@@ -32,7 +39,7 @@ class UBGraphicsItemTransformUndoCommand : public UBAbstractUndoCommand
                                                 const QSizeF& prevSize = QSizeF());
         virtual ~UBGraphicsItemTransformUndoCommand();
 
-        virtual UndoType getType() { return undotype_GRAPHICITEMTRANSFORM; };
+        virtual UndoType getType() { return undotype_GRAPHICITEMTRANSFORM; }
 
     protected:
         virtual void undo();
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp
index bc8c4c8..ad306d5 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.cpp
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "UBGraphicsItemUndoCommand.h"
 
@@ -24,12 +31,15 @@
 #include "board/UBBoardController.h"
 
 #include "core/memcheck.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBGraphicsPolygonItem.h"
 
 UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet<QGraphicsItem*>& pRemovedItems,
-        const QSet<QGraphicsItem*>& pAddedItems)
+                                                     const QSet<QGraphicsItem*>& pAddedItems, const GroupDataTable &groupsMap)
     : mScene(pScene)
-        , mRemovedItems(pRemovedItems - pAddedItems)
-        , mAddedItems(pAddedItems - pRemovedItems)
+    , mRemovedItems(pRemovedItems - pAddedItems)
+    , mAddedItems(pAddedItems - pRemovedItems)
+    , mExcludedFromGroup(groupsMap)
 {
     mFirstRedo = true;
 
@@ -54,13 +64,11 @@ UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QG
     if (pRemovedItem)
     {
         mRemovedItems.insert(pRemovedItem);
-        UBApplication::boardController->freezeW3CWidget(pRemovedItem, true);
     }
 
     if (pAddedItem)
     {
         mAddedItems.insert(pAddedItem);
-        UBApplication::boardController->freezeW3CWidget(pAddedItem, false);
     }
 
     mFirstRedo = true;
@@ -82,17 +90,66 @@ void UBGraphicsItemUndoCommand::undo()
     while (itAdded.hasNext())
     {
         QGraphicsItem* item = itAdded.next();
+
+        UBApplication::boardController->freezeW3CWidget(item, true);
         item->setSelected(false);
         mScene->removeItem(item);
-        UBApplication::boardController->freezeW3CWidget(item, true);
     }
 
     QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
     while (itRemoved.hasNext())
     {
         QGraphicsItem* item = itRemoved.next();
-        mScene->addItem(item);
-        UBApplication::boardController->freezeW3CWidget(item, false);
+        if (item)
+        {
+            if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType))
+                mScene->setAsBackgroundObject(item);
+            else
+                mScene->addItem(item);
+
+            if (UBGraphicsPolygonItem::Type == item->type())
+            {
+                UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+                if (polygonItem)
+                {
+                    mScene->removeItem(polygonItem);
+                    mScene->removeItemFromDeletion(polygonItem);
+                    polygonItem->strokesGroup()->addToGroup(polygonItem);
+                }
+            }
+
+            UBApplication::boardController->freezeW3CWidget(item, false);
+        }
+    }
+
+    QMapIterator<UBGraphicsGroupContainerItem*, QUuid> curMapElement(mExcludedFromGroup);
+    UBGraphicsGroupContainerItem *nextGroup = NULL;
+    UBGraphicsGroupContainerItem *previousGroupItem = NULL;
+    bool groupChanged = false;
+
+    while (curMapElement.hasNext()) {
+        curMapElement.next();
+
+        groupChanged = previousGroupItem != curMapElement.key();
+        //trying to find the group on the scene;
+        if (!nextGroup || groupChanged) {
+            UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key();
+            if (groupCandidate) {
+                nextGroup = groupCandidate;
+                if(!mScene->items().contains(nextGroup)) {
+                    mScene->addItem(nextGroup);
+                }
+                nextGroup->setVisible(true);
+            }
+        }
+
+        QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value());
+        if (groupedItem) {
+            nextGroup->addToGroup(groupedItem);
+        }
+
+        previousGroupItem = curMapElement.key();
+        UBGraphicsItem::Delegate(nextGroup)->update();
     }
 
     // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
@@ -110,6 +167,35 @@ void UBGraphicsItemUndoCommand::redo()
             return;
         }
 
+        QMapIterator<UBGraphicsGroupContainerItem*, QUuid> curMapElement(mExcludedFromGroup);
+        UBGraphicsGroupContainerItem *nextGroup = NULL;
+        UBGraphicsGroupContainerItem *previousGroupItem = NULL;
+        bool groupChanged = false;
+
+        while (curMapElement.hasNext()) {
+            curMapElement.next();
+
+            groupChanged = previousGroupItem != curMapElement.key();
+            //trying to find the group on the scene;
+            if (!nextGroup || groupChanged) {
+                UBGraphicsGroupContainerItem *groupCandidate = curMapElement.key();
+                if (groupCandidate) {
+                    nextGroup = groupCandidate;
+                }
+            }
+            QGraphicsItem *groupedItem = mScene->itemForUuid(curMapElement.value());
+            if (groupedItem) {
+                if (nextGroup->childItems().count() == 1) {
+                    nextGroup->destroy(false);
+                    break;
+                }
+                nextGroup->removeFromGroup(groupedItem);
+            }
+
+            previousGroupItem = curMapElement.key();
+            UBGraphicsItem::Delegate(nextGroup)->update();
+        }
+
         QSetIterator<QGraphicsItem*> itRemoved(mRemovedItems);
         while (itRemoved.hasNext())
         {
@@ -123,8 +209,23 @@ void UBGraphicsItemUndoCommand::redo()
         while (itAdded.hasNext())
         {
             QGraphicsItem* item = itAdded.next();
-            mScene->addItem(item);
-            UBApplication::boardController->freezeW3CWidget(item, false);
+            if (item)
+            {
+                UBApplication::boardController->freezeW3CWidget(item, false);
+
+                if (UBItemLayerType::FixedBackground == item->data(UBGraphicsItemData::ItemLayerType))
+                    mScene->setAsBackgroundObject(item);
+                else
+                    mScene->addItem(item);
+
+                UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
+                if (polygonItem)
+                {   
+                    mScene->removeItem(polygonItem);
+                    mScene->removeItemFromDeletion(polygonItem);
+                    polygonItem->strokesGroup()->addToGroup(polygonItem);
+                }
+            }
         }
 
         // force refresh, QT is a bit lazy and take a lot of time (nb item ^2) to trigger repaint
diff --git a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h
index d323089..84c807c 100644
--- a/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsItemUndoCommand.h
@@ -1,23 +1,31 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSITEMUNDOCOMMAND_H_
 #define UBGRAPHICSITEMUNDOCOMMAND_H_
 
 #include <QtGui>
 #include "UBAbstractUndoCommand.h"
+#include "UBGraphicsGroupContainerItem.h"
 
 
 class UBGraphicsScene;
@@ -26,18 +34,20 @@ class UBGraphicsScene;
 class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand
 {
     public:
+        typedef QMultiMap<UBGraphicsGroupContainerItem*, QUuid> GroupDataTable;
+
         UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet<QGraphicsItem*>& pRemovedItems,
-                const QSet<QGraphicsItem*>& pAddedItems);
+                                  const QSet<QGraphicsItem*>& pAddedItems, const GroupDataTable &groupsMap = GroupDataTable());
 
         UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QGraphicsItem* pRemovedItem,
                         QGraphicsItem* pAddedItem);
 
         virtual ~UBGraphicsItemUndoCommand();
 
-        QSet<QGraphicsItem*> GetAddedList() { return mAddedItems; };
-        QSet<QGraphicsItem*> GetRemovedList() { return mRemovedItems; };
+        QSet<QGraphicsItem*> GetAddedList() { return mAddedItems; }
+        QSet<QGraphicsItem*> GetRemovedList() { return mRemovedItems; }
 
-        virtual UndoType getType() { return undotype_GRAPHICITEM; };
+        virtual UndoType getType() { return undotype_GRAPHICITEM; }
 
     protected:
         virtual void undo();
@@ -47,6 +57,7 @@ class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand
         UBGraphicsScene* mScene;
         QSet<QGraphicsItem*> mRemovedItems;
         QSet<QGraphicsItem*> mAddedItems;
+        GroupDataTable mExcludedFromGroup;
 
         bool mFirstRedo;
 };
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp b/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp
index dd19e27..53759a9 100644
--- a/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItem.cpp
@@ -1,42 +1,154 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
+#include "UBGraphicsGroupContainerItem.h"
 #include "UBGraphicsMediaItem.h"
+#include "UBGraphicsMediaItemDelegate.h"
 #include "UBGraphicsScene.h"
 #include "UBGraphicsDelegateFrame.h"
-
 #include "document/UBDocumentProxy.h"
-
 #include "core/UBApplication.h"
-
 #include "board/UBBoardController.h"
+#include "core/memcheck.h"
 
-#include "frameworks/UBFileSystemUtils.h"
 
-#include "core/memcheck.h"
+UBAudioPresentationWidget::UBAudioPresentationWidget(QWidget *parent)
+    : QWidget(parent)
+    , mBorderSize(10)
+    , mTitleSize(10)
+{
+
+}
+
+void UBAudioPresentationWidget::paintEvent(QPaintEvent *event)
+{
+    QPainter painter(this);
+    painter.fillRect(rect(), QBrush(Qt::white));
+    
+    QPen borderPen;
+    borderPen.setWidth(2);
+    borderPen.setColor(QColor(Qt::black));
+
+    painter.setPen(borderPen);
+    painter.drawRect(0,0, width(), height());
+
+    if (QString() != mTitle)
+    {
+        painter.setPen(QPen(Qt::black));
+        QRect titleRect = rect();
+        titleRect.setX(mBorderSize);
+        titleRect.setY(2);
+        titleRect.setHeight(15);
+        painter.drawText(titleRect, mTitle);
+    }
+
+    QWidget::paintEvent(event);
+}
 
 bool UBGraphicsMediaItem::sIsMutedByDefault = false;
 
 UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsItem *parent)
         : UBGraphicsProxyWidget(parent)
+        , mVideoWidget(NULL)
+        , mAudioWidget(NULL)
         , mMuted(sIsMutedByDefault)
         , mMutedByUserAction(sIsMutedByDefault)
         , mMediaFileUrl(pMediaFileUrl)
+        , mLinkedImage(NULL)
         , mInitialPos(0)
 {
-    //NOOP
+    update();
+
+    mMediaObject = new Phonon::MediaObject(this);
+
+    QString mediaPath = pMediaFileUrl.toString();
+    if ("" == mediaPath)
+        mediaPath = pMediaFileUrl.toLocalFile();
+
+    if (mediaPath.toLower().contains("videos")) 
+    {
+        mMediaType = mediaType_Video;
+
+        mAudioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
+        mMediaObject->setTickInterval(50);
+        mVideoWidget = new Phonon::VideoWidget(); // owned and destructed by the scene ...
+        Phonon::createPath(mMediaObject, mVideoWidget);
+
+        if(mVideoWidget->sizeHint() == QSize(1,1)){
+            mVideoWidget->resize(320,240);
+        }
+
+        mVideoWidget->setMinimumSize(140,26);
+
+        haveLinkedImage = true;
+    }
+    else    
+    if (mediaPath.toLower().contains("audios"))
+    {
+        mMediaType = mediaType_Audio;
+        mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
+
+        mMediaObject->setTickInterval(1000);
+        mAudioWidget = new UBAudioPresentationWidget();
+        int borderSize = 0;
+        UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBAudioPresentationWidget*>(mAudioWidget);
+        if (pAudioWidget)
+        {
+            borderSize = pAudioWidget->borderSize();
+        }
+
+        mAudioWidget->resize(320,26+3*borderSize);
+        mAudioWidget->setMinimumSize(150,26+borderSize);
+
+        haveLinkedImage = false;
+    }
+
+    Phonon::createPath(mMediaObject, mAudioOutput);
+    
+    mSource = Phonon::MediaSource(pMediaFileUrl);
+    mMediaObject->setCurrentSource(mSource);
+
+    // we should create delegate after media objects because delegate uses his properties at creation.
+    setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaObject));
+    
+    // delegate should be created earler because we setWidget calls resize event for graphics proxy widgt.
+    // resize uses delegate.
+    if (mediaType_Video == mMediaType)
+        setWidget(mVideoWidget);
+    else
+        setWidget(mAudioWidget);
+
+    // media widget should be created and placed on proxy widget here.
+    Delegate()->init();
+
+    if (mediaType_Audio == mMediaType)
+        Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::ResizingHorizontally);
+    else
+        Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
+
+    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
+
+    connect(Delegate(), SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool)));
+    connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool)));
 }
 
 
@@ -84,12 +196,24 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria
     return UBGraphicsProxyWidget::itemChange(change, value);
 }
 
+
+void UBGraphicsMediaItem::setSourceUrl(const QUrl &pSourceUrl)
+{
+    UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBAudioPresentationWidget*>(mAudioWidget);
+    if (pAudioWidget)
+    {
+        pAudioWidget->setTitle(UBFileSystemUtils::lastPathComponent(pSourceUrl.toString()));
+    }
+
+    UBItem::setSourceUrl(pSourceUrl);
+}
+
 void UBGraphicsMediaItem::clearSource()
 {
     QString path = mediaFileUrl().toLocalFile();
     //if path is absolute clean duplicated path string
-    if (!path.contains(UBApplication::boardController->activeDocument()->persistencePath()))
-        path = UBApplication::boardController->activeDocument()->persistencePath() + "/" + path;
+    if (!path.contains(UBApplication::boardController->selectedDocument()->persistencePath()))
+        path = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + path;
 
     if (!UBFileSystemUtils::deleteFile(path))
         qDebug() << "cannot delete file: " << path;
@@ -98,6 +222,12 @@ void UBGraphicsMediaItem::clearSource()
 void UBGraphicsMediaItem::toggleMute()
 {
     mMuted = !mMuted;
+    setMute(mMuted);
+}
+
+void UBGraphicsMediaItem::setMute(bool bMute)
+{
+    mMuted = bMute;
     mAudioOutput->setMuted(mMuted);
     mMutedByUserAction = mMuted;
     sIsMutedByDefault = mMuted;
@@ -106,8 +236,14 @@ void UBGraphicsMediaItem::toggleMute()
 
 void UBGraphicsMediaItem::hasMediaChanged(bool hasMedia)
 {
+    if(hasMedia && mMediaObject->isSeekable())
+    {
     Q_UNUSED(hasMedia);
     mMediaObject->seek(mInitialPos);
+        UBGraphicsMediaItemDelegate *med = dynamic_cast<UBGraphicsMediaItemDelegate *>(Delegate());
+        if (med)
+            med->updateTicker(initialPos());
+    }
 }
 
 
@@ -139,3 +275,100 @@ void UBGraphicsMediaItem::showOnDisplayChanged(bool shown)
         mAudioOutput->setMuted(mMuted);
     }
 }
+
+UBItem* UBGraphicsMediaItem::deepCopy() const
+{
+    QUrl url = this->mediaFileUrl();
+    UBGraphicsMediaItem *copy = new UBGraphicsMediaItem(url, parentItem());
+
+    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
+
+    copyItemParameters(copy);
+
+    return copy;
+}
+
+void UBGraphicsMediaItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsMediaItem *cp = dynamic_cast<UBGraphicsMediaItem*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+        cp->setSourceUrl(this->sourceUrl());
+        cp->resize(this->size());
+
+        connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), cp, SLOT(activeSceneChanged()));
+        // TODO UB 4.7 complete all members
+    }
+}
+
+void UBGraphicsMediaItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (Delegate())
+    {
+        Delegate()->mousePressEvent(event);
+        if (parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type())
+        {
+            UBGraphicsGroupContainerItem *group = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(parentItem());
+            if (group)
+            {
+                QGraphicsItem *curItem = group->getCurrentItem();
+                if (curItem && this != curItem)
+                {   
+                    group->deselectCurrentItem();    
+                }   
+                group->setCurrentItem(this);
+                this->setSelected(true);
+                Delegate()->positionHandles();
+            }       
+
+        }
+    }
+
+    if (parentItem() && parentItem()->type() == UBGraphicsGroupContainerItem::Type)
+    {
+        mShouldMove = false;
+        if (!Delegate()->mousePressEvent(event))
+        {
+            event->accept();
+        }
+    }
+    else 
+    {
+        mShouldMove = (event->buttons() & Qt::LeftButton);
+        mMousePressPos = event->scenePos();
+        mMouseMovePos = mMousePressPos;
+
+        event->accept();
+        setSelected(true);
+    }
+
+}
+
+void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    if(mShouldMove && (event->buttons() & Qt::LeftButton))
+    {
+        QPointF offset = event->scenePos() - mMousePressPos;
+
+        if (offset.toPoint().manhattanLength() > QApplication::startDragDistance())
+        {
+            QPointF mouseMovePos = mapFromScene(mMouseMovePos);
+            QPointF eventPos = mapFromScene( event->scenePos());
+
+            QPointF translation = eventPos - mouseMovePos;
+            translate(translation.x(), translation.y());
+        }
+
+        mMouseMovePos = event->scenePos();
+    }
+
+    event->accept();
+
+}
+
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItem.h b/Sankore-3.1/src/domain/UBGraphicsMediaItem.h
index f31841b..11d4f0d 100644
--- a/Sankore-3.1/src/domain/UBGraphicsMediaItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItem.h
@@ -1,38 +1,72 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBGRAPHICSMEDIAITEM_H
 #define UBGRAPHICSMEDIAITEM_H
 
 #include "UBGraphicsProxyWidget.h"
 #include <phonon/AudioOutput>
 #include <phonon/MediaObject>
+#include <phonon/VideoWidget>
 #include "core/UBApplication.h"
 #include "board/UBBoardController.h"
+#include "frameworks/UBFileSystemUtils.h"
+
+class UBAudioPresentationWidget : public QWidget
+{
+public:
+    UBAudioPresentationWidget(QWidget *parent = NULL);
+
+    int borderSize() {return mBorderSize;}
+    void setTitle(QString title = QString()){mTitle = title;}
+    QString getTitle(){return mTitle;}
 
+private:
+    virtual void paintEvent(QPaintEvent *event);
+
+    int mBorderSize;
+    int mTitleSize;
+    QString mTitle;
+};
 
 class UBGraphicsMediaItem : public UBGraphicsProxyWidget
 {
     Q_OBJECT
 
 public:
+    typedef enum{
+        mediaType_Video,
+        mediaType_Audio
+    } mediaType;
 
     UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsItem *parent = 0);
     ~UBGraphicsMediaItem();
 
-    void hasMediaChanged(bool hasMedia);
-    void showOnDisplayChanged(bool shown);
+    enum { Type = UBGraphicsItemType::MediaItemType };
+
+    virtual int type() const
+    {
+        return Type;
+    }
 
     virtual QUrl mediaFileUrl() const
     {
@@ -56,21 +90,43 @@ public:
         return mMuted;
     }
 
+    Phonon::VideoWidget* videoWidget() const
+    {
+        return mVideoWidget;
+    }
+
+    bool hasLinkedImage(){return haveLinkedImage;}
+
+    mediaType getMediaType() { return mMediaType; }
+
     virtual UBGraphicsScene* scene();
 
+    virtual UBItem* deepCopy() const;
+
+    virtual void copyItemParameters(UBItem *copy) const;
+
+    virtual void setSourceUrl(const QUrl &pSourceUrl);
+
 public slots:
 
     void toggleMute();
+    void setMute(bool bMute);
     void activeSceneChanged();
+    void hasMediaChanged(bool hasMedia);
+    void showOnDisplayChanged(bool shown);
 
 protected:
 
     virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
-
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
     virtual void clearSource();
 
     Phonon::MediaObject *mMediaObject;
+    Phonon::VideoWidget *mVideoWidget;
     Phonon::AudioOutput *mAudioOutput;
+    Phonon::MediaSource mSource;
+    QWidget *mAudioWidget;
 
 private:
 
@@ -81,8 +137,15 @@ private:
     QUrl mMediaFileUrl;
     QString mMediaSource;
 
-    qint64 mInitialPos;
+    mediaType mMediaType;
 
-};
+    bool mShouldMove;
+    QPointF mMousePressPos;
+    QPointF mMouseMovePos;
+
+    bool haveLinkedImage;
+    QGraphicsPixmapItem *mLinkedImage;    
 
+    qint64 mInitialPos;
+};
 #endif // UBGRAPHICSMEDIAITEM_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp
new file mode 100644
index 0000000..67b689a
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.cpp
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include <QtGui>
+#include <QtSvg>
+
+#include "UBGraphicsMediaItem.h"
+#include "UBGraphicsMediaItemDelegate.h"
+#include "UBGraphicsDelegateFrame.h"
+
+#include "UBGraphicsScene.h"
+
+#include "core/UBSettings.h"
+#include "core/UBApplication.h"
+#include "core/UBApplicationController.h"
+#include "core/UBDisplayManager.h"
+
+#include "domain/UBGraphicsMediaItem.h"
+
+#include "core/memcheck.h"
+
+UBGraphicsMediaItemDelegate::UBGraphicsMediaItemDelegate(UBGraphicsMediaItem* pDelegated, Phonon::MediaObject* pMedia, QObject * parent)
+    : UBGraphicsItemDelegate(pDelegated, parent, true, false, true, true)
+    , mMedia(pMedia)
+    , mToolBarShowTimer(NULL)
+    , m_iToolBarShowingInterval(5000)
+{
+    QPalette palette;
+    palette.setBrush ( QPalette::Light, Qt::darkGray );
+
+    mMedia->setTickInterval(50);
+    connect(mMedia, SIGNAL(stateChanged (Phonon::State, Phonon::State)), this, SLOT(mediaStateChanged (Phonon::State, Phonon::State)));
+    connect(mMedia, SIGNAL(finished()), this, SLOT(updatePlayPauseState()));
+    connect(mMedia, SIGNAL(tick(qint64)), this, SLOT(updateTicker(qint64)));
+    connect(mMedia, SIGNAL(totalTimeChanged(qint64)), this, SLOT(totalTimeChanged(qint64)));
+
+    if (delegated()->hasLinkedImage())
+    {
+        mToolBarShowTimer = new QTimer();
+        connect(mToolBarShowTimer, SIGNAL(timeout()), this, SLOT(hideToolBar()));
+        mToolBarShowTimer->setInterval(m_iToolBarShowingInterval);
+    }
+    if (delegated()->isMuted())
+    {
+        delegated()->setMute(true);
+    }
+
+    //Wrapper function. Use it to set correct data() to QGraphicsItem as well
+    setFlippable(false);
+    setRotatable(false);
+}
+
+bool UBGraphicsMediaItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    Q_UNUSED(event);
+    mToolBarItem->show();
+
+    if (mToolBarShowTimer)
+        mToolBarShowTimer->start();
+
+    return UBGraphicsItemDelegate::mousePressEvent(event);
+}
+
+void UBGraphicsMediaItemDelegate::hideToolBar()
+{
+    mToolBarItem->hide();
+}
+
+void UBGraphicsMediaItemDelegate::buildButtons()
+{
+    mPlayPauseButton = new DelegateButton(":/images/play.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
+    connect(mPlayPauseButton, SIGNAL(clicked(bool)), this, SLOT(togglePlayPause()));
+
+    mStopButton = new DelegateButton(":/images/stop.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
+    connect(mStopButton, SIGNAL(clicked(bool)), mMedia, SLOT(stop()));
+
+    mMediaControl = new DelegateMediaControl(delegated(), mToolBarItem);
+    mMediaControl->setFlag(QGraphicsItem::ItemIsSelectable, true);
+    UBGraphicsItem::assignZValue(mMediaControl, delegated()->zValue());
+    
+    if (delegated()->isMuted())
+        mMuteButton = new DelegateButton(":/images/soundOff.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
+    else
+        mMuteButton = new DelegateButton(":/images/soundOn.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
+
+    connect(mMuteButton, SIGNAL(clicked(bool)), delegated(), SLOT(toggleMute())); 
+    connect(mMuteButton, SIGNAL(clicked(bool)), this, SLOT(toggleMute())); // for changing button image
+
+    mToolBarButtons << mPlayPauseButton << mStopButton << mMuteButton;
+
+    mToolBarItem->setItemsOnToolBar(QList<QGraphicsItem*>() << mPlayPauseButton << mStopButton << mMediaControl << mMuteButton);
+    mToolBarItem->setVisibleOnBoard(true);
+    mToolBarItem->setShifting(false);
+
+    if (mToolBarShowTimer)
+    {
+        connect(mPlayPauseButton, SIGNAL(clicked(bool)), mToolBarShowTimer, SLOT(start()));
+        connect(mStopButton, SIGNAL(clicked(bool)), mToolBarShowTimer, SLOT(start()));
+        connect(mMediaControl, SIGNAL(used()), mToolBarShowTimer, SLOT(start()));
+        connect(mMuteButton, SIGNAL(clicked(bool)), mToolBarShowTimer, SLOT(start()));
+    }
+
+    UBGraphicsMediaItem *audioItem = dynamic_cast<UBGraphicsMediaItem*>(mDelegated);
+    if (audioItem)
+    {
+        if (audioItem->getMediaType() == UBGraphicsMediaItem::mediaType_Audio)
+        {
+            positionHandles();
+        }
+    }
+}
+
+UBGraphicsMediaItemDelegate::~UBGraphicsMediaItemDelegate()
+{
+    if (mToolBarShowTimer)
+        delete mToolBarShowTimer;
+}
+
+void UBGraphicsMediaItemDelegate::positionHandles()
+{
+    UBGraphicsItemDelegate::positionHandles();
+
+    UBGraphicsMediaItem *mediaItem = dynamic_cast<UBGraphicsMediaItem*>(mDelegated);
+    if (mediaItem)
+    {
+        QRectF toolBarRect = mToolBarItem->rect();
+        if (mediaItem->getMediaType() == UBGraphicsMediaItem::mediaType_Video)
+        {      
+            mToolBarItem->setPos(0, delegated()->boundingRect().height()-mToolBarItem->rect().height());
+
+            toolBarRect.setWidth(delegated()->boundingRect().width());
+        }
+        else if (mediaItem->getMediaType() == UBGraphicsMediaItem::mediaType_Audio)
+        {
+            int borderSize = 0;
+            UBAudioPresentationWidget *audioWidget = dynamic_cast<UBAudioPresentationWidget*>(delegated()->widget());
+            if (audioWidget)
+                borderSize = audioWidget->borderSize();
+
+            mToolBarItem->setPos(borderSize,delegated()->boundingRect().height()-(mToolBarItem->rect().height() + borderSize));
+            toolBarRect.setWidth((delegated()->boundingRect().width()-2*borderSize));
+            mToolBarItem->show();
+        }
+
+        mToolBarItem->setRect(toolBarRect);
+    }
+
+    int toolBarMinimumWidth = 0;
+    int mediaItemWidth = mToolBarItem->boundingRect().width();
+    foreach (DelegateButton* button, mToolBarButtons)
+    {
+        mediaItemWidth -= button->boundingRect().width() + mToolBarItem->getElementsPadding();
+        toolBarMinimumWidth += button->boundingRect().width() + mToolBarItem->getElementsPadding();
+    }
+    toolBarMinimumWidth += mToolBarItem->boundingRect().height();
+
+    UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBAudioPresentationWidget*>(delegated()->widget());
+    if (pAudioWidget)
+    {
+       pAudioWidget->setMinimumSize(toolBarMinimumWidth + (int)mMediaControl->lcdAreaSize().width() + (int)mMediaControl->rect().height(),26+pAudioWidget->borderSize());
+    }
+
+    QRectF mediaItemRect = mMediaControl->rect();
+    mediaItemRect.setWidth(mediaItemWidth);
+    mediaItemRect.setHeight(mToolBarItem->boundingRect().height());
+    mMediaControl->setRect(mediaItemRect);
+
+    mToolBarItem->positionHandles();
+    mMediaControl->positionHandles(); 
+
+    if (mediaItem)
+    {
+        if (mediaItem->getMediaType() == UBGraphicsMediaItem::mediaType_Audio)
+        {
+            mToolBarItem->show();
+        }
+    }
+}
+
+void UBGraphicsMediaItemDelegate::remove(bool canUndo)
+{
+    if (delegated() && delegated()->mediaObject())
+        delegated()->mediaObject()->stop();
+
+    UBGraphicsItemDelegate::remove(canUndo);
+}
+
+
+void UBGraphicsMediaItemDelegate::toggleMute()
+{
+    if (delegated()->isMuted())
+        mMuteButton->setFileName(":/images/soundOff.svg");
+    else
+        mMuteButton->setFileName(":/images/soundOn.svg");
+}
+
+
+UBGraphicsMediaItem* UBGraphicsMediaItemDelegate::delegated()
+{
+    return dynamic_cast<UBGraphicsMediaItem*>(mDelegated);
+}
+
+
+void UBGraphicsMediaItemDelegate::togglePlayPause()
+{
+    if (delegated() && delegated()->mediaObject()) {
+
+        Phonon::MediaObject* media = delegated()->mediaObject();
+        if (media->state() == Phonon::StoppedState) {
+            media->play();
+        } else if (media->state() == Phonon::PlayingState) {
+            if (media->remainingTime() <= 0) {
+                media->stop();
+                media->play();
+            } else {
+                media->pause();
+                if(delegated()->scene())
+                        delegated()->scene()->setModified(true);
+            }
+        } else if (media->state() == Phonon::PausedState) {
+            if (media->remainingTime() <= 0) {
+                media->stop();
+            }
+            media->play();
+        } else  if ( media->state() == Phonon::LoadingState ) {
+            delegated()->mediaObject()->setCurrentSource(delegated()->mediaFileUrl());
+            media->play();
+        } else if (media->state() == Phonon::ErrorState){
+            qDebug() << "Error appeared." << media->errorString();
+        }
+    }
+}
+
+void UBGraphicsMediaItemDelegate::mediaStateChanged ( Phonon::State newstate, Phonon::State oldstate )
+{
+    Q_UNUSED(newstate);
+    Q_UNUSED(oldstate);
+    updatePlayPauseState();
+}
+
+
+void UBGraphicsMediaItemDelegate::updatePlayPauseState()
+{
+    Phonon::MediaObject* media = delegated()->mediaObject();
+
+    if (media->state() == Phonon::PlayingState)
+        mPlayPauseButton->setFileName(":/images/pause.svg");
+    else
+        mPlayPauseButton->setFileName(":/images/play.svg");
+}
+
+
+void UBGraphicsMediaItemDelegate::updateTicker(qint64 time)
+{
+    Phonon::MediaObject* media = delegated()->mediaObject();
+    mMediaControl->totalTimeChanged(media->totalTime());
+    mMediaControl->updateTicker(time);
+}
+
+
+void UBGraphicsMediaItemDelegate::totalTimeChanged(qint64 newTotalTime)
+{
+    mMediaControl->totalTimeChanged(newTotalTime);
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h
new file mode 100644
index 0000000..8ce8700
--- /dev/null
+++ b/Sankore-3.1/src/domain/UBGraphicsMediaItemDelegate.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBGRAPHICSMEDIAITEMDELEGATE_H_
+#define UBGRAPHICSMEDIAITEMDELEGATE_H_
+
+#include <QtGui>
+#include <phonon/MediaObject>
+#include <QTimer>
+
+#include "core/UB.h"
+#include "UBGraphicsItemDelegate.h"
+
+class QGraphicsSceneMouseEvent;
+class QGraphicsItem;
+
+class UBGraphicsMediaItemDelegate :  public UBGraphicsItemDelegate
+{
+    Q_OBJECT
+
+    public:
+        UBGraphicsMediaItemDelegate(UBGraphicsMediaItem* pDelegated, Phonon::MediaObject* pMedia, QObject * parent = 0);
+        virtual ~UBGraphicsMediaItemDelegate();
+
+        virtual void positionHandles();
+
+        bool mousePressEvent(QGraphicsSceneMouseEvent *event);
+
+    public slots:
+
+        void toggleMute();
+        void updateTicker(qint64 time);
+
+    protected slots:
+
+        virtual void remove(bool canUndo = true);
+
+        void togglePlayPause();
+
+        void mediaStateChanged ( Phonon::State newstate, Phonon::State oldstate );
+
+        void updatePlayPauseState();
+
+        void totalTimeChanged(qint64 newTotalTime);
+
+        void hideToolBar();
+
+    protected:
+        virtual void buildButtons();
+
+        UBGraphicsMediaItem* delegated();
+
+        DelegateButton* mPlayPauseButton;
+        DelegateButton* mStopButton;
+        DelegateButton* mMuteButton;
+        DelegateMediaControl *mMediaControl;
+
+        Phonon::MediaObject* mMedia;
+
+        QTimer *mToolBarShowTimer;
+        int m_iToolBarShowingInterval;
+};
+
+#endif /* UBGRAPHICSMEDIAITEMDELEGATE_H_ */
\ No newline at end of file
diff --git a/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp b/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp
index aa8c7ea..cca2641 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsPDFItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsPDFItem.h"
 
 #include <QtGui>
@@ -28,28 +35,32 @@ UBGraphicsPDFItem::UBGraphicsPDFItem(PDFRenderer *renderer, int pageNumber, QGra
 {
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); //deprecated
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::BackgroundItem)); //Necessary to set if we want z value to be assigned correctly
-    mDelegate = new UBGraphicsItemDelegate(this,0);
-    mDelegate->init();
+
+    setDelegate(new UBGraphicsItemDelegate(this,0, true, false, false));
+    Delegate()->init();
 }
 
 
 UBGraphicsPDFItem::~UBGraphicsPDFItem()
 {
-    if (mDelegate)
-        delete mDelegate;
 }
 
 
 QVariant UBGraphicsPDFItem::itemChange(GraphicsItemChange change, const QVariant &value)
 {
-    QVariant newValue = mDelegate->itemChange(change, value);
+    QVariant newValue = Delegate()->itemChange(change, value);
     return GraphicsPDFItem::itemChange(change, newValue);
 }
 
+void UBGraphicsPDFItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid));
+}
 
 void UBGraphicsPDFItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mousePressEvent(event))
+    if (Delegate()->mousePressEvent(event))
     {
         // NOOP
     }
@@ -62,7 +73,7 @@ void UBGraphicsPDFItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsPDFItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mouseMoveEvent(event))
+    if (Delegate()->mouseMoveEvent(event))
     {
         // NOOP
     }
@@ -75,7 +86,7 @@ void UBGraphicsPDFItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsPDFItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    mDelegate->mouseReleaseEvent(event);
+    Delegate()->mouseReleaseEvent(event);
     GraphicsPDFItem::mouseReleaseEvent(event);
 }
 
@@ -84,17 +95,26 @@ UBItem* UBGraphicsPDFItem::deepCopy() const
 {
     UBGraphicsPDFItem *copy =  new UBGraphicsPDFItem(mRenderer, mPageNumber, parentItem());
 
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setUuid(this->uuid()); // this is OK for now as long as PDF are imutable
-    copy->setSourceUrl(this->sourceUrl());
+    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
+
+    copyItemParameters(copy);
 
     return copy;
 }
 
+void UBGraphicsPDFItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsPDFItem *cp = dynamic_cast<UBGraphicsPDFItem*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setSourceUrl(this->sourceUrl());
+    }
+}
 
 void UBGraphicsPDFItem::setRenderingQuality(RenderingQuality pRenderingQuality)
 {
@@ -117,13 +137,6 @@ UBGraphicsScene* UBGraphicsPDFItem::scene()
 }
 
 
-void UBGraphicsPDFItem::remove()
-{
-    if (mDelegate)
-        mDelegate->remove(true);
-}
-
-
 UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const
 {   
     QPixmap pixmap(mRenderer->pageSizeF(mPageNumber).toSize());
@@ -141,3 +154,5 @@ UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const
 
     return pixmapItem;
 }
+
+
diff --git a/Sankore-3.1/src/domain/UBGraphicsPDFItem.h b/Sankore-3.1/src/domain/UBGraphicsPDFItem.h
index 847290c..52d1204 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPDFItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsPDFItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSPDFITEM_H_
 #define UBGRAPHICSPDFITEM_H_
 
@@ -41,16 +48,16 @@ class UBGraphicsPDFItem: public GraphicsPDFItem, public UBItem, public UBGraphic
 
         virtual UBItem* deepCopy() const;
 
+        virtual void copyItemParameters(UBItem *copy) const;
+
         virtual void setRenderingQuality(RenderingQuality pRenderingQuality);
 
         virtual UBGraphicsScene* scene();
 
-        virtual void remove();
-
         virtual UBGraphicsPixmapItem* toPixmapItem() const;
-        virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;}
 
         virtual void clearSource(){;}
+        virtual void setUuid(const QUuid &pUuid);
 
     protected:
 
@@ -60,7 +67,6 @@ class UBGraphicsPDFItem: public GraphicsPDFItem, public UBItem, public UBGraphic
 
         virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
 
-//        UBGraphicsItemDelegate* mDelegate;
 };
 
 #endif /* UBGRAPHICSPDFITEM_H_ */
diff --git a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp
index 462c690..3d0a9a0 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsPixmapItem.h"
 
 #include <QtGui>
@@ -28,41 +35,48 @@
 UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
     : QGraphicsPixmapItem(parent)
 {
-    mDelegate = new UBGraphicsItemDelegate(this, 0, true, true);
-    mDelegate->init();
-
-    mDelegate->setFlippable(true);
+    setDelegate(new UBGraphicsItemDelegate(this, 0, true, false, true, true));
+    Delegate()->init();
+    Delegate()->setFlippable(true);
+    Delegate()->setRotatable(true);
 
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
     setTransformationMode(Qt::SmoothTransformation);
 
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+
+    setUuid(QUuid::createUuid()); //more logical solution is in creating uuid for element in element's constructor
 }
 
 UBGraphicsPixmapItem::~UBGraphicsPixmapItem()
 {
-    if (mDelegate)
-        delete mDelegate;
 }
 
 QVariant UBGraphicsPixmapItem::itemChange(GraphicsItemChange change, const QVariant &value)
 {
-    QVariant newValue = mDelegate->itemChange(change, value);
+    QVariant newValue = Delegate()->itemChange(change, value);
     return QGraphicsPixmapItem::itemChange(change, newValue);
 }
 
+void UBGraphicsPixmapItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid));
+}
+
 void UBGraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
     QMimeData* pMime = new QMimeData();
     pMime->setImageData(pixmap().toImage());
-    mDelegate->setMimeData(pMime);
-    int k = pixmap().width() / 100;
-    QSize newSize(pixmap().width() / k, pixmap().height() / k);
+    Delegate()->setMimeData(pMime);
+    qreal k = (qreal)pixmap().width() / 100.0;
+
+    QSize newSize((int)(pixmap().width() / k), (int)(pixmap().height() / k));
 
-    mDelegate->setDragPixmap(pixmap().scaled(newSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+    Delegate()->setDragPixmap(pixmap().scaled(newSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
 
-    if (mDelegate->mousePressEvent(event))
+    if (Delegate()->mousePressEvent(event))
     {
         //NOOP
     }
@@ -74,7 +88,7 @@ void UBGraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mouseMoveEvent(event))
+    if (Delegate()->mouseMoveEvent(event))
     {
         // NOOP;
     }
@@ -86,7 +100,7 @@ void UBGraphicsPixmapItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    mDelegate->mouseReleaseEvent(event);
+    Delegate()->mouseReleaseEvent(event);
     QGraphicsPixmapItem::mouseReleaseEvent(event);
 }
 
@@ -105,33 +119,34 @@ UBItem* UBGraphicsPixmapItem::deepCopy() const
 {
    UBGraphicsPixmapItem* copy = new UBGraphicsPixmapItem();
 
-   copy->setPixmap(this->pixmap());
-   copy->setPos(this->pos());
-   copy->setTransform(this->transform());
-   copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-   copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-   copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-   copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+   copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
 
-   copy->setUuid(this->uuid()); // This is OK for now, as long as pixmaps are immutable -
-   copy->setSourceUrl(this->sourceUrl());
+   copyItemParameters(copy);
 
    // TODO UB 4.7 ... complete all members ?
 
    return copy;
 }
 
-
-UBGraphicsScene* UBGraphicsPixmapItem::scene()
+void UBGraphicsPixmapItem::copyItemParameters(UBItem *copy) const
 {
-    return qobject_cast<UBGraphicsScene*>(QGraphicsItem::scene());
+    UBGraphicsPixmapItem *cp = dynamic_cast<UBGraphicsPixmapItem*>(copy);
+    if (cp)
+    {
+        cp->setPixmap(this->pixmap());
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+        cp->setSourceUrl(this->sourceUrl());
+    }
 }
 
-
-void UBGraphicsPixmapItem::remove()
+UBGraphicsScene* UBGraphicsPixmapItem::scene()
 {
-    if (mDelegate)
-        mDelegate->remove(true);
+    return qobject_cast<UBGraphicsScene*>(QGraphicsItem::scene());
 }
 
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h
index 5cb7d59..999b3f8 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsPixmapItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSPIXMAPITEM_H_
 #define UBGRAPHICSPIXMAPITEM_H_
 
@@ -40,18 +47,19 @@ class UBGraphicsPixmapItem : public QObject, public QGraphicsPixmapItem, public
         }
         virtual UBItem* deepCopy() const;
 
-        virtual UBGraphicsScene* scene();
+        virtual void copyItemParameters(UBItem *copy) const;
 
-        virtual void remove();
+        virtual UBGraphicsScene* scene();
 
         Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)
 
         void setOpacity(qreal op);
         qreal opacity() const;
 
-        virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate;}
         virtual void clearSource(){;}
 
+        virtual void setUuid(const QUuid &pUuid);
+
 protected:
 
         virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
diff --git a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp
index 1fc87f6..d61270f 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsPolygonItem.h"
 
 #include "frameworks/UBGeometryUtils.h"
@@ -60,6 +67,13 @@ UBGraphicsPolygonItem::UBGraphicsPolygonItem (const QLineF& pLine, qreal pWidth)
 void UBGraphicsPolygonItem::initialize()
 {
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::DrawingItem)); //Necessary to set if we want z value to be assigned correctly
+    setUuid(QUuid::createUuid());
+}
+
+void UBGraphicsPolygonItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
 }
 
 void UBGraphicsPolygonItem::clearStroke()
@@ -142,43 +156,41 @@ QColor UBGraphicsPolygonItem::color() const
 
 
 UBItem* UBGraphicsPolygonItem::deepCopy() const
-{
-    UBGraphicsPolygonItem* copy = deepCopy(this->polygon());
-    copy->mOriginalLine = this->mOriginalLine;
-    copy->mOriginalWidth = this->mOriginalWidth;
-    copy->mIsNominalLine = this->mIsNominalLine;
+{  
+    UBGraphicsPolygonItem* copy = new UBGraphicsPolygonItem(polygon(), 0);
+
+    UBGraphicsStroke *stroke = new UBGraphicsStroke();
+    
+    copyItemParameters(copy);
+
+    copy->setStroke(stroke);
 
     return copy;
 }
 
 
-UBGraphicsPolygonItem* UBGraphicsPolygonItem::deepCopy(const QPolygonF& pol) const
+void UBGraphicsPolygonItem::copyItemParameters(UBItem *copy) const
 {
-    UBGraphicsPolygonItem* copy = new UBGraphicsPolygonItem(pol);
-
-    copy->mOriginalLine = QLineF();
-    copy->mOriginalWidth = -1;
-    copy->mIsNominalLine = false;
-
-    copy->setStroke(this->stroke());
-    copy->setStrokesGroup(this->strokesGroup());
-    copy->setBrush(this->brush());
-    copy->setPen(this->pen());
-    copy->mHasAlpha = this->mHasAlpha;
-
-
-    copy->setColorOnDarkBackground(this->colorOnDarkBackground());
-    copy->setColorOnLightBackground(this->colorOnLightBackground());
-
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+    UBGraphicsPolygonItem *cp = dynamic_cast<UBGraphicsPolygonItem*>(copy);
+    if (cp)
+    {
+        cp->mOriginalLine = this->mOriginalLine;
+        cp->mOriginalWidth = this->mOriginalWidth;
+        cp->mIsNominalLine = this->mIsNominalLine;
 
-    // TODO UB 4.7 ... complete all members ?
+        cp->setTransform(transform());
+        cp->setBrush(this->brush());
+        cp->setPen(this->pen());
+        cp->mHasAlpha = this->mHasAlpha;
 
-    return copy;
+        cp->setColorOnDarkBackground(this->colorOnDarkBackground());
+        cp->setColorOnLightBackground(this->colorOnLightBackground());
+        //cp->setTransform(transform());
 
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+    }
 }
 
-
 void UBGraphicsPolygonItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
 {
     if(mHasAlpha && scene() && scene()->isLightBackground())
@@ -189,18 +201,18 @@ void UBGraphicsPolygonItem::paint ( QPainter * painter, const QStyleOptionGraphi
     QGraphicsPolygonItem::paint(painter, option, widget);
 }
 
-//QPainterPath UBGraphicsPolygonItem::shape() const
-//{
+QPainterPath UBGraphicsPolygonItem::shape() const
+{
 
-//    QPainterPath path;
-//    path.addRect(boundingRect());
+    QPainterPath path;
+    path.addRect(boundingRect());
 
-//    return path;
+    return path;
 
-////    static QPainterPath shapePath = QGraphicsPolygonItem::shape();
+//    static QPainterPath shapePath = QGraphicsPolygonItem::shape();
 
-////    return shapePath;
-//}
+//    return shapePath;
+}
 
 
 UBGraphicsScene* UBGraphicsPolygonItem::scene()
diff --git a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h
index 663658f..0ac714f 100644
--- a/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsPolygonItem.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBGRAPHICSPOLYGONITEM_H
 #define UBGRAPHICSPOLYGONITEM_H
 
@@ -20,6 +28,7 @@
 #include "core/UB.h"
 #include "UBItem.h"
 #include "UBGraphicsStrokesGroup.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
 
 class UBItem;
 class UBGraphicsScene;
@@ -38,6 +47,8 @@ class UBGraphicsPolygonItem : public QGraphicsPolygonItem, public UBItem
 
         void initialize();
 
+        void setUuid(const QUuid &pUuid);
+
         void setStrokesGroup(UBGraphicsStrokesGroup* group);
         UBGraphicsStrokesGroup* strokesGroup() const{return mpGroup;}
         void setColor(const QColor& color);
@@ -86,8 +97,7 @@ class UBGraphicsPolygonItem : public QGraphicsPolygonItem, public UBItem
 
         virtual UBItem* deepCopy() const;
 
-        // optimisation (eraser)
-        UBGraphicsPolygonItem* deepCopy(const QPolygonF& pol) const;
+        virtual void copyItemParameters(UBItem *copy) const;
 
         QLineF originalLine() { return mOriginalLine;}
         qreal originalWidth() { return mOriginalWidth;}
@@ -118,7 +128,7 @@ class UBGraphicsPolygonItem : public QGraphicsPolygonItem, public UBItem
 
     protected:
         void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget);
-//        QPainterPath shape () const;
+        QPainterPath shape () const;
 
 
     private:
diff --git a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp
index 5c81178..dde91e8 100644
--- a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsProxyWidget.h"
 
 #include <QtGui>
@@ -29,8 +36,9 @@ UBGraphicsProxyWidget::UBGraphicsProxyWidget(QGraphicsItem* parent)
 {
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
 
-    mDelegate = new UBGraphicsItemDelegate(this,0);
-    mDelegate->init();
+    //UBGraphicsItemDelegate* delegate = new UBGraphicsItemDelegate(this,0, true, false, false);
+    //delegate->init();
+    //setDelegate(delegate);
 
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
 
@@ -40,13 +48,15 @@ UBGraphicsProxyWidget::UBGraphicsProxyWidget(QGraphicsItem* parent)
 
 UBGraphicsProxyWidget::~UBGraphicsProxyWidget()
 {
-    if (mDelegate)
-        delete mDelegate;
 }
 
 
 QVariant UBGraphicsProxyWidget::itemChange(GraphicsItemChange change, const QVariant &value)
 {
+    if (change == QGraphicsItem::ItemCursorHasChanged &&  scene())
+    {
+        unsetCursor();
+    }
     if ((change == QGraphicsItem::ItemSelectedHasChanged)
               &&  scene())
     {
@@ -63,29 +73,35 @@ QVariant UBGraphicsProxyWidget::itemChange(GraphicsItemChange change, const QVar
         }
     }
 
-    QVariant newValue = mDelegate->itemChange(change, value);
+    QVariant newValue = Delegate()->itemChange(change, value);
     return QGraphicsProxyWidget::itemChange(change, newValue);
 }
 
+void UBGraphicsProxyWidget::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
 
 void UBGraphicsProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mousePressEvent(event))
+    if (Delegate()->mousePressEvent(event))
     {
         //NOOP
     }
     else
     {
         // QT Proxy Widget is a bit lazy, we force the selection ...
-        QGraphicsProxyWidget::mousePressEvent(event);
+
         setSelected(true);
     }
+    QGraphicsProxyWidget::mousePressEvent(event);
 }
 
 
 void UBGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mouseMoveEvent(event))
+    if (Delegate()->mouseMoveEvent(event))
     {
         // NOOP;
     }
@@ -98,13 +114,13 @@ void UBGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsProxyWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    mDelegate->mouseReleaseEvent(event);
+    Delegate()->mouseReleaseEvent(event);
     QGraphicsProxyWidget::mouseReleaseEvent(event);
 }
 
 void UBGraphicsProxyWidget::wheelEvent(QGraphicsSceneWheelEvent *event)
 {
-    if( mDelegate->weelEvent(event) )
+    if( Delegate()->weelEvent(event) )
     {
         QGraphicsProxyWidget::wheelEvent(event);
         event->accept();
@@ -122,17 +138,6 @@ void UBGraphicsProxyWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 //    NOOP
 }
 
-void UBGraphicsProxyWidget::setDelegate(UBGraphicsItemDelegate* pDelegate)
-{
-    if (mDelegate)
-    {
-        delete mDelegate;
-    }
-
-    mDelegate = pDelegate;
-}
-
-
 void UBGraphicsProxyWidget::resize(qreal w, qreal h)
 {
     UBGraphicsProxyWidget::resize(QSizeF(w, h));
@@ -143,12 +148,32 @@ void UBGraphicsProxyWidget::resize(const QSizeF & pSize)
 {
     if (pSize != size())
     {
-        QGraphicsProxyWidget::setMaximumSize(pSize.width(), pSize.height());
-        QGraphicsProxyWidget::resize(pSize.width(), pSize.height());
+        qreal sizeX = 0;
+        qreal sizeY = 0;
+
         if (widget())
-            widget()->resize(pSize.width(), pSize.height());
-        if (mDelegate)
-            mDelegate->positionHandles();
+        {
+            
+            QSizeF minimumItemSize(widget()->minimumSize());
+            if (minimumItemSize.width() > pSize.width())
+                sizeX = minimumItemSize.width();
+            else
+                sizeX = pSize.width();
+
+            if (minimumItemSize.height() > pSize.height())
+                sizeY = minimumItemSize.height();
+            else
+                sizeY = pSize.height();
+        }
+        QSizeF size(sizeX, sizeY);
+
+
+        QGraphicsProxyWidget::setMaximumSize(size.width(), size.height());
+        QGraphicsProxyWidget::resize(size.width(), size.height());
+        if (widget())
+            widget()->resize(size.width(), size.height());
+        if (Delegate())
+            Delegate()->positionHandles();
         if (scene())
             scene()->setModified(true);
     }
@@ -167,8 +192,3 @@ UBGraphicsScene* UBGraphicsProxyWidget::scene()
 }
 
 
-void UBGraphicsProxyWidget::remove()
-{
-    if (mDelegate)
-        mDelegate->remove(true);
-}
diff --git a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h
index ae1e969..a3f5782 100644
--- a/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h
+++ b/Sankore-3.1/src/domain/UBGraphicsProxyWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSPROXYWIDGET_H_
 #define UBGRAPHICSPROXYWIDGET_H_
 
@@ -27,7 +34,6 @@ class UBGraphicsItemDelegate;
 class UBGraphicsProxyWidget: public QGraphicsProxyWidget, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem
 {
     public:
-        UBGraphicsProxyWidget(QGraphicsItem* parent = 0);
         virtual ~UBGraphicsProxyWidget();
 
         virtual void resize(qreal w, qreal h);
@@ -35,17 +41,13 @@ class UBGraphicsProxyWidget: public QGraphicsProxyWidget, public UBItem, public
 
         virtual QSizeF size() const;
 
-        void setDelegate(UBGraphicsItemDelegate* pDelegate);
-
         virtual UBGraphicsScene* scene();
 
-        virtual void remove();
-
-        virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;}
-
         virtual void clearSource(){;}
+        virtual void setUuid(const QUuid &pUuid);
 
     protected:
+        UBGraphicsProxyWidget(QGraphicsItem* parent = 0);
 
         virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
         virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
diff --git a/Sankore-3.1/src/domain/UBGraphicsScene.cpp b/Sankore-3.1/src/domain/UBGraphicsScene.cpp
index a01aad4..e53dec2 100644
--- a/Sankore-3.1/src/domain/UBGraphicsScene.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsScene.cpp
@@ -1,2390 +1,2321 @@
-/*
- * 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/>.
- */
-
-#include "UBGraphicsScene.h"
-
-#include <QtGui>
-#include <QtWebKit>
-#include <QtSvg>
-#include <QGraphicsView>
-
-#include "frameworks/UBGeometryUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-#include "core/UBApplicationController.h"
-#include "core/UBDisplayManager.h"
-#include "core/UBPersistenceManager.h"
-
-#include "gui/UBMagnifer.h"
-#include "gui/UBMainWindow.h"
-
-#include "tools/UBGraphicsRuler.h"
-#include "tools/UBGraphicsProtractor.h"
-#include "tools/UBGraphicsCompass.h"
-#include "tools/UBGraphicsTriangle.h"
-#include "tools/UBGraphicsCurtainItem.h"
-#include "tools/UBGraphicsCache.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "board/UBBoardController.h"
-#include "board/UBDrawingController.h"
-
-#include "UBGraphicsItemUndoCommand.h"
-#include "UBGraphicsTextItemUndoCommand.h"
-#include "UBGraphicsProxyWidget.h"
-#include "UBGraphicsPixmapItem.h"
-#include "UBGraphicsSvgItem.h"
-#include "UBGraphicsPolygonItem.h"
-#include "UBGraphicsVideoItem.h"
-#include "UBGraphicsAudioItem.h"
-#include "UBGraphicsWidgetItem.h"
-#include "UBGraphicsPDFItem.h"
-#include "UBGraphicsTextItem.h"
-#include "UBGraphicsStrokesGroup.h"
-
-#include "domain/ubgraphicsgroupcontaineritem.h"
-
-#include "UBAppleWidget.h"
-#include "UBW3CWidget.h"
-#include "UBGraphicsStroke.h"
-
-#include "core/memcheck.h"
-
-const QString groupText = "Group items";
-const QString ungroupText = "Ungroup items";
-
-qreal UBZLayerController::errorNumber = -20000001.0;
-
-UBZLayerController::UBZLayerController(QGraphicsScene *scene) :
-    mScene(scene)
-
-{
-    scopeMap.insert(itemLayerType::NoLayer,        ItemLayerTypeData( errorNumber, errorNumber));
-    scopeMap.insert(itemLayerType::BackgroundItem, ItemLayerTypeData(-10000000.0, -10000000.0 ));
-    scopeMap.insert(itemLayerType::ObjectItem,     ItemLayerTypeData(-10000000.0,  0.0        ));
-    scopeMap.insert(itemLayerType::DrawingItem,    ItemLayerTypeData( 0.0,         10000000.0 ));
-    scopeMap.insert(itemLayerType::ToolItem,       ItemLayerTypeData( 10000000.0,  10000100.0 ));
-    scopeMap.insert(itemLayerType::CppTool,        ItemLayerTypeData( 10000100.0,  10000200.0 ));
-    scopeMap.insert(itemLayerType::Curtain,        ItemLayerTypeData( 10000200.0,  10001000.0 ));
-    scopeMap.insert(itemLayerType::Eraiser,        ItemLayerTypeData( 10001000.0,  10001100.0 ));
-    scopeMap.insert(itemLayerType::Pointer,        ItemLayerTypeData( 10001100.0,  10001200.0 ));
-    scopeMap.insert(itemLayerType::Cache,          ItemLayerTypeData( 10001300.0,  10001400.0 ));
-
-    scopeMap.insert(itemLayerType::SelectedItem,   ItemLayerTypeData( 10001000.0,  10001000.0 ));
-}
-
-qreal UBZLayerController::generateZLevel(itemLayerType::Enum key)
-{
-
-    if (!scopeMap.contains(key)) {
-        qDebug() << "Number is out of layer scope";
-        return errorNumber;
-    }
-
-    qreal result = scopeMap.value(key).curValue;
-    qreal top = scopeMap.value(key).topLimit;
-    qreal incrementalStep = scopeMap.value(key).incStep;
-
-    result += incrementalStep;
-    if (result >= top) {
-        // If not only one variable presents in the scope, notify that values for scope are over
-        if (scopeMap.value(key).topLimit != scopeMap.value(key).bottomLimit) {
-            qDebug() << "new values are over for the scope" << key;
-        }
-        result = top - incrementalStep;
-    }
-
-    scopeMap[key].curValue = result;
-
-    return result;
-}
-qreal UBZLayerController::generateZLevel(QGraphicsItem *item)
-{
-    qreal result = errorNumber;
-    itemLayerType::Enum type = static_cast<itemLayerType::Enum>(item->data(UBGraphicsItemData::itemLayerType).toInt());
-
-    if (validLayerType(type)) {
-        result =  generateZLevel(type);
-    }
-
-    return result;
-}
-
-qreal UBZLayerController::changeZLevelTo(QGraphicsItem *item, moveDestination dest)
-{
-    itemLayerType::Enum curItemLayerType = typeForData(item);
-    if (curItemLayerType == itemLayerType::NoLayer) {
-        qDebug() << "item's layer is out of the scope. Can't implement z-layer changing operation";
-        return errorNum();
-    }
-
-    //select only items wiht the same z-level as item's one and push it to sortedItems QMultiMap
-    QMultiMap<qreal, QGraphicsItem*> sortedItems;
-    if (mScene->items().count()) {
-        foreach (QGraphicsItem *tmpItem, mScene->items()) {
-            if (typeForData(tmpItem) == curItemLayerType) {
-
-                sortedItems.insert(tmpItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), tmpItem);
-            }
-        }
-    }
-
-    //If only one item itself - do nothing, return it's z-value
-    if (sortedItems.count() == 1 && sortedItems.values().first() == item) {
-        qDebug() << "only one item exists in layer. Have nothing to change";
-        return item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-    }
-
-    QMapIterator<qreal, QGraphicsItem*>iCurElement(sortedItems);
-
-    if (dest == up) {
-        if (iCurElement.findNext(item)) {
-            if (iCurElement.hasNext()) {
-                qreal nextZ = iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-                UBGraphicsItem::assignZValue(iCurElement.peekNext().value(), item->data(UBGraphicsItemData::ItemOwnZValue).toReal());
-                UBGraphicsItem::assignZValue(item, nextZ);
-
-                iCurElement.next();
-
-                while (iCurElement.hasNext() && iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal() == nextZ) {
-                    UBGraphicsItem::assignZValue(iCurElement.next().value(), nextZ);
-                }
-            }
-        }
-
-    } else if (dest == top) {
-        if (iCurElement.findNext(item)) {
-            if (iCurElement.hasNext()) {
-                UBGraphicsItem::assignZValue(item, generateZLevel(item));
-            }
-        }
-
-    } else if (dest == down) {
-        iCurElement.toBack();
-        if (iCurElement.findPrevious(item)) {
-            if (iCurElement.hasPrevious()) {
-                qreal nextZ = iCurElement.peekPrevious().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-                UBGraphicsItem::assignZValue(iCurElement.peekPrevious().value(), item->data(UBGraphicsItemData::ItemOwnZValue).toReal());
-                UBGraphicsItem::assignZValue(item, nextZ);
-
-                while (iCurElement.hasNext() && iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal() == nextZ) {
-                        UBGraphicsItem::assignZValue(iCurElement.next().value(), nextZ);
-                }
-            }
-        }
-
-    } else if (dest == bottom) {
-        iCurElement.toBack();
-        if (iCurElement.findPrevious(item)) {
-            if (iCurElement.hasPrevious()) {
-//                qreal oldz = iCurElement.peekPrevious().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-                qreal oldz = item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-                iCurElement.toFront();
-                qreal nextZ = iCurElement.next().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-
-                ItemLayerTypeData curItemLayerTypeData = scopeMap.value(curItemLayerType);
-//
-                //if we have some free space between lowest graphics item and layer's bottom bound,
-                //insert element close to first element in layer
-                if (nextZ >= curItemLayerTypeData.bottomLimit + curItemLayerTypeData.incStep) {
-                    qreal result = nextZ - curItemLayerTypeData.incStep;
-                    UBGraphicsItem::assignZValue(item, result);
-                } else {
-                    UBGraphicsItem::assignZValue(item, nextZ);
-                    bool doubleGap = false; //to detect if we can finish rundown since we can insert item to the free space
-
-                    while (iCurElement.peekNext().value() != item) {
-                        qreal curZ = iCurElement.value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-                        qreal curNextZ = iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-                        if (curNextZ - curZ >= 2 * curItemLayerTypeData.incStep) {
-                            UBGraphicsItem::assignZValue(iCurElement.value(), curZ + curItemLayerTypeData.incStep);
-                            doubleGap = true;
-                            break;
-                        } else {
-                            UBGraphicsItem::assignZValue(iCurElement.value(), iCurElement.next().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal());
-                        }
-                    }
-                    if (!doubleGap) {
-
-                        UBGraphicsItem::assignZValue(iCurElement.value(), oldz);
-
-                        while (iCurElement.hasNext() && (iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal() == oldz)) {
-                            UBGraphicsItem::assignZValue(iCurElement.next().value(), oldz);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-
-    //clear selection of the item and then select it again to activate selectionChangeProcessing()
-    item->scene()->clearSelection();
-    item->setSelected(true);
-
-    //Return new z value assigned to item
-    return item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
-}
-
-itemLayerType::Enum UBZLayerController::typeForData(QGraphicsItem *item) const
-{
-    itemLayerType::Enum result = static_cast<itemLayerType::Enum>(item->data(UBGraphicsItemData::itemLayerType).toInt());
-
-    if (!scopeMap.contains(result)) {
-        result = itemLayerType::NoLayer;
-    }
-
-    return result;
-}
-
-UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent)
-    : UBCoreGraphicsScene(parent)
-    , mEraser(0)
-    , mPointer(0)
-    , mDocument(parent)
-    , mDarkBackground(false)
-    , mCrossedBackground(false)
-    , mIsDesktopMode(false)
-    , mIsModified(true)
-    , mBackgroundObject(0)
-    , mPreviousWidth(0)
-    , mInputDeviceIsPressed(false)
-    , mArcPolygonItem(0)
-    , mRenderingContext(Screen)
-    , mCurrentStroke(0)
-    , mShouldUseOMP(true)
-    , mItemCount(0)
-    , enableUndoRedoStack(true)
-    , magniferControlViewWidget(0)
-    , magniferDisplayViewWidget(0)
-    , mZLayerController(new UBZLayerController(this))
-    , mpLastPolygon(NULL)
-{
-    UBCoreGraphicsScene::setObjectName("BoardScene");
-#ifdef __ppc__
-    mShouldUseOMP = false;
-#elif defined(Q_WS_MAC)
-    mShouldUseOMP = QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5;
-#endif
-
-    setDocument(parent);
-    createEraiser();
-    createPointer();
-
-    if (UBApplication::applicationController)
-    {
-        setViewState(SceneViewState(1,
-            UBApplication::applicationController->initialHScroll(),
-            UBApplication::applicationController->initialVScroll()));
-    }
-
-//    Just for debug. Do not delete please
-//    connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing()));
-    connect(this, SIGNAL(selectionChanged()), this, SLOT(updateGroupButtonState()));
-
-//  just a stub don't treat as a result code
-//    static int i = 0;
-//    i++;
-//    if (i == 1) {
-        connect(UBApplication::mainWindow->actionGroupItems, SIGNAL(triggered()), this, SLOT(groupButtonClicked()));
-//        qDebug() << "the connect is accepted";
-//    }
-}
-
-UBGraphicsScene::~UBGraphicsScene()
-{
-    if (mCurrentStroke)
-        if (mCurrentStroke->polygons().empty())
-            delete mCurrentStroke;
-
-    if (mZLayerController)
-        delete mZLayerController;
-}
-
-void UBGraphicsScene::selectionChangedProcessing()
-{
-    if (selectedItems().count()){
-        qDebug() << "Selected item bounding rect: " << selectedItems().first()->boundingRect();
-        UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f') + "own z value is "
-                                                + QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f'));
-    }
-}
-
-void UBGraphicsScene::updateGroupButtonState()
-{
-    QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
-    QList<QGraphicsItem*> selItems = selectedItems();
-    int selCount = selItems.count();
-
-    if (selCount < 1) {
-        groupAction->setEnabled(false);
-        groupAction->setText(groupText);
-
-    } else if (selCount == 1) {
-        if (selItems.first()->type() == UBGraphicsGroupContainerItem::Type) {
-            groupAction->setEnabled(true);
-            groupAction->setText(ungroupText);
-        } else {
-            groupAction->setEnabled(false);
-        }
-
-    } else if (selCount > 1) {
-        groupAction->setEnabled(true);
-        groupAction->setText(groupText);
-    }
-}
-
-void UBGraphicsScene::groupButtonClicked()
-{
-    QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
-    QList<QGraphicsItem*> selItems = selectedItems();
-    if (!selItems.count()) {
-        qDebug() << "Got grouping request when there is no any selected item on the scene";
-        return;
-    }
-
-    if (groupAction->text() == groupText) { //The only way to get information from item, considering using smth else
-        UBGraphicsGroupContainerItem *groupItem = new UBGraphicsGroupContainerItem();
-
-        foreach (QGraphicsItem *item, selItems) {
-            if (item->type() == UBGraphicsGroupContainerItem::Type) {
-                QList<QGraphicsItem*> childItems = item->childItems();
-                UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
-                if (currentGroup) {
-                    currentGroup->destroy();
-                }
-                foreach (QGraphicsItem *chItem, childItems) {
-                    groupItem->addToGroup(chItem);
-                }
-            } else {
-                groupItem->addToGroup(item);
-            }
-        }
-
-        addItem(groupItem);
-        groupItem->setVisible(true);
-        groupItem->setFocus();
-
-    } else if (groupAction->text() == ungroupText) {
-        //Considering one selected item and it's a group
-        if (selItems.count() > 1) {
-            qDebug() << "can't make sense of ungrouping more then one item. Grouping action should be performed for that purpose";
-            return;
-        }
-        UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(selItems.first());
-        if (currentGroup) {
-            currentGroup->destroy();
-        }
-    }
-
-}
-
-bool UBGraphicsScene::inputDevicePress(const QPointF& scenePos, const qreal& pressure)
-{
-    //mMesure1Ms = 0;
-    //mMesure2Ms = 0;
-
-    bool accepted = false;
-
-    if (mInputDeviceIsPressed)
-    {
-        qWarning() << "scene received input device pressed, without input device release, muting event as input device move";
-        accepted = inputDeviceMove(scenePos, pressure);
-    }
-    else
-    {
-        mInputDeviceIsPressed = true;
-
-        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
-
-        if (UBDrawingController::drawingController()->isDrawingTool())
-        {
-            // -----------------------------------------------------------------
-            // We fall here if we are using the Pen, the Marker or the Line tool
-            // -----------------------------------------------------------------
-            qreal width = 0;
-
-            // delete current stroke, if not assigned to any polygon
-            if (mCurrentStroke && mCurrentStroke->polygons().empty()){
-                delete mCurrentStroke;
-                mCurrentStroke = NULL;
-            }
-
-            // ---------------------------------------------------------------
-            // Create a new Stroke. A Stroke is a collection of QGraphicsLines
-            // ---------------------------------------------------------------
-            mCurrentStroke = new UBGraphicsStroke();
-
-            if (currentTool != UBStylusTool::Line){
-                // Handle the pressure
-                width = UBDrawingController::drawingController()->currentToolWidth() * pressure;
-            }else{
-                // Ignore pressure for the line tool
-                width = UBDrawingController::drawingController()->currentToolWidth();
-            }
-
-            width /= UBApplication::boardController->systemScaleFactor();
-            width /= UBApplication::boardController->currentZoom();
-
-            mAddedItems.clear();
-            mRemovedItems.clear();
-
-            if (UBDrawingController::drawingController()->mActiveRuler)
-            {
-                UBDrawingController::drawingController()->mActiveRuler->StartLine(scenePos, width);
-            }
-            else
-            {
-                moveTo(scenePos);
-                drawLineTo(scenePos, width, UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
-            }
-            accepted = true;
-        }
-        else if (currentTool == UBStylusTool::Eraser)
-        {
-            mAddedItems.clear();
-            mRemovedItems.clear();
-            moveTo(scenePos);
-
-            qreal eraserWidth = UBSettings::settings()->currentEraserWidth();
-            eraserWidth /= UBApplication::boardController->systemScaleFactor();
-            eraserWidth /= UBApplication::boardController->currentZoom();
-
-            eraseLineTo(scenePos, eraserWidth);
-            drawEraser(scenePos, true);
-
-            accepted = true;
-        }
-        else if (currentTool == UBStylusTool::Pointer)
-        {
-            drawPointer(scenePos, true);
-            accepted = true;
-        }
-    }
-
-    return accepted;
-}
-
-bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pressure)
-{
-    bool accepted = false;
-
-    UBDrawingController *dc = UBDrawingController::drawingController();
-    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)dc->stylusTool();
-
-    QPointF position = QPointF(scenePos);
-
-    if (currentTool == UBStylusTool::Eraser)
-    {
-        drawEraser(position);
-        accepted = true;
-    }
-
-    if (mInputDeviceIsPressed)
-    {
-        if (dc->isDrawingTool())
-        {
-            qreal width = 0;
-
-            if (currentTool != UBStylusTool::Line){
-                // Handle the pressure
-                width = dc->currentToolWidth() * pressure;
-            }else{
-                // Ignore pressure for line tool
-                width = dc->currentToolWidth();
-            }
-
-            width /= UBApplication::boardController->systemScaleFactor();
-            width /= UBApplication::boardController->currentZoom();
-
-            if (currentTool == UBStylusTool::Line || dc->mActiveRuler)
-            {
-                if(NULL != mpLastPolygon && NULL != mCurrentStroke && mAddedItems.size() > 0){
-                    UBCoreGraphicsScene::removeItemFromDeletion(mpLastPolygon);
-                    mAddedItems.remove(mpLastPolygon);
-                    mCurrentStroke->remove(mpLastPolygon);
-                    removeItem(mpLastPolygon);
-                    mPreviousPolygonItems.removeAll(mpLastPolygon);
-                }
-
-                // ------------------------------------------------------------------------
-                // Here we wanna make sure that the Line will 'grip' at i*45, i*90 degrees
-                // ------------------------------------------------------------------------
-
-                QLineF radius(mPreviousPoint, position);
-                qreal angle = radius.angle();
-                angle = qRound(angle / 45) * 45;
-                qreal radiusLength = radius.length();
-                QPointF newPosition(
-                    mPreviousPoint.x() + radiusLength * cos((angle * PI) / 180),
-                    mPreviousPoint.y() - radiusLength * sin((angle * PI) / 180));
-                QLineF chord(position, newPosition);
-                                    if (chord.length() < qMin((int)16, (int)(radiusLength / 20)))
-                    position = newPosition;
-            }
-
-            if(dc->mActiveRuler){
-                dc->mActiveRuler->DrawLine(position, width);
-            }else{
-                drawLineTo(position, width, UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
-            }
-        }
-        else if (currentTool == UBStylusTool::Eraser)
-        {
-            qreal eraserWidth = UBSettings::settings()->currentEraserWidth();
-            eraserWidth /= UBApplication::boardController->systemScaleFactor();
-            eraserWidth /= UBApplication::boardController->currentZoom();
-
-            eraseLineTo(position, eraserWidth);
-        }
-        else if (currentTool == UBStylusTool::Pointer)
-        {
-            drawPointer(position);
-        }
-
-        accepted = true;
-    }
-
-    return accepted;
-}
-
-bool UBGraphicsScene::inputDeviceRelease()
-{
-    /*
-    if (mMesure1Ms > 0 ||  mMesure2Ms > 0)
-    {
-        qWarning() << "---------------------------";
-        qWarning() << "mMesure1Ms: " << mMesure1Ms;
-        qWarning() << "mMesure2Ms: " << mMesure2Ms;
-
-        mMesure1Ms = 0;
-        mMesure2Ms = 0;
-    }
-    */
-
-    bool accepted = false;
-
-    if (mPointer)
-    {
-        mPointer->hide();
-        accepted = true;
-    }
-
-    UBDrawingController *dc = UBDrawingController::drawingController();
-
-    if (dc->isDrawingTool() || mDrawWithCompass)
-    {
-        if(mArcPolygonItem){
-            if(eDrawingMode_Vector == dc->drawingMode()){
-                UBGraphicsStrokesGroup* pStrokes = new UBGraphicsStrokesGroup();
-
-                // Add the arc
-                mAddedItems.remove(mArcPolygonItem);
-                removeItem(mArcPolygonItem);
-                UBCoreGraphicsScene::removeItemFromDeletion(mArcPolygonItem);
-                pStrokes->addToGroup(mArcPolygonItem);
-
-                // Add the center cross
-                foreach(QGraphicsItem* item, mAddedItems){
-                    removeItem(item);
-                    UBCoreGraphicsScene::removeItemFromDeletion(item);
-                    pStrokes->addToGroup(item);
-                }
-
-                mAddedItems.clear();
-                mAddedItems << pStrokes;
-                addItem(pStrokes);
-                mDrawWithCompass = false;
-            }
-        }else if (mCurrentStroke)
-        {
-            if(eDrawingMode_Vector == DRAWING_MODE){
-                UBGraphicsStrokesGroup* pStrokes = new UBGraphicsStrokesGroup();
-
-                // Remove the strokes that were just drawn here and replace them by a stroke item
-                foreach(UBGraphicsPolygonItem* poly, mCurrentStroke->polygons()){
-                    mPreviousPolygonItems.removeAll(poly);
-                    removeItem(poly);
-                    UBCoreGraphicsScene::removeItemFromDeletion(poly);
-                    poly->setStrokesGroup(pStrokes);
-                    pStrokes->addToGroup(poly);
-                }
-
-                // TODO LATER : Generate well pressure-interpolated polygons and create the line group with them
-
-                mAddedItems.clear();
-                mAddedItems << pStrokes;
-                addItem(pStrokes);
-            }
-
-            if (mCurrentStroke->polygons().empty()){
-                delete mCurrentStroke;
-                mCurrentStroke = 0;
-            }
-        }
-    }
-
-    if (mRemovedItems.size() > 0 || mAddedItems.size() > 0)
-    {
-
-        if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-            UBGraphicsItemUndoCommand* udcmd = new UBGraphicsItemUndoCommand(this, mRemovedItems, mAddedItems); //deleted by the undoStack
-
-            if(UBApplication::undoStack)
-                UBApplication::undoStack->push(udcmd);
-        }
-
-        mRemovedItems.clear();
-        mAddedItems.clear();
-        accepted = true;
-    }
-
-    mInputDeviceIsPressed = false;
-
-    setDocumentUpdated();
-
-    return accepted;
-}
-
-void UBGraphicsScene::drawEraser(const QPointF &pPoint, bool isFirstDraw)
-{
-    qreal eraserWidth = UBSettings::settings()->currentEraserWidth();
-    eraserWidth /= UBApplication::boardController->systemScaleFactor();
-    eraserWidth /= UBApplication::boardController->currentZoom();
-
-    qreal eraserRadius = eraserWidth / 2;
-
-    // TODO UB 4.x optimize - no need to do that every time we move it
-    if (mEraser) {
-        mEraser->setRect(QRectF(pPoint.x() - eraserRadius, pPoint.y() - eraserRadius, eraserWidth, eraserWidth));
-
-        if(isFirstDraw) {
-          mEraser->show();
-        }
-    }
-}
-
-void UBGraphicsScene::drawPointer(const QPointF &pPoint, bool isFirstDraw)
-{
-    qreal pointerDiameter = UBSettings::pointerDiameter / UBApplication::boardController->currentZoom();
-    qreal pointerRadius = pointerDiameter / 2;
-
-    // TODO UB 4.x optimize - no need to do that every time we move it
-    if (mPointer) {
-        mPointer->setRect(QRectF(pPoint.x() - pointerRadius,
-                                 pPoint.y() - pointerRadius,
-                                 pointerDiameter,
-                                 pointerDiameter));
-        if(isFirstDraw) {
-            mPointer->show();
-        }
-    }
-}
-
-// call this function when user release mouse button in Magnifier mode
-void UBGraphicsScene::DisposeMagnifierQWidgets()
-{
-    if(magniferControlViewWidget)
-    {
-        magniferControlViewWidget->hide();
-        magniferControlViewWidget->setParent(0);
-        delete magniferControlViewWidget;
-        magniferControlViewWidget = NULL;
-    }
-
-    if(magniferDisplayViewWidget)
-    {
-        magniferDisplayViewWidget->hide();
-        magniferDisplayViewWidget->setParent(0);
-        delete magniferDisplayViewWidget;
-        magniferDisplayViewWidget = NULL;
-    }
-
-    // some time have crash here on access to app (when call from destructor when close sankore app)
-    // so i just add try/catch section here
-    try
-    {
-        UBApplication::app()->restoreOverrideCursor();
-    }
-    catch (...)
-    {
-    }
-
-}
-
-void UBGraphicsScene::moveTo(const QPointF &pPoint)
-{
-    mPreviousPoint = pPoint;
-    mPreviousWidth = -1.0;
-    mPreviousPolygonItems.clear();
-    mArcPolygonItem = 0;
-    mDrawWithCompass = false;
-}
-
-void UBGraphicsScene::drawLineTo(const QPointF &pEndPoint, const qreal &pWidth, bool bLineStyle)
-{
-    if (mPreviousWidth == -1.0)
-        mPreviousWidth = pWidth;
-
-    UBGraphicsPolygonItem *polygonItem = lineToPolygonItem(QLineF(mPreviousPoint, pEndPoint), pWidth);
-
-    if (!polygonItem->brush().isOpaque())
-    {
-        // -------------------------------------------------------------------------------------
-        // Here we substract the polygons that are overlapping in order to keep the transparency
-        // -------------------------------------------------------------------------------------
-        for (int i = 0; i < mPreviousPolygonItems.size(); i++)
-        {
-            UBGraphicsPolygonItem* previous = mPreviousPolygonItems.value(i);
-            polygonItem->subtract(previous);
-        }
-    }
-
-    if (bLineStyle)
-    {
-        QSetIterator<QGraphicsItem*> itItems(mAddedItems);
-
-        while (itItems.hasNext())
-        {
-            QGraphicsItem* item = itItems.next();
-            removeItem(item);
-        }
-        mAddedItems.clear();
-    }
-
-    mpLastPolygon = polygonItem;
-    mAddedItems.insert(polygonItem);
-
-    // Here we add the item to the scene
-    addItem(polygonItem);
-
-    if (mCurrentStroke)
-    {
-        polygonItem->setStroke(mCurrentStroke);
-    }
-
-    mPreviousPolygonItems.append(polygonItem);
-
-    if (!bLineStyle)
-    {
-        mPreviousPoint = pEndPoint;
-        mPreviousWidth = pWidth;
-    }
-}
-
-void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
-{
-    const QLineF line(mPreviousPoint, pEndPoint);
-
-    const QPolygonF eraserPolygon = UBGeometryUtils::lineToPolygon(line, pWidth);
-    const QRectF eraserBoundingRect = eraserPolygon.boundingRect();
-    const QRectF eraserInnerRect = UBGeometryUtils::lineToInnerRect(line, pWidth);
-
-    QPainterPath eraserPathVar;
-    eraserPathVar.addPolygon(eraserPolygon);
-    const QPainterPath eraserPath = eraserPathVar;
-
-    // Get all the items that are intersecting with the eraser path
-    QList<QGraphicsItem*> collidItems = items(eraserBoundingRect, Qt::IntersectsItemBoundingRect);
-
-    if(eDrawingMode_Vector == UBDrawingController::drawingController()->drawingMode()){
-        // NOTE: I decided to reuse the 'artistic' eraser all the time in order to have a better eraser
-        //       For this reason, the following code is not used but we will keep it for now, in case of
-        //       futur requirements.
-        foreach(QGraphicsItem* poly, collidItems){
-            UBGraphicsStrokesGroup* pGroup = dynamic_cast<UBGraphicsStrokesGroup*>(poly);
-            if(NULL != pGroup){
-                // TODO:    Ungroup the item, put back the polygons on the scene, deal with the
-                //          eraser's bounding rect, remove the polygons that must be removed
-                //          then create new groups.
-
-                // Get all substrokes and verify if they are part of the eraserpath then deal with it
-                foreach(QGraphicsItem* item, poly->childItems()){
-                    UBGraphicsPolygonItem* polygon = dynamic_cast<UBGraphicsPolygonItem*>(item);
-                    if(NULL != polygon){
-                        if(eraserBoundingRect.intersects(polygon->boundingRect())){
-                            pGroup->removeFromGroup(polygon);
-                            removeItem(polygon);
-                        }
-                    }
-                }
-            }
-        }
-    }else{
-        QSet<QGraphicsItem*> toBeAddedItems;
-        QSet<QGraphicsItem*> toBeRemovedItems;
-        int collidItemsSize = collidItems.size();
-        toBeAddedItems.reserve(collidItemsSize);
-        toBeRemovedItems.reserve(collidItemsSize);
-
-        if (mShouldUseOMP)
-        {
-    #pragma omp parallel for
-            for (int i = 0; i < collidItemsSize; i++)
-            {
-                UBGraphicsPolygonItem *collidingPolygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*>(collidItems.at(i));
-
-                if (NULL != collidingPolygonItem)
-                {
-                    UBGraphicsStrokesGroup* pGroup = collidingPolygonItem->strokesGroup();
-
-                    if(eraserInnerRect.contains(collidingPolygonItem->boundingRect()))
-                    {
-    #pragma omp critical
-                        // Put the entire polygon into the remove list
-                        toBeRemovedItems << collidingPolygonItem;
-                    }
-                    else
-                    {
-                        // Here we get the polygon of the colliding item
-
-                        QPolygonF collidingPolygon = collidingPolygonItem->polygon();
-                        QPainterPath collidingPath;
-                        collidingPath.addPolygon(collidingPolygon);
-
-                        // Then we substract the eraser path to the polygon and we simplify it
-                        /**/
-                        QTransform polyTransform = collidingPolygonItem->sceneTransform().inverted();
-                        QPointF mTrPrevPoint = polyTransform.map(mPreviousPoint);
-                        QPointF mTrEndPoint = polyTransform.map(pEndPoint);
-
-                        const QLineF trLine(mTrPrevPoint, mTrEndPoint);
-                        const QPolygonF trEraserPolygon = UBGeometryUtils::lineToPolygon(trLine, pWidth);
-
-                        QPainterPath trEraser;
-                        trEraser.addPolygon(trEraserPolygon);
-                        QPainterPath croppedPath = collidingPath.subtracted(trEraser);
-                        /**/
-
-                        // Original
-                        //QPainterPath croppedPath = collidingPath.subtracted(eraserPath);
-                        QPainterPath croppedPathSimplified = croppedPath.simplified();
-
-                        /*if (croppedPath == collidingPath)
-                        {
-                            // NOOP
-                            toBeRemovedItems << collidingPolygonItem;
-                        }
-                        else */if (croppedPathSimplified.isEmpty())
-                        {
-    #pragma omp critical
-                            // Put the entire polygon into the remove list if the eraser removes all its visible content
-                            toBeRemovedItems << collidingPolygonItem;
-                        }
-                        else
-                        {
-                            // Then we convert the remaining path to a list of polygons that will be converted in
-                            // UBGraphicsPolygonItems and added to the scene
-                            foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons())
-                            {
-                                UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol);
-    #pragma omp critical
-                                if(NULL != pGroup){
-                                    croppedPolygonItem->setStrokesGroup(pGroup);
-                                }
-                                // Add this new polygon to the 'added' list
-                                toBeAddedItems << croppedPolygonItem;
-                            }
-    #pragma omp critical
-                            // Remove the original polygonitem because it has been replaced by many smaller polygons
-                            toBeRemovedItems << collidingPolygonItem;
-                        }
-                    }
-                }
-            }
-        }
-        else
-        {
-            for (int i = 0; i < collidItemsSize; i++)
-            {
-                UBGraphicsPolygonItem *collidingPolygonItem = dynamic_cast<UBGraphicsPolygonItem*> (collidItems.at(i));
-
-                if (collidingPolygonItem)
-                {
-                    UBGraphicsStrokesGroup* pGroup = collidingPolygonItem->strokesGroup();
-
-                    if(eraserInnerRect.contains(collidingPolygonItem->boundingRect()))
-                    {
-                        toBeRemovedItems << collidingPolygonItem;
-                    }
-                    else
-                    {
-                        QPolygonF collidingPolygon = collidingPolygonItem->polygon();
-                        QPainterPath collidingPath;
-                        collidingPath.addPolygon(collidingPolygon);
-
-                        QPainterPath croppedPath = collidingPath.subtracted(eraserPath);
-                        QPainterPath croppedPathSimplified = croppedPath.simplified();
-
-                        if (croppedPath == collidingPath)
-                        {
-                            // NOOP
-                        }
-                        else if (croppedPathSimplified.isEmpty())
-                        {
-                            toBeRemovedItems << collidingPolygonItem;
-                        }
-                        else
-                        {
-                            foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons())
-                            {
-                                UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol);
-                                toBeAddedItems << croppedPolygonItem;
-                                if(NULL != pGroup){
-                                    croppedPolygonItem->setStrokesGroup(pGroup);
-                                }
-                            }
-
-                            toBeRemovedItems << collidingPolygonItem;
-                        }
-                    }
-                }
-            }
-        }
-
-        if(eDrawingMode_Vector == DRAWING_MODE){
-            foreach(QGraphicsItem* item, toBeRemovedItems){
-                UBGraphicsPolygonItem* poly = dynamic_cast<UBGraphicsPolygonItem*>(item);
-                if(NULL != poly){
-                    if(NULL != poly->strokesGroup()){
-                        poly->strokesGroup()->removeFromGroup(poly);
-                        removeItem(poly);
-                    }else{
-                        qDebug() << "No group present";
-                    }
-                }
-            }
-        }else{
-            removeItems(toBeRemovedItems);
-            mRemovedItems += toBeRemovedItems;
-        }
-
-        if(eDrawingMode_Vector == DRAWING_MODE){
-            foreach(QGraphicsItem* item, toBeAddedItems){
-                UBGraphicsPolygonItem* poly = dynamic_cast<UBGraphicsPolygonItem*>(item);
-                if(NULL != poly && NULL != poly->strokesGroup()){
-                    poly->setTransform(poly->strokesGroup()->transform());
-                    poly->strokesGroup()->addToGroup(poly);
-                }
-            }
-        }else{
-            addItems(toBeAddedItems);
-            mAddedItems += toBeAddedItems;
-        }
-    }
-
-    mPreviousPoint = pEndPoint;
-}
-
-void UBGraphicsScene::drawArcTo(const QPointF& pCenterPoint, qreal pSpanAngle)
-{
-    mDrawWithCompass = true;
-    if (mArcPolygonItem)
-    {
-        mAddedItems.remove(mArcPolygonItem);
-        removeItem(mArcPolygonItem);
-        mArcPolygonItem = 0;
-    }
-    qreal penWidth = UBSettings::settings()->currentPenWidth();
-    penWidth /= UBApplication::boardController->systemScaleFactor();
-    penWidth /= UBApplication::boardController->currentZoom();
-
-    mArcPolygonItem = arcToPolygonItem(QLineF(pCenterPoint, mPreviousPoint), pSpanAngle, penWidth);
-    mAddedItems.insert(mArcPolygonItem);
-    addItem(mArcPolygonItem);
-
-    setDocumentUpdated();
-}
-
-void UBGraphicsScene::setBackground(bool pIsDark, bool pIsCrossed)
-{
-    bool needRepaint = false;
-
-    if (mDarkBackground != pIsDark)
-    {
-        mDarkBackground = pIsDark;
-
-        if (mEraser)
-        {
-            if (mDarkBackground)
-            {
-                mEraser->setBrush(UBSettings::eraserBrushDarkBackground);
-                mEraser->setPen(UBSettings::eraserPenDarkBackground);
-            }
-            else
-            {
-                mEraser->setBrush(UBSettings::eraserBrushLightBackground);
-                mEraser->setPen(UBSettings::eraserPenLightBackground);
-            }
-        }
-
-        recolorAllItems();
-
-        needRepaint = true;
-        setModified(true);
-    }
-
-    if (mCrossedBackground != pIsCrossed)
-    {
-        mCrossedBackground = pIsCrossed;
-        needRepaint = true;
-        setModified(true);
-    }
-
-    if (needRepaint)
-    {
-        foreach(QGraphicsView* view, views())
-        {
-            view->resetCachedContent();
-        }
-    }
-}
-
-void UBGraphicsScene::setBackgroundZoomFactor(qreal zoom)
-{
-    mZoomFactor = zoom;
-}
-
-void UBGraphicsScene::setDrawingMode(bool bModeDesktop)
-{
-    mIsDesktopMode = bModeDesktop;
-}
-
-void UBGraphicsScene::recolorAllItems()
-{
-    QMap<QGraphicsView*, QGraphicsView::ViewportUpdateMode> previousUpdateModes;
-    foreach(QGraphicsView* view, views())
-    {
-        previousUpdateModes.insert(view, view->viewportUpdateMode());
-        view->setViewportUpdateMode(QGraphicsView::NoViewportUpdate);
-    }
-
-    for(int i = 0; i < mFastAccessItems.size(); i++)
-    {
-        UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast<UBGraphicsPolygonItem*> (mFastAccessItems.at(i));
-
-        if (polygonItem)
-        {
-            QColor color;
-
-            if (mDarkBackground)
-            {
-                color = polygonItem->colorOnDarkBackground();
-            }
-            else
-            {
-                color = polygonItem->colorOnLightBackground();
-            }
-
-            polygonItem->setColor(color);
-            continue;
-        }
-    }
-
-    foreach(QGraphicsView* view, views())
-    {
-        view->setViewportUpdateMode(previousUpdateModes.value(view));
-    }
-}
-
-UBGraphicsPolygonItem* UBGraphicsScene::lineToPolygonItem(const QLineF &pLine, const qreal &pWidth)
-{
-    UBGraphicsPolygonItem *polygonItem = new UBGraphicsPolygonItem(pLine, pWidth);
-
-    initPolygonItem(polygonItem);
-
-    return polygonItem;
-}
-
-void UBGraphicsScene::initPolygonItem(UBGraphicsPolygonItem* polygonItem)
-{
-    QColor colorOnDarkBG;
-    QColor colorOnLightBG;
-
-    if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Marker)
-    {
-        colorOnDarkBG = UBApplication::boardController->markerColorOnDarkBackground();
-        colorOnLightBG = UBApplication::boardController->markerColorOnLightBackground();
-    }
-    else // settings->stylusTool() == UBStylusTool::Pen + failsafe
-    {
-        colorOnDarkBG = UBApplication::boardController->penColorOnDarkBackground();
-        colorOnLightBG = UBApplication::boardController->penColorOnLightBackground();
-    }
-
-    if (mDarkBackground)
-    {
-        polygonItem->setColor(colorOnDarkBG);
-    }
-    else
-    {
-        polygonItem->setColor(colorOnLightBG);
-    }
-
-    polygonItem->setColorOnDarkBackground(colorOnDarkBG);
-    polygonItem->setColorOnLightBackground(colorOnLightBG);
-
-    polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic));
-}
-
-UBGraphicsPolygonItem* UBGraphicsScene::arcToPolygonItem(const QLineF& pStartRadius, qreal pSpanAngle, qreal pWidth)
-{
-    QPolygonF polygon = UBGeometryUtils::arcToPolygon(pStartRadius, pSpanAngle, pWidth);
-
-    return polygonToPolygonItem(polygon);
-}
-
-UBGraphicsPolygonItem* UBGraphicsScene::polygonToPolygonItem(const QPolygonF pPolygon)
-{
-    UBGraphicsPolygonItem *polygonItem = new UBGraphicsPolygonItem(pPolygon);
-
-    initPolygonItem(polygonItem);
-
-    return polygonItem;
-}
-
-void UBGraphicsScene::hideEraser()
-{
-    if (mEraser)
-        mEraser->hide();
-}
-
-void UBGraphicsScene::leaveEvent(QEvent * event)
-{
-    Q_UNUSED(event);
-    hideEraser();
-}
-
-UBGraphicsScene* UBGraphicsScene::sceneDeepCopy() const
-{
-    UBGraphicsScene* copy = new UBGraphicsScene(this->document());
-
-    copy->setBackground(this->isDarkBackground(), this->isCrossedBackground());
-    copy->setSceneRect(this->sceneRect());
-
-    if (this->mNominalSize.isValid())
-        copy->setNominalSize(this->mNominalSize);
-
-    QListIterator<QGraphicsItem*> itItems(this->mFastAccessItems);
-
-    QMap<UBGraphicsStroke*, UBGraphicsStroke*> groupClone;
-
-    while (itItems.hasNext())
-    {
-        QGraphicsItem* item = itItems.next();
-        QGraphicsItem* cloneItem = 0;
-
-        UBItem* ubItem = dynamic_cast<UBItem*>(item);
-        UBGraphicsStroke* stroke = dynamic_cast<UBGraphicsStroke*>(item);
-
-        if (ubItem && !stroke)
-        {
-            cloneItem = dynamic_cast<QGraphicsItem*>(ubItem->deepCopy());
-        }
-
-        if (cloneItem)
-        {
-            copy->addItem(cloneItem);
-
-            if (isBackgroundObject(item))
-            {
-                copy->setAsBackgroundObject(cloneItem);
-            }
-
-            if (this->mTools.contains(item))
-            {
-                copy->mTools << cloneItem;
-            }
-
-            UBGraphicsPolygonItem* polygon = dynamic_cast<UBGraphicsPolygonItem*>(item);
-
-            if(polygon)
-            {
-                UBGraphicsStroke* stroke = dynamic_cast<UBGraphicsStroke*>(item->parentItem());
-
-                if (stroke)
-                {
-                    UBGraphicsStroke* cloneStroke = groupClone.value(stroke);
-
-                    if (!cloneStroke)
-                    {
-                        cloneStroke = stroke->deepCopy();
-                        groupClone.insert(stroke, cloneStroke);
-                    }
-
-                    polygon->setStroke(cloneStroke);
-                }
-            }
-        }
-    }
-
-    // TODO UB 4.7 ... complete all members ?
-
-    return copy;
-}
-
-UBItem* UBGraphicsScene::deepCopy() const
-{
-    return sceneDeepCopy();
-}
-
-void UBGraphicsScene::clearItemsAndAnnotations()
-{
-    deselectAllItems();
-
-    QSet<QGraphicsItem*> emptyList;
-    QSet<QGraphicsItem*> removedItems;
-
-    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
-
-    while (itItems.hasNext())
-    {
-        QGraphicsItem* item = itItems.next();
-
-        if(!mTools.contains(item) && !isBackgroundObject(item))
-        {
-            removeItem(item);
-            removedItems << item;
-        }
-    }
-
-    // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
-    update(sceneRect());
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList);
-        UBApplication::undoStack->push(uc);
-    }
-
-    setDocumentUpdated();
-}
-
-void UBGraphicsScene::clearItems()
-{
-    deselectAllItems();
-
-    QSet<QGraphicsItem*> emptyList;
-    QSet<QGraphicsItem*> removedItems;
-
-    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
-
-    while (itItems.hasNext())
-    {
-        QGraphicsItem* item = itItems.next();
-
-        if (!item->parentItem())
-        {
-            UBGraphicsPolygonItem* pi = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
-
-            if(!pi && !mTools.contains(item) && !isBackgroundObject(item))
-            {
-                removeItem(item);
-                removedItems << item;
-            }
-        }
-    }
-
-    // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
-    update(sceneRect());
-
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList);
-        UBApplication::undoStack->push(uc);
-    }
-
-    setDocumentUpdated();
-}
-
-void UBGraphicsScene::clearAnnotations()
-{
-    QSet<QGraphicsItem*> emptyList;
-    QSet<QGraphicsItem*> removedItems;
-
-    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
-
-    while (itItems.hasNext())
-    {
-        QGraphicsItem* item = itItems.next();
-        UBGraphicsPolygonItem* pi = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item);
-        if (pi)
-        {
-            removeItem(item);
-            removedItems << item;
-        }
-    }
-
-    // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
-    update(sceneRect());
-
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList);
-        UBApplication::undoStack->push(uc);
-    }
-
-    setDocumentUpdated();
-}
-
-UBGraphicsPixmapItem* UBGraphicsScene::addPixmap(const QPixmap& pPixmap, const QPointF& pPos, qreal pScaleFactor, bool pUseAnimation)
-{
-    UBGraphicsPixmapItem* pixmapItem = new UBGraphicsPixmapItem();
-
-    pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true);
-    pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-    pixmapItem->setPixmap(pPixmap);
-
-    QPointF half(pPixmap.width() * pScaleFactor / 2, pPixmap.height()  * pScaleFactor / 2);
-    pixmapItem->setPos(pPos - half);
-
-    addItem(pixmapItem);
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, pixmapItem);
-        UBApplication::undoStack->push(uc);
-    }
-
-    pixmapItem->scale(pScaleFactor, pScaleFactor);
-
-    if (pUseAnimation)
-    {
-        pixmapItem->setOpacity(0);
-
-        QPropertyAnimation *animation = new QPropertyAnimation(pixmapItem, "opacity");
-        animation->setDuration(1000);
-        animation->setStartValue(0.0);
-        animation->setEndValue(1.0);
-
-        animation->start();
-    }
-
-    pixmapItem->show();
-    setDocumentUpdated();
-
-    return pixmapItem;
-}
-
-void UBGraphicsScene::textUndoCommandAdded(UBGraphicsTextItem *textItem)
-{
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsTextItemUndoCommand* uc = new UBGraphicsTextItemUndoCommand(textItem);
-        UBApplication::undoStack->push(uc);
-    }
-}
-
-UBGraphicsVideoItem* UBGraphicsScene::addVideo(const QUrl& pVideoFileUrl, bool shouldPlayAsap, const QPointF& pPos)
-{
-    UBGraphicsVideoItem* videoItem = new UBGraphicsVideoItem(pVideoFileUrl);
-
-    videoItem->setPos(pPos);
-
-    videoItem->setFlag(QGraphicsItem::ItemIsMovable, true);
-    videoItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-    addItem(videoItem);
-
-    videoItem->show();
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, videoItem);
-        UBApplication::undoStack->push(uc);
-    }
-
-    videoItem->mediaObject()->play();
-
-    if (!shouldPlayAsap)
-    {
-        videoItem->mediaObject()->pause();
-        videoItem->mediaObject()->seek(0);
-    }
-
-    setDocumentUpdated();
-
-    return videoItem;
-}
-
-UBGraphicsAudioItem* UBGraphicsScene::addAudio(const QUrl& pAudioFileUrl, bool shouldPlayAsap, const QPointF& pPos)
-{
-    UBGraphicsAudioItem* audioItem = new UBGraphicsAudioItem(pAudioFileUrl);
-
-    audioItem->setPos(pPos);
-
-    audioItem->setFlag(QGraphicsItem::ItemIsMovable, true);
-    audioItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-    addItem(audioItem);
-
-    audioItem->show();
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, audioItem);
-        UBApplication::undoStack->push(uc);
-    }
-
-    audioItem->mediaObject()->play();
-
-    if (!shouldPlayAsap)
-    {
-        audioItem->mediaObject()->pause();
-        audioItem->mediaObject()->seek(0);
-    }
-
-    setDocumentUpdated();
-
-    return audioItem;
-}
-
-UBGraphicsWidgetItem* UBGraphicsScene::addWidget(const QUrl& pWidgetUrl, const QPointF& pPos)
-{
-    int widgetType = UBAbstractWidget::widgetType(pWidgetUrl);
-
-    if(widgetType == UBWidgetType::Apple)
-    {
-        return addAppleWidget(pWidgetUrl, pPos);
-    }
-    else if(widgetType == UBWidgetType::W3C)
-    {
-        return addW3CWidget(pWidgetUrl, pPos);
-    }
-    else
-    {
-        qDebug() << "UBGraphicsScene::addWidget: Unknown widget Type";
-        return 0;
-    }
-}
-
-UBGraphicsAppleWidgetItem* UBGraphicsScene::addAppleWidget(const QUrl& pWidgetUrl, const QPointF& pPos)
-{
-    UBGraphicsAppleWidgetItem *appleWidget = new UBGraphicsAppleWidgetItem(pWidgetUrl);
-
-    addGraphicsWidget(appleWidget, pPos);
-
-    return appleWidget;
-}
-
-UBGraphicsW3CWidgetItem* UBGraphicsScene::addW3CWidget(const QUrl& pWidgetUrl, const QPointF& pPos, int widgetType)
-{
-    UBGraphicsW3CWidgetItem *w3CWidget = new UBGraphicsW3CWidgetItem(pWidgetUrl, 0, widgetType);
-
-    addGraphicsWidget(w3CWidget, pPos);
-
-    return w3CWidget;
-}
-
-void UBGraphicsScene::addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, const QPointF& pPos)
-{
-    graphicsWidget->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-    addItem(graphicsWidget);
-
-    qreal ssf = 1 / UBApplication::boardController->systemScaleFactor();
-
-    graphicsWidget->scale(ssf, ssf);
-
-    graphicsWidget->setPos(QPointF(pPos.x() - graphicsWidget->boundingRect().width() / 2,
-        pPos.y() - graphicsWidget->boundingRect().height() / 2));
-
-    if (graphicsWidget->widgetWebView()->canBeContent())
-    {
-//        graphicsWidget->widgetWebView()->loadMainHtml();
-
-        graphicsWidget->setSelected(true);
-        if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-            UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, graphicsWidget);
-            UBApplication::undoStack->push(uc);
-        }
-
-        setDocumentUpdated();
-    }
-    else
-    {
-        UBApplication::boardController->moveGraphicsWidgetToControlView(graphicsWidget);
-    }
-}
-
-UBGraphicsW3CWidgetItem* UBGraphicsScene::addOEmbed(const QUrl& pContentUrl, const QPointF& pPos)
-{
-    QStringList widgetPaths = UBPersistenceManager::persistenceManager()->allWidgets(UBSettings::settings()->applicationApplicationsLibraryDirectory());
-
-    UBGraphicsW3CWidgetItem *widget = 0;
-
-    foreach(QString widgetPath, widgetPaths)
-    {
-        if (widgetPath.contains("VideoPicker"))
-        {
-            widget = addW3CWidget(QUrl::fromLocalFile(widgetPath), pPos);
-
-            if (widget)
-            {
-                widget->setPreference("oembedUrl", pContentUrl.toString());
-                setDocumentUpdated();
-                break;
-            }
-        }
-    }
-
-    return widget;
-}
-
-UBGraphicsSvgItem* UBGraphicsScene::addSvg(const QUrl& pSvgFileUrl, const QPointF& pPos)
-{
-    QString path = pSvgFileUrl.toLocalFile();
-
-    UBGraphicsSvgItem *svgItem = new UBGraphicsSvgItem(path);
-
-    svgItem->setFlag(QGraphicsItem::ItemIsMovable, true);
-    svgItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-    qreal sscale = 1 / UBApplication::boardController->systemScaleFactor();
-    svgItem->scale(sscale, sscale);
-
-    QPointF half(svgItem->boundingRect().width() / 2, svgItem->boundingRect().height() / 2);
-    svgItem->setPos(pPos - half);
-    svgItem->show();
-
-    addItem(svgItem);
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, svgItem);
-        UBApplication::undoStack->push(uc);
-    }
-
-    setDocumentUpdated();
-
-    return svgItem;
-}
-
-UBGraphicsTextItem* UBGraphicsScene::addText(const QString& pString, const QPointF& pTopLeft)
-{
-    return addTextWithFont(pString, pTopLeft, UBSettings::settings()->fontPixelSize()
-            , UBSettings::settings()->fontFamily(), UBSettings::settings()->isBoldFont()
-            , UBSettings::settings()->isItalicFont());
-}
-
-UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, const QString& objectName)
-{
-    UBGraphicsTextItem* textItem = 0;
-    bool found = false;
-    //looking for a previous such item text
-    for(int i=0; i < mFastAccessItems.count() && !found ; i += 1){
-        UBGraphicsTextItem* currentItem = dynamic_cast<UBGraphicsTextItem*>(mFastAccessItems.at(i));
-        if(currentItem && (currentItem->objectName() == objectName || currentItem->toPlainText() == pString)){
-            // The second condition is necessary because the object name isn't stored. On reopeining the file we
-            // need another rule than the objectName
-            textItem = currentItem;
-            found=true;
-            if(currentItem->objectName() != objectName)
-                textItem->setObjectName(objectName);
-        }
-    }
-    if(!textItem){
-        textItem = addTextWithFont(pString,QPointF(0,0) ,72,UBSettings::settings()->fontFamily(),true,false);
-        textItem->setObjectName(objectName);
-    }
-
-    textItem->setPlainText(pString);
-    textItem->adjustSize();
-    QSizeF size = textItem->size();
-    textItem->setPos(QPointF(-size.width()/2.0,-size.height()/2.0));
-    return textItem;
-}
-
-UBGraphicsTextItem* UBGraphicsScene::addTextWithFont(const QString& pString, const QPointF& pTopLeft
-            , int pointSize, const QString& fontFamily, bool bold, bool italic)
-{
-    UBGraphicsTextItem *textItem = new UBGraphicsTextItem();
-    textItem->setPlainText(pString);
-
-    QFont font = textItem->font();
-
-    if (fontFamily == "")
-    {
-        font = QFont(UBSettings::settings()->fontFamily());
-    }
-    else
-    {
-        font = QFont(fontFamily);
-    }
-
-    if (pointSize < 1)
-    {
-        font.setPixelSize(UBSettings::settings()->fontPixelSize());
-    }
-    else
-    {
-        font.setPointSize(pointSize);
-    }
-
-    font.setBold(bold);
-    font.setItalic(italic);
-    textItem->setFont(font);
-
-    QFontMetrics fi(font);
-    QRect br = fi.boundingRect(pString);
-
-    textItem->setTextWidth(qMax((qreal)br.width() + 50, (qreal)200));
-    textItem->setTextHeight(br.height());
-
-    addItem(textItem);
-
-    textItem->setPos(pTopLeft);
-
-    textItem->show();
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem);
-        UBApplication::undoStack->push(uc);
-    }
-
-    connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)), this, SLOT(textUndoCommandAdded(UBGraphicsTextItem *)));
-
-    textItem->setSelected(true);
-    textItem->setFocus();
-
-    setDocumentUpdated();
-
-    return textItem;
-}
-
-UBGraphicsTextItem *UBGraphicsScene::addTextHtml(const QString &pString, const QPointF& pTopLeft)
-{
-    UBGraphicsTextItem *textItem = new UBGraphicsTextItem();
-    textItem->setPlainText("");
-    textItem->setHtml(pString);
-
-    addItem(textItem);
-    textItem->show();
-
-    if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented
-        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem);
-        UBApplication::undoStack->push(uc);
-    }
-
-    connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)),
-            this,     SLOT(textUndoCommandAdded(UBGraphicsTextItem *)));
-
-    textItem->setFocus();
-
-    setDocumentUpdated();
-    textItem->setPos(pTopLeft);
-
-    return textItem;
-}
-
-void UBGraphicsScene::addItem(QGraphicsItem* item)
-{
-    setModified(true);
-    UBCoreGraphicsScene::addItem(item);
-
-    UBGraphicsItem::assignZValue(item, mZLayerController->generateZLevel(item));
-
-    if (!mTools.contains(item))
-      ++mItemCount;
-
-    mFastAccessItems << item;
-}
-
-void UBGraphicsScene::addItems(const QSet<QGraphicsItem*>& items)
-{
-    setModified(true);
-
-    foreach(QGraphicsItem* item, items) {
-        UBCoreGraphicsScene::addItem(item);
-        UBGraphicsItem::assignZValue(item, mZLayerController->generateZLevel(item));
-    }
-
-    mItemCount += items.size();
-
-    mFastAccessItems += items.toList();
-}
-
-void UBGraphicsScene::removeItem(QGraphicsItem* item)
-{
-    setModified(true);
-    UBCoreGraphicsScene::removeItem(item);
-
-    if (!mTools.contains(item))
-      --mItemCount;
-
-    mFastAccessItems.removeAll(item);
-}
-
-void UBGraphicsScene::removeItems(const QSet<QGraphicsItem*>& items)
-{
-    setModified(true);
-
-    foreach(QGraphicsItem* item, items)
-        UBCoreGraphicsScene::removeItem(item);
-
-    mItemCount -= items.size();
-
-    foreach(QGraphicsItem* item, items)
-        mFastAccessItems.removeAll(item);
-}
-
-void UBGraphicsScene::deselectAllItems()
-{
-    foreach(QGraphicsItem *gi, selectedItems ())
-    {
-        gi->setSelected(false);
-    }
-}
-
-bool UBGraphicsScene::isEmpty() const
-{
-    return mItemCount == 0;
-}
-
-QGraphicsItem* UBGraphicsScene::setAsBackgroundObject(QGraphicsItem* item, bool pAdaptTransformation, bool pExpand)
-{
-    if (mBackgroundObject)
-    {
-        removeItem(mBackgroundObject);
-        mBackgroundObject = 0;
-    }
-
-    if (item)
-    {
-        item->setFlag(QGraphicsItem::ItemIsSelectable, false);
-        item->setFlag(QGraphicsItem::ItemIsMovable, false);
-        item->setAcceptedMouseButtons(Qt::NoButton);
-        item->setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::FixedBackground);
-
-        UBGraphicsItem::assignZValue(item, mZLayerController->generateZLevel(itemLayerType::BackgroundItem));
-
-        if (pAdaptTransformation)
-        {
-            item = scaleToFitDocumentSize(item, true, 0, pExpand);
-        }
-
-        if (item->scene() != this)
-            addItem(item);
-
-        mBackgroundObject = item;
-
-    }
-
-    return item;
-}
-
-QRectF UBGraphicsScene::normalizedSceneRect(qreal ratio)
-{
-
-    QRectF normalizedRect(nominalSize().width() / -2, nominalSize().height() / -2,
-        nominalSize().width(), nominalSize().height());
-
-    foreach(QGraphicsItem* gi, mFastAccessItems)
-    {
-        if(gi && gi->isVisible() && !mTools.contains(gi))
-        {
-            normalizedRect = normalizedRect.united(gi->sceneBoundingRect());
-        }
-    }
-
-    if (ratio > 0.0)
-    {
-        qreal normalizedRectRatio = normalizedRect.width() / normalizedRect.height();
-
-        if (normalizedRectRatio > ratio)
-        {
-            //the normalized rect is too wide, we increase height
-            qreal newHeight = normalizedRect.width() / ratio;
-            qreal offset = (newHeight - normalizedRect.height()) / 2;
-            normalizedRect.setY(normalizedRect.y() - offset);
-            normalizedRect.setHeight(newHeight);
-        }
-        else if (normalizedRectRatio < ratio)
-        {
-            //the normalized rect is too high, we increase the width
-            qreal newWidth = normalizedRect.height() * ratio;
-            qreal offset = (newWidth - normalizedRect.width()) / 2;
-            normalizedRect.setX(normalizedRect.x() - offset);
-            normalizedRect.setWidth(newWidth);
-        }
-    }
-
-    return normalizedRect;
-}
-
-void UBGraphicsScene::setDocument(UBDocumentProxy* pDocument)
-{
-    if (pDocument != mDocument)
-    {
-        if (mDocument)
-        {
-            setModified(true);
-        }
-
-        mDocument = pDocument;
-        setParent(pDocument);
-    }
-}
-
-QGraphicsItem* UBGraphicsScene::scaleToFitDocumentSize(QGraphicsItem* item, bool center, int margin, bool expand)
-{
-    int maxWidth = mNominalSize.width() - (margin * 2);
-    int maxHeight = mNominalSize.height() - (margin * 2);
-
-    QRectF size = item->sceneBoundingRect();
-
-    if (expand || size.width() > maxWidth || size.height() > maxHeight)
-    {
-        qreal ratio = qMin(maxWidth / size.width(), maxHeight / size.height());
-
-        item->scale(ratio, ratio);
-
-        if(center)
-        {
-            item->setPos(item->sceneBoundingRect().width() / -2.0,
-                item->sceneBoundingRect().height() / -2.0);
-        }
-    }
-
-    return item;
-}
-
-void UBGraphicsScene::addRuler(QPointF center)
-{
-    UBGraphicsRuler* ruler = new UBGraphicsRuler(); // mem : owned and destroyed by the scene
-    mTools << ruler;
-    QRectF rect = ruler->rect();
-    ruler->setRect(center.x() - rect.width()/2, center.y() - rect.height()/2, rect.width(), rect.height());
-
-    ruler->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
-
-    addItem(ruler);
-
-    ruler->setVisible(true);
-    setModified(true);
-}
-
-void UBGraphicsScene::addProtractor(QPointF center)
-{
-    // Protractor
-
-    UBGraphicsProtractor* protractor = new UBGraphicsProtractor(); // mem : owned and destroyed by the scene
-    mTools << protractor;
-
-    protractor->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
-
-    addItem(protractor);
-
-    QPointF itemSceneCenter = protractor->sceneBoundingRect().center();
-    protractor->moveBy(center.x() - itemSceneCenter.x(), center.y() - itemSceneCenter.y());
-
-    protractor->setVisible(true);
-    setModified(true);
-}
-
-void UBGraphicsScene::addTriangle(QPointF center)
-{
-    // Triangle
-
-    UBGraphicsTriangle* triangle = new UBGraphicsTriangle(); // mem : owned and destroyed by the scene
-    mTools << triangle;
-
-    triangle->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
-
-    addItem(triangle);
-
-    QPointF itemSceneCenter = triangle->sceneBoundingRect().center();
-    triangle->moveBy(center.x() - itemSceneCenter.x(), center.y() - itemSceneCenter.y());
-
-    triangle->setVisible(true);
-    setModified(true);
-}
-
-void UBGraphicsScene::addMagnifier(UBMagnifierParams params)
-{
-    // can have only one magnifier at one time
-    if(magniferControlViewWidget) return;
-
-    QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer());
-    QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView();
-    QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView();
-
-    QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
-
-    int cvW = cView->width();
-    int dvW = dView->width();
-    qreal wCoeff = (qreal)dvW / (qreal)cvW;
-
-    int cvH = cView->height();
-    int dvH = dView->height();
-    qreal hCoeff = (qreal)dvH / (qreal)cvH;
-
-    QPoint ccPoint(params.x,params.y);
-    QPoint globalPoint = cContainer->mapToGlobal(ccPoint);
-    QPoint cvPoint = cView->mapFromGlobal(globalPoint);
-    QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y());
-
-    magniferControlViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->controlContainer()), true);
-    magniferControlViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
-    magniferControlViewWidget->setMoveView((QWidget*)(UBApplication::boardController->controlContainer()));
-    magniferControlViewWidget->setSize(params.sizePercentFromScene);
-    magniferControlViewWidget->setZoom(params.zoom);
-
-    magniferDisplayViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->displayView()), false);
-    magniferDisplayViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
-    magniferDisplayViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->displayView());
-    magniferDisplayViewWidget->setSize(params.sizePercentFromScene);
-    magniferDisplayViewWidget->setZoom(params.zoom);
-
-    magniferControlViewWidget->grabNMove(globalPoint, globalPoint, true);
-    magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, true);
-    magniferControlViewWidget->show();
-    magniferDisplayViewWidget->show();
-
-    connect(magniferControlViewWidget, SIGNAL(magnifierMoved_Signal(QPoint)), this, SLOT(moveMagnifier(QPoint)));
-    connect(magniferControlViewWidget, SIGNAL(magnifierClose_Signal()), this, SLOT(closeMagnifier()));
-    connect(magniferControlViewWidget, SIGNAL(magnifierZoomIn_Signal()), this, SLOT(zoomInMagnifier()));
-    connect(magniferControlViewWidget, SIGNAL(magnifierZoomOut_Signal()), this, SLOT(zoomOutMagnifier()));
-    connect(magniferControlViewWidget, SIGNAL(magnifierResized_Signal(qreal)), this, SLOT(resizedMagnifier(qreal)));
-
-    setModified(true);
-}
-
-void UBGraphicsScene::moveMagnifier(QPoint newPos)
-{
-    QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer());
-    QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView();
-    QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView();
-
-    QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
-
-    int cvW = cView->width();
-    int dvW = dView->width();
-    qreal wCoeff = (qreal)dvW / (qreal)cvW;
-
-    int cvH = cView->height();
-    int dvH = dView->height();
-    qreal hCoeff = (qreal)dvH / (qreal)cvH;
-
-    QPoint globalPoint = cContainer->mapToGlobal(newPos);
-    QPoint cvPoint = cView->mapFromGlobal(globalPoint);
-    QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y());
-
-    magniferControlViewWidget->grabNMove(globalPoint, globalPoint, false, false);
-    magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, false, true);
-
-    setModified(true);
-}
-
-void UBGraphicsScene::closeMagnifier()
-{
-    DisposeMagnifierQWidgets();
-}
-
-void UBGraphicsScene::zoomInMagnifier()
-{
-    if(magniferControlViewWidget->params.zoom < 8)
-    {
-        magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom + 0.5);
-        magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom + 0.5);
-    }
-}
-
-void UBGraphicsScene::zoomOutMagnifier()
-{
-    if(magniferControlViewWidget->params.zoom > 1)
-    {
-        magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom - 0.5);
-        magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom - 0.5);
-    }
-}
-
-void UBGraphicsScene::resizedMagnifier(qreal newPercent)
-{
-    if(newPercent > 18 && newPercent < 50)
-    {
-        magniferControlViewWidget->setSize(newPercent);
-        magniferControlViewWidget->grabPoint();
-        magniferDisplayViewWidget->setSize(newPercent);
-        magniferDisplayViewWidget->grabPoint();
-    }
-}
-
-void UBGraphicsScene::addCompass(QPointF center)
-{
-    UBGraphicsCompass* compass = new UBGraphicsCompass(); // mem : owned and destroyed by the scene
-    mTools << compass;
-    addItem(compass);
-
-    QRectF rect = compass->rect();
-    compass->setRect(center.x() - rect.width() / 2, center.y() - rect.height() / 2, rect.width(), rect.height());
-
-    compass->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
-
-    compass->setVisible(true);
-    setModified(true);
-}
-
-void UBGraphicsScene::addCache()
-{
-    UBGraphicsCache* cache = new UBGraphicsCache();
-    mTools << cache;
-
-    addItem(cache);
-
-    cache->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
-
-    cache->setVisible(true);
-    cache->setSelected(true);
-    UBApplication::boardController->notifyCache(true);
-    UBApplication::boardController->notifyPageChanged();
-}
-
-void UBGraphicsScene::addMask(const QPointF &center)
-{
-    UBGraphicsCurtainItem* curtain = new UBGraphicsCurtainItem(); // mem : owned and destroyed by the scene
-    mTools << curtain;
-
-    addItem(curtain);
-
-    QRectF rect = UBApplication::boardController->activeScene()->normalizedSceneRect();
-    rect.setRect(center.x() - rect.width()/4, center.y() - rect.height()/4, rect.width()/2 , rect.height()/2);
-    curtain->setRect(rect);
-    curtain->setVisible(true);
-    curtain->setSelected(true);
-    setModified(true);
-}
-
-void UBGraphicsScene::setRenderingQuality(UBItem::RenderingQuality pRenderingQuality)
-{
-    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
-
-    while (itItems.hasNext())
-    {
-        QGraphicsItem *gItem =  itItems.next();
-
-        UBItem *ubItem = dynamic_cast<UBItem*>(gItem);
-
-        if (ubItem)
-        {
-            ubItem->setRenderingQuality(pRenderingQuality);
-        }
-    }
-}
-
-QList<QUrl> UBGraphicsScene::relativeDependencies() const
-{
-    QList<QUrl> relativePathes;
-
-    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
-
-    while (itItems.hasNext())
-    {
-        UBGraphicsVideoItem *videoItem = qgraphicsitem_cast<UBGraphicsVideoItem*> (itItems.next());
-
-        if (videoItem && videoItem->mediaFileUrl().isRelative())
-        {
-            relativePathes << videoItem->mediaFileUrl();
-        }
-    }
-
-    return relativePathes;
-}
-
-QSize UBGraphicsScene::nominalSize()
-{
-    if (mDocument && !mNominalSize.isValid())
-    {
-        mNominalSize = mDocument->defaultDocumentSize();
-    }
-
-    return mNominalSize;
-}
-
-void UBGraphicsScene::setNominalSize(const QSize& pSize)
-{
-    if (nominalSize() != pSize)
-    {
-        mNominalSize = pSize;
-        emit pageSizeChanged();
-
-        if(mDocument)
-            mDocument->setDefaultDocumentSize(pSize);
-
-    }
-}
-
-void UBGraphicsScene::setNominalSize(int pWidth, int pHeight)
-{
-     setNominalSize(QSize(pWidth, pHeight));
-}
-
-void UBGraphicsScene::setSelectedZLevel(QGraphicsItem * item)
-{
-    item->setZValue(mZLayerController->generateZLevel(itemLayerType::SelectedItem));
-}
-
-void UBGraphicsScene::setOwnZlevel(QGraphicsItem *item)
-{
-    item->setZValue(item->data(UBGraphicsItemData::ItemOwnZValue).toReal());
-}
-
-void UBGraphicsScene::groupItems(QList<QGraphicsItem *> &itemList)
-{
-    foreach (QGraphicsItem *item, itemList) {
-        qDebug() << "selected item found";
-        item->setSelected(false);
-    }
-}
-
-qreal UBGraphicsScene::changeZLevelTo(QGraphicsItem *item, UBZLayerController::moveDestination dest)
-{
-    return mZLayerController->changeZLevelTo(item, dest);
-}
-
-QGraphicsItem* UBGraphicsScene::rootItem(QGraphicsItem* item) const
-{
-    QGraphicsItem* root = item;
-
-    while (root->parentItem())
-    {
-        root = root->parentItem();
-    }
-
-    return root;
-}
-
-void UBGraphicsScene::drawItems (QPainter * painter, int numItems,
-        QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget)
-{
-    if (mRenderingContext == NonScreen || mRenderingContext == PdfExport)
-    {
-        int count = 0;
-
-        QGraphicsItem** itemsFiltered = new QGraphicsItem*[numItems];
-        QStyleOptionGraphicsItem *optionsFiltered = new QStyleOptionGraphicsItem[numItems];
-
-        for (int i = 0; i < numItems; i++)
-        {
-            if (!mTools.contains(rootItem(items[i])))
-            {
-                UBGraphicsPDFItem *pdfItem = qgraphicsitem_cast<UBGraphicsPDFItem*> (items[i]);
-                if(!pdfItem || mRenderingContext == NonScreen)
-                {
-                    itemsFiltered[count] = items[i];
-                    optionsFiltered[count] = options[i];
-                    count++;
-                }
-            }
-        }
-
-        QGraphicsScene::drawItems(painter, count, itemsFiltered, optionsFiltered, widget);
-
-        delete[] optionsFiltered;
-        delete[] itemsFiltered;
-
-    }
-    else if (mRenderingContext == Podcast)
-    {
-        int count = 0;
-
-        QGraphicsItem** itemsFiltered = new QGraphicsItem*[numItems];
-        QStyleOptionGraphicsItem *optionsFiltered = new QStyleOptionGraphicsItem[numItems];
-
-        for (int i = 0; i < numItems; i++)
-        {
-            bool ok;
-            int itemLayerType = items[i]->data(UBGraphicsItemData::ItemLayerType).toInt(&ok);
-            if (ok && (itemLayerType >= UBItemLayerType::FixedBackground && itemLayerType <= UBItemLayerType::Tool))
-            {
-                itemsFiltered[count] = items[i];
-                optionsFiltered[count] = options[i];
-                count++;
-            }
-        }
-
-        QGraphicsScene::drawItems(painter, count, itemsFiltered, optionsFiltered, widget);
-
-        delete[] optionsFiltered;
-        delete[] itemsFiltered;
-
-    }
-    else
-    {
-        QGraphicsScene::drawItems(painter, numItems, items, options, widget);
-    }
-}
-
-void UBGraphicsScene::drawBackground(QPainter *painter, const QRectF &rect)
-{
-    if (mIsDesktopMode)
-    {
-        QGraphicsScene::drawBackground (painter, rect);
-        return;
-    }
-    bool darkBackground = isDarkBackground ();
-
-    if (darkBackground)
-    {
-      painter->fillRect (rect, QBrush (QColor (Qt::black)));
-    }
-    else
-    {
-      painter->fillRect (rect, QBrush (QColor (Qt::white)));
-    }
-
-    if (mZoomFactor > 0.5)
-    {
-        QColor bgCrossColor;
-
-        if (darkBackground)
-            bgCrossColor = UBSettings::crossDarkBackground;
-        else
-            bgCrossColor = UBSettings::crossLightBackground;
-        if (mZoomFactor < 1.0)
-        {
-            int alpha = 255 * mZoomFactor / 2;
-            bgCrossColor.setAlpha (alpha); // fade the crossing on small zooms
-        }
-
-        painter->setPen (bgCrossColor);
-
-        if (isCrossedBackground())
-        {
-            qreal firstY = ((int) (rect.y () / UBSettings::crossSize)) * UBSettings::crossSize;
-
-            for (qreal yPos = firstY; yPos < rect.y () + rect.height (); yPos += UBSettings::crossSize)
-            {
-                painter->drawLine (rect.x (), yPos, rect.x () + rect.width (), yPos);
-            }
-
-            qreal firstX = ((int) (rect.x () / UBSettings::crossSize)) * UBSettings::crossSize;
-
-            for (qreal xPos = firstX; xPos < rect.x () + rect.width (); xPos += UBSettings::crossSize)
-            {
-                painter->drawLine (xPos, rect.y (), xPos, rect.y () + rect.height ());
-            }
-        }
-    }
-}
-
-void UBGraphicsScene::keyReleaseEvent(QKeyEvent * keyEvent)
-{
-
-    QList<QGraphicsItem*> si = selectedItems();
-
-    if ((si.size() > 0) && (keyEvent->isAccepted()))
-    {
-#ifdef Q_OS_MAC
-        if (keyEvent->key() == Qt::Key_Backspace)
-#else
-        if (keyEvent->matches(QKeySequence::Delete))
-#endif
-        {
-            foreach(QGraphicsItem* item, si)
-            {
-                switch (item->type())
-                {
-                case UBGraphicsW3CWidgetItem::Type:
-                    {
-                        UBGraphicsW3CWidgetItem *wc3_widget = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
-                        if (0 != wc3_widget)
-                        if (!wc3_widget->hasFocus())
-                            wc3_widget->remove();
-                        break;
-                    }
-                case UBGraphicsAppleWidgetItem::Type:
-                    {
-                        UBGraphicsAppleWidgetItem *Apple_widget = dynamic_cast<UBGraphicsAppleWidgetItem*>(item);
-                        if (0 !=Apple_widget)
-                        if (!Apple_widget->hasFocus())
-                            Apple_widget->remove();
-                        break;
-                    }
-                case UBGraphicsTextItem::Type:
-                    {
-                        UBGraphicsTextItem *text_item = dynamic_cast<UBGraphicsTextItem*>(item);
-                        if (0 != text_item)
-                        if (!text_item->hasFocus())
-                            text_item->remove();
-                        break;
-                    }
-
-                default:
-                    {
-                        UBGraphicsItem *ubgi = dynamic_cast<UBGraphicsItem*>(item);
-                        if (0 != ubgi)
-                            ubgi->remove();
-                        else
-                            UBCoreGraphicsScene::removeItem(item);
-                    }
-                }
-            }
-        }
-
-        keyEvent->accept();
-    }
-
-    QGraphicsScene::keyReleaseEvent(keyEvent);
-}
-
-void UBGraphicsScene::setDocumentUpdated()
-{
-    if (document())
-        document()->setMetaData(UBSettings::documentUpdatedAt
-                , UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
-}
-
-void UBGraphicsScene::createEraiser()
-{
-    mEraser = new QGraphicsEllipseItem(); // mem : owned and destroyed by the scene
-    mEraser->setRect(QRect(0, 0, 0, 0));
-    mEraser->setVisible(false);
-
-    mEraser->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
-    mEraser->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Eraiser)); //Necessary to set if we want z value to be assigned correctly
-
-    mTools << mEraser;
-    addItem(mEraser);
-
-}
-
-void UBGraphicsScene::createPointer()
-{
-    mPointer = new QGraphicsEllipseItem();  // mem : owned and destroyed by the scene
-    mPointer->setRect(QRect(0, 0, 20, 20));
-    mPointer->setVisible(false);
-
-    mPointer->setPen(Qt::NoPen);
-    mPointer->setBrush(QBrush(QColor(255, 0, 0, 186)));
-
-    mPointer->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
-    mPointer->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Pointer)); //Necessary to set if we want z value to be assigned correctly
-
-    mTools << mPointer;
-    addItem(mPointer);
-}
-
-void UBGraphicsScene::setToolCursor(int tool)
-{
-    if (tool != (int)UBStylusTool::Selector
-            && tool != (int)UBStylusTool::Text)
-    {
-        deselectAllItems();
-    }
-
-    if (tool != (int)UBStylusTool::Eraser)
-    {
-        hideEraser();
-    }
-}
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBGraphicsScene.h"
+
+#include <QtGui>
+#include <QtWebKit>
+#include <QtSvg>
+#include <QGraphicsView>
+
+#include "frameworks/UBGeometryUtils.h"
+#include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+#include "core/UBApplicationController.h"
+#include "core/UBDisplayManager.h"
+#include "core/UBPersistenceManager.h"
+
+#include "gui/UBMagnifer.h"
+#include "gui/UBMainWindow.h"
+#include "gui/UBToolWidget.h"
+
+#include "tools/UBGraphicsRuler.h"
+#include "tools/UBGraphicsProtractor.h"
+#include "tools/UBGraphicsCompass.h"
+#include "tools/UBGraphicsTriangle.h"
+#include "tools/UBGraphicsCurtainItem.h"
+#include "tools/UBGraphicsCache.h"
+#include "tools/UBGraphicsAristo.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "board/UBBoardController.h"
+#include "board/UBDrawingController.h"
+#include "board/UBBoardView.h"
+
+#include "UBGraphicsItemUndoCommand.h"
+#include "UBGraphicsItemGroupUndoCommand.h"
+#include "UBGraphicsTextItemUndoCommand.h"
+#include "UBGraphicsProxyWidget.h"
+#include "UBGraphicsPixmapItem.h"
+#include "UBGraphicsSvgItem.h"
+#include "UBGraphicsPolygonItem.h"
+#include "UBGraphicsMediaItem.h"
+#include "UBGraphicsWidgetItem.h"
+#include "UBGraphicsPDFItem.h"
+#include "UBGraphicsTextItem.h"
+#include "UBGraphicsStrokesGroup.h"
+
+#include "domain/UBGraphicsGroupContainerItem.h"
+
+#include "UBGraphicsStroke.h"
+
+#include "core/memcheck.h"
+
+qreal UBZLayerController::errorNumber = -20000001.0;
+
+UBZLayerController::UBZLayerController(QGraphicsScene *scene) :
+    mScene(scene)
+
+{
+    scopeMap.insert(itemLayerType::NoLayer,        ItemLayerTypeData( errorNumber, errorNumber));
+    scopeMap.insert(itemLayerType::BackgroundItem, ItemLayerTypeData(-10000000.0, -10000000.0 ));
+    scopeMap.insert(itemLayerType::ObjectItem,     ItemLayerTypeData(-10000000.0,  0.0        ));
+    scopeMap.insert(itemLayerType::DrawingItem,    ItemLayerTypeData( 0.0,         10000000.0 ));
+    scopeMap.insert(itemLayerType::ToolItem,       ItemLayerTypeData( 10000000.0,  10000100.0 ));
+    scopeMap.insert(itemLayerType::CppTool,        ItemLayerTypeData( 10000100.0,  10000200.0 ));
+    scopeMap.insert(itemLayerType::Curtain,        ItemLayerTypeData( 10000200.0,  10001000.0 ));
+    scopeMap.insert(itemLayerType::Eraiser,        ItemLayerTypeData( 10001000.0,  10001100.0 ));
+    scopeMap.insert(itemLayerType::Pointer,        ItemLayerTypeData( 10001100.0,  10001200.0 ));
+    scopeMap.insert(itemLayerType::Cache,          ItemLayerTypeData( 10001300.0,  10001400.0 ));
+
+    scopeMap.insert(itemLayerType::SelectedItem,   ItemLayerTypeData( 10001000.0,  10001000.0 ));
+}
+
+qreal UBZLayerController::generateZLevel(itemLayerType::Enum key)
+{
+
+    if (!scopeMap.contains(key)) {
+        qDebug() << "Number is out of layer scope";
+        return errorNumber;
+    }
+
+    qreal result = scopeMap.value(key).curValue;
+    qreal top = scopeMap.value(key).topLimit;
+    qreal incrementalStep = scopeMap.value(key).incStep;
+
+    result += incrementalStep;
+    if (result >= top) {
+        // If not only one variable presents in the scope, notify that values for scope are over
+        if (scopeMap.value(key).topLimit != scopeMap.value(key).bottomLimit) {
+            qDebug() << "new values are over for the scope" << key;
+        }
+        result = top - incrementalStep;
+    }
+
+    scopeMap[key].curValue = result;
+
+    return result;
+}
+qreal UBZLayerController::generateZLevel(QGraphicsItem *item)
+{
+    qreal result = errorNumber;
+    itemLayerType::Enum type = static_cast<itemLayerType::Enum>(item->data(UBGraphicsItemData::itemLayerType).toInt());
+
+    if (validLayerType(type)) {
+        result =  generateZLevel(type);
+    }
+
+    return result;
+}
+
+qreal UBZLayerController::changeZLevelTo(QGraphicsItem *item, moveDestination dest)
+{
+    itemLayerType::Enum curItemLayerType = typeForData(item);
+    if (curItemLayerType == itemLayerType::NoLayer) {
+        qDebug() << "item's layer is out of the scope. Can't implement z-layer changing operation";
+        return errorNum();
+    }
+
+    //select only items wiht the same z-level as item's one and push it to sortedItems QMultiMap
+    QMultiMap<qreal, QGraphicsItem*> sortedItems;
+    if (mScene->items().count()) {
+        foreach (QGraphicsItem *tmpItem, mScene->items()) {
+            if (typeForData(tmpItem) == curItemLayerType) {
+
+                sortedItems.insert(tmpItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), tmpItem);
+            }
+        }
+    }
+
+    //If only one item itself - do nothing, return it's z-value
+    if (sortedItems.count() == 1 && sortedItems.values().first() == item) {
+        qDebug() << "only one item exists in layer. Have nothing to change";
+        return item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+    }
+
+    QMapIterator<qreal, QGraphicsItem*>iCurElement(sortedItems);
+
+    if (dest == up) {
+        if (iCurElement.findNext(item)) {
+            if (iCurElement.hasNext()) {
+                qreal nextZ = iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+                UBGraphicsItem::assignZValue(iCurElement.peekNext().value(), item->data(UBGraphicsItemData::ItemOwnZValue).toReal());
+                UBGraphicsItem::assignZValue(item, nextZ);
+
+                iCurElement.next();
+
+                while (iCurElement.hasNext() && iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal() == nextZ) {
+                    UBGraphicsItem::assignZValue(iCurElement.next().value(), nextZ);
+                }
+            }
+        }
+
+    } else if (dest == top) {
+        if (iCurElement.findNext(item)) {
+            if (iCurElement.hasNext()) {
+                UBGraphicsItem::assignZValue(item, generateZLevel(item));
+            }
+        }
+
+    } else if (dest == down) {
+        iCurElement.toBack();
+        if (iCurElement.findPrevious(item)) {
+            if (iCurElement.hasPrevious()) {
+                qreal nextZ = iCurElement.peekPrevious().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+                UBGraphicsItem::assignZValue(iCurElement.peekPrevious().value(), item->data(UBGraphicsItemData::ItemOwnZValue).toReal());
+                UBGraphicsItem::assignZValue(item, nextZ);
+
+                while (iCurElement.hasNext() && iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal() == nextZ) {
+                        UBGraphicsItem::assignZValue(iCurElement.next().value(), nextZ);
+                }
+            }
+        }
+
+    } else if (dest == bottom) {
+        iCurElement.toBack();
+        if (iCurElement.findPrevious(item)) {
+            if (iCurElement.hasPrevious()) {
+                qreal oldz = item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+                iCurElement.toFront();
+                qreal nextZ = iCurElement.next().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+
+                ItemLayerTypeData curItemLayerTypeData = scopeMap.value(curItemLayerType);
+
+                //if we have some free space between lowest graphics item and layer's bottom bound,
+                //insert element close to first element in layer
+                if (nextZ > curItemLayerTypeData.bottomLimit + curItemLayerTypeData.incStep) {
+                    qreal result = nextZ - curItemLayerTypeData.incStep;
+                    UBGraphicsItem::assignZValue(item, result);
+                } else {
+                    UBGraphicsItem::assignZValue(item, nextZ);
+
+                    bool doubleGap = false; //to detect if we can finish rundown since we can insert item to the free space
+
+                    while (iCurElement.peekNext().value() != item) {
+                        qreal curZ = iCurElement.value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+                        qreal curNextZ = iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+                        if (curNextZ - curZ >= 2 * curItemLayerTypeData.incStep) {
+                            UBGraphicsItem::assignZValue(iCurElement.value(), curZ + curItemLayerTypeData.incStep);
+                            doubleGap = true;
+                            break;
+                        } else {
+                            UBGraphicsItem::assignZValue(iCurElement.value(), curNextZ);
+                            iCurElement.next();
+                        }
+                    }
+                    if (!doubleGap) {
+
+                        UBGraphicsItem::assignZValue(iCurElement.value(), oldz);
+
+                        while (iCurElement.hasNext() && (iCurElement.peekNext().value()->data(UBGraphicsItemData::ItemOwnZValue).toReal() == oldz)) {
+                            UBGraphicsItem::assignZValue(iCurElement.next().value(), oldz);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    //clear selection of the item and then select it again to activate selectionChangeProcessing()
+    item->scene()->clearSelection();
+    item->setSelected(true);
+
+    //Return new z value assigned to item
+    return item->data(UBGraphicsItemData::ItemOwnZValue).toReal();
+
+}
+
+itemLayerType::Enum UBZLayerController::typeForData(QGraphicsItem *item) const
+{
+    itemLayerType::Enum result = static_cast<itemLayerType::Enum>(item->data(UBGraphicsItemData::itemLayerType).toInt());
+
+    if (!scopeMap.contains(result)) {
+        result = itemLayerType::NoLayer;
+    }
+
+    return result;
+}
+
+void UBZLayerController::setLayerType(QGraphicsItem *pItem, itemLayerType::Enum pNewType)
+{
+   pItem->setData(UBGraphicsItemData::itemLayerType, QVariant(pNewType));
+}
+
+UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent, bool enableUndoRedoStack)
+    : UBCoreGraphicsScene(parent)
+    , mEraser(0)
+    , mPointer(0)
+    , mDocument(parent)
+    , mDarkBackground(false)
+    , mCrossedBackground(false)
+    , mIsDesktopMode(false)
+    , mZoomFactor(1)
+    , mBackgroundObject(0)
+    , mPreviousWidth(0)
+    , mInputDeviceIsPressed(false)
+    , mArcPolygonItem(0)
+    , mRenderingContext(Screen)
+    , mCurrentStroke(0)
+    , mShouldUseOMP(true)
+    , mItemCount(0)
+    , mUndoRedoStackEnabled(enableUndoRedoStack)
+    , magniferControlViewWidget(0)
+    , magniferDisplayViewWidget(0)
+    , mZLayerController(new UBZLayerController(this))
+    , mpLastPolygon(NULL)
+{
+    UBCoreGraphicsScene::setObjectName("BoardScene");
+#ifdef __ppc__
+    mShouldUseOMP = false;
+#elif defined(Q_WS_MAC)
+    mShouldUseOMP = QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5;
+#endif
+
+    setUuid(QUuid::createUuid());
+    setDocument(parent);
+    createEraiser();
+    createPointer();
+
+    if (UBApplication::applicationController)
+    {
+        setViewState(SceneViewState(1,
+            UBApplication::applicationController->initialHScroll(),
+            UBApplication::applicationController->initialVScroll()));
+    }
+
+//    Just for debug. Do not delete please
+//    connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing()));
+    connect(this, SIGNAL(selectionChanged()), this, SLOT(updateGroupButtonState()));
+}
+
+UBGraphicsScene::~UBGraphicsScene()
+{
+    if (mCurrentStroke && mCurrentStroke->polygons().empty()){
+        delete mCurrentStroke;
+        mCurrentStroke = NULL;
+    }
+
+    if (mZLayerController)
+        delete mZLayerController;
+}
+
+void UBGraphicsScene::selectionChangedProcessing()
+{
+    if (selectedItems().count()){
+        UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f') + "own z value is "
+                                   + QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f'));
+
+    }
+}
+
+void UBGraphicsScene::updateGroupButtonState()
+{
+
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+    if (UBStylusTool::Selector != currentTool)
+        UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
+
+    QAction *groupAction = UBApplication::mainWindow->actionGroupItems;
+    QList<QGraphicsItem*> selItems = selectedItems();
+    int selCount = selItems.count();
+
+    if (selCount < 1) {
+        groupAction->setEnabled(false);
+        groupAction->setText(UBApplication::app()->boardController->actionGroupText());
+
+    } else if (selCount == 1) {
+        if (selItems.first()->type() == UBGraphicsGroupContainerItem::Type) {
+            groupAction->setEnabled(true);
+            groupAction->setText(UBApplication::app()->boardController->actionUngroupText());
+        } else {
+            groupAction->setEnabled(false);
+        }
+
+    } else if (selCount > 1) {
+        groupAction->setEnabled(true);
+        groupAction->setText(UBApplication::app()->boardController->actionGroupText());
+    }
+}
+
+bool UBGraphicsScene::inputDevicePress(const QPointF& scenePos, const qreal& pressure)
+{
+    //mMesure1Ms = 0;
+    //mMesure2Ms = 0;
+
+    bool accepted = false;
+
+    if (mInputDeviceIsPressed)
+    {
+        qWarning() << "scene received input device pressed, without input device release, muting event as input device move";
+        accepted = inputDeviceMove(scenePos, pressure);
+    }
+    else
+    {
+        mInputDeviceIsPressed = true;
+
+        UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController()->stylusTool();
+
+        if (UBDrawingController::drawingController()->isDrawingTool())
+        {
+            // -----------------------------------------------------------------
+            // We fall here if we are using the Pen, the Marker or the Line tool
+            // -----------------------------------------------------------------
+            qreal width = 0;
+
+            // delete current stroke, if not assigned to any polygon
+            if (mCurrentStroke && mCurrentStroke->polygons().empty()){
+                delete mCurrentStroke;
+                mCurrentStroke = NULL;
+            }
+
+            // ---------------------------------------------------------------
+            // Create a new Stroke. A Stroke is a collection of QGraphicsLines
+            // ---------------------------------------------------------------
+            mCurrentStroke = new UBGraphicsStroke();
+
+            if (currentTool != UBStylusTool::Line){
+                // Handle the pressure
+                width = UBDrawingController::drawingController()->currentToolWidth() * pressure;
+            }else{
+                // Ignore pressure for the line tool
+                width = UBDrawingController::drawingController()->currentToolWidth();
+            }
+
+            width /= UBApplication::boardController->systemScaleFactor();
+            width /= UBApplication::boardController->currentZoom();
+
+            mAddedItems.clear();
+            mRemovedItems.clear();
+
+            if (UBDrawingController::drawingController()->mActiveRuler)
+            {
+                UBDrawingController::drawingController()->mActiveRuler->StartLine(scenePos, width);
+            }
+            else
+            {
+                moveTo(scenePos);
+                drawLineTo(scenePos, width, UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
+            }
+            accepted = true;
+        }
+        else if (currentTool == UBStylusTool::Eraser)
+        {
+            mAddedItems.clear();
+            mRemovedItems.clear();
+            moveTo(scenePos);
+
+            qreal eraserWidth = UBSettings::settings()->currentEraserWidth();
+            eraserWidth /= UBApplication::boardController->systemScaleFactor();
+            eraserWidth /= UBApplication::boardController->currentZoom();
+
+            eraseLineTo(scenePos, eraserWidth);
+            drawEraser(scenePos, true);
+
+            accepted = true;
+        }
+        else if (currentTool == UBStylusTool::Pointer)
+        {
+            drawPointer(scenePos, true);
+            accepted = true;
+        }
+    }
+
+    if (mCurrentStroke && mCurrentStroke->polygons().empty()){
+        delete mCurrentStroke;
+        mCurrentStroke = NULL;
+    }
+
+    return accepted;
+}
+
+bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pressure)
+{
+    bool accepted = false;
+
+    UBDrawingController *dc = UBDrawingController::drawingController();
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)dc->stylusTool();
+
+    QPointF position = QPointF(scenePos);
+
+    if (currentTool == UBStylusTool::Eraser)
+    {
+        drawEraser(position);
+        accepted = true;
+    }
+
+    if (mInputDeviceIsPressed)
+    {
+        if (dc->isDrawingTool())
+        {
+            qreal width = 0;
+
+            if (currentTool != UBStylusTool::Line){
+                // Handle the pressure
+                width = dc->currentToolWidth() * pressure;
+            }else{
+                // Ignore pressure for line tool
+                width = dc->currentToolWidth();
+            }
+
+            width /= UBApplication::boardController->systemScaleFactor();
+            width /= UBApplication::boardController->currentZoom();
+
+            if (currentTool == UBStylusTool::Line || dc->mActiveRuler)
+            {
+                if (UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker)
+                if(NULL != mpLastPolygon && NULL != mCurrentStroke && mAddedItems.size() > 0){
+                    UBCoreGraphicsScene::removeItemFromDeletion(mpLastPolygon);
+                    mAddedItems.remove(mpLastPolygon);
+                    mCurrentStroke->remove(mpLastPolygon);
+                    if (mCurrentStroke->polygons().empty()){
+                        delete mCurrentStroke;
+                        mCurrentStroke = NULL;
+                    }
+                    removeItem(mpLastPolygon);
+                    mPreviousPolygonItems.removeAll(mpLastPolygon);
+                }
+
+                // ------------------------------------------------------------------------
+                // Here we wanna make sure that the Line will 'grip' at i*45, i*90 degrees
+                // ------------------------------------------------------------------------
+
+                QLineF radius(mPreviousPoint, position);
+                qreal angle = radius.angle();
+                angle = qRound(angle / 45) * 45;
+                qreal radiusLength = radius.length();
+                QPointF newPosition(
+                    mPreviousPoint.x() + radiusLength * cos((angle * PI) / 180),
+                    mPreviousPoint.y() - radiusLength * sin((angle * PI) / 180));
+                QLineF chord(position, newPosition);
+                                    if (chord.length() < qMin((int)16, (int)(radiusLength / 20)))
+                    position = newPosition;
+            }
+
+            if(dc->mActiveRuler){
+                dc->mActiveRuler->DrawLine(position, width);
+            }else{
+                drawLineTo(position, width, UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
+            }
+        }
+        else if (currentTool == UBStylusTool::Eraser)
+        {
+            qreal eraserWidth = UBSettings::settings()->currentEraserWidth();
+            eraserWidth /= UBApplication::boardController->systemScaleFactor();
+            eraserWidth /= UBApplication::boardController->currentZoom();
+
+            eraseLineTo(position, eraserWidth);
+        }
+        else if (currentTool == UBStylusTool::Pointer)
+        {
+            drawPointer(position);
+        }
+
+        accepted = true;
+    }
+
+    return accepted;
+}
+
+bool UBGraphicsScene::inputDeviceRelease()
+{
+    /*
+    if (mMesure1Ms > 0 ||  mMesure2Ms > 0)
+    {
+        qWarning() << "---------------------------";
+        qWarning() << "mMesure1Ms: " << mMesure1Ms;
+        qWarning() << "mMesure2Ms: " << mMesure2Ms;
+
+        mMesure1Ms = 0;
+        mMesure2Ms = 0;
+    }
+    */
+
+    bool accepted = false;
+
+    if (mPointer)
+    {
+        mPointer->hide();
+        accepted = true;
+    }
+
+    UBDrawingController *dc = UBDrawingController::drawingController();
+
+    if (dc->isDrawingTool() || mDrawWithCompass)
+    {
+        if(mArcPolygonItem){
+
+                UBGraphicsStrokesGroup* pStrokes = new UBGraphicsStrokesGroup();
+
+                // Add the arc
+                mAddedItems.remove(mArcPolygonItem);
+                removeItem(mArcPolygonItem);
+                UBCoreGraphicsScene::removeItemFromDeletion(mArcPolygonItem);
+                mArcPolygonItem->setStrokesGroup(pStrokes);
+                pStrokes->addToGroup(mArcPolygonItem);
+
+                // Add the center cross
+                foreach(QGraphicsItem* item, mAddedItems){
+                    removeItem(item);
+                    UBCoreGraphicsScene::removeItemFromDeletion(item);
+                    mArcPolygonItem->setStrokesGroup(pStrokes);
+                    pStrokes->addToGroup(item);
+                }
+
+                mAddedItems.clear();
+                mAddedItems << pStrokes;
+                addItem(pStrokes);
+                mDrawWithCompass = false;
+
+        }
+        else if (mCurrentStroke){
+                UBGraphicsStrokesGroup* pStrokes = new UBGraphicsStrokesGroup();
+
+                // Remove the strokes that were just drawn here and replace them by a stroke item
+                foreach(UBGraphicsPolygonItem* poly, mCurrentStroke->polygons()){
+                    mPreviousPolygonItems.removeAll(poly);
+                    removeItem(poly);
+                    UBCoreGraphicsScene::removeItemFromDeletion(poly);
+                    poly->setStrokesGroup(pStrokes);
+                    pStrokes->addToGroup(poly);
+                }
+
+                // TODO LATER : Generate well pressure-interpolated polygons and create the line group with them
+
+                mAddedItems.clear();
+                mAddedItems << pStrokes;
+                addItem(pStrokes);
+
+            if (mCurrentStroke->polygons().empty()){
+                delete mCurrentStroke;
+                mCurrentStroke = 0;
+            }
+        }
+    }
+
+    if (mRemovedItems.size() > 0 || mAddedItems.size() > 0)
+    {
+
+        if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+            UBGraphicsItemUndoCommand* udcmd = new UBGraphicsItemUndoCommand(this, mRemovedItems, mAddedItems); //deleted by the undoStack
+
+            if(UBApplication::undoStack)
+                UBApplication::undoStack->push(udcmd);
+        }
+
+        mRemovedItems.clear();
+        mAddedItems.clear();
+        accepted = true;
+    }
+
+    mInputDeviceIsPressed = false;
+
+    setDocumentUpdated();
+
+    if (mCurrentStroke && mCurrentStroke->polygons().empty()){
+        delete mCurrentStroke;
+    }
+
+    mCurrentStroke = NULL;
+    return accepted;
+}
+
+void UBGraphicsScene::drawEraser(const QPointF &pPoint, bool isFirstDraw)
+{
+    qreal eraserWidth = UBSettings::settings()->currentEraserWidth();
+    eraserWidth /= UBApplication::boardController->systemScaleFactor();
+    eraserWidth /= UBApplication::boardController->currentZoom();
+
+    qreal eraserRadius = eraserWidth / 2;
+
+    // TODO UB 4.x optimize - no need to do that every time we move it
+    if (mEraser) {
+        mEraser->setRect(QRectF(pPoint.x() - eraserRadius, pPoint.y() - eraserRadius, eraserWidth, eraserWidth));
+
+        if(isFirstDraw) {
+          mEraser->show();
+        }
+    }
+}
+
+void UBGraphicsScene::drawPointer(const QPointF &pPoint, bool isFirstDraw)
+{
+    qreal pointerDiameter = UBSettings::pointerDiameter / UBApplication::boardController->currentZoom();
+    qreal pointerRadius = pointerDiameter / 2;
+
+    // TODO UB 4.x optimize - no need to do that every time we move it
+    if (mPointer) {
+        mPointer->setRect(QRectF(pPoint.x() - pointerRadius,
+                                 pPoint.y() - pointerRadius,
+                                 pointerDiameter,
+                                 pointerDiameter));
+        if(isFirstDraw) {
+            mPointer->show();
+        }
+    }
+}
+
+// call this function when user release mouse button in Magnifier mode
+void UBGraphicsScene::DisposeMagnifierQWidgets()
+{
+    if(magniferControlViewWidget)
+    {
+        magniferControlViewWidget->hide();
+        magniferControlViewWidget->setParent(0);
+        delete magniferControlViewWidget;
+        magniferControlViewWidget = NULL;
+    }
+
+    if(magniferDisplayViewWidget)
+    {
+        magniferDisplayViewWidget->hide();
+        magniferDisplayViewWidget->setParent(0);
+        delete magniferDisplayViewWidget;
+        magniferDisplayViewWidget = NULL;
+    }
+
+    // some time have crash here on access to app (when call from destructor when close sankore app)
+    // so i just add try/catch section here
+    try
+    {
+        UBApplication::app()->restoreOverrideCursor();
+    }
+    catch (...)
+    {
+    }
+
+}
+
+void UBGraphicsScene::moveTo(const QPointF &pPoint)
+{
+    mPreviousPoint = pPoint;
+    mPreviousWidth = -1.0;
+    mPreviousPolygonItems.clear();
+    mArcPolygonItem = 0;
+    mDrawWithCompass = false;
+}
+
+void UBGraphicsScene::drawLineTo(const QPointF &pEndPoint, const qreal &pWidth, bool bLineStyle)
+{
+    if (mPreviousWidth == -1.0)
+        mPreviousWidth = pWidth;
+
+    UBGraphicsPolygonItem *polygonItem = lineToPolygonItem(QLineF(mPreviousPoint, pEndPoint), pWidth);
+
+    if (!polygonItem->brush().isOpaque())
+    {
+        // -------------------------------------------------------------------------------------
+        // Here we substract the polygons that are overlapping in order to keep the transparency
+        // -------------------------------------------------------------------------------------
+        for (int i = 0; i < mPreviousPolygonItems.size(); i++)
+        {
+            UBGraphicsPolygonItem* previous = mPreviousPolygonItems.value(i);
+            polygonItem->subtract(previous);
+        }
+    }
+
+    if (bLineStyle)
+    {
+        QSetIterator<QGraphicsItem*> itItems(mAddedItems);
+
+        while (itItems.hasNext())
+        {
+            QGraphicsItem* item = itItems.next();
+            removeItem(item);
+        }
+        mAddedItems.clear();
+    }
+
+    mpLastPolygon = polygonItem;
+    mAddedItems.insert(polygonItem);
+
+    // Here we add the item to the scene
+    addItem(polygonItem);
+
+    if (!mCurrentStroke)
+        mCurrentStroke = new UBGraphicsStroke();
+
+    polygonItem->setStroke(mCurrentStroke);
+
+    mPreviousPolygonItems.append(polygonItem);
+
+    if (!bLineStyle)
+    {
+        mPreviousPoint = pEndPoint;
+        mPreviousWidth = pWidth;
+    }
+}
+
+void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
+{
+    const QLineF line(mPreviousPoint, pEndPoint);
+    mPreviousPoint = pEndPoint;
+
+    const QPolygonF eraserPolygon = UBGeometryUtils::lineToPolygon(line, pWidth);
+    const QRectF eraserBoundingRect = eraserPolygon.boundingRect();
+
+    QPainterPath eraserPath;
+    eraserPath.addPolygon(eraserPolygon);
+
+    // Get all the items that are intersecting with the eraser path
+    QList<QGraphicsItem*> collidItems = items(eraserBoundingRect, Qt::IntersectsItemBoundingRect);
+
+    QList<UBGraphicsPolygonItem*> intersectedItems;
+
+    typedef QList<QPolygonF> POLYGONSLIST;
+    QList<POLYGONSLIST> intersectedPolygons;
+
+    #pragma omp parallel for
+    for(int i=0; i<collidItems.size(); i++)
+    {
+        UBGraphicsPolygonItem *pi = qgraphicsitem_cast<UBGraphicsPolygonItem*>(collidItems[i]);
+        if(pi == NULL)
+            continue;
+
+        QPainterPath itemPainterPath;
+        itemPainterPath.addPolygon(pi->sceneTransform().map(pi->polygon()));
+
+        if (eraserPath.contains(itemPainterPath))
+        {
+            #pragma omp critical
+            {
+                // Compete remove item
+                intersectedItems << pi;
+                intersectedPolygons << QList<QPolygonF>();
+            }
+        }
+        else if (eraserPath.intersects(itemPainterPath))
+        {
+
+            QPainterPath newPath = itemPainterPath.subtracted(eraserPath);
+            #pragma omp critical
+            {
+               intersectedItems << pi;
+               intersectedPolygons << newPath.simplified().toFillPolygons(pi->sceneTransform().inverted());
+            }
+        }
+    }
+
+    for(int i=0; i<intersectedItems.size(); i++)
+    {
+        // item who intersects with eraser
+        UBGraphicsPolygonItem *intersectedPolygonItem = intersectedItems[i];
+
+        if (!intersectedPolygons[i].empty())
+        {
+            // intersected polygons generated as QList<QPolygon> QPainterPath::toFillPolygons(), 
+            // so each intersectedPolygonItem has one or couple of QPolygons who should be removed from it. 
+            for(int j = 0; j < intersectedPolygons[i].size(); j++)
+            {
+                // create small polygon from couple of polygons to replace particular erased polygon
+                UBGraphicsPolygonItem* polygonItem = new UBGraphicsPolygonItem(intersectedPolygons[i][j], intersectedPolygonItem->parentItem());
+
+                intersectedPolygonItem->copyItemParameters(polygonItem);  
+                polygonItem->setStroke(intersectedPolygonItem->stroke());
+                polygonItem->setStrokesGroup(intersectedPolygonItem->strokesGroup());
+                intersectedPolygonItem->strokesGroup()->addToGroup(polygonItem);
+                mAddedItems << polygonItem;
+            }
+        }
+
+        //remove full polygon item for replace it by couple of polygons who creates the same stroke without a part which intersects with eraser
+        mRemovedItems << intersectedPolygonItem;
+        intersectedPolygonItem->strokesGroup()->removeFromGroup(intersectedPolygonItem);
+        removeItem(intersectedPolygonItem);
+    }
+
+    if (!intersectedItems.empty())
+        setModified(true);
+}
+
+void UBGraphicsScene::drawArcTo(const QPointF& pCenterPoint, qreal pSpanAngle)
+{
+    mDrawWithCompass = true;
+    if (mArcPolygonItem)
+    {
+        mAddedItems.remove(mArcPolygonItem);
+        removeItem(mArcPolygonItem);
+        mArcPolygonItem = 0;
+    }
+    qreal penWidth = UBSettings::settings()->currentPenWidth();
+    penWidth /= UBApplication::boardController->systemScaleFactor();
+    penWidth /= UBApplication::boardController->currentZoom();
+
+    mArcPolygonItem = arcToPolygonItem(QLineF(pCenterPoint, mPreviousPoint), pSpanAngle, penWidth);
+    mArcPolygonItem->setStroke(mCurrentStroke);
+    mAddedItems.insert(mArcPolygonItem);
+    addItem(mArcPolygonItem);
+
+    setDocumentUpdated();
+}
+
+void UBGraphicsScene::setBackground(bool pIsDark, bool pIsCrossed)
+{
+    bool needRepaint = false;
+
+    if (mDarkBackground != pIsDark)
+    {
+        mDarkBackground = pIsDark;
+
+        if (mEraser)
+        {
+            if (mDarkBackground)
+            {
+                mEraser->setBrush(UBSettings::eraserBrushDarkBackground);
+                mEraser->setPen(UBSettings::eraserPenDarkBackground);
+            }
+            else
+            {
+                mEraser->setBrush(UBSettings::eraserBrushLightBackground);
+                mEraser->setPen(UBSettings::eraserPenLightBackground);
+            }
+        }
+
+        recolorAllItems();
+
+        needRepaint = true;
+        setModified(true);
+    }
+
+    if (mCrossedBackground != pIsCrossed)
+    {
+        mCrossedBackground = pIsCrossed;
+        needRepaint = true;
+        setModified(true);
+    }
+
+    if (needRepaint)
+    {
+        foreach(QGraphicsView* view, views())
+        {
+            view->resetCachedContent();
+        }
+    }
+}
+
+void UBGraphicsScene::setBackgroundZoomFactor(qreal zoom)
+{
+    mZoomFactor = zoom;
+}
+
+void UBGraphicsScene::setDrawingMode(bool bModeDesktop)
+{
+    mIsDesktopMode = bModeDesktop;
+}
+
+void UBGraphicsScene::recolorAllItems()
+{
+    QMap<QGraphicsView*, QGraphicsView::ViewportUpdateMode> previousUpdateModes;
+    foreach(QGraphicsView* view, views())
+    {
+        previousUpdateModes.insert(view, view->viewportUpdateMode());
+        view->setViewportUpdateMode(QGraphicsView::NoViewportUpdate);
+    }
+
+    bool currentIslight = isLightBackground();
+    foreach (QGraphicsItem *item, items()) {
+        if (item->type() == UBGraphicsStrokesGroup::Type) {
+            UBGraphicsStrokesGroup *curGroup = static_cast<UBGraphicsStrokesGroup*>(item);
+            QColor compareColor =  curGroup->color(currentIslight ? UBGraphicsStrokesGroup::colorOnDarkBackground
+                                                                  : UBGraphicsStrokesGroup::colorOnLightBackground);
+
+            if (curGroup->color() == compareColor) {
+                QColor newColor = curGroup->color(!currentIslight ? UBGraphicsStrokesGroup::colorOnDarkBackground
+                                                                  : UBGraphicsStrokesGroup::colorOnLightBackground);
+                curGroup->setColor(newColor);
+            }
+        }
+    }
+
+    foreach(QGraphicsView* view, views())
+    {
+        view->setViewportUpdateMode(previousUpdateModes.value(view));
+    }
+}
+
+UBGraphicsPolygonItem* UBGraphicsScene::lineToPolygonItem(const QLineF &pLine, const qreal &pWidth)
+{
+    UBGraphicsPolygonItem *polygonItem = new UBGraphicsPolygonItem(pLine, pWidth);
+
+    initPolygonItem(polygonItem);
+
+    return polygonItem;
+}
+
+void UBGraphicsScene::initPolygonItem(UBGraphicsPolygonItem* polygonItem)
+{
+    QColor colorOnDarkBG;
+    QColor colorOnLightBG;
+
+    if (UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Marker)
+    {
+        colorOnDarkBG = UBApplication::boardController->markerColorOnDarkBackground();
+        colorOnLightBG = UBApplication::boardController->markerColorOnLightBackground();
+    }
+    else // settings->stylusTool() == UBStylusTool::Pen + failsafe
+    {
+        colorOnDarkBG = UBApplication::boardController->penColorOnDarkBackground();
+        colorOnLightBG = UBApplication::boardController->penColorOnLightBackground();
+    }
+
+    if (mDarkBackground)
+    {
+        polygonItem->setColor(colorOnDarkBG);
+    }
+    else
+    {
+        polygonItem->setColor(colorOnLightBG);
+    }
+
+    polygonItem->setColorOnDarkBackground(colorOnDarkBG);
+    polygonItem->setColorOnLightBackground(colorOnLightBG);
+
+    polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic));
+}
+
+UBGraphicsPolygonItem* UBGraphicsScene::arcToPolygonItem(const QLineF& pStartRadius, qreal pSpanAngle, qreal pWidth)
+{
+    QPolygonF polygon = UBGeometryUtils::arcToPolygon(pStartRadius, pSpanAngle, pWidth);
+
+    return polygonToPolygonItem(polygon);
+}
+
+UBGraphicsPolygonItem* UBGraphicsScene::polygonToPolygonItem(const QPolygonF pPolygon)
+{
+    UBGraphicsPolygonItem *polygonItem = new UBGraphicsPolygonItem(pPolygon);
+
+    initPolygonItem(polygonItem);
+
+    return polygonItem;
+}
+
+void UBGraphicsScene::hideEraser()
+{
+    if (mEraser)
+        mEraser->hide();
+}
+
+void UBGraphicsScene::leaveEvent(QEvent * event)
+{
+    Q_UNUSED(event);
+    hideEraser();
+}
+
+UBGraphicsScene* UBGraphicsScene::sceneDeepCopy() const
+{
+    UBGraphicsScene* copy = new UBGraphicsScene(this->document(), this->mUndoRedoStackEnabled);
+
+    copy->setBackground(this->isDarkBackground(), this->isCrossedBackground());
+    copy->setSceneRect(this->sceneRect());
+
+    if (this->mNominalSize.isValid())
+        copy->setNominalSize(this->mNominalSize);
+
+    QListIterator<QGraphicsItem*> itItems(this->mFastAccessItems);
+
+    QMap<UBGraphicsStroke*, UBGraphicsStroke*> groupClone;
+
+    while (itItems.hasNext())
+    {
+        QGraphicsItem* item = itItems.next();
+        QGraphicsItem* cloneItem = 0;
+
+        UBItem* ubItem = dynamic_cast<UBItem*>(item);
+        UBGraphicsStroke* stroke = dynamic_cast<UBGraphicsStroke*>(item);
+
+        if (ubItem && !stroke)
+        {
+            cloneItem = dynamic_cast<QGraphicsItem*>(ubItem->deepCopy());
+        }
+
+        if (cloneItem)
+        {
+            copy->addItem(cloneItem);
+
+            if (isBackgroundObject(item))
+            {
+                copy->setAsBackgroundObject(cloneItem);
+            }
+
+            if (this->mTools.contains(item))
+            {
+                copy->mTools << cloneItem;
+            }
+
+            UBGraphicsPolygonItem* polygon = dynamic_cast<UBGraphicsPolygonItem*>(item);
+
+            if(polygon)
+            {
+                UBGraphicsStroke* stroke = dynamic_cast<UBGraphicsStroke*>(item->parentItem());
+
+                if (stroke)
+                {
+                    UBGraphicsStroke* cloneStroke = groupClone.value(stroke);
+
+                    if (!cloneStroke)
+                    {
+                        cloneStroke = stroke->deepCopy();
+                        groupClone.insert(stroke, cloneStroke);
+                    }
+
+                    polygon->setStroke(cloneStroke);
+                }
+            }
+        }
+    }
+
+    // TODO UB 4.7 ... complete all members ?
+
+    return copy;
+}
+
+UBItem* UBGraphicsScene::deepCopy() const
+{
+    return sceneDeepCopy();
+}
+
+void UBGraphicsScene::clearContent(clearCase pCase)
+{
+    QSet<QGraphicsItem*> removedItems;
+    UBGraphicsItemUndoCommand::GroupDataTable groupsMap;
+
+    switch (pCase) {
+    case clearBackground :
+        if(mBackgroundObject){
+            removeItem(mBackgroundObject);
+            removedItems << mBackgroundObject;
+        }
+        break;
+
+    case clearItemsAndAnnotations :
+    case clearItems :
+    case clearAnnotations :
+        foreach(QGraphicsItem* item, items()) {
+
+            bool isGroup = item->type() == UBGraphicsGroupContainerItem::Type;
+            bool isStrokesGroup = item->type() == UBGraphicsStrokesGroup::Type;
+
+            UBGraphicsGroupContainerItem *itemGroup = item->parentItem()
+                                                      ? qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(item->parentItem())
+                                                      : 0;
+            UBGraphicsItemDelegate *curDelegate = UBGraphicsItem::Delegate(item);
+            if (!curDelegate) {
+                continue;
+            }
+
+            bool shouldDelete = false;
+            switch (static_cast<int>(pCase)) {
+            case clearAnnotations :
+                shouldDelete = isStrokesGroup;
+                break;
+            case clearItems :
+                shouldDelete = !isGroup && !isBackgroundObject(item) && !isStrokesGroup;
+                break;
+            case clearItemsAndAnnotations:
+                shouldDelete = !isGroup && !isBackgroundObject(item);
+                break;
+            }
+
+            if(shouldDelete) {
+                if (itemGroup) {
+                    itemGroup->removeFromGroup(item);
+
+                    groupsMap.insert(itemGroup, UBGraphicsItem::getOwnUuid(item));
+                    if (itemGroup->childItems().count() == 1) {
+                        groupsMap.insert(itemGroup, UBGraphicsItem::getOwnUuid(itemGroup->childItems().first()));
+                        QGraphicsItem *lastItem = itemGroup->childItems().first();
+                        bool isSelected = itemGroup->isSelected();
+                        itemGroup->destroy(false);
+                        lastItem->setSelected(isSelected);
+                    }
+                    itemGroup->Delegate()->update();
+                }
+
+                curDelegate->remove(false);
+                removedItems << item;
+            }
+        }
+        break;
+    }
+
+    // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint
+    update(sceneRect());
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, QSet<QGraphicsItem*>(), groupsMap);
+        UBApplication::undoStack->push(uc);
+    }
+
+    if (pCase == clearBackground) {
+        mBackgroundObject = 0;
+    }
+
+    setDocumentUpdated();
+}
+
+UBGraphicsPixmapItem* UBGraphicsScene::addPixmap(const QPixmap& pPixmap, QGraphicsItem* replaceFor, const QPointF& pPos, qreal pScaleFactor, bool pUseAnimation)
+{
+    UBGraphicsPixmapItem* pixmapItem = new UBGraphicsPixmapItem();
+
+    pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true);
+    pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
+
+    pixmapItem->setPixmap(pPixmap);
+
+    QPointF half(pPixmap.width() * pScaleFactor / 2, pPixmap.height()  * pScaleFactor / 2);
+    pixmapItem->setPos(pPos - half);
+
+    addItem(pixmapItem);
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, replaceFor, pixmapItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    pixmapItem->scale(pScaleFactor, pScaleFactor);
+
+    if (pUseAnimation)
+    {
+        pixmapItem->setOpacity(0);
+
+        QPropertyAnimation *animation = new QPropertyAnimation(pixmapItem, "opacity");
+        animation->setDuration(1000);
+        animation->setStartValue(0.0);
+        animation->setEndValue(1.0);
+
+        animation->start();
+    }
+
+    pixmapItem->show();
+    setDocumentUpdated();
+
+    return pixmapItem;
+}
+
+void UBGraphicsScene::textUndoCommandAdded(UBGraphicsTextItem *textItem)
+{
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsTextItemUndoCommand* uc = new UBGraphicsTextItemUndoCommand(textItem);
+        UBApplication::undoStack->push(uc);
+    }
+}
+UBGraphicsMediaItem* UBGraphicsScene::addMedia(const QUrl& pMediaFileUrl, bool shouldPlayAsap, const QPointF& pPos)
+{
+    qDebug() << pMediaFileUrl.toLocalFile();
+    if (!QFile::exists(pMediaFileUrl.toLocalFile()))
+    if (!QFile::exists(pMediaFileUrl.toString()))
+        return NULL;
+
+    UBGraphicsMediaItem* mediaItem = new UBGraphicsMediaItem(pMediaFileUrl);
+    if(mediaItem){
+        connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), mediaItem, SLOT(activeSceneChanged()));
+    }
+
+    mediaItem->setPos(pPos);
+
+    mediaItem->setFlag(QGraphicsItem::ItemIsMovable, true);
+    mediaItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
+
+    addItem(mediaItem);
+
+    mediaItem->show();
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, mediaItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    mediaItem->mediaObject()->play();
+
+    if (!shouldPlayAsap)
+    {
+        mediaItem->mediaObject()->pause();
+        mediaItem->mediaObject()->seek(0);
+    }
+
+    setDocumentUpdated();
+
+    return mediaItem;
+}
+
+UBGraphicsMediaItem* UBGraphicsScene::addVideo(const QUrl& pVideoFileUrl, bool shouldPlayAsap, const QPointF& pPos)
+{
+   return addMedia(pVideoFileUrl, shouldPlayAsap, pPos);
+}
+
+UBGraphicsMediaItem* UBGraphicsScene::addAudio(const QUrl& pAudioFileUrl, bool shouldPlayAsap, const QPointF& pPos)
+{
+   return addMedia(pAudioFileUrl, shouldPlayAsap, pPos);
+}
+
+UBGraphicsWidgetItem* UBGraphicsScene::addWidget(const QUrl& pWidgetUrl, const QPointF& pPos)
+{
+    int widgetType = UBGraphicsWidgetItem::widgetType(pWidgetUrl);
+
+    if(widgetType == UBWidgetType::Apple)
+    {
+        return addAppleWidget(pWidgetUrl, pPos);
+    }
+    else if(widgetType == UBWidgetType::W3C)
+    {
+        return addW3CWidget(pWidgetUrl, pPos);
+    }
+    else
+    {
+        qDebug() << "UBGraphicsScene::addWidget: Unknown widget Type";
+        return 0;
+    }
+}
+
+UBGraphicsAppleWidgetItem* UBGraphicsScene::addAppleWidget(const QUrl& pWidgetUrl, const QPointF& pPos)
+{
+    UBGraphicsAppleWidgetItem *appleWidget = new UBGraphicsAppleWidgetItem(pWidgetUrl);
+
+    addGraphicsWidget(appleWidget, pPos);
+
+    return appleWidget;
+}
+
+UBGraphicsW3CWidgetItem* UBGraphicsScene::addW3CWidget(const QUrl& pWidgetUrl, const QPointF& pPos)
+{
+    UBGraphicsW3CWidgetItem *w3CWidget = new UBGraphicsW3CWidgetItem(pWidgetUrl, 0);
+
+    addGraphicsWidget(w3CWidget, pPos);
+
+    return w3CWidget;
+}
+
+void UBGraphicsScene::addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, const QPointF& pPos)
+{
+    graphicsWidget->setFlag(QGraphicsItem::ItemIsSelectable, true);
+
+    addItem(graphicsWidget);
+
+    qreal ssf = 1 / UBApplication::boardController->systemScaleFactor();
+
+    graphicsWidget->scale(ssf, ssf);
+
+    graphicsWidget->setPos(QPointF(pPos.x() - graphicsWidget->boundingRect().width() / 2,
+        pPos.y() - graphicsWidget->boundingRect().height() / 2));
+
+    if (graphicsWidget->canBeContent())
+    {
+        graphicsWidget->loadMainHtml();
+
+        graphicsWidget->setSelected(true);
+        if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+            UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, graphicsWidget);
+            UBApplication::undoStack->push(uc);
+        }
+
+        setDocumentUpdated();
+    }
+    else
+    {
+        UBApplication::boardController->moveGraphicsWidgetToControlView(graphicsWidget);
+    }
+
+    UBApplication::boardController->controlView()->setFocus();
+}
+
+
+
+UBGraphicsW3CWidgetItem* UBGraphicsScene::addOEmbed(const QUrl& pContentUrl, const QPointF& pPos)
+{
+    QStringList widgetPaths = UBPersistenceManager::persistenceManager()->allWidgets(UBSettings::settings()->applicationApplicationsLibraryDirectory());
+
+    UBGraphicsW3CWidgetItem *widget = 0;
+
+    foreach(QString widgetPath, widgetPaths)
+    {
+        if (widgetPath.contains("Sel video"))
+        {
+            widget = addW3CWidget(QUrl::fromLocalFile(widgetPath), pPos);
+
+            if (widget)
+            {
+                widget->setPreference("oembedUrl", pContentUrl.toString());
+                setDocumentUpdated();
+                break;
+            }
+        }
+    }
+
+    return widget;
+}
+
+UBGraphicsGroupContainerItem *UBGraphicsScene::createGroup(QList<QGraphicsItem *> items)
+{
+    UBGraphicsGroupContainerItem *groupItem = new UBGraphicsGroupContainerItem();
+
+    addItem(groupItem);
+    foreach (QGraphicsItem *item, items) {
+        if (item->type() == UBGraphicsGroupContainerItem::Type) {
+            QList<QGraphicsItem*> childItems = item->childItems();
+            UBGraphicsGroupContainerItem *currentGroup = dynamic_cast<UBGraphicsGroupContainerItem*>(item);
+            if (currentGroup) {
+                currentGroup->destroy();
+            }
+            foreach (QGraphicsItem *chItem, childItems) {
+                groupItem->addToGroup(chItem);
+                mFastAccessItems.removeAll(chItem);
+            }
+        } else {
+            groupItem->addToGroup(item);
+            mFastAccessItems.removeAll(item);
+        }
+    }
+
+    groupItem->setVisible(true);
+    groupItem->setFocus();
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemGroupUndoCommand* uc = new UBGraphicsItemGroupUndoCommand(this, groupItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    setDocumentUpdated();
+
+    return groupItem;
+}
+
+void UBGraphicsScene::addGroup(UBGraphicsGroupContainerItem *groupItem)
+{
+    addItem(groupItem);
+    for (int i = 0; i < groupItem->childItems().count(); i++)
+    {
+        QGraphicsItem *it = qgraphicsitem_cast<QGraphicsItem *>(groupItem->childItems().at(i));
+        if (it)
+        {
+             mFastAccessItems.removeAll(it);
+        }
+    }
+
+    groupItem->setVisible(true);
+    groupItem->setFocus();
+
+    if (groupItem->uuid().isNull()) {
+        groupItem->setUuid(QUuid::createUuid());
+    }
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, groupItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    setDocumentUpdated();
+}
+
+UBGraphicsSvgItem* UBGraphicsScene::addSvg(const QUrl& pSvgFileUrl, const QPointF& pPos, const QByteArray pData)
+{
+    QString path = pSvgFileUrl.toLocalFile();
+
+    UBGraphicsSvgItem *svgItem;
+    if (pData.isNull())
+        svgItem = new UBGraphicsSvgItem(path);
+    else
+        svgItem = new UBGraphicsSvgItem(pData);
+
+    svgItem->setFlag(QGraphicsItem::ItemIsMovable, true);
+    svgItem->setFlag(QGraphicsItem::ItemIsSelectable, true);
+
+    qreal sscale = 1 / UBApplication::boardController->systemScaleFactor();
+    svgItem->scale(sscale, sscale);
+
+    QPointF half(svgItem->boundingRect().width() / 2, svgItem->boundingRect().height() / 2);
+    svgItem->setPos(pPos - half);
+    svgItem->show();
+
+    addItem(svgItem);
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, svgItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    setDocumentUpdated();
+
+    return svgItem;
+}
+
+UBGraphicsTextItem* UBGraphicsScene::addText(const QString& pString, const QPointF& pTopLeft)
+{
+    return addTextWithFont(pString, pTopLeft, UBSettings::settings()->fontPixelSize()
+            , UBSettings::settings()->fontFamily(), UBSettings::settings()->isBoldFont()
+            , UBSettings::settings()->isItalicFont());
+}
+
+UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, const QString& objectName)
+{
+    UBGraphicsTextItem* textItem = 0;
+    bool found = false;
+    //looking for a previous such item text
+    for(int i=0; i < mFastAccessItems.count() && !found ; i += 1){
+        UBGraphicsTextItem* currentItem = dynamic_cast<UBGraphicsTextItem*>(mFastAccessItems.at(i));
+        if(currentItem && (currentItem->objectName() == objectName || currentItem->toPlainText() == pString)){
+            // The second condition is necessary because the object name isn't stored. On reopeining the file we
+            // need another rule than the objectName
+            textItem = currentItem;
+            found=true;
+            if(currentItem->objectName() != objectName)
+                textItem->setObjectName(objectName);
+        }
+    }
+    if(!textItem){
+        textItem = addTextWithFont(pString,QPointF(0,0) ,72,UBSettings::settings()->fontFamily(),true,false);
+        textItem->setObjectName(objectName);
+        QSizeF size = textItem->size();
+        textItem->setPos(QPointF(-size.width()/2.0,-size.height()/2.0));
+        textItem->setData(UBGraphicsItemData::ItemEditable,QVariant(false));
+    }
+
+    textItem->setPlainText(pString);
+    textItem->adjustSize();
+    textItem->clearFocus();
+    textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
+    return textItem;
+}
+
+UBGraphicsTextItem* UBGraphicsScene::addTextWithFont(const QString& pString, const QPointF& pTopLeft
+            , int pointSize, const QString& fontFamily, bool bold, bool italic)
+{
+    UBGraphicsTextItem *textItem = new UBGraphicsTextItem();
+    textItem->setPlainText(pString);
+
+    QFont font = textItem->font();
+
+    if (fontFamily == "")
+    {
+        font = QFont(UBSettings::settings()->fontFamily());
+    }
+    else
+    {
+        font = QFont(fontFamily);
+    }
+
+    if (pointSize < 1)
+    {
+        font.setPixelSize(UBSettings::settings()->fontPixelSize());
+    }
+    else
+    {
+        font.setPointSize(pointSize);
+    }
+
+    font.setBold(bold);
+    font.setItalic(italic);
+    textItem->setFont(font);
+
+    QFontMetrics fi(font);
+    QRect br = fi.boundingRect(pString);
+
+    textItem->setTextWidth(qMax((qreal)br.width() + 50, (qreal)200));
+    textItem->setTextHeight(br.height());
+
+    addItem(textItem);
+
+    textItem->setPos(pTopLeft);
+
+    textItem->show();
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)), this, SLOT(textUndoCommandAdded(UBGraphicsTextItem *)));
+
+    textItem->setSelected(true);
+    textItem->setFocus();
+
+    setDocumentUpdated();
+
+    return textItem;
+}
+
+UBGraphicsTextItem *UBGraphicsScene::addTextHtml(const QString &pString, const QPointF& pTopLeft)
+{
+    UBGraphicsTextItem *textItem = new UBGraphicsTextItem();
+    textItem->setPlainText("");
+    textItem->setHtml(pString);
+
+    addItem(textItem);
+    textItem->show();
+
+    if (mUndoRedoStackEnabled) { //should be deleted after scene own undo stack implemented
+        UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem);
+        UBApplication::undoStack->push(uc);
+    }
+
+    connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)),
+            this,     SLOT(textUndoCommandAdded(UBGraphicsTextItem *)));
+
+    textItem->setFocus();
+
+    setDocumentUpdated();
+    textItem->setPos(pTopLeft);
+
+    return textItem;
+}
+
+void UBGraphicsScene::addItem(QGraphicsItem* item)
+{
+    UBCoreGraphicsScene::addItem(item);
+
+    UBGraphicsItem::assignZValue(item, mZLayerController->generateZLevel(item));
+
+    if (!mTools.contains(item))
+      ++mItemCount;
+
+    mFastAccessItems << item;
+}
+
+void UBGraphicsScene::addItems(const QSet<QGraphicsItem*>& items)
+{
+    foreach(QGraphicsItem* item, items) {
+        UBCoreGraphicsScene::addItem(item);
+        UBGraphicsItem::assignZValue(item, mZLayerController->generateZLevel(item));
+    }
+
+    mItemCount += items.size();
+
+    mFastAccessItems += items.toList();
+}
+
+void UBGraphicsScene::removeItem(QGraphicsItem* item)
+{
+    item->setSelected(false);
+    UBCoreGraphicsScene::removeItem(item);
+    UBApplication::boardController->freezeW3CWidget(item, true);
+
+    if (!mTools.contains(item))
+      --mItemCount;
+
+    mFastAccessItems.removeAll(item);
+    /* delete the item if it is cache to allow its reinstanciation, because Cache implements design pattern Singleton. */
+    if (dynamic_cast<UBGraphicsCache*>(item))
+        UBCoreGraphicsScene::deleteItem(item);
+}
+
+void UBGraphicsScene::removeItems(const QSet<QGraphicsItem*>& items)
+{
+    foreach(QGraphicsItem* item, items) {
+        UBCoreGraphicsScene::removeItem(item);
+    }
+
+    mItemCount -= items.size();
+
+    foreach(QGraphicsItem* item, items)
+        mFastAccessItems.removeAll(item);
+}
+
+void UBGraphicsScene::deselectAllItems()
+{
+    foreach(QGraphicsItem *gi, selectedItems ())
+    {
+        gi->setSelected(false);
+    }
+}
+
+bool UBGraphicsScene::isEmpty() const
+{
+    return mItemCount == 0;
+}
+
+QGraphicsItem* UBGraphicsScene::setAsBackgroundObject(QGraphicsItem* item, bool pAdaptTransformation, bool pExpand)
+{
+    if (mBackgroundObject)
+    {
+        removeItem(mBackgroundObject);
+        mBackgroundObject = 0;
+    }
+
+    if (item)
+    {
+        item->setFlag(QGraphicsItem::ItemIsSelectable, false);
+        item->setFlag(QGraphicsItem::ItemIsMovable, false);
+        item->setAcceptedMouseButtons(Qt::NoButton);
+        item->setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::FixedBackground);
+
+        if (pAdaptTransformation)
+        {
+            item = scaleToFitDocumentSize(item, true, 0, pExpand);
+        }
+
+        if (item->scene() != this)
+            addItem(item);
+
+        mZLayerController->setLayerType(item, itemLayerType::BackgroundItem);
+        UBGraphicsItem::assignZValue(item, mZLayerController->generateZLevel(item));
+
+        mBackgroundObject = item;
+
+    }
+
+    return item;
+}
+
+QRectF UBGraphicsScene::normalizedSceneRect(qreal ratio)
+{
+
+    QRectF normalizedRect(nominalSize().width() / -2, nominalSize().height() / -2,
+        nominalSize().width(), nominalSize().height());
+
+    foreach(QGraphicsItem* gi, mFastAccessItems)
+    {
+        if(gi && gi->isVisible() && !mTools.contains(gi))
+        {
+            normalizedRect = normalizedRect.united(gi->sceneBoundingRect());
+        }
+    }
+
+    if (ratio > 0.0)
+    {
+        qreal normalizedRectRatio = normalizedRect.width() / normalizedRect.height();
+
+        if (normalizedRectRatio > ratio)
+        {
+            //the normalized rect is too wide, we increase height
+            qreal newHeight = normalizedRect.width() / ratio;
+            qreal offset = (newHeight - normalizedRect.height()) / 2;
+            normalizedRect.setY(normalizedRect.y() - offset);
+            normalizedRect.setHeight(newHeight);
+        }
+        else if (normalizedRectRatio < ratio)
+        {
+            //the normalized rect is too high, we increase the width
+            qreal newWidth = normalizedRect.height() * ratio;
+            qreal offset = (newWidth - normalizedRect.width()) / 2;
+            normalizedRect.setX(normalizedRect.x() - offset);
+            normalizedRect.setWidth(newWidth);
+        }
+    }
+
+    return normalizedRect;
+}
+
+QGraphicsItem *UBGraphicsScene::itemForUuid(QUuid uuid)
+{
+    QGraphicsItem *result = 0;
+    QString ui = uuid.toString();
+
+    //simple search before implementing container for fast access
+    foreach (QGraphicsItem *item, items()) {
+        if (UBGraphicsScene::getPersonalUuid(item) == uuid && !uuid.isNull()) {
+            result = item;
+        }
+    }
+
+    return result;
+}
+
+void UBGraphicsScene::setDocument(UBDocumentProxy* pDocument)
+{
+    if (pDocument != mDocument)
+    {
+        if (mDocument)
+        {
+            setModified(true);
+        }
+
+        mDocument = pDocument;
+        setParent(pDocument);
+    }
+}
+
+QGraphicsItem* UBGraphicsScene::scaleToFitDocumentSize(QGraphicsItem* item, bool center, int margin, bool expand)
+{
+    int maxWidth = mNominalSize.width() - (margin * 2);
+    int maxHeight = mNominalSize.height() - (margin * 2);
+
+    QRectF size = item->sceneBoundingRect();
+
+    if (expand || size.width() > maxWidth || size.height() > maxHeight)
+    {
+        qreal ratio = qMin(maxWidth / size.width(), maxHeight / size.height());
+
+        item->scale(ratio, ratio);
+
+        if(center)
+        {
+            item->setPos(item->sceneBoundingRect().width() / -2.0,
+                item->sceneBoundingRect().height() / -2.0);
+        }
+    }
+
+    return item;
+}
+
+void UBGraphicsScene::addRuler(QPointF center)
+{
+    UBGraphicsRuler* ruler = new UBGraphicsRuler(); // mem : owned and destroyed by the scene
+    mTools << ruler;
+    QRectF rect = ruler->rect();
+    ruler->setRect(center.x() - rect.width()/2, center.y() - rect.height()/2, rect.width(), rect.height());
+
+    ruler->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+
+    addItem(ruler);
+
+    ruler->setVisible(true);
+}
+
+void UBGraphicsScene::addProtractor(QPointF center)
+{
+    // Protractor
+
+    UBGraphicsProtractor* protractor = new UBGraphicsProtractor(); // mem : owned and destroyed by the scene
+    mTools << protractor;
+
+    protractor->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+
+    addItem(protractor);
+
+    QPointF itemSceneCenter = protractor->sceneBoundingRect().center();
+    protractor->moveBy(center.x() - itemSceneCenter.x(), center.y() - itemSceneCenter.y());
+
+    protractor->setVisible(true);
+}
+
+void UBGraphicsScene::addTriangle(QPointF center)
+{
+    // Triangle
+
+    UBGraphicsTriangle* triangle = new UBGraphicsTriangle(); // mem : owned and destroyed by the scene
+    mTools << triangle;
+
+    triangle->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+
+    addItem(triangle);
+
+    QPointF itemSceneCenter = triangle->sceneBoundingRect().center();
+    triangle->moveBy(center.x() - itemSceneCenter.x(), center.y() - itemSceneCenter.y());
+
+    triangle->setVisible(true);
+}
+
+void UBGraphicsScene::addMagnifier(UBMagnifierParams params)
+{
+    // can have only one magnifier at one time
+    if(magniferControlViewWidget) return;
+
+    QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer());
+    QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView();
+    QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView();
+
+    QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
+
+    int cvW = cView->width();
+    int dvW = dView->width();
+    qreal wCoeff = (qreal)dvW / (qreal)cvW;
+
+    int cvH = cView->height();
+    int dvH = dView->height();
+    qreal hCoeff = (qreal)dvH / (qreal)cvH;
+
+    QPoint ccPoint(params.x,params.y);
+    QPoint globalPoint = cContainer->mapToGlobal(ccPoint);
+    QPoint cvPoint = cView->mapFromGlobal(globalPoint);
+    QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y());
+
+    magniferControlViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->controlContainer()), true);
+    magniferControlViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
+    magniferControlViewWidget->setMoveView((QWidget*)(UBApplication::boardController->controlContainer()));
+    magniferControlViewWidget->setSize(params.sizePercentFromScene);
+    magniferControlViewWidget->setZoom(params.zoom);
+
+    magniferDisplayViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->displayView()), false);
+    magniferDisplayViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
+    magniferDisplayViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->displayView());
+    magniferDisplayViewWidget->setSize(params.sizePercentFromScene);
+    magniferDisplayViewWidget->setZoom(params.zoom);
+
+    magniferControlViewWidget->grabNMove(globalPoint, globalPoint, true);
+    magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, true);
+    magniferControlViewWidget->show();
+    magniferDisplayViewWidget->show();
+
+    connect(magniferControlViewWidget, SIGNAL(magnifierMoved_Signal(QPoint)), this, SLOT(moveMagnifier(QPoint)));
+    connect(magniferControlViewWidget, SIGNAL(magnifierClose_Signal()), this, SLOT(closeMagnifier()));
+    connect(magniferControlViewWidget, SIGNAL(magnifierZoomIn_Signal()), this, SLOT(zoomInMagnifier()));
+    connect(magniferControlViewWidget, SIGNAL(magnifierZoomOut_Signal()), this, SLOT(zoomOutMagnifier()));
+    connect(magniferControlViewWidget, SIGNAL(magnifierResized_Signal(qreal)), this, SLOT(resizedMagnifier(qreal)));
+
+    setModified(true);
+}
+
+void UBGraphicsScene::moveMagnifier()
+{
+   if (magniferControlViewWidget)
+   {
+       QPoint magnifierPos = QPoint(magniferControlViewWidget->pos().x() + magniferControlViewWidget->size().width() / 2, magniferControlViewWidget->pos().y() + magniferControlViewWidget->size().height() / 2 );
+       moveMagnifier(magnifierPos, true);
+       setModified(true);
+   }
+}
+
+void UBGraphicsScene::moveMagnifier(QPoint newPos, bool forceGrab)
+{
+    QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer());
+    QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView();
+    QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView();
+
+    QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
+
+    int cvW = cView->width();
+    int dvW = dView->width();
+    qreal wCoeff = (qreal)dvW / (qreal)cvW;
+
+    int cvH = cView->height();
+    int dvH = dView->height();
+    qreal hCoeff = (qreal)dvH / (qreal)cvH;
+
+    QPoint globalPoint = cContainer->mapToGlobal(newPos);
+    QPoint cvPoint = cView->mapFromGlobal(globalPoint);
+    QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y());
+
+    magniferControlViewWidget->grabNMove(globalPoint, globalPoint, forceGrab, false);
+    magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, forceGrab, true);
+
+    setModified(true);
+}
+
+void UBGraphicsScene::closeMagnifier()
+{
+    DisposeMagnifierQWidgets();
+    setModified(true);
+}
+
+void UBGraphicsScene::zoomInMagnifier()
+{
+    if(magniferControlViewWidget->params.zoom < 8)
+    {
+        magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom + 0.5);
+        magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom + 0.5);
+    }
+}
+
+void UBGraphicsScene::zoomOutMagnifier()
+{
+    if(magniferControlViewWidget->params.zoom > 1)
+    {
+        magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom - 0.5);
+        magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom - 0.5);
+        setModified(true);
+    }
+}
+
+void UBGraphicsScene::resizedMagnifier(qreal newPercent)
+{
+    if(newPercent > 18 && newPercent < 50)
+    {
+        magniferControlViewWidget->setSize(newPercent);
+        magniferControlViewWidget->grabPoint();
+        magniferDisplayViewWidget->setSize(newPercent);
+        magniferDisplayViewWidget->grabPoint();
+        setModified(true);
+    }
+}
+
+void UBGraphicsScene::addCompass(QPointF center)
+{
+    UBGraphicsCompass* compass = new UBGraphicsCompass(); // mem : owned and destroyed by the scene
+    mTools << compass;
+    addItem(compass);
+
+    QRectF rect = compass->rect();
+    compass->setRect(center.x() - rect.width() / 2, center.y() - rect.height() / 2, rect.width(), rect.height());
+
+    compass->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+
+    compass->setVisible(true);
+}
+
+void UBGraphicsScene::addAristo(QPointF center)
+{
+    UBGraphicsAristo* aristo = new UBGraphicsAristo();
+    mTools << aristo;
+
+    aristo->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+
+    addItem(aristo);
+
+    QPointF itemSceneCenter = aristo->sceneBoundingRect().center();
+    aristo->moveBy(center.x() - itemSceneCenter.x(), center.y() - itemSceneCenter.y());
+
+    aristo->setVisible(true);
+    setModified(true);
+}
+
+void UBGraphicsScene::addCache()
+{
+    UBGraphicsCache* cache = UBGraphicsCache::instance(this);
+    if (!items().contains(cache)) {
+        addItem(cache);
+
+        cache->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+
+        cache->setVisible(true);
+        cache->setSelected(true);
+        UBApplication::boardController->notifyCache(true);
+        UBApplication::boardController->notifyPageChanged();
+    }
+}
+
+void UBGraphicsScene::addMask(const QPointF &center)
+{
+    UBGraphicsCurtainItem* curtain = new UBGraphicsCurtainItem(); // mem : owned and destroyed by the scene
+    mTools << curtain;
+
+    addItem(curtain);
+
+    QRectF rect = UBApplication::boardController->activeScene()->normalizedSceneRect();
+    rect.setRect(center.x() - rect.width()/4, center.y() - rect.height()/4, rect.width()/2 , rect.height()/2);
+    curtain->setRect(rect);
+    curtain->setVisible(true);
+    curtain->setSelected(true);
+}
+
+void UBGraphicsScene::setRenderingQuality(UBItem::RenderingQuality pRenderingQuality)
+{
+    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
+
+    while (itItems.hasNext())
+    {
+        QGraphicsItem *gItem =  itItems.next();
+
+        UBItem *ubItem = dynamic_cast<UBItem*>(gItem);
+
+        if (ubItem)
+        {
+            ubItem->setRenderingQuality(pRenderingQuality);
+        }
+    }
+}
+
+QList<QUrl> UBGraphicsScene::relativeDependencies() const
+{
+    QList<QUrl> relativePathes;
+
+    QListIterator<QGraphicsItem*> itItems(mFastAccessItems);
+
+    while (itItems.hasNext())
+    {
+        UBGraphicsMediaItem *videoItem = qgraphicsitem_cast<UBGraphicsMediaItem*> (itItems.next());
+
+        if (videoItem && videoItem->mediaFileUrl().isRelative())
+        {
+            relativePathes << videoItem->mediaFileUrl();
+        }
+    }
+
+    return relativePathes;
+}
+
+QSize UBGraphicsScene::nominalSize()
+{
+    if (mDocument && !mNominalSize.isValid())
+    {
+        mNominalSize = mDocument->defaultDocumentSize();
+    }
+
+    return mNominalSize;
+}
+
+void UBGraphicsScene::setNominalSize(const QSize& pSize)
+{
+    if (nominalSize() != pSize)
+    {
+        mNominalSize = pSize;
+        emit pageSizeChanged();
+
+        if(mDocument)
+            mDocument->setDefaultDocumentSize(pSize);
+
+    }
+}
+
+void UBGraphicsScene::setNominalSize(int pWidth, int pHeight)
+{
+     setNominalSize(QSize(pWidth, pHeight));
+}
+
+void UBGraphicsScene::setSelectedZLevel(QGraphicsItem * item)
+{
+    item->setZValue(mZLayerController->generateZLevel(itemLayerType::SelectedItem));
+}
+
+void UBGraphicsScene::setOwnZlevel(QGraphicsItem *item)
+{
+    item->setZValue(item->data(UBGraphicsItemData::ItemOwnZValue).toReal());
+}
+
+QUuid UBGraphicsScene::getPersonalUuid(QGraphicsItem *item)
+{
+    QString idCandidate = item->data(UBGraphicsItemData::ItemUuid).toString();
+    return idCandidate == QUuid().toString() ? QUuid() : QUuid(idCandidate);
+}
+
+qreal UBGraphicsScene::changeZLevelTo(QGraphicsItem *item, UBZLayerController::moveDestination dest)
+{
+    return mZLayerController->changeZLevelTo(item, dest);
+}
+
+QGraphicsItem* UBGraphicsScene::rootItem(QGraphicsItem* item) const
+{
+    QGraphicsItem* root = item;
+
+    while (root->parentItem())
+    {
+        root = root->parentItem();
+    }
+
+    return root;
+}
+
+void UBGraphicsScene::drawItems (QPainter * painter, int numItems,
+        QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget)
+{
+    if (mRenderingContext == NonScreen || mRenderingContext == PdfExport)
+    {
+        int count = 0;
+
+        QGraphicsItem** itemsFiltered = new QGraphicsItem*[numItems];
+        QStyleOptionGraphicsItem *optionsFiltered = new QStyleOptionGraphicsItem[numItems];
+
+        for (int i = 0; i < numItems; i++)
+        {
+            if (!mTools.contains(rootItem(items[i])))
+            {
+                bool isPdfItem =  qgraphicsitem_cast<UBGraphicsPDFItem*> (items[i]) != NULL;
+                if(!isPdfItem || mRenderingContext == NonScreen)
+                {
+                    itemsFiltered[count] = items[i];
+                    optionsFiltered[count] = options[i];
+                    count++;
+                }
+            }
+        }
+
+        QGraphicsScene::drawItems(painter, count, itemsFiltered, optionsFiltered, widget);
+
+        delete[] optionsFiltered;
+        delete[] itemsFiltered;
+
+    }
+    else if (mRenderingContext == Podcast)
+    {
+        int count = 0;
+
+        QGraphicsItem** itemsFiltered = new QGraphicsItem*[numItems];
+        QStyleOptionGraphicsItem *optionsFiltered = new QStyleOptionGraphicsItem[numItems];
+
+        for (int i = 0; i < numItems; i++)
+        {
+            bool ok;
+            int itemLayerType = items[i]->data(UBGraphicsItemData::ItemLayerType).toInt(&ok);
+            if (ok && (itemLayerType >= UBItemLayerType::FixedBackground && itemLayerType <= UBItemLayerType::Tool))
+            {
+                itemsFiltered[count] = items[i];
+                optionsFiltered[count] = options[i];
+                count++;
+            }
+        }
+
+        QGraphicsScene::drawItems(painter, count, itemsFiltered, optionsFiltered, widget);
+
+        delete[] optionsFiltered;
+        delete[] itemsFiltered;
+
+    }
+    else
+    {
+        QGraphicsScene::drawItems(painter, numItems, items, options, widget);
+    }
+}
+
+void UBGraphicsScene::drawBackground(QPainter *painter, const QRectF &rect)
+{
+    if (mIsDesktopMode)
+    {
+        QGraphicsScene::drawBackground (painter, rect);
+        return;
+    }
+    bool darkBackground = isDarkBackground ();
+
+    if (darkBackground)
+    {
+      painter->fillRect (rect, QBrush (QColor (Qt::black)));
+    }
+    else
+    {
+      painter->fillRect (rect, QBrush (QColor (Qt::white)));
+    }
+
+    if (mZoomFactor > 0.5)
+    {
+        QColor bgCrossColor;
+
+        if (darkBackground)
+            bgCrossColor = UBSettings::crossDarkBackground;
+        else
+            bgCrossColor = UBSettings::crossLightBackground;
+        if (mZoomFactor < 1.0)
+        {
+            int alpha = 255 * mZoomFactor / 2;
+            bgCrossColor.setAlpha (alpha); // fade the crossing on small zooms
+        }
+
+        painter->setPen (bgCrossColor);
+
+        if (isCrossedBackground())
+        {
+            qreal firstY = ((int) (rect.y () / UBSettings::crossSize)) * UBSettings::crossSize;
+
+            for (qreal yPos = firstY; yPos < rect.y () + rect.height (); yPos += UBSettings::crossSize)
+            {
+                painter->drawLine (rect.x (), yPos, rect.x () + rect.width (), yPos);
+            }
+
+            qreal firstX = ((int) (rect.x () / UBSettings::crossSize)) * UBSettings::crossSize;
+
+            for (qreal xPos = firstX; xPos < rect.x () + rect.width (); xPos += UBSettings::crossSize)
+            {
+                painter->drawLine (xPos, rect.y (), xPos, rect.y () + rect.height ());
+            }
+        }
+    }
+}
+
+void UBGraphicsScene::keyReleaseEvent(QKeyEvent * keyEvent)
+{
+
+    QList<QGraphicsItem*> si = selectedItems();
+
+    if ((si.size() > 0) && (keyEvent->isAccepted()))
+    {
+#ifdef Q_OS_MAC
+        if (keyEvent->key() == Qt::Key_Backspace)
+#else
+        if (keyEvent->matches(QKeySequence::Delete))
+#endif
+        {
+            foreach(QGraphicsItem* item, si)
+            {
+                switch (item->type())
+                {
+                case UBGraphicsWidgetItem::Type:
+                    {
+                        UBGraphicsW3CWidgetItem *wc3_widget = dynamic_cast<UBGraphicsW3CWidgetItem*>(item);
+                        if (0 != wc3_widget)
+                        if (!wc3_widget->hasFocus())
+                            wc3_widget->remove();
+                        break;
+                    }
+                case UBGraphicsTextItem::Type:
+                    {
+                        UBGraphicsTextItem *text_item = dynamic_cast<UBGraphicsTextItem*>(item);
+                        if (0 != text_item)
+                        if (!text_item->hasFocus())
+                            text_item->remove();
+                        break;
+                    }
+
+                default:
+                    {
+                        UBGraphicsItem *ubgi = dynamic_cast<UBGraphicsItem*>(item);
+                        if (0 != ubgi)
+                            ubgi->remove();
+                        else
+                            UBCoreGraphicsScene::removeItem(item);
+                    }
+                }
+            }
+        }
+
+        keyEvent->accept();
+    }
+
+    QGraphicsScene::keyReleaseEvent(keyEvent);
+}
+
+void UBGraphicsScene::setDocumentUpdated()
+{
+    if (document())
+        document()->setMetaData(UBSettings::documentUpdatedAt
+                , UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime()));
+}
+
+void UBGraphicsScene::createEraiser()
+{
+    mEraser = new QGraphicsEllipseItem(); // mem : owned and destroyed by the scene
+    mEraser->setRect(QRect(0, 0, 0, 0));
+    mEraser->setVisible(false);
+
+    mEraser->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+    mEraser->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Eraiser)); //Necessary to set if we want z value to be assigned correctly
+
+    mTools << mEraser;
+    addItem(mEraser);
+
+}
+
+void UBGraphicsScene::createPointer()
+{
+    mPointer = new QGraphicsEllipseItem();  // mem : owned and destroyed by the scene
+    mPointer->setRect(QRect(0, 0, 20, 20));
+    mPointer->setVisible(false);
+
+    mPointer->setPen(Qt::NoPen);
+    mPointer->setBrush(QBrush(QColor(255, 0, 0, 186)));
+
+    mPointer->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+    mPointer->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Pointer)); //Necessary to set if we want z value to be assigned correctly
+
+    mTools << mPointer;
+    addItem(mPointer);
+}
+
+void UBGraphicsScene::setToolCursor(int tool)
+{
+    if (tool == (int)UBStylusTool::Selector ||
+             tool == (int)UBStylusTool::Text ||
+                tool == (int)UBStylusTool::Play)
+    {
+        deselectAllItems();
+    }
+
+    if (mCurrentStroke && mCurrentStroke->polygons().empty()){
+        delete mCurrentStroke;
+        mCurrentStroke = NULL;
+    }
+
+}
+
+void UBGraphicsScene::initStroke()
+{
+    mCurrentStroke = new UBGraphicsStroke();
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsScene.h b/Sankore-3.1/src/domain/UBGraphicsScene.h
index 3f2da89..c7cbc6c 100644
--- a/Sankore-3.1/src/domain/UBGraphicsScene.h
+++ b/Sankore-3.1/src/domain/UBGraphicsScene.h
@@ -1,411 +1,432 @@
-/*
- * 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/>.
- */
-
-#ifndef UBGRAPHICSSCENE_H_
-#define UBGRAPHICSSCENE_H_
-
-#include <QtGui>
-
-#include "frameworks/UBCoreGraphicsScene.h"
-
-#include "core/UB.h"
-
-#include "UBItem.h"
-#include "tools/UBGraphicsCurtainItem.h"
-
-class UBGraphicsPixmapItem;
-class UBGraphicsProxyWidget;
-class UBGraphicsSvgItem;
-class UBGraphicsPolygonItem;
-class UBGraphicsVideoItem;
-class UBGraphicsAudioItem;
-class UBGraphicsWidgetItem;
-class UBGraphicsW3CWidgetItem;
-class UBGraphicsAppleWidgetItem;
-class UBGraphicsPDFItem;
-class UBGraphicsTextItem;
-class UBGraphicsRuler;
-class UBGraphicsProtractor;
-class UBGraphicsCompass;
-class UBAbstractWidget;
-class UBDocumentProxy;
-class UBGraphicsCurtainItem;
-class UBGraphicsStroke;
-class UBMagnifierParams;
-class UBMagnifier;
-class UBGraphicsCache;
-
-const double PI = 4.0 * atan(1.0);
-
-class UBZLayerController : public QObject
-{
-    Q_OBJECT
-
-public:
-    struct ItemLayerTypeData {
-        ItemLayerTypeData() : bottomLimit(0), topLimit(0), curValue(0), incStep(1) {;}
-        ItemLayerTypeData(qreal bot, qreal top, qreal increment = 1) : bottomLimit(bot), topLimit(top), curValue(bot), incStep(increment) {;}
-        qreal bottomLimit; //bottom bound of the layer
-        qreal topLimit;//top bound of the layer
-        qreal curValue;//current value of variable
-        qreal incStep;//incremental step
-    };
-
-    enum moveDestination {
-        up
-        , down
-        , top
-        , bottom
-    };
-
-    typedef QMap<itemLayerType::Enum, ItemLayerTypeData> ScopeMap;
-
-    UBZLayerController(QGraphicsScene *scene);
-
-    qreal getBottomLimit(itemLayerType::Enum key) const {return scopeMap.value(key).bottomLimit;}
-    qreal getTopLimit(itemLayerType::Enum key) const {return scopeMap.value(key).topLimit;}
-    bool validLayerType(itemLayerType::Enum key) const {return scopeMap.contains(key);}
-
-    static qreal errorNum() {return errorNumber;}
-
-    qreal generateZLevel(itemLayerType::Enum key);
-    qreal generateZLevel(QGraphicsItem *item);
-
-    qreal changeZLevelTo(QGraphicsItem *item, moveDestination dest);
-    itemLayerType::Enum typeForData(QGraphicsItem *item) const;
-
-private:
-    ScopeMap scopeMap;
-    static qreal errorNumber;
-    QGraphicsScene *mScene;
-};
-
-class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
-{
-    Q_OBJECT
-
-    public:
-
-    //        tmp stub for divide addings scene objects from undo mechanism implementation
-    void setURStackEnable(bool set = true) {enableUndoRedoStack = set;}
-
-    UBGraphicsScene(UBDocumentProxy *parent);
-        virtual ~UBGraphicsScene();
-
-        virtual UBItem* deepCopy() const;
-
-        UBGraphicsScene* sceneDeepCopy() const;
-
-        void clearItemsAndAnnotations();
-        void clearItems();
-        void clearAnnotations();
-
-        bool inputDevicePress(const QPointF& scenePos, const qreal& pressure = 1.0);
-        bool inputDeviceMove(const QPointF& scenePos, const qreal& pressure = 1.0);
-        bool inputDeviceRelease();
-
-        void leaveEvent (QEvent* event);
-
-        void addItem(QGraphicsItem* item);
-        void removeItem(QGraphicsItem* item);
-
-        void addItems(const QSet<QGraphicsItem*>& item);
-        void removeItems(const QSet<QGraphicsItem*>& item);
-
-        UBGraphicsWidgetItem* addWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0));
-        UBGraphicsAppleWidgetItem* addAppleWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0));
-        UBGraphicsW3CWidgetItem* addW3CWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0),int widgetType = UBGraphicsItemType::W3CWidgetItemType);
-        void addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, const QPointF& pPos = QPointF(0, 0));
-
-        UBGraphicsVideoItem* addVideo(const QUrl& pVideoFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
-        UBGraphicsAudioItem* addAudio(const QUrl& pAudioFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
-        UBGraphicsSvgItem* addSvg(const QUrl& pSvgFileUrl, const QPointF& pPos = QPointF(0, 0));
-        UBGraphicsTextItem* addText(const QString& pString, const QPointF& pTopLeft = QPointF(0, 0));
-        UBGraphicsTextItem* textForObjectName(const QString& pString, const QString &objectName = "UBTGZeroPageSessionTitle");
-
-        UBGraphicsTextItem*  addTextWithFont(const QString& pString, const QPointF& pTopLeft = QPointF(0, 0)
-                , int pointSize = -1, const QString& fontFamily = "", bool bold = false, bool italic = false);
-        UBGraphicsTextItem* addTextHtml(const QString &pString = QString(), const QPointF& pTopLeft = QPointF(0, 0));
-
-        UBGraphicsW3CWidgetItem* addOEmbed(const QUrl& pContentUrl, const QPointF& pPos = QPointF(0, 0));
-
-        QGraphicsItem* setAsBackgroundObject(QGraphicsItem* item, bool pAdaptTransformation = false, bool expand = false);
-
-        QGraphicsItem* backgroundObject() const
-        {
-            return mBackgroundObject;
-        }
-
-        bool isBackgroundObject(const QGraphicsItem* item) const
-        {
-            return item == mBackgroundObject;
-        }
-
-        QGraphicsItem* scaleToFitDocumentSize(QGraphicsItem* item, bool center = false, int margin = 0, bool expand = false);
-
-        QRectF normalizedSceneRect(qreal ratio = -1.0);
-
-        void moveTo(const QPointF& pPoint);
-        void drawLineTo(const QPointF& pEndPoint, const qreal& pWidth, bool bLineStyle);
-        void eraseLineTo(const QPointF& pEndPoint, const qreal& pWidth);
-        void drawArcTo(const QPointF& pCenterPoint, qreal pSpanAngle);
-
-        bool isEmpty() const;
-
-        bool isModified() const
-        {
-            return mIsModified;
-        }
-
-        void setModified(bool pModified)
-        {
-            mIsModified = pModified;
-        }
-
-        void setDocument(UBDocumentProxy* pDocument);
-
-        UBDocumentProxy* document() const
-        {
-            return mDocument;
-        }
-
-        bool isDarkBackground() const
-        {
-            return mDarkBackground;
-        }
-
-        bool isLightBackground() const
-        {
-            return !mDarkBackground;
-        }
-
-        bool isCrossedBackground() const
-        {
-            return mCrossedBackground;
-        }
-
-        bool hasBackground()
-        {
-            return (mBackgroundObject != 0);
-        }
-
-        void addRuler(QPointF center);
-        void addProtractor(QPointF center);
-        void addCompass(QPointF center);
-        void addTriangle(QPointF center);
-        void addMagnifier(UBMagnifierParams params);
-
-        void addMask(const QPointF &center = QPointF());
-        void addCache();
-
-        QList<QGraphicsItem*> getFastAccessItems()
-        {
-            return mFastAccessItems;
-        }
-
-        class SceneViewState
-        {
-            public:
-                SceneViewState()
-                {
-                    zoomFactor = 1;
-                    horizontalPosition = 0;
-                    verticalPostition = 0;
-                }
-
-                SceneViewState(qreal pZoomFactor, int pHorizontalPosition, int pVerticalPostition)
-                {
-                    zoomFactor = pZoomFactor;
-                    horizontalPosition = pHorizontalPosition;
-                    verticalPostition = pVerticalPostition;
-                }
-
-                qreal zoomFactor;
-                int horizontalPosition;
-                int verticalPostition;
-        };
-
-        SceneViewState viewState() const
-        {
-            return mViewState;
-        }
-
-        void setViewState(const SceneViewState& pViewState)
-        {
-            mViewState = pViewState;
-        }
-
-        virtual void setRenderingQuality(UBItem::RenderingQuality pRenderingQuality);
-
-        QList<QUrl> relativeDependencies() const;
-
-        QSize nominalSize();
-
-        void setNominalSize(const QSize& pSize);
-
-        void setNominalSize(int pWidth, int pHeight);
-
-        qreal changeZLevelTo(QGraphicsItem *item, UBZLayerController::moveDestination dest);
-
-        enum RenderingContext
-        {
-            Screen = 0, NonScreen, PdfExport, Podcast
-        };
-
-        void setRenderingContext(RenderingContext pRenderingContext)
-        {
-            mRenderingContext = pRenderingContext;
-        }
-
-        RenderingContext renderingContext() const
-        {
-            return mRenderingContext;
-        }
-
-        QSet<QGraphicsItem*> tools(){ return mTools;}
-
-        void registerTool(QGraphicsItem* item)
-        {
-            mTools << item;
-        }
-
-        const QPointF& previousPoint()
-        {
-            return mPreviousPoint;
-        }
-
-        void setSelectedZLevel(QGraphicsItem *item);
-        void setOwnZlevel(QGraphicsItem *item);
-
-        void groupItems(QList<QGraphicsItem *> &itemList);
-public slots:
-
-        void hideEraser();
-
-        void setBackground(bool pIsDark, bool pIsCrossed);
-        void setBackgroundZoomFactor(qreal zoom);
-        void setDrawingMode(bool bModeDesktop);
-        void deselectAllItems();
-
-        UBGraphicsPixmapItem* addPixmap(const QPixmap& pPixmap, const QPointF& pPos = QPointF(0,0), qreal scaleFactor = 1.0, bool pUseAnimation = false);
-
-        void textUndoCommandAdded(UBGraphicsTextItem *textItem);
-
-        void setToolCursor(int tool);
-
-        void selectionChangedProcessing();
-        void updateGroupButtonState();
-        void groupButtonClicked();
-
-        void moveMagnifier(QPoint newPos);
-        void closeMagnifier();
-        void zoomInMagnifier();
-        void zoomOutMagnifier();
-        void resizedMagnifier(qreal newPercent);
-
-    signals:
-
-       void pageSizeChanged();
-
-    protected:
-
-        UBGraphicsPolygonItem* lineToPolygonItem(const QLineF& pLine, const qreal& pWidth);
-        UBGraphicsPolygonItem* arcToPolygonItem(const QLineF& pStartRadius, qreal pSpanAngle, qreal pWidth);
-        UBGraphicsPolygonItem* polygonToPolygonItem(const QPolygonF pPolygon);
-
-        void initPolygonItem(UBGraphicsPolygonItem*);
-
-        void drawEraser(const QPointF& pEndPoint, bool isFirstDraw = false);
-        void drawPointer(const QPointF& pEndPoint, bool isFirstDraw = false);
-        void DisposeMagnifierQWidgets();
-
-
-        virtual void keyReleaseEvent(QKeyEvent * keyEvent);
-
-        void recolorAllItems();
-
-       virtual void drawItems (QPainter * painter, int numItems,
-                QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget = 0);
-
-        QGraphicsItem* rootItem(QGraphicsItem* item) const;
-
-        virtual void drawBackground(QPainter *painter, const QRectF &rect);
-
-    private:
-        void setDocumentUpdated();
-        void createEraiser();
-        void createPointer();
-
-        QGraphicsEllipseItem* mEraser;
-        QGraphicsEllipseItem* mPointer;
-
-        QSet<QGraphicsItem*> mAddedItems;
-        QSet<QGraphicsItem*> mRemovedItems;
-
-        UBDocumentProxy* mDocument;
-
-        bool mDarkBackground;
-        bool mCrossedBackground;
-        bool mIsDesktopMode;
-        qreal mZoomFactor;
-
-        bool mIsModified;
-
-        QGraphicsItem* mBackgroundObject;
-
-        QPointF mPreviousPoint;
-        qreal mPreviousWidth;
-
-        QList<UBGraphicsPolygonItem*> mPreviousPolygonItems;
-
-        SceneViewState mViewState;
-
-        bool mInputDeviceIsPressed;
-
-        QSet<QGraphicsItem*> mTools;
-
-        UBGraphicsPolygonItem *mArcPolygonItem;
-
-        QSize mNominalSize;
-
-        RenderingContext mRenderingContext;
-
-        UBGraphicsStroke* mCurrentStroke;
-
-        bool mShouldUseOMP;
-
-        int mItemCount;
-
-        QList<QGraphicsItem*> mFastAccessItems; // a local copy as QGraphicsScene::items() is very slow in Qt 4.6
-
-        //int mMesure1Ms, mMesure2Ms;
-
-        bool mHasCache;
-        //        tmp stub for divide addings scene objects from undo mechanism implementation
-        bool enableUndoRedoStack;
-
-        UBMagnifier *magniferControlViewWidget;
-        UBMagnifier *magniferDisplayViewWidget;
-
-        UBZLayerController *mZLayerController;
-        UBGraphicsPolygonItem* mpLastPolygon;
-
-        bool mDrawWithCompass;
-
-};
-
-
-
-#endif /* UBGRAPHICSSCENE_H_ */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UBGRAPHICSSCENE_H_
+#define UBGRAPHICSSCENE_H_
+
+#include <QtGui>
+
+#include "frameworks/UBCoreGraphicsScene.h"
+
+#include "core/UB.h"
+
+#include "UBItem.h"
+#include "tools/UBGraphicsCurtainItem.h"
+
+class UBGraphicsPixmapItem;
+class UBGraphicsProxyWidget;
+class UBGraphicsSvgItem;
+class UBGraphicsPolygonItem;
+class UBGraphicsMediaItem;
+class UBGraphicsVideoItem;
+class UBGraphicsAudioItem;
+class UBGraphicsWidgetItem;
+class UBGraphicsW3CWidgetItem;
+class UBGraphicsAppleWidgetItem;
+class UBToolWidget;
+class UBGraphicsPDFItem;
+class UBGraphicsTextItem;
+class UBGraphicsRuler;
+class UBGraphicsProtractor;
+class UBGraphicsCompass;
+class UBDocumentProxy;
+class UBGraphicsCurtainItem;
+class UBGraphicsStroke;
+class UBMagnifierParams;
+class UBMagnifier;
+class UBGraphicsCache;
+class UBGraphicsGroupContainerItem;
+
+const double PI = 4.0 * atan(1.0);
+
+class UBZLayerController : public QObject
+{
+    Q_OBJECT
+
+public:
+    struct ItemLayerTypeData {
+        ItemLayerTypeData() : bottomLimit(0), topLimit(0), curValue(0), incStep(1) {;}
+        ItemLayerTypeData(qreal bot, qreal top, qreal increment = 1) : bottomLimit(bot), topLimit(top), curValue(bot), incStep(increment) {;}
+        qreal bottomLimit; //bottom bound of the layer
+        qreal topLimit;//top bound of the layer
+        qreal curValue;//current value of variable
+        qreal incStep;//incremental step
+    };
+
+    enum moveDestination {
+        up
+        , down
+        , top
+        , bottom
+    };
+
+    typedef QMap<itemLayerType::Enum, ItemLayerTypeData> ScopeMap;
+
+    UBZLayerController(QGraphicsScene *scene);
+
+    qreal getBottomLimit(itemLayerType::Enum key) const {return scopeMap.value(key).bottomLimit;}
+    qreal getTopLimit(itemLayerType::Enum key) const {return scopeMap.value(key).topLimit;}
+    bool validLayerType(itemLayerType::Enum key) const {return scopeMap.contains(key);}
+
+    static qreal errorNum() {return errorNumber;}
+
+    qreal generateZLevel(itemLayerType::Enum key);
+    qreal generateZLevel(QGraphicsItem *item);
+
+    qreal changeZLevelTo(QGraphicsItem *item, moveDestination dest);
+    itemLayerType::Enum typeForData(QGraphicsItem *item) const;
+    void setLayerType(QGraphicsItem *pItem, itemLayerType::Enum pNewType);
+
+private:
+    ScopeMap scopeMap;
+    static qreal errorNumber;
+    QGraphicsScene *mScene;
+};
+
+class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
+{
+    Q_OBJECT
+
+    public:
+
+    enum clearCase {
+        clearItemsAndAnnotations = 0
+        , clearAnnotations
+        , clearItems
+        , clearBackground
+    };
+
+    //        tmp stub for divide addings scene objects from undo mechanism implementation
+        void enableUndoRedoStack(){mUndoRedoStackEnabled = true;}
+        void setURStackEnable(bool enable){mUndoRedoStackEnabled = enable;}
+        bool isURStackIsEnabled(){return mUndoRedoStackEnabled;}
+
+        UBGraphicsScene(UBDocumentProxy *parent, bool enableUndoRedoStack = true);
+        virtual ~UBGraphicsScene();
+
+        virtual UBItem* deepCopy() const;
+
+        virtual void copyItemParameters(UBItem *copy) const {Q_UNUSED(copy);}
+
+        UBGraphicsScene* sceneDeepCopy() const;
+
+        void clearContent(clearCase pCase = clearItemsAndAnnotations);
+
+        bool inputDevicePress(const QPointF& scenePos, const qreal& pressure = 1.0);
+        bool inputDeviceMove(const QPointF& scenePos, const qreal& pressure = 1.0);
+        bool inputDeviceRelease();
+
+        void leaveEvent (QEvent* event);
+
+        void addItem(QGraphicsItem* item);
+        void removeItem(QGraphicsItem* item);
+
+        void addItems(const QSet<QGraphicsItem*>& item);
+        void removeItems(const QSet<QGraphicsItem*>& item);
+
+        UBGraphicsWidgetItem* addWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0));
+        UBGraphicsAppleWidgetItem* addAppleWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0));
+        UBGraphicsW3CWidgetItem* addW3CWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0));
+        void addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, const QPointF& pPos = QPointF(0, 0));
+
+        
+
+        UBGraphicsMediaItem* addMedia(const QUrl& pMediaFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
+        UBGraphicsMediaItem* addVideo(const QUrl& pVideoFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
+        UBGraphicsMediaItem* addAudio(const QUrl& pAudioFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
+        UBGraphicsSvgItem* addSvg(const QUrl& pSvgFileUrl, const QPointF& pPos = QPointF(0, 0), const QByteArray pData = QByteArray());
+        UBGraphicsTextItem* addText(const QString& pString, const QPointF& pTopLeft = QPointF(0, 0));
+        UBGraphicsTextItem* textForObjectName(const QString& pString, const QString &objectName = "UBTGZeroPageSessionTitle");
+
+        UBGraphicsTextItem*  addTextWithFont(const QString& pString, const QPointF& pTopLeft = QPointF(0, 0)
+                , int pointSize = -1, const QString& fontFamily = "", bool bold = false, bool italic = false);
+        UBGraphicsTextItem* addTextHtml(const QString &pString = QString(), const QPointF& pTopLeft = QPointF(0, 0));
+
+        UBGraphicsW3CWidgetItem* addOEmbed(const QUrl& pContentUrl, const QPointF& pPos = QPointF(0, 0));
+
+        UBGraphicsGroupContainerItem *createGroup(QList<QGraphicsItem*> items);
+        void addGroup(UBGraphicsGroupContainerItem *groupItem);
+
+        QGraphicsItem* setAsBackgroundObject(QGraphicsItem* item, bool pAdaptTransformation = false, bool expand = false);
+
+        QGraphicsItem* backgroundObject() const
+        {
+            return mBackgroundObject;
+        }
+
+        bool isBackgroundObject(const QGraphicsItem* item) const
+        {
+            return item == mBackgroundObject;
+        }
+
+        QGraphicsItem* scaleToFitDocumentSize(QGraphicsItem* item, bool center = false, int margin = 0, bool expand = false);
+
+        QRectF normalizedSceneRect(qreal ratio = -1.0);
+
+        QGraphicsItem *itemForUuid(QUuid uuid);
+
+        void moveTo(const QPointF& pPoint);
+        void drawLineTo(const QPointF& pEndPoint, const qreal& pWidth, bool bLineStyle);
+        void eraseLineTo(const QPointF& pEndPoint, const qreal& pWidth);
+        void drawArcTo(const QPointF& pCenterPoint, qreal pSpanAngle);
+
+        bool isEmpty() const;
+
+        void setDocument(UBDocumentProxy* pDocument);
+
+        UBDocumentProxy* document() const
+        {
+            return mDocument;
+        }
+
+        bool isDarkBackground() const
+        {
+            return mDarkBackground;
+        }
+
+        bool isLightBackground() const
+        {
+            return !mDarkBackground;
+        }
+
+        bool isCrossedBackground() const
+        {
+            return mCrossedBackground;
+        }
+
+        bool hasBackground()
+        {
+            return (mBackgroundObject != 0);
+        }
+
+        void addRuler(QPointF center);
+        void addProtractor(QPointF center);
+        void addCompass(QPointF center);
+        void addTriangle(QPointF center);
+        void addMagnifier(UBMagnifierParams params);
+        void addAristo(QPointF center);
+
+        void addMask(const QPointF &center = QPointF());
+        void addCache();
+
+        QList<QGraphicsItem*> getFastAccessItems()
+        {
+            return mFastAccessItems;
+        }
+
+        class SceneViewState
+        {
+            public:
+                SceneViewState()
+                {
+                    zoomFactor = 1;
+                    horizontalPosition = 0;
+                    verticalPostition = 0;
+                }
+
+                SceneViewState(qreal pZoomFactor, int pHorizontalPosition, int pVerticalPostition)
+                {
+                    zoomFactor = pZoomFactor;
+                    horizontalPosition = pHorizontalPosition;
+                    verticalPostition = pVerticalPostition;
+                }
+
+                qreal zoomFactor;
+                int horizontalPosition;
+                int verticalPostition;
+        };
+
+        SceneViewState viewState() const
+        {
+            return mViewState;
+        }
+
+        void setViewState(const SceneViewState& pViewState)
+        {
+            mViewState = pViewState;
+        }
+
+        virtual void setRenderingQuality(UBItem::RenderingQuality pRenderingQuality);
+
+        QList<QUrl> relativeDependencies() const;
+
+        QSize nominalSize();
+
+        void setNominalSize(const QSize& pSize);
+
+        void setNominalSize(int pWidth, int pHeight);
+
+        qreal changeZLevelTo(QGraphicsItem *item, UBZLayerController::moveDestination dest);
+
+        enum RenderingContext
+        {
+            Screen = 0, NonScreen, PdfExport, Podcast
+        };
+
+        void setRenderingContext(RenderingContext pRenderingContext)
+        {
+            mRenderingContext = pRenderingContext;
+        }
+
+        RenderingContext renderingContext() const
+        {
+            return mRenderingContext;
+        }
+
+        QSet<QGraphicsItem*> tools(){ return mTools;}
+
+        void registerTool(QGraphicsItem* item)
+        {
+            mTools << item;
+        }
+
+        const QPointF& previousPoint()
+        {
+            return mPreviousPoint;
+        }
+
+        void setSelectedZLevel(QGraphicsItem *item);
+        void setOwnZlevel(QGraphicsItem *item);
+
+        static QUuid getPersonalUuid(QGraphicsItem *item);
+
+        UBGraphicsPolygonItem* polygonToPolygonItem(const QPolygonF pPolygon);
+
+public slots:
+		void initStroke();
+        void hideEraser();
+
+        void setBackground(bool pIsDark, bool pIsCrossed);
+        void setBackgroundZoomFactor(qreal zoom);
+        void setDrawingMode(bool bModeDesktop);
+        void deselectAllItems();
+
+        UBGraphicsPixmapItem* addPixmap(const QPixmap& pPixmap, 
+            QGraphicsItem* replaceFor,
+            const QPointF& pPos = QPointF(0,0), 
+            qreal scaleFactor = 1.0, 
+            bool pUseAnimation = false);
+
+        void textUndoCommandAdded(UBGraphicsTextItem *textItem);
+
+        void setToolCursor(int tool);
+
+        void selectionChangedProcessing();
+        void updateGroupButtonState();
+        void moveMagnifier();
+        void moveMagnifier(QPoint newPos, bool forceGrab = false);
+        void closeMagnifier();
+        void zoomInMagnifier();
+        void zoomOutMagnifier();
+        void resizedMagnifier(qreal newPercent);
+
+    signals:
+
+       void pageSizeChanged();
+
+    protected:
+
+        UBGraphicsPolygonItem* lineToPolygonItem(const QLineF& pLine, const qreal& pWidth);
+        UBGraphicsPolygonItem* arcToPolygonItem(const QLineF& pStartRadius, qreal pSpanAngle, qreal pWidth);
+
+        void initPolygonItem(UBGraphicsPolygonItem*);
+
+        void drawEraser(const QPointF& pEndPoint, bool isFirstDraw = false);
+        void drawPointer(const QPointF& pEndPoint, bool isFirstDraw = false);
+        void DisposeMagnifierQWidgets();
+
+
+        virtual void keyReleaseEvent(QKeyEvent * keyEvent);
+
+        void recolorAllItems();
+
+       virtual void drawItems (QPainter * painter, int numItems,
+                QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget = 0);
+
+        QGraphicsItem* rootItem(QGraphicsItem* item) const;
+
+        virtual void drawBackground(QPainter *painter, const QRectF &rect);
+
+    private:
+        void setDocumentUpdated();
+        void createEraiser();
+        void createPointer();
+
+        QGraphicsEllipseItem* mEraser;
+        QGraphicsEllipseItem* mPointer;
+
+        QSet<QGraphicsItem*> mAddedItems;
+        QSet<QGraphicsItem*> mRemovedItems;
+
+        UBDocumentProxy* mDocument;
+
+        bool mDarkBackground;
+        bool mCrossedBackground;
+        bool mIsDesktopMode;
+        qreal mZoomFactor;
+
+        QGraphicsItem* mBackgroundObject;
+
+        QPointF mPreviousPoint;
+        qreal mPreviousWidth;
+
+        QList<UBGraphicsPolygonItem*> mPreviousPolygonItems;
+
+        SceneViewState mViewState;
+
+        bool mInputDeviceIsPressed;
+
+        QSet<QGraphicsItem*> mTools;
+
+        UBGraphicsPolygonItem *mArcPolygonItem;
+
+        QSize mNominalSize;
+
+        RenderingContext mRenderingContext;
+
+        UBGraphicsStroke* mCurrentStroke;
+
+        bool mShouldUseOMP;
+
+        int mItemCount;
+
+        QList<QGraphicsItem*> mFastAccessItems; // a local copy as QGraphicsScene::items() is very slow in Qt 4.6
+
+        //int mMesure1Ms, mMesure2Ms;
+
+        bool mHasCache;
+        //        tmp stub for divide addings scene objects from undo mechanism implementation
+        bool mUndoRedoStackEnabled;
+
+        UBMagnifier *magniferControlViewWidget;
+        UBMagnifier *magniferDisplayViewWidget;
+
+        UBZLayerController *mZLayerController;
+        UBGraphicsPolygonItem* mpLastPolygon;
+
+        bool mDrawWithCompass;
+
+};
+
+
+
+#endif /* UBGRAPHICSSCENE_H_ */
diff --git a/Sankore-3.1/src/domain/UBGraphicsStroke.cpp b/Sankore-3.1/src/domain/UBGraphicsStroke.cpp
index 501317e..c8c89a0 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStroke.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsStroke.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsStroke.h"
 
 #include "UBGraphicsPolygonItem.h"
diff --git a/Sankore-3.1/src/domain/UBGraphicsStroke.h b/Sankore-3.1/src/domain/UBGraphicsStroke.h
index 29d8cd9..70709e3 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStroke.h
+++ b/Sankore-3.1/src/domain/UBGraphicsStroke.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSSTROKE_H_
 #define UBGRAPHICSSTROKE_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp
index a7f658d..925ac82 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.cpp
@@ -1,14 +1,43 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBGraphicsStrokesGroup.h"
 
+#include "domain/UBGraphicsPolygonItem.h"
+
 #include "core/memcheck.h"
 
-UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent):QGraphicsItemGroup(parent)
+UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent)
+    :QGraphicsItemGroup(parent), UBGraphicsItem()
 {
-    mDelegate = new UBGraphicsItemDelegate(this, 0, true, true);
-    mDelegate->init();
-    mDelegate->setFlippable(true);
+    setDelegate(new UBGraphicsItemDelegate(this, 0, true, true, false));
+    Delegate()->init();
+    Delegate()->setFlippable(true);
+    Delegate()->setRotatable(true);
+
+
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
 
+    setUuid(QUuid::createUuid());
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
     setFlag(QGraphicsItem::ItemIsSelectable, true);
@@ -17,14 +46,65 @@ UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent):QGraphicsI
 
 UBGraphicsStrokesGroup::~UBGraphicsStrokesGroup()
 {
-    if(mDelegate){
-        delete mDelegate;
+}
+
+void UBGraphicsStrokesGroup::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
+void UBGraphicsStrokesGroup::setColor(const QColor &color, colorType pColorType)
+{
+    //TODO Implement common mechanism of managing groups, drop UBGraphicsStroke if it's obsolete
+    //Using casting for the moment
+    foreach (QGraphicsItem *item, childItems()) {
+        if (item->type() == UBGraphicsPolygonItem::Type) {
+            UBGraphicsPolygonItem *curPolygon = static_cast<UBGraphicsPolygonItem *>(item);
+
+            switch (pColorType) {
+            case currentColor :
+                curPolygon->setColor(color);
+                break;
+            case colorOnLightBackground :
+                 curPolygon->setColorOnLightBackground(color);
+                break;
+            case colorOnDarkBackground :
+                 curPolygon->setColorOnDarkBackground(color);
+                break;
+            }
+        }
     }
 }
 
+QColor UBGraphicsStrokesGroup::color(colorType pColorType) const
+{
+    QColor result;
+
+    foreach (QGraphicsItem *item, childItems()) {
+        if (item->type() == UBGraphicsPolygonItem::Type) {
+            UBGraphicsPolygonItem *curPolygon = static_cast<UBGraphicsPolygonItem *>(item);
+
+            switch (pColorType) {
+            case currentColor :
+                result = curPolygon->color();
+                break;
+            case colorOnLightBackground :
+                result = curPolygon->colorOnLightBackground();
+                break;
+            case colorOnDarkBackground :
+                result = curPolygon->colorOnDarkBackground();
+                break;
+            }
+
+        }
+    }
+
+    return result;
+}
+
 void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mousePressEvent(event))
+    if (Delegate()->mousePressEvent(event))
     {
         //NOOP
     }
@@ -36,7 +116,7 @@ void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsStrokesGroup::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mouseMoveEvent(event))
+    if (Delegate()->mouseMoveEvent(event))
     {
         // NOOP;
     }
@@ -48,28 +128,52 @@ void UBGraphicsStrokesGroup::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    mDelegate->mouseReleaseEvent(event);
+    Delegate()->mouseReleaseEvent(event);
     QGraphicsItemGroup::mouseReleaseEvent(event);
 }
 
 UBItem* UBGraphicsStrokesGroup::deepCopy() const
 {
-   UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
+	UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
 
-   copy->setPos(this->pos());
-   copy->setTransform(this->transform());
-   copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-   copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-   copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-   copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+	QTransform groupTransform = transform();
+	const_cast<UBGraphicsStrokesGroup*>(this)->resetTransform();
 
-   return copy;
+	QList<QGraphicsItem*> chl = childItems();
+
+	foreach(QGraphicsItem *child, chl)
+	{
+		UBGraphicsPolygonItem *polygon = dynamic_cast<UBGraphicsPolygonItem*>(child);
+
+		if (polygon){
+            UBGraphicsPolygonItem *polygonCopy = dynamic_cast<UBGraphicsPolygonItem*>(polygon->deepCopy());
+            if (polygonCopy)
+            {
+                QGraphicsItem* pItem = dynamic_cast<QGraphicsItem*>(polygonCopy);
+                copy->addToGroup(pItem);
+                polygonCopy->setStrokesGroup(copy);
+            }
+		}
+
+	}
+	const_cast<UBGraphicsStrokesGroup*>(this)->setTransform(groupTransform);
+	copyItemParameters(copy);
+
+	return copy;
 }
 
-void UBGraphicsStrokesGroup::remove()
+void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const
 {
-    if (mDelegate)
-        mDelegate->remove(true);
+	QGraphicsItem *cp = dynamic_cast<QGraphicsItem*>(copy);
+    if(NULL != cp)
+    {
+        cp->setTransform(transform());
+
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+    }
 }
 
 void UBGraphicsStrokesGroup::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
@@ -83,6 +187,26 @@ void UBGraphicsStrokesGroup::paint(QPainter *painter, const QStyleOptionGraphics
 
 QVariant UBGraphicsStrokesGroup::itemChange(GraphicsItemChange change, const QVariant &value)
 {
-    QVariant newValue = mDelegate->itemChange(change, value);
+    QVariant newValue = Delegate()->itemChange(change, value);
     return QGraphicsItemGroup::itemChange(change, newValue);
 }
+
+
+QPainterPath UBGraphicsStrokesGroup::shape () const
+{
+    QPainterPath path;
+
+    if (isSelected())
+    {
+        path.addRect(boundingRect());
+    }
+    else
+    {
+        foreach(QGraphicsItem* item, childItems())
+        {
+            path.addPath(item->shape());
+        } 
+    }
+
+    return path;
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h
index 0d117c3..f7878ce 100644
--- a/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h
+++ b/Sankore-3.1/src/domain/UBGraphicsStrokesGroup.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBGRAPHICSSTROKESGROUP_H
 #define UBGRAPHICSSTROKESGROUP_H
 
@@ -11,18 +33,29 @@ class UBGraphicsStrokesGroup : public QObject, public QGraphicsItemGroup, public
 {
     Q_OBJECT
 public:
+    enum colorType {
+        currentColor = 0
+        , colorOnLightBackground
+        , colorOnDarkBackground
+    };
+
     UBGraphicsStrokesGroup(QGraphicsItem* parent = 0);
     ~UBGraphicsStrokesGroup();
     virtual UBItem* deepCopy() const;
-    virtual void remove();
-    virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate;}
+    virtual void copyItemParameters(UBItem *copy) const;
     enum { Type = UBGraphicsItemType::StrokeItemType };
     virtual int type() const
     {
         return Type;
     }
+    virtual void setUuid(const QUuid &pUuid);
+    void setColor(const QColor &color, colorType pColorType = currentColor);
+    QColor color(colorType pColorType = currentColor) const;
 
 protected:
+
+    virtual QPainterPath shape () const;
+
     virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
     virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
     virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
diff --git a/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp b/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp
index 6cf3ddc..89d277a 100644
--- a/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsSvgItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsSvgItem.h"
 
 #include <QtGui>
@@ -53,9 +60,11 @@ void UBGraphicsSvgItem::init()
 {
     setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
 
-    mDelegate = new UBGraphicsItemDelegate(this, 0, true, true);
-    mDelegate->init();
-    mDelegate->setFlippable(true);
+    setDelegate(new UBGraphicsItemDelegate(this, 0, true, true, false, true));
+    Delegate()->init();
+    Delegate()->setFlippable(true);
+    Delegate()->setRotatable(true);
+
 
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
 
@@ -63,13 +72,13 @@ void UBGraphicsSvgItem::init()
     setMaximumCacheSize(boundingRect().size().toSize() * UB_MAX_ZOOM);
 
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
+
+    setUuid(QUuid::createUuid());
 }
 
 
 UBGraphicsSvgItem::~UBGraphicsSvgItem()
 {
-    if (mDelegate)
-        delete mDelegate;
 }
 
 
@@ -81,14 +90,14 @@ QByteArray UBGraphicsSvgItem::fileData() const
 
 QVariant UBGraphicsSvgItem::itemChange(GraphicsItemChange change, const QVariant &value)
 {
-    QVariant newValue = mDelegate->itemChange(change, value);
+    QVariant newValue = Delegate()->itemChange(change, value);
     return QGraphicsSvgItem::itemChange(change, newValue);
 }
 
 
 void UBGraphicsSvgItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mousePressEvent(event))
+    if (Delegate()->mousePressEvent(event))
     {
         //NOOP
     }
@@ -101,7 +110,7 @@ void UBGraphicsSvgItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsSvgItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mouseMoveEvent(event))
+    if (Delegate()->mouseMoveEvent(event))
     {
         // NOOP;
     }
@@ -114,7 +123,7 @@ void UBGraphicsSvgItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsSvgItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    mDelegate->mouseReleaseEvent(event);
+    Delegate()->mouseReleaseEvent(event);
     QGraphicsSvgItem::mouseReleaseEvent(event);
 }
 
@@ -133,14 +142,9 @@ UBItem* UBGraphicsSvgItem::deepCopy() const
 {
     UBGraphicsSvgItem* copy = new UBGraphicsSvgItem(this->fileData());
 
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
-    copy->setUuid(this->uuid()); // this is OK for now as long as SVG are imutable
-    copy->setSourceUrl(this->sourceUrl());
+    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
+
+    copyItemParameters(copy);
 
     // TODO UB 4.7... complete all members ?
 
@@ -148,6 +152,20 @@ UBItem* UBGraphicsSvgItem::deepCopy() const
 
 }
 
+void UBGraphicsSvgItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsSvgItem *cp = dynamic_cast<UBGraphicsSvgItem*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+        cp->setSourceUrl(this->sourceUrl());
+    }
+}
 
 void UBGraphicsSvgItem::setRenderingQuality(RenderingQuality pRenderingQuality)
 {
@@ -170,12 +188,6 @@ UBGraphicsScene* UBGraphicsSvgItem::scene()
 }
 
 
-void UBGraphicsSvgItem::remove()
-{
-    if (mDelegate)
-        mDelegate->remove(true);
-}
-
 
 UBGraphicsPixmapItem* UBGraphicsSvgItem::toPixmapItem() const
 {
@@ -194,3 +206,9 @@ UBGraphicsPixmapItem* UBGraphicsSvgItem::toPixmapItem() const
 
     return pixmapItem;
 }
+
+void UBGraphicsSvgItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsSvgItem.h b/Sankore-3.1/src/domain/UBGraphicsSvgItem.h
index eb238cf..ceb7b1b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsSvgItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsSvgItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSSVGITEM_H_
 #define UBGRAPHICSSVGITEM_H_
 
@@ -52,14 +59,15 @@ class UBGraphicsSvgItem: public QGraphicsSvgItem, public UBItem, public UBGraphi
 
         virtual UBItem* deepCopy() const;
 
+        virtual void copyItemParameters(UBItem *copy) const;
+
         virtual void setRenderingQuality(RenderingQuality pRenderingQuality);
 
         virtual UBGraphicsScene* scene();
 
-        virtual void remove();
-
         virtual UBGraphicsPixmapItem* toPixmapItem() const;
-        virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;}
+
+        virtual void setUuid(const QUuid &pUuid);
 
     protected:
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp b/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp
index f42158f..eb2465b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItem.cpp
@@ -1,19 +1,27 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
+#include "UBGraphicsGroupContainerItem.h"
 #include "UBGraphicsTextItem.h"
 #include "UBGraphicsTextItemDelegate.h"
 #include "UBGraphicsScene.h"
@@ -22,21 +30,25 @@
 #include "core/UBApplication.h"
 #include "board/UBBoardController.h"
 #include "board/UBBoardView.h"
+#include "board/UBDrawingController.h"
 #include "core/UBSettings.h"
 
 #include "core/memcheck.h"
 
 QColor UBGraphicsTextItem::lastUsedTextColor;
 
-UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent)
-    : QGraphicsTextItem(parent)
+UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) :
+    QGraphicsTextItem(parent)
+    , UBGraphicsItem()
     , mMultiClickState(0)
     , mLastMousePressTime(QTime::currentTime())
 {
-    mDelegate = new UBGraphicsTextItemDelegate(this, 0);
-    mDelegate->init();
+    setDelegate(new UBGraphicsTextItemDelegate(this, 0));
+    Delegate()->init();
 
-    mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
+    Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
+    Delegate()->setFlippable(false);
+    Delegate()->setRotatable(true);
 
     mTypeTextHereLabel = tr("<Type Text Here>");
 
@@ -52,7 +64,9 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent)
 
     setTextInteractionFlags(Qt::TextEditorInteraction);
 
-    connect(document(), SIGNAL(contentsChanged()), mDelegate, SLOT(contentsChanged()));
+    setUuid(QUuid::createUuid());
+
+    connect(document(), SIGNAL(contentsChanged()), Delegate(), SLOT(contentsChanged()));
     connect(document(), SIGNAL(undoCommandAdded()), this, SLOT(undoCommandAdded()));
 
     connect(document()->documentLayout(), SIGNAL(documentSizeChanged(const QSizeF &)),
@@ -62,43 +76,54 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent)
 
 UBGraphicsTextItem::~UBGraphicsTextItem()
 {
-    if (mDelegate)
-    {
-        delete mDelegate;
-    }
 }
 
 QVariant UBGraphicsTextItem::itemChange(GraphicsItemChange change, const QVariant &value)
 {
-    if (QGraphicsItem::ItemSelectedChange == change)
-    {
-        bool selected = value.toBool();
-
-        if (selected)
-        {
-            setTextInteractionFlags(Qt::TextEditorInteraction);
-        }
-        else
-        {
-            QTextCursor tc = textCursor();
-            tc.clearSelection();
-            setTextCursor(tc);
-            setTextInteractionFlags(Qt::NoTextInteraction);
-        }
-    }
-
     QVariant newValue = value;
 
-    if(mDelegate)
-        newValue = mDelegate->itemChange(change, value);
+    if(Delegate())
+        newValue = Delegate()->itemChange(change, value);
 
     return QGraphicsTextItem::itemChange(change, newValue);
 }
 
 void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate)
-        mDelegate->mousePressEvent(event);
+    // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes. 
+    // It is a cludge... 
+    if (UBStylusTool::Play == UBDrawingController::drawingController()->stylusTool())
+    {
+        event->accept();
+        clearFocus();
+        return;
+    }
+
+    if (Delegate())
+    {
+        Delegate()->mousePressEvent(event);
+        if (Delegate() && parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type())
+        {
+            UBGraphicsGroupContainerItem *group = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(parentItem());
+            if (group)
+            {
+                QGraphicsItem *curItem = group->getCurrentItem();
+                if (curItem && this != curItem)
+                {   
+                    group->deselectCurrentItem();    
+                }   
+                group->setCurrentItem(this);
+                this->setSelected(true);
+                Delegate()->positionHandles();
+            }       
+
+        }
+        else
+        {
+            Delegate()->getToolBarItem()->show();
+        }
+
+    }
 
     if (!data(UBGraphicsItemData::ItemEditable).toBool())
         return;
@@ -144,7 +169,7 @@ void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (!mDelegate || !mDelegate->mouseMoveEvent(event))
+    if (!Delegate() || !Delegate()->mouseMoveEvent(event))
     {
         QGraphicsTextItem::mouseMoveEvent(event);
     }
@@ -152,10 +177,19 @@ void UBGraphicsTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
+    // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes. 
+    // It is a cludge... 
+    if (UBStylusTool::Play == UBDrawingController::drawingController()->stylusTool())
+    {
+        event->accept();
+        clearFocus();
+        return;
+    }
+
     if (mMultiClickState == 1)
     {
-        if (mDelegate)
-            mDelegate->mouseReleaseEvent(event);
+        if (Delegate())
+            Delegate()->mouseReleaseEvent(event);
 
         QGraphicsTextItem::mouseReleaseEvent(event);
     }
@@ -191,28 +225,36 @@ UBItem* UBGraphicsTextItem::deepCopy() const
 {
     UBGraphicsTextItem* copy = new UBGraphicsTextItem();
 
-    copy->setHtml(toHtml());
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
-    copy->setData(UBGraphicsItemData::ItemEditable, data(UBGraphicsItemData::ItemEditable).toBool());
-//    copy->setDefaultTextColor(this->defaultTextColor());
-//    copy->setFont(this->font());
-//    copy->setColorOnDarkBackground(this->colorOnDarkBackground());
-//    copy->setColorOnLightBackground(this->colorOnLightBackground());
-    copy->setTextWidth(this->textWidth());
-    copy->setTextHeight(this->textHeight());
-
-    copy->setSourceUrl(this->sourceUrl());
+    copyItemParameters(copy);
 
    // TODO UB 4.7 ... complete all members ?
 
    return copy;
 }
 
+void UBGraphicsTextItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsTextItem *cp = dynamic_cast<UBGraphicsTextItem*>(copy);
+    if (cp)
+    {
+        cp->setHtml(toHtml());
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+        cp->setData(UBGraphicsItemData::ItemEditable, data(UBGraphicsItemData::ItemEditable).toBool());
+        //    cp->setDefaultTextColor(this->defaultTextColor());
+        //    cp->setFont(this->font());
+        //    cp->setColorOnDarkBackground(this->colorOnDarkBackground());
+        //    cp->setColorOnLightBackground(this->colorOnLightBackground());
+        cp->setTextWidth(this->textWidth());
+        cp->setTextHeight(this->textHeight());
+
+        cp->setSourceUrl(this->sourceUrl());
+    }
+}
 
 QRectF UBGraphicsTextItem::boundingRect() const
 {
@@ -286,8 +328,8 @@ void UBGraphicsTextItem::resize(qreal w, qreal h)
     setTextWidth(w);
     setTextHeight(h);
 
-    if (mDelegate)
-        mDelegate->positionHandles();
+    if (Delegate())
+        Delegate()->positionHandles();
 }
 
 
@@ -296,19 +338,19 @@ QSizeF UBGraphicsTextItem::size() const
     return QSizeF(textWidth(), textHeight());
 }
 
-
-void UBGraphicsTextItem::undoCommandAdded()
+void UBGraphicsTextItem::setUuid(const QUuid &pUuid)
 {
-    emit textUndoCommandAdded(this);
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
 }
 
 
-void UBGraphicsTextItem::remove()
+void UBGraphicsTextItem::undoCommandAdded()
 {
-    if (mDelegate)
-        mDelegate->remove(true);
+    emit textUndoCommandAdded(this);
 }
 
+
 void UBGraphicsTextItem::documentSizeChanged(const QSizeF & newSize)
 {
     resize(newSize.width(), newSize.height());
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItem.h b/Sankore-3.1/src/domain/UBGraphicsTextItem.h
index d60116f..4f29c4b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSTEXTITEM_H_
 #define UBGRAPHICSTEXTITEM_H_
 
@@ -40,6 +47,9 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
         }
 
         virtual UBItem* deepCopy() const;
+
+        virtual void copyItemParameters(UBItem *copy) const;
+
         virtual UBGraphicsScene* scene();
 
         virtual QRectF boundingRect() const;
@@ -55,8 +65,6 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
 
         virtual QSizeF size() const;
 
-        virtual void remove();
-
         static QColor lastUsedTextColor;
 
         QColor colorOnDarkBackground() const
@@ -78,9 +86,9 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
         {
             mColorOnLightBackground = pColorOnLightBackground;
         }
-        virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;}
 
         virtual void clearSource(){;}
+        virtual void setUuid(const QUuid &pUuid);
 
     signals:
         void textUndoCommandAdded(UBGraphicsTextItem *textItem);
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp
index 2a911fb..298887a 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.cpp
@@ -1,21 +1,30 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 #include <QtSvg>
 
+#include "core/UBApplication.h"
+#include "UBGraphicsGroupContainerItem.h"
 #include "UBGraphicsTextItemDelegate.h"
 #include "UBGraphicsScene.h"
 #include "gui/UBResources.h"
@@ -108,7 +117,7 @@ void UBGraphicsTextItemDelegate::buildButtons()
     QList<QGraphicsItem*> itemsOnToolBar;
     itemsOnToolBar << mFontButton << mColorButton << mDecreaseSizeButton << mIncreaseSizeButton;
     mToolBarItem->setItemsOnToolBar(itemsOnToolBar);
-
+    mToolBarItem->setShifting(true);
     mToolBarItem->setVisibleOnBoard(true);
 }
 
@@ -235,12 +244,12 @@ void UBGraphicsTextItemDelegate::pickColor()
 
 void UBGraphicsTextItemDelegate::decreaseSize()
 {
-    ChangeTextSize(-delta);
+    ChangeTextSize(-delta, changeSize);
 }
 
 void UBGraphicsTextItemDelegate::increaseSize()
 {
-   ChangeTextSize(delta);
+   ChangeTextSize(delta, changeSize);
 }
 
 UBGraphicsTextItem* UBGraphicsTextItemDelegate::delegated()
@@ -261,6 +270,11 @@ void UBGraphicsTextItemDelegate::setEditable(bool editable)
         mDelegated->setData(UBGraphicsItemData::ItemEditable, QVariant(false));
     }
 }
+void UBGraphicsTextItemDelegate::remove(bool canUndo)
+{
+    UBGraphicsItemDelegate::remove(canUndo);
+}
+
 bool UBGraphicsTextItemDelegate::isEditable()
 {
     return mDelegated->data(UBGraphicsItemData::ItemEditable).toBool();
@@ -281,12 +295,57 @@ void UBGraphicsTextItemDelegate::updateMenuActionState()
 void UBGraphicsTextItemDelegate::positionHandles()
 {
     UBGraphicsItemDelegate::positionHandles();
-    setEditable(isEditable());
+
+    if (mDelegated->isSelected() || (mDelegated->parentItem() && UBGraphicsGroupContainerItem::Type == mDelegated->parentItem()->type())) 
+    {
+        if (mToolBarItem->isVisibleOnBoard())
+        {
+            qreal AntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());    
+            mToolBarItem->setScale(AntiScaleRatio);
+            QRectF toolBarRect = mToolBarItem->rect();
+            toolBarRect.setWidth(delegated()->boundingRect().width()/AntiScaleRatio);
+            mToolBarItem->setRect(toolBarRect);           
+            mToolBarItem->positionHandles();
+            mToolBarItem->update();
+            if (mToolBarItem->isShifting())
+                mToolBarItem->setPos(0,-mToolBarItem->boundingRect().height()*AntiScaleRatio);
+            else
+                mToolBarItem->setPos(0, 0);
+
+            UBGraphicsGroupContainerItem *group = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(mDelegated->parentItem());
+
+            mToolBarItem->hide();
+            if (mToolBarItem->parentItem())
+            {
+                if (group && group->getCurrentItem() == mDelegated && group->isSelected())
+                    mToolBarItem->show();
+
+                if (!group)
+                     mToolBarItem->show();
+            }
+
+        }
+    }
+    else
+    {
+        mToolBarItem->hide();
+    }
 }
 
-void UBGraphicsTextItemDelegate::ChangeTextSize(int delta)
+void UBGraphicsTextItemDelegate::ChangeTextSize(qreal factor, textChangeMode changeMode)
 {
-    if (0 == delta)
+    if (scaleSize == changeMode)
+    {
+        if (1 == factor)
+            return;
+    }
+    else
+    if (0 == factor)
+        return;
+
+    UBGraphicsTextItem *item = dynamic_cast<UBGraphicsTextItem*>(delegated());
+
+    if (item && (QString() == item->toPlainText()))
         return;
 
     QTextCursor cursor = delegated()->textCursor();
@@ -340,7 +399,7 @@ void UBGraphicsTextItemDelegate::ChangeTextSize(int delta)
 
 
         //setting new parameners
-        int iNewPointSize = iPointSize + delta;
+        int iNewPointSize = (changeSize == changeMode) ? (iPointSize + factor) : (iPointSize * factor);
         curFont.setPointSize( (iNewPointSize > 0)?iNewPointSize:1);
         textFormat.setFont(curFont);
         cursor.mergeCharFormat(textFormat);
@@ -349,7 +408,6 @@ void UBGraphicsTextItemDelegate::ChangeTextSize(int delta)
         cursor.setPosition (iCursorPos, QTextCursor::MoveAnchor);
     }
 
-    delegated()->document()->adjustSize();
     delegated()->setFont(curFont);
     UBSettings::settings()->setFontPointSize(iPointSize);
     //returning initial selection
@@ -358,3 +416,25 @@ void UBGraphicsTextItemDelegate::ChangeTextSize(int delta)
 
     delegated()->setTextCursor(cursor);
 }
+
+void UBGraphicsTextItemDelegate::scaleTextSize(qreal multiplyer)
+{
+    ChangeTextSize(multiplyer, scaleSize);
+}
+
+QVariant UBGraphicsTextItemDelegate::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+{
+    if (change == QGraphicsItem::ItemSelectedChange)
+    {
+        if (delegated()->isSelected())
+        {
+            QTextCursor c = delegated()->textCursor();
+            if (c.hasSelection())
+            {
+                c.clearSelection();
+                delegated()->setTextCursor(c);
+            }
+        }
+    }
+    return UBGraphicsItemDelegate::itemChange(change, value);
+}
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h
index 9749e1d..ba0d132 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemDelegate.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSTEXTITEMDELEGATE_H_
 #define UBGRAPHICSTEXTITEMDELEGATE_H_
 
@@ -29,14 +36,24 @@ class UBGraphicsTextItemDelegate : public UBGraphicsItemDelegate
 {
     Q_OBJECT
 
+    enum textChangeMode
+    {
+        changeSize = 0,
+        scaleSize
+    };
+
     public:
         UBGraphicsTextItemDelegate(UBGraphicsTextItem* pDelegated, QObject * parent = 0);
         virtual ~UBGraphicsTextItemDelegate();
         bool isEditable();
+        void scaleTextSize(qreal multiplyer);
+        virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value);
+
 
     public slots:
         void contentsChanged();
         virtual void setEditable(bool);
+        virtual void remove(bool canUndo);
 
     protected:
         virtual void buildButtons();
@@ -61,7 +78,7 @@ class UBGraphicsTextItemDelegate : public UBGraphicsItemDelegate
 
     private:
         void customize(QFontDialog &fontDialog);
-        void ChangeTextSize(int delta);
+        void ChangeTextSize(qreal factor, textChangeMode changeMode);
 
         QFont createDefaultFont();
         QAction *mEditableAction;
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp
index 140ca61..b391644 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsTextItemUndoCommand.h"
 #include "UBGraphicsTextItem.h"
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h
index 9f9a610..24991b6 100644
--- a/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBGraphicsTextItemUndoCommand.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSTEXTITEMUNDOCOMMAND_H_
 #define UBGRAPHICSTEXTITEMUNDOCOMMAND_H_
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp b/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp
index 40461a7..f1d2d6b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItem.cpp
@@ -1,143 +1,21 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "UBGraphicsVideoItem.h"
-#include "UBGraphicsVideoItemDelegate.h"
-#include "UBGraphicsDelegateFrame.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsVideoItem::UBGraphicsVideoItem(const QUrl& pVideoFileUrl, QGraphicsItem *parent):
-        UBGraphicsMediaItem(pVideoFileUrl,parent)
-        , mShouldMove(false)
-{
-    update();
-
-    mMediaObject = new Phonon::MediaObject(this);
-    mVideoWidget = new Phonon::VideoWidget(); // owned and destructed by the scene ...
-
-    Phonon::createPath(mMediaObject, mVideoWidget);
-
-    mAudioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
-    Phonon::createPath(mMediaObject, mAudioOutput);
-
-    /*
-     * The VideoVidget should recover the size from the original movie, but this is not always true expecially on
-     * windows and linux os. I don't know why?
-     * In this case the wiget size is equal to QSize(1,1).
-     */
-
-    if(mVideoWidget->sizeHint() == QSize(1,1)){
-      mVideoWidget->resize(320,240);
-    }
-
-    setWidget(mVideoWidget);
-
-    UBGraphicsVideoItemDelegate* delegate = new UBGraphicsVideoItemDelegate(this, mMediaObject);
-    delegate->init();
-    setDelegate(delegate);
-
-    mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
-
-    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
-
-    connect(mDelegate, SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool)));
-    connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasVideoChanged(bool)));
-}
-
-
-UBGraphicsVideoItem::~UBGraphicsVideoItem()
-{
-    //NOOP
-}
-
-UBItem* UBGraphicsVideoItem::deepCopy() const
-{
-    QUrl videoUrl = this->mediaFileUrl();
-
-    UBGraphicsVideoItem *copy = new UBGraphicsVideoItem(videoUrl, parentItem());
-
-    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), copy, SLOT(activeSceneChanged()));
-
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
-    copy->setUuid(this->uuid()); // this is OK as long as Videos are imutable
-    copy->setSourceUrl(this->sourceUrl());
-
-    copy->resize(this->size());
-
-    // TODO UB 4.7 complete all members
-
-    return copy;
-}
-
-
-
-void UBGraphicsVideoItem::hasVideoChanged(bool hasVideo)
-{
-    if(hasVideo && mMediaObject->isSeekable())
-    {
-        hasMediaChanged(hasVideo);
-        UBGraphicsVideoItemDelegate *vid = dynamic_cast<UBGraphicsVideoItemDelegate *>(mDelegate);
-        if (vid)
-            vid->updateTicker(initialPos());
-    }
-}
-
-void UBGraphicsVideoItem::showOnDisplayChanged(bool shown)
-{
-    UBGraphicsMediaItem::showOnDisplayChanged(shown);
-    UBGraphicsVideoItemDelegate *vid = dynamic_cast<UBGraphicsVideoItemDelegate*>(mDelegate);
-
-    if (vid)
-        vid->toggleMute();
-}
-
-void UBGraphicsVideoItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    mShouldMove = (event->buttons() & Qt::LeftButton);
-    mMousePressPos = event->scenePos();
-    mMouseMovePos = mMousePressPos;
-
-    event->accept();
-    setSelected(true);
-
-}
-
-void UBGraphicsVideoItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if(mShouldMove && (event->buttons() & Qt::LeftButton))
-    {
-        QPointF offset = event->scenePos() - mMousePressPos;
-
-        if (offset.toPoint().manhattanLength() > QApplication::startDragDistance())
-        {
-            QPointF mouseMovePos = mapFromScene(mMouseMovePos);
-            QPointF eventPos = mapFromScene( event->scenePos());
-
-            QPointF translation = eventPos - mouseMovePos;
-            translate(translation.x(), translation.y());
-        }
-
-        mMouseMovePos = event->scenePos();
-    }
-
-    event->accept();
-
-}
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItem.h b/Sankore-3.1/src/domain/UBGraphicsVideoItem.h
index b07ea58..f1d2d6b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItem.h
@@ -1,75 +1,21 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBGRAPHICSVIDEOITEM_H
-#define UBGRAPHICSVIDEOITEM_H
-
-#include <phonon/VideoWidget>
-#include "UBGraphicsMediaItem.h"
-#include "core/UB.h"
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-
-class UBGraphicsVideoItem : public UBGraphicsMediaItem
-{
-    Q_OBJECT;
-
-public:
-    UBGraphicsVideoItem(const QUrl& pMediaFileUrl, QGraphicsItem *parent = 0);
-    ~UBGraphicsVideoItem();
-
-    enum { Type = UBGraphicsItemType::VideoItemType };
-
-    virtual int type() const
-    {
-        return Type;
-    }
-
-    virtual UBItem* deepCopy() const;
-
-    Phonon::VideoWidget* videoWidget() const
-    {
-        return mVideoWidget;
-    }
-    virtual UBGraphicsItemDelegate *Delegate() const {return mDelegate;}
-
-    virtual void clearSource()
-    {
-        UBGraphicsMediaItem::clearSource();
-    }
-
-public slots:
-    void hasVideoChanged(bool hasVideo);
-
-
-protected:
-
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-
-    Phonon::VideoWidget *mVideoWidget;
-
-private slots:
-    void showOnDisplayChanged(bool shown);
-
-
-private:
-    bool mShouldMove;
-    QPointF mMousePressPos;
-    QPointF mMouseMovePos;
-
-
-};
 
-#endif // UBGRAPHICSVIDEOITEM_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp
index e02640c..f1d2d6b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.cpp
@@ -1,351 +1,21 @@
-/*
- * 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/>.
- */
-
-#include <QtGui>
-#include <QtSvg>
-
-#include "UBGraphicsVideoItemDelegate.h"
-
-#include "UBGraphicsScene.h"
-
-#include "core/UBSettings.h"
-#include "core/UBApplication.h"
-#include "core/UBApplicationController.h"
-#include "core/UBDisplayManager.h"
-
-#include "domain/UBGraphicsVideoItem.h"
-#include "domain/UBGraphicsDelegateFrame.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsVideoItemDelegate::UBGraphicsVideoItemDelegate(UBGraphicsVideoItem* pDelegated, Phonon::MediaObject* pMedia, QObject * parent)
-    : UBGraphicsItemDelegate(pDelegated, parent, true, false)
-    , mMedia(pMedia)
-{
-    // NOOP
-}
-
-void UBGraphicsVideoItemDelegate::buildButtons()
-{
-    mPlayPauseButton = new DelegateButton(":/images/play.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
-
-    mStopButton = new DelegateButton(":/images/stop.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
-
-    mVideoControl = new DelegateVideoControl(delegated(), mToolBarItem);
-    UBGraphicsItem::assignZValue(mVideoControl, delegated()->zValue());
-    mVideoControl->setFlag(QGraphicsItem::ItemIsSelectable, true);
-
-    if (delegated()->isMuted())
-        mMuteButton = new DelegateButton(":/images/soundOff.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
-    else
-        mMuteButton = new DelegateButton(":/images/soundOn.svg", mDelegated, mToolBarItem, Qt::TitleBarArea);
-
-    connect(mPlayPauseButton, SIGNAL(clicked(bool)), this, SLOT(togglePlayPause()));
-    connect(mStopButton, SIGNAL(clicked(bool)), mMedia, SLOT(stop()));
-    connect(mMuteButton, SIGNAL(clicked(bool)), delegated(), SLOT(toggleMute()));
-    connect(mMuteButton, SIGNAL(clicked(bool)), this, SLOT(toggleMute()));
-
-    mButtons << mPlayPauseButton << mStopButton << mMuteButton;
-
-    QList<QGraphicsItem*> itemsOnToolBar;
-    itemsOnToolBar << mPlayPauseButton << mStopButton << mVideoControl << mMuteButton;
-    mToolBarItem->setItemsOnToolBar(itemsOnToolBar);
-
-    mMedia->setTickInterval(50);
-
-    connect(mMedia, SIGNAL(stateChanged (Phonon::State, Phonon::State)), this, SLOT(mediaStateChanged (Phonon::State, Phonon::State)));
-    connect(mMedia, SIGNAL(finished()), this, SLOT(updatePlayPauseState()));
-    connect(mMedia, SIGNAL(tick(qint64)), this, SLOT(updateTicker(qint64)));
-    connect(mMedia, SIGNAL(totalTimeChanged(qint64)), this, SLOT(totalTimeChanged(qint64)));
-
-    mToolBarItem->setVisibleOnBoard(true);
-    mToolBarItem->setShifting(false);
-}
-
-
-UBGraphicsVideoItemDelegate::~UBGraphicsVideoItemDelegate()
-{
-    //NOOP
-}
-
-
-void UBGraphicsVideoItemDelegate::positionHandles()
-{
-    UBGraphicsItemDelegate::positionHandles();
-
-    if (mDelegated->isSelected())
-    {
-        qreal scaledFrameWidth = mFrameWidth * mAntiScaleRatio;
-
-        int offset = 0;
-        foreach (DelegateButton* button, mButtons)
-        {
-            if (button->getSection() == Qt::TitleBarArea)
-                offset += button->boundingRect().width() * mAntiScaleRatio;
-        }
-
-        mVideoControl->setRect(mVideoControl->rect().x()
-                , scaledFrameWidth/6 - 0.5
-                , (mToolBarItem->rect().width() - 35 - offset) / mAntiScaleRatio 
-                , (2 * scaledFrameWidth) / mAntiScaleRatio);
-
-        offset += (mVideoControl->rect().width() + 5) * mAntiScaleRatio;
-        mMuteButton->setPos(offset, 0);
-
-        if (!mVideoControl->scene())
-        {
-            mVideoControl->setParentItem(mToolBarItem);//update parent for the case the item has been previously removed from scene
-            mDelegated->scene()->addItem(mVideoControl);
-        }
-
-        mVideoControl->setAntiScale(mAntiScaleRatio);
-        mVideoControl->setZValue(delegated()->zValue());
-        mVideoControl->show();
-    }
-    else
-    {
-        mVideoControl->hide();
-    }
-}
-
-
-void UBGraphicsVideoItemDelegate::remove(bool canUndo)
-{
-    if (delegated() && delegated()->mediaObject())
-        delegated()->mediaObject()->stop();
-
-    QGraphicsScene* scene = mDelegated->scene();
-
-    scene->removeItem(mVideoControl);
-
-    UBGraphicsItemDelegate::remove(canUndo);
-}
-
-
-void UBGraphicsVideoItemDelegate::toggleMute()
-{
-    if (delegated()->isMuted())
-        mMuteButton->setFileName(":/images/soundOff.svg");
-    else
-        mMuteButton->setFileName(":/images/soundOn.svg");
-
-}
-
-
-UBGraphicsVideoItem* UBGraphicsVideoItemDelegate::delegated()
-{
-    return static_cast<UBGraphicsVideoItem*>(mDelegated);
-}
-
-
-void UBGraphicsVideoItemDelegate::togglePlayPause()
-{
-    if (delegated() && delegated()->mediaObject()) {
-
-        Phonon::MediaObject* media = delegated()->mediaObject();
-        if (media->state() == Phonon::StoppedState) {
-            media->play();
-        } else if (media->state() == Phonon::PlayingState) {
-            if (media->remainingTime() <= 0) {
-                media->stop();
-                media->play();
-            } else {
-                media->pause();
-                if(delegated()->scene())
-                        delegated()->scene()->setModified(true);
-            }
-        } else if (media->state() == Phonon::PausedState) {
-            if (media->remainingTime() <= 0) {
-                media->stop();
-            }
-            media->play();
-        } else  if ( media->state() == Phonon::LoadingState ) {
-            delegated()->mediaObject()->setCurrentSource(delegated()->mediaFileUrl());
-            media->play();
-        } else if (media->state() == Phonon::ErrorState){
-            qDebug() << "Error appeared." << media->errorString();
-        }
-    }
-}
-
-void UBGraphicsVideoItemDelegate::mediaStateChanged ( Phonon::State newstate, Phonon::State oldstate )
-{
-    Q_UNUSED(newstate);
-    Q_UNUSED(oldstate);
-    updatePlayPauseState();
-}
-
-
-void UBGraphicsVideoItemDelegate::updatePlayPauseState()
-{
-    Phonon::MediaObject* media = delegated()->mediaObject();
-
-    if (media->state() == Phonon::PlayingState)
-        mPlayPauseButton->setFileName(":/images/pause.svg");
-    else
-        mPlayPauseButton->setFileName(":/images/play.svg");
-}
-
-
-void UBGraphicsVideoItemDelegate::updateTicker(qint64 time)
-{
-    Phonon::MediaObject* media = delegated()->mediaObject();
-    mVideoControl->totalTimeChanged(media->totalTime());
-
-    mVideoControl->updateTicker(time);
-}
-
-
-void UBGraphicsVideoItemDelegate::totalTimeChanged(qint64 newTotalTime)
-{
-    mVideoControl->totalTimeChanged(newTotalTime);
-}
-
-
-DelegateVideoControl::DelegateVideoControl(UBGraphicsVideoItem* pDelegated, QGraphicsItem * parent)
-    : QGraphicsRectItem(parent)
-    , mDelegate(pDelegated)
-    , mDisplayCurrentTime(false)
-    , mAntiScale(1.0)
-    , mCurrentTimeInMs(0)
-    , mTotalTimeInMs(0)
-    , mStartWidth(200)
-{
-    setAcceptedMouseButtons(Qt::LeftButton);
-
-    setBrush(QBrush(Qt::white));
-    setPen(Qt::NoPen);
-    setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
-
-    QRectF rect = this->rect();
-    rect.setWidth(mStartWidth);
-    this->setRect(rect);
-}
-
-
-void DelegateVideoControl::paint(QPainter *painter,
-        const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(option);
-    Q_UNUSED(widget);
-
-    painter->fillPath(shape(), brush());
-
-    qreal frameWidth = rect().height() / 2;
-    int position = frameWidth;
-
-    if (mTotalTimeInMs > 0)
-    {
-        position = frameWidth + (rect().width() - (2 * frameWidth)) / mTotalTimeInMs * mCurrentTimeInMs;
-    }
-
-    int radius = rect().height() / 6;
-    QRectF r(rect().x() + position - radius, rect().y() + (rect().height() / 4) - radius, radius * 2, radius * 2);
-
-    painter->setBrush(UBSettings::documentViewLightColor);
-    painter->drawEllipse(r);
-
-    if(mDisplayCurrentTime)
-    {
-        painter->setBrush(UBSettings::paletteColor);
-        painter->setPen(QPen(Qt::NoPen));
-        mBalloon.setRect(rect().x() + position - frameWidth, rect().y() - (frameWidth * 1.2), 2 * frameWidth, frameWidth);
-        painter->drawRoundedRect(mBalloon, frameWidth/2, frameWidth/2);
-
-        QTime t;
-        t = t.addMSecs(mCurrentTimeInMs < 0 ? 0 : mCurrentTimeInMs);
-        QFont f = painter->font();
-            f.setPointSizeF(f.pointSizeF() * mAntiScale);
-        painter->setFont(f);
-        painter->setPen(Qt::white);
-        painter->drawText(mBalloon, Qt::AlignCenter, t.toString("m:ss"));
-    }
-}
-
-
-QPainterPath DelegateVideoControl::shape() const
-{
-    QPainterPath path;
-    QRectF r = rect().adjusted(0,0,0,- rect().height() / 2);
-    path.addRoundedRect(r, rect().height() / 4, rect().height() / 4);
-    return path;
-}
-
-
-void DelegateVideoControl::updateTicker(qint64 time )
-{
-    mCurrentTimeInMs = time;
-    update();
-}
-
-
-void DelegateVideoControl::totalTimeChanged(qint64 newTotalTime)
-{
-    mTotalTimeInMs = newTotalTime;
-    update();
-}
-
-
-void DelegateVideoControl::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    mDisplayCurrentTime = true;
-    seekToMousePos(event->pos());
-    update();
-    event->accept();
-}
-
-
-void DelegateVideoControl::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (shape().contains(event->pos() - QPointF(mBalloon.width()/2,0)) 
-        && shape().contains(event->pos() + QPointF(mBalloon.width()/2,0)))
-    {   
-        seekToMousePos(event->pos());
-        update();
-        event->accept();
-    }
-}
-
-
-void DelegateVideoControl::seekToMousePos(QPointF mousePos)
-{
-    qreal minX, length;
-    qreal frameWidth = rect().height() / 2;
-
-    minX = rect().x() + frameWidth;
-    length = rect().width() - (2 * frameWidth);
-
-    qreal mouseX = mousePos.x();
-
-    if (mTotalTimeInMs > 0 && length > 0 && mDelegate
-        && mDelegate->mediaObject() && mDelegate->mediaObject()->isSeekable())
-    {
-        qint64 tickPos = mTotalTimeInMs / length * (mouseX - minX);
-        mDelegate->mediaObject()->seek(tickPos);
-
-        //OSX is a bit lazy
-        updateTicker(tickPos);
-    }
-}
-
-void DelegateVideoControl::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    mDisplayCurrentTime = false;
-    update();
-    event->accept();
-}
-
-
-
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
diff --git a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h
index 66dcd8a..cdc9499 100644
--- a/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsVideoItemDelegate.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBGRAPHICSVIDEOITEMDELEGATE_H_
 #define UBGRAPHICSVIDEOITEMDELEGATE_H_
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp
index 7a7edb8..4372d27 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.cpp
@@ -1,315 +1,698 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "UBGraphicsWidgetItem.h"
 
-#include "api/UBWidgetUniboardAPI.h"
-#include "api/UBW3CWidgetAPI.h"
+#include <QtNetwork>
+#include <QtXml>
 
+#include "UBGraphicsWidgetItem.h"
+#include "UBGraphicsScene.h"
 #include "UBGraphicsItemDelegate.h"
 #include "UBGraphicsWidgetItemDelegate.h"
 #include "UBGraphicsDelegateFrame.h"
 
-#include "UBW3CWidget.h"
-#include "UBGraphicsScene.h"
-#include "UBAppleWidget.h"
-#include "frameworks/UBFileSystemUtils.h"
+#include "api/UBWidgetUniboardAPI.h"
+#include "api/UBW3CWidgetAPI.h"
+
+ #include "board/UBBoardController.h"
 
 #include "core/memcheck.h"
+#include "core/UBApplicationController.h"
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
 
-UBGraphicsWidgetItem::UBGraphicsWidgetItem(QGraphicsItem *parent, int widgetType)
-    : UBGraphicsProxyWidget(parent)
-    , mWebKitWidget(0)
+#include "frameworks/UBFileSystemUtils.h"
+#include "frameworks/UBPlatformUtils.h"
+
+#include "network/UBNetworkAccessManager.h"
+
+#include "web/UBWebPage.h"
+#include "web/UBWebKitUtils.h"
+#include "web/UBWebController.h"
+
+bool UBGraphicsWidgetItem::sInlineJavaScriptLoaded = false;
+QStringList UBGraphicsWidgetItem::sInlineJavaScripts;
+
+UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem *parent)
+    : QGraphicsWebView(parent)
+    , mInitialLoadDone(false)
+    , mIsFreezable(true)
+    , mIsResizable(false)
+    , mLoadIsErronous(false)
+    , mCanBeContent(0)
+    , mCanBeTool(0)
+    , mWidgetUrl(pWidgetUrl)
+    , mIsFrozen(false)
+    , mIsTakingSnapshot(false)
     , mShouldMoveWidget(false)
     , mUniboardAPI(0)
 {
-    setAcceptDrops(false);
-    UBGraphicsWidgetItemDelegate* delegate = new UBGraphicsWidgetItemDelegate(this, widgetType);
-    delegate->init();
-    setDelegate(delegate);
-    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
-}
+    setData(UBGraphicsItemData::ItemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
 
+    QGraphicsWebView::setPage(new UBWebPage(this));
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::JavaEnabled, true);
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::PluginsEnabled, true);
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
+    QGraphicsWebView::settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
 
-UBGraphicsWidgetItem::~UBGraphicsWidgetItem()
-{
-    // NOOP
-}
+    page()->setNetworkAccessManager(UBNetworkAccessManager::defaultAccessManager());
 
+    setAcceptDrops(true);
+    setAutoFillBackground(false);
 
-void UBGraphicsWidgetItem::javaScriptWindowObjectCleared()
-{
-    if(!mUniboardAPI)
-            mUniboardAPI = new UBWidgetUniboardAPI(scene(), this);
+    QPalette pagePalette = page()->palette();
+    pagePalette.setBrush(QPalette::Base, QBrush(Qt::transparent));
+    pagePalette.setBrush(QPalette::Window, QBrush(Qt::transparent));
+    page()->setPalette(pagePalette);
+
+    QPalette viewPalette = palette();
+    pagePalette.setBrush(QPalette::Base, QBrush(Qt::transparent));
+    viewPalette.setBrush(QPalette::Window, QBrush(Qt::transparent));
+    setPalette(viewPalette);
 
-    mWebKitWidget->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mUniboardAPI);
+    setDelegate(new UBGraphicsWidgetItemDelegate(this));
+    Delegate()->init();
 
+    setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
+    QGraphicsWebView::setAcceptHoverEvents(true);
 }
 
 
-void UBGraphicsWidgetItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
+UBGraphicsWidgetItem::~UBGraphicsWidgetItem()
 {
-    UBGraphicsProxyWidget::mousePressEvent(event);
+    /* NOOP */
+}
 
-    // did webkit consume the mouse press ?
-    mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton);
+void UBGraphicsWidgetItem::initialize()
+{
+    setMinimumSize(nominalSize());
+    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); // Necessary to set if we want z value to be assigned correctly
 
-    mLastMousePos = mapToScene(event->pos());
+    if (Delegate() && Delegate()->frame() && resizable())
+        Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
 
-    event->accept();
+    QPalette palette = page()->palette();
+    palette.setBrush(QPalette::Base, QBrush(Qt::transparent));
+    page()->setPalette(palette);
+    page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
+
+    connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
+    connect(page(), SIGNAL(geometryChangeRequested(const QRect&)), this, SLOT(geometryChangeRequested(const QRect&)));
+    connect(this, SIGNAL(loadFinished(bool)), this, SLOT(mainFrameLoadFinished (bool)));
+    connect(page()->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayoutCompleted()));
+    connect(page(), SIGNAL(linkClicked(const QUrl&)), this, SLOT(onLinkClicked(const QUrl&)));
 }
 
+void UBGraphicsWidgetItem::onLinkClicked(const QUrl& url)
+{
+    load(url);
+}
 
-void UBGraphicsWidgetItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+void UBGraphicsWidgetItem::initialLayoutCompleted()
 {
-    mShouldMoveWidget = false;
+    mInitialLoadDone = true;
+}
 
-    UBGraphicsProxyWidget::mouseReleaseEvent(event);
+QUrl UBGraphicsWidgetItem::mainHtml()
+{
+    return mMainHtmlUrl;
 }
 
-void UBGraphicsWidgetItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
+void UBGraphicsWidgetItem::loadMainHtml()
 {
-    sendJSEnterEvent();
-    mDelegate->hoverEnterEvent(event);
-    UBGraphicsProxyWidget::hoverEnterEvent(event);
+    mInitialLoadDone = false;
+    load(mMainHtmlUrl);
 }
-void UBGraphicsWidgetItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
+
+QUrl UBGraphicsWidgetItem::widgetUrl()
 {
-    sendJSLeaveEvent();
-    mDelegate->hoverLeaveEvent(event);
-    UBGraphicsProxyWidget::hoverLeaveEvent(event);
+    return mWidgetUrl;
 }
-void UBGraphicsWidgetItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
+QString UBGraphicsWidgetItem::mainHtmlFileName()
 {
-    UBGraphicsProxyWidget::hoverMoveEvent(event);
+    return mMainHtmlFileName;
 }
 
-
-bool UBGraphicsWidgetItem::eventFilter(QObject *obj, QEvent *event)
+bool UBGraphicsWidgetItem::canBeContent()
 {
-    if (mShouldMoveWidget && obj == mWebKitWidget && event->type() == QEvent::MouseMove)
-    {
-        QMouseEvent *mouseMoveEvent = static_cast<QMouseEvent*>(event);
+    // if we under MAC OS
+    #if defined(Q_OS_MAC)
+        return mCanBeContent & UBGraphicsWidgetItem::type_MAC;
+    #endif
+
+    // if we under UNIX OS
+    #if defined(Q_OS_UNIX)
+        return mCanBeContent & UBGraphicsWidgetItem::type_UNIX;
+    #endif
+
+    // if we under WINDOWS OS
+    #if defined(Q_OS_WIN)
+        return mCanBeContent & UBGraphicsWidgetItem::type_WIN;
+    #endif
+}
 
-        if (mouseMoveEvent->buttons() & Qt::LeftButton)
-        {
-            QPointF scenePos = mapToScene(mouseMoveEvent->pos());
+bool UBGraphicsWidgetItem::canBeTool()
+{
+    // if we under MAC OS
+    #if defined(Q_OS_MAC)
+        return mCanBeTool & UBGraphicsWidgetItem::type_MAC;
+    #endif
+
+        // if we under UNIX OS
+    #if defined(Q_OS_UNIX)
+        return mCanBeTool & UBGraphicsWidgetItem::type_UNIX;
+    #endif
+
+        // if we under WINDOWS OS
+    #if defined(Q_OS_WIN)
+        return mCanBeTool & UBGraphicsWidgetItem::type_WIN;
+    #endif
+}
 
-            QPointF newPos = pos() + scenePos - mLastMousePos;
+QString UBGraphicsWidgetItem::preference(const QString& key) const
+{
+    return mPreferences.value(key);
+}
 
-            setPos(newPos);
+void UBGraphicsWidgetItem::setPreference(const QString& key, QString value)
+{
+    if (key == "" || (mPreferences.contains(key) && mPreferences.value(key) == value))
+        return;
 
-            mLastMousePos = scenePos;
+    mPreferences.insert(key, value);
+    if (scene())
+        scene()->setModified(true);
+}
 
-            event->accept();
+QMap<QString, QString> UBGraphicsWidgetItem::preferences() const
+{
+    return mPreferences;
+}
 
-            return true;
-        }
-    }
 
-    //standard event processing
-    return QObject::eventFilter(obj, event);
+void UBGraphicsWidgetItem::removePreference(const QString& key)
+{
+    mPreferences.remove(key);
 }
 
 
-void UBGraphicsWidgetItem::resize ( qreal w, qreal h )
+void UBGraphicsWidgetItem::removeAllPreferences()
 {
-    UBGraphicsProxyWidget::resize(w, h);
+    mPreferences.clear();
+}
 
-    mWebKitWidget->resize(w, h);
+QString UBGraphicsWidgetItem::datastoreEntry(const QString& key) const
+{
+    if (mDatastore.contains(key))
+        return mDatastore.value(key);
+    else
+        return QString();
 }
 
+void UBGraphicsWidgetItem::setDatastoreEntry(const QString& key, QString value)
+{
+    if (key == "" || (mDatastore.contains(key) && mDatastore.value(key) == value))
+        return;
 
-void UBGraphicsWidgetItem::resize ( const QSizeF & size )
+    mDatastore.insert(key, value);
+    if (scene())
+        scene()->setModified(true);
+}
+
+QMap<QString, QString> UBGraphicsWidgetItem::datastoreEntries() const
 {
-    resize(size.width(), size.height());
+    return mDatastore;
 }
 
 
-void UBGraphicsWidgetItem::geometryChangeRequested(const QRect& geom)
+void UBGraphicsWidgetItem::removeDatastoreEntry(const QString& key)
 {
-    resize(geom.width(), geom.height());
+    mDatastore.remove(key);
 }
 
 
-void UBGraphicsWidgetItem::initialize()
+void UBGraphicsWidgetItem::removeAllDatastoreEntries()
 {
-    connect(mWebKitWidget->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
-
-    QPalette palette = mWebKitWidget->page()->palette();
-    palette.setBrush(QPalette::Base, QBrush(Qt::transparent));
-    mWebKitWidget->page()->setPalette(palette);
+    mDatastore.clear();
+}
 
-    UBGraphicsProxyWidget::setWidget(mWebKitWidget);
+void UBGraphicsWidgetItem::removeScript()
+{
+    if (page() && page()->mainFrame())
+        page()->mainFrame()->evaluateJavaScript("if(widget && widget.onremove) { widget.onremove();}");
+}
 
-    mWebKitWidget->installEventFilter(this);
+void UBGraphicsWidgetItem::processDropEvent(QGraphicsSceneDragDropEvent *event)
+{
+    mUniboardAPI->ProcessDropEvent(event);
+}
+bool UBGraphicsWidgetItem::isDropableData(const QMimeData *data) const
+{
+    return mUniboardAPI->isDropableData(data);
+}
 
-    UBGraphicsProxyWidget::setMinimumSize(mWebKitWidget->nominalSize());
+QUrl UBGraphicsWidgetItem::getOwnFolder() const {
+    return ownFolder;
+}
 
-    connect(mWebKitWidget, SIGNAL(geometryChangeRequested(const QRect&)), this, SLOT(geometryChangeRequested(const QRect&)));
+void UBGraphicsWidgetItem::setOwnFolder(const QUrl &newFolder)
+{
+    ownFolder = newFolder;
+}
 
-    if (mDelegate && mDelegate->frame() && mWebKitWidget->resizable())
-        mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
+void UBGraphicsWidgetItem::setSnapshotPath(const QUrl &newFilePath)
+{
+    SnapshotFile = newFilePath;
+}
 
-    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
+QUrl UBGraphicsWidgetItem::getSnapshotPath()
+{
+    return SnapshotFile;
 }
 
+void UBGraphicsWidgetItem::clearSource()
+{
+    UBFileSystemUtils::deleteDir(getOwnFolder().toLocalFile());
+    UBFileSystemUtils::deleteFile(getSnapshotPath().toLocalFile());
+}
 
-UBGraphicsScene* UBGraphicsWidgetItem::scene()
+void UBGraphicsWidgetItem::setUuid(const QUuid &pUuid)
 {
-    return qobject_cast<UBGraphicsScene*>(QGraphicsItem::scene());
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
 }
 
+QSize UBGraphicsWidgetItem::nominalSize() const
+{
+    return mNominalSize;
+}
 
-UBAbstractWidget* UBGraphicsWidgetItem::widgetWebView()
+bool UBGraphicsWidgetItem::hasLoadedSuccessfully() const
 {
-    return mWebKitWidget;
+    return (mInitialLoadDone && !mLoadIsErronous);
 }
 
+bool UBGraphicsWidgetItem::freezable()
+{
+    return mIsFreezable;
+}
 
-void UBGraphicsWidgetItem::setPreference(const QString& key, QString value)
+bool UBGraphicsWidgetItem::resizable()
 {
-    if (key == "" || (mPreferences.contains(key) && mPreferences.value(key) == value))
-        return;
+    return mIsResizable;
+}
 
-    mPreferences.insert(key, value);
-    if (scene())
-        scene()->setModified(true);
+bool UBGraphicsWidgetItem::isFrozen()
+{
+    return mIsFrozen;
 }
 
+QPixmap UBGraphicsWidgetItem::snapshot()
+{
+    return mSnapshot;
+}
 
-QString UBGraphicsWidgetItem::preference(const QString& key) const
+QPixmap UBGraphicsWidgetItem::takeSnapshot()
 {
-    return mPreferences.value(key);
+    mIsTakingSnapshot = true;
+
+    QPixmap pixmap(size().toSize());
+    pixmap.fill(Qt::transparent);
+    QPainter painter(&pixmap);
+
+    QStyleOptionGraphicsItem options;
+    paint(&painter, &options);
+
+    mIsTakingSnapshot = false;
+
+    mSnapshot = pixmap;
+
+    return pixmap;
 }
 
+void UBGraphicsWidgetItem::setSnapshot(const QPixmap& pix)
+{
+    mSnapshot = pix;
+}
 
-QMap<QString, QString> UBGraphicsWidgetItem::preferences() const
+UBGraphicsScene* UBGraphicsWidgetItem::scene()
 {
-    return mPreferences;
+    return qobject_cast<UBGraphicsScene*>(QGraphicsItem::scene());
 }
 
+int UBGraphicsWidgetItem::widgetType(const QUrl& pUrl)
+{
+    QString mime = UBFileSystemUtils::mimeTypeFromFileName(pUrl.toString());
 
-void UBGraphicsWidgetItem::removePreference(const QString& key)
+    if (mime == "application/vnd.apple-widget")
+        return UBWidgetType::Apple;
+    else if (mime == "application/widget")
+        return UBWidgetType::W3C;
+    else
+        return UBWidgetType::Other;
+}
+
+QString UBGraphicsWidgetItem::widgetName(const QUrl& widgetPath)
 {
-    mPreferences.remove(key);
+    QString name;
+    QString version;
+    QFile w3CConfigFile(widgetPath.toLocalFile() + "/config.xml");
+    QFile appleConfigFile(widgetPath.toLocalFile() + "/Info.plist");
+
+    if (w3CConfigFile.exists() && w3CConfigFile.open(QFile::ReadOnly)) {
+        QDomDocument doc;
+        doc.setContent(w3CConfigFile.readAll());
+        QDomElement root = doc.firstChildElement("widget");
+        if (!root.isNull()) {
+            QDomElement nameElement = root.firstChildElement("name");
+            if (!nameElement.isNull())
+                name = nameElement.text();
+            version = root.attribute("version", "");
+        }
+        w3CConfigFile.close();
+    }
+    else if (appleConfigFile.exists() && appleConfigFile.open(QFile::ReadOnly)) {
+        QDomDocument doc;
+        doc.setContent(appleConfigFile.readAll());
+        QDomElement root = doc.firstChildElement("plist");
+        if (!root.isNull()) {
+            QDomElement dictElement = root.firstChildElement("dict");
+            if (!dictElement.isNull()) {
+                QDomNodeList childNodes  = dictElement.childNodes();
+
+                /* looking for something like
+                 * ..
+                 * <key>CFBundleDisplayName</key>
+                 * <string>brain scans</string>
+                 * ..
+                 */
+
+                for(int i = 0; i < childNodes.count() - 1; i++) {
+                    if (childNodes.at(i).isElement()) {
+                        QDomElement elKey = childNodes.at(i).toElement();
+                        if (elKey.text() == "CFBundleDisplayName") {
+                            if (childNodes.at(i + 1).isElement()) {
+                               QDomElement elValue = childNodes.at(i + 1).toElement();
+                               name = elValue.text();
+                            }
+                        }
+                        else if (elKey.text() == "CFBundleShortVersionString") {
+                            if (childNodes.at(i + 1).isElement()) {
+                               QDomElement elValue = childNodes.at(i + 1).toElement();
+                               version = elValue.text();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        appleConfigFile.close();
+    }
+    QString result;
+
+    if (name.length() > 0) {
+        result = name;
+        if (version.length() > 0) {
+            result += " ";
+            result += version;
+        }
+    }
+    return result;
 }
 
+QString UBGraphicsWidgetItem::iconFilePath(const QUrl& pUrl)
+{
+    /* TODO UB 4.x read config.xml widget.icon param first */
+
+    QStringList files;
 
-void UBGraphicsWidgetItem::removeAllPreferences()
+    files << "icon.svg";  /* W3C widget default 1 */
+    files << "icon.ico";  /* W3C widget default 2 */
+    files << "icon.png";  /* W3C widget default 3 */
+    files << "icon.gif";  /* W3C widget default 4 */
+    files << "Icon.png";  /* Apple widget default */
+
+    QString file = UBFileSystemUtils::getFirstExistingFileFromList(pUrl.toLocalFile(), files);
+    /* default */
+    if (file.length() == 0)
+    {
+        file = QString(":/images/defaultWidgetIcon.png");
+    }
+    return file;
+}
+
+void UBGraphicsWidgetItem::freeze()
 {
-    mPreferences.clear();
+    QPixmap pix = takeSnapshot();
+    mIsFrozen = true;
+    setSnapshot(pix);
 }
 
+void UBGraphicsWidgetItem::unFreeze()
+{
+    mIsFrozen = false;
+}
 
-void UBGraphicsWidgetItem::setDatastoreEntry(const QString& key, QString value)
+bool UBGraphicsWidgetItem::event(QEvent *event)
 {
-    if (key == "" || (mDatastore.contains(key) && mDatastore.value(key) == value))
-        return;
+    if (mShouldMoveWidget && event->type() == QEvent::MouseMove) {
+        QMouseEvent *mouseMoveEvent = static_cast<QMouseEvent*>(event);
+        if (mouseMoveEvent->buttons() & Qt::LeftButton) {
+            QPointF scenePos = mapToScene(mouseMoveEvent->pos());
+            QPointF newPos = pos() + scenePos - mLastMousePos;
+            setPos(newPos);
+            mLastMousePos = scenePos;
+            event->accept();
+            return true;
+        }
+    }
+    else if (event->type() == QEvent::ShortcutOverride)
+        event->accept();
 
-    mDatastore.insert(key, value);
-    if (scene())
-        scene()->setModified(true);
+    return QGraphicsWebView::event(event);
 }
 
+void UBGraphicsWidgetItem::dropEvent(QGraphicsSceneDragDropEvent *event)
+{
+    processDropEvent(event);
+    QGraphicsWebView::dropEvent(event);
+}
 
-QString UBGraphicsWidgetItem::datastoreEntry(const QString& key) const
+void UBGraphicsWidgetItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDatastore.contains(key))
-        return mDatastore.value(key);
-    else
-        return "";
+    if (!Delegate()->mousePressEvent(event))
+        setSelected(true); /* forcing selection */
+
+    QGraphicsWebView::mousePressEvent(event);
+
+    // did webkit consume the mouse press ?
+    mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton);
+
+    mLastMousePos = mapToScene(event->pos());
+
+    event->accept();
 }
 
+void UBGraphicsWidgetItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    mShouldMoveWidget = false;
 
-QMap<QString, QString> UBGraphicsWidgetItem::datastoreEntries() const
+    Delegate()->mouseReleaseEvent(event);
+    QGraphicsWebView::mouseReleaseEvent(event);
+}
+
+void UBGraphicsWidgetItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
-    return mDatastore;
+    sendJSEnterEvent();
+    Delegate()->hoverEnterEvent(event);
+}
+void UBGraphicsWidgetItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
+{
+    sendJSLeaveEvent();
+    Delegate()->hoverLeaveEvent(event);
 }
 
+void UBGraphicsWidgetItem::sendJSEnterEvent()
+{
+    if (page() && page()->mainFrame())
+        page()->mainFrame()->evaluateJavaScript("if(widget && widget.onenter) { widget.onenter();}");
+}
 
-void UBGraphicsWidgetItem::removeDatastoreEntry(const QString& key)
+void UBGraphicsWidgetItem::sendJSLeaveEvent()
 {
-    mDatastore.remove(key);
+    if (page() && page()->mainFrame())
+        page()->mainFrame()->evaluateJavaScript("if(widget && widget.onleave) { widget.onleave();}");
 }
 
+void UBGraphicsWidgetItem::injectInlineJavaScript()
+{
+    if (!sInlineJavaScriptLoaded) {
+        sInlineJavaScripts = UBApplication::applicationController->widgetInlineJavaScripts();
+        sInlineJavaScriptLoaded = true;
+    }
 
-void UBGraphicsWidgetItem::removeAllDatastoreEntries()
+    foreach(QString script, sInlineJavaScripts)
+        page()->mainFrame()->evaluateJavaScript(script);
+}
+
+void UBGraphicsWidgetItem::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 {
-    mDatastore.clear();
+
+    if (scene() && scene()->renderingContext() != UBGraphicsScene::Screen) {
+        painter->drawPixmap(0, 0, snapshot());
+    }
+    else {
+        QGraphicsWebView::paint(painter, option, widget);
+    }
+
+    if (!mInitialLoadDone) {
+        QString message;
+
+        message = tr("Loading ...");
+
+        painter->setFont(QFont("Arial", 12));
+
+        QFontMetrics fm = painter->fontMetrics();
+        QRect txtBoundingRect = fm.boundingRect(message);
+
+        txtBoundingRect.moveCenter(rect().center().toPoint());
+        txtBoundingRect.adjust(-10, -5, 10, 5);
+
+        painter->setPen(Qt::NoPen);
+        painter->setBrush(UBSettings::paletteColor);
+        painter->drawRoundedRect(txtBoundingRect, 3, 3);
+
+        painter->setPen(Qt::white);
+        painter->drawText(rect(), Qt::AlignCenter, message);
+    }
 }
 
+void UBGraphicsWidgetItem::geometryChangeRequested(const QRect& geom)
+{
+    resize(geom.width(), geom.height());
+}
 
-void UBGraphicsWidgetItem::remove()
+void UBGraphicsWidgetItem::javaScriptWindowObjectCleared()
 {
+    injectInlineJavaScript();
+
+    if(!mUniboardAPI)
+        mUniboardAPI = new UBWidgetUniboardAPI(scene(), this);
 
-    if (mDelegate)
-        mDelegate->remove();
+    page()->mainFrame()->addToJavaScriptWindowObject("sankore", mUniboardAPI);
 
 }
 
-void UBGraphicsWidgetItem::removeScript()
+void UBGraphicsWidgetItem::mainFrameLoadFinished (bool ok)
 {
-    if (mWebKitWidget && mWebKitWidget->page() && mWebKitWidget->page()->mainFrame())
-    {
-        mWebKitWidget->page()->mainFrame()->evaluateJavaScript("if(widget && widget.onremove) { widget.onremove();}");
-    }
+    mLoadIsErronous = !ok;
+    update(boundingRect());
+    takeSnapshot();
 }
-void UBGraphicsWidgetItem::sendJSEnterEvent()
+
+void UBGraphicsWidgetItem::wheelEvent(QGraphicsSceneWheelEvent *event)
 {
-    if (mWebKitWidget && mWebKitWidget->page() && mWebKitWidget->page()->mainFrame())
+    if (Delegate()->weelEvent(event))
     {
-        mWebKitWidget->page()->mainFrame()->evaluateJavaScript("if(widget && widget.onenter) { widget.onenter();}");
+        QGraphicsWebView::wheelEvent(event);
+        event->accept();
     }
 }
-void UBGraphicsWidgetItem::sendJSLeaveEvent()
+
+QVariant UBGraphicsWidgetItem::itemChange(GraphicsItemChange change, const QVariant &value)
 {
-    if (mWebKitWidget && mWebKitWidget->page() && mWebKitWidget->page()->mainFrame())
-    {
-        mWebKitWidget->page()->mainFrame()->evaluateJavaScript("if(widget && widget.onleave) { widget.onleave();}");
+    if ((change == QGraphicsItem::ItemSelectedHasChanged) &&  scene()) {
+        if (isSelected())
+            scene()->setActiveWindow(this);
+        else
+            if(scene()->activeWindow() == this)
+                scene()->setActiveWindow(0);
     }
+
+    QVariant newValue = Delegate()->itemChange(change, value);
+    return QGraphicsWebView::itemChange(change, newValue);
 }
 
-void UBGraphicsWidgetItem::clearSource()
+void UBGraphicsWidgetItem::resize(qreal w, qreal h)
 {
-    UBFileSystemUtils::deleteDir(getOwnFolder().toLocalFile());
-    UBFileSystemUtils::deleteFile(getSnapshotPath().toLocalFile());
+    UBGraphicsWidgetItem::resize(QSizeF(w, h));
 }
 
-void UBGraphicsWidgetItem::processDropEvent(QDropEvent *event)
+
+void UBGraphicsWidgetItem::resize(const QSizeF & pSize)
 {
-    return mUniboardAPI->ProcessDropEvent(event);
+    if (pSize != size()) {
+        QGraphicsWebView::setMaximumSize(pSize.width(), pSize.height());
+        QGraphicsWebView::resize(pSize.width(), pSize.height());
+        if (Delegate())
+            Delegate()->positionHandles();
+        if (scene())
+            scene()->setModified(true);
+    }
 }
-bool UBGraphicsWidgetItem::isDropableData(const QMimeData *data) const
+
+QSizeF UBGraphicsWidgetItem::size() const
 {
-    return mUniboardAPI->isDropableData(data);
+    return QGraphicsWebView::size();
 }
 
+
+
 UBGraphicsAppleWidgetItem::UBGraphicsAppleWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent)
-    : UBGraphicsWidgetItem(parent)
+    : UBGraphicsWidgetItem(pWidgetUrl, parent)
 {
-    mWebKitWidget = new UBAppleWidget(pWidgetUrl, 0);
-    initialize();
-}
+    QString path = pWidgetUrl.toLocalFile();
 
+    if (!path.endsWith(".wdgt") && !path.endsWith(".wdgt/")) {
+        int lastSlashIndex = path.lastIndexOf("/");
+        if (lastSlashIndex > 0)
+            path = path.mid(0, lastSlashIndex + 1);
+    }
 
-UBGraphicsAppleWidgetItem::UBGraphicsAppleWidgetItem(UBAppleWidget *appleWidget, QGraphicsItem *parent)
-    : UBGraphicsWidgetItem(parent)
+    QFile plistFile(path + "/Info.plist");
+    plistFile.open(QFile::ReadOnly);
 
-{
-    mWebKitWidget = appleWidget;
+    QByteArray plistBin = plistFile.readAll();
+    QString plist = QString::fromUtf8(plistBin);
+
+    int mainHtmlIndex = plist.indexOf("MainHTML");
+    int mainHtmlIndexStart = plist.indexOf("<string>", mainHtmlIndex);
+    int mainHtmlIndexEnd = plist.indexOf("</string>", mainHtmlIndexStart);
+
+    if (mainHtmlIndex > -1 && mainHtmlIndexStart > -1 && mainHtmlIndexEnd > -1)
+        mMainHtmlFileName = plist.mid(mainHtmlIndexStart + 8, mainHtmlIndexEnd - mainHtmlIndexStart - 8);
+
+    mMainHtmlUrl = pWidgetUrl;
+    mMainHtmlUrl.setPath(pWidgetUrl.path() + "/" + mMainHtmlFileName);
+
+    load(mMainHtmlUrl);
+
+    QPixmap defaultPixmap(pWidgetUrl.toLocalFile() + "/Default.png");
+
+    setMaximumSize(defaultPixmap.size());
+
+    mNominalSize = defaultPixmap.size();
 
     initialize();
 }
@@ -317,76 +700,425 @@ UBGraphicsAppleWidgetItem::UBGraphicsAppleWidgetItem(UBAppleWidget *appleWidget,
 
 UBGraphicsAppleWidgetItem::~UBGraphicsAppleWidgetItem()
 {
-    // NOOP
+    /* NOOP */
 }
 
+void UBGraphicsAppleWidgetItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
 
 UBItem* UBGraphicsAppleWidgetItem::deepCopy() const
 {
-    UBGraphicsAppleWidgetItem *appleWidget = new UBGraphicsAppleWidgetItem(mWebKitWidget->widgetUrl(), parentItem());
+    UBGraphicsAppleWidgetItem *appleWidget = new UBGraphicsAppleWidgetItem(QGraphicsWebView::url(), parentItem());
 
-    foreach(QString key, mPreferences.keys())
-    {
-        appleWidget->setPreference(key, mPreferences.value(key));
-    }
+    copyItemParameters(appleWidget);
+
+    return appleWidget;
 
-    foreach(QString key, mDatastore.keys())
+}
+
+void UBGraphicsAppleWidgetItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsAppleWidgetItem *cp = dynamic_cast<UBGraphicsAppleWidgetItem*>(copy);
+    if (cp)
     {
-        appleWidget->setDatastoreEntry(key, mDatastore.value(key));
-    }
+        foreach(QString key, mPreferences.keys())
+        {
+            cp->setPreference(key, mPreferences.value(key));
+        }
 
-    appleWidget->setSourceUrl(this->sourceUrl());
+        foreach(QString key, mDatastore.keys())
+        {
+            cp->setDatastoreEntry(key, mDatastore.value(key));
+        }
 
-    return appleWidget;
+        cp->setSourceUrl(this->sourceUrl());
+    }
 
 }
 
 
-UBGraphicsW3CWidgetItem::UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent, int widgetType)
-    : UBGraphicsWidgetItem(parent, widgetType)
+
+
+bool UBGraphicsW3CWidgetItem::sTemplateLoaded = false;
+QString UBGraphicsW3CWidgetItem::sNPAPIWrappperConfigTemplate;
+QMap<QString, QString> UBGraphicsW3CWidgetItem::sNPAPIWrapperTemplates;
+
+UBGraphicsW3CWidgetItem::UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent)
+    : UBGraphicsWidgetItem(pWidgetUrl, parent)
     , mW3CWidgetAPI(0)
 {
-    mW3CWidget = new UBW3CWidget(pWidgetUrl, 0);
-    mWebKitWidget = mW3CWidget;
+    QString path = pWidgetUrl.toLocalFile();
+    QDir potentialDir(path);
+
+    if (!path.endsWith(".wgt") && !path.endsWith(".wgt/") && !potentialDir.exists()) {
+        int lastSlashIndex = path.lastIndexOf("/");
+        if (lastSlashIndex > 0)
+            path = path.mid(0, lastSlashIndex + 1);
+    }
+
+    if (!path.endsWith("/"))
+        path += "/";
+
+    int width = 300;
+    int height = 150;
+
+    QFile configFile(path + "config.xml");
+    configFile.open(QFile::ReadOnly);
+
+    QDomDocument doc;
+    doc.setContent(configFile.readAll());
+    QDomNodeList widgetDomList = doc.elementsByTagName("widget");
+
+    if (widgetDomList.count() > 0) {
+        QDomElement widgetElement = widgetDomList.item(0).toElement();
+
+        width = widgetElement.attribute("width", "300").toInt();
+        height = widgetElement.attribute("height", "150").toInt();
+
+        mMetadatas.id = widgetElement.attribute("id", "");
+
+        /* some early widget (<= 4.3.4) where using identifier instead of id */
+        if (mMetadatas.id.length() == 0)
+             mMetadatas.id = widgetElement.attribute("identifier", "");
+
+        mMetadatas.version = widgetElement.attribute("version", "");
+
+        /* TODO UB 4.x map properly ub namespace */
+        mIsResizable = widgetElement.attribute("ub:resizable", "false") == "true";
+        mIsFreezable = widgetElement.attribute("ub:freezable", "true") == "true";
+
+        QString roles = widgetElement.attribute("ub:roles", "content tool").trimmed().toLower();
+
+        /* ------------------------------ */
+
+        if (roles == "" || roles.contains("tool"))
+            mCanBeTool = UBGraphicsWidgetItem::type_ALL;
+
+        if (roles.contains("twin"))
+            mCanBeTool |= UBGraphicsWidgetItem::type_WIN;
+
+        if (roles.contains("tmac"))
+            mCanBeTool |= UBGraphicsWidgetItem::type_MAC;
+
+        if (roles.contains("tunix"))
+            mCanBeTool |= UBGraphicsWidgetItem::type_UNIX;
+
+        /* --------- */
+
+        if (roles == "" || roles.contains("content"))
+            mCanBeContent = UBGraphicsWidgetItem::type_ALL;
+
+        if (roles.contains("cwin"))
+            mCanBeContent |= UBGraphicsWidgetItem::type_WIN;
+
+        if (roles.contains("cmac"))
+            mCanBeContent |= UBGraphicsWidgetItem::type_MAC;
+
+        if (roles.contains("cunix"))
+            mCanBeContent |= UBGraphicsWidgetItem::type_UNIX;
+
+        //------------------------------//
+
+        QDomNodeList contentDomList = widgetElement.elementsByTagName("content");
+
+        if (contentDomList.count() > 0) {
+            QDomElement contentElement = contentDomList.item(0).toElement();
+            mMainHtmlFileName = contentElement.attribute("src", "");
+        }
+
+        mMetadatas.name = textForSubElementByLocale(widgetElement, "name", QLocale::system());
+        mMetadatas.description = textForSubElementByLocale(widgetElement, "description ", QLocale::system());
+
+        QDomNodeList authorDomList = widgetElement.elementsByTagName("author");
+
+        if (authorDomList.count() > 0) {
+            QDomElement authorElement = authorDomList.item(0).toElement();
+
+            mMetadatas.author = authorElement.text();
+            mMetadatas.authorHref = authorElement.attribute("href", "");
+            mMetadatas.authorEmail = authorElement.attribute("email ", "");
+        }
+
+        QDomNodeList propertiesDomList = widgetElement.elementsByTagName("preference");
+
+        for (uint i = 0; i < propertiesDomList.length(); i++) {
+            QDomElement preferenceElement = propertiesDomList.at(i).toElement();
+            QString prefName = preferenceElement.attribute("name", "");
+
+            if (prefName.length() > 0) {
+                QString prefValue = preferenceElement.attribute("value", "");
+                bool readOnly = (preferenceElement.attribute("readonly", "false") == "true");
+
+                mPreferences.insert(prefName, PreferenceValue(prefValue, readOnly));
+            }
+        }
+    }
+
+    if (mMainHtmlFileName.length() == 0) {
+        QFile defaultStartFile(path + "index.htm");
+
+        if (defaultStartFile.exists())
+            mMainHtmlFileName = "index.htm";
+        else {
+            QFile secondDefaultStartFile(path + "index.html");
+
+            if (secondDefaultStartFile.exists())
+                mMainHtmlFileName = "index.html";
+        }
+    }
+
+    mMainHtmlUrl = pWidgetUrl;
+    mMainHtmlUrl.setPath(pWidgetUrl.path() + "/" + mMainHtmlFileName);
+    /* is it a valid local file ? */
+    QFile f(mMainHtmlUrl.toLocalFile());
+
+    if(!f.exists())
+        mMainHtmlUrl = QUrl(mMainHtmlFileName);
+
+    connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(javaScriptWindowObjectCleared()));
+
+    load(mMainHtmlUrl);
+
+    setMaximumSize(QSize(width, height));
+
+    mNominalSize = QSize(width, height);
+
     initialize();
     setOwnFolder(pWidgetUrl);
 }
 
-UBGraphicsW3CWidgetItem::UBGraphicsW3CWidgetItem(UBW3CWidget *w3cWidget, QGraphicsItem *parent, int widgetType)
-    : UBGraphicsWidgetItem(parent)
-    , mW3CWidget(w3cWidget)
-    , mW3CWidgetAPI(0)
+UBGraphicsW3CWidgetItem::~UBGraphicsW3CWidgetItem()
 {
-    Q_UNUSED(widgetType);
-    mWebKitWidget = mW3CWidget;
-    initialize();
+    /* NOOP */
 }
 
+void UBGraphicsW3CWidgetItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
 
-UBGraphicsW3CWidgetItem::~UBGraphicsW3CWidgetItem()
+UBItem* UBGraphicsW3CWidgetItem::deepCopy() const
 {
-    // NOOP
+    UBGraphicsW3CWidgetItem *copy = new UBGraphicsW3CWidgetItem(mWidgetUrl, parentItem());
+    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
+    copyItemParameters(copy);
+
+    return copy;
 }
 
+QMap<QString, UBGraphicsW3CWidgetItem::PreferenceValue> UBGraphicsW3CWidgetItem::preferences()
+{
+    return mPreferences;
+}
 
-void UBGraphicsW3CWidgetItem::paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
+UBGraphicsW3CWidgetItem::Metadata UBGraphicsW3CWidgetItem::metadatas() const
 {
-    UBGraphicsScene::RenderingContext rc = UBGraphicsScene::Screen;
+    return mMetadatas;
+}
 
-    if (scene())
-      rc =  scene()->renderingContext();
+QString UBGraphicsW3CWidgetItem::createNPAPIWrapper(const QString& url, const QString& pMimeType, const QSize& sizeHint, const QString& pName)
+{
+    const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web");
+    QDir userWidgetDir(userWidgetPath);
 
-    if ((!w3cWidget()->hasLoadedSuccessfully()) && (rc == UBGraphicsScene::NonScreen || rc == UBGraphicsScene::PdfExport))
-    {
-        if (!w3cWidget()->snapshot().isNull())
-        {
-           painter->drawPixmap(0, 0, w3cWidget()->snapshot());
+    return createNPAPIWrapperInDir(url, userWidgetDir, pMimeType, sizeHint, pName);
+}
+
+QString UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(const QString& pUrl, const QDir& pDir, const QString& pMimeType, const QSize& sizeHint, const QString& pName)
+{
+    QString url = pUrl;
+    url = UBFileSystemUtils::removeLocalFilePrefix(url);
+    QString name = pName;
+
+    QFileInfo fi(url);
+
+    if (name.length() == 0)
+        name = fi.baseName();
+
+    if (fi.exists())
+        url = fi.fileName();
+
+    loadNPAPIWrappersTemplates();
+
+    QString htmlTemplate;
+
+    if (pMimeType.length() > 0 && sNPAPIWrapperTemplates.contains(pMimeType))
+        htmlTemplate = sNPAPIWrapperTemplates.value(pMimeType);
+    else {
+        QString extension = UBFileSystemUtils::extension(url);
+        if (sNPAPIWrapperTemplates.contains(extension))
+            htmlTemplate = sNPAPIWrapperTemplates.value(extension);
+    }
+
+    if (htmlTemplate.length() > 0) {
+        htmlTemplate = htmlTemplate.replace(QString("{in.url}"), url)
+            .replace(QString("{in.width}"), QString("%1").arg(sizeHint.width()))
+            .replace(QString("{in.height}"), QString("%1").arg(sizeHint.height()));
+
+        QString configTemplate = sNPAPIWrappperConfigTemplate
+            .replace(QString("{in.id}"), url)
+            .replace(QString("{in.width}"), QString("%1").arg(sizeHint.width()))
+            .replace(QString("{in.height}"), QString("%1").arg(sizeHint.height()))
+            .replace(QString("{in.name}"), name)
+            .replace(QString("{in.startFile}"), QString("index.htm"));
+
+        QString dirPath = pDir.path();
+        if (!pDir.exists())
+            pDir.mkpath(dirPath);
+
+        QString widgetLibraryPath = dirPath + "/" + name + ".wgt";
+        QDir widgetLibraryDir(widgetLibraryPath);
+
+        if (widgetLibraryDir.exists())
+            if (!UBFileSystemUtils::deleteDir(widgetLibraryDir.path()))
+                qWarning() << "Cannot delete old widget " << widgetLibraryDir.path();
+
+        widgetLibraryDir.mkpath(widgetLibraryPath);
+        if (fi.exists()) {
+            QString target = widgetLibraryPath + "/" + fi.fileName();
+            QString source = pUrl;
+            source = UBFileSystemUtils::removeLocalFilePrefix(source);
+            QFile::copy(source, target);
+        }
+
+        QFile configFile(widgetLibraryPath + "/config.xml");
+
+        if (!configFile.open(QIODevice::WriteOnly)) {
+            qWarning() << "Cannot open file " << configFile.fileName();
+            return QString();
+        }
+
+        QTextStream outConfig(&configFile);
+        outConfig.setCodec("UTF-8");
+
+        outConfig << configTemplate;
+        configFile.close();
+
+        QFile indexFile(widgetLibraryPath + "/index.htm");
+
+        if (!indexFile.open(QIODevice::WriteOnly)) {
+            qWarning() << "Cannot open file " << indexFile.fileName();
+            return QString();
         }
+
+        QTextStream outIndex(&indexFile);
+        outIndex.setCodec("UTF-8");
+
+        outIndex << htmlTemplate;
+        indexFile.close();
+
+        return widgetLibraryPath;
     }
     else
-    {
-        UBGraphicsProxyWidget::paint(painter, option, widget);
+        return QString();
+}
+
+QString UBGraphicsW3CWidgetItem::createHtmlWrapperInDir(const QString& html, const QDir& pDir, const QSize& sizeHint, const QString& pName)
+{
+    QString widgetPath = pDir.path() + "/" + pName + ".wgt";
+    widgetPath = UBFileSystemUtils::nextAvailableFileName(widgetPath);
+    QDir widgetDir(widgetPath);
+
+    if (!widgetDir.exists())
+        widgetDir.mkpath(widgetDir.path());
+
+    QFile configFile(widgetPath + "/" + "config.xml");
+
+    if (configFile.exists())
+        configFile.remove(configFile.fileName());
+
+    if (!configFile.open(QIODevice::WriteOnly)) {
+        qWarning() << "Cannot open file " << configFile.fileName();
+        return "";
+    }
+
+    QTextStream outConfig(&configFile);
+    outConfig.setCodec("UTF-8");
+    outConfig << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
+    outConfig << "<widget xmlns=\"http://www.w3.org/ns/widgets\"" << endl;
+    outConfig << "    xmlns:ub=\"http://uniboard.mnemis.com/widgets\"" << endl;
+    outConfig << "    id=\"http://uniboard.mnemis.com/" << pName << "\"" <<endl;
+
+    outConfig << "    version=\"1.0\"" << endl;
+    outConfig << "    width=\"" << sizeHint.width() << "\"" << endl;
+    outConfig << "    height=\"" << sizeHint.height() << "\"" << endl;
+    outConfig << "    ub:resizable=\"true\">" << endl;
+
+    outConfig << "  <name>" << pName << "</name>" << endl;
+    outConfig << "  <content src=\"" << pName << ".html\"/>" << endl;
+
+    outConfig << "</widget>" << endl;
+
+    configFile.close();
+
+    const QString fullHtmlFileName = widgetPath + "/" + pName + ".html";
+
+    QFile widgetHtmlFile(fullHtmlFileName);
+    if (widgetHtmlFile.exists())
+        widgetHtmlFile.remove(widgetHtmlFile.fileName());
+    if (!widgetHtmlFile.open(QIODevice::WriteOnly)) {
+        qWarning() << "cannot open file " << widgetHtmlFile.fileName();
+        return QString();
     }
+
+    QTextStream outStartFile(&widgetHtmlFile);
+    outStartFile.setCodec("UTF-8");
+
+    outStartFile << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" << endl;
+    outStartFile << "<html>" << endl;
+    outStartFile << "<head>" << endl;
+    outStartFile << "    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">" << endl;
+    outStartFile << "</head>" << endl;
+    outStartFile << "  <body>" << endl;
+    outStartFile << html << endl;
+    outStartFile << "  </body>" << endl;
+    outStartFile << "</html>" << endl;
+
+    widgetHtmlFile.close();
+
+    return widgetPath;
+}
+
+QString UBGraphicsW3CWidgetItem::freezedWidgetPage()
+{
+    static QString defaultcontent;
+
+    if (defaultcontent.isNull()) {
+        QString freezedWidgetDefaultContentFilePath = freezedWidgetFilePath();
+        QFile wrapperFile(freezedWidgetDefaultContentFilePath);
+        if (!wrapperFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+            qDebug() << "can't open wrapper file " + freezedWidgetDefaultContentFilePath;
+            defaultcontent = "";
+        }
+        else {
+            QByteArray arr = wrapperFile.readAll();
+            if (!arr.isEmpty())
+                defaultcontent = QString(arr);
+            else {
+                qDebug() << "content of " + freezedWidgetDefaultContentFilePath + "is empty";
+                defaultcontent = QString();
+            }
+        }
+    }
+
+    return defaultcontent;
+}
+
+QString UBGraphicsW3CWidgetItem::freezedWidgetFilePath()
+{
+    return UBPlatformUtils::applicationResourcesDirectory() + "/etc/" + "freezedWidgetWrapper.html";
+}
+
+bool UBGraphicsW3CWidgetItem::hasNPAPIWrapper(const QString& pMimeType)
+{
+    loadNPAPIWrappersTemplates();
+
+    return sNPAPIWrapperTemplates.contains(pMimeType);
 }
 
 void UBGraphicsW3CWidgetItem::javaScriptWindowObjectCleared()
@@ -396,47 +1128,97 @@ void UBGraphicsW3CWidgetItem::javaScriptWindowObjectCleared()
     if(!mW3CWidgetAPI)
         mW3CWidgetAPI = new UBW3CWidgetAPI(this);
 
-    mWebKitWidget->page()->mainFrame()->addToJavaScriptWindowObject("widget", mW3CWidgetAPI);
+    page()->mainFrame()->addToJavaScriptWindowObject("widget", mW3CWidgetAPI);
 
 }
 
-
-UBW3CWidget::Metadata UBGraphicsW3CWidgetItem::metadatas() const
+void UBGraphicsW3CWidgetItem::loadNPAPIWrappersTemplates()
 {
-    return mW3CWidget->metadatas();
-}
+    if (!sTemplateLoaded) {
+        sNPAPIWrapperTemplates.clear();
 
+        QString etcPath = UBPlatformUtils::applicationResourcesDirectory() + "/etc/";
 
-UBW3CWidget* UBGraphicsW3CWidgetItem::w3cWidget() const
-{
-    return mW3CWidget;
-}
+        QDir etcDir(etcPath);
 
+        foreach(QString fileName, etcDir.entryList()) {
+            if (fileName.startsWith("npapi-wrapper") && (fileName.endsWith(".htm") || fileName.endsWith(".html"))) {
 
-UBItem* UBGraphicsW3CWidgetItem::deepCopy() const
+                QString htmlContent = UBFileSystemUtils::readTextFile(etcPath + fileName);
+
+                if (htmlContent.length() > 0) {
+                    QStringList tokens = fileName.split(".");
+
+                    if (tokens.length() >= 4) {
+                        QString mime = tokens.at(tokens.length() - 4 );
+                        mime += "/" + tokens.at(tokens.length() - 3);
+
+                        QString fileExtension = tokens.at(tokens.length() - 2);
+
+                        sNPAPIWrapperTemplates.insert(mime, htmlContent);
+                        sNPAPIWrapperTemplates.insert(fileExtension, htmlContent);
+                    }
+                }
+            }
+        }
+        sNPAPIWrappperConfigTemplate = UBFileSystemUtils::readTextFile(etcPath + "npapi-wrapper.config.xml");
+        sTemplateLoaded = true;
+    }
+}
+
+QString UBGraphicsW3CWidgetItem::textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale)
 {
-    UBGraphicsW3CWidgetItem *copy = new UBGraphicsW3CWidgetItem(mWebKitWidget->widgetUrl(), parentItem());
+    QDomNodeList subList = rootElement.elementsByTagName(subTagName);
 
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
-    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
-    copy->setSourceUrl(this->sourceUrl());
+    QString lang = locale.name();
 
-    copy->resize(this->size());
+    if (lang.length() > 2)
+        lang[2] = QLatin1Char('-');
 
-    foreach(QString key, mPreferences.keys())
-    {
-        copy->setPreference(key, mPreferences.value(key));
+    if (subList.count() > 1) {
+        for(int i = 0; i < subList.count(); i++) {
+            QDomNode node = subList.at(i);
+            QDomElement element = node.toElement();
+
+            QString configLang = element.attribute("xml:lang", "");
+
+            if(lang == configLang || (configLang.length() == 2 && configLang == lang.left(2)))
+                 return element.text();
+        }
     }
 
-    foreach(QString key, mDatastore.keys())
-    {
-        copy->setDatastoreEntry(key, mDatastore.value(key));
+    if (subList.count() >= 1) {
+        QDomElement element = subList.item(0).toElement();
+        return element.text();
     }
 
-    return copy;
+    return QString();
+}
+
+void UBGraphicsW3CWidgetItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsW3CWidgetItem *cp = dynamic_cast<UBGraphicsW3CWidgetItem*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+        cp->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
+        cp->setSourceUrl(this->sourceUrl());
+
+        cp->resize(this->size());
+
+        foreach(QString key, UBGraphicsWidgetItem::preferences().keys())
+        {
+            cp->setPreference(key, UBGraphicsWidgetItem::preferences().value(key));
+        }
+
+        foreach(QString key, mDatastore.keys())
+        {
+            cp->setDatastoreEntry(key, mDatastore.value(key));
+        }
+    }
 }
+
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h
index 2d29d30..fd5a224 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItem.h
@@ -1,115 +1,187 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBGRAPHICSWIDGETITEM_H
 #define UBGRAPHICSWIDGETITEM_H
 
 #include <QtGui>
 #include <QtWebKit>
+#include <QDomElement>
 
 #include "core/UB.h"
 
-#include "UBGraphicsProxyWidget.h"
-#include "UBW3CWidget.h"
-#include "UBAppleWidget.h"
+#include "UBItem.h"
+#include "UBResizableGraphicsItem.h"
 
 class UBWidgetUniboardAPI;
 class UBGraphicsScene;
-class UBAbstractWidget;
 class UBW3CWidgetAPI;
 class UBW3CWidgetWebStorageAPI;
 class UBGraphiscItem;
 class UBGraphiscItemDelegate;
 
-class UBGraphicsWidgetItem : public UBGraphicsProxyWidget
+struct UBWidgetType
+{
+    enum Enum
+    {
+        W3C = 0, Apple, Other
+    };
+};
+
+class UBGraphicsWidgetItem : public QGraphicsWebView, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem
 {
     Q_OBJECT
 
     public:
-        UBGraphicsWidgetItem(QGraphicsItem *parent = 0, int widgetType = 0);
+        UBGraphicsWidgetItem(const QUrl &pWidgetUrl = QUrl(), QGraphicsItem *parent = 0);
         ~UBGraphicsWidgetItem();
 
-        virtual UBGraphicsScene* scene();
+        enum { Type = UBGraphicsItemType::GraphicsWidgetItemType };
 
-        UBAbstractWidget* widgetWebView();
+        virtual int type() const { return Type; }
 
         virtual void initialize();
 
-        virtual UBItem* deepCopy() const = 0;
+        virtual void resize(qreal w, qreal h);
+        virtual void resize(const QSizeF & size);
+        virtual QSizeF size() const;
 
-        virtual void resize ( qreal w, qreal h );
-        virtual void resize ( const QSizeF & size );
+        QUrl mainHtml();
+        void loadMainHtml();
+        QUrl widgetUrl();
+        QString mainHtmlFileName();
+
+        bool canBeContent();
+        bool canBeTool();
 
-        void setPreference(const QString& key, QString value);
         QString preference(const QString& key) const;
+        void setPreference(const QString& key, QString value);
         QMap<QString, QString> preferences() const;
         void removePreference(const QString& key);
         void removeAllPreferences();
 
-        void setDatastoreEntry(const QString& key, QString value);
         QString datastoreEntry(const QString& key) const;
+        void setDatastoreEntry(const QString& key, QString value);
         QMap<QString, QString> datastoreEntries() const;
         void removeDatastoreEntry(const QString& key);
         void removeAllDatastoreEntries();
-        virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate; }
 
-        virtual void remove();
         void removeScript();
 
-        QString downloadUrl(const QString &fileUrl, const QString &extention);
-        QString downloadWeb(const QString &fileUrl);
-        void processDropEvent(QDropEvent *event);
+        void processDropEvent(QGraphicsSceneDragDropEvent *event);
         bool isDropableData(const QMimeData *data) const;
 
-        virtual void setOwnFolder(const QUrl &newFolder) {ownFolder = newFolder;}
-        virtual QUrl getOwnFolder() const {return ownFolder;}
-        virtual void setSnapshotPath(const QUrl &newFilePath){SnapshotFile = newFilePath;}
-        virtual QUrl getSnapshotPath(){return SnapshotFile;}
+        virtual QUrl getOwnFolder() const;
+        virtual void setOwnFolder(const QUrl &newFolder);
+        virtual void setSnapshotPath(const QUrl &newFilePath);
+        virtual QUrl getSnapshotPath();
 
         virtual void clearSource();
 
+        virtual void setUuid(const QUuid &pUuid);
 
-    protected:
+        QSize nominalSize() const;
 
-        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
-        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+        bool hasLoadedSuccessfully() const;
 
-        virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
-        virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
-        virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
+        bool freezable();
+        bool resizable();
+        bool isFrozen();
 
+        QPixmap snapshot();
+        void setSnapshot(const QPixmap& pix);
+        QPixmap takeSnapshot();
 
-        virtual bool eventFilter(QObject *obj, QEvent *event);
+        virtual UBItem* deepCopy() const = 0;
+        virtual UBGraphicsScene* scene();
 
-        virtual void sendJSEnterEvent();
-        virtual void sendJSLeaveEvent();
+        static int widgetType(const QUrl& pUrl);
+        static QString widgetName(const QUrl& pUrl);
+        static QString iconFilePath(const QUrl& pUrl);
 
-        UBAbstractWidget* mWebKitWidget;
+    public slots:
+        void freeze();
+        void unFreeze();
 
-        QMap<QString, QString> mPreferences;
+    protected:
+        enum OSType
+        {
+            type_NONE = 0, // 0000
+            type_WIN  = 1, // 0001
+            type_MAC  = 2, // 0010
+            type_UNIX = 4, // 0100
+            type_ALL  = 7, // 0111
+        };
+
+        bool mFirstReleaseAfterMove;
+        bool mInitialLoadDone;
+        bool mIsFreezable;
+        bool mIsResizable;
+        bool mLoadIsErronous;
+        bool mMouseIsPressed;
+        int mCanBeContent;
+        int mCanBeTool;
+        QSize mNominalSize;
+        QString mMainHtmlFileName;
+        QUrl mMainHtmlUrl;
+        QUrl mWidgetUrl;
         QMap<QString, QString> mDatastore;
+        QMap<QString, QString> mPreferences;
+
+
+        virtual bool event(QEvent *event);
+        virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
+        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+        virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+        virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+        virtual void sendJSEnterEvent();
+        virtual void sendJSLeaveEvent();
+        virtual void injectInlineJavaScript();
+        virtual void wheelEvent(QGraphicsSceneWheelEvent *event);
+        virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
+        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
 
     protected slots:
         void geometryChangeRequested(const QRect& geom);
         virtual void javaScriptWindowObjectCleared();
+        void mainFrameLoadFinished(bool ok);
+
+    private slots:
+        void onLinkClicked(const QUrl& url);
+        void initialLayoutCompleted();
 
     private:
-        QPointF mLastMousePos;
+        bool mIsFrozen;
+        bool mIsTakingSnapshot;
         bool mShouldMoveWidget;
         UBWidgetUniboardAPI* mUniboardAPI;
+        QPixmap mSnapshot;
+        QPointF mLastMousePos;
         QUrl ownFolder;
         QUrl SnapshotFile;
+
+        static bool sInlineJavaScriptLoaded;
+        static QStringList sInlineJavaScripts;
 };
 
 class UBGraphicsAppleWidgetItem : public UBGraphicsWidgetItem
@@ -118,18 +190,11 @@ class UBGraphicsAppleWidgetItem : public UBGraphicsWidgetItem
 
     public:
         UBGraphicsAppleWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent = 0);
-        UBGraphicsAppleWidgetItem(UBAppleWidget *appleWidget, QGraphicsItem *parent = 0);
         ~UBGraphicsAppleWidgetItem();
 
-        enum { Type = UBGraphicsItemType::AppleWidgetItemType };
-
-        virtual int type() const
-        {
-            return Type;
-        }
-
+        virtual void copyItemParameters(UBItem *copy) const;
+        virtual void setUuid(const QUuid &pUuid);
         virtual UBItem* deepCopy() const;
-
 };
 
 class UBGraphicsW3CWidgetItem : public UBGraphicsWidgetItem
@@ -137,35 +202,69 @@ class UBGraphicsW3CWidgetItem : public UBGraphicsWidgetItem
     Q_OBJECT
 
     public:
-        UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent = 0, int widgetType = UBGraphicsItemType::W3CWidgetItemType);
-        UBGraphicsW3CWidgetItem(UBW3CWidget *w3cWidget, QGraphicsItem *parent = 0, int widgetType = UBGraphicsItemType::W3CWidgetItemType);
-        ~UBGraphicsW3CWidgetItem();
+        class PreferenceValue
+        {
+            public:
+
+                PreferenceValue()
+                {
+                    /* NOOP */
+                }
 
-        enum { Type = UBGraphicsItemType::W3CWidgetItemType };
 
-        virtual int type() const
+                PreferenceValue(const QString& pValue, bool pReadonly)
+                {
+                    value = pValue;
+                    readonly = pReadonly;
+                }
+
+                bool readonly;
+                QString value;
+         };
+
+        class Metadata
         {
-            return Type;
-        }
+            public:
+                QString id;
+                QString name;
+                QString description;
+                QString author;
+                QString authorEmail;
+                QString authorHref;
+                QString version;
+        };
+
+        UBGraphicsW3CWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent = 0);
+        ~UBGraphicsW3CWidgetItem();
 
+        virtual void setUuid(const QUuid &pUuid);
         virtual UBItem* deepCopy() const;
+        virtual void copyItemParameters(UBItem *copy) const;
+        QMap<QString, PreferenceValue> preferences();
+        Metadata metadatas() const;
 
-        UBW3CWidget::Metadata metadatas() const;
+        static QString freezedWidgetFilePath();
+        static QString createNPAPIWrapper(const QString& url, const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150), const QString& pName = QString());
+        static QString createNPAPIWrapperInDir(const QString& url, const QDir& pDir, const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150), const QString& pName = QString());
+        static QString createHtmlWrapperInDir(const QString& html, const QDir& pDir, const QSize& sizeHint,  const QString& pName);
+        static QString freezedWidgetPage();
+        static bool hasNPAPIWrapper(const QString& pMimeType);
 
-        UBW3CWidget* w3cWidget() const;
-
-        virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget );
+        Metadata mMetadatas;
 
     private slots:
-
         virtual void javaScriptWindowObjectCleared();
 
     private:
+        static void loadNPAPIWrappersTemplates();
+        static QString textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale);
 
-        UBW3CWidget* mW3CWidget;
         UBW3CWidgetAPI* mW3CWidgetAPI;
+        QMap<QString, PreferenceValue> mPreferences;
 
-
+        static bool sTemplateLoaded;
+        static QString sNPAPIWrappperConfigTemplate;
+        static QMap<QString, QString> sNPAPIWrapperTemplates;
 };
 
 #endif // UBGRAPHICSWIDGETITEM_H
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp
index a5f45d3..963dc1b 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 #include <QtSvg>
 
@@ -30,7 +37,7 @@
 #include "core/memcheck.h"
 
 UBGraphicsWidgetItemDelegate::UBGraphicsWidgetItemDelegate(UBGraphicsWidgetItem* pDelegated, int widgetType)
-    : UBGraphicsItemDelegate(pDelegated, 0, true, false)
+    : UBGraphicsItemDelegate(pDelegated, 0, true, false, false, true)
     , freezeAction(0)
     , setAsToolAction(0)
 {
@@ -55,7 +62,7 @@ void UBGraphicsWidgetItemDelegate::updateMenuActionState()
     UBGraphicsItemDelegate::updateMenuActionState();
 
     if (freezeAction)
-        freezeAction->setChecked(delegated()->widgetWebView()->isFrozen());
+        freezeAction->setChecked(delegated()->isFrozen());
 }
 
 void UBGraphicsWidgetItemDelegate::decorateMenu(QMenu* menu)
@@ -71,7 +78,7 @@ void UBGraphicsWidgetItemDelegate::decorateMenu(QMenu* menu)
 
     freezeAction->setCheckable(true);
 
-    if (delegated()->widgetWebView()->canBeTool())
+    if (delegated()->canBeTool())
     {
         setAsToolAction = mMenu->addAction(tr("Transform as Tool "), this, SLOT(pin()));
         QIcon pinIcon;
@@ -86,11 +93,11 @@ void UBGraphicsWidgetItemDelegate::freeze(bool frozen)
 {
     if(frozen)
     {
-       delegated()->widgetWebView()->freeze();
+       delegated()->freeze();
     }
     else
     {
-       delegated()->widgetWebView()->unFreeze();
+       delegated()->unFreeze();
     }
 }
 
diff --git a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h
index 0e37913..b40307f 100644
--- a/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h
+++ b/Sankore-3.1/src/domain/UBGraphicsWidgetItemDelegate.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSWIDGETITEMDELEGATE_H_
 #define UBGRAPHICSWIDGETITEMDELEGATE_H_
 
diff --git a/Sankore-3.1/src/domain/UBItem.cpp b/Sankore-3.1/src/domain/UBItem.cpp
index 54c16e7..7f672d6 100644
--- a/Sankore-3.1/src/domain/UBItem.cpp
+++ b/Sankore-3.1/src/domain/UBItem.cpp
@@ -1,24 +1,40 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBItem.h"
 
 #include "core/memcheck.h"
 
+#include "domain/UBGraphicsPixmapItem.h"
+#include "domain/UBGraphicsTextItem.h"
+#include "domain/UBGraphicsSvgItem.h"
+#include "domain/UBGraphicsMediaItem.h"
+#include "domain/UBGraphicsStrokesGroup.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "tools/UBGraphicsCurtainItem.h"
+
 UBItem::UBItem()
-    : mUuid(QUuid::createUuid())
+    : mUuid(QUuid())
     , mRenderingQuality(UBItem::RenderingQualityNormal)
 {
     // NOOP
@@ -29,8 +45,76 @@ UBItem::~UBItem()
     // NOOP
 }
 
+UBGraphicsItem::~UBGraphicsItem()
+{
+    if (mDelegate!=NULL)
+        delete mDelegate;
+}
+
+void UBGraphicsItem::setDelegate(UBGraphicsItemDelegate* delegate)
+{
+    Q_ASSERT(mDelegate==NULL);
+    mDelegate = delegate;
+}
+
 void UBGraphicsItem::assignZValue(QGraphicsItem *item, qreal value)
 {
     item->setZValue(value);
     item->setData(UBGraphicsItemData::ItemOwnZValue, value);
 }
+
+bool UBGraphicsItem::isFlippable(QGraphicsItem *item)
+{
+    return item->data(UBGraphicsItemData::ItemFlippable).toBool();
+}
+
+bool UBGraphicsItem::isRotatable(QGraphicsItem *item)
+{
+    return item->data(UBGraphicsItemData::ItemRotatable).toBool();
+}
+
+QUuid UBGraphicsItem::getOwnUuid(QGraphicsItem *item)
+{
+    QString idCandidate = item->data(UBGraphicsItemData::ItemUuid).toString();
+    return idCandidate == QUuid().toString() ? QUuid() : QUuid(idCandidate);
+}
+
+void UBGraphicsItem::remove(bool canUndo)
+{
+    if (Delegate())
+        Delegate()->remove(canUndo);
+}
+
+UBGraphicsItemDelegate *UBGraphicsItem::Delegate(QGraphicsItem *pItem)
+{
+    UBGraphicsItemDelegate *result = 0;
+
+    switch (static_cast<int>(pItem->type())) {
+    case UBGraphicsPixmapItem::Type :
+        result = (static_cast<UBGraphicsPixmapItem*>(pItem))->Delegate();
+        break;
+    case UBGraphicsTextItem::Type :
+        result = (static_cast<UBGraphicsTextItem*>(pItem))->Delegate();
+        break;
+    case UBGraphicsSvgItem::Type :
+        result = (static_cast<UBGraphicsSvgItem*>(pItem))->Delegate();
+        break;
+    case UBGraphicsMediaItem::Type:
+        result = (static_cast<UBGraphicsMediaItem*>(pItem))->Delegate();
+        break;
+    case UBGraphicsStrokesGroup::Type :
+        result = (static_cast<UBGraphicsStrokesGroup*>(pItem))->Delegate();
+        break;
+    case UBGraphicsGroupContainerItem::Type :
+        result = (static_cast<UBGraphicsGroupContainerItem*>(pItem))->Delegate();
+        break;
+    case UBGraphicsWidgetItem::Type :
+        result = (static_cast<UBGraphicsWidgetItem*>(pItem))->Delegate();
+        break;
+    case UBGraphicsCurtainItem::Type :
+        result = (static_cast<UBGraphicsCurtainItem*>(pItem))->Delegate();
+        break;
+    }
+
+    return result;
+}
diff --git a/Sankore-3.1/src/domain/UBItem.h b/Sankore-3.1/src/domain/UBItem.h
index 301395f..bbf7cfb 100644
--- a/Sankore-3.1/src/domain/UBItem.h
+++ b/Sankore-3.1/src/domain/UBItem.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBITEM_H
 #define UBITEM_H
 
@@ -20,6 +28,7 @@
 #include "core/UB.h"
 
 class UBGraphicsScene;
+class UBGraphicsItem;
 
 class UBItem
 {
@@ -58,6 +67,8 @@ class UBItem
 
         virtual UBItem* deepCopy() const = 0;
 
+        virtual void copyItemParameters(UBItem *copy) const = 0;
+
         virtual UBGraphicsScene* scene() // TODO UB 4.x should be pure virtual ...
         {
             return 0;
@@ -87,26 +98,32 @@ class UBItem
 class UBGraphicsItem
 {
 protected:
-
-    UBGraphicsItem() : mDelegate(0)
-    {
-        // NOOP
-    }
-    UBGraphicsItemDelegate* mDelegate;
-
-    virtual ~UBGraphicsItem()
+    UBGraphicsItem() : mDelegate(NULL)
     {
         // NOOP
     }
+    virtual ~UBGraphicsItem();
+    void setDelegate(UBGraphicsItemDelegate* mDelegate);
 
 public:
 
+    virtual int type() const = 0;
+
+    inline UBGraphicsItemDelegate *Delegate() const { return mDelegate; }
+
     static void assignZValue(QGraphicsItem*, qreal value);
-    virtual UBGraphicsItemDelegate *Delegate() const  = 0;
+    static bool isRotatable(QGraphicsItem *item);
+    static bool isFlippable(QGraphicsItem *item);
+    static QUuid getOwnUuid(QGraphicsItem *item);
+
+    static UBGraphicsItemDelegate *Delegate(QGraphicsItem *pItem);
 
-    virtual void remove() = 0;
+    void remove(bool canUndo = true);
 
-    virtual void clearSource(){;}
+    virtual void clearSource(){}
+
+private:
+    UBGraphicsItemDelegate* mDelegate;
 };
 
 #endif // UBITEM_H
diff --git a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp
index af7c12f..0445745 100644
--- a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp
+++ b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPageSizeUndoCommand.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h
index ad295d4..b184350 100644
--- a/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h
+++ b/Sankore-3.1/src/domain/UBPageSizeUndoCommand.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBPageSizeUndoCommand_H_
 #define UBPageSizeUndoCommand_H_
 
diff --git a/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp b/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp
index 94b1b6a..6dd2b79 100644
--- a/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp
+++ b/Sankore-3.1/src/domain/UBResizableGraphicsItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBResizableGraphicsItem.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/domain/UBResizableGraphicsItem.h b/Sankore-3.1/src/domain/UBResizableGraphicsItem.h
index 0aa4313..f2972a4 100644
--- a/Sankore-3.1/src/domain/UBResizableGraphicsItem.h
+++ b/Sankore-3.1/src/domain/UBResizableGraphicsItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBRESIZABLEGRAPHICSITEM_H_
 #define UBRESIZABLEGRAPHICSITEM_H_
 
diff --git a/Sankore-3.1/src/domain/UBW3CWidget.cpp b/Sankore-3.1/src/domain/UBW3CWidget.cpp
deleted file mode 100644
index 60c7bc5..0000000
--- a/Sankore-3.1/src/domain/UBW3CWidget.cpp
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * 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/>.
- */
-
-#include "UBW3CWidget.h"
-
-#include <QtNetwork>
-#include <QtXml>
-
-#include "frameworks/UBPlatformUtils.h"
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-#include "api/UBWidgetUniboardAPI.h"
-
-#include "board/UBBoardController.h"
-
-#include "core/memcheck.h"
-
-const QString freezedWidgetDefaultContentFilePath = "./etc/freezedWidgetWrapper.html";
-
-bool UBW3CWidget::sTemplateLoaded = false;
-QMap<QString, QString> UBW3CWidget::sNPAPIWrapperTemplates;
-QString UBW3CWidget::sNPAPIWrappperConfigTemplate;
-
-
-UBW3CWidget::UBW3CWidget(const QUrl& pWidgetUrl, QWidget *parent)
-    : UBAbstractWidget(pWidgetUrl, parent)
-
-{
-    QString path = pWidgetUrl.toLocalFile();
-    QDir potentialDir(path);
-
-    if (!path.endsWith(".wgt") && !path.endsWith(".wgt/") && !potentialDir.exists())
-    {
-        int lastSlashIndex = path.lastIndexOf("/");
-        if (lastSlashIndex > 0)
-        {
-            path = path.mid(0, lastSlashIndex + 1);
-        }
-    }
-
-    if(!path.endsWith("/"))
-        path += "/";
-
-    int width = 300;
-    int height = 150;
-
-    QFile configFile(path + "config.xml");
-    configFile.open(QFile::ReadOnly);
-
-    QDomDocument doc;
-    doc.setContent(configFile.readAll());
-    QDomNodeList widgetDomList = doc.elementsByTagName("widget");
-
-    if (widgetDomList.count() > 0)
-    {
-        QDomElement widgetElement = widgetDomList.item(0).toElement();
-
-        width = widgetElement.attribute("width", "300").toInt();
-        height = widgetElement.attribute("height", "150").toInt();
-
-        mMetadatas.id = widgetElement.attribute("id", "");
-
-        //some early widget (<= 4.3.4) where using identifier instead of id
-        if (mMetadatas.id.length() == 0)
-             mMetadatas.id = widgetElement.attribute("identifier", "");
-
-        mMetadatas.version = widgetElement.attribute("version", "");
-
-        // TODO UB 4.x map properly ub namespace
-        mIsResizable = widgetElement.attribute("ub:resizable", "false") == "true";
-        mIsFreezable = widgetElement.attribute("ub:freezable", "true") == "true";
-
-        QString roles = widgetElement.attribute("ub:roles", "content tool").trimmed().toLower();
-
-        //------------------------------//
-
-        if( roles == "" || roles.contains("tool") )
-        {
-            mCanBeTool = UBAbstractWidget::type_ALL;
-        }
-
-        if( roles.contains("twin") )
-        {
-            mCanBeTool |= UBAbstractWidget::type_WIN;
-        }
-
-        if( roles.contains("tmac") )
-        {
-            mCanBeTool |= UBAbstractWidget::type_MAC;
-        }
-        
-        if( roles.contains("tunix") )
-        {
-            mCanBeTool |= UBAbstractWidget::type_UNIX;
-        }
-
-        //---------//
-
-        if( roles == "" || roles.contains("content") )
-        {
-            mCanBeContent = UBAbstractWidget::type_ALL;
-        }
-
-        if( roles.contains("cwin") )
-        {
-            mCanBeContent |= UBAbstractWidget::type_WIN;
-        }
-
-        if( roles.contains("cmac") )
-        {
-            mCanBeContent |= UBAbstractWidget::type_MAC;
-        }
-
-        if( roles.contains("cunix") )
-        {
-            mCanBeContent |= UBAbstractWidget::type_UNIX;
-        }
-
-        //------------------------------//
-
-        QDomNodeList contentDomList = widgetElement.elementsByTagName("content");
-
-        if (contentDomList.count() > 0)
-        {
-            QDomElement contentElement = contentDomList.item(0).toElement();
-
-            mMainHtmlFileName = contentElement.attribute("src", "");
-        }
-
-        mMetadatas.name = textForSubElementByLocale(widgetElement, "name", locale());
-        mMetadatas.description = textForSubElementByLocale(widgetElement, "description ", locale());
-
-        QDomNodeList authorDomList = widgetElement.elementsByTagName("author");
-
-        if (authorDomList.count() > 0)
-        {
-            QDomElement authorElement = authorDomList.item(0).toElement();
-
-            mMetadatas.author = authorElement.text();
-            mMetadatas.authorHref = authorElement.attribute("href", "");
-            mMetadatas.authorEmail = authorElement.attribute("email ", "");
-        }
-
-        QDomNodeList propertiesDomList = widgetElement.elementsByTagName("preference");
-
-        for (uint i = 0; i < propertiesDomList.length(); i++)
-        {
-            QDomElement preferenceElement = propertiesDomList.at(i).toElement();
-            QString prefName = preferenceElement.attribute("name", "");
-
-            if (prefName.length() > 0)
-            {
-                QString prefValue = preferenceElement.attribute("value", "");
-                bool readOnly = (preferenceElement.attribute("readonly", "false") == "true");
-
-                mPreferences.insert(prefName, PreferenceValue(prefValue, readOnly));
-            }
-        }
-    }
-
-    if (mMainHtmlFileName.length() == 0)
-    {
-        QFile defaultStartFile(path + "index.htm");
-
-        if (defaultStartFile.exists())
-        {
-            mMainHtmlFileName = "index.htm";
-        }
-        else
-        {
-            QFile secondDefaultStartFile(path + "index.html");
-
-            if (secondDefaultStartFile.exists())
-            {
-                mMainHtmlFileName = "index.html";
-            }
-        }
-    }
-
-    mMainHtmlUrl = pWidgetUrl;
-    mMainHtmlUrl.setPath(pWidgetUrl.path() + "/" + mMainHtmlFileName);
-    // is it a valid local file ?
-    QFile f(mMainHtmlUrl.toLocalFile());
-
-    if(!f.exists())
-        mMainHtmlUrl = QUrl(mMainHtmlFileName);
-
-    connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
-    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(javaScriptWindowObjectCleared()));
-
-    QWebView::load(mMainHtmlUrl);
-
-    setFixedSize(QSize(width, height));
-
-    mNominalSize = QSize(width, height);
-}
-
-UBW3CWidget::~UBW3CWidget()
-{
-    // NOOP
-}
-
-void UBW3CWidget::javaScriptWindowObjectCleared()
-{
-    UBWidgetUniboardAPI *uniboardAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene(), 0);
-
-    page()->mainFrame()->addToJavaScriptWindowObject("sankore", uniboardAPI);
-
-}
-
-bool UBW3CWidget::hasNPAPIWrapper(const QString& pMimeType)
-{
-    loadNPAPIWrappersTemplates();
-
-    return sNPAPIWrapperTemplates.contains(pMimeType);
-}
-
-
-QString UBW3CWidget::createNPAPIWrapper(const QString& url,
-        const QString& pMimeType, const QSize& sizeHint, const QString& pName)
-{
-    const QString userWidgetPath = UBSettings::settings()->userInteractiveDirectory() + "/" + tr("Web");
-    QDir userWidgetDir(userWidgetPath);
-
-    return createNPAPIWrapperInDir(url, userWidgetDir, pMimeType, sizeHint, pName);
-}
-
-
-
-QString UBW3CWidget::createNPAPIWrapperInDir(const QString& pUrl, const QDir& pDir,
-    const QString& pMimeType, const QSize& sizeHint,
-    const QString& pName)
-{
-    QString url = pUrl;
-    // if the file name start with file:// it has be removed because QFileInfo doesn't support this form
-	//
-	url = url.replace("file:///","");
-	url = url.replace("file://","");
-    QString name = pName;
-
-    QFileInfo fi(url);
-
-    if (name.length() == 0)
-        name = fi.baseName();
-
-    if (fi.exists()){
-        url = fi.fileName();
-    }
-
-    loadNPAPIWrappersTemplates();
-
-    QString htmlTemplate;
-
-    if (pMimeType.length() > 0 && sNPAPIWrapperTemplates.contains(pMimeType)){
-        htmlTemplate = sNPAPIWrapperTemplates.value(pMimeType);
-    }
-    else {
-        QString extension = UBFileSystemUtils::extension(url);
-
-        if (sNPAPIWrapperTemplates.contains(extension))
-            htmlTemplate = sNPAPIWrapperTemplates.value(extension);
-    }
-
-    if (htmlTemplate.length() > 0){
-        htmlTemplate = htmlTemplate.replace(QString("{in.url}"), url)
-            .replace(QString("{in.width}"), QString("%1").arg(sizeHint.width()))
-            .replace(QString("{in.height}"), QString("%1").arg(sizeHint.height()));
-
-        QString configTemplate = sNPAPIWrappperConfigTemplate
-            .replace(QString("{in.id}"), url)
-            .replace(QString("{in.width}"), QString("%1").arg(sizeHint.width()))
-            .replace(QString("{in.height}"), QString("%1").arg(sizeHint.height()))
-            .replace(QString("{in.name}"), name)
-            .replace(QString("{in.startFile}"), QString("index.htm"));
-
-        QString dirPath = pDir.path();
-        if (!pDir.exists())
-            pDir.mkpath(dirPath);
-
-        QString widgetLibraryPath = dirPath + "/" + name + ".wgt";
-        QDir widgetLibraryDir(widgetLibraryPath);
-
-        if (widgetLibraryDir.exists())
-        {
-            if (!UBFileSystemUtils::deleteDir(widgetLibraryDir.path()))
-            {
-                qWarning() << "Cannot delete old widget " << widgetLibraryDir.path();
-            }
-        }
-
-        widgetLibraryDir.mkpath(widgetLibraryPath);
-        if (fi.exists()){
-            QString target = widgetLibraryPath + "/" + fi.fileName();
-            QString source = pUrl;
-            source.replace("file:///","");
-			source.replace("file://","");
-            QFile::copy(source, target);
-        }
-
-        QFile configFile(widgetLibraryPath + "/config.xml");
-
-        if (!configFile.open(QIODevice::WriteOnly))
-        {
-            qWarning() << "Cannot open file " << configFile.fileName();
-            return "";
-        }
-
-        QTextStream outConfig(&configFile);
-        outConfig.setCodec("UTF-8");
-
-        outConfig << configTemplate;
-        configFile.close();
-
-        QFile indexFile(widgetLibraryPath + "/index.htm");
-
-        if (!indexFile.open(QIODevice::WriteOnly))
-        {
-            qWarning() << "Cannot open file " << indexFile.fileName();
-            return "";
-        }
-
-        QTextStream outIndex(&indexFile);
-        outIndex.setCodec("UTF-8");
-
-        outIndex << htmlTemplate;
-        indexFile.close();
-
-        return widgetLibraryPath;
-    }
-    else
-    {
-        return "";
-    }
-}
-
-
-QString UBW3CWidget::createHtmlWrapperInDir(const QString& html, const QDir& pDir,
-    const QSize& sizeHint, const QString& pName)
-{
-
-    QString widgetPath = pDir.path() + "/" + pName + ".wgt";
-    widgetPath = UBFileSystemUtils::nextAvailableFileName(widgetPath);
-    QDir widgetDir(widgetPath);
-
-    if (!widgetDir.exists())
-    {
-        widgetDir.mkpath(widgetDir.path());
-    }
-
-    QFile configFile(widgetPath + "/" + "config.xml");
-
-    if (configFile.exists())
-    {
-        configFile.remove(configFile.fileName());
-    }
-
-    if (!configFile.open(QIODevice::WriteOnly))
-    {
-        qWarning() << "Cannot open file " << configFile.fileName();
-        return "";
-    }
-
-    QTextStream outConfig(&configFile);
-    outConfig.setCodec("UTF-8");
-    outConfig << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
-    outConfig << "<widget xmlns=\"http://www.w3.org/ns/widgets\"" << endl;
-    outConfig << "    xmlns:ub=\"http://uniboard.mnemis.com/widgets\"" << endl;
-    outConfig << "    id=\"http://uniboard.mnemis.com/" << pName << "\"" <<endl;
-
-    outConfig << "    version=\"1.0\"" << endl;
-    outConfig << "    width=\"" << sizeHint.width() << "\"" << endl;
-    outConfig << "    height=\"" << sizeHint.height() << "\"" << endl;
-    outConfig << "    ub:resizable=\"true\">" << endl;
-
-    outConfig << "  <name>" << pName << "</name>" << endl;
-    outConfig << "  <content src=\"" << pName << ".html\"/>" << endl;
-
-    outConfig << "</widget>" << endl;
-
-    configFile.close();
-
-    const QString fullHtmlFileName = widgetPath + "/" + pName + ".html";
-
-    QFile widgetHtmlFile(fullHtmlFileName);
-    if (widgetHtmlFile.exists())
-    {
-        widgetHtmlFile.remove(widgetHtmlFile.fileName());
-    }
-    if (!widgetHtmlFile.open(QIODevice::WriteOnly))
-    {
-        qWarning() << "cannot open file " << widgetHtmlFile.fileName();
-        return "";
-    }
-
-    QTextStream outStartFile(&widgetHtmlFile);
-    outStartFile.setCodec("UTF-8");
-
-    outStartFile << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" << endl;
-    outStartFile << "<html>" << endl;
-    outStartFile << "<head>" << endl;
-    outStartFile << "    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">" << endl;
-    outStartFile << "</head>" << endl;
-    outStartFile << "  <body>" << endl;
-    outStartFile << html << endl;
-    outStartFile << "  </body>" << endl;
-    outStartFile << "</html>" << endl;
-
-    widgetHtmlFile.close();
-
-    return widgetPath;
-
-}
-
-QString UBW3CWidget::freezedWidgetPage()
-{
-    static QString defaultcontent;
-
-    if (defaultcontent.isNull()) {
-        QFile wrapperFile(freezedWidgetDefaultContentFilePath);
-        if (!wrapperFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
-            qDebug() << "can't open wrapper file " + freezedWidgetDefaultContentFilePath;
-            defaultcontent = "";
-        } else {
-            QByteArray arr = wrapperFile.readAll();
-            if (!arr.isEmpty()) {
-                defaultcontent = QString(arr);
-            } else {
-                qDebug() << "content of " + freezedWidgetDefaultContentFilePath + "is empty";
-                defaultcontent = "";
-            }
-        }
-    }
-
-    return defaultcontent;
-}
-
-void UBW3CWidget::loadNPAPIWrappersTemplates()
-{
-    if (!sTemplateLoaded)
-    {
-        sNPAPIWrapperTemplates.clear();
-
-        QString etcPath = UBPlatformUtils::applicationResourcesDirectory() + "/etc/";
-
-        QDir etcDir(etcPath);
-
-        foreach(QString fileName, etcDir.entryList())
-        {
-            if (fileName.startsWith("npapi-wrapper") && (fileName.endsWith(".htm") || fileName.endsWith(".html")))
-            {
-
-                QString htmlContent = UBFileSystemUtils::readTextFile(etcPath + fileName);
-
-                if (htmlContent.length() > 0)
-                {
-                    QStringList tokens = fileName.split(".");
-
-                    if (tokens.length() >= 4)
-                    {
-                        QString mime = tokens.at(tokens.length() - 4 );
-                        mime += "/" + tokens.at(tokens.length() - 3);
-
-                        QString fileExtension = tokens.at(tokens.length() - 2);
-
-                        sNPAPIWrapperTemplates.insert(mime, htmlContent);
-                        sNPAPIWrapperTemplates.insert(fileExtension, htmlContent);
-                    }
-                }
-            }
-        }
-
-        sNPAPIWrappperConfigTemplate = UBFileSystemUtils::readTextFile(etcPath + "npapi-wrapper.config.xml");
-
-        sTemplateLoaded = true;
-    }
-}
-
-
-QString UBW3CWidget::textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale)
-{
-    QDomNodeList subList = rootElement.elementsByTagName(subTagName);
-
-    QString lang = locale.name();
-
-    if (lang.length() > 2)
-        lang[2] = QLatin1Char('-');
-
-    if (subList.count() > 1)
-    {
-        for(int i = 0; i < subList.count(); i++)
-        {
-            QDomNode node = subList.at(i);
-            QDomElement element = node.toElement();
-
-            QString configLang = element.attribute("xml:lang", "");
-
-            if(lang == configLang || (configLang.length() == 2 && configLang == lang.left(2)))
-                 return element.text();
-        }
-    }
-
-    if (subList.count() >= 1)
-    {
-        QDomElement element = subList.item(0).toElement();
-        return element.text();
-    }
-
-    return "";
-}
-
diff --git a/Sankore-3.1/src/domain/UBW3CWidget.h b/Sankore-3.1/src/domain/UBW3CWidget.h
deleted file mode 100644
index d568e9d..0000000
--- a/Sankore-3.1/src/domain/UBW3CWidget.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * 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/>.
- */
-
-#ifndef UBW3CWIDGET_H_
-#define UBW3CWIDGET_H_
-
-#include <QtGui>
-#include <QtWebKit>
-#include <QtXml>
-
-/*
- * wrapper for w3c widget 1.0 as define in http://www.w3.org/TR/widgets/
- */
-
-#include "UBAbstractWidget.h"
-
-class UBItem;
-
-class UBW3CWidget : public UBAbstractWidget
-{
-        Q_OBJECT;
-
-    public:
-        UBW3CWidget(const QUrl& pWidgetUrl, QWidget *parent = 0);
-
-        virtual ~UBW3CWidget();
-
-        static QString createNPAPIWrapper(const QString& url,
-            const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150),
-            const QString& pName = QString());
-
-        static QString createNPAPIWrapperInDir(const QString& url, const QDir& pDir,
-            const QString& pMimeType = QString(), const QSize& sizeHint = QSize(300, 150),
-            const QString& pName = QString());
-
-        static QString createHtmlWrapperInDir(const QString& html, const QDir& pDir,
-            const QSize& sizeHint,  const QString& pName);
-
-        static QString freezedWidgetPage();
-
-        static bool hasNPAPIWrapper(const QString& pMimeType);
-
-        class PreferenceValue
-        {
-            public:
-
-                PreferenceValue()
-                {
-                    // NOOP
-                }
-                
-
-                PreferenceValue(const QString& pValue, bool pReadonly)
-                {
-                    value = pValue;
-                    readonly = pReadonly;
-                }
-
-                QString value;
-                bool readonly;
-         };
-
-        class Metadata
-        {
-            public:
-                QString id;
-                QString name;
-                QString description;
-                QString author;
-                QString authorEmail;
-                QString authorHref;
-                QString version;
-        };
-
-
-        QMap<QString, PreferenceValue> preferences()
-        {
-            return mPreferences;
-        }
-
-        Metadata metadatas() const
-        {
-            return mMetadatas;
-        }
-
-    private:
-
-        QMap<QString, PreferenceValue> mPreferences;
-
-        static bool sTemplateLoaded;
-
-        static QMap<QString, QString> sNPAPIWrapperTemplates;
-
-        static QString sNPAPIWrappperConfigTemplate;
-
-        static void loadNPAPIWrappersTemplates();
-
-        static QString textForSubElementByLocale(QDomElement rootElement, QString subTagName, QLocale locale);
-
-        // w3c metadata widget attributes
-        //
-        // http://www.w3.org/TR/widgets/#widget0
-
-        Metadata mMetadatas;
-
-    private slots:
-
-        void javaScriptWindowObjectCleared();
-
-};
-
-#endif /* UBW3CWIDGET_H_ */
diff --git a/Sankore-3.1/src/domain/domain.pri b/Sankore-3.1/src/domain/domain.pri
index c7ed446..bb3751e 100644
--- a/Sankore-3.1/src/domain/domain.pri
+++ b/Sankore-3.1/src/domain/domain.pri
@@ -1,72 +1,56 @@
-
-HEADERS      += src/domain/UBGraphicsScene.h \
-                src/domain/UBGraphicsItemUndoCommand.h \
-                src/domain/UBGraphicsTextItemUndoCommand.h \
-                src/domain/UBGraphicsItemTransformUndoCommand.h \
-                src/domain/UBGraphicsPixmapItem.h \
-                src/domain/UBDocumentUndoCommand.h \
-                src/domain/UBPageSizeUndoCommand.h \
-                src/domain/UBGraphicsProxyWidget.h \
-                src/domain/UBGraphicsSvgItem.h \
-                src/domain/UBGraphicsPolygonItem.h \
-                src/domain/UBItem.h \
-                src/domain/UBGraphicsVideoItem.h \
-                src/domain/UBGraphicsWidgetItem.h \
-                src/domain/UBAppleWidget.h \
-                src/domain/UBGraphicsPDFItem.h \
-                src/domain/UBGraphicsTextItem.h \
-                src/domain/UBAbstractWidget.h \
-                src/domain/UBW3CWidget.h \
-                src/domain/UBResizableGraphicsItem.h \
-                src/domain/UBGraphicsStroke.h \
+HEADERS += src/domain/UBGraphicsScene.h \
+    src/domain/UBGraphicsItemUndoCommand.h \
+    src/domain/UBGraphicsTextItemUndoCommand.h \
+    src/domain/UBGraphicsItemTransformUndoCommand.h \
+    src/domain/UBGraphicsPixmapItem.h \
+    src/domain/UBDocumentUndoCommand.h \
+    src/domain/UBPageSizeUndoCommand.h \
+    src/domain/UBGraphicsProxyWidget.h \
+    src/domain/UBGraphicsSvgItem.h \
+    src/domain/UBGraphicsPolygonItem.h \
+    src/domain/UBItem.h \
+    src/domain/UBGraphicsWidgetItem.h \
+    src/domain/UBGraphicsPDFItem.h \
+    src/domain/UBGraphicsTextItem.h \
+    src/domain/UBResizableGraphicsItem.h \
+    src/domain/UBGraphicsStroke.h \
     src/domain/UBGraphicsMediaItem.h \
-    src/domain/UBGraphicsAudioItem.h \
-    src/domain/UBGraphicsAudioItemDelegate.h \
-    src/domain/UBAbstractUndoCommand.h\
-    src/domain/UBAngleWidget.h \
-    src/domain/ubgraphicsgroupcontaineritem.h \
-    src/domain/ubgraphicsgroupcontaineritemdelegate.h \
-    src/domain/UBGraphicsStrokesGroup.h
-                
-HEADERS      += src/domain/UBGraphicsItemDelegate.h \
-				src/domain/UBGraphicsVideoItemDelegate.h \
-				src/domain/UBGraphicsTextItemDelegate.h \
-                src/domain/UBGraphicsDelegateFrame.h \
-                src/domain/UBGraphicsWidgetItemDelegate.h
-                
-                
-SOURCES      += src/domain/UBGraphicsScene.cpp \
-                src/domain/UBGraphicsItemUndoCommand.cpp \
-                src/domain/UBGraphicsTextItemUndoCommand.cpp \
-                src/domain/UBGraphicsItemTransformUndoCommand.cpp \
-                src/domain/UBGraphicsPixmapItem.cpp \
-                src/domain/UBDocumentUndoCommand.cpp \
-                src/domain/UBPageSizeUndoCommand.cpp \
-                src/domain/UBGraphicsProxyWidget.cpp \
-                src/domain/UBGraphicsSvgItem.cpp \
-                src/domain/UBGraphicsPolygonItem.cpp \
-                src/domain/UBItem.cpp \
-                src/domain/UBGraphicsVideoItem.cpp \
-                src/domain/UBGraphicsWidgetItem.cpp \
-                src/domain/UBAppleWidget.cpp \
-                src/domain/UBGraphicsPDFItem.cpp \
-                src/domain/UBGraphicsTextItem.cpp \
-                src/domain/UBAbstractWidget.cpp \
-                src/domain/UBW3CWidget.cpp \
-                src/domain/UBResizableGraphicsItem.cpp \
-                src/domain/UBGraphicsStroke.cpp \
+    src/domain/UBAbstractUndoCommand.h \
+    src/domain/UBGraphicsGroupContainerItem.h \
+    src/domain/UBGraphicsGroupContainerItemDelegate.h \
+    src/domain/UBGraphicsStrokesGroup.h \
+    src/domain/UBGraphicsItemGroupUndoCommand.h \
+    src/domain/UBGraphicsItemDelegate.h \
+    src/domain/UBGraphicsTextItemDelegate.h \
+    src/domain/UBGraphicsDelegateFrame.h \
+    src/domain/UBGraphicsWidgetItemDelegate.h \
+    src/domain/UBGraphicsMediaItemDelegate.h
+    
+SOURCES += src/domain/UBGraphicsScene.cpp \
+    src/domain/UBGraphicsItemUndoCommand.cpp \
+    src/domain/UBGraphicsTextItemUndoCommand.cpp \
+    src/domain/UBGraphicsItemTransformUndoCommand.cpp \
+    src/domain/UBGraphicsPixmapItem.cpp \
+    src/domain/UBDocumentUndoCommand.cpp \
+    src/domain/UBPageSizeUndoCommand.cpp \
+    src/domain/UBGraphicsProxyWidget.cpp \
+    src/domain/UBGraphicsSvgItem.cpp \
+    src/domain/UBGraphicsPolygonItem.cpp \
+    src/domain/UBItem.cpp \
+    src/domain/UBGraphicsVideoItem.cpp \
+    src/domain/UBGraphicsWidgetItem.cpp \
+    src/domain/UBGraphicsPDFItem.cpp \
+    src/domain/UBGraphicsTextItem.cpp \
+    src/domain/UBResizableGraphicsItem.cpp \
+    src/domain/UBGraphicsStroke.cpp \
     src/domain/UBGraphicsMediaItem.cpp \
-    src/domain/UBGraphicsAudioItem.cpp \
-    src/domain/UBGraphicsAudioItemDelegate.cpp \
     src/domain/UBAbstractUndoCommand.cpp \
-    src/domain/UBAngleWidget.cpp \
-    src/domain/ubgraphicsgroupcontaineritem.cpp \
-    src/domain/ubgraphicsgroupcontaineritemdelegate.cpp \
-    src/domain/UBGraphicsStrokesGroup.cpp
-                
-SOURCES      += src/domain/UBGraphicsItemDelegate.cpp \
-				src/domain/UBGraphicsVideoItemDelegate.cpp \
-				src/domain/UBGraphicsTextItemDelegate.cpp \
-                src/domain/UBGraphicsDelegateFrame.cpp \
-                src/domain/UBGraphicsWidgetItemDelegate.cpp
-                
+    src/domain/UBGraphicsGroupContainerItem.cpp \
+    src/domain/UBGraphicsGroupContainerItemDelegate.cpp \
+    src/domain/UBGraphicsStrokesGroup.cpp \
+    src/domain/UBGraphicsItemGroupUndoCommand.cpp \
+    src/domain/UBGraphicsItemDelegate.cpp \
+    src/domain/UBGraphicsTextItemDelegate.cpp \
+    src/domain/UBGraphicsMediaItemDelegate.cpp \
+    src/domain/UBGraphicsDelegateFrame.cpp \
+    src/domain/UBGraphicsWidgetItemDelegate.cpp
diff --git a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.cpp b/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.cpp
deleted file mode 100644
index 64f68ee..0000000
--- a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-#include "ubgraphicsgroupcontaineritem.h"
-
-#include <QtGui>
-
-#include "domain/UBGraphicsItemDelegate.h"
-#include "domain/ubgraphicsgroupcontaineritemdelegate.h"
-#include "domain/UBGraphicsScene.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent)
-    : QGraphicsItem(parent)
-{
-    setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
-
-    mDelegate = new UBGraphicsGroupContainerItemDelegate(this, 0);
-    mDelegate->init();
-
-    setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
-    setFlag(QGraphicsItem::ItemIsSelectable, true);
-    setFlag(QGraphicsItem::ItemIsMovable, true);
-
-    UBGraphicsGroupContainerItem::setAcceptHoverEvents(true);
-
-    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
-
-}
-
-void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
-{
-    if (!item) {
-        qWarning("UBGraphicsGroupContainerItem::addToGroup: cannot add null item");
-        return;
-    }
-    if (item == this) {
-        qWarning("UBGraphicsGroupContainerItem::addToGroup: cannot add a group to itself");
-        return;
-    }
-
-    // COMBINE
-    bool ok;
-    QTransform itemTransform = item->itemTransform(this, &ok);
-
-    if (!ok) {
-        qWarning("UBGraphicsGroupContainerItem::addToGroup: could not find a valid transformation from item to group coordinates");
-        return;
-    }
-
-    //setting item flags to given item
-    item->setSelected(false);
-    item->setFlag(QGraphicsItem::ItemIsSelectable, false);
-    item->setFlag( QGraphicsItem::ItemIsMovable, false);
-    item->setFlag(QGraphicsItem::ItemIsFocusable, true);
-
-    QTransform newItemTransform(itemTransform);
-    item->setPos(mapFromItem(item, 0, 0));
-    item->setParentItem(this);
-
-    // removing position from translation component of the new transform
-    if (!item->pos().isNull())
-        newItemTransform *= QTransform::fromTranslate(-item->x(), -item->y());
-
-    // removing additional transformations properties applied with itemTransform()
-    QPointF origin = item->transformOriginPoint();
-    QMatrix4x4 m;
-    QList<QGraphicsTransform*> transformList = item->transformations();
-    for (int i = 0; i < transformList.size(); ++i)
-        transformList.at(i)->applyTo(&m);
-    newItemTransform *= m.toTransform().inverted();
-    newItemTransform.translate(origin.x(), origin.y());
-    newItemTransform.rotate(-item->rotation());
-    newItemTransform.scale(1/item->scale(), 1/item->scale());
-    newItemTransform.translate(-origin.x(), -origin.y());
-
-    // ### Expensive, we could maybe use dirtySceneTransform bit for optimization
-
-    item->setTransform(newItemTransform);
-//    item->d_func()->setIsMemberOfGroup(true);
-    prepareGeometryChange();
-    itemsBoundingRect |= itemTransform.mapRect(item->boundingRect() | item->childrenBoundingRect());
-    update();
-}
-void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item)
-{
-    if (!item) {
-        qWarning("QGraphicsItemGroup::removeFromGroup: cannot remove null item");
-        return;
-    }
-
-    QGraphicsItem *newParent = parentItem();
-
-    // COMBINE
-    bool ok;
-    QTransform itemTransform;
-    if (newParent)
-        itemTransform = item->itemTransform(newParent, &ok);
-    else
-        itemTransform = item->sceneTransform();
-
-    QPointF oldPos = item->mapToItem(newParent, 0, 0);
-    item->setParentItem(newParent);
-    item->setPos(oldPos);
-
-    // removing position from translation component of the new transform
-    if (!item->pos().isNull())
-        itemTransform *= QTransform::fromTranslate(-item->x(), -item->y());
-
-    // removing additional transformations properties applied
-    // with itemTransform() or sceneTransform()
-    QPointF origin = item->transformOriginPoint();
-    QMatrix4x4 m;
-    QList<QGraphicsTransform*> transformList = item->transformations();
-    for (int i = 0; i < transformList.size(); ++i)
-        transformList.at(i)->applyTo(&m);
-    itemTransform *= m.toTransform().inverted();
-    itemTransform.translate(origin.x(), origin.y());
-    itemTransform.rotate(-item->rotation());
-    itemTransform.scale(1 / item->scale(), 1 / item->scale());
-    itemTransform.translate(-origin.x(), -origin.y());
-
-    // ### Expensive, we could maybe use dirtySceneTransform bit for optimization
-
-    item->setTransform(itemTransform);
-//    item->d_func()->setIsMemberOfGroup(item->group() != 0);
-
-    // ### Quite expensive. But removeFromGroup() isn't called very often.
-    prepareGeometryChange();
-    itemsBoundingRect = childrenBoundingRect();
-}
-
-QRectF UBGraphicsGroupContainerItem::boundingRect() const
-{
-    return itemsBoundingRect;
-}
-void UBGraphicsGroupContainerItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
-                               QWidget *widget)
-{
-    Q_UNUSED(widget);
-    Q_UNUSED(painter);
-    Q_UNUSED(option);
-
-//    we would not use paint smth for the moment
-//    if (option->state & QStyle::State_Selected) {
-//        painter->setBrush(Qt::NoBrush);
-//        QPen tmpPen;
-//        qreal tmpPenWidth = 1.0;
-//        tmpPen.setWidth(tmpPenWidth);
-//        tmpPen.setColor(Qt::lightGray);
-//        painter->setPen(tmpPen);
-//        painter->drawRect(itemsBoundingRect.adjusted(tmpPenWidth / 2, tmpPenWidth / 2, -tmpPenWidth / 2, -tmpPenWidth / 2));
-//    }
-}
-
-UBGraphicsScene *UBGraphicsGroupContainerItem::scene()
-{
-    UBGraphicsScene *castScene = dynamic_cast<UBGraphicsScene*>(QGraphicsItem::scene());
-
-    return castScene;
-}
-UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItem::deepCopy() const
-{
-
-    UBGraphicsGroupContainerItem *copy = new UBGraphicsGroupContainerItem(parentItem());
-
-    copy->setPos(this->pos());
-    copy->setTransform(this->transform());
-    copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-    copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-    copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
-    copy->setData(UBGraphicsItemData::ItemLocked, this->data(UBGraphicsItemData::ItemLocked));
-    copy->setUuid(this->uuid()); // this is OK for now as long as Widgets are imutable
-
-//    copy->resize(this->size());
-
-    return copy;
-}
-void UBGraphicsGroupContainerItem::remove()
-{
-    if (mDelegate)
-        mDelegate->remove();
-}
-
-void UBGraphicsGroupContainerItem::destroy() {
-
-    foreach (QGraphicsItem *item, childItems()) {
-        removeFromGroup(item);
-        item->setFlag(QGraphicsItem::ItemIsSelectable, true);
-        item->setFlag(QGraphicsItem::ItemIsFocusable, true);
-    }
-
-    remove();
-
-    if (scene()) {
-        qDebug() << "scene is well casted";
-        scene()->removeItem(this);
-    }
-}
-
-void UBGraphicsGroupContainerItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (mDelegate->mousePressEvent(event)) {
-        //NOOP
-    } else {
-
-    QGraphicsItem::mousePressEvent(event);
-        setSelected(true);
-    }
-
-
-}
-
-void UBGraphicsGroupContainerItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (mDelegate->mouseMoveEvent(event)) {
-        // NOOP;
-    } else {
-        QGraphicsItem::mouseMoveEvent(event);
-    }
-
-}
-
-void UBGraphicsGroupContainerItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-//    mDelegate->mouseReleaseEvent(event);
-    QGraphicsItem::mouseReleaseEvent(event);
-}
-
-QVariant UBGraphicsGroupContainerItem::itemChange(GraphicsItemChange change, const QVariant &value)
-{
-    QVariant newValue = mDelegate->itemChange(change, value);
-    return QGraphicsItem::itemChange(change, newValue);
-}
diff --git a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.h b/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.h
deleted file mode 100644
index 250ef96..0000000
--- a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritem.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef UBGRAPHICSGROUPCONTAINERITEM_H
-#define UBGRAPHICSGROUPCONTAINERITEM_H
-
-#include <QGraphicsItem>
-
-#include "domain/UBItem.h"
-
-class UBGraphicsGroupContainerItem : public QGraphicsItem, public UBItem, public UBGraphicsItem
-{
-
-public:
-    UBGraphicsGroupContainerItem (QGraphicsItem *parent = 0);
-
-    void addToGroup(QGraphicsItem *item);
-    void removeFromGroup(QGraphicsItem *item);
-    QRectF boundingRect() const;
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
-
-    virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;}
-
-    virtual UBGraphicsScene* scene();
-    virtual UBGraphicsGroupContainerItem *deepCopy() const;
-    virtual void remove();
-    enum { Type = UBGraphicsItemType::groupContainerType };
-
-    virtual int type() const
-    {
-        return Type;
-    }
-
-    void destroy();
-
-
-protected:
-    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-
-    virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
-
-private:
-    QRectF itemsBoundingRect;
-
-};
-
-#endif // UBGRAPHICSGROUPCONTAINERITEM_H
diff --git a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.cpp b/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.cpp
deleted file mode 100644
index db50b09..0000000
--- a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-#include "ubgraphicsgroupcontaineritemdelegate.h"
-
-#include <QtGui>
-
-#include "UBGraphicsScene.h"
-#include "gui/UBResources.h"
-
-#include "domain/UBGraphicsDelegateFrame.h"
-#include "domain/ubgraphicsgroupcontaineritem.h"
-
-#include "board/UBBoardController.h"
-
-#include "core/memcheck.h"
-
-UBGraphicsGroupContainerItemDelegate::UBGraphicsGroupContainerItemDelegate(QGraphicsItem *pDelegated, QObject *parent) :
-    UBGraphicsItemDelegate(pDelegated, parent), mDestroyGroupButton(0)
-
-{
-
-}
-
-UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated()
-{
-    return dynamic_cast<UBGraphicsGroupContainerItem*>(mDelegated);
-}
-
-void UBGraphicsGroupContainerItemDelegate::decorateMenu(QMenu *menu)
-{
-    mLockAction = menu->addAction(tr("Locked"), this, SLOT(lock(bool)));
-    QIcon lockIcon;
-    lockIcon.addPixmap(QPixmap(":/images/locked.svg"), QIcon::Normal, QIcon::On);
-    lockIcon.addPixmap(QPixmap(":/images/unlocked.svg"), QIcon::Normal, QIcon::Off);
-    mLockAction->setIcon(lockIcon);
-    mLockAction->setCheckable(true);
-
-    mShowOnDisplayAction = mMenu->addAction(tr("Visible on Extended Screen"), this, SLOT(showHide(bool)));
-    mShowOnDisplayAction->setCheckable(true);
-
-    QIcon showIcon;
-    showIcon.addPixmap(QPixmap(":/images/eyeOpened.svg"), QIcon::Normal, QIcon::On);
-    showIcon.addPixmap(QPixmap(":/images/eyeClosed.svg"), QIcon::Normal, QIcon::Off);
-    mShowOnDisplayAction->setIcon(showIcon);
-}
-
-void UBGraphicsGroupContainerItemDelegate::buildButtons()
-{
-    UBGraphicsItemDelegate::buildButtons();
-}
-
-bool UBGraphicsGroupContainerItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event)
-
-    return false;
-}
-
-bool UBGraphicsGroupContainerItemDelegate::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event)
-
-    return false;
-}
-
-bool UBGraphicsGroupContainerItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event)
-
-    return false;
-}
diff --git a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.h b/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.h
deleted file mode 100644
index 2396b10..0000000
--- a/Sankore-3.1/src/domain/ubgraphicsgroupcontaineritemdelegate.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
-#define UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
-
-#include "domain/UBGraphicsItemDelegate.h"
-
-class UBGraphicsGroupContainerItem;
-
-class UBGraphicsGroupContainerItemDelegate : public UBGraphicsItemDelegate
-{
-Q_OBJECT
-
-public:
-    UBGraphicsGroupContainerItemDelegate(QGraphicsItem* pDelegated, QObject * parent = 0);
-    UBGraphicsGroupContainerItem *delegated();
-
-protected:
-    virtual void decorateMenu(QMenu *menu);
-    virtual void buildButtons();
-
-    virtual bool mousePressEvent(QGraphicsSceneMouseEvent *event);
-    virtual bool mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    virtual bool mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-
-private:
-    DelegateButton *mDestroyGroupButton;
-};
-
-#endif // UBGRAPHICSGROUPCONTAINERITEMDELEGATE_H
diff --git a/Sankore-3.1/src/frameworks/MacUtils.h b/Sankore-3.1/src/frameworks/MacUtils.h
index e42a418..5d7ea4f 100644
--- a/Sankore-3.1/src/frameworks/MacUtils.h
+++ b/Sankore-3.1/src/frameworks/MacUtils.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #import <Carbon/Carbon.h>
 #import <dlfcn.h>
 
diff --git a/Sankore-3.1/src/frameworks/UBBase32.cpp b/Sankore-3.1/src/frameworks/UBBase32.cpp
index 29fcb75..1b63f3f 100644
--- a/Sankore-3.1/src/frameworks/UBBase32.cpp
+++ b/Sankore-3.1/src/frameworks/UBBase32.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBBase32.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/frameworks/UBBase32.h b/Sankore-3.1/src/frameworks/UBBase32.h
index c1fd655..fa28a0d 100644
--- a/Sankore-3.1/src/frameworks/UBBase32.h
+++ b/Sankore-3.1/src/frameworks/UBBase32.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBBASE32_H_
 #define UBBASE32_H_
 
diff --git a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp
index 9eb68db..100b136 100644
--- a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp
+++ b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.cpp
@@ -1,29 +1,36 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBCoreGraphicsScene.h"
 
-#include "domain/UBGraphicsAudioItem.h"
-#include "domain/UBGraphicsVideoItem.h"
 #include "domain/UBGraphicsMediaItem.h"
 #include "domain/UBGraphicsWidgetItem.h"
+#include "domain/UBGraphicsGroupContainerItem.h"
 
 #include "core/memcheck.h"
 
 UBCoreGraphicsScene::UBCoreGraphicsScene(QObject * parent)
     : QGraphicsScene ( parent  )
+    , mIsModified(true)
 {
     //NOOP
 }
@@ -31,21 +38,34 @@ UBCoreGraphicsScene::UBCoreGraphicsScene(QObject * parent)
 UBCoreGraphicsScene::~UBCoreGraphicsScene()
 {
     //we must delete removed items that are no more in any scene
-    foreach (const QGraphicsItem* item, mItemsToDelete)
+    //at groups deleting some items can be added to mItemsToDelete, so we need to use iterators.
+    foreach(QGraphicsItem* item, mItemsToDelete)
     {
-        if (item->scene()==NULL || item->scene() == this)
+        if (item)
         {
-            delete item;
+            if (item->scene() == NULL || item->scene() == this)
+            {
+                delete item;
+            }
         }
     }
+    mItemsToDelete.clear();
 }
 
 void UBCoreGraphicsScene::addItem(QGraphicsItem* item)
 {
-    mItemsToDelete << item;
+    addItemToDeletion(item);
 
+    if (item->type() == UBGraphicsGroupContainerItem::Type && item->childItems().count()) {
+        foreach (QGraphicsItem *curItem, item->childItems()) {
+            removeItemFromDeletion(curItem);
+        }
+    }
+ 
     if (item->scene() != this)
         QGraphicsScene::addItem(item);
+
+    setModified(true);
 }
 
 
@@ -54,34 +74,23 @@ void UBCoreGraphicsScene::removeItem(QGraphicsItem* item, bool forceDelete)
     QGraphicsScene::removeItem(item);
     if (forceDelete)
     {
-        mItemsToDelete.remove(item);
-        delete item;
+        qDebug() << "force delete is " << forceDelete;
+        deleteItem(item);
     }
+    setModified(true);
 }
 
 bool UBCoreGraphicsScene::deleteItem(QGraphicsItem* item)
 {
     if(mItemsToDelete.contains(item))
     {
-        UBGraphicsItem* item_casted = 0;
-        switch (item->type())
-        {
-        case UBGraphicsAudioItem::Type:
-                item_casted = dynamic_cast<UBGraphicsAudioItem*>(item);
-                break;
-        case UBGraphicsVideoItem::Type:
-                item_casted = dynamic_cast<UBGraphicsVideoItem*>(item);
-                break;
-        case UBGraphicsW3CWidgetItem::Type:
-                item_casted = dynamic_cast<UBGraphicsWidgetItem*>(item);
-                break;
-        }
-
-        if (0 != item_casted)
+        UBGraphicsItem *item_casted = dynamic_cast<UBGraphicsItem *>(item);
+        if (item_casted != NULL)
             item_casted->clearSource();
 
         mItemsToDelete.remove(item);
         delete item;
+        item = NULL;
         return true;
     }
     else
@@ -94,3 +103,10 @@ void UBCoreGraphicsScene::removeItemFromDeletion(QGraphicsItem *item)
         mItemsToDelete.remove(item);
     }
 }
+
+void UBCoreGraphicsScene::addItemToDeletion(QGraphicsItem *item)
+{
+    if (item) {
+        mItemsToDelete.insert(item);
+    }
+}
diff --git a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h
index ee51694..87f52df 100644
--- a/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h
+++ b/Sankore-3.1/src/frameworks/UBCoreGraphicsScene.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBCOREGRAPHICSSCENE_H_
 #define UBCOREGRAPHICSSCENE_H_
 
@@ -31,9 +38,23 @@ class UBCoreGraphicsScene : public QGraphicsScene
         virtual bool deleteItem(QGraphicsItem* item);
 
         void removeItemFromDeletion(QGraphicsItem* item);
+        void addItemToDeletion(QGraphicsItem *item);
+
+        bool isModified() const
+        {
+            return mIsModified;
+        }
+
+        void setModified(bool pModified)
+        {
+            mIsModified = pModified;
+        }
+
 
     private:
         QSet<QGraphicsItem*> mItemsToDelete;
+
+        bool mIsModified;
 };
 
 #endif /* UBCOREGRAPHICSSCENE_H_ */
diff --git a/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp b/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp
index d327510..46e130f 100644
--- a/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBCryptoUtils.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBCryptoUtils.h"
 
 #include <openssl/aes.h>
diff --git a/Sankore-3.1/src/frameworks/UBCryptoUtils.h b/Sankore-3.1/src/frameworks/UBCryptoUtils.h
index b5b1141..48951c7 100644
--- a/Sankore-3.1/src/frameworks/UBCryptoUtils.h
+++ b/Sankore-3.1/src/frameworks/UBCryptoUtils.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBCRYPTOUTILS_H_
 #define UBCRYPTOUTILS_H_
 
diff --git a/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp b/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp
index 5d9e018..06633e9 100644
--- a/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBFileSystemUtils.cpp
@@ -1,25 +1,32 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBFileSystemUtils.h"
 
 #include <QtGui>
 
 #include "core/UBApplication.h"
 
-#include "board/UBBoardController.h"
+#include "document/UBDocumentContainer.h"
 
 #include "globals/UBGlobals.h"
 
@@ -44,6 +51,22 @@ UBFileSystemUtils::~UBFileSystemUtils()
     // NOOP
 }
 
+
+QString UBFileSystemUtils::removeLocalFilePrefix(QString input)
+{
+#ifdef Q_WS_WIN
+    if(input.startsWith("file:///"))
+        return input.mid(8);
+    else
+        return input;
+#else
+    if(input.startsWith("file://"))
+        return input.mid(7);
+    else
+        return input;
+#endif
+}
+
 bool UBFileSystemUtils::isAZipFile(QString &filePath)
 {
    if(QFileInfo(filePath).isDir()) return false;
@@ -61,14 +84,14 @@ bool UBFileSystemUtils::isAZipFile(QString &filePath)
    return result;
 }
 
-bool UBFileSystemUtils::copyFile(const QString &source, const QString &Destination, bool overwrite)
+bool UBFileSystemUtils::copyFile(const QString &source, const QString &destination, bool overwrite)
 {
     if (!QFile::exists(source)) {
         qDebug() << "file" << source << "does not present in fs";
         return false;
     }
 
-    QString normalizedDestination = Destination;
+    QString normalizedDestination = destination;
     if (QFile::exists(normalizedDestination)) {
         if  (QFileInfo(normalizedDestination).isFile() && overwrite) {
             QFile::remove(normalizedDestination);
@@ -86,6 +109,15 @@ bool UBFileSystemUtils::copyFile(const QString &source, const QString &Destinati
     return QFile::copy(source, normalizedDestination);
 }
 
+bool UBFileSystemUtils::copy(const QString &source, const QString &destination, bool overwrite)
+{
+    if (QFileInfo(source).isDir()) {
+        return copyDir(source, destination);
+    } else {
+        return copyFile(source, destination, overwrite);
+    }
+}
+
 bool UBFileSystemUtils::deleteFile(const QString &path)
 {
     QFile f(path);
@@ -177,7 +209,7 @@ void UBFileSystemUtils::cleanupGhostTempFolders(const QString& templateString)
 }
 
 
-QStringList UBFileSystemUtils::allFiles(const QString& pDirPath)
+QStringList UBFileSystemUtils::allFiles(const QString& pDirPath, bool isRecursive)
 {
     QStringList result;
     if (pDirPath == "" || pDirPath == "." || pDirPath == "..")
@@ -187,7 +219,7 @@ QStringList UBFileSystemUtils::allFiles(const QString& pDirPath)
 
     foreach(QFileInfo dirContent, dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot , QDir::Name))
     {
-        if (dirContent.isDir())
+        if (isRecursive && dirContent.isDir())
         {
             result << allFiles(dirContent.absoluteFilePath());
         }
@@ -247,7 +279,8 @@ bool UBFileSystemUtils::copyDir(const QString& pSourceDirPath, const QString& pT
     QDir dirSource(pSourceDirPath);
     QDir dirTarget(pTargetDirPath);
 
-    dirTarget.mkpath(pTargetDirPath);
+    if (!dirTarget.mkpath(pTargetDirPath))
+        return false;
 
     bool successSoFar = true;
 
@@ -318,7 +351,7 @@ QString UBFileSystemUtils::normalizeFilePath(const QString& pFilePath)
 
 QString UBFileSystemUtils::digitFileFormat(const QString& s, int digit)
 {
-    int pageDigit = UBApplication::boardController->pageFromSceneIndex(digit);
+    int pageDigit = UBDocumentContainer::pageFromSceneIndex(digit);
     return s.arg(pageDigit, 3, 10, QLatin1Char('0'));
 }
 
@@ -333,7 +366,7 @@ QString UBFileSystemUtils::thumbnailPath(const QString& path)
 
 QString UBFileSystemUtils::extension(const QString& fileName)
 {
-    QString extension;
+    QString extension("");
 
     int lastDotIndex = fileName.lastIndexOf(".");
 
@@ -518,6 +551,59 @@ QString UBFileSystemUtils::fileExtensionFromMimeType(const QString& pMimeType)
 }
 
 
+UBMimeType::Enum UBFileSystemUtils::mimeTypeFromString(const QString& typeString)
+{
+    UBMimeType::Enum type = UBMimeType::UNKNOWN;
+
+    if (typeString == "image/jpeg"
+        || typeString == "image/png"
+        || typeString == "image/gif"
+        || typeString == "image/tiff"
+        || typeString == "image/bmp")
+    {
+        type = UBMimeType::RasterImage;
+    }
+    else if (typeString == "image/svg+xml")
+    {
+        type = UBMimeType::VectorImage;
+    }
+    else if (typeString == "application/vnd.apple-widget")
+    {
+        type = UBMimeType::AppleWidget;
+    }
+    else if (typeString == "application/widget")
+    {
+        type = UBMimeType::W3CWidget;
+    }
+    else if (typeString.startsWith("video/"))
+    {
+        type = UBMimeType::Video;
+    }
+    else if (typeString.startsWith("audio/"))
+    {
+        type = UBMimeType::Audio;
+    }
+    else if (typeString.startsWith("application/x-shockwave-flash"))
+    {
+        type = UBMimeType::Flash;
+    }
+    else if (typeString.startsWith("application/pdf"))
+    {
+        type = UBMimeType::PDF;
+    }
+    else if (typeString.startsWith("application/vnd.mnemis-uniboard-tool"))
+    {
+        type = UBMimeType::UniboardTool;
+    }
+
+    return type;
+}
+
+UBMimeType::Enum UBFileSystemUtils::mimeTypeFromUrl(const QUrl& url)
+{
+    return mimeTypeFromString(mimeTypeFromFileName(url.toString()));
+}
+
 QString UBFileSystemUtils::getFirstExistingFileFromList(const QString& path, const QStringList& files)
 {
 
@@ -775,4 +861,3 @@ QString UBFileSystemUtils::readTextFile(QString path)
 
     return "";
 }
-
diff --git a/Sankore-3.1/src/frameworks/UBFileSystemUtils.h b/Sankore-3.1/src/frameworks/UBFileSystemUtils.h
index bd20755..dea35b5 100644
--- a/Sankore-3.1/src/frameworks/UBFileSystemUtils.h
+++ b/Sankore-3.1/src/frameworks/UBFileSystemUtils.h
@@ -1,33 +1,47 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBFILESYSTEMUTILS_H_
 #define UBFILESYSTEMUTILS_H_
 
 #include <QtCore>
+#include <QThread>
+
+#include "core/UB.h"
 
 class QuaZipFile;
 class UBProcessingProgressListener;
 
-class UBFileSystemUtils
+class UBFileSystemUtils : public QObject
 {
+    Q_OBJECT
+
     public:
 
         UBFileSystemUtils();
         virtual ~UBFileSystemUtils();
 
+        static QString removeLocalFilePrefix(QString input);
+
         static QString defaultTempDirName() { return QCoreApplication::applicationName(); }
         static QString defaultTempDirPath();
         static QString createTempDir(const QString& templateString = defaultTempDirName(), bool autoDeleteOnExit = true);
@@ -37,7 +51,7 @@ class UBFileSystemUtils
 
         static QFileInfoList allElementsInDirectory(const QString& pDirPath);
 
-        static QStringList allFiles(const QString& pDirPath);
+        static QStringList allFiles(const QString& pDirPath, const bool isRecurive=true);
 
         static bool deleteDir(const QString& pDirPath);
 
@@ -45,6 +59,10 @@ class UBFileSystemUtils
 
         static bool moveDir(const QString& pSourceDirPath, const QString& pTargetDirPath);
 
+        static bool copyFile(const QString &source, const QString &destination, bool overwrite = false);
+
+        static bool copy(const QString &source, const QString &Destination, bool overwrite = false);
+
         static QString cleanName(const QString& name);
 
         static QString digitFileFormat(const QString& s, int digit);
@@ -55,6 +73,10 @@ class UBFileSystemUtils
 
         static QString fileExtensionFromMimeType(const QString& pMimeType);
 
+        static UBMimeType::Enum mimeTypeFromString(const QString& typeString);
+
+        static UBMimeType::Enum mimeTypeFromUrl(const QUrl& url);
+
         static QString normalizeFilePath(const QString& pFilePath);
 
         static QString extension(const QString& filaname);
@@ -65,8 +87,6 @@ class UBFileSystemUtils
 
         static bool isAZipFile(QString &filePath);
 
-        static bool copyFile(const QString &source, const QString &Destination, bool overwrite = false);
-        
         static bool deleteFile(const QString &path);
         /**
          * Compress a source directory in a zip file.
diff --git a/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp b/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp
index 22bfda5..577115c 100644
--- a/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBGeometryUtils.cpp
@@ -1,23 +1,36 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "UBGeometryUtils.h"
 
 #include "core/memcheck.h"
 
 const double PI = 4.0 * atan(1.0);
+const int UBGeometryUtils::centimeterGraduationHeight = 15;
+const int UBGeometryUtils::halfCentimeterGraduationHeight = 10;
+const int UBGeometryUtils::millimeterGraduationHeight = 5;
+const int UBGeometryUtils::millimetersPerCentimeter = 10;
+const int UBGeometryUtils::millimetersPerHalfCentimeter = 5;
+const float UBGeometryUtils::inchSize = 25.4f;
 
 UBGeometryUtils::UBGeometryUtils()
 {
diff --git a/Sankore-3.1/src/frameworks/UBGeometryUtils.h b/Sankore-3.1/src/frameworks/UBGeometryUtils.h
index b006478..72b35ec 100644
--- a/Sankore-3.1/src/frameworks/UBGeometryUtils.h
+++ b/Sankore-3.1/src/frameworks/UBGeometryUtils.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBGEOMETRYUTILS_H_
 #define UBGEOMETRYUTILS_H_
@@ -37,6 +44,13 @@ class UBGeometryUtils
         static QPoint pointConstrainedInRect(QPoint point, QRect rect);
 
         static void crashPointList(QVector<QPointF> &points);
+
+        const static int centimeterGraduationHeight;
+        const static int halfCentimeterGraduationHeight;
+        const static int millimeterGraduationHeight;
+        const static int millimetersPerCentimeter;
+        const static int millimetersPerHalfCentimeter;
+        const static float inchSize;
 };
 
 #endif /* UBGEOMETRYUTILS_H_ */
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp b/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp
index 1899489..7939e23 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils.cpp
@@ -1,60 +1,68 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#include "UBPlatformUtils.h"
-
-#include "core/memcheck.h"
-
-void UBPlatformUtils::destroy()
-{
-	destroyKeyboardLayouts();
-}
-
-UBPlatformUtils::UBPlatformUtils()
-{
-    // NOOP
-}
-
-UBPlatformUtils::~UBPlatformUtils()
-{
-    // NOOP
-}
-
-bool UBPlatformUtils::hasVirtualKeyboard()
-{
-	return keyboardLayouts!=NULL && nKeyboardLayouts!=0;
-}
-
-
-UBKeyboardLocale::~UBKeyboardLocale()
-{
-	if (varSymbols!=NULL)
-	{
-		for(int i=0; i<SYMBOL_KEYS_COUNT; i++)
-			delete varSymbols[i];
-		delete [] varSymbols;
-	}
-	delete icon;
-}
-
-
-int UBPlatformUtils::nKeyboardLayouts;
-UBKeyboardLocale** UBPlatformUtils::keyboardLayouts;
-
-UBKeyboardLocale** UBPlatformUtils::getKeyboardLayouts(int& nCount)
-{
-	nCount = nKeyboardLayouts;
-	return keyboardLayouts;
-}
\ No newline at end of file
+
+
+#include "UBPlatformUtils.h"
+
+#include "core/memcheck.h"
+
+void UBPlatformUtils::destroy()
+{
+	destroyKeyboardLayouts();
+}
+
+UBPlatformUtils::UBPlatformUtils()
+{
+    // NOOP
+}
+
+UBPlatformUtils::~UBPlatformUtils()
+{
+    // NOOP
+}
+
+bool UBPlatformUtils::hasVirtualKeyboard()
+{
+	return keyboardLayouts!=NULL && nKeyboardLayouts!=0;
+}
+
+
+UBKeyboardLocale::~UBKeyboardLocale()
+{
+	if (varSymbols!=NULL)
+	{
+		for(int i=0; i<SYMBOL_KEYS_COUNT; i++)
+			delete varSymbols[i];
+		delete [] varSymbols;
+	}
+	delete icon;
+}
+
+
+int UBPlatformUtils::nKeyboardLayouts;
+UBKeyboardLocale** UBPlatformUtils::keyboardLayouts;
+
+UBKeyboardLocale** UBPlatformUtils::getKeyboardLayouts(int& nCount)
+{
+	nCount = nKeyboardLayouts;
+	return keyboardLayouts;
+}
+
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils.h b/Sankore-3.1/src/frameworks/UBPlatformUtils.h
index a4d6d88..f957a98 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils.h
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBPLATFORMUTILS_H_
 #define UBPLATFORMUTILS_H_
 
@@ -23,30 +30,104 @@ class QMainWindow;
 
 #define SYMBOL_KEYS_COUNT 47
 
+
+/*
+    Declaration for single keycode (code, which will be sent to output after pressing of button)
+    Each button has several codes, associated with shift state and modifier
+
+    symbol - (Windows only) Unide symbol to send
+    code - (LINUX, MAC) - code of key to press. Phisical keycode on MAC, position in keys table on LINUX
+    modifier (LINUX) - offset in keys table
+*/
+
+struct KEYCODE{
+    KEYCODE()
+        :symbol(0)
+        ,code(0)
+        ,modifier(0)
+    {}
+
+    KEYCODE(int _symbol)
+        :symbol(_symbol)
+        ,code(0)
+        ,modifier(0)
+    {}
+
+    KEYCODE(int _symbol,
+            unsigned char _code,
+            int _modifier)
+        :symbol(_symbol)
+        ,code(_code)
+        ,modifier(_modifier)
+    {}
+
+
+    bool empty() const
+    {
+        return symbol == 0;
+    }
+
+    int symbol;
+    unsigned char code;
+    int modifier;
+};
+
+/*
+    Declaration of single button. Properties:
+    symbol1, symbol2 - symbols to display under obscreen keyboard on normal/shifted modes
+    capsLockSwitch - if true, CapsLock button switched keystate to "shifted"
+    modifier1/modifier2 - if >0 means modified symbol for next press (modifier * 2 + shiststate index in codes array)
+                        If this code dedined (not empty), this symbol will sent to output. For French keyboard layout
+    codes[i] - code for pressed symbol.
+        code[0] - normal symbol
+        code[1] - shifted symbol
+        code[2] - modifier = 1, normal symbol
+        code[3] - modifier = 1, shifted symbol
+        ...
+*/
 struct KEYBT
 {
-	const QChar symbol1;
-	const int code1;
-	const QChar symbol2;
-    const int code2;
-
-	KEYBT(unsigned int _symbol1,
-		unsigned int _symbol2):
-        symbol1(_symbol1),
-        code1(_symbol1),
-        symbol2(_symbol2),
-        code2(_symbol2){}
-
-
-    KEYBT(QChar _symbol1,
-		int _code1,
-		QChar _symbol2,
-		int _code2):
-			symbol1(_symbol1),
-            code1(_code1),
-            symbol2(_symbol2),
-            code2(_code2){}
-    };
+    QChar symbol1;
+	QChar symbol2;
+    bool capsLockSwitch;
+    int modifier1;
+    int modifier2;
+    KEYCODE codes[8];
+
+    KEYBT(  QChar _symbol1,
+		    QChar _symbol2,
+            bool _capsLockSwitch,
+            int _modifier1,
+            int _modifier2,
+            KEYCODE c1 = 0,
+            KEYCODE c2 = 0,
+            KEYCODE c3 = 0,
+            KEYCODE c4 = 0,
+            KEYCODE c5 = 0,
+            KEYCODE c6 = 0,
+            KEYCODE c7 = 0,
+            KEYCODE c8 = 0)
+                :symbol1(_symbol1)
+                ,symbol2(_symbol2)
+                ,capsLockSwitch(_capsLockSwitch)
+                ,modifier1(_modifier1)
+                ,modifier2(_modifier2)
+    {
+        codes[0] = c1;
+        codes[1] = c2;
+        codes[2] = c3;
+        codes[3] = c4;
+        codes[4] = c5;
+        codes[5] = c6;
+        codes[6] = c7;
+        codes[7] = c8;
+    }
+
+    ~KEYBT()
+    {}
+};
+    
+    
 
 	class UBKeyboardLocale
 	{
@@ -63,7 +144,7 @@ struct KEYBT
 			const QString& _name,
 			const QString& _id,
 			QIcon* _icon,
-			const KEYBT _symbols[])
+            KEYBT _symbols[])
 			:fullName(_fullName),name(_name),  id(_id), icon(_icon),
                         constSymbols(_symbols), varSymbols(NULL)
 		{}
@@ -74,18 +155,20 @@ struct KEYBT
 		const QString name;
 		const QString id;
 		QIcon* icon;
-		const KEYBT* operator[] (int index) const
+        KEYBT* operator[] (int index) const
 		{
 			return (varSymbols==NULL)? constSymbols + index : varSymbols[index];
 		}
 	private:
-		const KEYBT* constSymbols;
+        KEYBT* constSymbols;
 		KEYBT** varSymbols;
 	};
 
 
 class UBPlatformUtils
 {
+    Q_DECLARE_TR_FUNCTIONS(UBPlatformUtils)
+
     private:
         UBPlatformUtils();
         virtual ~UBPlatformUtils();
@@ -95,7 +178,8 @@ class UBPlatformUtils
         static int nKeyboardLayouts;
         static UBKeyboardLocale** keyboardLayouts;
 
-    public:
+
+public:
         static void init();
         static void destroy();
         static QString applicationResourcesDirectory();
@@ -103,8 +187,8 @@ class UBPlatformUtils
         static void setFileType(const QString &filePath, unsigned long fileType);
         static void fadeDisplayOut();
         static void fadeDisplayIn();
-        static QString preferredTranslation(QString pFilePrefix);
-        static QString preferredLanguage();
+        static QString translationPath(QString pFilePrefix, QString pLanguage);
+        static QString systemLanguage();
         static bool hasVirtualKeyboard();
         //static void showVirtualKeyboard();
         static void runInstaller(const QString &installerFilePath);
@@ -115,6 +199,11 @@ class UBPlatformUtils
         static QString computerName();
         static UBKeyboardLocale** getKeyboardLayouts(int& nCount);
         static QString urlFromClipboard();
+        static QStringList availableTranslations();
+
+#ifdef Q_WS_MAC
+        static void SetMacLocaleByIdentifier(const QString& id);
+#endif
 };
 
 
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp b/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp
index 174e369..159ce87 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils_linux.cpp
@@ -1,25 +1,35 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPlatformUtils.h"
 
 #include <QtGui>
 
+#include <unistd.h>
 #include <X11/Xlib.h>
 #include <X11/keysym.h>
 
+#include "frameworks/UBFileSystemUtils.h"
+
 
 void UBPlatformUtils::init()
 {
@@ -55,13 +65,22 @@ void UBPlatformUtils::fadeDisplayIn()
     // NOOP
 }
 
-QString UBPlatformUtils::preferredTranslation(QString pFilePrefix)
+QStringList UBPlatformUtils::availableTranslations()
+{
+	QString translationsPath = applicationResourcesDirectory() + "/" + "i18n" + "/";
+	QStringList translationsList = UBFileSystemUtils::allFiles(translationsPath);
+	QRegExp sankoreTranslationFiles(".*sankore_.*.qm");
+	translationsList=translationsList.filter(sankoreTranslationFiles);
+	return translationsList.replaceInStrings(QRegExp("(.*)sankore_(.*).qm"),"\\2");
+}
+
+QString UBPlatformUtils::translationPath(QString pFilePrefix,QString pLanguage)
 {
-    QString qmPath = applicationResourcesDirectory() + "/" + "i18n" + "/" + pFilePrefix + preferredLanguage() + ".qm";
+    QString qmPath = applicationResourcesDirectory() + "/" + "i18n" + "/" + pFilePrefix + pLanguage + ".qm";
     return qmPath;
 }
 
-QString UBPlatformUtils::preferredLanguage()
+QString UBPlatformUtils::systemLanguage()
 {
     return QLocale::system().name();
 }
@@ -86,8 +105,14 @@ QString UBPlatformUtils::osUserLoginName()
 
 QString UBPlatformUtils::computerName()
 {
-    // TODO Linux implement me
-    return "Not Implemented";
+    char hostname[256];
+    memset(hostname,0,256);
+    // if the name is longer than 255 the name is truncated but os doesn't ensure
+    // that the last character returned is a null character
+    if(!gethostname(hostname,255))
+        return QString::fromAscii(hostname);
+    else
+        return "NOT FOUND";
 }
 
 void UBPlatformUtils::setWindowNonActivableFlag(QWidget* widget, bool nonAcivable)
@@ -104,229 +129,294 @@ void UBPlatformUtils::setDesktopMode(bool desktop)
     Q_UNUSED(desktop);
 }
 
-const KEYBT ENGLISH_LOCALE[] = {
-        /* ` ~ */ KEYBT(0x60, 0x7e),
-        /* 1 ! */ KEYBT(0x31, 0x21),
-        /* 2 @ */ KEYBT(0x32, 0x40),
-        /* 3 # */ KEYBT(0x33, 0x23),
-        /* 4 $ */ KEYBT(0x34, 0x24),
-        /* 5 % */ KEYBT(0x35, 0x25),
-        /* 6 ^ */ KEYBT(0x36, 0x88),
-        /* 7 & */ KEYBT(0x37, 0x26),
-        /* 8 * */ KEYBT(0x38, 0x2a),
-        /* 9 ( */ KEYBT(0x39, 0x28),
-        /* 0 ) */ KEYBT(0x30, 0x29),
-        /* - _ */ KEYBT(0x2d, 0x5f),
-        /* = + */ KEYBT(0x3d, 0x2b),
-
-        /* q Q */ KEYBT(0x71, 0x51),
-        /* w W */ KEYBT(0x77, 0x57),
-        /* e E */ KEYBT(0x65, 0x45),
-        /* r R */ KEYBT(0x72, 0x52),
-        /* t T */ KEYBT(0x74, 0x54),
-        /* y Y */ KEYBT(0x79, 0x59),
-        /* u U */ KEYBT(0x75, 0x55),
-        /* i I */ KEYBT(0x69, 0x49),
-        /* o O */ KEYBT(0x6f, 0x4f),
-        /* p P */ KEYBT(0x70, 0x50),
-        /* [ { */ KEYBT(0x5b, 0x7b),
-        /* ] } */ KEYBT(0x5d, 0x7d),
-
-        /* a A */ KEYBT(0x61, 0x41),
-        /* s S */ KEYBT(0x73, 0x53),
-        /* d D */ KEYBT(0x64, 0x44),
-        /* f F */ KEYBT(0x66, 0x46),
-        /* g G */ KEYBT(0x67, 0x47),
-        /* h H */ KEYBT(0x68, 0x48),
-        /* j J */ KEYBT(0x6a, 0x4a),
-        /* k K */ KEYBT(0x6b, 0x4b),
-        /* l L */ KEYBT(0x6c, 0x4c),
-        /* ; : */ KEYBT(0x3b, 0x3a),
-        /* ' " */ KEYBT(0x27, 0x22),
-        /* \ | */ KEYBT(0x5c, 0x7c),
-
-        /* z Z */ KEYBT(0x7a, 0x5a),
-        /* x X */ KEYBT(0x78, 0x58),
-        /* c C */ KEYBT(0x63, 0x43),
-        /* v V */ KEYBT(0x76, 0x56),
-        /* b B */ KEYBT(0x62, 0x42),
-        /* n N */ KEYBT(0x6e, 0x4e),
-        /* m M */ KEYBT(0x6d, 0x4d),
-        /* , < */ KEYBT(0x2c, 0x3c),
-        /* . > */ KEYBT(0x2e, 0x3e),
-        /* / ? */ KEYBT(0x2f, 0x5f)};
-
-const KEYBT RUSSIAN_LOCALE [] =
+#define KEYBTDECL(s1, s2, clSwitch, code) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(s1, code, 0), KEYCODE(s2, code, 1))
+
+#define KEYBTDECLEX1(s1, s2, clSwitch, code, cs1, cs2) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 0), KEYCODE(cs2, code, 1))
+#define KEYBTDECLEX2(s1, s2, clSwitch, code, cs1, cs2) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 2), KEYCODE(cs2, code, 3))
+
+#define KEYBTDECLEX6(s1, s2, clSwitch, code, cs1, cs2, cs3, cs4, cs5, cs6) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 0), KEYCODE(cs2, code, 1), KEYCODE(cs3, code, 2), KEYCODE(cs4, code, 3), KEYCODE(cs5, code, 4), KEYCODE(cs6, code, 5))
+
+#define KEYBTDECLEX8(s1, s2, clSwitch, code, cs1, cs2, cs3, cs4, cs5, cs6, cs7, cs8) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(cs1, code, 0), KEYCODE(cs2, code, 1), KEYCODE(cs3, code, 2), KEYCODE(cs4, code, 3), KEYCODE(cs5, code, 4), KEYCODE(cs6, code, 5), KEYCODE(cs7, code, 6), KEYCODE(cs8, code, 7))
+
+
+KEYBT ENGLISH_LOCALE[] = {
+        /* ` ~ */ KEYBTDECL(0x60, 0x7e, false, 41),
+        /* 1 ! */ KEYBTDECL(0x31, 0x21, false, 2),
+        /* 2 @ */ KEYBTDECL(0x32, 0x40, false, 3),
+        /* 3 # */ KEYBTDECL(0x33, 0x23, false, 4),
+        /* 4 $ */ KEYBTDECL(0x34, 0x24, false, 5),
+        /* 5 % */ KEYBTDECL(0x35, 0x25, false, 6),
+        /* 6 ^ */ KEYBTDECL(0x36, 0x88, false, 7),
+        /* 7 & */ KEYBTDECL(0x37, 0x26, false, 8),
+        /* 8 * */ KEYBTDECL(0x38, 0x2a, false, 9),
+        /* 9 ( */ KEYBTDECL(0x39, 0x28, false, 10),
+        /* 0 ) */ KEYBTDECL(0x30, 0x29, false, 11),
+        /* - _ */ KEYBTDECL(0x2d, 0x5f, false, 12),
+        /* = + */ KEYBTDECL(0x3d, 0x2b, false, 13),
+
+        /* q Q */ KEYBTDECL(0x71, 0x51, true, 16),
+        /* w W */ KEYBTDECL(0x77, 0x57, true, 17),
+        /* e E */ KEYBTDECL(0x65, 0x45, true, 18),
+        /* r R */ KEYBTDECL(0x72, 0x52, true, 19),
+        /* t T */ KEYBTDECL(0x74, 0x54, true, 20),
+        /* y Y */ KEYBTDECL(0x79, 0x59, true, 21),
+        /* u U */ KEYBTDECL(0x75, 0x55, true, 22),
+        /* i I */ KEYBTDECL(0x69, 0x49, true, 23),
+        /* o O */ KEYBTDECL(0x6f, 0x4f, true, 24),
+        /* p P */ KEYBTDECL(0x70, 0x50, true, 25),
+        /* [ { */ KEYBTDECL(0x5b, 0x7b, false, 26),
+        /* ] } */ KEYBTDECL(0x5d, 0x7d, false, 27),
+
+        /* a A */ KEYBTDECL(0x61, 0x41, true, 30),
+        /* s S */ KEYBTDECL(0x73, 0x53, true, 31),
+        /* d D */ KEYBTDECL(0x64, 0x44, true, 32),
+        /* f F */ KEYBTDECL(0x66, 0x46, true, 33),
+        /* g G */ KEYBTDECL(0x67, 0x47, true, 34),
+        /* h H */ KEYBTDECL(0x68, 0x48, true, 35),
+        /* j J */ KEYBTDECL(0x6a, 0x4a, true, 36),
+        /* k K */ KEYBTDECL(0x6b, 0x4b, true, 37),
+        /* l L */ KEYBTDECL(0x6c, 0x4c, true, 38),
+        /* ; : */ KEYBTDECL(0x3b, 0x3a, false, 39),
+        /* ' " */ KEYBTDECL(0x27, 0x22, false, 40),
+        /* \ | */ KEYBTDECL(0x5c, 0x7c, false, 43),
+
+        /* z Z */ KEYBTDECL(0x7a, 0x5a, true, 44),
+        /* x X */ KEYBTDECL(0x78, 0x58, true, 45),
+        /* c C */ KEYBTDECL(0x63, 0x43, true, 46),
+        /* v V */ KEYBTDECL(0x76, 0x56, true, 47),
+        /* b B */ KEYBTDECL(0x62, 0x42, true, 48),
+        /* n N */ KEYBTDECL(0x6e, 0x4e, true, 49),
+        /* m M */ KEYBTDECL(0x6d, 0x4d, true, 50),
+        /* , < */ KEYBTDECL(0x2c, 0x3c, false, 51),
+        /* . > */ KEYBTDECL(0x2e, 0x3e, false, 52),
+        /* / ? */ KEYBTDECL(0x2f, 0x5f, false, 53)};
+
+KEYBT RUSSIAN_LOCALE [] =
 {
-        /* ё Ё */ KEYBT(0x451, XK_Cyrillic_io, 0x401, XK_Cyrillic_IO),
-        /* 1 ! */ KEYBT(0x31, 0x21),
-        /* 2 " */ KEYBT(0x32, 0x5c),
-        /* 3 â„– */ KEYBT(0x33, 0x33, 0x2116, XK_numerosign),
-        /* 4 ; */ KEYBT(0x34, 0x3b),
-        /* 5 % */ KEYBT(0x35, 0x25),
-        /* 6 : */ KEYBT(0x36, 0x3a),
-        /* 7 ? */ KEYBT(0x37, 0x3f),
-        /* 8 * */ KEYBT(0x38, 0x2a),
-        /* 9 ( */ KEYBT(0x39, 0x28),
-        /* 0 ) */ KEYBT(0x30, 0x29),
-        /* - _ */ KEYBT(0x2d, 0x4f),
-        /* = + */ KEYBT(0x3d, 0x2b),
-
-        /* й Й */ KEYBT(0x439, XK_Cyrillic_shorti, 0x419, XK_Cyrillic_SHORTI),
-        /* ц Ц */ KEYBT(0x446, XK_Cyrillic_tse, 0x426, XK_Cyrillic_TSE),
-        /* у У */ KEYBT(0x443, XK_Cyrillic_u, 0x423, XK_Cyrillic_U),
-        /* к К */ KEYBT(0x43a, XK_Cyrillic_ka, 0x41a, XK_Cyrillic_KA),
-        /* е Е */ KEYBT(0x435, XK_Cyrillic_ie, 0x415, XK_Cyrillic_IE),
-        /* н Н */ KEYBT(0x43d, XK_Cyrillic_en, 0x41d, XK_Cyrillic_EN),
-        /* г Г */ KEYBT(0x433, XK_Cyrillic_ghe, 0x413, XK_Cyrillic_GHE),
-        /* ш Ш */ KEYBT(0x448, XK_Cyrillic_sha, 0x428, XK_Cyrillic_SHA),
-        /* щ Щ */ KEYBT(0x449, XK_Cyrillic_shcha, 0x429, XK_Cyrillic_SHCHA),
-        /* з З */ KEYBT(0x437, XK_Cyrillic_ze, 0x417, XK_Cyrillic_ZE),
-        /* х Х */ KEYBT(0x445, XK_Cyrillic_ha, 0x425, XK_Cyrillic_HA),
-        /* ъ Ъ */ KEYBT(0x44a, XK_Cyrillic_hardsign, 0x42a, XK_Cyrillic_HARDSIGN),
-
-        /* ф Ф */ KEYBT(0x444, XK_Cyrillic_ef, 0x424, XK_Cyrillic_EF),
-        /* ы Ы */ KEYBT(0x44b, XK_Cyrillic_yeru, 0x42b, XK_Cyrillic_YERU),
-        /* в В */ KEYBT(0x432, XK_Cyrillic_ve, 0x412, XK_Cyrillic_VE),
-        /* а А */ KEYBT(0x430, XK_Cyrillic_a, 0x410, XK_Cyrillic_A),
-        /* п П */ KEYBT(0x43f, XK_Cyrillic_pe, 0x41f, XK_Cyrillic_PE),
-        /* р Р */ KEYBT(0x440, XK_Cyrillic_er, 0x420, XK_Cyrillic_ER),
-        /* о О */ KEYBT(0x43e, XK_Cyrillic_o, 0x41e, XK_Cyrillic_O),
-        /* л Л */ KEYBT(0x43b, XK_Cyrillic_el, 0x41b, XK_Cyrillic_EL),
-        /* д Д */ KEYBT(0x434, XK_Cyrillic_de, 0x414, XK_Cyrillic_DE),
-        /* ж Ж */ KEYBT(0x436, XK_Cyrillic_zhe, 0x416, XK_Cyrillic_ZHE),
-        /* э Э */ KEYBT(0x44d, XK_Cyrillic_e, 0x42d, XK_Cyrillic_E),
-        /* \ / */ KEYBT(0x5c, 0x2f),
-
-        /* я Я */ KEYBT(0x44f, XK_Cyrillic_ya, 0x42f, XK_Cyrillic_YA),
-        /* ч Ч */ KEYBT(0x447, XK_Cyrillic_che, 0x427, XK_Cyrillic_CHE),
-        /* с С */ KEYBT(0x441, XK_Cyrillic_es, 0x421, XK_Cyrillic_ES),
-        /* м М */ KEYBT(0x43c, XK_Cyrillic_em, 0x41c, XK_Cyrillic_EM),
-        /* и И */ KEYBT(0x438, XK_Cyrillic_i, 0x418, XK_Cyrillic_I),
-        /* т Т */ KEYBT(0x442, XK_Cyrillic_te, 0x422, XK_Cyrillic_TE),
-        /* ь Ь */ KEYBT(0x44c, XK_Cyrillic_softsign, 0x42c, XK_Cyrillic_SOFTSIGN),
-        /* б Б */ KEYBT(0x431, XK_Cyrillic_be, 0x411, XK_Cyrillic_BE),
-        /* ю Ю */ KEYBT(0x44e, XK_Cyrillic_yu, 0x42e, XK_Cyrillic_YU),
-        /* . , */ KEYBT(0x2e, 0x2c)};
-
-const KEYBT FRENCH_LOCALE[] = {
-        /* ? ? */ KEYBT(0xb2, XK_twosuperior, 0xb2, XK_twosuperior),
-        /* & 1 */ KEYBT(0x26, 0x31),
-        /* ? 2 */ KEYBT(0xe9, 0x32),
-        /* " 3 */ KEYBT(0x22, 0x33),
-        /* ' 4 */ KEYBT(0x27, 0x34),
-        /* ( 5 */ KEYBT(0x28, 0x35),
-        /* - 6 */ KEYBT(0x2d, 0x36),
-        /* ? 7 */ KEYBT(0xe8, XK_egrave, 0x37, 0x37),
-        /* _ 8 */ KEYBT(0x5f, 0x38),
-        /* ? 9 */ KEYBT(0xe7, XK_ccedilla, 0x39, 0x39),
-        /* ? 0 */ KEYBT(0xe0, 0x29),
-        /* ) ? */ KEYBT(0x29, 0xb0),
-        /* = + */ KEYBT(0x3d, 0x2b),
-
-        /* a A */ KEYBT(0x61, 0x41),
-        /* z Z */ KEYBT(0x7a, 0x5a),
-        /* e E */ KEYBT(0x65, 0x45),
-        /* r R */ KEYBT(0x72, 0x52),
-        /* t T */ KEYBT(0x74, 0x54),
-        /* y Y */ KEYBT(0x79, 0x59),
-        /* u U */ KEYBT(0x75, 0x55),
-        /* i I */ KEYBT(0x69, 0x49),
-        /* o O */ KEYBT(0x6f, 0x4f),
-        /* p P */ KEYBT(0x70, 0x50),
-        /* ^ ? */ KEYBT(0x5e, 0xa8),
-        /* $ ? } */ KEYBT(0x24, 0xa3),
-
-        /* q Q */ KEYBT(0x71, 0x51),
-        /* s S */ KEYBT(0x73, 0x53),
-        /* d D */ KEYBT(0x64, 0x44),
-        /* f F */ KEYBT(0x66, 0x46),
-        /* g G */ KEYBT(0x67, 0x47),
-        /* h H */ KEYBT(0x68, 0x48),
-        /* j J */ KEYBT(0x6a, 0x4a),
-        /* k K */ KEYBT(0x6b, 0x4b),
-        /* l L */ KEYBT(0x6c, 0x4c),
-        /* m M */ KEYBT(0x6d, 0x4d),
-        /* ? % */ KEYBT(0xf9, 0x25),
-        /* * ? */ KEYBT(0x2a, 0xb5),
-
-        /* w W */ KEYBT(0x77, 0x57),
-        /* x X */ KEYBT(0x78, 0x58),
-        /* c C */ KEYBT(0x63, 0x43),
-        /* v V */ KEYBT(0x76, 0x56),
-        /* b B */ KEYBT(0x62, 0x42),
-        /* n N */ KEYBT(0x6e, 0x4e),
-        /* , ? */ KEYBT(0x2c, 0x3f),
-        /* ; . */ KEYBT(0x3b, 0x2e),
-        /* : / */ KEYBT(0x3a, 0x2f),
-        /* ! ? */ KEYBT(0x21, 0xa7)};
-
-const KEYBT GERMAN_LOCALE[] = {
-        /* ^ ? */ KEYBT(0x5f, 0xb0),
-        /* 1 ! */ KEYBT(0x31, 0x21),
-        /* 2 " */ KEYBT(0x32, 0x22),
-        /* 3  */ KEYBT(0x33, 0xa7),
-        /* 4 $ */ KEYBT(0x34, 0x24),
-        /* 5 % */ KEYBT(0x35, 0x25),
-        /* 6 & */ KEYBT(0x36, 0x26),
-        /* 7 / */ KEYBT(0x37, 0x2f),
-        /* 8 ( */ KEYBT(0x38, 0x28),
-        /* 9 ) */ KEYBT(0x39, 0x29),
-        /* 0 = */ KEYBT(0x30, 0x3d),
-        /* ? ? */ KEYBT(0xdf, 0x3f),
-        /* ` ? */ KEYBT(0x60, 0xb4),
-
-        /* q Q */ KEYBT(0x71, 0x51),
-        /* w W */ KEYBT(0x77, 0x57),
-        /* e E */ KEYBT(0x65, 0x45),
-        /* r R */ KEYBT(0x72, 0x52),
-        /* t T */ KEYBT(0x74, 0x54),
-        /* z Z */ KEYBT(0x7a, 0x5a),
-        /* u U */ KEYBT(0x75, 0x55),
-        /* i I */ KEYBT(0x69, 0x49),
-        /* o O */ KEYBT(0x6f, 0x4f),
-        /* p P */ KEYBT(0x70, 0x50),
-        /* ? ? */ KEYBT(0xfc, 0xdc),
-        /* + * */ KEYBT(0x2b, 0x2a),
-
-        /* a A */ KEYBT(0x61, 0x41),
-        /* s S */ KEYBT(0x73, 0x53),
-        /* d D */ KEYBT(0x64, 0x44),
-        /* f F */ KEYBT(0x66, 0x46),
-        /* g G */ KEYBT(0x67, 0x47),
-        /* h H */ KEYBT(0x68, 0x48),
-        /* j J */ KEYBT(0x6a, 0x4a),
-        /* k K */ KEYBT(0x6b, 0x4b),
-        /* l L */ KEYBT(0x6c, 0x4c),
-        /* ? ? */ KEYBT(0xf6, 0xd6),
-        /* ? ? */ KEYBT(0xe4, 0xc4),
-        /* ' # */ KEYBT(0x27, 0x23),
-
-        /* y Y */ KEYBT(0x79, 0x59),
-        /* x X */ KEYBT(0x78, 0x58),
-        /* c C */ KEYBT(0x63, 0x43),
-        /* v V */ KEYBT(0x76, 0x56),
-        /* b B */ KEYBT(0x62, 0x42),
-        /* n N */ KEYBT(0x6e, 0x4e),
-        /* m M */ KEYBT(0x6d, 0x4d),
-        /* , ; */ KEYBT(0x2c, 0x3b),
-        /* . : */ KEYBT(0x2e, 0x3a),
-        /* _ - */ KEYBT(0x5f, 0x2d)};
+        /* ё Ё */ KEYBTDECLEX2(0x451, 0x401, true, 41, XK_Cyrillic_io, XK_Cyrillic_IO),
+        /* 1 ! */ KEYBTDECL(0x31, 0x21, false, 2),
+        /* 2 " */ KEYBTDECL(0x32, 0x5c, false, 3),
+        /* 3 â„– */ KEYBTDECLEX1(0x33, 0x2116, false, 4, 0x33, XK_numerosign),
+        /* 4 ; */ KEYBTDECL(0x34, 0x3b, false, 5),
+        /* 5 % */ KEYBTDECL(0x35, 0x25, false, 6),
+        /* 6 : */ KEYBTDECL(0x36, 0x3a, false, 7),
+        /* 7 ? */ KEYBTDECL(0x37, 0x3f, false, 8),
+        /* 8 * */ KEYBTDECL(0x38, 0x2a, false, 9),
+        /* 9 ( */ KEYBTDECL(0x39, 0x28, false, 10),
+        /* 0 ) */ KEYBTDECL(0x30, 0x29, false, 11),
+        /* - _ */ KEYBTDECL(0x2d, 0x4f, false, 12),
+        /* = + */ KEYBTDECL(0x3d, 0x2b, false, 13),
+
+        /* й Й */ KEYBTDECLEX2(0x439, 0x419, true, 16, XK_Cyrillic_shorti, XK_Cyrillic_SHORTI),
+        /* ц Ц */ KEYBTDECLEX2(0x446, 0x426, true, 17, XK_Cyrillic_tse, XK_Cyrillic_TSE),
+        /* у У */ KEYBTDECLEX2(0x443, 0x423, true, 18, XK_Cyrillic_u, XK_Cyrillic_U),
+        /* к К */ KEYBTDECLEX2(0x43a, 0x41a, true, 19, XK_Cyrillic_ka, XK_Cyrillic_KA),
+        /* е Е */ KEYBTDECLEX2(0x435, 0x415, true, 20, XK_Cyrillic_ie, XK_Cyrillic_IE),
+        /* н Н */ KEYBTDECLEX2(0x43d, 0x41d, true, 21, XK_Cyrillic_en, XK_Cyrillic_EN),
+        /* г Г */ KEYBTDECLEX2(0x433, 0x413, true, 22, XK_Cyrillic_ghe, XK_Cyrillic_GHE),
+        /* ш Ш */ KEYBTDECLEX2(0x448, 0x428, true, 23, XK_Cyrillic_sha, XK_Cyrillic_SHA),
+        /* щ Щ */ KEYBTDECLEX2(0x449, 0x429, true, 24, XK_Cyrillic_shcha, XK_Cyrillic_SHCHA),
+        /* з З */ KEYBTDECLEX2(0x437, 0x417, true, 25, XK_Cyrillic_ze, XK_Cyrillic_ZE),
+        /* х Х */ KEYBTDECLEX2(0x445, 0x425, true, 26, XK_Cyrillic_ha, XK_Cyrillic_HA),
+        /* ъ Ъ */ KEYBTDECLEX2(0x44a, 0x42a, true, 27, XK_Cyrillic_hardsign, XK_Cyrillic_HARDSIGN),
+
+        /* ф Ф */ KEYBTDECLEX2(0x444, 0x424, true, 30, XK_Cyrillic_ef, XK_Cyrillic_EF),
+        /* ы Ы */ KEYBTDECLEX2(0x44b, 0x42b, true, 31, XK_Cyrillic_yeru, XK_Cyrillic_YERU),
+        /* в В */ KEYBTDECLEX2(0x432, 0x412, true, 32, XK_Cyrillic_ve, XK_Cyrillic_VE),
+        /* а А */ KEYBTDECLEX2(0x430, 0x410, true, 33, XK_Cyrillic_a, XK_Cyrillic_A),
+        /* п П */ KEYBTDECLEX2(0x43f, 0x41f, true, 34, XK_Cyrillic_pe, XK_Cyrillic_PE),
+        /* р Р */ KEYBTDECLEX2(0x440, 0x420, true, 35, XK_Cyrillic_er, XK_Cyrillic_ER),
+        /* о О */ KEYBTDECLEX2(0x43e, 0x41e, true, 36, XK_Cyrillic_o, XK_Cyrillic_O),
+        /* л Л */ KEYBTDECLEX2(0x43b, 0x41b, true, 37, XK_Cyrillic_el, XK_Cyrillic_EL),
+        /* д Д */ KEYBTDECLEX2(0x434, 0x414, true, 38, XK_Cyrillic_de, XK_Cyrillic_DE),
+        /* ж Ж */ KEYBTDECLEX2(0x436, 0x416, true, 39, XK_Cyrillic_zhe, XK_Cyrillic_ZHE),
+        /* э Э */ KEYBTDECLEX2(0x44d, 0x42d, true, 40, XK_Cyrillic_e, XK_Cyrillic_E),
+        /* \ / */ KEYBTDECL(0x5c, 0x2f, false, 43),
+
+        /* я Я */ KEYBTDECLEX2(0x44f, 0x42f, true, 44, XK_Cyrillic_ya, XK_Cyrillic_YA),
+        /* ч Ч */ KEYBTDECLEX2(0x447, 0x427, true, 45, XK_Cyrillic_che, XK_Cyrillic_CHE),
+        /* с С */ KEYBTDECLEX2(0x441, 0x421, true, 46, XK_Cyrillic_es, XK_Cyrillic_ES),
+        /* м М */ KEYBTDECLEX2(0x43c, 0x41c, true, 47, XK_Cyrillic_em, XK_Cyrillic_EM),
+        /* и И */ KEYBTDECLEX2(0x438, 0x418, true, 48, XK_Cyrillic_i, XK_Cyrillic_I),
+        /* т Т */ KEYBTDECLEX2(0x442, 0x422, true, 49, XK_Cyrillic_te, XK_Cyrillic_TE),
+        /* ь Ь */ KEYBTDECLEX2(0x44c, 0x42c, true, 50, XK_Cyrillic_softsign, XK_Cyrillic_SOFTSIGN),
+        /* б Б */ KEYBTDECLEX2(0x431, 0x411, true, 51, XK_Cyrillic_be, XK_Cyrillic_BE),
+        /* ю Ю */ KEYBTDECLEX2(0x44e, 0x42e, true, 52, XK_Cyrillic_yu, XK_Cyrillic_YU),
+        /* . , */ KEYBTDECL(0x2e, 0x2c, false, 53)};
+
+KEYBT GERMAN_LOCALE[] = {
+        /* ^ ? */ KEYBTDECL(0x5f, 0xb0, false, 41),
+        /* 1 ! */ KEYBTDECL(0x31, 0x21, true, 2),
+        /* 2 " */ KEYBTDECL(0x32, 0x22, true, 3),
+        /* 3  */ KEYBTDECL(0x33, 0xa7, true, 4),
+        /* 4 $ */ KEYBTDECL(0x34, 0x24, true, 5),
+        /* 5 % */ KEYBTDECL(0x35, 0x25, true, 6),
+        /* 6 & */ KEYBTDECL(0x36, 0x26, true, 7),
+        /* 7 / */ KEYBTDECL(0x37, 0x2f, true, 8),
+        /* 8 ( */ KEYBTDECL(0x38, 0x28, true, 9),
+        /* 9 ) */ KEYBTDECL(0x39, 0x29, true, 10),
+        /* 0 = */ KEYBTDECL(0x30, 0x3d, true, 11),
+        /* ? ? */ KEYBTDECL(0xdf, 0x3f, true, 12),
+        /* ` ? */ KEYBTDECL(0x60, 0xb4, true, 13),
+
+        /* q Q */ KEYBTDECL(0x71, 0x51, true, 16),
+        /* w W */ KEYBTDECL(0x77, 0x57, true, 17),
+        /* e E */ KEYBTDECL(0x65, 0x45, true, 18),
+        /* r R */ KEYBTDECL(0x72, 0x52, true, 19),
+        /* t T */ KEYBTDECL(0x74, 0x54, true, 20),
+        /* z Z */ KEYBTDECL(0x7a, 0x5a, true, 21),
+        /* u U */ KEYBTDECL(0x75, 0x55, true, 22),
+        /* i I */ KEYBTDECL(0x69, 0x49, true, 23),
+        /* o O */ KEYBTDECL(0x6f, 0x4f, true, 24),
+        /* p P */ KEYBTDECL(0x70, 0x50, true, 25),
+        /* ? ? */ KEYBTDECL(0xfc, 0xdc, true, 26),
+        /* + * */ KEYBTDECL(0x2b, 0x2a, true, 27),
+
+        /* a A */ KEYBTDECL(0x61, 0x41, true, 30),
+        /* s S */ KEYBTDECL(0x73, 0x53, true, 31),
+        /* d D */ KEYBTDECL(0x64, 0x44, true, 32),
+        /* f F */ KEYBTDECL(0x66, 0x46, true, 33),
+        /* g G */ KEYBTDECL(0x67, 0x47, true, 34),
+        /* h H */ KEYBTDECL(0x68, 0x48, true, 35),
+        /* j J */ KEYBTDECL(0x6a, 0x4a, true, 36),
+        /* k K */ KEYBTDECL(0x6b, 0x4b, true, 37),
+        /* l L */ KEYBTDECL(0x6c, 0x4c, true, 38),
+        /* ? ? */ KEYBTDECL(0xf6, 0xd6, true, 39),
+        /* ? ? */ KEYBTDECL(0xe4, 0xc4, true, 40),
+        /* ' # */ KEYBTDECL(0x27, 0x23, true, 43),
+
+        /* y Y */ KEYBTDECL(0x79, 0x59, true, 44),
+        /* x X */ KEYBTDECL(0x78, 0x58, true, 45),
+        /* c C */ KEYBTDECL(0x63, 0x43, true, 46),
+        /* v V */ KEYBTDECL(0x76, 0x56, true, 47),
+        /* b B */ KEYBTDECL(0x62, 0x42, true, 48),
+        /* n N */ KEYBTDECL(0x6e, 0x4e, true, 49),
+        /* m M */ KEYBTDECL(0x6d, 0x4d, true, 50),
+        /* , ; */ KEYBTDECL(0x2c, 0x3b, true, 51),
+        /* . : */ KEYBTDECL(0x2e, 0x3a, true, 52),
+        /* _ - */ KEYBTDECL(0x5f, 0x2d, true, 53)};
+
+KEYBT FRENCH_LOCALE[] = {
+    /* ? ? */ KEYBTDECL(0xb2, 0xb2, true, 41),
+    /* & 1 */ KEYBTDECL(0x26, 0x31, true, 2),
+    /* ? 2 */ KEYBTDECL(0xe9, 0x32, true, 3),
+    /* " 3 */ KEYBTDECL(0x22, 0x33, true, 4),
+    /* ' 4 */ KEYBTDECL(0x27, 0x34, true, 5),
+    /* ( 5 */ KEYBTDECL(0x28, 0x35, true, 6),
+    /* - 6 */ KEYBTDECL(0x2d, 0x36, true, 7),
+    /* ? 7 */ KEYBTDECL(0xe8, 0x37, true, 8),
+    /* _ 8 */ KEYBTDECL(0x5f, 0x38, true, 9),
+    /* ? 9 */ KEYBTDECL(0xe7, 0x39, true, 10),
+    /* ? 0 */ KEYBTDECL(0xe0, 0x30, true, 11),
+    /* ) ? */ KEYBTDECL(0x29, 0xb0, true, 12),
+    /* = + */ KEYBTDECL(0x3d, 0x2b, true, 13),
+
+    /* a A */ KEYBTDECLEX6(0x61, 0x41, true, 16, 0x61, 0x41, 0xe2, 0xc2, 0xe4, 0xc4),
+    /* z Z */ KEYBTDECL(0x7a, 0x5a, true, 17),
+    /* e E */ KEYBTDECLEX6(0x65, 0x45, true, 18, 0x65, 0x45, 0xea, 0xca, 0xeb, 0xcb),
+    /* r R */ KEYBTDECL(0x72, 0x52, true, 19),
+    /* t T */ KEYBTDECL(0x74, 0x54, true, 20),
+    /* y Y */ KEYBTDECLEX6(0x79, 0x59, true, 21, 0x79, 0x59, 0, 0, 0xff, 0),
+    /* u U */ KEYBTDECLEX6(0x75, 0x55, true, 22, 0x75, 0x55, 0xfb, 0xdb, 0xfc, 0xdc),
+    /* i I */ KEYBTDECLEX6(0x69, 0x49, true, 23, 0x69, 0x49, 0xee, 0xce, 0xef, 0xcf),
+    /* o O */ KEYBTDECLEX6(0x6f, 0x4f, true, 24, 0x6f, 0x4f, 0xf4, 0xd4, 0xf6, 0xd6),
+    /* p P */ KEYBTDECL(0x70, 0x50, true, 25),
+    /* ^ ? */ KEYBT(0x5e, 0xa8, true, 1, 2, KEYCODE(0x5e, 26, 0), KEYCODE(0xa8, 26, 1)),
+    /* $ ? } */ KEYBTDECL(0x24, 0xa3, true, 27),
+
+    /* q Q */ KEYBTDECL(0x71, 0x51, true, 30),
+    /* s S */ KEYBTDECL(0x73, 0x53, true, 31),
+    /* d D */ KEYBTDECL(0x64, 0x44, true, 32),
+    /* f F */ KEYBTDECL(0x66, 0x46, true, 33),
+    /* g G */ KEYBTDECL(0x67, 0x47, true, 34),
+    /* h H */ KEYBTDECL(0x68, 0x48, true, 35),
+    /* j J */ KEYBTDECL(0x6a, 0x4a, true, 36),
+    /* k K */ KEYBTDECL(0x6b, 0x4b, true, 37),
+    /* l L */ KEYBTDECL(0x6c, 0x4c, true, 38),
+    /* m M */ KEYBTDECL(0x6d, 0x4d, true, 39),
+    /* ? % */ KEYBTDECL(0xf9, 0x25, true, 40),
+    /* * ? */ KEYBTDECL(0x2a, 0xb5, true, 43),
+
+    /* w W */ KEYBTDECL(0x77, 0x57, true, 44),
+    /* x X */ KEYBTDECL(0x78, 0x58, true, 45),
+    /* c C */ KEYBTDECL(0x63, 0x43, true, 46),
+    /* v V */ KEYBTDECL(0x76, 0x56, true, 47),
+    /* b B */ KEYBTDECL(0x62, 0x42, true, 48),
+    /* n N */ KEYBTDECL(0x6e, 0x4e, true, 49),
+    /* , ? */ KEYBTDECL(0x2c, 0x3f, true, 50),
+    /* ; . */ KEYBTDECL(0x3b, 0x2e, true, 51),
+    /* : / */ KEYBTDECL(0x3a, 0x2f, true, 52),
+    /* ! ? */ KEYBTDECL(0x21, 0xa7, true, 53)};
+
+
+KEYBT SWISS_FRENCH_LOCALE[] = {
+    /* § °*/	KEYBTDECL(0xa7, 0xb0, false, 41),
+    /* 1 +*/	KEYBTDECL(0x31, 0x2b, false, 2),
+    /* 2 "*/    KEYBTDECL(0x32, 0x22, false, 3),
+    /* 3 **/	KEYBTDECL(0x33, 0x2a, false, 4),
+    /* 4 ç*/    KEYBTDECL(0x34, 0xe7, false, 5),
+    /* 5 %*/    KEYBTDECL(0x35, 0x25, false, 6),
+    /* 6 &*/    KEYBTDECL(0x36, 0x26, false, 7),
+    /* 7 /*/    KEYBTDECL(0x37, 0x2f, false, 8),
+    /* 8 (*/    KEYBTDECL(0x38, 0x28, false, 9),
+    /* 9 )*/	KEYBTDECL(0x39, 0x29, false, 10),
+    /* 0 =*/	KEYBTDECL(0x30, 0x3d, false, 11),
+    /* ' ?*/	KEYBTDECL(0x27, 0x5f, false, 12),
+    /* ^ `*/	KEYBT(0x5e, 0x60, false, 1, 2, KEYCODE(0x5e, 13, 0), KEYCODE(0x60, 13, 1)),
+
+    /* q Q*/	KEYBTDECL(0x71, 0x51, true, 16),
+    /* w W*/	KEYBTDECL(0x77, 0x57, true, 17),
+    /* e E*/	KEYBTDECLEX8(0x65, 0x45, true, 18, 0x65, 0x45, 0xea, 0xca, 0xe8, 0xc8, 0xeb, 0xcb),
+    /* r R*/    KEYBTDECL(0x72, 0x52, true, 19),
+    /* t T*/	KEYBTDECL(0x74, 0x54, true, 20),
+    /* z Z*/	KEYBTDECL(0x7a, 0x5a, true, 21),
+    /* u U*/	KEYBTDECLEX8(0x75, 0x55, true, 22, 0x75, 0x55, 0xfb, 0xdb, 0xf9, 0xd9, 0xfc, 0xdc),
+    /* i I*/	KEYBTDECLEX8(0x69, 0x49, true, 23, 0x69, 0x49, 0xee, 0xce, 0xec, 0xcc, 0xef, 0xcf),
+    /* o O*/	KEYBTDECLEX8(0x6f, 0x4f, true, 24, 0x6f, 0x4f, 0xf4, 0xd4, 0xf2, 0xd2, 0xf6, 0xd6),
+    /* p P*/	KEYBTDECL(0x70, 0x50, true, 25),
+    /* è ü*/	KEYBTDECL(0xe8, 0xfa, false, 26),
+    /* ¨ !*/	KEYBT(0xa8, 0x21, false, 3, 0, KEYCODE(0xa8, 27, 0), KEYCODE(0x21, 27, 1)),
+
+    /* a A*/	KEYBTDECLEX8(0x61, 0x41, true, 30, 0x61, 0x41, 0xe2, 0xc2, 0xe0, 0xc0, 0xe4, 0xc4),
+    /* s S*/	KEYBTDECL(0x73, 0x53, true, 31),
+    /* d D*/	KEYBTDECL(0x64, 0x44, true, 32),
+    /* f F*/	KEYBTDECL(0x66, 0x46, true, 33),
+    /* g G*/	KEYBTDECL(0x67, 0x47, true, 34),
+    /* h H*/	KEYBTDECL(0x68, 0x48, true, 35),
+    /* j J*/	KEYBTDECL(0x6a, 0x4a, true, 36),
+    /* k K*/	KEYBTDECL(0x6b, 0x4b, true, 37),
+    /* l L*/	KEYBTDECL(0x6c, 0x4c, true, 38),
+    /* é ö*/	KEYBTDECL(0xe9, 0xf6, false, 39),
+    /* à ä*/	KEYBTDECL(0xe0, 0xe4, false, 40),
+    /* $ £*/	KEYBTDECL(0x24, 0xa3, false, 43),
+
+    /* < >*/	KEYBTDECL(0x3c, 0x3e, false, 44),
+    /* y Y*/	KEYBTDECLEX8(0x79, 0x59, true, 45, 0x79, 0x59, 0, 0, 0, 0, 0xff, 0),
+    /* x X*/	KEYBTDECL(0x78, 0x58, true, 46),
+    /* c C*/	KEYBTDECL(0x63, 0x43, true, 47),
+    /* v V*/	KEYBTDECL(0x76, 0x56, true, 48),
+    /* b B*/	KEYBTDECL(0x62, 0x42, true, 49),
+    /* n N*/	KEYBTDECL(0x6e, 0x4e, true, 50),
+    /* m M*/	KEYBTDECL(0x6d, 0x4d, true, 51),
+    /* , ;*/	KEYBTDECL(0x2c, 0x3b, false, 52),
+    /* . :*/	KEYBTDECL(0x2e, 0x3a, false, 53),
+    /* - _*/	KEYBTDECL(0x2d, 0x5f, false, 54)};
 
 
 void UBPlatformUtils::initializeKeyboardLayouts()
 {
-    nKeyboardLayouts = 4;
+    nKeyboardLayouts = 5;
     keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts];
-    keyboardLayouts[0] = new UBKeyboardLocale("English", "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE);
-    keyboardLayouts[1] = new UBKeyboardLocale("Russian", "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE);
-    keyboardLayouts[2] = new UBKeyboardLocale("French", "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE);
-    keyboardLayouts[3] = new UBKeyboardLocale("German", "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE);
+    keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE);
+    keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE);
+    keyboardLayouts[2] = new UBKeyboardLocale(tr("German"), "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE);
+    keyboardLayouts[3] = new UBKeyboardLocale(tr("French"), "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE);
+    keyboardLayouts[4] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE);
 }
 
 void UBPlatformUtils::destroyKeyboardLayouts()
 {
-	for(int i=0; i<4; i++)
+    for(int i=0; i<nKeyboardLayouts; i++)
 		delete keyboardLayouts[i];
 	delete [] keyboardLayouts;
 	keyboardLayouts = NULL;
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm b/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm
index 78f41d2..72dcb75 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils_mac.mm
@@ -10,8 +10,12 @@
 #import <Foundation/NSAutoreleasePool.h>
 #import <Carbon/Carbon.h>
 #import <APELite.h>
+
+/*
+// commented because Sankore crashes on Java Script. It seems to backends dependencies.
 #import <WebKit/WebKit.h>
 #import <AppKit/AppKit.h>
+*/
 
 
 NSString* bundleShortVersion(NSBundle *bundle)
@@ -20,8 +24,8 @@ NSString* bundleShortVersion(NSBundle *bundle)
 }
 
 OSStatus emptySetSystemUIMode (
-   SystemUIMode inMode,
-   SystemUIOptions inOptions)
+        SystemUIMode inMode,
+        SystemUIOptions inOptions)
 {
     Q_UNUSED(inMode);
     Q_UNUSED(inOptions);
@@ -33,7 +37,7 @@ void *originalSetSystemUIMode = 0;
 
 void UBPlatformUtils::init()
 {
-        initializeKeyboardLayouts();
+    initializeKeyboardLayouts();
 
     // qwidget_mac.mm qt_mac_set_fullscreen_mode uses kUIModeAllSuppressed which is unfortunate in our case
     //
@@ -180,31 +184,36 @@ void UBPlatformUtils::fadeDisplayIn()
     }
 }
 
-QString UBPlatformUtils::preferredTranslation(QString pFilePrefix)
+QStringList UBPlatformUtils::availableTranslations()
 {
-    QString qmPath;
-    NSString* filePrefix = [[NSString alloc] initWithUTF8String:(const char*)(pFilePrefix.toUtf8())];
-
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    NSString *lprojPath = [[NSBundle mainBundle] resourcePath];
+    QString translationsPath =  QString::fromUtf8([lprojPath UTF8String], strlen([lprojPath UTF8String]));
+    QStringList translationsList = UBFileSystemUtils::allFiles(translationsPath, false);
+    QRegExp sankoreTranslationFiles(".*lproj");
+    translationsList=translationsList.filter(sankoreTranslationFiles);
+    [pool drain];
+    return translationsList.replaceInStrings(QRegExp("(.*)/(.*).lproj"),"\\2");
+}
 
-    NSString *lprojPath = [[[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"] stringByDeletingLastPathComponent];
-    if (lprojPath)
-    {
-        NSString *lang = [[lprojPath lastPathComponent] stringByDeletingPathExtension];
-        NSString *translationFilePath = [lprojPath stringByAppendingPathComponent:[[filePrefix stringByAppendingString:lang] stringByAppendingPathExtension:@"qm"]];
-        qmPath = QString::fromUtf8([translationFilePath UTF8String], strlen([translationFilePath UTF8String]));
-    }
-
+QString UBPlatformUtils::translationPath(QString pFilePrefix, QString pLanguage)
+{
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    NSString *lprojPath = [[NSBundle mainBundle] resourcePath];
+    QString translationsPath =  QString::fromUtf8([lprojPath UTF8String], strlen([lprojPath UTF8String]));
     [pool drain];
-    return qmPath;
+    return translationsPath + "/" + pLanguage + ".lproj/" + pFilePrefix + pLanguage + ".qm";
 }
 
-QString UBPlatformUtils::preferredLanguage()
+QString UBPlatformUtils::systemLanguage()
 {
-    QFileInfo qmFileInfo = QFileInfo(preferredTranslation("sankore_"));
-    QDir lprojPath = qmFileInfo.dir();
-    QFileInfo lprojFileInfo = QFileInfo(lprojPath.absolutePath());
-    return lprojFileInfo.baseName();
+    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+    NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
+    NSArray* languages = [defs objectForKey:@"AppleLanguages"];
+    NSString* preferredLang = [languages objectAtIndex:0];
+    QString result = QString::fromUtf8([preferredLang UTF8String], strlen([preferredLang UTF8String]));
+    [pool drain];
+    return result;
 }
 
 void UBPlatformUtils::runInstaller(const QString &installerFilePath)
@@ -252,7 +261,7 @@ void UBPlatformUtils::runInstaller(const QString &installerFilePath)
         bool success = process.startDetached(escaped);
 
         if(success)
-           return;
+            return;
     }
 
     // did not work .. lets load the dmg ...
@@ -336,205 +345,212 @@ void UBPlatformUtils::setWindowNonActivableFlag(QWidget* widget, bool nonAcivabl
 }
 
 QPixmap qpixmapFromIconRef(IconRef iconRef, int size) {
-      OSErr result;
-      int iconSize;
-      OSType elementType;
-
-      // Determine elementType and iconSize
-      if (size <= 16) {
-            elementType = kSmall32BitData;
-            iconSize = 16;
-      } else if (size <= 32) {
-            elementType = kLarge32BitData;
-            iconSize = 32;
-      } else {
-            elementType = kThumbnail32BitData;
-            iconSize = 128;
-      }
-
-      // Get icon into an IconFamily
-      IconFamilyHandle hIconFamily = 0;
-      IconRefToIconFamily(iconRef, kSelectorAllAvailableData, &hIconFamily);
-
-      // Extract data
-      Handle hRawBitmapData = NewHandle(iconSize * iconSize * 4);
-      result = GetIconFamilyData( hIconFamily, elementType, hRawBitmapData );
-      if (result != noErr) {
-            DisposeHandle(hRawBitmapData);
-            return QPixmap();
-      }
-
-      // Convert data to QImage
-      QImage image(iconSize, iconSize, QImage::Format_ARGB32);
-      HLock(hRawBitmapData);
-      unsigned long* data = (unsigned long*) *hRawBitmapData;
-      for (int posy=0; posy<iconSize; ++posy, data+=iconSize) {
-      #ifdef __BIG_ENDIAN__
-            uchar* line = image.scanLine(posy);
-            memcpy(line, data, iconSize * 4);
-      #else
-            uchar* src = (uchar*) data;
-            uchar* dst = image.scanLine(posy);
-            for (int posx=0; posx<iconSize; src+=4, dst+=4, ++posx) {
-                  dst[0] = src[3];
-                  dst[1] = src[2];
-                  dst[2] = src[1];
-                  dst[3] = src[0];
-            }
-      #endif
-      }
-      HUnlock(hRawBitmapData);
-      DisposeHandle( hRawBitmapData );
-
-      // Scale to wanted size
-      image = image.scaled(size, size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-      return QPixmap::fromImage(image);
+    OSErr result;
+    int iconSize;
+    OSType elementType;
+
+    // Determine elementType and iconSize
+    if (size <= 16) {
+        elementType = kSmall32BitData;
+        iconSize = 16;
+    } else if (size <= 32) {
+        elementType = kLarge32BitData;
+        iconSize = 32;
+    } else {
+        elementType = kThumbnail32BitData;
+        iconSize = 128;
+    }
+
+    // Get icon into an IconFamily
+    IconFamilyHandle hIconFamily = 0;
+    IconRefToIconFamily(iconRef, kSelectorAllAvailableData, &hIconFamily);
+
+    // Extract data
+    Handle hRawBitmapData = NewHandle(iconSize * iconSize * 4);
+    result = GetIconFamilyData( hIconFamily, elementType, hRawBitmapData );
+    if (result != noErr) {
+        DisposeHandle(hRawBitmapData);
+        return QPixmap();
+    }
+
+    // Convert data to QImage
+    QImage image(iconSize, iconSize, QImage::Format_ARGB32);
+    HLock(hRawBitmapData);
+    unsigned long* data = (unsigned long*) *hRawBitmapData;
+    for (int posy=0; posy<iconSize; ++posy, data+=iconSize) {
+#ifdef __BIG_ENDIAN__
+        uchar* line = image.scanLine(posy);
+        memcpy(line, data, iconSize * 4);
+#else
+        uchar* src = (uchar*) data;
+        uchar* dst = image.scanLine(posy);
+        for (int posx=0; posx<iconSize; src+=4, dst+=4, ++posx) {
+            dst[0] = src[3];
+            dst[1] = src[2];
+            dst[2] = src[1];
+            dst[3] = src[0];
+        }
+#endif
+    }
+    HUnlock(hRawBitmapData);
+    DisposeHandle( hRawBitmapData );
+
+    // Scale to wanted size
+    image = image.scaled(size, size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+    return QPixmap::fromImage(image);
 }
 
 QString QStringFromStringRef(CFStringRef stringRef)
 {
-   if (stringRef!=NULL)
-        {
-		char tmp[1024];
-		CFStringGetCString(stringRef, tmp, 1024, 0);
-		return QString(tmp);
-	}
-	else
-		return QString();
+    if (stringRef!=NULL)
+    {
+        char tmp[1024];
+        CFStringGetCString(stringRef, tmp, 1024, 0);
+        return QString(tmp);
+    }
+    else
+        return QString();
 }
 
 
 KEYBT* createKeyBt(const UCKeyboardLayout* keyLayout, int vkk)
 {
-	UInt32 deadKeyState = 0L;
-	UInt32 kbdType = kKeyboardISO;
+    UInt32 deadKeyState = 0L;
+    UInt32 kbdType = kKeyboardISO;
 
-	UniCharCount cnt1, cnt2;
-	UniChar unicodeString1[100], unicodeString2[100];
+    UniCharCount cnt1, cnt2;
+    UniChar unicodeString1[100], unicodeString2[100], unicodeString3[100];
 
-	UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, 0, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt1, unicodeString1);
-	UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (shiftKey >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString2);
+    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, 0, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt1, unicodeString1);
+    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (shiftKey >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString2);
+    UCKeyTranslate(keyLayout, vkk, kUCKeyActionDisplay, (alphaLock >> 8) & 0xff, kbdType,  kUCKeyTranslateNoDeadKeysBit, &deadKeyState, 100, &cnt2, unicodeString3);
 
-	return new KEYBT(unicodeString1[0], vkk, unicodeString2[0], vkk);
+    return new KEYBT(unicodeString1[0], unicodeString2[0], unicodeString1[0] != unicodeString3[0], 0,0, KEYCODE(0, vkk, 0), KEYCODE(0, vkk, 1));
 }
 
 
 void UBPlatformUtils::initializeKeyboardLayouts()
 {
-	CFStringRef keys[] = { kTISPropertyInputSourceCategory, kTISPropertyInputSourceIsEnableCapable, kTISPropertyInputSourceIsSelectCapable };
-	const void* values[] = { kTISCategoryKeyboardInputSource, kCFBooleanTrue, kCFBooleanTrue };
-	CFDictionaryRef dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 3, NULL, NULL);
-	CFArrayRef kbds = TISCreateInputSourceList(dict, false);
-
-	int count = CFArrayGetCount(kbds);
-	QList<UBKeyboardLocale*> result;
-
-	for(int i=0; i<count; i++)
-	{
-		TISInputSourceRef keyLayoutRef =  (TISInputSourceRef)CFArrayGetValueAtIndex(kbds, i);
-		if (keyLayoutRef==NULL)
-			continue;
-
-		CFDataRef ref = (CFDataRef) TISGetInputSourceProperty(keyLayoutRef,
-					 kTISPropertyUnicodeKeyLayoutData);
-		if (ref==NULL)
-			continue;
-		const UCKeyboardLayout* keyLayout = (const UCKeyboardLayout*) CFDataGetBytePtr(ref);
-		if (keyLayoutRef==NULL)
-			continue;
-
-		KEYBT** keybt = new KEYBT*[SYMBOL_KEYS_COUNT];
-
-		keybt[0] = createKeyBt(keyLayout, 10);
-		keybt[1] = createKeyBt(keyLayout, 18);
-		keybt[2] = createKeyBt(keyLayout, 19);
-		keybt[3] = createKeyBt(keyLayout, 20);
-		keybt[4] = createKeyBt(keyLayout, 21);
-		keybt[5] = createKeyBt(keyLayout, 23);
-		keybt[6] = createKeyBt(keyLayout, 22);
-		keybt[7] = createKeyBt(keyLayout, 26);
-		keybt[8] = createKeyBt(keyLayout, 28);
-		keybt[9] = createKeyBt(keyLayout, 25);
-		keybt[10] = createKeyBt(keyLayout, 29);
-		keybt[11] = createKeyBt(keyLayout, 27);
-		keybt[12] = createKeyBt(keyLayout, 24);
-
-		keybt[13] = createKeyBt(keyLayout, 12);
-		keybt[14] = createKeyBt(keyLayout, 13);
-		keybt[15] = createKeyBt(keyLayout, 14);
-		keybt[16] = createKeyBt(keyLayout, 15);
-		keybt[17] = createKeyBt(keyLayout, 17);
-		keybt[18] = createKeyBt(keyLayout, 16);
-		keybt[19] = createKeyBt(keyLayout, 32);
-		keybt[20] = createKeyBt(keyLayout, 34);
-		keybt[21] = createKeyBt(keyLayout, 31);
-		keybt[22] = createKeyBt(keyLayout, 35);
-		keybt[23] = createKeyBt(keyLayout, 33);
-		keybt[24] = createKeyBt(keyLayout, 30);
-
-		keybt[25] = createKeyBt(keyLayout, 0);
-		keybt[26] = createKeyBt(keyLayout, 1);
-		keybt[27] = createKeyBt(keyLayout, 2);
-		keybt[28] = createKeyBt(keyLayout, 3);
-		keybt[29] = createKeyBt(keyLayout, 5);
-		keybt[30] = createKeyBt(keyLayout, 4);
-		keybt[31] = createKeyBt(keyLayout, 38);
-		keybt[32] = createKeyBt(keyLayout, 40);
-		keybt[33] = createKeyBt(keyLayout, 37);
-		keybt[34] = createKeyBt(keyLayout, 41);
-		keybt[35] = createKeyBt(keyLayout, 39);
-		keybt[36] = createKeyBt(keyLayout, 42);
-
-		keybt[37] = createKeyBt(keyLayout, 6);
-		keybt[38] = createKeyBt(keyLayout, 7);
-		keybt[39] = createKeyBt(keyLayout, 8);
-		keybt[40] = createKeyBt(keyLayout, 9);
-		keybt[41] = createKeyBt(keyLayout, 11);
-		keybt[42] = createKeyBt(keyLayout, 45);
-		keybt[43] = createKeyBt(keyLayout, 46);
-		keybt[44] = createKeyBt(keyLayout, 43);
-		keybt[45] = createKeyBt(keyLayout, 47);
-		keybt[46] = createKeyBt(keyLayout, 44);
-
-
-		CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(keyLayoutRef, kTISPropertyInputSourceID);
-		QString ID = QStringFromStringRef(sr);
-
-		sr = (CFStringRef) TISGetInputSourceProperty(keyLayoutRef, kTISPropertyLocalizedName);
-		QString fullName = QStringFromStringRef(sr);
-
-                CFArrayRef langs = (CFArrayRef) TISGetInputSourceProperty(keyLayoutRef, kTISPropertyInputSourceLanguages);
-
-                QString name = "??";
-		if (CFArrayGetCount(langs)>0)
-		{
-			CFStringRef langRef = (CFStringRef)CFArrayGetValueAtIndex(langs, 0);
-			name = QStringFromStringRef(langRef);
-                        qDebug() << "name is " + name;
-
-		}
-
-                //IconRef iconRef = (IconRef)TISGetInputSourceProperty(kTISPropertyIconRef, kTISPropertyInputSourceLanguages);
-
-                const QString resName = ":/images/flags/" + name + ".png";
-                QIcon *iconLang = new QIcon(resName);
-
-                result.append(new UBKeyboardLocale(fullName, name, ID, iconLang, keybt));
-	}
-
-	if (result.size()==0)
-	{
-		nKeyboardLayouts = 0;
-		keyboardLayouts = NULL;
-	}
-	else
-	{
-		nKeyboardLayouts = result.size();
-		keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts];
-		for(int i=0; i<nKeyboardLayouts; i++)
-			keyboardLayouts[i] = result[i];
-	}
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    CFStringRef keys[] = { kTISPropertyInputSourceCategory, kTISPropertyInputSourceIsEnableCapable, kTISPropertyInputSourceIsSelectCapable };
+    const void* values[] = { kTISCategoryKeyboardInputSource, kCFBooleanTrue, kCFBooleanTrue };
+    CFDictionaryRef dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 3, NULL, NULL);
+    CFArrayRef kbds = TISCreateInputSourceList(dict, false);
+
+    int count = CFArrayGetCount(kbds);
+    QList<UBKeyboardLocale*> result;
+
+	qDebug() << "initializeKeyboardLayouts";
+	qDebug() << "Found system locales: " << count;
+
+    for(int i=0; i<count; i++)
+    {
+        TISInputSourceRef keyLayoutRef =  (TISInputSourceRef)CFArrayGetValueAtIndex(kbds, i);
+        if (keyLayoutRef==NULL)
+            continue;
+
+        CFDataRef ref = (CFDataRef) TISGetInputSourceProperty(keyLayoutRef,
+                                                              kTISPropertyUnicodeKeyLayoutData);
+        if (ref==NULL)
+            continue;
+        const UCKeyboardLayout* keyLayout = (const UCKeyboardLayout*) CFDataGetBytePtr(ref);
+        if (keyLayoutRef==NULL)
+            continue;
+
+        KEYBT** keybt = new KEYBT*[SYMBOL_KEYS_COUNT];
+
+        keybt[0] = createKeyBt(keyLayout, 10);
+        keybt[1] = createKeyBt(keyLayout, 18);
+        keybt[2] = createKeyBt(keyLayout, 19);
+        keybt[3] = createKeyBt(keyLayout, 20);
+        keybt[4] = createKeyBt(keyLayout, 21);
+        keybt[5] = createKeyBt(keyLayout, 23);
+        keybt[6] = createKeyBt(keyLayout, 22);
+        keybt[7] = createKeyBt(keyLayout, 26);
+        keybt[8] = createKeyBt(keyLayout, 28);
+        keybt[9] = createKeyBt(keyLayout, 25);
+        keybt[10] = createKeyBt(keyLayout, 29);
+        keybt[11] = createKeyBt(keyLayout, 27);
+        keybt[12] = createKeyBt(keyLayout, 24);
+
+        keybt[13] = createKeyBt(keyLayout, 12);
+        keybt[14] = createKeyBt(keyLayout, 13);
+        keybt[15] = createKeyBt(keyLayout, 14);
+        keybt[16] = createKeyBt(keyLayout, 15);
+        keybt[17] = createKeyBt(keyLayout, 17);
+        keybt[18] = createKeyBt(keyLayout, 16);
+        keybt[19] = createKeyBt(keyLayout, 32);
+        keybt[20] = createKeyBt(keyLayout, 34);
+        keybt[21] = createKeyBt(keyLayout, 31);
+        keybt[22] = createKeyBt(keyLayout, 35);
+        keybt[23] = createKeyBt(keyLayout, 33);
+        keybt[24] = createKeyBt(keyLayout, 30);
+
+        keybt[25] = createKeyBt(keyLayout, 0);
+        keybt[26] = createKeyBt(keyLayout, 1);
+        keybt[27] = createKeyBt(keyLayout, 2);
+        keybt[28] = createKeyBt(keyLayout, 3);
+        keybt[29] = createKeyBt(keyLayout, 5);
+        keybt[30] = createKeyBt(keyLayout, 4);
+        keybt[31] = createKeyBt(keyLayout, 38);
+        keybt[32] = createKeyBt(keyLayout, 40);
+        keybt[33] = createKeyBt(keyLayout, 37);
+        keybt[34] = createKeyBt(keyLayout, 41);
+        keybt[35] = createKeyBt(keyLayout, 39);
+        keybt[36] = createKeyBt(keyLayout, 42);
+
+        keybt[37] = createKeyBt(keyLayout, 6);
+        keybt[38] = createKeyBt(keyLayout, 7);
+        keybt[39] = createKeyBt(keyLayout, 8);
+        keybt[40] = createKeyBt(keyLayout, 9);
+        keybt[41] = createKeyBt(keyLayout, 11);
+        keybt[42] = createKeyBt(keyLayout, 45);
+        keybt[43] = createKeyBt(keyLayout, 46);
+        keybt[44] = createKeyBt(keyLayout, 43);
+        keybt[45] = createKeyBt(keyLayout, 47);
+        keybt[46] = createKeyBt(keyLayout, 44);
+
+
+        CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(keyLayoutRef, kTISPropertyInputSourceID);
+        QString ID = QStringFromStringRef(sr);
+
+        sr = (CFStringRef) TISGetInputSourceProperty(keyLayoutRef, kTISPropertyLocalizedName);
+        QString fullName = QString::fromUtf8([sr UTF8String], strlen([sr UTF8String]));
+
+        CFArrayRef langs = (CFArrayRef) TISGetInputSourceProperty(keyLayoutRef, kTISPropertyInputSourceLanguages);
+
+        QString name = "??";
+        if (CFArrayGetCount(langs)>0)
+        {
+            CFStringRef langRef = (CFStringRef)CFArrayGetValueAtIndex(langs, 0);
+            name = QStringFromStringRef(langRef);
+            qDebug() << "name is " + name;
 
+        }
+
+        //IconRef iconRef = (IconRef)TISGetInputSourceProperty(kTISPropertyIconRef, kTISPropertyInputSourceLanguages);
+
+        const QString resName = ":/images/flags/" + name + ".png";
+        QIcon *iconLang = new QIcon(resName);
+
+		qDebug() << "Locale: " << ID << ", name: " << name;
+
+        result.append(new UBKeyboardLocale(fullName, name, ID, iconLang, keybt));
+    }
+
+    if (result.size()==0)
+    {
+        nKeyboardLayouts = 0;
+        keyboardLayouts = NULL;
+    }
+    else
+    {
+        nKeyboardLayouts = result.size();
+        keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts];
+        for(int i=0; i<nKeyboardLayouts; i++)
+            keyboardLayouts[i] = result[i];
+    }
+    [pool drain];
 }
 
 void UBPlatformUtils::destroyKeyboardLayouts()
@@ -543,13 +559,39 @@ void UBPlatformUtils::destroyKeyboardLayouts()
 QString UBPlatformUtils::urlFromClipboard()
 {
     QString qsRet;
-
+/*
+    // commented because Sankore crashes on Java Script. It seems to backends dependencies.
     NSPasteboard* pPasteboard = [NSPasteboard pasteboardWithName:@"Apple CFPasteboard drag"];
     WebArchive* pArchive = [[WebArchive alloc] initWithData:[pPasteboard dataForType:@"com.apple.webarchive"]];
 
     qsRet = [[[[pArchive mainResource] URL] absoluteString] UTF8String];
 
     [pArchive release];
-
+*/
     return qsRet;
 }
+
+
+void UBPlatformUtils::SetMacLocaleByIdentifier(const QString& id)
+{
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+    const char * strName = id.toAscii().data();
+
+    CFStringRef iName = CFStringCreateWithCString(NULL, strName, kCFStringEncodingMacRoman );
+
+    CFStringRef keys[] = { kTISPropertyInputSourceCategory, kTISPropertyInputSourceID };
+    CFStringRef values[] = { kTISCategoryKeyboardInputSource, iName };
+    CFDictionaryRef dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 2, NULL, NULL);
+    CFArrayRef kbds = TISCreateInputSourceList(dict, true);
+    if (kbds!=NULL)
+    {
+        if (CFArrayGetCount(kbds)!=0)
+        {
+            TISInputSourceRef klRef =  (TISInputSourceRef)CFArrayGetValueAtIndex(kbds, 0);
+            if (klRef!=NULL)
+                TISSelectInputSource(klRef);
+        }
+    }
+    [pool drain];
+}
diff --git a/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp b/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp
index 04f0942..ac41552 100644
--- a/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp
+++ b/Sankore-3.1/src/frameworks/UBPlatformUtils_win.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPlatformUtils.h"
 
 #include <QtGui>
@@ -20,6 +27,7 @@
 #include <windows.h>
 #include <shellapi.h>
 
+#include "frameworks/UBFileSystemUtils.h"
 #include "core/memcheck.h"
 
 void UBPlatformUtils::init()
@@ -59,14 +67,22 @@ void UBPlatformUtils::fadeDisplayIn()
     // NOOP
 }
 
-QString UBPlatformUtils::preferredTranslation(QString pFilePrefix)
+QStringList UBPlatformUtils::availableTranslations()
 {
-    QString localPreferredLanguage = preferredLanguage();
-    QString qmPath = applicationResourcesDirectory() + "/" + "i18n" + "/" + pFilePrefix + localPreferredLanguage + ".qm";
+	QString translationsPath = applicationResourcesDirectory() + "/" + "i18n" + "/";
+	QStringList translationsList = UBFileSystemUtils::allFiles(translationsPath);
+	QRegExp sankoreTranslationFiles(".*sankore_.*.qm");
+	translationsList=translationsList.filter(sankoreTranslationFiles);
+	return translationsList.replaceInStrings(QRegExp("(.*)sankore_(.*).qm"),"\\2");
+}
+
+QString UBPlatformUtils::translationPath(QString pFilePrefix,QString pLanguage)
+{
+    QString qmPath = applicationResourcesDirectory() + "/" + "i18n" + "/" + pFilePrefix + pLanguage + ".qm";
     return qmPath;
 }
 
-QString UBPlatformUtils::preferredLanguage()
+QString UBPlatformUtils::systemLanguage()
 {
     return QLocale::system().name();
 }
@@ -128,282 +144,281 @@ void UBPlatformUtils::setWindowNonActivableFlag(QWidget* widget, bool nonAcivabl
 	SetWindowLong(widget->winId(), GWL_EXSTYLE, exStyle);
 }
 
+#define KEYBTDECL(s1, s2, clSwitch) KEYBT(s1, s2, clSwitch, 0, 0, KEYCODE(s1), KEYCODE(s2))
 
-
-const KEYBT RUSSIAN_LOCALE [] = 
+KEYBT RUSSIAN_LOCALE [] = 
 {
-	/* Ј і */ KEYBT(0x451, 0x401),
-	/* 1 ! */ KEYBT(0x31, 0x21),
-	/* 2 " */ KEYBT(0x32, 0x5c),
-	/* 3 ? */ KEYBT(0x33, 0x2116),
-	/* 4 ; */ KEYBT(0x34, 0x3b),
-	/* 5 % */ KEYBT(0x35, 0x25),
-	/* 6 : */ KEYBT(0x36, 0x3a),
-	/* 7 ? */ KEYBT(0x37, 0x3f),
-	/* 8 * */ KEYBT(0x38, 0x2a),
-	/* 9 ( */ KEYBT(0x39, 0x28),
-	/* 0 ) */ KEYBT(0x30, 0x29),
-	/* - _ */ KEYBT(0x2d, 0x4f),
-	/* = + */ KEYBT(0x3d, 0x2b),
-
-	/* К к */ KEYBT(0x439, 0x419),
-	/* Г г */ KEYBT(0x446, 0x426),
-	/* Х х */ KEYBT(0x443, 0x423),
-	/* Л л */ KEYBT(0x43a, 0x41a),
-	/* Е е */ KEYBT(0x435, 0x415),
-	/* О о */ KEYBT(0x43d, 0x41d),
-	/* З з */ KEYBT(0x433, 0x413),
-	/* Ы ы */ KEYBT(0x448, 0x428),
-	/* Э э */ KEYBT(0x449, 0x429),
-	/* Ъ ъ */ KEYBT(0x437, 0x417),
-	/* И и */ KEYBT(0x445, 0x425),
-	/* Я я */ KEYBT(0x44a, 0x42a),
-
-	/* Ж ж */ KEYBT(0x444, 0x424),
-	/* Щ щ */ KEYBT(0x44b, 0x42b),
-	/* Ч ч */ KEYBT(0x432, 0x412),
-	/* Б б */ KEYBT(0x430, 0x410),
-	/* Р р */ KEYBT(0x43f, 0x41f),
-	/* Т т */ KEYBT(0x440, 0x420),
-	/* П п */ KEYBT(0x43e, 0x41e),
-	/* М м */ KEYBT(0x43b, 0x41b),
-	/* Д д */ KEYBT(0x434, 0x414),
-	/* Ц ц */ KEYBT(0x436, 0x416),
-	/* Ь ь */ KEYBT(0x44d, 0x42d),
-	/* \ / */ KEYBT(0x5c, 0x2f),
-
-	/* С с */ KEYBT(0x44f, 0x42f),
-	/* Ю ю */ KEYBT(0x447, 0x427),
-	/* У у */ KEYBT(0x441, 0x421),
-	/* Н н */ KEYBT(0x43c, 0x41c),
-	/* Й й */ KEYBT(0x438, 0x418),
-	/* Ф ф */ KEYBT(0x442, 0x422),
-	/* Ш ш */ KEYBT(0x44c, 0x42c),
-	/* В в */ KEYBT(0x431, 0x411),
-	/* А а */ KEYBT(0x44e, 0x42e),
-	/* . , */ KEYBT(0x2e, 0x2c)};
-
-const KEYBT ENGLISH_LOCALE[] = {
-	/* ` ~ */ KEYBT(0x60, 0x7e),
-	/* 1 ! */ KEYBT(0x31, 0x21),
-	/* 2 @ */ KEYBT(0x32, 0x40),
-	/* 3 # */ KEYBT(0x33, 0x23),
-	/* 4 $ */ KEYBT(0x34, 0x24),
-	/* 5 % */ KEYBT(0x35, 0x25),
-	/* 6 ^ */ KEYBT(0x36, 0x5e),
-	/* 7 & */ KEYBT(0x37, 0x26),
-	/* 8 * */ KEYBT(0x38, 0x2a),
-	/* 9 ( */ KEYBT(0x39, 0x28),
-	/* 0 ) */ KEYBT(0x30, 0x29),
-	/* - _ */ KEYBT(0x2d, 0x5f),
-	/* = + */ KEYBT(0x3d, 0x2b),
-
-	/* q Q */ KEYBT(0x71, 0x51),
-	/* w W */ KEYBT(0x77, 0x57),
-	/* e E */ KEYBT(0x65, 0x45),
-	/* r R */ KEYBT(0x72, 0x52),
-	/* t T */ KEYBT(0x74, 0x54),
-	/* y Y */ KEYBT(0x79, 0x59),
-	/* u U */ KEYBT(0x75, 0x55),
-	/* i I */ KEYBT(0x69, 0x49),
-	/* o O */ KEYBT(0x6f, 0x4f),
-	/* p P */ KEYBT(0x70, 0x50),
-	/* [ { */ KEYBT(0x5b, 0x7b),
-	/* ] } */ KEYBT(0x5d, 0x7d),
-
-	/* a A */ KEYBT(0x61, 0x41),
-	/* s S */ KEYBT(0x73, 0x53),
-	/* d D */ KEYBT(0x64, 0x44),
-	/* f F */ KEYBT(0x66, 0x46),
-	/* g G */ KEYBT(0x67, 0x47),
-	/* h H */ KEYBT(0x68, 0x48),
-	/* j J */ KEYBT(0x6a, 0x4a),
-	/* k K */ KEYBT(0x6b, 0x4b),
-	/* l L */ KEYBT(0x6c, 0x4c),
-	/* ; : */ KEYBT(0x3b, 0x3a),
-	/* ' " */ KEYBT(0x27, 0x22),
-	/* \ | */ KEYBT(0x5c, 0x7c),
-
-	/* z Z */ KEYBT(0x7a, 0x5a),
-	/* x X */ KEYBT(0x78, 0x58),
-	/* c C */ KEYBT(0x63, 0x43),
-	/* v V */ KEYBT(0x76, 0x56),
-	/* b B */ KEYBT(0x62, 0x42),
-	/* n N */ KEYBT(0x6e, 0x4e),
-	/* m M */ KEYBT(0x6d, 0x4d),
-	/* , < */ KEYBT(0x2c, 0x3c),
-	/* . > */ KEYBT(0x2e, 0x3e),
-	/* / ? */ KEYBT(0x2f, 0x5f)};
-
-
-const KEYBT FRENCH_LOCALE[] = {
-	/* ? ? */ KEYBT(0xb2, 0xb2),
-	/* & 1 */ KEYBT(0x26, 0x31),
-	/* ? 2 */ KEYBT(0xe9, 0x32),
-	/* " 3 */ KEYBT(0x22, 0x33),
-	/* ' 4 */ KEYBT(0x27, 0x34),
-	/* ( 5 */ KEYBT(0x28, 0x35),
-	/* - 6 */ KEYBT(0x2d, 0x36),
-	/* ? 7 */ KEYBT(0xe8, 0x37),
-	/* _ 8 */ KEYBT(0x5f, 0x38),
-	/* ? 9 */ KEYBT(0xe7, 0x39),
-	/* ? 0 */ KEYBT(0xe0, 0x29),
-	/* ) ? */ KEYBT(0x29, 0xb0),
-	/* = + */ KEYBT(0x3d, 0x2b),
-
-	/* a A */ KEYBT(0x61, 0x41),
-	/* z Z */ KEYBT(0x7a, 0x5a),
-	/* e E */ KEYBT(0x65, 0x45),
-	/* r R */ KEYBT(0x72, 0x52),
-	/* t T */ KEYBT(0x74, 0x54),
-	/* y Y */ KEYBT(0x79, 0x59),
-	/* u U */ KEYBT(0x75, 0x55),
-	/* i I */ KEYBT(0x69, 0x49),
-	/* o O */ KEYBT(0x6f, 0x4f),
-	/* p P */ KEYBT(0x70, 0x50),
-	/* ^ ? */ KEYBT(0x5e, 0xa8),
-	/* $ ? } */ KEYBT(0x24, 0xa3),
-
-	/* q Q */ KEYBT(0x71, 0x51),
-	/* s S */ KEYBT(0x73, 0x53),
-	/* d D */ KEYBT(0x64, 0x44),
-	/* f F */ KEYBT(0x66, 0x46),
-	/* g G */ KEYBT(0x67, 0x47),
-	/* h H */ KEYBT(0x68, 0x48),
-	/* j J */ KEYBT(0x6a, 0x4a),
-	/* k K */ KEYBT(0x6b, 0x4b),
-	/* l L */ KEYBT(0x6c, 0x4c),
-	/* m M */ KEYBT(0x6d, 0x4d),
-	/* ? % */ KEYBT(0xf9, 0x25),
-	/* * ? */ KEYBT(0x2a, 0xb5),
-
-	/* w W */ KEYBT(0x77, 0x57),
-	/* x X */ KEYBT(0x78, 0x58),
-	/* c C */ KEYBT(0x63, 0x43),
-	/* v V */ KEYBT(0x76, 0x56),
-	/* b B */ KEYBT(0x62, 0x42),
-	/* n N */ KEYBT(0x6e, 0x4e),
-	/* , ? */ KEYBT(0x2c, 0x3f),
-	/* ; . */ KEYBT(0x3b, 0x2e),
-	/* : / */ KEYBT(0x3a, 0x2f),
-	/* ! ? */ KEYBT(0x21, 0xa7)};
-
-const KEYBT SWISS_FRENCH_LOCALE[] = {
-    /* § °*/	KEYBT(0xa7, 0xb0),
-    /* 1 +*/	KEYBT(0x31, 0x2b),
-    /* 2 "*/    KEYBT(0x32, 0x22),
-    /* 3 **/	KEYBT(0x33, 0x2a),
-    /* 4 ç*/    KEYBT(0x34, 0xe7),
-    /* 5 %*/    KEYBT(0x35, 0x25),
-    /* 6 &*/    KEYBT(0x36, 0x26),
-    /* 7 /*/    KEYBT(0x37, 0x2f),
-    /* 8 (*/    KEYBT(0x38, 0x28),
-    /* 9 )*/	KEYBT(0x39, 0x29),
-    /* 0 =*/	KEYBT(0x30, 0x3d),
-    /* ' ?*/	KEYBT(0x27, 0x5f),
-    /* ^ `*/	KEYBT(0x5e, 0x60),
-
-    /* q Q*/	KEYBT(0x71, 0x51),
-    /* w W*/	KEYBT(0x77, 0x57),
-    /* e E*/	KEYBT(0x65, 0x45),
-    /* r R*/    KEYBT(0x72, 0x52),
-    /* t T*/	KEYBT(0x74, 0x54),
-    /* z Z*/	KEYBT(0x7a, 0x5a),
-    /* u U*/	KEYBT(0x75, 0x55),
-    /* i I*/	KEYBT(0x69, 0x49),
-    /* o O*/	KEYBT(0x6f, 0x4f),
-    /* p P*/	KEYBT(0x70, 0x50),
-    /* è ü*/	KEYBT(0xe8, 0xfa),
-    /* ¨ !*/	KEYBT(0xa8 ,0x21),
-
-    /* a A*/	KEYBT(0x61, 0x41),
-    /* s S*/	KEYBT(0x73, 0x53),
-    /* d D*/	KEYBT(0x64, 0x44),
-    /* f F*/	KEYBT(0x66, 0x46),
-    /* g G*/	KEYBT(0x67, 0x47),
-    /* h H*/	KEYBT(0x68, 0x48),
-    /* j J*/	KEYBT(0x6a, 0x4a),
-    /* k K*/	KEYBT(0x6b, 0x4b),
-    /* l L*/	KEYBT(0x6c, 0x4c),
-    /* é ö*/	KEYBT(0xe9, 0xf6),
-    /* à ä*/	KEYBT(0xe0, 0xe4),
-    /* $ £*/	KEYBT(0x24, 0xa3),
-
-    /* < >*/	KEYBT(0x3c, 0x3e),
-    /* y Y*/	KEYBT(0x79, 0x59),
-    /* x X*/	KEYBT(0x78, 0x58),
-    /* c C*/	KEYBT(0x63, 0x43),
-    /* v V*/	KEYBT(0x76, 0x56),
-    /* b B*/	KEYBT(0x62, 0x42),
-    /* n N*/	KEYBT(0x6e, 0x4e),
-    /* m M*/	KEYBT(0x6d, 0x4d),
-    /* , ;*/	KEYBT(0x2c, 0x3b),
-    /* . :*/	KEYBT(0x2e, 0x3a),
-    /* - _*/	KEYBT(0x2d, 0x5f)};
-
-const KEYBT GERMAN_LOCALE[] = {
-	/* ^ ? */ KEYBT(0x5f, 0xb0),
-	/* 1 ! */ KEYBT(0x31, 0x21),
-	/* 2 " */ KEYBT(0x32, 0x22),
-	/* 3 § */ KEYBT(0x33, 0xa7),
-	/* 4 $ */ KEYBT(0x34, 0x24),
-	/* 5 % */ KEYBT(0x35, 0x25),
-	/* 6 & */ KEYBT(0x36, 0x26),
-	/* 7 / */ KEYBT(0x37, 0x2f),
-	/* 8 ( */ KEYBT(0x38, 0x28),
-	/* 9 ) */ KEYBT(0x39, 0x29),
-	/* 0 = */ KEYBT(0x30, 0x3d),
-	/* ? ? */ KEYBT(0xdf, 0x3f),
-	/* ` ? */ KEYBT(0x60, 0xb4),
-
-	/* q Q */ KEYBT(0x71, 0x51),
-	/* w W */ KEYBT(0x77, 0x57),
-	/* e E */ KEYBT(0x65, 0x45),
-	/* r R */ KEYBT(0x72, 0x52),
-	/* t T */ KEYBT(0x74, 0x54),
-	/* z Z */ KEYBT(0x7a, 0x5a),
-	/* u U */ KEYBT(0x75, 0x55),
-	/* i I */ KEYBT(0x69, 0x49),
-	/* o O */ KEYBT(0x6f, 0x4f),
-	/* p P */ KEYBT(0x70, 0x50),
-	/* ? ? */ KEYBT(0xfc, 0xdc),
-	/* + * */ KEYBT(0x2b, 0x2a),
-
-	/* a A */ KEYBT(0x61, 0x41),
-	/* s S */ KEYBT(0x73, 0x53),
-	/* d D */ KEYBT(0x64, 0x44),
-	/* f F */ KEYBT(0x66, 0x46),
-	/* g G */ KEYBT(0x67, 0x47),
-	/* h H */ KEYBT(0x68, 0x48),
-	/* j J */ KEYBT(0x6a, 0x4a),
-	/* k K */ KEYBT(0x6b, 0x4b),
-	/* l L */ KEYBT(0x6c, 0x4c),
-	/* ? ? */ KEYBT(0xf6, 0xd6),
-	/* ? ? */ KEYBT(0xe4, 0xc4),
-	/* ' # */ KEYBT(0x27, 0x23),
-
-	/* y Y */ KEYBT(0x79, 0x59),
-	/* x X */ KEYBT(0x78, 0x58),
-	/* c C */ KEYBT(0x63, 0x43),
-	/* v V */ KEYBT(0x76, 0x56),
-	/* b B */ KEYBT(0x62, 0x42),
-	/* n N */ KEYBT(0x6e, 0x4e),
-	/* m M */ KEYBT(0x6d, 0x4d),
-	/* , ; */ KEYBT(0x2c, 0x3b),
-	/* . : */ KEYBT(0x2e, 0x3a),
-	/* _ - */ KEYBT(0x5f, 0x2d)};
-
-
+	/* Ј і */ KEYBTDECL(0x451, 0x401, true),
+	/* 1 ! */ KEYBTDECL(0x31, 0x21, false),
+	/* 2 " */ KEYBTDECL(0x32, 0x5c, false),
+	/* 3 ? */ KEYBTDECL(0x33, 0x2116, false),
+	/* 4 ; */ KEYBTDECL(0x34, 0x3b, false),
+	/* 5 % */ KEYBTDECL(0x35, 0x25, false),
+	/* 6 : */ KEYBTDECL(0x36, 0x3a, false),
+	/* 7 ? */ KEYBTDECL(0x37, 0x3f, false),
+	/* 8 * */ KEYBTDECL(0x38, 0x2a, false),
+	/* 9 ( */ KEYBTDECL(0x39, 0x28, false),
+	/* 0 ) */ KEYBTDECL(0x30, 0x29, false),
+	/* - _ */ KEYBTDECL(0x2d, 0x4f, false),
+	/* = + */ KEYBTDECL(0x3d, 0x2b, false),
+
+	/* К к */ KEYBTDECL(0x439, 0x419, true),
+	/* Г г */ KEYBTDECL(0x446, 0x426, true),
+	/* Х х */ KEYBTDECL(0x443, 0x423, true),
+	/* Л л */ KEYBTDECL(0x43a, 0x41a, true),
+	/* Е е */ KEYBTDECL(0x435, 0x415, true),
+	/* О о */ KEYBTDECL(0x43d, 0x41d, true),
+	/* З з */ KEYBTDECL(0x433, 0x413, true),
+	/* Ы ы */ KEYBTDECL(0x448, 0x428, true),
+	/* Э э */ KEYBTDECL(0x449, 0x429, true),
+	/* Ъ ъ */ KEYBTDECL(0x437, 0x417, true),
+	/* И и */ KEYBTDECL(0x445, 0x425, true),
+	/* Я я */ KEYBTDECL(0x44a, 0x42a, true),
+
+	/* Ж ж */ KEYBTDECL(0x444, 0x424, true),
+	/* Щ щ */ KEYBTDECL(0x44b, 0x42b, true),
+	/* Ч ч */ KEYBTDECL(0x432, 0x412, true),
+	/* Б б */ KEYBTDECL(0x430, 0x410, true),
+	/* Р р */ KEYBTDECL(0x43f, 0x41f, true),
+	/* Т т */ KEYBTDECL(0x440, 0x420, true),
+	/* П п */ KEYBTDECL(0x43e, 0x41e, true),
+	/* М м */ KEYBTDECL(0x43b, 0x41b, true),
+	/* Д д */ KEYBTDECL(0x434, 0x414, true),
+	/* Ц ц */ KEYBTDECL(0x436, 0x416, true),
+	/* Ь ь */ KEYBTDECL(0x44d, 0x42d, true),
+	/* \ / */ KEYBTDECL(0x5c, 0x2f, false),
+
+	/* С с */ KEYBTDECL(0x44f, 0x42f, true),
+	/* Ю ю */ KEYBTDECL(0x447, 0x427, true),
+	/* У у */ KEYBTDECL(0x441, 0x421, true),
+	/* Н н */ KEYBTDECL(0x43c, 0x41c, true),
+	/* Й й */ KEYBTDECL(0x438, 0x418, true),
+	/* Ф ф */ KEYBTDECL(0x442, 0x422, true),
+	/* Ш ш */ KEYBTDECL(0x44c, 0x42c, true),
+	/* В в */ KEYBTDECL(0x431, 0x411, true),
+	/* А а */ KEYBTDECL(0x44e, 0x42e, true),
+	/* . , */ KEYBTDECL(0x2e, 0x2c, false)};
+
+KEYBT ENGLISH_LOCALE[] = {
+	/* ` ~ */ KEYBTDECL(0x60, 0x7e, false),
+	/* 1 ! */ KEYBTDECL(0x31, 0x21, false),
+	/* 2 @ */ KEYBTDECL(0x32, 0x40, false),
+	/* 3 # */ KEYBTDECL(0x33, 0x23, false),
+	/* 4 $ */ KEYBTDECL(0x34, 0x24, false),
+	/* 5 % */ KEYBTDECL(0x35, 0x25, false),
+	/* 6 ^ */ KEYBTDECL(0x36, 0x5e, false),
+	/* 7 & */ KEYBTDECL(0x37, 0x26, false),
+	/* 8 * */ KEYBTDECL(0x38, 0x2a, false),
+	/* 9 ( */ KEYBTDECL(0x39, 0x28, false),
+	/* 0 ) */ KEYBTDECL(0x30, 0x29, false),
+	/* - _ */ KEYBTDECL(0x2d, 0x5f, false),
+	/* = + */ KEYBTDECL(0x3d, 0x2b, false),
+
+	/* q Q */ KEYBTDECL(0x71, 0x51, true),
+	/* w W */ KEYBTDECL(0x77, 0x57, true),
+	/* e E */ KEYBTDECL(0x65, 0x45, true),
+	/* r R */ KEYBTDECL(0x72, 0x52, true),
+	/* t T */ KEYBTDECL(0x74, 0x54, true),
+	/* y Y */ KEYBTDECL(0x79, 0x59, true),
+	/* u U */ KEYBTDECL(0x75, 0x55, true),
+	/* i I */ KEYBTDECL(0x69, 0x49, true),
+	/* o O */ KEYBTDECL(0x6f, 0x4f, true),
+	/* p P */ KEYBTDECL(0x70, 0x50, true),
+	/* [ { */ KEYBTDECL(0x5b, 0x7b, false),
+	/* ] } */ KEYBTDECL(0x5d, 0x7d, false),
+
+	/* a A */ KEYBTDECL(0x61, 0x41, true),
+	/* s S */ KEYBTDECL(0x73, 0x53, true),
+	/* d D */ KEYBTDECL(0x64, 0x44, true),
+	/* f F */ KEYBTDECL(0x66, 0x46, true),
+	/* g G */ KEYBTDECL(0x67, 0x47, true),
+	/* h H */ KEYBTDECL(0x68, 0x48, true),
+	/* j J */ KEYBTDECL(0x6a, 0x4a, true),
+	/* k K */ KEYBTDECL(0x6b, 0x4b, true),
+	/* l L */ KEYBTDECL(0x6c, 0x4c, true),
+	/* ; : */ KEYBTDECL(0x3b, 0x3a, false),
+	/* ' " */ KEYBTDECL(0x27, 0x22, false),
+	/* \ | */ KEYBTDECL(0x5c, 0x7c, false),
+
+	/* z Z */ KEYBTDECL(0x7a, 0x5a, true),
+	/* x X */ KEYBTDECL(0x78, 0x58, true),
+	/* c C */ KEYBTDECL(0x63, 0x43, true),
+	/* v V */ KEYBTDECL(0x76, 0x56, true),
+	/* b B */ KEYBTDECL(0x62, 0x42, true),
+	/* n N */ KEYBTDECL(0x6e, 0x4e, true),
+	/* m M */ KEYBTDECL(0x6d, 0x4d, true),
+	/* , < */ KEYBTDECL(0x2c, 0x3c, false),
+	/* . > */ KEYBTDECL(0x2e, 0x3e, false),
+	/* / ? */ KEYBTDECL(0x2f, 0x5f, false)};
+
+
+KEYBT FRENCH_LOCALE[] = {
+	/* ? ? */ KEYBTDECL(0xb2, 0xb2, true),
+	/* & 1 */ KEYBTDECL(0x26, 0x31, true),
+	/* ? 2 */ KEYBTDECL(0xe9, 0x32, true),
+	/* " 3 */ KEYBTDECL(0x22, 0x33, true),
+	/* ' 4 */ KEYBTDECL(0x27, 0x34, true),
+	/* ( 5 */ KEYBTDECL(0x28, 0x35, true),
+	/* - 6 */ KEYBTDECL(0x2d, 0x36, true),
+	/* ? 7 */ KEYBTDECL(0xe8, 0x37, true),
+	/* _ 8 */ KEYBTDECL(0x5f, 0x38, true),
+	/* ? 9 */ KEYBTDECL(0xe7, 0x39, true),
+	/* ? 0 */ KEYBTDECL(0xe0, 0x30, true),
+	/* ) ? */ KEYBTDECL(0x29, 0xb0, true),
+	/* = + */ KEYBTDECL(0x3d, 0x2b, true),
+
+	/* a A */ KEYBT(0x61, 0x41, true, 0, 0, 0x61, 0x41, 0xe2, 0xc2, 0xe4, 0xc4),
+	/* z Z */ KEYBTDECL(0x7a, 0x5a, true),
+	/* e E */ KEYBT(0x65, 0x45, true, 0, 0, 0x65, 0x45, 0xea, 0xca, 0xeb, 0xcb),
+	/* r R */ KEYBTDECL(0x72, 0x52, true),
+	/* t T */ KEYBTDECL(0x74, 0x54, true),
+	/* y Y */ KEYBT(0x79, 0x59, true, 0, 0, 0x79, 0x59, 0, 0, 0xff),
+	/* u U */ KEYBT(0x75, 0x55, true, 0, 0, 0x75, 0x55, 0xfb, 0xdb, 0xfc, 0xdc),
+	/* i I */ KEYBT(0x69, 0x49, true, 0, 0, 0x69, 0x49, 0xee, 0xce, 0xef, 0xcf),
+	/* o O */ KEYBT(0x6f, 0x4f, true, 0, 0, 0x6f, 0x4f, 0xf4, 0xd4, 0xf6, 0xd6),
+	/* p P */ KEYBTDECL(0x70, 0x50, true),
+	/* ^ ? */ KEYBT(0x5e, 0xa8, true, 1, 2, 0x5e, 0xa8),
+	/* $ ? } */ KEYBTDECL(0x24, 0xa3, true),
+
+	/* q Q */ KEYBTDECL(0x71, 0x51, true),
+	/* s S */ KEYBTDECL(0x73, 0x53, true),
+	/* d D */ KEYBTDECL(0x64, 0x44, true),
+	/* f F */ KEYBTDECL(0x66, 0x46, true),
+	/* g G */ KEYBTDECL(0x67, 0x47, true),
+	/* h H */ KEYBTDECL(0x68, 0x48, true),
+	/* j J */ KEYBTDECL(0x6a, 0x4a, true),
+	/* k K */ KEYBTDECL(0x6b, 0x4b, true),
+	/* l L */ KEYBTDECL(0x6c, 0x4c, true),
+	/* m M */ KEYBTDECL(0x6d, 0x4d, true),
+	/* ? % */ KEYBTDECL(0xf9, 0x25, true),
+	/* * ? */ KEYBTDECL(0x2a, 0xb5, true),
+
+	/* w W */ KEYBTDECL(0x77, 0x57, true),
+	/* x X */ KEYBTDECL(0x78, 0x58, true),
+	/* c C */ KEYBTDECL(0x63, 0x43, true),
+	/* v V */ KEYBTDECL(0x76, 0x56, true),
+	/* b B */ KEYBTDECL(0x62, 0x42, true),
+	/* n N */ KEYBTDECL(0x6e, 0x4e, true),
+	/* , ? */ KEYBTDECL(0x2c, 0x3f, true),
+	/* ; . */ KEYBTDECL(0x3b, 0x2e, true),
+	/* : / */ KEYBTDECL(0x3a, 0x2f, true),
+	/* ! ? */ KEYBTDECL(0x21, 0xa7, true)};
+
+KEYBT SWISS_FRENCH_LOCALE[] = {
+    /* § °*/	KEYBTDECL(0xa7, 0xb0, false),
+    /* 1 +*/	KEYBTDECL(0x31, 0x2b, false),
+    /* 2 "*/    KEYBTDECL(0x32, 0x22, false),
+    /* 3 **/	KEYBTDECL(0x33, 0x2a, false),
+    /* 4 ç*/    KEYBTDECL(0x34, 0xe7, false),
+    /* 5 %*/    KEYBTDECL(0x35, 0x25, false),
+    /* 6 &*/    KEYBTDECL(0x36, 0x26, false),
+    /* 7 /*/    KEYBTDECL(0x37, 0x2f, false),
+    /* 8 (*/    KEYBTDECL(0x38, 0x28, false),
+    /* 9 )*/	KEYBTDECL(0x39, 0x29, false),
+    /* 0 =*/	KEYBTDECL(0x30, 0x3d, false),
+    /* ' ?*/	KEYBTDECL(0x27, 0x5f, false),
+    /* ^ `*/	KEYBT(0x5e, 0x60, false, 1, 2, 0x5e, 0x60),
+
+    /* q Q*/	KEYBTDECL(0x71, 0x51, true),
+    /* w W*/	KEYBTDECL(0x77, 0x57, true),
+    /* e E*/	KEYBT(0x65, 0x45, true, 0, 0, 0x65, 0x45, 0xea, 0xca, 0xe8, 0xc8, 0xeb, 0xcb),
+    /* r R*/    KEYBTDECL(0x72, 0x52, true),
+    /* t T*/	KEYBTDECL(0x74, 0x54, true),
+    /* z Z*/	KEYBTDECL(0x7a, 0x5a, true),
+    /* u U*/	KEYBT(0x75, 0x55, true, 0, 0, 0x75, 0x55, 0xfb, 0xdb, 0xf9, 0xd9, 0xfc, 0xdc),
+    /* i I*/	KEYBT(0x69, 0x49, true, 0, 0, 0x69, 0x49, 0xee, 0xce, 0xec, 0xcc, 0xef, 0xcf),
+    /* o O*/	KEYBT(0x6f, 0x4f, true, 0, 0, 0x6f, 0x4f, 0xf4, 0xd4, 0xf2, 0xd2, 0xf6, 0xd6),
+    /* p P*/	KEYBTDECL(0x70, 0x50, true),
+    /* è ü*/	KEYBTDECL(0xe8, 0xfa, false),
+    /* ¨ !*/	KEYBT(0xa8, 0x21, false, 3, 0, 0xa8, 0x21),
+
+    /* a A*/	KEYBT(0x61, 0x41, true, 0, 0, 0x61, 0x41, 0xe2, 0xc2, 0xe0, 0xc0, 0xe4, 0xc4),
+    /* s S*/	KEYBTDECL(0x73, 0x53, true),
+    /* d D*/	KEYBTDECL(0x64, 0x44, true),
+    /* f F*/	KEYBTDECL(0x66, 0x46, true),
+    /* g G*/	KEYBTDECL(0x67, 0x47, true),
+    /* h H*/	KEYBTDECL(0x68, 0x48, true),
+    /* j J*/	KEYBTDECL(0x6a, 0x4a, true),
+    /* k K*/	KEYBTDECL(0x6b, 0x4b, true),
+    /* l L*/	KEYBTDECL(0x6c, 0x4c, true),
+    /* é ö*/	KEYBTDECL(0xe9, 0xf6, false),
+    /* à ä*/	KEYBTDECL(0xe0, 0xe4, false),
+    /* $ £*/	KEYBTDECL(0x24, 0xa3, false),
+
+    /* < >*/	KEYBTDECL(0x3c, 0x3e, false),
+    /* y Y*/	KEYBT(0x79, 0x59, true, 0, 0, 0x79, 0x59, 0, 0, 0, 0, 0xff),
+    /* x X*/	KEYBTDECL(0x78, 0x58, true),
+    /* c C*/	KEYBTDECL(0x63, 0x43, true),
+    /* v V*/	KEYBTDECL(0x76, 0x56, true),
+    /* b B*/	KEYBTDECL(0x62, 0x42, true),
+    /* n N*/	KEYBTDECL(0x6e, 0x4e, true),
+    /* m M*/	KEYBTDECL(0x6d, 0x4d, true),
+    /* , ;*/	KEYBTDECL(0x2c, 0x3b, false),
+    /* . :*/	KEYBTDECL(0x2e, 0x3a, false),
+    /* - _*/	KEYBTDECL(0x2d, 0x5f, false)};
+
+
+KEYBT GERMAN_LOCALE[] = {
+	/* ^ ? */ KEYBTDECL(0x5f, 0xb0, false),
+	/* 1 ! */ KEYBTDECL(0x31, 0x21, true),
+	/* 2 " */ KEYBTDECL(0x32, 0x22, true),
+	/* 3 § */ KEYBTDECL(0x33, 0xa7, true),
+	/* 4 $ */ KEYBTDECL(0x34, 0x24, true),
+	/* 5 % */ KEYBTDECL(0x35, 0x25, true),
+	/* 6 & */ KEYBTDECL(0x36, 0x26, true),
+	/* 7 / */ KEYBTDECL(0x37, 0x2f, true),
+	/* 8 ( */ KEYBTDECL(0x38, 0x28, true),
+	/* 9 ) */ KEYBTDECL(0x39, 0x29, true),
+	/* 0 = */ KEYBTDECL(0x30, 0x3d, true),
+	/* ? ? */ KEYBTDECL(0xdf, 0x3f, true),
+	/* ` ? */ KEYBTDECL(0x60, 0xb4, false),
+
+	/* q Q */ KEYBTDECL(0x71, 0x51, true),
+	/* w W */ KEYBTDECL(0x77, 0x57, true),
+	/* e E */ KEYBTDECL(0x65, 0x45, true),
+	/* r R */ KEYBTDECL(0x72, 0x52, true),
+	/* t T */ KEYBTDECL(0x74, 0x54, true),
+	/* z Z */ KEYBTDECL(0x7a, 0x5a, true),
+	/* u U */ KEYBTDECL(0x75, 0x55, true),
+	/* i I */ KEYBTDECL(0x69, 0x49, true),
+	/* o O */ KEYBTDECL(0x6f, 0x4f, true),
+	/* p P */ KEYBTDECL(0x70, 0x50, true),
+	/* ? ? */ KEYBTDECL(0xfc, 0xdc, true),
+	/* + * */ KEYBTDECL(0x2b, 0x2a, true),
+
+	/* a A */ KEYBTDECL(0x61, 0x41, true),
+	/* s S */ KEYBTDECL(0x73, 0x53, true),
+	/* d D */ KEYBTDECL(0x64, 0x44, true),
+	/* f F */ KEYBTDECL(0x66, 0x46, true),
+	/* g G */ KEYBTDECL(0x67, 0x47, true),
+	/* h H */ KEYBTDECL(0x68, 0x48, true),
+	/* j J */ KEYBTDECL(0x6a, 0x4a, true),
+	/* k K */ KEYBTDECL(0x6b, 0x4b, true),
+	/* l L */ KEYBTDECL(0x6c, 0x4c, true),
+	/* ? ? */ KEYBTDECL(0xf6, 0xd6, true),
+	/* ? ? */ KEYBTDECL(0xe4, 0xc4, true),
+	/* ' # */ KEYBTDECL(0x27, 0x23, true),
+
+	/* y Y */ KEYBTDECL(0x79, 0x59, true),
+	/* x X */ KEYBTDECL(0x78, 0x58, true),
+	/* c C */ KEYBTDECL(0x63, 0x43, true),
+	/* v V */ KEYBTDECL(0x76, 0x56, true),
+	/* b B */ KEYBTDECL(0x62, 0x42, true),
+	/* n N */ KEYBTDECL(0x6e, 0x4e, true),
+	/* m M */ KEYBTDECL(0x6d, 0x4d, true),
+	/* , ; */ KEYBTDECL(0x2c, 0x3b, true),
+	/* . : */ KEYBTDECL(0x2e, 0x3a, true),
+	/* _ - */ KEYBTDECL(0x5f, 0x2d, false)};
 
 void UBPlatformUtils::initializeKeyboardLayouts()
 {
 	nKeyboardLayouts = 5;
 	keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts];
-	keyboardLayouts[0] = new UBKeyboardLocale("English", "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE);
-	keyboardLayouts[1] = new UBKeyboardLocale("Russian", "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE);
-	keyboardLayouts[2] = new UBKeyboardLocale("French", "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE);
-    keyboardLayouts[3] = new UBKeyboardLocale("Swiss French", "fr", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE);
-	keyboardLayouts[4] = new UBKeyboardLocale("German", "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE);    
+    keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE);
+    keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE);
+    keyboardLayouts[2] = new UBKeyboardLocale(tr("French"), "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE);
+    keyboardLayouts[3] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE);
+    keyboardLayouts[4] = new UBKeyboardLocale(tr("German"), "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE);
 }
 
 void UBPlatformUtils::destroyKeyboardLayouts()
diff --git a/Sankore-3.1/src/frameworks/UBStringUtils.cpp b/Sankore-3.1/src/frameworks/UBStringUtils.cpp
index 8005b28..f4c0d14 100644
--- a/Sankore-3.1/src/frameworks/UBStringUtils.cpp
+++ b/Sankore-3.1/src/frameworks/UBStringUtils.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBStringUtils.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/frameworks/UBStringUtils.h b/Sankore-3.1/src/frameworks/UBStringUtils.h
index 581332d..9082220 100644
--- a/Sankore-3.1/src/frameworks/UBStringUtils.h
+++ b/Sankore-3.1/src/frameworks/UBStringUtils.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBSTRINGUTILS_H
 #define UBSTRINGUTILS_H
 
diff --git a/Sankore-3.1/src/frameworks/UBVersion.cpp b/Sankore-3.1/src/frameworks/UBVersion.cpp
index 42649f5..ea89a77 100644
--- a/Sankore-3.1/src/frameworks/UBVersion.cpp
+++ b/Sankore-3.1/src/frameworks/UBVersion.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBVersion.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/frameworks/UBVersion.h b/Sankore-3.1/src/frameworks/UBVersion.h
index e5d25be..4931776 100644
--- a/Sankore-3.1/src/frameworks/UBVersion.h
+++ b/Sankore-3.1/src/frameworks/UBVersion.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBVERSION_H_
 #define UBVERSION_H_
 
diff --git a/Sankore-3.1/src/frameworks/frameworks.pri b/Sankore-3.1/src/frameworks/frameworks.pri
index 4a53c6a..74d6edb 100644
--- a/Sankore-3.1/src/frameworks/frameworks.pri
+++ b/Sankore-3.1/src/frameworks/frameworks.pri
@@ -26,7 +26,7 @@ win32 {
 
 macx {                
 
-    SOURCES  += src/frameworks/UBPlatformUtils_mac.mm
+    OBJECTIVE_SOURCES  += src/frameworks/UBPlatformUtils_mac.mm
                 
 }       
 
diff --git a/Sankore-3.1/src/globals/UBGlobals.h b/Sankore-3.1/src/globals/UBGlobals.h
index 93ebcb8..fd77d80 100644
--- a/Sankore-3.1/src/globals/UBGlobals.h
+++ b/Sankore-3.1/src/globals/UBGlobals.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGLOBALS_H
 #define UBGLOBALS_H
 
diff --git a/Sankore-3.1/src/gui/UBActionPalette.cpp b/Sankore-3.1/src/gui/UBActionPalette.cpp
index 96d9395..5bb90a2 100644
--- a/Sankore-3.1/src/gui/UBActionPalette.cpp
+++ b/Sankore-3.1/src/gui/UBActionPalette.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBActionPalette.h"
 
 #include "core/memcheck.h"
@@ -231,7 +238,6 @@ void UBActionPalette::mouseReleaseEvent(QMouseEvent * event)
 
 void UBActionPalette::actionChanged()
 {
-    emit itemOnActionPaletteChanged();
     for(int i = 0; i < mActions.length() && i < mButtons.length(); i++)
     {
         mButtons.at(i)->setVisible(mActions.at(i)->isVisible());
diff --git a/Sankore-3.1/src/gui/UBActionPalette.h b/Sankore-3.1/src/gui/UBActionPalette.h
index 5e5604a..cf51704 100644
--- a/Sankore-3.1/src/gui/UBActionPalette.h
+++ b/Sankore-3.1/src/gui/UBActionPalette.h
@@ -1,10 +1,25 @@
 /*
- * UBActionPalette.h
+ * Copyright (C) 2012 Webdoc SA
  *
- *  Created on: 8 oct. 2009
- *      Author: Luc
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBACTIONPALETTE_H_
 #define UBACTIONPALETTE_H_
 
@@ -61,7 +76,6 @@ class UBActionPalette : public UBFloatingPalette
         void closed();
         void buttonGroupClicked(int id);
         void customMouseReleased();
-        void itemOnActionPaletteChanged();
 
     protected:
         virtual void paintEvent(QPaintEvent *event);
diff --git a/Sankore-3.1/src/gui/UBBlackoutWidget.cpp b/Sankore-3.1/src/gui/UBBlackoutWidget.cpp
index f48c3f9..2475c5e 100644
--- a/Sankore-3.1/src/gui/UBBlackoutWidget.cpp
+++ b/Sankore-3.1/src/gui/UBBlackoutWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 
 #include "UBBlackoutWidget.h"
diff --git a/Sankore-3.1/src/gui/UBBlackoutWidget.h b/Sankore-3.1/src/gui/UBBlackoutWidget.h
index 23456de..ab62bb8 100644
--- a/Sankore-3.1/src/gui/UBBlackoutWidget.h
+++ b/Sankore-3.1/src/gui/UBBlackoutWidget.h
@@ -1,16 +1,22 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp b/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp
index ada7f78..ea7e2f9 100644
--- a/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp
+++ b/Sankore-3.1/src/gui/UBCachePropertiesWidget.cpp
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include <QColor>
 #include <QPainter>
 #include <QPixmap>
diff --git a/Sankore-3.1/src/gui/UBCachePropertiesWidget.h b/Sankore-3.1/src/gui/UBCachePropertiesWidget.h
index 98ad9ec..edc8cbe 100644
--- a/Sankore-3.1/src/gui/UBCachePropertiesWidget.h
+++ b/Sankore-3.1/src/gui/UBCachePropertiesWidget.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBCACHEPROPERTIESWIDGET_H
 #define UBCACHEPROPERTIESWIDGET_H
 
diff --git a/Sankore-3.1/src/gui/UBCircleFrame.cpp b/Sankore-3.1/src/gui/UBCircleFrame.cpp
index bff99d4..02c14b6 100644
--- a/Sankore-3.1/src/gui/UBCircleFrame.cpp
+++ b/Sankore-3.1/src/gui/UBCircleFrame.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBCircleFrame.h"
 #include "core/memcheck.h"
 
diff --git a/Sankore-3.1/src/gui/UBCircleFrame.h b/Sankore-3.1/src/gui/UBCircleFrame.h
index 2173bf4..1153c83 100644
--- a/Sankore-3.1/src/gui/UBCircleFrame.h
+++ b/Sankore-3.1/src/gui/UBCircleFrame.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBCIRCLEFRAME_H_
 #define UBCIRCLEFRAME_H_
 
diff --git a/Sankore-3.1/src/gui/UBClockPalette.h b/Sankore-3.1/src/gui/UBClockPalette.h
index 83eb237..ddb46b0 100644
--- a/Sankore-3.1/src/gui/UBClockPalette.h
+++ b/Sankore-3.1/src/gui/UBClockPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBCLOCKPALLETTE_H_
 #define UBCLOCKPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBColorPicker.cpp b/Sankore-3.1/src/gui/UBColorPicker.cpp
index a7f6dd7..4ff6791 100644
--- a/Sankore-3.1/src/gui/UBColorPicker.cpp
+++ b/Sankore-3.1/src/gui/UBColorPicker.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBColorPicker.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBColorPicker.h b/Sankore-3.1/src/gui/UBColorPicker.h
index f4d0106..6aa3616 100644
--- a/Sankore-3.1/src/gui/UBColorPicker.h
+++ b/Sankore-3.1/src/gui/UBColorPicker.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBCOLORPICKER_H_
 #define UBCOLORPICKER_H_
 
diff --git a/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp b/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp
index a09ab96..505bd2c 100644
--- a/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDockDownloadWidget.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBDockDownloadWidget.h"
 #include "core/UBApplication.h"
 
diff --git a/Sankore-3.1/src/gui/UBDockDownloadWidget.h b/Sankore-3.1/src/gui/UBDockDownloadWidget.h
index 1273896..c887192 100644
--- a/Sankore-3.1/src/gui/UBDockDownloadWidget.h
+++ b/Sankore-3.1/src/gui/UBDockDownloadWidget.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBDOCKDOWNLOADWIDGET_H
 #define UBDOCKDOWNLOADWIDGET_H
 
diff --git a/Sankore-3.1/src/gui/UBDockPalette.cpp b/Sankore-3.1/src/gui/UBDockPalette.cpp
index 9b15783..479b658 100644
--- a/Sankore-3.1/src/gui/UBDockPalette.cpp
+++ b/Sankore-3.1/src/gui/UBDockPalette.cpp
@@ -1,83 +1,98 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <QPoint>
 #include <QPointF>
 #include <QPainterPath>
 
 #include "UBDockPalette.h"
-#include "core/UBSettings.h"
+
 #include "frameworks/UBPlatformUtils.h"
+
+#include "core/UBSettings.h"
 #include "core/UBApplication.h"
 #include "core/UBPreferencesController.h"
 #include "core/UBDownloadManager.h"
 
+#include "board/UBBoardController.h"
+
 #include "core/memcheck.h"
 
 /**
  * \brief The constructor
  */
 UBDockPalette::UBDockPalette(eUBDockPaletteType paletteType, QWidget *parent, const char *name)
-    :QWidget(parent, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint)
-    , mOrientation(eUBDockOrientation_Left)
-    , mPreferredWidth(100)
-    , mPreferredHeight(100)
-    , mCanResize(false)
-    , mResized(false)
-    , mCollapseWidth(150)
-    , mLastWidth(-1)
-    , mHTab(0)
-    , mpStackWidget(NULL)
-    , mpLayout(NULL)
-    , mCurrentTab(0)
-    , mPaletteType(paletteType)
-    , mTabPalette(new UBTabDockPalette(this, parent))
-{
-    setObjectName(name);
-
-    mpLayout = new QVBoxLayout();
-    setLayout(mpLayout);
-
-    mpStackWidget = new QStackedWidget(this);
-    mpLayout->addWidget(mpStackWidget);
-
-    // clear the tab widgets
-    mTabWidgets.clear();
-
-    // We let 2 pixels in order to keep a small border for the resizing
-    setMinimumWidth(0);
-
-    if (parent)
-    {
-        setAttribute(Qt::WA_NoMousePropagation);
-        setAttribute(Qt::WA_TranslucentBackground);
-    }
-    else
-    {
-        // standalone window
-        setAttribute(Qt::WA_TranslucentBackground);
-    }
-
-    mBackgroundBrush = QBrush(UBSettings::paletteColor);
-
-    // This is the only way to set the background as transparent!
-    setStyleSheet("QWidget {background-color: transparent}");
-
-    // Set the position of the tab
-    onToolbarPosUpdated();
-    connect(UBSettings::settings()->appToolBarPositionedAtTop, SIGNAL(changed(QVariant)), this, SLOT(onToolbarPosUpdated()));
-    connect(UBDownloadManager::downloadManager(), SIGNAL(allDownloadsFinished()), this, SLOT(onAllDownloadsFinished()));
+:QWidget(parent, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint)
+, mCurrentMode(eUBDockPaletteWidget_BOARD)
+, mOrientation(eUBDockOrientation_Left)
+, mPreferredWidth(100)
+, mPreferredHeight(100)
+, mCanResize(false)
+, mResized(false)
+, mCollapseWidth(150)
+, mLastWidth(-1)
+, mHTab(0)
+, mpStackWidget(NULL)
+, mpLayout(NULL)
+, mCurrentTab(0)
+, mPaletteType(paletteType)
+, mTabPalette(new UBTabDockPalette(this, parent))
+{
+	setObjectName(name);
+
+	mpLayout = new QVBoxLayout();
+	setLayout(mpLayout);
+
+	mpStackWidget = new QStackedWidget(this);
+	mpLayout->addWidget(mpStackWidget);
+
+	// clear the tab widgets
+	mTabWidgets.clear();
+
+	// We let 2 pixels in order to keep a small border for the resizing
+	setMinimumWidth(0);
+
+	if (parent)
+	{
+		setAttribute(Qt::WA_NoMousePropagation);
+		setAttribute(Qt::WA_TranslucentBackground);
+	}
+	else
+	{
+		// standalone window
+		setAttribute(Qt::WA_TranslucentBackground);
+	}
+
+	mBackgroundBrush = QBrush(UBSettings::paletteColor);
+
+	// This is the only way to set the background as transparent!
+	setStyleSheet("QWidget {background-color: transparent}");
+
+	// Set the position of the tab
+	onToolbarPosUpdated();
+	connect(UBSettings::settings()->appToolBarPositionedAtTop, SIGNAL(changed(QVariant)), this, SLOT(onToolbarPosUpdated()));
+	connect(UBDownloadManager::downloadManager(), SIGNAL(allDownloadsFinished()), this, SLOT(onAllDownloadsFinished()));
+
+	connect(UBApplication::boardController,SIGNAL(documentSet(UBDocumentProxy*)),this,SLOT(onDocumentSet(UBDocumentProxy*)));
 }
 
 /**
@@ -85,20 +100,21 @@ UBDockPalette::UBDockPalette(eUBDockPaletteType paletteType, QWidget *parent, co
  */
 UBDockPalette::~UBDockPalette()
 {
-    if(NULL != mpStackWidget)
-    {
-        delete mpStackWidget;
-        mpStackWidget = NULL;
-    }
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-    if (NULL != mTabPalette) {
-        delete mTabPalette;
-        mTabPalette = NULL;
-    }
+	if(NULL != mpStackWidget)
+	{
+		delete mpStackWidget;
+		mpStackWidget = NULL;
+	}
+	if(NULL != mpLayout)
+	{
+		delete mpLayout;
+		mpLayout = NULL;
+	}
+}
+
+void UBDockPalette::onDocumentSet(UBDocumentProxy* documentProxy)
+{
+	Q_UNUSED(documentProxy);
 }
 
 /**
@@ -107,7 +123,7 @@ UBDockPalette::~UBDockPalette()
  */
 eUBDockOrientation UBDockPalette::orientation()
 {
-    return mOrientation;
+	return mOrientation;
 }
 
 /**
@@ -116,19 +132,19 @@ eUBDockOrientation UBDockPalette::orientation()
  */
 void UBDockPalette::setOrientation(eUBDockOrientation orientation)
 {
-    // Set the size
-    mOrientation = orientation;
+	// Set the size
+	mOrientation = orientation;
 
-    if(orientation == eUBDockOrientation_Left || orientation == eUBDockOrientation_Right)
-    {
-	setMaximumHeight(parentWidget()->height());
-	setMinimumHeight(maximumHeight());
-    }
-    else if(orientation == eUBDockOrientation_Top || orientation == eUBDockOrientation_Bottom)
-    {
-	setMaximumWidth(parentWidget()->width());
-	setMinimumWidth(maximumWidth());
-    }
+	if(orientation == eUBDockOrientation_Left || orientation == eUBDockOrientation_Right)
+	{
+		setMaximumHeight(parentWidget()->height());
+		setMinimumHeight(maximumHeight());
+	}
+	else if(orientation == eUBDockOrientation_Top || orientation == eUBDockOrientation_Bottom)
+	{
+		setMaximumWidth(parentWidget()->width());
+		setMinimumWidth(maximumWidth());
+	}
 }
 
 /**
@@ -137,32 +153,32 @@ void UBDockPalette::setOrientation(eUBDockOrientation orientation)
  */
 void UBDockPalette::resizeEvent(QResizeEvent *event)
 {
-    Q_UNUSED(event);
-    updateMaxWidth();
-    if(parentWidget())
-    {
-        setMinimumHeight(parentWidget()->height());
-    }
+	Q_UNUSED(event);
+	updateMaxWidth();
+	if(parentWidget())
+	{
+		setMinimumHeight(parentWidget()->height());
+	}
 	// Set the position
-    QPoint origin;
-    switch(mOrientation)
-    {
-    case eUBDockOrientation_Right:
+	QPoint origin;
+	switch(mOrientation)
+	{
+	case eUBDockOrientation_Right:
 		origin.setX(parentWidget()->width() - this->width());
 		origin.setY(0);
-	break;
-    case eUBDockOrientation_Bottom:
-	// Not supported yet
-    case eUBDockOrientation_Top:
-	// Not supported yet
-    case eUBDockOrientation_Left:
-    default:
-	origin.setX(0);
-	origin.setY(0);
-	break;
-    }
-    move(origin.x(), origin.y());
-    moveTabs();
+		break;
+	case eUBDockOrientation_Bottom:
+		// Not supported yet
+	case eUBDockOrientation_Top:
+		// Not supported yet
+	case eUBDockOrientation_Left:
+	default:
+		origin.setX(0);
+		origin.setY(0);
+		break;
+	}
+	move(origin.x(), origin.y());
+	moveTabs();
 }
 
 /**
@@ -171,9 +187,9 @@ void UBDockPalette::resizeEvent(QResizeEvent *event)
  */
 void UBDockPalette::enterEvent(QEvent *event)
 {
-    Q_UNUSED(event);
-    // We want to set the cursor as an arrow everytime it enters the palette
-    setCursor(Qt::ArrowCursor);
+	Q_UNUSED(event);
+	// We want to set the cursor as an arrow everytime it enters the palette
+	setCursor(Qt::ArrowCursor);
 }
 
 /**
@@ -182,9 +198,9 @@ void UBDockPalette::enterEvent(QEvent *event)
  */
 void UBDockPalette::leaveEvent(QEvent *event)
 {
-    Q_UNUSED(event);
-    // Restore the cursor to its previous shape
-    unsetCursor();
+	Q_UNUSED(event);
+	// Restore the cursor to its previous shape
+	unsetCursor();
 }
 
 /**
@@ -193,38 +209,38 @@ void UBDockPalette::leaveEvent(QEvent *event)
  */
 void UBDockPalette::paintEvent(QPaintEvent *event)
 {
-    Q_UNUSED(event);
-    QPainter painter(this);
-    painter.setRenderHint(QPainter::Antialiasing);
-    painter.setPen(Qt::NoPen);
-    painter.setBrush(mBackgroundBrush);
-    QPainterPath path;
-    path.setFillRule(Qt::WindingFill);
-
-    int nbTabs = mTabWidgets.size();
-    if(0 < nbTabs)
-    {
-        // First draw the BIG RECTANGLE (I write it big because the rectangle is big...)
-        if(mOrientation == eUBDockOrientation_Left)
-        {
-            path.addRect(0.0, 0.0, width(), height());
-        }
-        else if(mOrientation == eUBDockOrientation_Right)
-        {
-            path.addRect(0.0, 0.0, width(), height());
-        }
-
-        // THEN DRAW THE small tabs (yes, the tabs are small...)
-        if(eUBDockTabOrientation_Up == mTabsOrientation)
-        {
-            mHTab = border();
-        }
-        else
-        {
-            mHTab = height() - border() - nbTabs*TABSIZE - (nbTabs-1)*tabSpacing();
-        }
-        painter.drawPath(path);
-    }
+	Q_UNUSED(event);
+	QPainter painter(this);
+	painter.setRenderHint(QPainter::Antialiasing);
+	painter.setPen(Qt::NoPen);
+	painter.setBrush(mBackgroundBrush);
+	QPainterPath path;
+	path.setFillRule(Qt::WindingFill);
+
+	int nbTabs = mTabWidgets.size();
+	if(0 < nbTabs)
+	{
+		// First draw the BIG RECTANGLE (I write it big because the rectangle is big...)
+		if(mOrientation == eUBDockOrientation_Left)
+		{
+			path.addRect(0.0, 0.0, width(), height());
+		}
+		else if(mOrientation == eUBDockOrientation_Right)
+		{
+			path.addRect(0.0, 0.0, width(), height());
+		}
+
+		// THEN DRAW THE small tabs (yes, the tabs are small...)
+		if(eUBDockTabOrientation_Up == mTabsOrientation)
+		{
+			mHTab = border();
+		}
+		else
+		{
+			mHTab = height() - border() - nbTabs*TABSIZE - (nbTabs-1)*tabSpacing();
+		}
+		painter.drawPath(path);
+	}
 }
 
 /**
@@ -233,11 +249,11 @@ void UBDockPalette::paintEvent(QPaintEvent *event)
  */
 void UBDockPalette::setBackgroundBrush(const QBrush &brush)
 {
-    if (mBackgroundBrush != brush)
-    {
-	mBackgroundBrush = brush;
-	update();
-    }
+	if (mBackgroundBrush != brush)
+	{
+		mBackgroundBrush = brush;
+		update();
+	}
 }
 
 /**
@@ -246,7 +262,7 @@ void UBDockPalette::setBackgroundBrush(const QBrush &brush)
  */
 int UBDockPalette::border()
 {
-    return 15;
+	return 15;
 }
 
 /**
@@ -255,7 +271,7 @@ int UBDockPalette::border()
  */
 int UBDockPalette::radius()
 {
-    return 5;
+	return 5;
 }
 
 /**
@@ -263,7 +279,7 @@ int UBDockPalette::radius()
  */
 void UBDockPalette::updateMaxWidth()
 {
-    // Only the inherited class will overload this method
+	// Only the inherited class will overload this method
 }
 
 /**
@@ -272,7 +288,7 @@ void UBDockPalette::updateMaxWidth()
  */
 int UBDockPalette::collapseWidth()
 {
-    return mCollapseWidth;
+	return mCollapseWidth;
 }
 
 /**
@@ -280,17 +296,17 @@ int UBDockPalette::collapseWidth()
  */
 void UBDockPalette::tabClicked(int tabIndex)
 {
-    // If the current tab is not the clicked one, show its content
-    if(mCurrentTab != tabIndex)
-    {
-        showTabWidget(tabIndex);
-    }
-    // else collapse the palette
-    else
-    {
-        toggleCollapseExpand();
-    }
-    mTabPalette->update();
+	// If the current tab is not the clicked one, show its content
+	if(mCurrentTab != tabIndex)
+	{
+		showTabWidget(tabIndex);
+	}
+	// else collapse the palette
+	else
+	{
+		toggleCollapseExpand();
+	}
+	mTabPalette->update();
 }
 
 /**
@@ -299,19 +315,13 @@ void UBDockPalette::tabClicked(int tabIndex)
  */
 void UBDockPalette::showTabWidget(int tabIndex)
 {
-    mpStackWidget->setCurrentIndex(tabIndex);
-    mCurrentTab = tabIndex;
-
-    // Expand it if collapsed
-    if(mLastWidth != -1)
-    {
-        toggleCollapseExpand();
-    }
+	mpStackWidget->setCurrentIndex(tabIndex);
+	mCurrentTab = tabIndex;
 
-    // Update the current tab index
-    if(NULL != (dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex)))){
-        mCrntTabWidget = dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex))->name();
-    }
+	// Update the current tab index
+	if(NULL != (dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex)))){
+		mCrntTabWidget = dynamic_cast<UBDockPaletteWidget*>(mpStackWidget->widget(tabIndex))->name();
+	}
 
 }
 
@@ -320,19 +330,13 @@ void UBDockPalette::showTabWidget(int tabIndex)
  */
 void UBDockPalette::toggleCollapseExpand()
 {
-    if(mLastWidth == -1)
-    {
-        // The palette must be collapsed
-        mLastWidth = width();
+	if(width() < mCollapseWidth)
+		resize(mLastWidth,height());
+	else{
+		mLastWidth = width();
         update();
-        resize(0, height());
-    }
-    else
-    {
-        // The palette will be expanded
-        resize(mLastWidth, height());
-        mLastWidth = -1;
-    }
+		resize(0,height());
+	}
 }
 
 /**
@@ -341,7 +345,7 @@ void UBDockPalette::toggleCollapseExpand()
  */
 void UBDockPalette::setTabsOrientation(eUBDockTabOrientation orientation)
 {
-    mTabsOrientation = orientation;
+	mTabsOrientation = orientation;
 }
 
 /**
@@ -349,17 +353,17 @@ void UBDockPalette::setTabsOrientation(eUBDockTabOrientation orientation)
  */
 void UBDockPalette::onToolbarPosUpdated()
 {
-    // Get the position of the tab
-    if(UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
-    {
-        setTabsOrientation(eUBDockTabOrientation_Up);
-    }
-    else
-    {
-        setTabsOrientation(eUBDockTabOrientation_Down);
-    }
-    moveTabs();
-    update();
+	// Get the position of the tab
+	if(UBSettings::settings()->appToolBarPositionedAtTop->get().toBool())
+	{
+		setTabsOrientation(eUBDockTabOrientation_Up);
+	}
+	else
+	{
+		setTabsOrientation(eUBDockTabOrientation_Down);
+	}
+	moveTabs();
+	update();
 }
 
 /**
@@ -368,7 +372,7 @@ void UBDockPalette::onToolbarPosUpdated()
  */
 int UBDockPalette::customMargin()
 {
-    return 5;
+	return 5;
 }
 
 /**
@@ -377,15 +381,15 @@ int UBDockPalette::customMargin()
  */
 void UBDockPalette::addTab(UBDockPaletteWidget *widget)
 {
-    if(!mTabWidgets.contains(widget) && widget->visibleState())
-    {
-        widget->setVisible(true);
-        mTabWidgets.append(widget);
-        mpStackWidget->addWidget(widget);
-        mpStackWidget->setCurrentWidget(widget);
-        resizeTabs();
-        update();
-    }
+	if(!mTabWidgets.contains(widget) && widget->visibleState())
+	{
+		widget->setVisible(true);
+		mTabWidgets.append(widget);
+		mpStackWidget->addWidget(widget);
+		mpStackWidget->setCurrentWidget(widget);
+		resizeTabs();
+		update();
+	}
 }
 /**
  * \brief Remove the given tab
@@ -393,16 +397,16 @@ void UBDockPalette::addTab(UBDockPaletteWidget *widget)
  */
 void UBDockPalette::removeTab(UBDockPaletteWidget* widget)
 {
-    int nWidget = mTabWidgets.indexOf(widget);
-    if( nWidget >= 0 )
-    {
-        mpStackWidget->removeWidget(widget);
-        mTabWidgets.remove(nWidget);
-        widget->hide();
-        update();
-    }
-    resizeTabs();
-    mCurrentTab = qMax(mCurrentTab - 1, 0);
+	int nWidget = mTabWidgets.indexOf(widget);
+	if( nWidget >= 0 )
+	{
+		mpStackWidget->removeWidget(widget);
+		mTabWidgets.remove(nWidget);
+		widget->hide();
+		update();
+	}
+	resizeTabs();
+	mCurrentTab = qMax(mCurrentTab - 1, 0);
 }
 
 /**
@@ -411,7 +415,7 @@ void UBDockPalette::removeTab(UBDockPaletteWidget* widget)
  */
 void UBDockPalette::onResizeRequest(QResizeEvent *event)
 {
-    resizeEvent(event);
+	resizeEvent(event);
 }
 
 /**
@@ -420,7 +424,7 @@ void UBDockPalette::onResizeRequest(QResizeEvent *event)
  */
 int UBDockPalette::tabSpacing()
 {
-    return 2;
+	return 2;
 }
 
 /**
@@ -429,11 +433,11 @@ int UBDockPalette::tabSpacing()
  */
 void UBDockPalette::onShowTabWidget(UBDockPaletteWidget* widget)
 {
-    if (mRegisteredWidgets.contains(widget))
-    {
-        widget->setVisibleState(true);
-        addTab(widget);
-    }
+	if (mRegisteredWidgets.contains(widget))
+	{
+		widget->setVisibleState(true);
+		addTab(widget);
+	}
 }
 
 /**
@@ -442,11 +446,11 @@ void UBDockPalette::onShowTabWidget(UBDockPaletteWidget* widget)
  */
 void UBDockPalette::onHideTabWidget(UBDockPaletteWidget* widget)
 {
-    if (mRegisteredWidgets.contains(widget))
-    {
-        widget->setVisibleState(false);
-        removeTab(widget);
-    }
+	if (mRegisteredWidgets.contains(widget))
+	{
+		widget->setVisibleState(false);
+		removeTab(widget);
+	}
 }
 
 /**
@@ -454,11 +458,11 @@ void UBDockPalette::onHideTabWidget(UBDockPaletteWidget* widget)
  */
 void UBDockPalette::connectSignals()
 {
-    for(int i=0; i < mRegisteredWidgets.size(); i++)
-    {
-        connect(mRegisteredWidgets.at(i), SIGNAL(showTab(UBDockPaletteWidget*)), this, SLOT(onShowTabWidget(UBDockPaletteWidget*)));
-        connect(mRegisteredWidgets.at(i), SIGNAL(hideTab(UBDockPaletteWidget*)), this, SLOT(onHideTabWidget(UBDockPaletteWidget*)));
-    }
+	for(int i=0; i < mRegisteredWidgets.size(); i++)
+	{
+		connect(mRegisteredWidgets.at(i), SIGNAL(showTab(UBDockPaletteWidget*)), this, SLOT(onShowTabWidget(UBDockPaletteWidget*)));
+		connect(mRegisteredWidgets.at(i), SIGNAL(hideTab(UBDockPaletteWidget*)), this, SLOT(onHideTabWidget(UBDockPaletteWidget*)));
+	}
 }
 
 /**
@@ -467,194 +471,196 @@ void UBDockPalette::connectSignals()
  */
 void UBDockPalette::registerWidget(UBDockPaletteWidget *widget)
 {
-    if(!mRegisteredWidgets.contains(widget))
-    {
-        // Update the parent of this widget
-        widget->setParent(this);
-        mRegisteredWidgets.append(widget);
+	if(!mRegisteredWidgets.contains(widget))
+	{
+		// Update the parent of this widget
+		widget->setParent(this);
+		mRegisteredWidgets.append(widget);
 
-        // By default, the widget is hidden
-        widget->hide();
-    }
+		// By default, the widget is hidden
+		widget->hide();
+	}
 }
 
 /**
-  * \brief Handles the 'all download finished' notification
-  */
+ * \brief Handles the 'all download finished' notification
+ */
 void UBDockPalette::onAllDownloadsFinished()
 {
-    for(int i=0; i<mTabWidgets.size(); i++){
-        UBDockPaletteWidget* pW = mTabWidgets.at(i);
-        if(NULL != pW && mCrntTabWidget == pW->name()){
-            mpStackWidget->setCurrentWidget(pW);
-        }
-    }
+	for(int i=0; i<mTabWidgets.size(); i++){
+		UBDockPaletteWidget* pW = mTabWidgets.at(i);
+		if(NULL != pW && mCrntTabWidget == pW->name()){
+			mpStackWidget->setCurrentWidget(pW);
+		}
+	}
 }
 
 void UBDockPalette::moveTabs()
 {
- //   if (!mHTab) {
-        if(eUBDockTabOrientation_Up == mTabsOrientation) {
-            mHTab = border();
-        } else {
-            mHTab = height() - border() - mTabWidgets.size() * TABSIZE - (mTabWidgets.size() - 1) * tabSpacing();
-        }
-//    }
-
-    QPoint origin(width(), mHTab + mTabPalette->mVerticalOffset);
-
-    switch (mOrientation) {
-    case eUBDockOrientation_Left:
-        origin.setX(width());
-        break;
-    case eUBDockOrientation_Right:
-        if (parentWidget()) {
-            origin.setX(parentWidget()->width() - width() - border() * 2);
-        }
-        break;
-    case eUBDockOrientation_Top: ;
-    case eUBDockOrientation_Bottom: ;
-    }
-
-    mTabPalette->move(origin.x(), origin.y());
+	//   if (!mHTab) {
+	if(eUBDockTabOrientation_Up == mTabsOrientation) {
+		mHTab = border();
+	} else {
+		mHTab = height() - border() - mTabWidgets.size() * TABSIZE - (mTabWidgets.size() - 1) * tabSpacing();
+	}
+	//    }
+
+	QPoint origin(width(), mHTab + mTabPalette->mVerticalOffset);
+
+	switch (mOrientation) {
+	case eUBDockOrientation_Left:
+		origin.setX(width());
+		break;
+	case eUBDockOrientation_Right:
+		if (parentWidget()) {
+			origin.setX(parentWidget()->width() - width() - border() * 2);
+		}
+		break;
+	case eUBDockOrientation_Top: ;
+	case eUBDockOrientation_Bottom: ;
+	}
+
+	mTabPalette->move(origin.x(), origin.y());
 }
 void UBDockPalette::resizeTabs()
 {
-    int numTabs = mTabWidgets.size();
-    mTabPalette->setFixedSize(2 * border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * tabSpacing());
+	int numTabs = mTabWidgets.size();
+	mTabPalette->setFixedSize(2 * border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * tabSpacing());
 }
 QRect UBDockPalette::getTabPaletteRect()
 {
-    QRect tabsRect = mTabPalette->rect();
-    QPoint topLeft = mTabPalette->mapToParent(tabsRect.topLeft());
-    QPoint bottomRight = mTabPalette->mapToParent(tabsRect.bottomRight());
+	QRect tabsRect = mTabPalette->rect();
+	QPoint topLeft = mTabPalette->mapToParent(tabsRect.topLeft());
+	QPoint bottomRight = mTabPalette->mapToParent(tabsRect.bottomRight());
 
-    return QRect(topLeft, bottomRight);
+	return QRect(topLeft, bottomRight);
 }
 void UBDockPalette::assignParent(QWidget *widget)
 {
-    setParent(widget);
-    mTabPalette->setParent(widget);
+	setParent(widget);
+	mTabPalette->setParent(widget);
 }
 void UBDockPalette::setVisible(bool visible)
 {
-    QWidget::setVisible(visible);
-    mTabPalette->setVisible(visible);
+	QWidget::setVisible(visible);
+	mTabPalette->setVisible(visible);
 }
 
 bool UBDockPalette::switchMode(eUBDockPaletteWidgetMode mode)
 {
-    bool hasVisibleElements = false;
-    //-------------------------------//
-    // get full right palette widgets list, parse it, show all widgets for BOARD mode, and hide all other
-    for(int i = 0; i < mRegisteredWidgets.size(); i++)
-    {
-        UBDockPaletteWidget* pNextWidget = mRegisteredWidgets.at(i);
-        if( pNextWidget != NULL )
-        {
-            if( pNextWidget->visibleInMode(mode) ) 
-            {
-                addTab(pNextWidget);
-                hasVisibleElements = true;
-            }
-            else
-            {
-                removeTab(pNextWidget);
-            }
-        }
-    }
-    //-------------------------------//
-
-    if(mRegisteredWidgets.size() > 0)
-        showTabWidget(0);
-    
-    update();
-
-    return hasVisibleElements;
+	mLastOpenedTabForMode.insert(mCurrentMode, mpStackWidget->currentIndex());
+	mCurrentMode = mode;
+	bool hasVisibleElements = false;
+	//-------------------------------//
+	// get full palette widgets list, parse it, show all widgets for BOARD mode, and hide all other
+	for(int i = 0; i < mRegisteredWidgets.size(); i++)
+	{
+		UBDockPaletteWidget* pNextWidget = mRegisteredWidgets.at(i);
+		if( pNextWidget != NULL )
+		{
+			if( pNextWidget->visibleInMode(mode) )
+			{
+				addTab(pNextWidget);
+				hasVisibleElements = true;
+			}
+			else
+			{
+				removeTab(pNextWidget);
+			}
+		}
+	}
+	//-------------------------------//
+
+	if(mRegisteredWidgets.size() > 0)
+		showTabWidget(mLastOpenedTabForMode.value(mCurrentMode));
+
+	update();
+
+	return hasVisibleElements;
 }
 
 
 UBTabDockPalette::UBTabDockPalette(UBDockPalette *dockPalette, QWidget *parent) :
-    QWidget(parent)
-  , dock(dockPalette)
-  , mVerticalOffset(0)
-  , mFlotable(false)
+    		QWidget(parent)
+, dock(dockPalette)
+, mVerticalOffset(0)
+, mFlotable(false)
 {
-    int numTabs = dock->mTabWidgets.size();
-    resize(2 * dock->border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * dock->tabSpacing());
+	int numTabs = dock->mTabWidgets.size();
+	resize(2 * dock->border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * dock->tabSpacing());
 
-    setAttribute(Qt::WA_TranslucentBackground);
+	setAttribute(Qt::WA_TranslucentBackground);
 }
 
 void UBTabDockPalette::paintEvent(QPaintEvent *)
 {
-    int nTabs = dock->mTabWidgets.size();
-    if (nTabs <= 0) {
-        qDebug() << "not enough tabs";
-        return;
-    }
-
-    QPainter painter(this);
-    painter.setRenderHint(QPainter::Antialiasing);
-    painter.setPen(Qt::NoPen);
-    painter.setBrush(dock->mBackgroundBrush);
-
-    int yFrom = 0;
-    for (int i = 0; i < nTabs; i++) {
-        UBDockPaletteWidget* pCrntWidget = dock->mTabWidgets.at(i);
-        QPainterPath path;
-        path.setFillRule(Qt::WindingFill);
-        QPixmap iconPixmap;
-
-        switch (dock->mOrientation) {
-        case eUBDockOrientation_Left:
-            path.addRect(0, yFrom, width() / 2, TABSIZE);
-            path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
-            if (pCrntWidget) {
-                if(dock->mCollapseWidth >= dock->width()) {
-                    // Get the collapsed icon
-                    iconPixmap = pCrntWidget->iconToRight();
-                } else {
-                    // Get the expanded icon
-                    iconPixmap = pCrntWidget->iconToLeft();
-                }
-
-            }
-            break;
-
-        case eUBDockOrientation_Right:
-            path.addRect(width() /2, yFrom, width() / 2, TABSIZE);
-            path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
-            if (pCrntWidget) {
-                if(dock->mCollapseWidth >= dock->width()) {
-                    // Get the collapsed icon
-                    iconPixmap = pCrntWidget->iconToLeft();
-                } else {
-                    // Get the expanded icon
-                    iconPixmap = pCrntWidget->iconToRight();
-                }
-            }
-            break;
-
-        case eUBDockOrientation_Top: ;
-        case eUBDockOrientation_Bottom: ;
-        default:
-            break;
-        }
-
-        painter.save();
-        QPixmap transparencyPix(":/images/tab_mask.png");
-        if (dock->mCurrentTab != i) {
-            iconPixmap.setAlphaChannel(transparencyPix);
-            QColor color(0x7F, 0x7F, 0x7F, 0x3F);
-            painter.setBrush(QBrush(color));
-        }
-
-        painter.drawPath(path);
-        painter.drawPixmap(2, yFrom + 2, width() - 4, TABSIZE - 4, iconPixmap);
-        yFrom += (TABSIZE + dock->tabSpacing());
-        painter.restore();
-    }
+	int nTabs = dock->mTabWidgets.size();
+	if (nTabs <= 0) {
+		qDebug() << "not enough tabs";
+		return;
+	}
+
+	QPainter painter(this);
+	painter.setRenderHint(QPainter::Antialiasing);
+	painter.setPen(Qt::NoPen);
+	painter.setBrush(dock->mBackgroundBrush);
+
+	int yFrom = 0;
+	for (int i = 0; i < nTabs; i++) {
+		UBDockPaletteWidget* pCrntWidget = dock->mTabWidgets.at(i);
+		QPainterPath path;
+		path.setFillRule(Qt::WindingFill);
+		QPixmap iconPixmap;
+
+		switch (dock->mOrientation) {
+		case eUBDockOrientation_Left:
+			path.addRect(0, yFrom, width() / 2, TABSIZE);
+			path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
+			if (pCrntWidget) {
+				if(dock->mCollapseWidth >= dock->width()) {
+					// Get the collapsed icon
+					iconPixmap = pCrntWidget->iconToRight();
+				} else {
+					// Get the expanded icon
+					iconPixmap = pCrntWidget->iconToLeft();
+				}
+
+			}
+			break;
+
+		case eUBDockOrientation_Right:
+			path.addRect(width() /2, yFrom, width() / 2, TABSIZE);
+			path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius());
+			if (pCrntWidget) {
+				if(dock->mCollapseWidth >= dock->width()) {
+					// Get the collapsed icon
+					iconPixmap = pCrntWidget->iconToLeft();
+				} else {
+					// Get the expanded icon
+					iconPixmap = pCrntWidget->iconToRight();
+				}
+			}
+			break;
+
+		case eUBDockOrientation_Top: ;
+		case eUBDockOrientation_Bottom: ;
+		default:
+			break;
+		}
+
+		painter.save();
+		QPixmap transparencyPix(":/images/tab_mask.png");
+		if (dock->mCurrentTab != i) {
+			iconPixmap.setAlphaChannel(transparencyPix);
+			QColor color(0x7F, 0x7F, 0x7F, 0x3F);
+			painter.setBrush(QBrush(color));
+		}
+
+		painter.drawPath(path);
+		painter.drawPixmap(2, yFrom + 2, width() - 4, TABSIZE - 4, iconPixmap);
+		yFrom += (TABSIZE + dock->tabSpacing());
+		painter.restore();
+	}
 }
 UBTabDockPalette::~UBTabDockPalette()
 {
@@ -662,99 +668,100 @@ UBTabDockPalette::~UBTabDockPalette()
 
 void UBTabDockPalette::mousePressEvent(QMouseEvent *event)
 {
-    dock->mClickTime = QTime::currentTime();
-    // The goal here is to verify if the user can resize the widget.
-    // It is only possible to resize it if the border is selected
-    QPoint p = event->pos();
-    dock->mMousePressPos = p;
-    dock->mResized = false;
-
-    switch(dock->mOrientation) {
-    case eUBDockOrientation_Left:
-        dock->mCanResize = true;
-        break;
-    case eUBDockOrientation_Right:
-        dock->mCanResize = true;
-        break;
-    case eUBDockOrientation_Top:
-        // Not supported yet
-        break;
-    case eUBDockOrientation_Bottom:
-        // Not supported yet
-        break;
-    default:
-        break;
-    }
+	dock->mClickTime = QTime::currentTime();
+	// The goal here is to verify if the user can resize the widget.
+	// It is only possible to resize it if the border is selected
+	QPoint p = event->pos();
+	dock->mMousePressPos = p;
+	dock->mResized = false;
+
+	switch(dock->mOrientation) {
+	case eUBDockOrientation_Left:
+		dock->mCanResize = true;
+		break;
+	case eUBDockOrientation_Right:
+		dock->mCanResize = true;
+		break;
+	case eUBDockOrientation_Top:
+		// Not supported yet
+		break;
+	case eUBDockOrientation_Bottom:
+		// Not supported yet
+		break;
+	default:
+		break;
+	}
 }
 void UBTabDockPalette::mouseMoveEvent(QMouseEvent *event)
 {
-    QPoint p = event->pos();
+	QPoint p = event->pos();
 
-    if(dock->mCanResize && ((dock->mMousePressPos - p).manhattanLength() > QApplication::startDragDistance()))
-    {
-        if (qAbs(dock->mMousePressPos.y() - p.y()) > 10 && mFlotable) {
-            qDebug() << "y differences" << dock->mMousePressPos.y() << p.y();
-            mVerticalOffset += p.y() - dock->mMousePressPos.y();
-            move(this->pos().x(),  p.y());
-        }
+	if(dock->mCanResize && ((dock->mMousePressPos - p).manhattanLength() > QApplication::startDragDistance()))
+	{
+		if (qAbs(dock->mMousePressPos.y() - p.y()) > 10 && mFlotable) {
+			qDebug() << "y differences" << dock->mMousePressPos.y() << p.y();
+			mVerticalOffset += p.y() - dock->mMousePressPos.y();
+			move(this->pos().x(),  p.y());
+		}
 
-        switch(dock->mOrientation) {
+		switch(dock->mOrientation) {
 
-        case eUBDockOrientation_Left:
-            p.setX(p.x() + dock->width());
-            if(p.x() < dock->collapseWidth() && p.x() >= dock->minimumWidth()) {
+		case eUBDockOrientation_Left:
+			p.setX(p.x() + dock->width());
+			if(p.x() < dock->collapseWidth() && p.x() >= dock->minimumWidth()) {
                 dock->update();
-                dock->resize(0, dock->height());
-                dock->mLastWidth = dock->collapseWidth() + 1;
-                dock->mResized = true;
-            } else if (p.x() <= dock->maximumWidth() && p.x() >= dock->minimumWidth()) {
-                dock->resize(p.x(), dock->height());
-                dock->mResized = true;
-            }
-            break;
-
-        case eUBDockOrientation_Right:
-            p.setX(p.x() - 2 * dock->border());
-            if((dock->x() + p.x() > dock->parentWidget()->width() - dock->collapseWidth()) && (dock->x() + p.x() < dock->parentWidget()->width())) {
+				dock->resize(0, dock->height());
+				//dock->mLastWidth = dock->collapseWidth() + 1;
+				dock->mResized = true;
+			} else if (p.x() <= dock->maximumWidth() && p.x() >= dock->minimumWidth()) {
+				dock->resize(p.x(), dock->height());
+				dock->mResized = true;
+			}
+			break;
+
+		case eUBDockOrientation_Right:
+			p.setX(p.x() - 2 * dock->border());
+			if((dock->x() + p.x() > dock->parentWidget()->width() - dock->collapseWidth()) && (dock->x() + p.x() < dock->parentWidget()->width())) {
                 dock->update();
-                dock->resize(0, dock->height());
-                dock->mLastWidth = dock->collapseWidth() + 1;
-                dock->mResized = true;
-            } else if((dock->x() + p.x() >= dock->parentWidget()->width() - dock->maximumWidth()) && (dock->x() + p.x() <= dock->parentWidget()->width() - dock->minimumWidth())) {
-                dock->resize(dock->parentWidget()->width() - (dock->x() + p.x()), dock->height());
-                dock->mResized = true;
-            }
-            break;
-
-        case eUBDockOrientation_Top:
-        case eUBDockOrientation_Bottom:
-            if(p.y() <= dock->maximumHeight()) {
-                dock->resize(width(), p.y());
-                dock->mResized = true;
-            }
-            break;
-
-        default:
-            break;
-        }
-    }
+				dock->resize(0, dock->height());
+				//dock->mLastWidth = dock->collapseWidth() + 1;
+				dock->mResized = true;
+			} else if((dock->x() + p.x() >= dock->parentWidget()->width() - dock->maximumWidth()) && (dock->x() + p.x() <= dock->parentWidget()->width() - dock->minimumWidth())) {
+				dock->resize(dock->parentWidget()->width() - (dock->x() + p.x()), dock->height());
+				dock->mResized = true;
+			}
+			break;
+
+		case eUBDockOrientation_Top:
+		case eUBDockOrientation_Bottom:
+			if(p.y() <= dock->maximumHeight()) {
+				dock->resize(width(), p.y());
+				dock->mResized = true;
+			}
+			break;
+
+		default:
+			break;
+		}
+	}
 }
+
 void UBTabDockPalette::mouseReleaseEvent(QMouseEvent *event)
 {
-    Q_UNUSED(event);
-    if(!dock->mResized && dock->mClickTime.elapsed() < CLICKTIME) {
-        int nbTabs = dock->mTabWidgets.size();
-        int clickedTab = 0;
-        // If the clicked position is in the tab, perform the related action
-
-        if(dock->mMousePressPos.x() >= 0 &&
-                dock->mMousePressPos.x() <= width() &&
-                dock->mMousePressPos.y() >= 0 &&
-                dock->mMousePressPos.y() <= nbTabs * TABSIZE + (nbTabs -1)*dock->tabSpacing()) {
-
-            clickedTab = (dock->mMousePressPos.y()) / (TABSIZE + dock->tabSpacing());
-            dock->tabClicked(clickedTab);
-        }
-    }
-    dock->mCanResize = false;
+	Q_UNUSED(event);
+	if(!dock->mResized && dock->mClickTime.elapsed() < CLICKTIME) {
+		int nbTabs = dock->mTabWidgets.size();
+		int clickedTab = 0;
+		// If the clicked position is in the tab, perform the related action
+
+		if(dock->mMousePressPos.x() >= 0 &&
+				dock->mMousePressPos.x() <= width() &&
+				dock->mMousePressPos.y() >= 0 &&
+				dock->mMousePressPos.y() <= nbTabs * TABSIZE + (nbTabs -1)*dock->tabSpacing()) {
+
+			clickedTab = (dock->mMousePressPos.y()) / (TABSIZE + dock->tabSpacing());
+			dock->tabClicked(clickedTab);
+		}
+	}
+	dock->mCanResize = false;
 }
diff --git a/Sankore-3.1/src/gui/UBDockPalette.h b/Sankore-3.1/src/gui/UBDockPalette.h
index a513db7..c6ee4e4 100644
--- a/Sankore-3.1/src/gui/UBDockPalette.h
+++ b/Sankore-3.1/src/gui/UBDockPalette.h
@@ -1,20 +1,30 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBDOCKPALETTE_H
 #define UBDOCKPALETTE_H
 
+class UBDocumentProxy;
+
 #include <QWidget>
 #include <QMouseEvent>
 #include <QBrush>
@@ -79,8 +89,7 @@ private:
 typedef enum
 {
     eUBDockPaletteType_LEFT,
-    eUBDockPaletteType_RIGHT,
-    eUBDockPaletteType_NAVIGATOR,
+    eUBDockPaletteType_RIGHT
 } eUBDockPaletteType;
 
 
@@ -116,6 +125,8 @@ public:
 
     bool switchMode(eUBDockPaletteWidgetMode mode);
 
+    eUBDockPaletteWidgetMode mCurrentMode;
+
     QVector<UBDockPaletteWidget*> GetWidgetsList() { return mRegisteredWidgets; }
 
 public:
@@ -130,6 +141,7 @@ public slots:
     void onShowTabWidget(UBDockPaletteWidget* widget);
     void onHideTabWidget(UBDockPaletteWidget* widget);
     void onAllDownloadsFinished();
+    virtual void onDocumentSet(UBDocumentProxy* documentProxy);
 
 protected:
     virtual int border();
@@ -175,6 +187,8 @@ protected:
     QVector<UBDockPaletteWidget*> mRegisteredWidgets;
     /** The current tab widget */
     QString mCrntTabWidget;
+    /** Last opened tab index depending on mode */
+    QMap<eUBDockPaletteWidgetMode,int> mLastOpenedTabForMode;
 
 private slots:
     void onToolbarPosUpdated();
diff --git a/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp b/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp
index 24090ac..ec03be9 100644
--- a/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDockPaletteWidget.cpp
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBDockPaletteWidget.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBDockPaletteWidget.h b/Sankore-3.1/src/gui/UBDockPaletteWidget.h
index 7cbf154..63a0468 100644
--- a/Sankore-3.1/src/gui/UBDockPaletteWidget.h
+++ b/Sankore-3.1/src/gui/UBDockPaletteWidget.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBDOCKPALETTEWIDGET_H
 #define UBDOCKPALETTEWIDGET_H
 
diff --git a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp
index 42599b6..368a2a7 100644
--- a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "core/UBApplication.h"
 #include "globals/UBGlobals.h"
 
@@ -44,3 +51,8 @@ UBDockTeacherGuideWidget::~UBDockTeacherGuideWidget()
     DELETEPTR(mpTeacherGuideWidget);
     DELETEPTR(mpLayout);
 }
+
+UBTeacherGuideWidget* UBDockTeacherGuideWidget::teacherGuideWidget()
+{
+	return mpTeacherGuideWidget;
+}
diff --git a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h
index ee2d426..38a15a7 100644
--- a/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h
+++ b/Sankore-3.1/src/gui/UBDockTeacherGuideWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDOCKTEACHERGUIDEWIDGET_H
 #define UBDOCKTEACHERGUIDEWIDGET_H
 
@@ -31,6 +38,8 @@ public:
 
     bool visibleInMode(eUBDockPaletteWidgetMode mode){ return mode == eUBDockPaletteWidget_BOARD; }
 
+    UBTeacherGuideWidget* teacherGuideWidget();
+
 private:
     QVBoxLayout* mpLayout;
     UBTeacherGuideWidget* mpTeacherGuideWidget;
diff --git a/Sankore-3.1/src/gui/UBDocumentNavigator.cpp b/Sankore-3.1/src/gui/UBDocumentNavigator.cpp
index 1c34903..11cd0b2 100644
--- a/Sankore-3.1/src/gui/UBDocumentNavigator.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentNavigator.cpp
@@ -1,392 +1,288 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
- */
-#include <QList>
-#include <QPointF>
-#include <QPixmap>
-#include <QTransform>
-#include <QScrollBar>
-#include <QFontMetrics>
-#include <QGraphicsItem>
-#include <QGraphicsPixmapItem>
-
-#include "core/UBApplication.h"
-#include "UBDocumentNavigator.h"
-#include "board/UBBoardController.h"
-#include "adaptors/UBThumbnailAdaptor.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-#include "document/UBDocumentController.h"
-#include "domain/UBGraphicsScene.h"
-#include "board/UBBoardPaletteManager.h"
-#include "core/UBApplicationController.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGraphicsView(parent)
-  , mScene(NULL)
-  , mCrntItem(NULL)
-  , mCrntDoc(NULL)
-  , mNbColumns(1)
-  , mThumbnailWidth(0)
-  , mThumbnailMinWidth(100)
-  , bNavig(false)
-{
-    setObjectName(name);
-    mScene = new QGraphicsScene(this);
-    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    setScene(mScene);
-    mThumbnailWidth = width() - 2*border();
-
-    setFrameShadow(QFrame::Plain);
-
-    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(addNewPage()));
-    connect(UBApplication::boardController, SIGNAL(setDocOnPageNavigator(UBDocumentProxy*)), this, SLOT(generateThumbnails()));
-    connect(mScene, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
-    connect(UBApplication::boardController, SIGNAL(documentReorganized(int)), this, SLOT(onMovedToIndex(int)));
-    connect(UBApplication::boardController, SIGNAL(scrollToSelectedPage()), this, SLOT(onScrollToSelectedPage()));
-}
-
-/**
- * \brief Destructor
- */
-UBDocumentNavigator::~UBDocumentNavigator()
-{
-    if(NULL != mCrntItem)
-    {
-        delete mCrntItem;
-        mCrntItem = NULL;
-    }
-
-    if(NULL != mScene)
-    {
-        delete mScene;
-        mScene = NULL;
-    }
-}
-
-/**
- * \brief Set the current document
- * @param document as the new document
- */
-void UBDocumentNavigator::setDocument(UBDocumentProxy *document)
-{
-    //	Here we set a new document to the navigator. We must clear the current
-    // content and add all the pages of the given document.
-    if(document)
-    {
-        mCrntDoc = document;
-        generateThumbnails();
-    }
-}
-
-/**
- * \brief Generate the thumbnails
- */
-void UBDocumentNavigator::generateThumbnails()
-{
-	// Get the thumbnails
-    QList<QPixmap> thumbs = UBThumbnailAdaptor::load(mCrntDoc);
-
-	mThumbsWithLabels.clear();
-	foreach(QGraphicsItem* it, mScene->items())
-    {
-        mScene->removeItem(it);
-        delete it;
-    }
-
-	for(int i = 0; i < thumbs.count(); i++)
-    {
-        QPixmap pix = thumbs.at(i);
-        QGraphicsPixmapItem* pixmapItem = new UBSceneThumbnailNavigPixmap(pix, mCrntDoc, i);
-        UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(tr("Page %0").arg(UBApplication::boardController->pageFromSceneIndex(i)));
-
-		UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem);
-		thumbWithText.setBorder(border());
-		mThumbsWithLabels.append(thumbWithText);
-
-		mScene->addItem(pixmapItem);
-		mScene->addItem(labelItem);
-
-        // Get the selected item
-        if(UBApplication::boardController->activeSceneIndex() == i)
-        {
-            mCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pixmapItem);
-            mCrntItem->setSelected(true);
-        }
-    }
-    
-	// Draw the items
-    refreshScene();
-}
-
-/**
- * \brief Refresh the given thumbnail
- * @param iPage as the given page related thumbnail
- */
-void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
-{
-    // Generate the new thumbnail
-    UBGraphicsScene* pScene = UBApplication::boardController->activeScene();
-
-    if(NULL != pScene)
-    {
-        // Save the current state of the scene
-        pScene->setModified(true);
-        if(UBApplication::boardController)
-        {
-            UBApplication::boardController->persistCurrentScene();
-        }
-
-        UBThumbnailAdaptor::persistScene(mCrntDoc->persistencePath(), pScene, iPage);
-
-        // Load it
-        QPixmap pix = UBThumbnailAdaptor::load(mCrntDoc, iPage);
-        UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(pix, mCrntDoc, iPage);
-        if(pixmapItem)
-        {
-            // Get the old thumbnail
-            QGraphicsItem* pItem = mThumbsWithLabels.at(iPage).getThumbnail();
-            if(NULL != pItem)
-            {
-                mScene->removeItem(pItem);
-                mScene->addItem(pixmapItem);
-                mThumbsWithLabels[iPage].setThumbnail(pixmapItem);
-                delete pItem;
-            }
-        }
-    }
-}
-
-/**
- * \brief Add a new page to the thumbnails list
- *
- * This method is called automatically by the board controller each time the user
- * adds a new page, duplicates a page or imports a document.
- */
-void UBDocumentNavigator::addNewPage()
-{
-    if(!bNavig)
-    {
-        generateThumbnails();
-        if(NULL != mCrntItem)
-        {
-            mCrntItem->setSelected(true);
-        }
-    }
-}
-
-/**
- * \brief Put the element in the right place in the scene.
- */
-void UBDocumentNavigator::refreshScene()
-{
-    qreal thumbnailHeight = mThumbnailWidth / UBSettings::minScreenRatio;
-
-    for(int i = 0; i < mThumbsWithLabels.size(); i++)
-    {
-        // Get the item
-        UBImgTextThumbnailElement& item = mThumbsWithLabels[i];
-        int columnIndex = i % mNbColumns;
-        int rowIndex = i / mNbColumns;
-		item.Place(rowIndex, columnIndex, mThumbnailWidth, thumbnailHeight);
-    }
-}
-
-/**
- * \brief  Set the number of thumbnails columns
- * @param nbColumns as the number of columns
- */
-void UBDocumentNavigator::setNbColumns(int nbColumns)
-{
-    mNbColumns = nbColumns;
-}
-
-/**
- * \brief Get the number of columns
- * @return the number of thumbnails columns
- */
-int UBDocumentNavigator::nbColumns()
-{
-    return mNbColumns;
-}
-
-/**
- * \brief Set the thumbnails minimum width
- * @param width as the minimum width
- */
-void UBDocumentNavigator::setThumbnailMinWidth(int width)
-{
-    mThumbnailMinWidth = width;
-}
-
-/**
- * \brief Get the thumbnails minimum width
- * @return the minimum thumbnails width
- */
-int UBDocumentNavigator::thumbnailMinWidth()
-{
-    return mThumbnailMinWidth;
-}
-
-/**
- * \brief Get the border size
- * @return the border size in pixels
- */
-int UBDocumentNavigator::border()
-{
-    return 20;
-}
-
-/**
- * \brief Handle the resize event
- * @param event as the resize event
- */
-void UBDocumentNavigator::resizeEvent(QResizeEvent *event)
-{
-    Q_UNUSED(event);
-
-    // Update the thumbnails width
-    mThumbnailWidth = (width() > mThumbnailMinWidth) ? width() - 2*border() : mThumbnailMinWidth;
-
-    // Update the scene rect
-    //    QRect sceneRect;
-    //    sceneRect.setWidth(width() - 2*border());
-    //    sceneRect.setHeight(height() - 2*border());
-    //    sceneRect.moveLeft(border());
-    //    sceneRect.moveTop(border());
-    //    scene()->setSceneRect(sceneRect);
-
-    // Refresh the scene
-    refreshScene();
-}
-
-/**
- * \brief Handle the mouse press event
- * @param event as the mouse event
- */
-void UBDocumentNavigator::mousePressEvent(QMouseEvent *event)
-{
-    QGraphicsItem* pClickedItem = itemAt(event->pos());
-    if(NULL != pClickedItem)
-    {
-        bNavig = true;
-
-        // First, select the clicked item
-        UBSceneThumbnailNavigPixmap* pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pClickedItem);
-
-        if(NULL == pCrntItem)
-        {
-            // If we fall here we may have clicked on the label instead of the thumbnail
-            UBThumbnailTextItem* pTextItem = dynamic_cast<UBThumbnailTextItem*>(pClickedItem);
-            if(NULL != pTextItem)
-            {
-                for(int i = 0; i < mThumbsWithLabels.size(); i++)
-				{
-					const UBImgTextThumbnailElement& el = mThumbsWithLabels.at(i);
-					if(el.getCaption() == pTextItem)
-					{
-						pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(el.getThumbnail());
-						break;
-					}
-				}
-            }
-        }
-		else
-		{
-			if(NULL != mCrntItem && mCrntItem != pCrntItem)
-			{
-				// Unselect the previous item
-				mCrntItem->setSelected(false);
-				int iOldPage = -1;
-				for(int i = 0; i < mThumbsWithLabels.size(); i++)
-					if (mThumbsWithLabels.at(i).getThumbnail() == mCrntItem)
-					{
-						iOldPage = i;
-						break;
-					}
-				updateSpecificThumbnail(iOldPage);
-				mCrntItem = pCrntItem;
-			}
-
-			// Then display the related page
-			emit changeCurrentPage();
-			refreshScene();
-		}
-        
-		bNavig = false;
-    }
-	QGraphicsView::mousePressEvent(event);
-}
-
-/**
- * \brief Get the selected page number
- * @return the selected page number
- */
-int UBDocumentNavigator::selectedPageNumber()
-{
-    int nbr = NO_PAGESELECTED;
-
-    if(NULL != mCrntItem)
-    {
-		for(int i = 0; i < mThumbsWithLabels.size(); i++)
-			if (mThumbsWithLabels.at(i).getThumbnail() == mCrntItem)
-			{
-				nbr = i;
-				break;
-			}
-    }
-
-    return nbr;
-}
-
-/**
- * \brief Get the current document
- * @return the current document
- */
-UBDocumentProxy* UBDocumentNavigator::currentDoc()
-{
-    return mCrntDoc;
-}
-
-/**
- * \brief Occurs when the selection changed
- */
-void UBDocumentNavigator::onSelectionChanged()
-{
-    //    QList<QGraphicsItem*> qlItems = mScene->selectedItems();
-    //    qDebug() << "The number of selected items is " << qlItems.count();
-}
-
-/**
- * \brief Occurs when a page has been moved to another index in the document
- * @param index as the new index
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-void UBDocumentNavigator::onMovedToIndex(int index)
-{
-    if(index < mThumbsWithLabels.size()){
-        UBSceneThumbnailNavigPixmap* pItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(mThumbsWithLabels.at(index).getThumbnail());
-        if(NULL != pItem)
-        {
-            if(mCrntItem) mCrntItem->setSelected(false);//deselecting previous one
-			mCrntItem = pItem;
-            mCrntItem->setSelected(true);
-            centerOn(mCrntItem);
-        }
-    }
-}
+
+
+#include <QList>
+#include <QPointF>
+#include <QPixmap>
+#include <QTransform>
+#include <QScrollBar>
+#include <QFontMetrics>
+#include <QGraphicsItem>
+#include <QGraphicsPixmapItem>
+
+#include "core/UBApplication.h"
+#include "UBDocumentNavigator.h"
+#include "board/UBBoardController.h"
+#include "adaptors/UBThumbnailAdaptor.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+#include "document/UBDocumentController.h"
+#include "domain/UBGraphicsScene.h"
+#include "board/UBBoardPaletteManager.h"
+#include "core/UBApplicationController.h"
+
+#include "core/memcheck.h"
+
+/**
+ * \brief Constructor
+ * @param parent as the parent widget
+ * @param name as the object name
+ */
+UBDocumentNavigator::UBDocumentNavigator(QWidget *parent, const char *name):QGraphicsView(parent)
+  , mScene(NULL)
+  , mNbColumns(1)
+  , mThumbnailWidth(0)
+  , mThumbnailMinWidth(100)
+{
+    setObjectName(name);
+    mScene = new QGraphicsScene(this);
+    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    setScene(mScene);
+    mThumbnailWidth = width() - 2*border();
+
+    setFrameShadow(QFrame::Plain);
+
+    connect(UBApplication::boardController, SIGNAL(documentThumbnailsUpdated(UBDocumentContainer*)), this, SLOT(generateThumbnails(UBDocumentContainer*)));
+    connect(UBApplication::boardController, SIGNAL(documentPageUpdated(int)), this, SLOT(updateSpecificThumbnail(int)));
+    connect(UBApplication::boardController, SIGNAL(pageSelectionChanged(int)), this, SLOT(onScrollToSelectedPage(int)));
+}
+
+/**
+ * \brief Destructor
+ */
+UBDocumentNavigator::~UBDocumentNavigator()
+{
+    if(NULL != mScene)
+    {
+        delete mScene;
+        mScene = NULL;
+    }
+}
+
+#include "gui/UBDockTeacherGuideWidget.h"
+#include "gui/UBTeacherGuideWidget.h"
+
+/**
+ * \brief Generate the thumbnails
+ */
+void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source)
+{
+
+	mThumbsWithLabels.clear();
+	foreach(QGraphicsItem* it, mScene->items())
+    {
+        mScene->removeItem(it);
+        delete it;
+        it = NULL;
+    }
+
+    for(int i = 0; i < source->selectedDocument()->pageCount(); i++)
+    {
+        const QPixmap* pix = source->pageAt(i);
+        Q_ASSERT(!pix->isNull());
+        int pageIndex = UBDocumentContainer::pageFromSceneIndex(i);
+
+        UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i);
+
+        QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex);
+        UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label);
+
+		UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem);
+		thumbWithText.setBorder(border());
+		mThumbsWithLabels.append(thumbWithText);
+
+		mScene->addItem(pixmapItem);
+		mScene->addItem(labelItem);
+    }
+    
+	// Draw the items
+    refreshScene();
+}
+
+void UBDocumentNavigator::onScrollToSelectedPage(int index)
+{
+    int c  = 0;
+    foreach(UBImgTextThumbnailElement el, mThumbsWithLabels)
+    {
+        if (c==index)
+        {
+            el.getThumbnail()->setSelected(true);
+        }
+        else
+        {
+            el.getThumbnail()->setSelected(false);
+        }
+        c++;
+    }
+}
+
+/**
+ * \brief Refresh the given thumbnail
+ * @param iPage as the given page related thumbnail
+ */
+void UBDocumentNavigator::updateSpecificThumbnail(int iPage)
+{
+    // Generate the new thumbnail
+    //UBGraphicsScene* pScene = UBApplication::boardController->activeScene();
+
+    const QPixmap* pix = UBApplication::boardController->pageAt(iPage);
+    UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, UBApplication::boardController->selectedDocument(), iPage);
+
+    // Get the old thumbnail
+    UBSceneThumbnailNavigPixmap* oldItem = mThumbsWithLabels.at(iPage).getThumbnail();
+    if(NULL != oldItem)
+    {
+        mScene->removeItem(oldItem);
+        mScene->addItem(newItem);
+        mThumbsWithLabels[iPage].setThumbnail(newItem);
+        delete oldItem;
+        oldItem = NULL;
+    }
+
+}
+
+/**
+ * \brief Put the element in the right place in the scene.
+ */
+void UBDocumentNavigator::refreshScene()
+{
+    qreal thumbnailHeight = mThumbnailWidth / UBSettings::minScreenRatio;
+
+    for(int i = 0; i < mThumbsWithLabels.size(); i++)
+    {
+        // Get the item
+        UBImgTextThumbnailElement& item = mThumbsWithLabels[i];
+        int columnIndex = i % mNbColumns;
+        int rowIndex = i / mNbColumns;
+		item.Place(rowIndex, columnIndex, mThumbnailWidth, thumbnailHeight);
+    }
+    scene()->setSceneRect(scene()->itemsBoundingRect());
+}
+
+/**
+ * \brief  Set the number of thumbnails columns
+ * @param nbColumns as the number of columns
+ */
+void UBDocumentNavigator::setNbColumns(int nbColumns)
+{
+    mNbColumns = nbColumns;
+}
+
+/**
+ * \brief Get the number of columns
+ * @return the number of thumbnails columns
+ */
+int UBDocumentNavigator::nbColumns()
+{
+    return mNbColumns;
+}
+
+/**
+ * \brief Set the thumbnails minimum width
+ * @param width as the minimum width
+ */
+void UBDocumentNavigator::setThumbnailMinWidth(int width)
+{
+    mThumbnailMinWidth = width;
+}
+
+/**
+ * \brief Get the thumbnails minimum width
+ * @return the minimum thumbnails width
+ */
+int UBDocumentNavigator::thumbnailMinWidth()
+{
+    return mThumbnailMinWidth;
+}
+
+/**
+ * \brief Get the border size
+ * @return the border size in pixels
+ */
+int UBDocumentNavigator::border()
+{
+    return 20;
+}
+
+/**
+ * \brief Handle the resize event
+ * @param event as the resize event
+ */
+void UBDocumentNavigator::resizeEvent(QResizeEvent *event)
+{
+    Q_UNUSED(event);
+
+    // Update the thumbnails width
+    mThumbnailWidth = (width() > mThumbnailMinWidth) ? width() - 2*border() : mThumbnailMinWidth;
+
+    // Refresh the scene
+    refreshScene();
+}
+
+/**
+ * \brief Handle the mouse press event
+ * @param event as the mouse event
+ */
+void UBDocumentNavigator::mousePressEvent(QMouseEvent *event)
+{
+    QGraphicsItem* pClickedItem = itemAt(event->pos());
+    if(NULL != pClickedItem)
+    {
+
+        // First, select the clicked item
+        UBSceneThumbnailNavigPixmap* pCrntItem = dynamic_cast<UBSceneThumbnailNavigPixmap*>(pClickedItem);
+
+        if(NULL == pCrntItem)
+        {
+            // If we fall here we may have clicked on the label instead of the thumbnail
+            UBThumbnailTextItem* pTextItem = dynamic_cast<UBThumbnailTextItem*>(pClickedItem);
+            if(NULL != pTextItem) 
+            {
+                for(int i = 0; i < mThumbsWithLabels.size(); i++)
+				{
+					const UBImgTextThumbnailElement& el = mThumbsWithLabels.at(i);
+					if(el.getCaption() == pTextItem)
+					{
+						pCrntItem = el.getThumbnail();
+						break;
+					}
+				}
+            }
+        }
+
+        int index = 0;
+		for(int i = 0; i < mThumbsWithLabels.size(); i++)
+        {
+		    if (mThumbsWithLabels.at(i).getThumbnail() == pCrntItem)
+            {
+                index = i;
+                break;
+            }
+        }
+        UBApplication::boardController->setActiveDocumentScene(index);
+	}
+	QGraphicsView::mousePressEvent(event);
+}
+
+void UBDocumentNavigator::mouseReleaseEvent(QMouseEvent *event)
+{
+    event->accept();
+}
diff --git a/Sankore-3.1/src/gui/UBDocumentNavigator.h b/Sankore-3.1/src/gui/UBDocumentNavigator.h
index e643fbf..f96bae2 100644
--- a/Sankore-3.1/src/gui/UBDocumentNavigator.h
+++ b/Sankore-3.1/src/gui/UBDocumentNavigator.h
@@ -1,84 +1,80 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBDOCUMENTNAVIGATOR_H
-#define UBDOCUMENTNAVIGATOR_H
-
-#include <QResizeEvent>
-#include <QGraphicsView>
-#include <QGraphicsScene>
-#include <QMouseEvent>
-#include <QThread>
-
-#include "document/UBDocumentProxy.h"
-#include "UBThumbnailWidget.h"
-
-#define NO_PAGESELECTED		    -1
-
-class UBDocumentNavigator : public QGraphicsView
-{
-    Q_OBJECT
-public:
-    UBDocumentNavigator(QWidget* parent=0, const char* name="documentNavigator");
-    ~UBDocumentNavigator();
-
-    void setDocument(UBDocumentProxy* document);
-    void setNbColumns(int nbColumns);
-    int nbColumns();
-    void setThumbnailMinWidth(int width);
-    int thumbnailMinWidth();
-    int selectedPageNumber();
-    UBDocumentProxy* currentDoc();
-
-signals:
-    void changeCurrentPage();
-
-public slots:
-    void onMovedToIndex(int index);
-    void onScrollToSelectedPage() { centerOn(mCrntItem); }
-
-protected:
-    virtual void resizeEvent(QResizeEvent *event);
-    virtual void mousePressEvent(QMouseEvent *event);
-
-private slots:
-    void addNewPage();
-    void onSelectionChanged();
-    void generateThumbnails();
-
-private:
-    void refreshScene();
-	void updateSpecificThumbnail(int iPage);
-    int border();
-
-
-    /** The scene */
-    QGraphicsScene* mScene;
-    /** The current selected item */
-    UBSceneThumbnailNavigPixmap* mCrntItem;
-    /** The current document */
-    UBDocumentProxy* mCrntDoc;
-	/** The list of current thumbnails with labels*/
-	QList<UBImgTextThumbnailElement> mThumbsWithLabels;
-    /** The current number of columns */
-    int mNbColumns;
-    /** The current thumbnails width */
-    int mThumbnailWidth;
-    /** The current thumbnails minimum width */
-    int mThumbnailMinWidth;
-    /** A flag indicating that a thumbnail refresh is in progress */
-    bool bNavig;
-};
-
-#endif // UBDOCUMENTNAVIGATOR_H
+
+
+#ifndef UBDOCUMENTNAVIGATOR_H
+#define UBDOCUMENTNAVIGATOR_H
+
+#include <QResizeEvent>
+#include <QGraphicsView>
+#include <QGraphicsScene>
+#include <QMouseEvent>
+#include <QThread>
+
+#include "document/UBDocumentProxy.h"
+#include "document/UBDocumentContainer.h"
+#include "UBThumbnailWidget.h"
+
+#define NO_PAGESELECTED		    -1
+
+class UBDocumentNavigator : public QGraphicsView
+{
+    Q_OBJECT
+public:
+    UBDocumentNavigator(QWidget* parent=0, const char* name="documentNavigator");
+    ~UBDocumentNavigator();
+
+    void setNbColumns(int nbColumns);
+    int nbColumns();
+    void setThumbnailMinWidth(int width);
+    int thumbnailMinWidth();
+
+public slots:
+    void onScrollToSelectedPage(int index);// { if (mCrntItem) centerOn(mCrntItem); }
+    void generateThumbnails(UBDocumentContainer* source);
+    void updateSpecificThumbnail(int iPage);
+
+protected:
+    virtual void resizeEvent(QResizeEvent *event);
+    virtual void mousePressEvent(QMouseEvent *event);
+    virtual void mouseReleaseEvent(QMouseEvent *event);
+
+private:
+    
+    void refreshScene();
+    int border();
+
+
+    /** The scene */
+    QGraphicsScene* mScene;
+    /** The current selected item */
+    //UBSceneThumbnailNavigPixmap* mCrntItem;
+	/** The list of current thumbnails with labels*/
+	QList<UBImgTextThumbnailElement> mThumbsWithLabels;
+    /** The current number of columns */
+    int mNbColumns;
+    /** The current thumbnails width */
+    int mThumbnailWidth;
+    /** The current thumbnails minimum width */
+    int mThumbnailMinWidth;
+};
+ 
+#endif // UBDOCUMENTNAVIGATOR_H
diff --git a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp
index debeb9a..d384aab 100644
--- a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.cpp
@@ -1,296 +1,322 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#include "UBDocumentThumbnailWidget.h"
-
-#include "core/UBApplication.h"
-#include "core/UBMimeData.h"
-#include "core/UBSettings.h"
-
-#include "core/memcheck.h"
-
-
-UBDocumentThumbnailWidget::UBDocumentThumbnailWidget(QWidget* parent)
-    : UBThumbnailWidget(parent)
-    , mDropCaretRectItem(0)
-    , mClosestDropItem(0)
-	, mDragEnabled(true), mScrollMagnitude(0)
-{
-    mScrollTimer = new QTimer(this);
-	connect(mScrollTimer, SIGNAL(timeout()), this, SLOT(autoScroll()));
-}
-
-
-UBDocumentThumbnailWidget::~UBDocumentThumbnailWidget()
-{
-    // NOOP
-}
-
-
-void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
-{
-    if (!dragEnabled())
-    {
-        event->ignore();
-        return;
-    }
-
-    if (!(event->buttons() & Qt::LeftButton))
-        return;
-
-    if ((event->pos() - mMousePressPos).manhattanLength()
-             < QApplication::startDragDistance())
-             return;
-
-    QList<QGraphicsItem*> graphicsItems = items(mMousePressPos);
-
-    UBSceneThumbnailPixmap* sceneItem = 0;
-
-    while (!graphicsItems.isEmpty() && !sceneItem)
-    {
-        sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(graphicsItems.takeFirst());
-    }
-
-    if (sceneItem)
-    {
-        QDrag *drag = new QDrag(this);
-        QList<UBMimeDataItem> mimeDataItems;
-        foreach (QGraphicsItem *item, selectedItems())
-            mimeDataItems.append(UBMimeDataItem(sceneItem->proxy(), mGraphicItems.indexOf(item)));
-        UBMimeData *mime = new UBMimeData(mimeDataItems);
-        drag->setMimeData(mime);
-
-        drag->setPixmap(sceneItem->pixmap().scaledToWidth(100));
-        drag->setHotSpot(QPoint(drag->pixmap().width()/2,
-                                     drag->pixmap().height() / 2));
-
-        drag->exec(Qt::MoveAction);
-    }
-
-    UBThumbnailWidget::mouseMoveEvent(event);
-}
-
-void UBDocumentThumbnailWidget::dragEnterEvent(QDragEnterEvent *event)
-{
-    if (!event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-    {
-        event->setDropAction(Qt::IgnoreAction);
-        event->ignore();
-        return;
-    }
-
-    UBThumbnailWidget::dragEnterEvent(event);
-}
-
-void UBDocumentThumbnailWidget::dragLeaveEvent(QDragLeaveEvent *event)
-{
-    Q_UNUSED(event);
-	if (mScrollTimer->isActive())
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-    deleteDropCaret();
-}
-
-void UBDocumentThumbnailWidget::autoScroll()
-{
-	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
-}
-
-void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event)
-{
-	QRect boundingFrame = frameRect();
-	//setting up automatic scrolling
-	const int SCROLL_DISTANCE = 16;
-	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
-	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else if(qAbs(topDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-
-	QList<UBSceneThumbnailPixmap*> pixmapItems;
-    foreach (QGraphicsItem *item, scene()->items(mapToScene(boundingFrame)))
-    {
-        UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(item);
-        if (sceneItem)
-            pixmapItems.append(sceneItem);
-    }
-
-    int minDistance = 0;
-    QGraphicsItem *underlyingItem = itemAt(event->pos());
-    mClosestDropItem = dynamic_cast<UBSceneThumbnailPixmap*>(underlyingItem);
-
-    if (!mClosestDropItem)
-    {
-        foreach (UBSceneThumbnailPixmap *item, pixmapItems)
-        {
-            qreal scale = item->transform().m11();
-            QPointF itemCenter(
-                item->pos().x() + item->boundingRect().width() * scale / 2,
-                item->pos().y() + item->boundingRect().height() * scale / 2);
-
-            int distance = (itemCenter.toPoint() - mapToScene(event->pos()).toPoint()).manhattanLength();
-            if (!mClosestDropItem || distance < minDistance)
-            {
-                mClosestDropItem = item;
-                minDistance = distance;
-            }
-        }
-    }
-
-    if (mClosestDropItem)
-    {
-        qreal scale = mClosestDropItem->transform().m11();
-
-        QPointF itemCenter(
-            mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale / 2,
-            mClosestDropItem->pos().y() + mClosestDropItem->boundingRect().height() * scale / 2);
-
-        mDropIsRight = mapToScene(event->pos()).x() > itemCenter.x();
-
-        if (!mDropCaretRectItem && selectedItems().count() < mGraphicItems.count())
-        {
-            mDropCaretRectItem = new QGraphicsRectItem(0, scene());
-            mDropCaretRectItem->setPen(QPen(Qt::darkGray));
-            mDropCaretRectItem->setBrush(QBrush(Qt::lightGray));
-        }
-
-        QRectF dropCaretRect(
-            mDropIsRight ? mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale + spacing() / 2 - 1 : mClosestDropItem->pos().x() - spacing() / 2 - 1,
-            mClosestDropItem->pos().y(),
-            3,
-            mClosestDropItem->boundingRect().height() * scale);
-
-        if (mDropCaretRectItem)
-            mDropCaretRectItem->setRect(dropCaretRect);
-    }
-
-    event->acceptProposedAction();
-}
-
-
-void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event)
-{
-	if (mScrollTimer->isActive())
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-	deleteDropCaret();
-
-    if (mClosestDropItem)
-    {
-        int targetIndex = mDropIsRight ? mGraphicItems.indexOf(mClosestDropItem) + 1 : mGraphicItems.indexOf(mClosestDropItem);
-
-        QList<UBMimeDataItem> mimeDataItems;
-        if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-        {
-            const UBMimeData* mimeData = qobject_cast<const UBMimeData*>(event->mimeData());
-            if (mimeData)
-                mimeDataItems = mimeData->items();
-        }
-
-        if (1 == mimeDataItems.count() &&
-            (mimeDataItems.at(0).sceneIndex() == mGraphicItems.indexOf(mClosestDropItem) ||
-             targetIndex == mimeDataItems.at(0).sceneIndex() ||
-             targetIndex == mimeDataItems.at(0).sceneIndex() + 1))
-        {
-            return;
-        }
-
-        int sourceIndexOffset = 0;
-        int actualTargetIndex = targetIndex;
-        for (int i = mimeDataItems.count() - 1; i >= 0; i--)
-        {
-            UBMimeDataItem sourceItem = mimeDataItems.at(i);
-            int actualSourceIndex = sourceItem.sceneIndex();
-            if (sourceItem.sceneIndex() >= targetIndex)
-                actualSourceIndex += sourceIndexOffset;
-
-            event->acceptProposedAction();
-
-            if (sourceItem.sceneIndex() < targetIndex)
-            {
-                if (actualSourceIndex != actualTargetIndex - 1)
-                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex - 1);
-                actualTargetIndex -= 1;
-            }
-            else
-            {
-                if (actualSourceIndex != actualTargetIndex)
-                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex);
-                sourceIndexOffset += 1;
-            }
-        }
-    }
-}
-
-void UBDocumentThumbnailWidget::deleteDropCaret()
-{
-    if (mDropCaretRectItem && scene())
-    {
-        scene()->removeItem(mDropCaretRectItem);
-        delete mDropCaretRectItem;
-        mDropCaretRectItem = 0;
-    }
-}
-
-
-void UBDocumentThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems,
-    const QList<QUrl>& pItemPaths, const QStringList pLabels,
-    const QString& pMimeType)
-{
-    deleteDropCaret();
-
-    UBThumbnailWidget::setGraphicsItems(pGraphicsItems, pItemPaths, pLabels, pMimeType);
-}
-
-void UBDocumentThumbnailWidget::setDragEnabled(bool enabled)
-{
-    mDragEnabled = enabled;
-}
-
-bool UBDocumentThumbnailWidget::dragEnabled() const
-{
-    return mDragEnabled;
-}
-
-void UBDocumentThumbnailWidget::hightlightItem(int index)
-{
-    if (0 <= index && index < mLabelsItems.length())
-    {
-        mLabelsItems.at(index)->highlight();
-    }
-    if (0 <= index && index < mGraphicItems.length())
-    {
-        UBSceneThumbnailPixmap *thumbnail = dynamic_cast<UBSceneThumbnailPixmap*>(mGraphicItems.at(index));
-        if (thumbnail)
-            thumbnail->highlight();
-    }
-
-    selectItemAt(index);
-}
+
+
+#include "UBDocumentThumbnailWidget.h"
+
+#include "core/UBApplication.h"
+#include "core/UBMimeData.h"
+#include "core/UBSettings.h"
+
+#include "board/UBBoardController.h"
+
+#include "document/UBDocumentController.h"
+
+#include "core/memcheck.h"
+
+
+UBDocumentThumbnailWidget::UBDocumentThumbnailWidget(QWidget* parent)
+    : UBThumbnailWidget(parent)
+    , mDropCaretRectItem(0)
+    , mClosestDropItem(0)
+	, mDragEnabled(true)
+    , mScrollMagnitude(0)
+{
+	bCanDrag = false;
+    mScrollTimer = new QTimer(this);
+	connect(mScrollTimer, SIGNAL(timeout()), this, SLOT(autoScroll()));
+}
+
+
+UBDocumentThumbnailWidget::~UBDocumentThumbnailWidget()
+{
+    // NOOP
+}
+
+
+void UBDocumentThumbnailWidget::mouseMoveEvent(QMouseEvent *event)
+{
+    if (!dragEnabled())
+    {
+        event->ignore();
+        return;
+    }
+
+    if (!(event->buttons() & Qt::LeftButton))
+        return;
+
+    if ((event->pos() - mMousePressPos).manhattanLength() < QApplication::startDragDistance())
+             return;
+
+    QList<QGraphicsItem*> graphicsItems = items(mMousePressPos);
+
+    UBSceneThumbnailPixmap* sceneItem = 0;
+
+    while (!graphicsItems.isEmpty() && !sceneItem)
+        sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(graphicsItems.takeFirst());
+
+    if (sceneItem)
+    {
+        int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
+        if(pageIndex != 0){
+        	QDrag *drag = new QDrag(this);
+        	QList<UBMimeDataItem> mimeDataItems;
+        	foreach (QGraphicsItem *item, selectedItems())
+        		mimeDataItems.append(UBMimeDataItem(sceneItem->proxy(), mGraphicItems.indexOf(item)));
+
+        	UBMimeData *mime = new UBMimeData(mimeDataItems);
+        	drag->setMimeData(mime);
+
+        	drag->setPixmap(sceneItem->pixmap().scaledToWidth(100));
+        	drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height() / 2));
+
+        	drag->exec(Qt::MoveAction);
+        }
+    }
+
+    UBThumbnailWidget::mouseMoveEvent(event);
+}
+
+void UBDocumentThumbnailWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+    if (!event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+    {
+        event->setDropAction(Qt::IgnoreAction);
+        event->ignore();
+        return;
+    }
+
+    UBThumbnailWidget::dragEnterEvent(event);
+}
+
+void UBDocumentThumbnailWidget::dragLeaveEvent(QDragLeaveEvent *event)
+{
+    Q_UNUSED(event);
+	if (mScrollTimer->isActive())
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+    deleteDropCaret();
+    UBThumbnailWidget::dragLeaveEvent(event);
+}
+
+void UBDocumentThumbnailWidget::autoScroll()
+{
+	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
+}
+
+void UBDocumentThumbnailWidget::dragMoveEvent(QDragMoveEvent *event)
+{
+	QRect boundingFrame = frameRect();
+	//setting up automatic scrolling
+	const int SCROLL_DISTANCE = 16;
+	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
+	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
+	{
+		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
+		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+	}
+	else if(qAbs(topDist) <= SCROLL_DISTANCE)
+	{
+		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
+		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+	}
+	else
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+
+	QList<UBSceneThumbnailPixmap*> pixmapItems;
+    foreach (QGraphicsItem *item, scene()->items(mapToScene(boundingFrame)))
+    {
+        UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(item);
+        if (sceneItem)
+            pixmapItems.append(sceneItem);
+    }
+
+    int minDistance = 0;
+    QGraphicsItem *underlyingItem = itemAt(event->pos());
+    mClosestDropItem = dynamic_cast<UBSceneThumbnailPixmap*>(underlyingItem);
+
+    int pageIndex = -1;
+    if(mClosestDropItem){
+    	pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
+    	if(pageIndex == 0){
+    		 event->acceptProposedAction();
+    		 return;
+    	}
+    }
+    if (!mClosestDropItem)
+    {
+        foreach (UBSceneThumbnailPixmap *item, pixmapItems)
+        {
+            qreal scale = item->transform().m11();
+            QPointF itemCenter(
+                item->pos().x() + item->boundingRect().width() * scale / 2,
+                item->pos().y() + item->boundingRect().height() * scale / 2);
+
+            int distance = (itemCenter.toPoint() - mapToScene(event->pos()).toPoint()).manhattanLength();
+            if (!mClosestDropItem || distance < minDistance)
+            {
+                mClosestDropItem = item;
+                minDistance = distance;
+                pageIndex = UBDocumentContainer::pageFromSceneIndex(mClosestDropItem->sceneIndex());
+            }
+        }
+    }
+
+    if (mClosestDropItem && pageIndex != 0)
+    {
+        qreal scale = mClosestDropItem->transform().m11();
+
+        QPointF itemCenter(
+            mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale / 2,
+            mClosestDropItem->pos().y() + mClosestDropItem->boundingRect().height() * scale / 2);
+
+        mDropIsRight = mapToScene(event->pos()).x() > itemCenter.x();
+
+        if (!mDropCaretRectItem && selectedItems().count() < mGraphicItems.count())
+        {
+            mDropCaretRectItem = new QGraphicsRectItem(0, scene());
+            mDropCaretRectItem->setPen(QPen(Qt::darkGray));
+            mDropCaretRectItem->setBrush(QBrush(Qt::lightGray));
+        }
+
+        QRectF dropCaretRect(
+            mDropIsRight ? mClosestDropItem->pos().x() + mClosestDropItem->boundingRect().width() * scale + spacing() / 2 - 1 : mClosestDropItem->pos().x() - spacing() / 2 - 1,
+            mClosestDropItem->pos().y(),
+            3,
+            mClosestDropItem->boundingRect().height() * scale);
+
+        if (mDropCaretRectItem)
+            mDropCaretRectItem->setRect(dropCaretRect);
+    }
+
+    event->acceptProposedAction();
+}
+
+
+void UBDocumentThumbnailWidget::dropEvent(QDropEvent *event)
+{
+	if (mScrollTimer->isActive())
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+	deleteDropCaret();
+
+    if (mClosestDropItem)
+    {
+        int targetIndex = mDropIsRight ? mGraphicItems.indexOf(mClosestDropItem) + 1 : mGraphicItems.indexOf(mClosestDropItem);
+        if(UBDocumentContainer::pageFromSceneIndex(targetIndex) == 0){
+        	event->ignore();
+        	return;
+        }
+
+        QList<UBMimeDataItem> mimeDataItems;
+        if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+        {
+            const UBMimeData* mimeData = qobject_cast<const UBMimeData*>(event->mimeData());
+            if (mimeData)
+                mimeDataItems = mimeData->items();
+        }
+
+        if (1 == mimeDataItems.count() &&
+            (mimeDataItems.at(0).sceneIndex() == mGraphicItems.indexOf(mClosestDropItem) ||
+             targetIndex == mimeDataItems.at(0).sceneIndex() ||
+             targetIndex == mimeDataItems.at(0).sceneIndex() + 1))
+        {
+            return;
+        }
+
+        int sourceIndexOffset = 0;
+        int actualTargetIndex = targetIndex;
+        for (int i = mimeDataItems.count() - 1; i >= 0; i--)
+        {
+            UBMimeDataItem sourceItem = mimeDataItems.at(i);
+            int actualSourceIndex = sourceItem.sceneIndex();
+            if (sourceItem.sceneIndex() >= targetIndex)
+                actualSourceIndex += sourceIndexOffset;
+
+            //event->acceptProposedAction();
+            if (sourceItem.sceneIndex() < targetIndex)
+            {
+                if (actualSourceIndex != actualTargetIndex - 1)
+                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex - 1);
+                actualTargetIndex -= 1;
+            }
+            else
+            {
+                if (actualSourceIndex != actualTargetIndex)
+                    emit sceneDropped(sourceItem.documentProxy(), actualSourceIndex, actualTargetIndex);
+                sourceIndexOffset += 1;
+            }
+        }
+    }
+    UBThumbnailWidget::dropEvent(event);
+}
+
+void UBDocumentThumbnailWidget::deleteDropCaret()
+{
+    if (mDropCaretRectItem && scene())
+    {
+        scene()->removeItem(mDropCaretRectItem);
+        delete mDropCaretRectItem;
+        mDropCaretRectItem = 0;
+    }
+}
+
+void UBDocumentThumbnailWidget::setGraphicsItems(const QList<QGraphicsItem*>& pGraphicsItems,
+    const QList<QUrl>& pItemPaths, const QStringList pLabels,
+    const QString& pMimeType)
+{
+    deleteDropCaret();
+
+    UBThumbnailWidget::setGraphicsItems(pGraphicsItems, pItemPaths, pLabels, pMimeType);
+}
+
+void UBDocumentThumbnailWidget::setDragEnabled(bool enabled)
+{
+    mDragEnabled = enabled;
+}
+
+bool UBDocumentThumbnailWidget::dragEnabled() const
+{
+    return mDragEnabled;
+}
+
+void UBDocumentThumbnailWidget::hightlightItem(int index)
+{
+    if (0 <= index && index < mLabelsItems.length())
+    {
+        mLabelsItems.at(index)->highlight();
+    }
+    if (0 <= index && index < mGraphicItems.length())
+    {
+        UBSceneThumbnailPixmap *thumbnail = dynamic_cast<UBSceneThumbnailPixmap*>(mGraphicItems.at(index));
+        if (thumbnail)
+            thumbnail->highlight();
+    }
+
+    selectItemAt(index);
+}
diff --git a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h
index adfe7c2..4156ef6 100644
--- a/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h
+++ b/Sankore-3.1/src/gui/UBDocumentThumbnailWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDOCUMENTTHUMBNAILWIDGET_H_
 #define UBDOCUMENTTHUMBNAILWIDGET_H_
 
diff --git a/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp b/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp
index fcb9b60..00d4fd5 100644
--- a/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentToolsPalette.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBDocumentToolsPalette.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBDocumentToolsPalette.h b/Sankore-3.1/src/gui/UBDocumentToolsPalette.h
index 341cf11..5e26621 100644
--- a/Sankore-3.1/src/gui/UBDocumentToolsPalette.h
+++ b/Sankore-3.1/src/gui/UBDocumentToolsPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDOCUMENTTOOLSPALLETTE_H_
 #define UBDOCUMENTTOOLSPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp b/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp
index afc9b2d..19b45fe 100644
--- a/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDocumentTreeWidget.cpp
@@ -1,455 +1,464 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-
-#include "UBDocumentTreeWidget.h"
-
-#include "document/UBDocumentProxy.h"
-
-#include "core/UBSettings.h"
-#include "core/UBApplication.h"
-#include "core/UBPersistenceManager.h"
-#include "core/UBMimeData.h"
-#include "core/UBApplicationController.h"
-#include "core/UBDocumentManager.h"
-#include "document/UBDocumentController.h"
-
-#include "adaptors/UBThumbnailAdaptor.h"
-#include "adaptors/UBSvgSubsetAdaptor.h"
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/memcheck.h"
-
-UBDocumentTreeWidget::UBDocumentTreeWidget(QWidget * parent)
-    : QTreeWidget(parent)
-    , mSelectedProxyTi(0)
-    , mDropTargetProxyTi(0)
-{
-    setDragDropMode(QAbstractItemView::InternalMove);
-    setAutoScroll(true);
-
-    mScrollTimer = new QTimer(this);
-    connect(UBDocumentManager::documentManager(), SIGNAL(documentUpdated(UBDocumentProxy*))
-            , this, SLOT(documentUpdated(UBDocumentProxy*)));
-
-    connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int))
-            , this,  SLOT(itemChangedValidation(QTreeWidgetItem *, int)));
-    connect(mScrollTimer, SIGNAL(timeout())
-            , this, SLOT(autoScroll()));
-}
-
-
-UBDocumentTreeWidget::~UBDocumentTreeWidget()
-{
-    // NOOP
-}
-
-
-void UBDocumentTreeWidget::itemChangedValidation(QTreeWidgetItem * item, int column)
-{
-    if (column == 0)
-    {
-        UBDocumentGroupTreeItem *group = dynamic_cast< UBDocumentGroupTreeItem *>(item);
-
-        if (group)
-        {
-            QString name = group->text(0);
-
-            for(int i = 0; i < topLevelItemCount (); i++)
-            {
-                QTreeWidgetItem *someTopLevelItem = topLevelItem(i);
-
-                if (someTopLevelItem != group &&
-                        someTopLevelItem->text(0) == name)
-                {
-                    group->setText(0, tr("%1 (copy)").arg(name));
-                }
-            }
-        }
-    }
-}
-
-
-Qt::DropActions UBDocumentTreeWidget::supportedDropActions() const
-{
-    return Qt::MoveAction | Qt::CopyAction;
-}
-
-
-void UBDocumentTreeWidget::mousePressEvent(QMouseEvent *event)
-{
-    QTreeWidgetItem* twItem = this->itemAt(event->pos());
-
-    mSelectedProxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(twItem);
-
-    QTreeWidget::mousePressEvent(event);
-}
-
-
-void UBDocumentTreeWidget::dragEnterEvent(QDragEnterEvent *event)
-{
-    event->acceptProposedAction();
-}
-
-
-void UBDocumentTreeWidget::dragLeaveEvent(QDragLeaveEvent *event)
-{
-    Q_UNUSED(event);
-
-    if (mScrollTimer->isActive())
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-
-    if (mDropTargetProxyTi)
-    {
-        mDropTargetProxyTi->setBackground(0, mBackground);
-        mDropTargetProxyTi = 0;
-    }
-}
-
-
-void UBDocumentTreeWidget::dragMoveEvent(QDragMoveEvent *event)
-{
-	QRect boundingFrame = frameRect();
-	//setting up automatic scrolling
-	const int SCROLL_DISTANCE = 4;
-	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
-	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else if(qAbs(topDist) <= SCROLL_DISTANCE)
-	{
-		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
-		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
-	}
-	else
-	{
-		mScrollMagnitude = 0;
-		mScrollTimer->stop();
-	}
-
-
-    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
-
-    if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-    {
-        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingItem);
-        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
-        {
-            event->setDropAction(Qt::CopyAction);
-            event->accept();
-        }
-        else
-        {
-            event->ignore();
-        }
-    }
-    else
-    {
-        UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
-
-        if (groupItem && mSelectedProxyTi && groupItem != mSelectedProxyTi->parent())
-            event->acceptProposedAction();
-        else
-            event->ignore();
-    }
-
-    if (event->isAccepted())
-    {
-        if (mDropTargetProxyTi)
-        {
-            if (underlyingItem != mDropTargetProxyTi)
-            {
-                mBackground = underlyingItem->background(0);
-                mDropTargetProxyTi->setBackground(0, mBackground);
-                mDropTargetProxyTi = underlyingItem;
-                mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
-            }
-        }
-        else
-        {
-            mBackground = underlyingItem->background(0);
-            mDropTargetProxyTi = underlyingItem;
-            mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
-        }
-    }
-    else if (mDropTargetProxyTi)
-    {
-        mDropTargetProxyTi->setBackground(0, mBackground);
-        mDropTargetProxyTi = 0;
-    }
-}
-
-
-void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
-{
-    Q_UNUSED(event);
-
-    itemSelectionChanged();
-    QTreeWidget::focusInEvent(event);
-}
-
-
-void UBDocumentTreeWidget::dropEvent(QDropEvent *event)
-{
-    if (mDropTargetProxyTi)
-    {
-        mDropTargetProxyTi->setBackground(0, mBackground);
-        mDropTargetProxyTi = 0;
-    }
-
-    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
-
-    UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
-
-    if (groupItem && mSelectedProxyTi && mSelectedProxyTi->proxy())
-    {
-        UBDocumentGroupTreeItem *sourceGroupItem = dynamic_cast<UBDocumentGroupTreeItem*>(mSelectedProxyTi->parent());
-        bool isTrashItem = sourceGroupItem && sourceGroupItem->isTrashFolder();
-        if ((isTrashItem && !groupItem->isTrashFolder()) ||
-            (!isTrashItem && mSelectedProxyTi->proxy()->groupName() != groupItem->groupName()))
-        {
-            QString groupName;
-            if (groupItem->isTrashFolder())
-            {
-                QString oldGroupName = mSelectedProxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
-                groupName = UBSettings::trashedDocumentGroupNamePrefix + oldGroupName;
-            }
-            else
-            {
-                if (groupItem->groupName() == UBSettings::defaultDocumentGroupName)
-                    groupName = "";
-                else
-                    groupName = groupItem->groupName();
-            }
-            mSelectedProxyTi->proxy()->setMetaData(UBSettings::documentGroupName, groupName);
-            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(mSelectedProxyTi->proxy());
-
-            mSelectedProxyTi->parent()->removeChild(mSelectedProxyTi);
-
-            int i = 0;
-            for (i = 0; i < groupItem->childCount(); i++)
-            {
-                QTreeWidgetItem *ti = groupItem->child(i);
-                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
-                if (pi)
-                {
-                    if (mSelectedProxyTi->proxy()->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
-                    {
-                        break;
-                    }
-                }
-            }
-            groupItem->insertChild(i, mSelectedProxyTi);
-
-            if (isTrashItem)
-                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() | Qt::ItemIsEditable);
-
-            if (groupItem->isTrashFolder())
-                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() ^ Qt::ItemIsEditable);
-
-            //clearSelection();
-            expandItem(groupItem);
-            scrollToItem(mSelectedProxyTi);
-
-            // disabled, as those 2 calls are buggy on windows, the item disappears if we selected them
-            //
-            setCurrentItem(mSelectedProxyTi);
-            mSelectedProxyTi->setSelected(true);
-
-            event->setDropAction(Qt::IgnoreAction);
-            event->accept();
-        }
-    }
-    else
-    {
-        QTreeWidgetItem* underlyingTreeItem = this->itemAt(event->pos());
-
-        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingTreeItem);
-        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
-        {
-            if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
-            {
-                event->setDropAction(Qt::CopyAction);
-                event->accept();
-
-                const UBMimeData *mimeData = qobject_cast <const UBMimeData*>(event->mimeData());
-
-                if (mimeData && mimeData->items().size() > 0)
-                {
-                        int count = 0;
-                        int total = mimeData->items().size();
-
-                        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-
-                    foreach (UBMimeDataItem sourceItem, mimeData->items())
-                    {
-                        count++;
-
-                        UBApplication::applicationController->showMessage(tr("Copying page %1/%2").arg(count).arg(total), true);
-
-                        // TODO UB 4.x Move following code to some controller class
-                        UBGraphicsScene *scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(sourceItem.documentProxy(), sourceItem.sceneIndex());
-                        if (scene)
-                        {
-                            UBGraphicsScene* sceneClone = scene->sceneDeepCopy();
-
-                            UBDocumentProxy *targetDocProxy = targetProxyTreeItem->proxy();
-
-                            foreach (QUrl relativeFile, scene->relativeDependencies())
-                            {
-                                QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
-                                QString target = targetDocProxy->persistencePath() + "/" + relativeFile.toString();
-
-                                QFileInfo fi(target);
-                                QDir d = fi.dir();
-
-                                d.mkpath(d.absolutePath());
-                                QFile::copy(source, target);
-                            }
-
-                            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(targetDocProxy, sceneClone, targetDocProxy->pageCount());
-
-                            //due to incorrect generation of thumbnails of invisible scene I've used direct copying of thumbnail files
-                            //it's not universal and good way but it's faster
-                            QString from = sourceItem.documentProxy()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceItem.sceneIndex());
-                            QString to  = targetDocProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetDocProxy->pageCount());
-                            QFile::remove(to);
-                            QFile::copy(from, to);
-                          }
-                    }
-
-                    QApplication::restoreOverrideCursor();
-
-                    UBApplication::applicationController->showMessage(tr("%1 pages copied", "", total).arg(total), false);
-                }
-            }
-            else
-            {
-                event->setDropAction(Qt::IgnoreAction);
-                event->ignore();
-            }
-        }
-    }
-}
-
-
-void UBDocumentTreeWidget::documentUpdated(UBDocumentProxy *pDocument)
-{
-    UBDocumentProxyTreeItem *treeItem = UBApplication::documentController->findDocument(pDocument);
-    if (treeItem)
-    {
-        QTreeWidgetItem * parent = treeItem->parent();
-
-        if (parent)
-        {
-            for (int i = 0; i < parent->indexOfChild(treeItem); i++)
-            {
-                QTreeWidgetItem *ti = parent->child(i);
-                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
-                if (pi)
-                {
-                    if (pDocument->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
-                    {
-                        bool selected = treeItem->isSelected();
-                        parent->removeChild(treeItem);
-                        parent->insertChild(i, treeItem);
-                        for (int j = 0; j < selectedItems().count(); j++)
-                            selectedItems().at(j)->setSelected(false);
-                        if (selected)
-                            treeItem->setSelected(true);
-                        break;
-                    }
-                }
-            }
-        }
-    }
-}
-
-
-UBDocumentProxyTreeItem::UBDocumentProxyTreeItem(QTreeWidgetItem * parent, UBDocumentProxy* proxy, bool isEditable)
-    : QTreeWidgetItem()
-    , mProxy(proxy)
-{
-    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled;
-
-    if (isEditable)
-        flags |= Qt::ItemIsEditable;
-
-    setFlags(flags);
-
-    int i = 0;
-    for (i = 0; i < parent->childCount(); i++)
-    {
-        QTreeWidgetItem *ti = parent->child(i);
-        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
-        if (pi)
-        {
-            if (proxy->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
-            {
-                break;
-            }
-        }
-    }
-    parent->insertChild(i, this);
-}
-
-
-UBDocumentGroupTreeItem::UBDocumentGroupTreeItem(QTreeWidgetItem *parent, bool isEditable)
-    : QTreeWidgetItem(parent)
-{
-    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled;
-    if (isEditable)
-        flags |= Qt::ItemIsEditable;
-    setFlags(flags);
-}
-
-
-UBDocumentGroupTreeItem::~UBDocumentGroupTreeItem()
-{
-    // NOOP
-}
-
-
-void UBDocumentGroupTreeItem::setGroupName(const QString& groupName)
-{
-    setText(0, groupName);
-}
-
-
-QString UBDocumentGroupTreeItem::groupName() const
-{
-    return text(0);
-}
-
-
-bool UBDocumentGroupTreeItem::isTrashFolder() const
-{
-    return (0 == (flags() & Qt::ItemIsEditable)) && (groupName() == UBSettings::documentTrashGroupName);
-}
-
-bool UBDocumentGroupTreeItem::isDefaultFolder() const
-{
-    return (0 == (flags() & Qt::ItemIsEditable)) && (groupName() == UBSettings::defaultDocumentGroupName);
-}
-
-
-void UBDocumentTreeWidget::autoScroll()
-{
-	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
-}
+
+
+#include "UBDocumentTreeWidget.h"
+
+#include "document/UBDocumentProxy.h"
+
+#include "core/UBSettings.h"
+#include "core/UBApplication.h"
+#include "core/UBPersistenceManager.h"
+#include "core/UBMimeData.h"
+#include "core/UBApplicationController.h"
+#include "core/UBDocumentManager.h"
+#include "document/UBDocumentController.h"
+
+#include "adaptors/UBThumbnailAdaptor.h"
+#include "adaptors/UBSvgSubsetAdaptor.h"
+#include "frameworks/UBFileSystemUtils.h"
+
+#include "core/memcheck.h"
+
+UBDocumentTreeWidget::UBDocumentTreeWidget(QWidget * parent)
+    : QTreeWidget(parent)
+    , mSelectedProxyTi(0)
+    , mDropTargetProxyTi(0)
+{
+    setDragDropMode(QAbstractItemView::InternalMove);
+    setAutoScroll(true);
+
+    mScrollTimer = new QTimer(this);
+    connect(UBDocumentManager::documentManager(), SIGNAL(documentUpdated(UBDocumentProxy*))
+            , this, SLOT(documentUpdated(UBDocumentProxy*)));
+
+    connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int))
+            , this,  SLOT(itemChangedValidation(QTreeWidgetItem *, int)));
+    connect(mScrollTimer, SIGNAL(timeout())
+            , this, SLOT(autoScroll()));
+}
+
+
+UBDocumentTreeWidget::~UBDocumentTreeWidget()
+{
+    // NOOP
+}
+
+
+void UBDocumentTreeWidget::itemChangedValidation(QTreeWidgetItem * item, int column)
+{
+    if (column == 0)
+    {
+        UBDocumentGroupTreeItem *group = dynamic_cast< UBDocumentGroupTreeItem *>(item);
+
+        if (group)
+        {
+            QString name = group->text(0);
+
+            for(int i = 0; i < topLevelItemCount (); i++)
+            {
+                QTreeWidgetItem *someTopLevelItem = topLevelItem(i);
+
+                if (someTopLevelItem != group &&
+                        someTopLevelItem->text(0) == name)
+                {
+                    group->setText(0, tr("%1 (copy)").arg(name));
+                }
+            }
+        }
+    }
+}
+
+
+Qt::DropActions UBDocumentTreeWidget::supportedDropActions() const
+{
+    return Qt::MoveAction | Qt::CopyAction;
+}
+
+
+void UBDocumentTreeWidget::mousePressEvent(QMouseEvent *event)
+{
+    QTreeWidgetItem* twItem = this->itemAt(event->pos());
+
+    mSelectedProxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(twItem);
+
+    QTreeWidget::mousePressEvent(event);
+}
+
+
+void UBDocumentTreeWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+    event->acceptProposedAction();
+}
+
+
+void UBDocumentTreeWidget::dragLeaveEvent(QDragLeaveEvent *event)
+{
+    Q_UNUSED(event);
+
+    if (mScrollTimer->isActive())
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+
+    if (mDropTargetProxyTi)
+    {
+        mDropTargetProxyTi->setBackground(0, mBackground);
+        mDropTargetProxyTi = 0;
+    }
+}
+
+
+void UBDocumentTreeWidget::dragMoveEvent(QDragMoveEvent *event)
+{
+	QRect boundingFrame = frameRect();
+	//setting up automatic scrolling
+	const int SCROLL_DISTANCE = 4;
+	int bottomDist = boundingFrame.bottom() - event->pos().y(), topDist = boundingFrame.top() - event->pos().y();
+	if(qAbs(bottomDist) <= SCROLL_DISTANCE)
+	{
+		mScrollMagnitude = (SCROLL_DISTANCE - bottomDist)*4;
+		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+	}
+	else if(qAbs(topDist) <= SCROLL_DISTANCE)
+	{
+		mScrollMagnitude = (- SCROLL_DISTANCE - topDist)*4;
+		if(verticalScrollBar()->isVisible() && !mScrollTimer->isActive()) mScrollTimer->start(100);
+	}
+	else
+	{
+		mScrollMagnitude = 0;
+		mScrollTimer->stop();
+	}
+
+
+    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
+
+    if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+    {
+        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingItem);
+        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
+        {
+            event->setDropAction(Qt::CopyAction);
+            event->accept();
+        }
+        else
+        {
+            event->ignore();
+        }
+    }
+    else
+    {
+        UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
+
+        if (groupItem && mSelectedProxyTi && groupItem != mSelectedProxyTi->parent())
+            event->acceptProposedAction();
+        else
+            event->ignore();
+    }
+
+    if (event->isAccepted())
+    {
+        if (mDropTargetProxyTi)
+        {
+            if (underlyingItem != mDropTargetProxyTi)
+            {
+                mBackground = underlyingItem->background(0);
+                mDropTargetProxyTi->setBackground(0, mBackground);
+                mDropTargetProxyTi = underlyingItem;
+                mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
+            }
+        }
+        else
+        {
+            mBackground = underlyingItem->background(0);
+            mDropTargetProxyTi = underlyingItem;
+            mDropTargetProxyTi->setBackground(0, QBrush(QColor("#6682b5")));
+        }
+    }
+    else if (mDropTargetProxyTi)
+    {
+        mDropTargetProxyTi->setBackground(0, mBackground);
+        mDropTargetProxyTi = 0;
+    }
+}
+
+
+void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
+{
+    Q_UNUSED(event);
+
+    // Tolik
+    //itemSelectionChanged();
+
+    QTreeWidget::focusInEvent(event);
+}
+
+
+void UBDocumentTreeWidget::dropEvent(QDropEvent *event)
+{
+    if (mDropTargetProxyTi)
+    {
+        mDropTargetProxyTi->setBackground(0, mBackground);
+        mDropTargetProxyTi = 0;
+    }
+
+    QTreeWidgetItem* underlyingItem = this->itemAt(event->pos());
+
+    UBDocumentGroupTreeItem *groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(underlyingItem);
+
+    if (groupItem && mSelectedProxyTi && mSelectedProxyTi->proxy())
+    {
+        UBDocumentGroupTreeItem *sourceGroupItem = dynamic_cast<UBDocumentGroupTreeItem*>(mSelectedProxyTi->parent());
+        bool isTrashItem = sourceGroupItem && sourceGroupItem->isTrashFolder();
+        if ((isTrashItem && !groupItem->isTrashFolder()) ||
+            (!isTrashItem && mSelectedProxyTi->proxy()->groupName() != groupItem->groupName()))
+        {
+            QString groupName;
+            if (groupItem->isTrashFolder())
+            {
+                QString oldGroupName = mSelectedProxyTi->proxy()->metaData(UBSettings::documentGroupName).toString();
+                groupName = UBSettings::trashedDocumentGroupNamePrefix + oldGroupName;
+            }
+            else
+            {
+                if (groupItem->groupName() == UBApplication::app()->documentController->defaultDocumentGroupName())
+                    groupName = "";
+                else
+                    groupName = groupItem->groupName();
+            }
+            mSelectedProxyTi->proxy()->setMetaData(UBSettings::documentGroupName, groupName);
+            UBPersistenceManager::persistenceManager()->persistDocumentMetadata(mSelectedProxyTi->proxy());
+
+            mSelectedProxyTi->parent()->removeChild(mSelectedProxyTi);
+
+            int i = 0;
+            for (i = 0; i < groupItem->childCount(); i++)
+            {
+                QTreeWidgetItem *ti = groupItem->child(i);
+                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
+                if (pi)
+                {
+                    if (mSelectedProxyTi->proxy()->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
+                    {
+                        break;
+                    }
+                }
+            }
+            groupItem->insertChild(i, mSelectedProxyTi);
+
+            if (isTrashItem)
+                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() | Qt::ItemIsEditable);
+
+            if (groupItem->isTrashFolder())
+                mSelectedProxyTi->setFlags(mSelectedProxyTi->flags() ^ Qt::ItemIsEditable);
+
+            //clearSelection();
+            expandItem(groupItem);
+            scrollToItem(mSelectedProxyTi);
+
+            // disabled, as those 2 calls are buggy on windows, the item disappears if we selected them
+            //
+            setCurrentItem(mSelectedProxyTi);
+            mSelectedProxyTi->setSelected(true);
+
+            event->setDropAction(Qt::IgnoreAction);
+            event->accept();
+        }
+    }
+    else
+    {
+        QTreeWidgetItem* underlyingTreeItem = this->itemAt(event->pos());
+
+        UBDocumentProxyTreeItem *targetProxyTreeItem = dynamic_cast<UBDocumentProxyTreeItem*>(underlyingTreeItem);
+        if (targetProxyTreeItem && targetProxyTreeItem != mSelectedProxyTi)
+        {
+            if (event->mimeData()->hasFormat(UBApplication::mimeTypeUniboardPage))
+            {
+                event->setDropAction(Qt::CopyAction);
+                event->accept();
+
+                const UBMimeData *mimeData = qobject_cast <const UBMimeData*>(event->mimeData());
+
+                if (mimeData && mimeData->items().size() > 0)
+                {
+                        int count = 0;
+                        int total = mimeData->items().size();
+
+                        QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+
+                    foreach (UBMimeDataItem sourceItem, mimeData->items())
+                    {
+                        count++;
+
+                        UBApplication::applicationController->showMessage(tr("Copying page %1/%2").arg(count).arg(total), true);
+
+                        // TODO UB 4.x Move following code to some controller class
+                        UBGraphicsScene *scene = UBPersistenceManager::persistenceManager()->loadDocumentScene(sourceItem.documentProxy(), sourceItem.sceneIndex());
+                        if (scene)
+                        {
+                            UBGraphicsScene* sceneClone = scene->sceneDeepCopy();
+
+                            UBDocumentProxy *targetDocProxy = targetProxyTreeItem->proxy();
+
+                            foreach (QUrl relativeFile, scene->relativeDependencies())
+                            {
+                                QString source = scene->document()->persistencePath() + "/" + relativeFile.toString();
+                                QString target = targetDocProxy->persistencePath() + "/" + relativeFile.toString();
+
+                                QFileInfo fi(target);
+                                QDir d = fi.dir();
+
+                                d.mkpath(d.absolutePath());
+                                QFile::copy(source, target);
+                            }
+
+                            UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(targetDocProxy, sceneClone, targetDocProxy->pageCount());
+
+                            //due to incorrect generation of thumbnails of invisible scene I've used direct copying of thumbnail files
+                            //it's not universal and good way but it's faster
+                            QString from = sourceItem.documentProxy()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceItem.sceneIndex());
+                            QString to  = targetDocProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetDocProxy->pageCount());
+                            QFile::remove(to);
+                            QFile::copy(from, to);
+                          }
+                    }
+
+                    QApplication::restoreOverrideCursor();
+
+                    UBApplication::applicationController->showMessage(tr("%1 pages copied", "", total).arg(total), false);
+                }
+            }
+            else
+            {
+                event->setDropAction(Qt::IgnoreAction);
+                event->ignore();
+            }
+        }
+    }
+}
+
+
+void UBDocumentTreeWidget::documentUpdated(UBDocumentProxy *pDocument)
+{
+    UBDocumentProxyTreeItem *treeItem = UBApplication::documentController->findDocument(pDocument);
+    if (treeItem)
+    {
+        QTreeWidgetItem * parent = treeItem->parent();
+
+        if (parent)
+        {
+            for (int i = 0; i < parent->indexOfChild(treeItem); i++)
+            {
+                QTreeWidgetItem *ti = parent->child(i);
+                UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
+                if (pi)
+                {
+                    if (pDocument->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
+                    {
+                        bool selected = treeItem->isSelected();
+                        parent->removeChild(treeItem);
+                        parent->insertChild(i, treeItem);
+                        for (int j = 0; j < selectedItems().count(); j++)
+                            selectedItems().at(j)->setSelected(false);
+                        if (selected)
+                            treeItem->setSelected(true);
+                        break;
+                    }
+                }
+            }
+        }
+    }
+}
+
+
+UBDocumentProxyTreeItem::UBDocumentProxyTreeItem(QTreeWidgetItem * parent, UBDocumentProxy* proxy, bool isEditable)
+    : QTreeWidgetItem()
+    , mProxy(proxy)
+{
+    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled;
+
+    if (isEditable)
+        flags |= Qt::ItemIsEditable;
+
+    setFlags(flags);
+
+    int i = 0;
+    for (i = 0; i < parent->childCount(); i++)
+    {
+        QTreeWidgetItem *ti = parent->child(i);
+        UBDocumentProxyTreeItem* pi = dynamic_cast<UBDocumentProxyTreeItem*>(ti);
+        if (pi)
+        {
+            if (proxy->metaData(UBSettings::documentUpdatedAt).toString() >= pi->proxy()->metaData(UBSettings::documentUpdatedAt).toString())
+            {
+                break;
+            }
+        }
+    }
+    parent->insertChild(i, this);
+}
+
+
+UBDocumentGroupTreeItem::UBDocumentGroupTreeItem(QTreeWidgetItem *parent, bool isEditable)
+    : QTreeWidgetItem(parent)
+{
+    Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled;
+    if (isEditable)
+        flags |= Qt::ItemIsEditable;
+    setFlags(flags);
+}
+
+
+UBDocumentGroupTreeItem::~UBDocumentGroupTreeItem()
+{
+    // NOOP
+}
+
+
+void UBDocumentGroupTreeItem::setGroupName(const QString& groupName)
+{
+    setText(0, groupName);
+}
+
+
+QString UBDocumentGroupTreeItem::groupName() const
+{
+    return text(0);
+}
+
+
+bool UBDocumentGroupTreeItem::isTrashFolder() const
+{
+    return (0 == (flags() & Qt::ItemIsEditable)) &&  UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->documentTrashGroupName());
+}
+
+bool UBDocumentGroupTreeItem::isDefaultFolder() const
+{
+    return (0 == (flags() & Qt::ItemIsEditable)) && UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->defaultDocumentGroupName());
+}
+
+
+void UBDocumentTreeWidget::autoScroll()
+{
+	this->verticalScrollBar()->setValue(this->verticalScrollBar()->value() + mScrollMagnitude);
+}
diff --git a/Sankore-3.1/src/gui/UBDocumentTreeWidget.h b/Sankore-3.1/src/gui/UBDocumentTreeWidget.h
index d4fe72f..5d977ac 100644
--- a/Sankore-3.1/src/gui/UBDocumentTreeWidget.h
+++ b/Sankore-3.1/src/gui/UBDocumentTreeWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBDOCUMENTTREEWIDGET_H_
 #define UBDOCUMENTTREEWIDGET_H_
 
diff --git a/Sankore-3.1/src/gui/UBDownloadWidget.cpp b/Sankore-3.1/src/gui/UBDownloadWidget.cpp
index 00da5b0..5e9333d 100644
--- a/Sankore-3.1/src/gui/UBDownloadWidget.cpp
+++ b/Sankore-3.1/src/gui/UBDownloadWidget.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <QDebug>
 #include <QHeaderView>
 #include <QStyleOptionProgressBarV2>
diff --git a/Sankore-3.1/src/gui/UBDownloadWidget.h b/Sankore-3.1/src/gui/UBDownloadWidget.h
index e53df26..063d59d 100644
--- a/Sankore-3.1/src/gui/UBDownloadWidget.h
+++ b/Sankore-3.1/src/gui/UBDownloadWidget.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBDOWNLOADWIDGET_H
 #define UBDOWNLOADWIDGET_H
 
diff --git a/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp b/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp
index ffc6cb8..98d1581 100644
--- a/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp
+++ b/Sankore-3.1/src/gui/UBFavoriteToolPalette.cpp
@@ -1,28 +1,34 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBFavoriteToolPalette.h"
 
 #include "core/UBSettings.h"
 
 #include "board/UBBoardController.h"
+#include "domain/UBGraphicsWidgetItem.h"
 
 #include "tools/UBToolsManager.h"
 
-#include "domain/UBAbstractWidget.h"
-
 #include "gui/UBMainWindow.h"
 
 #include "core/memcheck.h"
@@ -67,9 +73,9 @@ UBFavoriteToolPalette::UBFavoriteToolPalette(QWidget* parent)
 
     foreach(QString widgetPath, appPathes)
     {
-        QAction *action = new QAction(UBAbstractWidget::widgetName(QUrl::fromLocalFile(widgetPath)), this);
+        QAction *action = new QAction(UBGraphicsWidgetItem::widgetName(QUrl::fromLocalFile(widgetPath)), this);
         action->setData(QUrl::fromLocalFile(widgetPath));
-        action->setIcon(QIcon(UBAbstractWidget::iconFilePath(QUrl::fromLocalFile(widgetPath))));
+        action->setIcon(QIcon(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(widgetPath))));
         connect(action, SIGNAL(triggered()), this, SLOT(addFavorite()));
 
         toolsActions << action;
diff --git a/Sankore-3.1/src/gui/UBFavoriteToolPalette.h b/Sankore-3.1/src/gui/UBFavoriteToolPalette.h
index 3b1a026..177590d 100644
--- a/Sankore-3.1/src/gui/UBFavoriteToolPalette.h
+++ b/Sankore-3.1/src/gui/UBFavoriteToolPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBFAVORITETOOLPALETTE_H_
 #define UBFAVORITETOOLPALETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp b/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp
index a151406..2d4a850 100644
--- a/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp
+++ b/Sankore-3.1/src/gui/UBFeaturesActionBar.cpp
@@ -1,5 +1,28 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include "UBFeaturesActionBar.h"
 #include "core/memcheck.h"
+#include "gui/UBFeaturesWidget.h"
 
 UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWidget* parent, const char* name ) : QWidget (parent)
 	, featuresController(controller)
@@ -8,6 +31,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
     , mLayout(NULL)
     , mpFavoriteAction(NULL)
     , mpSocialAction(NULL)
+    , mpRescanModelAction(NULL)
     , mpDeleteAction(NULL)
     , mpSearchAction(NULL)
     , mpCloseAction(NULL)
@@ -15,6 +39,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
     , mpNewFolderAction(NULL)
     , mpFavoriteBtn(NULL)
     , mpSocialBtn(NULL)
+    , mpRescanModelBtn(NULL)
     , mpDeleteBtn(NULL)
     , mpCloseBtn(NULL)
     , mpRemoveFavoriteBtn(NULL)
@@ -28,7 +53,6 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
     mButtonGroup = new QButtonGroup(this);
     mSearchBar = new QLineEdit(this);
     mSearchBar->setStyleSheet(QString("background-color:white; border-radius : 10px; padding : 2px;"));
-    //connect(mSearchBar, SIGNAL(returnPressed()), this, SLOT(onActionSearch()));
 
     mLayout = new QHBoxLayout();
     setLayout(mLayout);
@@ -39,6 +63,7 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
     mpFavoriteAction = new QAction(QIcon(":/images/libpalette/miniFavorite.png"), tr("Add to favorites"), this);
     mpSocialAction = new QAction(QIcon(":/images/libpalette/social.png"), tr("Share"), this);
     mpSearchAction = new QAction(QIcon(":/images/libpalette/miniSearch.png"), tr("Search"), this);
+    mpRescanModelAction = new QAction(QIcon(":/images/cursors/rotate.png"), tr("Rescan file system"), this);
     mpDeleteAction = new QAction(QIcon(":/images/libpalette/miniTrash.png"), tr("Delete"), this);
     mpCloseAction = new QAction(QIcon(":/images/close.svg"), tr("Back to folder"), this);
     mpRemoveFavorite = new QAction(QIcon(":/images/libpalette/trash_favorite.svg"), tr("Remove from favorites"), this);
@@ -47,7 +72,11 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
     // Create the buttons
     mpFavoriteBtn = new UBActionButton(this, mpFavoriteAction);
     mpSocialBtn = new UBActionButton(this, mpSocialAction);
+
     //mpSearchBtn = new UBActionButton(this, mpSearchAction);
+    mpRescanModelBtn = new UBActionButton(this, mpRescanModelAction);
+    mpRescanModelBtn->hide();
+
     mpDeleteBtn = new UBActionButton(this, mpDeleteAction);
     mpCloseBtn = new UBActionButton(this, mpCloseAction);
     mpRemoveFavoriteBtn = new UBActionButton(this, mpRemoveFavorite);
@@ -79,14 +108,17 @@ UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWid
 	connect(mSearchBar, SIGNAL(textChanged(QString)), this, SLOT(onSearchTextChanged(QString)));
 	connect(mpNewFolderAction, SIGNAL(triggered()), this, SLOT(onActionNewFolder()));
     connect(mpRemoveFavorite, SIGNAL(triggered()), this, SLOT(onActionRemoveFavorite()));
+    connect(mpRescanModelAction, SIGNAL(triggered()), this , SLOT(onActionRescanModel()));
     connect(mpDeleteAction,SIGNAL(triggered()), this, SLOT(onActionTrash()));
 
+
     // Build the default toolbar
     mLayout->addWidget(mpFavoriteBtn);
     mLayout->addWidget(mpSocialBtn);
     mLayout->addWidget(mpNewFolderBtn);
     mLayout->addWidget(mSearchBar);
     //mLayout->addWidget(mpSearchBtn);
+    mLayout->addWidget(mpRescanModelBtn);
     mLayout->addWidget(mpDeleteBtn);
     mLayout->addWidget(mpCloseBtn);
     mLayout->addWidget(mpRemoveFavoriteBtn);
@@ -115,6 +147,7 @@ void UBFeaturesActionBar::setButtons()
         mpNewFolderBtn->show();
 		mpNewFolderBtn->setEnabled(true);
 		mpDeleteBtn->setEnabled(true);
+//        mpRescanModelBtn->show();
 		break;
     case IN_ROOT:
         mpFavoriteBtn->show();
@@ -126,6 +159,7 @@ void UBFeaturesActionBar::setButtons()
         mpNewFolderBtn->show();
 		mpNewFolderBtn->setEnabled(false);
 		mpDeleteBtn->setEnabled(false);
+//        mpRescanModelBtn->show();
         break;
     case IN_PROPERTIES:
         mpFavoriteBtn->show();
@@ -136,6 +170,7 @@ void UBFeaturesActionBar::setButtons()
         mpCloseBtn->hide();
         mpRemoveFavoriteBtn->hide();
         mpNewFolderBtn->hide();
+//        mpRescanModelBtn->hide();
         break;
     case IN_FAVORITE:
         mpFavoriteBtn->hide();
@@ -146,6 +181,7 @@ void UBFeaturesActionBar::setButtons()
         mpCloseBtn->hide();
         mpRemoveFavoriteBtn->show();
         mpNewFolderBtn->hide();
+//        mpRescanModelBtn->hide();
         break;
 	case IN_TRASH:
 		mpFavoriteBtn->hide();
@@ -158,6 +194,7 @@ void UBFeaturesActionBar::setButtons()
         mpCloseBtn->hide();
         //mpRemoveFavoriteBtn->show();
         mpNewFolderBtn->hide();
+//        mpRescanModelBtn->hide();
 		break;
     default:
         break;
@@ -189,51 +226,95 @@ void UBFeaturesActionBar::onActionTrash()
 {
     emit deleteSelectedElements();
 }
+void UBFeaturesActionBar::onActionRescanModel()
+{
+    emit rescanModel();
+}
 
-/*
-void UBFeaturesActionBar::dragMoveEvent(QDragMoveEvent *event)
+void UBFeaturesActionBar::lockIt()
+{
+    setEnabled(false);
+}
+
+void UBFeaturesActionBar::unlockIt()
 {
-    event->acceptProposedAction();
+    setEnabled(true);
 }
-*/
 
 void UBFeaturesActionBar::dragEnterEvent( QDragEnterEvent *event )
 {
-    if (event->mimeData()->hasFormat("text/uri-list"))
-	{
+    const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
+    if (fMimeData) {
         event->acceptProposedAction();
-	}
+    } else {
+        event->ignore();
+    }
 }
 
-void UBFeaturesActionBar::dropEvent( QDropEvent *event )
+void UBFeaturesActionBar::dropEvent(QDropEvent *event)
 {	
-	QWidget *dest = childAt( event->pos() );
-	if ( dest == mpDeleteBtn )
-	{
-		QList <QUrl> urls = event->mimeData()->urls();
-		foreach ( QUrl url, urls )
-		{
-			if ( !UBFeaturesController::isDeletable( url ) )
-				return;
-		}
-		event->setDropAction( Qt::MoveAction );
+    const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
+
+    if (!fMimeData) {
+        qWarning() << "data came from not supported widget";
+        event->ignore();
+        return;
+    }
+
+    QWidget *dest = childAt(event->pos());
+    if (dest == mpDeleteBtn) {
+        QList<UBFeature> featuresList = fMimeData->features();
+        foreach (UBFeature curFeature, featuresList) {
+            if (!curFeature.isDeletable()) {
+                qWarning() << "Undeletable feature found, stopping deleting process";
+                event->ignore();
+                return;
+            }
+        }
+        event->setDropAction(Qt::MoveAction);
 		event->accept();
-		emit deleteElements( *event->mimeData() );
-	}
-	else if ( dest == mpFavoriteBtn )
-	{
-		event->setDropAction( Qt::CopyAction );
+
+        emit deleteElements(fMimeData);
+
+    } else if (dest == mpFavoriteBtn) {
+        event->setDropAction( Qt::CopyAction);
 		event->accept();
-		emit addToFavorite( *event->mimeData() );
-	}
-	else if ( dest == mpRemoveFavoriteBtn )
-	{
+
+        emit addToFavorite(fMimeData);
+
+    } else if (dest == mpRemoveFavoriteBtn) {
 		event->setDropAction( Qt::MoveAction );
 		event->accept();
-		emit removeFromFavorite( *event->mimeData() );
+
+        emit removeFromFavorite(fMimeData);
 	}
 }
 
 UBFeaturesActionBar::~UBFeaturesActionBar()
 {
 }
+
+/**
+ * \brief Construtor
+ * @param parent as the parent widget
+ * @param action as the related action
+ * @param name as the related object name
+ */
+UBActionButton::UBActionButton(QWidget *parent, QAction* action, const char *name):QToolButton(parent)
+{
+    setObjectName(name);
+    addAction(action);
+    setDefaultAction(action);
+    setIconSize(QSize(BUTTON_SIZE, BUTTON_SIZE));
+    setToolButtonStyle(Qt::ToolButtonIconOnly);
+    setStyleSheet(QString("QToolButton {color: white; font-weight: bold; font-family: Arial; background-color: transparent; border: none}"));
+    setFocusPolicy(Qt::NoFocus);
+}
+
+/**
+ * \brief Destructor
+ */
+UBActionButton::~UBActionButton()
+{
+
+}
diff --git a/Sankore-3.1/src/gui/UBFeaturesActionBar.h b/Sankore-3.1/src/gui/UBFeaturesActionBar.h
index 99664a6..9166726 100644
--- a/Sankore-3.1/src/gui/UBFeaturesActionBar.h
+++ b/Sankore-3.1/src/gui/UBFeaturesActionBar.h
@@ -1,12 +1,52 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBFEATURESACTIONBAR_H
 #define UBFEATURESACTIONBAR_H
 
 #include <QWidget>
 #include <QToolButton>
 #include <QDropEvent>
-#include "UBLibActionBar.h"
 #include "board/UBFeaturesController.h"
 
+#define BUTTON_SIZE 24
+#define ACTIONBAR_HEIGHT 42
+
+class UBFeaturesMimeData;
+
+typedef enum
+{
+    eButtonSet_Default,
+    eButtonSet_Properties,
+    eButtonSet_Favorite
+} eButtonSet;
+
+class UBActionButton : public QToolButton
+{
+public:
+    UBActionButton(QWidget* parent=0, QAction* action=0, const char* name="UBActionButton");
+    ~UBActionButton();
+};
+
 enum UBFeaturesActionBarState
 {
 	IN_ROOT,
@@ -24,25 +64,33 @@ public:
     ~UBFeaturesActionBar();
 	
 	void setCurrentState( UBFeaturesActionBarState state );
+    void cleanText(){ mSearchBar->clear(); }
+
 signals:
 	void searchElement(const QString &text);
 	void newFolderToCreate();
-	void deleteElements( const QMimeData &data );
-	void addToFavorite( const QMimeData &data );
-	void removeFromFavorite( const QMimeData &data );
+    void deleteElements(const UBFeaturesMimeData *data);
+    void addToFavorite(const UBFeaturesMimeData *data);
+    void removeFromFavorite(const UBFeaturesMimeData *data);
     void addElementsToFavorite();
     void removeElementsFromFavorite();
     void deleteSelectedElements();
+    void rescanModel();
+
 private slots:
 	void onSearchTextChanged(QString txt);
 	void onActionNewFolder();
     void onActionFavorite();
     void onActionRemoveFavorite();
     void onActionTrash();
+    void onActionRescanModel();
+    void lockIt();
+    void unlockIt();
+
 protected:
-	//void dragMoveEvent(QDragMoveEvent *event);
-	void dragEnterEvent( QDragEnterEvent *event );
+    void dragEnterEvent( QDragEnterEvent *event );
 	void dropEvent( QDropEvent *event );
+
 private:
 	void setButtons();
 	UBFeaturesController *featuresController;
@@ -56,6 +104,7 @@ private:
     QHBoxLayout* mLayout;
     QAction* mpFavoriteAction;
     QAction* mpSocialAction;
+    QAction* mpRescanModelAction;
     QAction* mpDeleteAction;
     QAction* mpSearchAction;
     QAction* mpCloseAction;
@@ -63,13 +112,11 @@ private:
     QAction* mpNewFolderAction;
     UBActionButton* mpFavoriteBtn;
     UBActionButton* mpSocialBtn;
+    UBActionButton* mpRescanModelBtn;
     UBActionButton* mpDeleteBtn;
-    //UBActionButton* mpSearchBtn;
     UBActionButton* mpCloseBtn;
     UBActionButton* mpRemoveFavoriteBtn;
     UBActionButton* mpNewFolderBtn;
-
 };
 
-
-#endif
\ No newline at end of file
+#endif
diff --git a/Sankore-3.1/src/gui/UBFeaturesWidget.cpp b/Sankore-3.1/src/gui/UBFeaturesWidget.cpp
index 889bc65..1e5e51e 100644
--- a/Sankore-3.1/src/gui/UBFeaturesWidget.cpp
+++ b/Sankore-3.1/src/gui/UBFeaturesWidget.cpp
@@ -1,511 +1,749 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #include <QDomDocument>
+#include <QWebView>
 
 #include "UBFeaturesWidget.h"
-#include "domain/UBAbstractWidget.h"
 #include "gui/UBThumbnailWidget.h"
-#include "gui/UBLibraryWidget.h"
 #include "frameworks/UBFileSystemUtils.h"
 #include "core/UBApplication.h"
 #include "core/UBDownloadManager.h"
 #include "globals/UBGlobals.h"
 #include "board/UBBoardController.h"
 
-UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)	
+const char *UBFeaturesWidget::objNamePathList = "PathList";
+const char *UBFeaturesWidget::objNameFeatureList = "FeatureList";
+
+const QMargins FeatureListMargins(0, 0, 0, 30);
+const int FeatureListBorderOffset = 10;
+const char featureTypeSplitter = ':';
+static const QString mimeSankoreFeatureTypes = "Sankore/featureTypes";
+
+UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name)
+    : UBDockPaletteWidget(parent)
+    , imageGatherer(NULL)
 {
     setObjectName(name);
     mName = "FeaturesWidget";
     mVisibleState = true;
 
-	SET_STYLE_SHEET();
-    //setAttribute(Qt::WA_StyledBackground, true);
-    //setStyleSheet(UBApplication::globalStyleSheet());
+    SET_STYLE_SHEET();
 
     mIconToLeft = QPixmap(":images/library_open.png");
     mIconToRight = QPixmap(":images/library_close.png");
     setAcceptDrops(true);
-	
-	stackedWidget = new QStackedWidget(this);
-	layout = new QVBoxLayout(this);
 
-	controller = new UBFeaturesController(this);
+    //Main UBFeature functionality
+    controller = new UBFeaturesController(this);
+
+    //Main layout including all the widgets in palette
+    layout = new QVBoxLayout(this);
+
+    //Path icon view on the top of the palette
+    pathListView = new UBFeaturesListView(this, objNamePathList);
+    controller->assignPathListView(pathListView);
+
+    centralWidget = new UBFeaturesCentralWidget(this);
+    controller->assignFeaturesListView(centralWidget->listView());
+    centralWidget->setSliderPosition(UBSettings::settings()->featureSliderPosition->get().toInt());
+
+    //Bottom actionbar for DnD, quick search etc
+    mActionBar = new UBFeaturesActionBar(controller, this);
+
+    //Filling main layout
+    layout->addWidget(pathListView);
+    layout->addWidget(centralWidget);
+    layout->addWidget(mActionBar);
+
+    connect(centralWidget->listView(), SIGNAL(clicked(const QModelIndex &)), this, SLOT(currentSelected(const QModelIndex &)));
+    connect(this, SIGNAL(sendFileNameList(QStringList)), centralWidget, SIGNAL(sendFileNameList(QStringList)));
+    connect(mActionBar, SIGNAL(searchElement(const QString &)), this, SLOT( searchStarted(const QString &)));
+    connect(mActionBar, SIGNAL(newFolderToCreate()), this, SLOT(createNewFolder()));
+    connect(mActionBar, SIGNAL(deleteElements(const UBFeaturesMimeData *)), this, SLOT(deleteElements(const UBFeaturesMimeData *)));
+    connect(mActionBar, SIGNAL(deleteSelectedElements()), this, SLOT(deleteSelectedElements()));
+    connect(mActionBar, SIGNAL(addToFavorite(const UBFeaturesMimeData *)), this, SLOT(addToFavorite(const UBFeaturesMimeData *)));
+    connect(mActionBar, SIGNAL(removeFromFavorite(const UBFeaturesMimeData *)), this, SLOT(removeFromFavorite(const UBFeaturesMimeData *)));
+    connect(mActionBar, SIGNAL(addElementsToFavorite() ), this, SLOT ( addElementsToFavorite()) );
+    connect(mActionBar, SIGNAL(removeElementsFromFavorite()), this, SLOT (removeElementsFromFavorite()));
+
+    connect(mActionBar, SIGNAL(rescanModel()), this, SLOT(rescanModel()));
+    connect(pathListView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(currentSelected(const QModelIndex &)));
+    connect(UBApplication::boardController, SIGNAL(displayMetadata(QMap<QString,QString>)), this, SLOT(onDisplayMetadata( QMap<QString,QString>)));
+    connect(UBDownloadManager::downloadManager(), SIGNAL( addDownloadedFileToLibrary( bool, QUrl, QString, QByteArray, QString))
+             , this, SLOT(onAddDownloadedFileToLibrary(bool, QUrl, QString,QByteArray, QString)));
+    connect(centralWidget, SIGNAL(lockMainWidget(bool)), this, SLOT(lockIt(bool)));
+    connect(centralWidget, SIGNAL(createNewFolderSignal(QString)), controller, SLOT(addNewFolder(QString)));
+    connect(controller, SIGNAL(scanStarted()), centralWidget, SLOT(scanStarted()));
+    connect(controller, SIGNAL(scanFinished()), centralWidget, SLOT(scanFinished()));
+    connect(controller, SIGNAL(scanStarted()), mActionBar, SLOT(lockIt()));
+    connect(controller, SIGNAL(scanFinished()), mActionBar, SLOT(unlockIt()));
+    connect(controller, SIGNAL(maxFilesCountEvaluated(int)), centralWidget, SIGNAL(maxFilesCountEvaluated(int)));
+    connect(controller, SIGNAL(featureAddedFromThread()), centralWidget, SIGNAL(increaseStatusBarValue()));
+    connect(controller, SIGNAL(scanCategory(QString)), centralWidget, SIGNAL(scanCategory(QString)));
+    connect(controller, SIGNAL(scanPath(QString)), centralWidget, SIGNAL(scanPath(QString)));
+}
 
-	featuresModel = new UBFeaturesModel(this);
-	featuresModel->setFeaturesList( controller->getFeatures() );
-	featuresModel->setSupportedDragActions( Qt::CopyAction | Qt::MoveAction );
-	featuresListView = new UBFeaturesListView(this);
-	pathListView = new UBFeaturesListView(this);
+UBFeaturesWidget::~UBFeaturesWidget()
+{
+    if (NULL != imageGatherer)
+        delete imageGatherer;
+}
 
+void UBFeaturesWidget::searchStarted(const QString &pattern)
+{
+    controller->searchStarted(pattern, centralWidget->listView());
+}
 
-	featuresProxyModel = new UBFeaturesProxyModel(this);
-	featuresProxyModel->setFilterFixedString( controller->getRootPath() );
-	featuresProxyModel->setSourceModel( featuresModel );
-	featuresProxyModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
+void UBFeaturesWidget::currentSelected(const QModelIndex &current)
+{
+    if (!current.isValid()) {
+        qWarning() << "SLOT:currentSelected, invalid index catched";
+        return;
+    }
 
-	featuresSearchModel = new UBFeaturesSearchProxyModel(this);
-	featuresSearchModel->setSourceModel( featuresModel );
-	featuresSearchModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
+    QString objName = sender()->objectName();
 
-	featuresPathModel = new UBFeaturesPathProxyModel(this);
-	featuresPathModel->setPath( controller->getRootPath() );
-	featuresPathModel->setSourceModel( featuresModel );
-	
+    if (objName.isEmpty()) {
+        qWarning() << "incorrect sender";
+    } else if (objName == objNamePathList) {
+        //Calling to reset the model for listView. Maybe separate function needed
+        controller->searchStarted("", centralWidget->listView());
+    }
 
-	//featuresListView->setStyleSheet( QString("background: #EEEEEE;border-radius: 10px;border: 2px solid #999999;") );
-	featuresListView->setDragDropMode( QAbstractItemView::DragDrop );
-	featuresListView->setSelectionMode( QAbstractItemView::ContiguousSelection );
-	featuresListView->setModel( featuresProxyModel );
-
-	featuresListView->setResizeMode( QListView::Adjust );
-	featuresListView->setViewMode( QListView::IconMode );
-	itemDelegate = new UBFeaturesItemDelegate( this, featuresListView );
-	featuresListView->setItemDelegate( itemDelegate );
-	//featuresListView->setSelectionRectVisible(false);
-
-	featuresListView->setIconSize( QSize(defaultThumbnailSize, defaultThumbnailSize) );
-	featuresListView->setGridSize( QSize(defaultThumbnailSize * 1.75, defaultThumbnailSize * 1.75) );
-
-	//pathListView->setStyleSheet( QString("background: #EEEEEE; border-radius : 10px; border : 2px solid #999999;") );
-	pathListView->setModel( featuresPathModel );
-	pathListView->setViewMode( QListView::IconMode );
-	pathListView->setIconSize( QSize(defaultThumbnailSize - 10, defaultThumbnailSize - 10) );
-	pathListView->setGridSize( QSize(defaultThumbnailSize + 10, defaultThumbnailSize - 10) );
-	pathListView->setFixedHeight( 60 );
-	pathItemDelegate = new UBFeaturesPathItemDelegate( this );
-	pathListView->setItemDelegate( pathItemDelegate );
-	pathListView->setSelectionMode( QAbstractItemView::NoSelection );
-	pathListView->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
-    pathListView->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOn );
-	pathListView->setFlow( QListView::LeftToRight );
-	pathListView->setWrapping(false);
-	
-	//pathListView->setResizeMode( QListView::Adjust );
-	//pathListView->setMovement( QListView::Static );
-	pathListView->setDragDropMode( QAbstractItemView::DropOnly );
+    UBFeature feature = controller->getFeature(current, objName);
 
-	//pathViewer = new UBFeaturesPathViewer( QPixmap(":images/libpalette/home.png"), controller->getRootPath(), pathScene,  this );
-	featureProperties = new UBFeatureProperties(this);
-	webView = new UBFeaturesWebView(this);
-	
-	//layout->addWidget( pathViewer );
-	//pathViewer->show();
-	//layout->addWidget( featuresListView );
-	layout->addWidget( pathListView );
-	layout->addWidget( stackedWidget );
-
-	stackedWidget->addWidget( featuresListView );
-	stackedWidget->addWidget( featureProperties );
-	stackedWidget->addWidget( webView );
-	stackedWidget->setCurrentIndex(ID_LISTVIEW);
-    currentStackedWidget = ID_LISTVIEW;
-
-	mActionBar = new UBFeaturesActionBar(controller, this);
-	thumbSlider = new QSlider( Qt::Horizontal, featuresListView );
-	thumbSlider->setMinimum( minThumbnailSize );
-	thumbSlider->setMaximum( maxThumbnailSize );
-	thumbSlider->setValue( defaultThumbnailSize );
-	//qDebug() << "init" << featuresListView->height();
-	thumbSlider->move( 0, featuresListView->height()  );
-	thumbSlider->resize( thumbSlider->width(), thumbSlider->height() + 4 );
-	thumbSlider->show();
-	featuresListView->installEventFilter(this);
-	//layout->addWidget( thumbSlider );
-	layout->addWidget( mActionBar );
-
-	/*connect(featuresListView->selectionModel(), SIGNAL(currentChanged ( const QModelIndex &, const QModelIndex & )),
-		this, SLOT(currentSelected(const QModelIndex &)));*/
-	connect( featuresListView, SIGNAL(clicked ( const QModelIndex & ) ),
-		this, SLOT( currentSelected(const QModelIndex &) ) );
-	connect( mActionBar, SIGNAL( searchElement(const QString &) ), this, SLOT( searchStarted(const QString &) ) );
-	connect( mActionBar, SIGNAL( newFolderToCreate() ), this, SLOT( createNewFolder()  ) );
-	connect( mActionBar, SIGNAL( deleteElements(const QMimeData &) ), this, SLOT( deleteElements(const QMimeData &) ) ); 
-	connect( mActionBar, SIGNAL( addToFavorite(const QMimeData &) ), this, SLOT( addToFavorite(const QMimeData &) ) );
-	connect( mActionBar, SIGNAL( removeFromFavorite(const QMimeData &) ), this, SLOT( removeFromFavorite(const QMimeData &) ) );
-    connect( mActionBar, SIGNAL( addElementsToFavorite() ), this, SLOT ( addElementsToFavorite() ) );
-    connect( mActionBar, SIGNAL( removeElementsFromFavorite() ), this, SLOT ( removeElementsFromFavorite() ) );
-    connect( mActionBar, SIGNAL( deleteSelectedElements() ), this, SLOT( deleteSelectedElements() ) );
-	connect( pathListView, SIGNAL(clicked( const QModelIndex & ) ),
-		this, SLOT( currentPathChanged( const QModelIndex & ) ) );
-	connect( thumbSlider, SIGNAL( sliderMoved(int) ), this, SLOT(thumbnailSizeChanged( int ) ) );
-	connect( UBApplication::boardController, SIGNAL( displayMetadata( QMap<QString,QString> ) ), 
-		this, SLOT( onDisplayMetadata( QMap<QString,QString> ) ) );
-    connect( UBDownloadManager::downloadManager(), SIGNAL( addDownloadedFileToLibrary( bool, QUrl, QString, QByteArray ) ), 
-        this, SLOT( onAddDownloadedFileToLibrary( bool, QUrl, QString,QByteArray ) ) );
-}
+    if ( feature.isFolder() ) {
+        QString newPath = feature.getFullVirtualPath();
 
-UBFeaturesWidget::~UBFeaturesWidget()
-{
-	if ( thumbSlider != NULL )
-    {
-        delete thumbSlider;
-        thumbSlider = NULL;
+        controller->setCurrentElement(feature);
+        controller->siftElements(newPath);
+
+        centralWidget->switchTo(UBFeaturesCentralWidget::MainList);
+
+        if ( feature.getType() == FEATURE_FAVORITE ) {
+            mActionBar->setCurrentState( IN_FAVORITE );
+
+        }  else if ( feature.getType() == FEATURE_CATEGORY && feature.getName() == "root" ) {
+            mActionBar->setCurrentState( IN_ROOT );
+
+        } else if (feature.getType() == FEATURE_TRASH) {
+            mActionBar->setCurrentState(IN_TRASH);
+
+        } else if (feature.getType() == FEATURE_SEARCH) {
+            //The search feature behavior is not standard. If features list clicked - show empty element
+            //else show existing saved features search QWebView
+            if (sender()->objectName() == objNameFeatureList) {
+                centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturesWebView);
+            } else if (sender()->objectName() == objNamePathList) {
+                centralWidget->switchTo(UBFeaturesCentralWidget::FeaturesWebView);
+            }
+
+        } else  {
+            mActionBar->setCurrentState(IN_FOLDER);
+        }
+
+//    } else if (feature.getType() == FEATURE_SEARCH) {
+//        centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturesWebView);
+
+    } else {
+        centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturePropertiesList);
+        mActionBar->setCurrentState( IN_PROPERTIES );
     }
+    mActionBar->cleanText();
 }
 
-bool UBFeaturesWidget::eventFilter( QObject *target, QEvent *event )
+void UBFeaturesWidget::createNewFolder()
 {
-	if ( target == featuresListView && event->type() == QEvent::Resize )
-	{
-		thumbSlider->move( 10, featuresListView->height() - thumbSlider->height() - 10 );
-		thumbSlider->resize( featuresListView->width() - 20, thumbSlider->height() );
-		//qDebug() << featuresListView->height();
-		//return true;
-	}
-	return UBDockPaletteWidget::eventFilter(target, event);
+    centralWidget->showAdditionalData(UBFeaturesCentralWidget::NewFolderDialog, UBFeaturesCentralWidget::Modal);
+    emit sendFileNameList(controller->getFileNamesInFolders());
 }
 
-void UBFeaturesWidget::searchStarted( const QString &pattern )
+void UBFeaturesWidget::deleteElements( const UBFeaturesMimeData * mimeData )
 {
-	if ( pattern.isEmpty() )
-	{
-		featuresListView->setModel( featuresProxyModel );
-		featuresProxyModel->invalidate();
-	}
-	else if ( pattern.size() > 2 )
-	{
-		featuresSearchModel->setFilterWildcard( "*" + pattern + "*" );
-		featuresListView->setModel( featuresSearchModel );
-		featuresSearchModel->invalidate();
-	}
-}
+    if (!mimeData->features().count() )
+        return;
 
-void UBFeaturesWidget::currentSelected(const QModelIndex &current)
-{
-	if (current.isValid())
-	{
-		QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-		/*QString name = model->data(current).toString();
-		QString path = model->data(current, Qt::UserRole).toString();
-		eUBLibElementType type = (eUBLibElementType)model->data(current, Qt::UserRole + 1).toInt();*/
-		UBFeature feature = model->data(current, Qt::UserRole + 1).value<UBFeature>();
-
-		if ( feature.isFolder() )
-		{
-			QString newPath = feature.getFullVirtualPath();
-			//pathViewer->addPathElement( feature.getThumbnail(), newPath );
-			controller->setCurrentElement( feature );
-
-			model->setFilterFixedString( newPath );
-			model->invalidate();
-			switchToListView();
-
-			featuresPathModel->setPath( newPath );
-			featuresPathModel->invalidate();
-			if ( feature.getType() == FEATURE_FAVORITE )
-			{
-				mActionBar->setCurrentState( IN_FAVORITE );
-			}
-			else if (feature.getType() == FEATURE_TRASH)
-			{
-				mActionBar->setCurrentState( IN_TRASH );
-			}
-			else
-			{
-				mActionBar->setCurrentState( IN_FOLDER );
-			}
-		}
-		else if ( feature.getType() == FEATURE_SEARCH )
-		{
-			webView->showElement( feature );
-			switchToWebView();
-		}
-		else
-		{
-			featureProperties->showElement( feature );
-			switchToProperties();
-			mActionBar->setCurrentState( IN_PROPERTIES );
-		}
-		
-	}
-}
-
-void UBFeaturesWidget::currentPathChanged(const QModelIndex &index)
-{
-	if ( index.isValid() )	
-	{
-		UBFeature feature = featuresPathModel->data(index, Qt::UserRole + 1).value<UBFeature>();
-		QString newPath = feature.getFullVirtualPath();
-
-		featuresPathModel->setPath( newPath );
-		featuresPathModel->invalidate();
-
-		featuresListView->setModel( featuresProxyModel );
-		featuresProxyModel->setFilterFixedString(newPath);
-		featuresProxyModel->invalidate();
-		switchToListView();
-		controller->setCurrentElement( feature );
-		if ( feature.getType() == FEATURE_CATEGORY && feature.getName() == "root" )
-		{
-			mActionBar->setCurrentState( IN_ROOT );
-		}
-		else if (feature.getType() == FEATURE_FAVORITE)
-		{
-			mActionBar->setCurrentState( IN_FAVORITE );
-		}
-		else if (feature.getType() == FEATURE_TRASH)
-		{
-			mActionBar->setCurrentState( IN_TRASH );
-		}
-		else
-		{
-			mActionBar->setCurrentState( IN_FOLDER );
-		}
-	}
-}
+    QList<UBFeature> featuresList = mimeData->features();
 
-void UBFeaturesWidget::createNewFolder()
-{
-	UBNewFolderDlg dlg;
-    if(QDialog::Accepted == dlg.exec())
-    {
-		UBFeature newFolder = controller->newFolder( dlg.folderName() );
-		featuresModel->addItem( newFolder );
-		featuresProxyModel->invalidate();
+    foreach ( UBFeature curFeature, featuresList ) {
+        if ( curFeature.inTrash()) {
+            controller->deleteItem(curFeature.getFullPath());
+
+        } else {
+           controller->moveToTrash(curFeature);
+        }
     }
-}
 
-void UBFeaturesWidget::deleteElements( const QMimeData & mimeData )
-{
-	if ( !mimeData.hasUrls() )
-		return;
-	QList<QUrl> urls = mimeData.urls();
-	
-	foreach ( QUrl url, urls )
-	{
-		if ( controller->isTrash( url ) )
-		{
-			controller->deleteItem( url );
-		}
-		else
-		{
-			UBFeature elem = controller->moveItemToFolder( url, controller->getTrashElement() );
-			controller->removeFromFavorite( url );
-			featuresModel->addItem( elem );
-			featuresModel->deleteFavoriteItem( UBFeaturesController::fileNameFromUrl( url ) );
-		}
-	}
-	QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-	model->invalidate();
+    controller->refreshModels();
 }
 
 void UBFeaturesWidget::deleteSelectedElements()
 {
-    QModelIndexList selected = featuresListView->selectionModel()->selectedIndexes();
-    QList <QUrl> urls;
-    foreach ( QModelIndex sel, selected )
+    QModelIndexList selected = centralWidget->listView()->selectionModel()->selectedIndexes();
+
+    QList<UBFeature> featureasToMove;
+    for (int i = 0; i < selected.count(); i++)
     {
-        UBFeature feature = sel.data( Qt::UserRole + 1 ).value<UBFeature>();
-        if ( feature.isDeletable() )
-            urls.append( feature.getFullPath() );
+        featureasToMove.append(controller->getFeature(selected.at(i), objNameFeatureList));
     }
 
-    foreach (QUrl url, urls)
+    foreach (UBFeature feature, featureasToMove)
     {
-        if ( controller->isTrash( url ) )
-		{
-			controller->deleteItem( url );
-		}
-		else
-		{
-			UBFeature elem = controller->moveItemToFolder( url, controller->getTrashElement() );
-			controller->removeFromFavorite( url );
-			featuresModel->addItem( elem );
-            featuresModel->deleteFavoriteItem( url.toString() );
-		}
-        featuresModel->deleteItem( url.toString() );
+        if (feature.isDeletable()) {
+            if (feature.inTrash()) {
+                controller->deleteItem(feature);
+            } else {
+                controller->moveToTrash(feature, true);
+            }
+        }
     }
-    
-    QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-	model->invalidate();
+
+    controller->refreshModels();
 }
 
-void UBFeaturesWidget::addToFavorite( const QMimeData & mimeData )
+void UBFeaturesWidget::rescanModel()
 {
-	if ( !mimeData.hasUrls() )
-		return;
-	QList<QUrl> urls = mimeData.urls();
-	
-	foreach ( QUrl url, urls )
-	{
-		UBFeature elem = controller->addToFavorite( url );
-		if ( !elem.getVirtualPath().isEmpty() && !elem.getVirtualPath().isNull() )
-			featuresModel->addItem( elem );
-	}
-	QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-	model->invalidate();
+    controller->rescanModel();
 }
 
-void UBFeaturesWidget::removeFromFavorite( const QMimeData & mimeData )
+void UBFeaturesWidget::lockIt(bool pLock)
 {
-	if ( !mimeData.hasUrls() )
-		return;
-	QList<QUrl> urls = mimeData.urls();
-	foreach( QUrl url, urls )
-	{
-		controller->removeFromFavorite( url );
-	}
+    mActionBar->setEnabled(!pLock);
+    pathListView->setEnabled(!pLock);
+    centralWidget->setLockedExcludingAdditional(pLock);
 }
 
-void UBFeaturesWidget::thumbnailSizeChanged( int value )
+void UBFeaturesWidget::addToFavorite( const UBFeaturesMimeData * mimeData )
 {
-	featuresListView->setIconSize( QSize( value, value ) );
-	featuresListView->setGridSize( QSize( value * 1.75, value * 1.75 ) );
+    if ( !mimeData->hasUrls() )
+        return;
+
+    QList<QUrl> urls = mimeData->urls();
+    foreach ( QUrl url, urls ) {
+        controller->addToFavorite(url);
+    }
+
+    controller->refreshModels();
+}
+
+void UBFeaturesWidget::removeFromFavorite( const UBFeaturesMimeData * mimeData )
+{
+    if ( !mimeData->hasUrls() )
+        return;
+
+    QList<QUrl> urls = mimeData->urls();
+
+    foreach( QUrl url, urls ) {
+        controller->removeFromFavorite(url);
+    }
 }
 
 void UBFeaturesWidget::onDisplayMetadata( QMap<QString,QString> metadata )
 {
-	UBFeature feature( QString(), QPixmap(":images/libpalette/notFound.png"), QString(), metadata["Url"], FEATURE_ITEM );
-	feature.setMetadata( metadata );
+    QString previewImageUrl = ":images/libpalette/notFound.png";
+
+    QString widgetsUrl = QUrl::fromEncoded(metadata["Url"].toAscii()).toString()/*metadata.value("Url", QString())*/;
+    QString widgetsThumbsUrl = QUrl::fromEncoded(metadata["thumbnailUrl"].toAscii()).toString();
+
+    QString strType = UBFileSystemUtils::mimeTypeFromFileName(widgetsUrl);
+    UBMimeType::Enum thumbType = UBFileSystemUtils::mimeTypeFromString(strType);
+
+    switch (static_cast<int>(thumbType)) {
+    case UBMimeType::Audio:
+        previewImageUrl = ":images/libpalette/soundIcon.svg";
+        break;
+
+    case UBMimeType::Video:
+        previewImageUrl = ":images/libpalette/movieIcon.svg";
+        break;
+
+    case UBMimeType::Flash:
+        previewImageUrl = ":images/libpalette/FlashIcon.svg";
+        break;
 
-	featureProperties->showElement( feature );
-	switchToProperties();
-	mActionBar->setCurrentState( IN_PROPERTIES );
+    case UBMimeType::RasterImage:
+    case UBMimeType::VectorImage:
+        previewImageUrl = widgetsUrl;
+        break;
+    }
+
+    if (!widgetsThumbsUrl.isNull()) {
+        previewImageUrl = ":/images/libpalette/loading.png";
+        if (!imageGatherer)
+            imageGatherer = new UBDownloadHttpFile(0, this);
+
+        connect(imageGatherer, SIGNAL(downloadFinished(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)), this, SLOT(onPreviewLoaded(int, bool, QUrl, QUrl, QString, QByteArray, QPointF, QSize, bool)));
+
+        // We send here the request and store its reply in order to be able to cancel it if needed
+        imageGatherer->get(QUrl(widgetsThumbsUrl), QPoint(0,0), QSize(), false);
+    }
+
+    UBFeature feature( "/root", QImage(previewImageUrl), QString(), widgetsUrl, FEATURE_ITEM );
+    feature.setMetadata( metadata );
+
+    centralWidget->showElement(feature, UBFeaturesCentralWidget::FeaturePropertiesList);
+    mActionBar->setCurrentState( IN_PROPERTIES );
 }
 
-void UBFeaturesWidget::onAddDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentHeader, QByteArray pData)
+
+void UBFeaturesWidget::onPreviewLoaded(int id, bool pSuccess, QUrl sourceUrl, QUrl originalUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground)
 {
-    if ( pSuccess )
-    {
-        UBFeature newFeature = controller->addDownloadedFile( sourceUrl, pData );
-        if ( newFeature != UBFeature() )
-        {
-            featuresModel->addItem( newFeature );
-	        QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-	        model->invalidate();
-        }
+    Q_UNUSED(id);
+    Q_UNUSED(pSuccess);
+    Q_UNUSED(originalUrl);
+    Q_UNUSED(isBackground);
+    Q_UNUSED(pSize);
+    Q_UNUSED(pPos);
+    Q_UNUSED(sourceUrl);
+    Q_UNUSED(pContentTypeHeader)
+
+    QImage img;
+    img.loadFromData(pData);
+    QPixmap pix = QPixmap::fromImage(img);
+    centralWidget->setPropertiesPixmap(pix);
+    centralWidget->setPropertiesThumbnail(pix);
+}
+
+void UBFeaturesWidget::onAddDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentHeader, QByteArray pData, QString pTitle)
+{
+    if (pSuccess) {
+		qDebug() << pData.length();
+        controller->addDownloadedFile(sourceUrl, pData, pContentHeader, pTitle);
+        controller->refreshModels();
     }
 }
 
 void UBFeaturesWidget::addElementsToFavorite()
 {
-    if ( currentStackedWidget == ID_PROPERTIES )
-    {
-        UBFeature feature = featureProperties->getCurrentElement();
-        if ( feature != UBFeature() && !UBApplication::isFromWeb( feature.getFullPath().toString() ) )
-        {
-            UBFeature elem = controller->addToFavorite( feature.getFullPath() );
-            featuresModel->addItem( elem );
+    if ( centralWidget->currentView() == UBFeaturesCentralWidget::FeaturePropertiesList ) {
+        UBFeature feature = centralWidget->getCurElementFromProperties();
+        if ( feature != UBFeature() && !UBApplication::isFromWeb(feature.getFullPath().toString())) {
+            controller->addToFavorite( feature.getFullPath() );
         }
-    }
-    else if ( currentStackedWidget == ID_LISTVIEW )
-    {
-        QModelIndexList selected = featuresListView->selectionModel()->selectedIndexes();
-        for ( int i = 0; i < selected.size(); ++i )
-        {
+
+    } else if ( centralWidget->currentView() == UBFeaturesCentralWidget::MainList ) {
+        QModelIndexList selected = centralWidget->listView()->selectionModel()->selectedIndexes();
+        for ( int i = 0; i < selected.size(); ++i ) {
             UBFeature feature = selected.at(i).data( Qt::UserRole + 1 ).value<UBFeature>();
-            UBFeature elem = controller->addToFavorite( feature.getFullPath() );
-		    if ( !elem.getVirtualPath().isEmpty() && !elem.getVirtualPath().isNull() )
-			    featuresModel->addItem( elem );
-        }
+            controller->addToFavorite(feature.getFullPath());
+       }
     }
-    QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-	model->invalidate();
+
+    controller->refreshModels();
 }
 
 void UBFeaturesWidget::removeElementsFromFavorite()
 {
-    QModelIndexList selected = featuresListView->selectionModel()->selectedIndexes();
-    //qSort( selected.begin(), selected.end(), qGreater<QModelIndex>() );
+    QModelIndexList selected = centralWidget->listView()->selectionModel()->selectedIndexes();
     QList <QUrl> items;
-    for ( int i = 0; i < selected.size(); ++i )
-    {
+    for ( int i = 0; i < selected.size(); ++i )  {
         UBFeature feature = selected.at(i).data( Qt::UserRole + 1 ).value<UBFeature>();
         items.append( feature.getFullPath() );
     }
-    foreach ( QUrl url, items )
-    {
-        controller->removeFromFavorite( url );
-        featuresModel->deleteFavoriteItem( url.toString() );
+
+    foreach ( QUrl url, items )  {
+        controller->removeFromFavorite(url, true);
     }
-    QSortFilterProxyModel *model = dynamic_cast<QSortFilterProxyModel *>( featuresListView->model() );
-	model->invalidate();
+
+    controller->refreshModels();
 }
 
 void UBFeaturesWidget::switchToListView()
 {
-	stackedWidget->setCurrentIndex(ID_LISTVIEW);
-	currentStackedWidget = ID_LISTVIEW;
+//	stackedWidget->setCurrentIndex(ID_LISTVIEW);
+//	currentStackedWidget = ID_LISTVIEW;
 }
 
 void UBFeaturesWidget::switchToProperties()
 {
-	stackedWidget->setCurrentIndex(ID_PROPERTIES);
-	currentStackedWidget = ID_PROPERTIES;
+//	stackedWidget->setCurrentIndex(ID_PROPERTIES);
+//	currentStackedWidget = ID_PROPERTIES;
 }
 
 void UBFeaturesWidget::switchToWebView()
 {
-	stackedWidget->setCurrentIndex(ID_WEBVIEW);
-	currentStackedWidget = ID_WEBVIEW;
+//	stackedWidget->setCurrentIndex(ID_WEBVIEW);
+//	currentStackedWidget = ID_WEBVIEW;
 }
 
-/*
+QStringList UBFeaturesMimeData::formats() const
+{
+    return QMimeData::formats();
+}
 
-void UBFeaturesWidget::currentPathChanged(const QString &path)
+void UBFeaturesWidget::importImage(const QImage &image, const QString &fileName)
 {
-	int newDepth = path.count("/");
-	pathViewer->truncatePath(newDepth);
-	featuresListView->setModel( featuresProxyModel );
-	featuresProxyModel->setFilterFixedString(path);
-	featuresProxyModel->invalidate();
-	switchToListView();
+    controller->importImage(image, fileName);
 }
-*/
 
+UBFeaturesListView::UBFeaturesListView( QWidget* parent, const char* name )
+    : QListView(parent)
+{
+    setObjectName(name);
+}
 
+void UBFeaturesListView::dragEnterEvent( QDragEnterEvent *event )
+{
+    if ( event->mimeData()->hasUrls() || event->mimeData()->hasImage() )
+        event->acceptProposedAction();
+}
 
+void UBFeaturesListView::dragMoveEvent( QDragMoveEvent *event )
+{
+    const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
+    QModelIndex index = indexAt(event->pos());
+    UBFeature onFeature = model()->data(index, Qt::UserRole + 1).value<UBFeature>();
+    if (fMimeData) {
+        if (!index.isValid() || !onFeature.isFolder()) {
+            event->ignore();
+            return;
+        }
+        foreach (UBFeature curFeature, fMimeData->features()) {
+            if (curFeature == onFeature) {
+                event->ignore();
+                return;
+            }
+        }
+     }
 
-UBFeaturesListView::UBFeaturesListView( QWidget* parent, const char* name ) 
-: QListView(parent)
+    if ( event->mimeData()->hasUrls() || event->mimeData()->hasImage() ) {
+        event->acceptProposedAction();
+    } else {
+        event->ignore();
+    }
+}
+
+void UBFeaturesListView::dropEvent( QDropEvent *event )
 {
-	setObjectName(name);
-	//rubberBand = new UBRubberBand( QRubberBand::Rectangle, this ); 
+    QWidget *eventSource = event->source();
+    if (eventSource && eventSource->objectName() == UBFeaturesWidget::objNameFeatureList) {
+        event->setDropAction( Qt::MoveAction );
+    }
+
+    QListView::dropEvent( event );
 }
 
-/*
-void UBFeaturesListView::mousePressEvent( QMouseEvent *event )
+void UBFeaturesListView::thumbnailSizeChanged( int value )
 {
-	rubberOrigin = event->pos();
-	rubberBand->setGeometry( QRect( rubberOrigin, QSize() ) );
-	//qDebug()  << rubberOrigin.x() << rubberOrigin.y();
-	rubberBand->show();
-	QListView::mousePressEvent(event);
+    setIconSize(QSize(value, value));
+    setGridSize(QSize(value + 20, value + 20 ));
+
+    UBSettings::settings()->featureSliderPosition->set(value);
 }
 
-void UBFeaturesListView::mouseMoveEvent( QMouseEvent *event )
+UBFeaturesNavigatorWidget::UBFeaturesNavigatorWidget(QWidget *parent, const char *name) :
+    QWidget(parent), mListView(0), mListSlider(0)
+
 {
-	QPoint current = event->pos();
-	rubberBand->setGeometry( QRect( rubberOrigin, current ).normalized() );
+    name = "UBFeaturesNavigatorWidget";
+
+    setObjectName(name);
+//    SET_STYLE_SHEET()
+
+    mListView = new UBFeaturesListView(this, UBFeaturesWidget::objNameFeatureList);
 
-	//setSelection( rubberBand->rect(), QItemSelectionModel::Select );
-	QListView::mouseMoveEvent(event);
+    mListSlider = new QSlider(Qt::Horizontal, this);
+
+    mListSlider->setMinimum(UBFeaturesWidget::minThumbnailSize);
+    mListSlider->setMaximum(UBFeaturesWidget::maxThumbnailSize);
+    mListSlider->setValue(UBFeaturesWidget::minThumbnailSize);
+    mListSlider->setMinimumHeight(20);
+
+    mListView->setParent(this);
+    QVBoxLayout *mainLayer = new QVBoxLayout(this);
+
+    mainLayer->addWidget(mListView, 1);
+    mainLayer->addWidget(mListSlider, 0);
+    mainLayer->setMargin(0);
+
+    connect(mListSlider, SIGNAL(valueChanged(int)), mListView, SLOT(thumbnailSizeChanged(int)));
 }
 
-void UBFeaturesListView::mouseReleaseEvent( QMouseEvent *event )
+void UBFeaturesNavigatorWidget::setSliderPosition(int pValue)
 {
-	rubberBand->hide();
-	QListView::mouseReleaseEvent(event);
+    mListSlider->setValue(pValue);
 }
 
-*/
-void UBFeaturesListView::dragEnterEvent( QDragEnterEvent *event )
+UBFeaturesCentralWidget::UBFeaturesCentralWidget(QWidget *parent) : QWidget(parent)
 {
-    if ( event->mimeData()->hasUrls() || event->mimeData()->hasImage() )
-		event->acceptProposedAction();
+    setObjectName("UBFeaturesCentralWidget");
+    SET_STYLE_SHEET();
+
+    QVBoxLayout *mLayout = new QVBoxLayout(this);
+    setLayout(mLayout);
+
+    //Maintains the view of the main part of the palette. Consists of
+    //mNavigator
+    //featureProperties
+    //webVeiw
+    mStackedWidget = new QStackedWidget(this);
+
+    //Main features icon view with QSlider on the bottom
+    mNavigator = new UBFeaturesNavigatorWidget(this);
+
+    //Specifies the properties of a standalone element
+    mFeatureProperties = new UBFeatureProperties(this);
+
+    //Used to show search bar on the search widget
+    webView = new UBFeaturesWebView(this);
+
+    //filling stackwidget
+    mStackedWidget->addWidget(mNavigator);
+    mStackedWidget->addWidget(mFeatureProperties);
+    mStackedWidget->addWidget(webView);
+    mStackedWidget->setCurrentIndex(MainList);
+    mStackedWidget->setContentsMargins(0, 0, 0, 0);
+
+
+    mAdditionalDataContainer = new QStackedWidget(this);
+    mAdditionalDataContainer->setObjectName("mAdditionalDataContainer");
+
+    //New folder dialog
+    UBFeaturesNewFolderDialog *dlg = new UBFeaturesNewFolderDialog(mAdditionalDataContainer);
+    mAdditionalDataContainer->addWidget(dlg);
+    mAdditionalDataContainer->setCurrentIndex(NewFolderDialog);
+
+    connect(dlg, SIGNAL(createNewFolder(QString)), this, SLOT(createNewFolderSlot(QString)));
+    connect(dlg, SIGNAL(closeDialog()), this, SLOT(hideAdditionalData()));
+    connect(this, SIGNAL(sendFileNameList(QStringList)), dlg, SLOT(setFileNameList(QStringList)));
+
+    //Progress bar to show scanning progress
+    UBFeaturesProgressInfo *progressBar = new UBFeaturesProgressInfo();
+    mAdditionalDataContainer->addWidget(progressBar);
+    mAdditionalDataContainer->setCurrentIndex(ProgressBarWidget);
+
+    connect(this, SIGNAL(maxFilesCountEvaluated(int)), progressBar, SLOT(setProgressMax(int)));
+    connect(this, SIGNAL(increaseStatusBarValue()), progressBar, SLOT(increaseProgressValue()));
+    connect(this, SIGNAL(scanCategory(QString)), progressBar, SLOT(setCommmonInfoText(QString)));
+    connect(this, SIGNAL(scanPath(QString)), progressBar, SLOT(setDetailedInfoText(QString)));
+
+    mLayout->addWidget(mStackedWidget, 1);
+    mLayout->addWidget(mAdditionalDataContainer, 0);
+
+    mAdditionalDataContainer->hide();
 }
 
-void UBFeaturesListView::dragMoveEvent( QDragMoveEvent *event )
+void UBFeaturesCentralWidget::showElement(const UBFeature &feature, StackElement pView)
 {
-    if ( event->mimeData()->hasUrls() || event->mimeData()->hasImage() )
-        event->acceptProposedAction();
+    if (pView == FeaturesWebView) {
+        webView->showElement(feature);
+        mStackedWidget->setCurrentIndex(FeaturesWebView);
+    } else if (pView == FeaturePropertiesList) {
+        mFeatureProperties->showElement(feature);
+        mStackedWidget->setCurrentIndex(FeaturePropertiesList);
+    }
 }
 
-void UBFeaturesListView::dropEvent( QDropEvent *event )
+void UBFeaturesCentralWidget::switchTo(StackElement pView)
+{
+    mStackedWidget->setCurrentIndex(pView);
+}
+
+void UBFeaturesCentralWidget::setPropertiesPixmap(const QPixmap &pix)
+{
+    mFeatureProperties->setOrigPixmap(pix);
+}
+
+void UBFeaturesCentralWidget::setPropertiesThumbnail(const QPixmap &pix)
+{
+    mFeatureProperties->setThumbnail(pix);
+}
+
+UBFeature UBFeaturesCentralWidget::getCurElementFromProperties()
 {
-	if( event->source() && dynamic_cast<UBFeaturesListView *>( event->source() ) )
-	{
-		event->setDropAction( Qt::MoveAction );
-	}
-	QListView::dropEvent( event ); 
+    return mFeatureProperties->getCurrentElement();
+}
+
+void UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState)
+{
+    if (!mAdditionalDataContainer->widget(pWidgetType)) {
+        qDebug() << "can't find widget specified by UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState)";
+        return;
+    }
+
+    mAdditionalDataContainer->setMaximumHeight(mAdditionalDataContainer->widget(pWidgetType)->sizeHint().height());
+
+    mAdditionalDataContainer->setCurrentIndex(pWidgetType);
+    mAdditionalDataContainer->show();
+    emit lockMainWidget(pState == Modal ? true : false);
+}
+
+void UBFeaturesCentralWidget::setLockedExcludingAdditional(bool pLock)
+{
+//    Lock all the members excluding mAdditionalDataContainer
+    mStackedWidget->setEnabled(!pLock);
+}
+
+void UBFeaturesCentralWidget::createNewFolderSlot(QString pStr)
+{
+    emit createNewFolderSignal(pStr);
+    hideAdditionalData();
+}
+
+void UBFeaturesCentralWidget::hideAdditionalData()
+{
+    emit lockMainWidget(false);
+    mAdditionalDataContainer->hide();
+}
+
+void UBFeaturesCentralWidget::scanStarted()
+{
+    showAdditionalData(ProgressBarWidget);
+}
+
+void UBFeaturesCentralWidget::scanFinished()
+{
+    hideAdditionalData();
+}
+
+UBFeaturesNewFolderDialog::UBFeaturesNewFolderDialog(QWidget *parent) : QWidget(parent)
+  , acceptText(tr("Accept"))
+  , cancelText(tr("Cancel"))
+  , labelText(tr("Enter a new folder name"))
+{
+    this->setStyleSheet("background:white;");
+
+    QVBoxLayout *mainLayout = new QVBoxLayout(this);
+
+    QVBoxLayout *labelLayout = new QVBoxLayout();
+
+    QLabel *mLabel = new QLabel(labelText, this);
+    mLineEdit = new QLineEdit(this);
+
+    mValidator = new QRegExpValidator(QRegExp("[^\\/\\:\\?\\*\\|\\<\\>\\\"]{2,}"), this);
+    mLineEdit->setValidator(mValidator);
+    labelLayout->addWidget(mLabel);
+    labelLayout->addWidget(mLineEdit);
+
+    QHBoxLayout *buttonLayout = new QHBoxLayout();
+
+    acceptButton = new QPushButton(acceptText, this);
+    QPushButton *cancelButton = new QPushButton(cancelText, this);
+    buttonLayout->addWidget(acceptButton);
+    buttonLayout->addWidget(cancelButton);
+
+    mainLayout->addLayout(labelLayout);
+    mainLayout->addLayout(buttonLayout);
+
+    acceptButton->setEnabled(false);
+
+    connect(acceptButton, SIGNAL(clicked()), this, SLOT(accept()));
+    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
+    connect(mLineEdit, SIGNAL(textEdited(QString)), this, SLOT(reactOnTextChanged(QString)));
+
+    reactOnTextChanged(QString());
+}
+
+void UBFeaturesNewFolderDialog::setRegexp(const QRegExp pRegExp)
+{
+    mValidator->setRegExp(pRegExp);
+}
+bool UBFeaturesNewFolderDialog::validString(const QString &pStr)
+{
+    return mLineEdit->hasAcceptableInput() && !mFileNameList.contains(pStr, Qt::CaseSensitive);
+}
+
+void UBFeaturesNewFolderDialog::accept()
+{
+//     Setting all the constraints we need
+    emit createNewFolder(mLineEdit->text());
+    mLineEdit->clear();
+}
+void UBFeaturesNewFolderDialog::reject()
+{
+    mLineEdit->clear();
+    emit closeDialog();
+}
+void UBFeaturesNewFolderDialog::setFileNameList(const QStringList &pLst)
+{
+    mFileNameList = pLst;
+}
+void UBFeaturesNewFolderDialog::reactOnTextChanged(const QString &pStr)
+{
+    if (validString(pStr)) {
+        acceptButton->setEnabled(true);
+        mLineEdit->setStyleSheet("background:white;");
+    } else {
+        acceptButton->setEnabled(false);
+        mLineEdit->setStyleSheet("background:#FFB3C8;");
+    }
+}
+
+UBFeaturesProgressInfo::UBFeaturesProgressInfo(QWidget *parent) :
+    QWidget(parent),
+    mProgressBar(0),
+    mCommonInfoLabel(0),
+    mDetailedInfoLabel(0)
+{
+    QVBoxLayout *mainLayer = new QVBoxLayout(this);
+
+    mProgressBar = new QProgressBar(this);
+//    setting defaults
+    mProgressBar->setMinimum(0);
+    mProgressBar->setMaximum(100000);
+    mProgressBar->setValue(0);
+
+    mProgressBar->setStyleSheet("background:white");
+
+    mCommonInfoLabel = new QLabel(this);
+    mDetailedInfoLabel = new QLabel(this);
+    mDetailedInfoLabel->setAlignment(Qt::AlignRight);
+    mCommonInfoLabel->hide();
+    mDetailedInfoLabel->hide();
+
+    mainLayer->addWidget(mCommonInfoLabel);
+    mainLayer->addWidget(mDetailedInfoLabel);
+    mainLayer->addWidget(mProgressBar);
+}
+
+void UBFeaturesProgressInfo::setCommmonInfoText(const QString &str)
+{
+    mProgressBar->setFormat(tr("Loading ") + str + " (%p%)");
+}
+
+void UBFeaturesProgressInfo::setDetailedInfoText(const QString &str)
+{
+    mDetailedInfoLabel->setText(str);
+}
+
+void UBFeaturesProgressInfo::setProgressMax(int pValue)
+{
+    mProgressBar->setMaximum(pValue);
+}
+
+void UBFeaturesProgressInfo::setProgressMin(int pValue)
+{
+    mProgressBar->setMinimum(pValue);
+}
+
+void UBFeaturesProgressInfo::increaseProgressValue()
+{
+    mProgressBar->setValue(mProgressBar->value() + 1);
+}
+
+void UBFeaturesProgressInfo::sendFeature(UBFeature pFeature)
+{
+    Q_UNUSED(pFeature);
 }
 
 
@@ -526,7 +764,7 @@ UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget(
     mpView->setObjectName("SearchEngineView");
     mpSankoreAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene());
     mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
-
+    connect(mpView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
     mpWebSettings = QWebSettings::globalSettings();
     mpWebSettings->setAttribute(QWebSettings::JavaEnabled, true);
     mpWebSettings->setAttribute(QWebSettings::PluginsEnabled, true);
@@ -537,6 +775,7 @@ UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget(
     mpWebSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
 
     mpLayout->addWidget(mpView);
+    mpLayout->setMargin(0);
 
     connect(mpView, SIGNAL(loadFinished(bool)), this, SLOT(onLoadFinished(bool)));
 }
@@ -560,38 +799,43 @@ UBFeaturesWebView::~UBFeaturesWebView()
     }
 }
 
+void UBFeaturesWebView::javaScriptWindowObjectCleared()
+{
+    mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
+}
+
 void UBFeaturesWebView::showElement(const UBFeature &elem)
 {
-	QString qsWidgetName;
+    QString qsWidgetName;
     QString path = elem.getFullPath().toLocalFile();
 
-	QString qsConfigPath = QString("%0/config.xml").arg(path);
-
-	if(QFile::exists(qsConfigPath))
-	{
-		QFile f(qsConfigPath);
-		if(f.open(QIODevice::ReadOnly))
-		{
-			QDomDocument domDoc;
-			domDoc.setContent(QString(f.readAll()));
-			QDomElement root = domDoc.documentElement();
-
-			QDomNode node = root.firstChild();
-			while(!node.isNull())
-			{
-				if(node.toElement().tagName() == "content")
-				{
-					QDomAttr srcAttr = node.toElement().attributeNode("src");
-					qsWidgetName = srcAttr.value();
-					break;
-				}
-				node = node.nextSibling();
-			}
-			f.close();
-		}
-	}
-
-	mpView->load(QUrl::fromLocalFile(QString("%0/%1").arg(path).arg(qsWidgetName)));    
+    QString qsConfigPath = QString("%0/config.xml").arg(path);
+
+    if(QFile::exists(qsConfigPath))
+    {
+        QFile f(qsConfigPath);
+        if(f.open(QIODevice::ReadOnly))
+        {
+            QDomDocument domDoc;
+            domDoc.setContent(QString(f.readAll()));
+            QDomElement root = domDoc.documentElement();
+
+            QDomNode node = root.firstChild();
+            while(!node.isNull())
+            {
+                if(node.toElement().tagName() == "content")
+                {
+                    QDomAttr srcAttr = node.toElement().attributeNode("src");
+                    qsWidgetName = srcAttr.value();
+                    break;
+                }
+                node = node.nextSibling();
+            }
+            f.close();
+        }
+    }
+
+    mpView->load(QUrl::fromLocalFile(QString("%0/%1").arg(path).arg(qsWidgetName)));
 }
 
 void UBFeaturesWebView::onLoadFinished(bool ok)
@@ -609,15 +853,12 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
     , mpAddToLibButton(NULL)
     , mpSetAsBackgroundButton(NULL)
     , mpObjInfoLabel(NULL)
+    , mpObjInfos(NULL)
     , mpThumbnail(NULL)
     , mpOrigPixmap(NULL)
     , mpElement(NULL)
-    , mpObjInfos(NULL)
 {
-	setObjectName(name);
-
-    SET_STYLE_SHEET();
-    //setStyleSheet(UBApplication::globalStyleSheet());
+    setObjectName(name);
 
     // Create the GUI
     mpLayout = new QVBoxLayout(this);
@@ -652,7 +893,7 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
 
     mpButtonLayout->addStretch(1);
 
-	mpObjInfoLabel = new QLabel(tr("Object informations"));
+    mpObjInfoLabel = new QLabel(tr("Object informations"));
     mpObjInfoLabel->setStyleSheet(QString("color: #888888; font-size : 18px; font-weight:bold;"));
     mpLayout->addWidget(mpObjInfoLabel, 0);
 
@@ -664,24 +905,25 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
     mpObjInfos->setObjectName("DockPaletteWidgetBox");
     mpObjInfos->setStyleSheet("background:white;");
     mpLayout->addWidget(mpObjInfos, 1);
+    mpLayout->setMargin(0);
 
-	connect( mpAddPageButton, SIGNAL(clicked()), this, SLOT(onAddToPage()) );
+    connect( mpAddPageButton, SIGNAL(clicked()), this, SLOT(onAddToPage()) );
     connect( mpSetAsBackgroundButton, SIGNAL( clicked() ), this, SLOT( onSetAsBackground() ) );
     connect( mpAddToLibButton, SIGNAL( clicked() ), this, SLOT(onAddToLib() ) );
 }
 
 UBFeatureProperties::~UBFeatureProperties()
 {
-	if ( mpOrigPixmap )
+    if ( mpOrigPixmap )
     {
         delete mpOrigPixmap;
         mpOrigPixmap = NULL;
     }
-	if ( mpElement )
-	{
-		delete mpElement;
-		mpElement = NULL;
-	}
+    if ( mpElement )
+    {
+        delete mpElement;
+        mpElement = NULL;
+    }
     if ( mpThumbnail )
     {
         delete mpThumbnail;
@@ -735,9 +977,25 @@ UBFeature UBFeatureProperties::getCurrentElement() const
 {
     if ( mpElement )
         return *mpElement;
+
     return UBFeature();
 }
 
+void UBFeatureProperties::setOrigPixmap(const QPixmap &pix)
+{
+
+    if (mpOrigPixmap)
+        delete mpOrigPixmap;
+
+    mpOrigPixmap = new QPixmap(pix);
+}
+
+void UBFeatureProperties::setThumbnail(const QPixmap &pix)
+{
+    mpThumbnail->setPixmap(pix.scaledToWidth(THUMBNAIL_WIDTH));
+    adaptSize();
+}
+
 void UBFeatureProperties::adaptSize()
 {
     if( NULL != mpOrigPixmap )
@@ -753,44 +1011,44 @@ void UBFeatureProperties::adaptSize()
     }
 }
 
-void UBFeatureProperties::showElement( const UBFeature &elem )
+void UBFeatureProperties::showElement(const UBFeature &elem)
 {
-	if ( mpOrigPixmap )
+    if ( mpOrigPixmap )
     {
         delete mpOrigPixmap;
         mpOrigPixmap = NULL;
     }
-	if ( mpElement )
-	{
-		delete mpElement;
-		mpElement = NULL;
-	}
-    mpElement = new UBFeature( elem );
-	mpOrigPixmap = new QPixmap( elem.getThumbnail() );
-	mpThumbnail->setPixmap(elem.getThumbnail().scaledToWidth(THUMBNAIL_WIDTH));
+    if ( mpElement )
+    {
+        delete mpElement;
+        mpElement = NULL;
+    }
+    mpElement = new UBFeature(elem);
+    mpOrigPixmap = new QPixmap(QPixmap::fromImage(elem.getThumbnail()));
+    mpThumbnail->setPixmap(QPixmap::fromImage(elem.getThumbnail()).scaledToWidth(THUMBNAIL_WIDTH));
     populateMetadata();
 
     if ( UBApplication::isFromWeb( elem.getFullPath().toString() ) )
-	{
+    {
         mpAddToLibButton->show();
-		if( elem.getMetadata()["Type"].toLower().contains("image") )
-		{
+        if( elem.getMetadata()["Type"].toLower().contains("image") )
+        {
             mpSetAsBackgroundButton->show();
         }
-		else
-		{
+        else
+        {
             mpSetAsBackgroundButton->hide();
         }
     }
-	else
-	{
+    else
+    {
         mpAddToLibButton->hide();
         if (UBFileSystemUtils::mimeTypeFromFileName( elem.getFullPath().toLocalFile() ).contains("image"))
-		{
+        {
             mpSetAsBackgroundButton->show();
         }
-	    else
-		{
+        else
+        {
             mpSetAsBackgroundButton->hide();
         }
     }
@@ -800,7 +1058,7 @@ void UBFeatureProperties::populateMetadata()
 {
     if(NULL != mpObjInfos){
         mpObjInfos->clear();
-		QMap<QString, QString> metas = mpElement->getMetadata();
+        QMap<QString, QString> metas = mpElement->getMetadata();
         QList<QString> lKeys = metas.keys();
         QList<QString> lValues = metas.values();
 
@@ -817,9 +1075,10 @@ void UBFeatureProperties::populateMetadata()
 
 void UBFeatureProperties::onAddToPage()
 {
-	QWidget *w = parentWidget()->parentWidget();
-    UBFeaturesWidget* featuresWidget = dynamic_cast<UBFeaturesWidget*>( w );
-    featuresWidget->getFeaturesController()->addItemToPage( *mpElement );
+    QWidget *w = parentWidget()->parentWidget()->parentWidget();
+    UBFeaturesWidget* featuresWidget = qobject_cast<UBFeaturesWidget*>( w );
+    if (featuresWidget)
+        featuresWidget->getFeaturesController()->addItemToPage( *mpElement );
 }
 
 void UBFeatureProperties::onAddToLib()
@@ -829,10 +1088,19 @@ void UBFeatureProperties::onAddToLib()
         sDownloadFileDesc desc;
         desc.isBackground = false;
         desc.modal = false;
-        desc.name = QFileInfo( mpElement->getFullPath().toString()).fileName();
+        desc.dest = sDownloadFileDesc::library;
+        desc.name = mpElement->getMetadata().value("Title", QString());
         qDebug() << desc.name;
-        desc.url = mpElement->getFullPath().toString();
-        qDebug() << desc.url;
+        desc.srcUrl = mpElement->getFullPath().toString();
+        QString str1 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_C);
+        QString str2 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_D);
+        QString str3 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_KC);
+        QString str4 = mpElement->getFullPath().toString().normalized(QString::NormalizationForm_KD);
+        qDebug() << desc.srcUrl << endl
+                    << "str1" << str1 << endl
+                    << "str2" << str2 << endl
+                    << "str3" << str3 << endl
+                    << "str4" << str4 << endl;
         UBDownloadManager::downloadManager()->addFileToDownload(desc);
     }
 }
@@ -840,8 +1108,8 @@ void UBFeatureProperties::onAddToLib()
 
 void UBFeatureProperties::onSetAsBackground()
 {
-    QWidget *w = parentWidget()->parentWidget();
-    UBFeaturesWidget* featuresWidget = dynamic_cast<UBFeaturesWidget*>( w );
+    QWidget *w = parentWidget()->parentWidget()->parentWidget();
+    UBFeaturesWidget* featuresWidget = qobject_cast<UBFeaturesWidget*>( w );
     featuresWidget->getFeaturesController()->addItemAsBackground( *mpElement );
 }
 
@@ -855,56 +1123,57 @@ UBFeatureItemButton::UBFeatureItemButton(QWidget *parent, const char *name):QPus
 
 UBFeatureItemButton::~UBFeatureItemButton()
 {
-
 }
 
 QVariant UBFeaturesModel::data(const QModelIndex &index, int role) const
 {
-	if (!index.isValid())
+    if (!index.isValid())
         return QVariant();
 
-	if (role == Qt::DisplayRole)
-		return featuresList->at(index.row()).getName();
-	else if (role == Qt::DecorationRole)
-	{
-		return QIcon( featuresList->at(index.row()).getThumbnail() );
-	}
-	else if (role == Qt::UserRole)
-	{
-		return featuresList->at(index.row()).getVirtualPath();
-	}
-	else if (role == Qt::UserRole + 1)
-	{
-		//return featuresList->at(index.row()).getType();
-		UBFeature f = featuresList->at(index.row());
-		return QVariant::fromValue( f );
-	}
-
-	return QVariant();
+    if (role == Qt::DisplayRole) {
+        return featuresList->at(index.row()).getDisplayName();
+    }
+
+    else if (role == Qt::DecorationRole) {
+        return QIcon( QPixmap::fromImage(featuresList->at(index.row()).getThumbnail()));
+
+    } else if (role == Qt::UserRole) {
+        return featuresList->at(index.row()).getVirtualPath();
+
+    }	else if (role == Qt::UserRole + 1) {
+        //return featuresList->at(index.row()).getType();
+        UBFeature f = featuresList->at(index.row());
+        return QVariant::fromValue( f );
+    }
+
+    return QVariant();
 }
 
 QMimeData* UBFeaturesModel::mimeData(const QModelIndexList &indexes) const
 {
-	QMimeData *mimeData = new QMimeData();
-	QList <QUrl> urlList;
+    UBFeaturesMimeData *mimeData = new UBFeaturesMimeData();
+    QList <QUrl> urlList;
+    QList <UBFeature> featuresList;
+    QByteArray typeData;
 
-	foreach (QModelIndex index, indexes)
-	{
-		if ( index.isValid() )
-		{
-			UBFeature element = data( index, Qt::UserRole + 1 ).value<UBFeature>();
+    foreach (QModelIndex index, indexes) {
+
+        if (index.isValid()) {
+            UBFeature element = data(index, Qt::UserRole + 1).value<UBFeature>();
             urlList.push_back( element.getFullPath() );
-			/*if ( element.getType() == FEATURE_INTERNAL )
-			{
-				urlList.push_back( QUrl( element.getFullPath() ) );
-			}
-			else if ( element.getType() == FEATURE_INTERACTIVE || element.getType() == FEATURE_ITEM )
-			{
-				urlList.push_back( element.getFullPath() );
-			}*/
-		}
-	}
-	mimeData->setUrls( urlList );
+            QString curPath = element.getFullPath().toLocalFile();
+            featuresList.append(element);
+
+            if (!typeData.isNull()) {
+                typeData += UBFeaturesController::featureTypeSplitter();
+            }
+            typeData += QString::number(element.getType()).toAscii();
+        }
+    }
+
+    mimeData->setUrls(urlList);
+    mimeData->setFeatures(featuresList);
+    mimeData->setData(mimeSankoreFeatureTypes, typeData);
 
     return mimeData;
 }
@@ -913,194 +1182,272 @@ bool UBFeaturesModel::dropMimeData(const QMimeData *mimeData, Qt::DropAction act
 {
     Q_UNUSED(row)
 
-    if ( !mimeData->hasUrls() && !mimeData->hasImage() )
-		return false;
-	if ( action == Qt::IgnoreAction )
-		return true;
-	if ( column > 0 )
-		return false;
-
-    int endRow = 0;
-
-	UBFeature parentFeature;
-    if ( !parent.isValid() )
-	{
-		parentFeature = dynamic_cast<UBFeaturesWidget *>(QObject::parent())->getFeaturesController()->getCurrentElement();
-    } 
-	else
-	{
-		parentFeature = parent.data( Qt::UserRole + 1).value<UBFeature>();
-	}
-
-    if ( mimeData->hasUrls() )
-    {
-	    QList<QUrl> urls = mimeData->urls();
-    	
-	    foreach ( QUrl url, urls )
-	    {
-	        UBFeature element;
-    		
-	        if ( action == Qt::MoveAction )
-	        {
-		        element = dynamic_cast<UBFeaturesWidget *>(QObject::parent())->getFeaturesController()->moveItemToFolder( url, parentFeature );
-	        }
-	        else
-	        {
-		        element = dynamic_cast<UBFeaturesWidget *>(QObject::parent())->getFeaturesController()->copyItemToFolder( url, parentFeature );
-	        }
-	        addItem( element );
-	    }
+    const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(mimeData);
+    UBFeaturesController *curController = qobject_cast<UBFeaturesController *>(QObject::parent());
+
+    bool dataFromSameModel = false;
+
+    if (fMimeData)
+        dataFromSameModel = true;
+
+    if ((!mimeData->hasUrls() && !mimeData->hasImage()) )
+        return false;
+    if ( action == Qt::IgnoreAction )
+        return true;
+    if ( column > 0 )
+        return false;
+
+    UBFeature parentFeature;
+    if (!parent.isValid()) {
+        parentFeature = curController->getCurrentElement();
+    } else {
+        parentFeature = parent.data( Qt::UserRole + 1).value<UBFeature>();
     }
-    else if ( mimeData->hasImage() )
-    {
+
+    if (dataFromSameModel) {
+        QList<UBFeature> featList = fMimeData->features();
+        for (int i = 0; i < featList.count(); i++) {
+            UBFeature sourceElement;
+            if (dataFromSameModel) {
+                sourceElement = featList.at(i);
+                moveData(sourceElement, parentFeature, Qt::MoveAction);
+            }
+        }
+    } else if (mimeData->hasUrls()) {
+        QList<QUrl> urlList = mimeData->urls();
+        foreach (QUrl curUrl, urlList) {
+            qDebug() << "URl catched is " << curUrl.toLocalFile();
+            curController->moveExternalData(curUrl, parentFeature);
+        }
+    } else if (mimeData->hasImage()) {
         QImage image = qvariant_cast<QImage>( mimeData->imageData() );
-        UBFeature element = dynamic_cast<UBFeaturesWidget *>(QObject::parent())->getFeaturesController()->importImage( image, parentFeature );
-        addItem( element );
+        curController->importImage( image, parentFeature );
+
     }
-	return true;
+
+    return true;
 }
 
 void UBFeaturesModel::addItem( const UBFeature &item )
 {
-	beginInsertRows( QModelIndex(), featuresList->size(), featuresList->size() );
-	featuresList->append( item );
-	endInsertRows();
+    beginInsertRows( QModelIndex(), featuresList->size(), featuresList->size() );
+    featuresList->append( item );
+    endInsertRows();
 }
 
 void UBFeaturesModel::deleteFavoriteItem( const QString &path )
 {
-	for ( int i = 0; i < featuresList->size(); ++i )
-	{
+    for ( int i = 0; i < featuresList->size(); ++i )
+    {
         if ( !QString::compare( featuresList->at(i).getFullPath().toString(), path, Qt::CaseInsensitive ) &&
-			!QString::compare( featuresList->at(i).getVirtualPath(), "/root/favorites", Qt::CaseInsensitive ) )
-		{
-			removeRow( i, QModelIndex() );
-			return;
-		}
-	}
+            !QString::compare( featuresList->at(i).getVirtualPath(), "/root/favorites", Qt::CaseInsensitive ) )
+        {
+            removeRow( i, QModelIndex() );
+            return;
+        }
+    }
 }
 
 void UBFeaturesModel::deleteItem( const QString &path )
 {
     for ( int i = 0; i < featuresList->size(); ++i )
-	{
+    {
         if ( !QString::compare( featuresList->at(i).getFullPath().toString(), path, Qt::CaseInsensitive ) )
-		{
-			removeRow( i, QModelIndex() );
-			return;
-		}
-	}
+        {
+            removeRow( i, QModelIndex() );
+            return;
+        }
+    }
+}
+
+void UBFeaturesModel::deleteItem(const UBFeature &feature)
+{
+    int i = featuresList->indexOf(feature);
+    if (i == -1) {
+        qDebug() << "no matches in deleting item from UBFEaturesModel";
+        return;
+    }
+    removeRow(i, QModelIndex());
 }
 
 bool UBFeaturesModel::removeRows( int row, int count, const QModelIndex & parent )
 {
-	if ( row < 0 )
-		return false;
-	if ( row + count > featuresList->size() )
-		return false;
-	beginRemoveRows( parent, row, row + count - 1 );
-	//featuresList->remove( row, count );
-	featuresList->erase( featuresList->begin() + row, featuresList->begin() + row + count );
-	endRemoveRows();
-	return true;
+    if ( row < 0 )
+        return false;
+    if ( row + count > featuresList->size() )
+        return false;
+    beginRemoveRows( parent, row, row + count - 1 );
+    //featuresList->remove( row, count );
+    featuresList->erase( featuresList->begin() + row, featuresList->begin() + row + count );
+    endRemoveRows();
+    return true;
 }
 
 bool UBFeaturesModel::removeRow(  int row, const QModelIndex & parent )
 {
-	if ( row < 0 )
-		return false;
-	if ( row >= featuresList->size() )
-		return false;
-	beginRemoveRows( parent, row, row );
-	//featuresList->remove( row );
-	featuresList->erase( featuresList->begin() + row );
-	endRemoveRows();
-	return true;
+    if ( row < 0 )
+        return false;
+    if ( row >= featuresList->size() )
+        return false;
+    beginRemoveRows( parent, row, row );
+    //featuresList->remove( row );
+    featuresList->erase( featuresList->begin() + row );
+    endRemoveRows();
+    return true;
 }
 
+void UBFeaturesModel::moveData(const UBFeature &source, const UBFeature &destination
+                               , Qt::DropAction action = Qt::CopyAction, bool deleteManualy)
+{
+    UBFeaturesController *curController = qobject_cast<UBFeaturesController *>(QObject::parent());
+    if (!curController)
+        return;
+
+    QString sourcePath = source.getFullPath().toLocalFile();
+    QString sourceVirtualPath = source.getVirtualPath();
+
+    UBFeatureElementType sourceType = source.getType();
+    QImage sourceIcon = source.getThumbnail();
+
+    Q_ASSERT( QFileInfo( sourcePath ).exists() );
+
+    QString name = QFileInfo( sourcePath ).fileName();
+    QString destPath = destination.getFullPath().toLocalFile();
+
+    QString destVirtualPath = destination.getFullVirtualPath();
+    QString destFullPath = destPath + "/" + name;
+
+    if ( sourcePath.compare(destFullPath, Qt::CaseInsensitive ) || destination.getType() != FEATURE_TRASH)
+    {
+        UBFileSystemUtils::copy(sourcePath, destFullPath);
+        if (action == Qt::MoveAction) {
+            curController->deleteItem( source.getFullPath() );
+        }
+    }
+
+    //Passing all the source container ubdating dependancy pathes
+    if (sourceType == FEATURE_FOLDER) {
+        for (int i = 0; i < featuresList->count(); i++) {
+
+            UBFeature &curFeature = (*featuresList)[i];
+
+            QString curFeatureFullPath = curFeature.getFullPath().toLocalFile();
+            QString curFeatureVirtualPath = curFeature.getVirtualPath();
+
+            if (curFeatureFullPath.contains(sourcePath) && curFeatureFullPath != sourcePath) {
+
+                UBFeature copyFeature = curFeature;
+                QUrl newPath = QUrl::fromLocalFile(curFeatureFullPath.replace(sourcePath, destFullPath));
+                QString newVirtualPath = curFeatureVirtualPath.replace(sourceVirtualPath, destVirtualPath);
+                //when copying to trash don't change the real path
+                if (destination.getType() != FEATURE_TRASH) {
+                    // processing copy or move action for real FS
+                    if (action == Qt::CopyAction) {
+                        copyFeature.setFullPath(newPath);
+                    } else {
+                        curFeature.setFullPath(newPath);
+                    }
+                }
+                // processing copy or move action for virtual FS
+                if (action == Qt::CopyAction) {
+                    copyFeature.setFullVirtualPath(newVirtualPath);
+                } else {
+                    curFeature.setFullVirtualPath(newVirtualPath);
+                }
+
+                if (action == Qt::CopyAction) {
+                    addItem(copyFeature);
+                }
+            }
+        }
+    }
+
+    UBFeature newElement( destVirtualPath + "/" + name, sourceIcon, name, QUrl::fromLocalFile(destFullPath), sourceType );
+    addItem(newElement);
+
+    if (deleteManualy) {
+        deleteItem(source);
+    }
+
+// Commented because of crashes on mac. But works fine. It is not predictable behavior. 
+// Please uncomment it if model will not refreshes
+//   emit dataRestructured();. 
+}
 
 Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
 {
-	Qt::ItemFlags defaultFlags = QAbstractItemModel::flags(index);
-	if ( index.isValid() )
-	{
-		UBFeature item = index.data( Qt::UserRole + 1 ).value<UBFeature>();
-        if ( item.getType() == FEATURE_INTERACTIVE ||
-            item.getType() == FEATURE_ITEM ||
-			item.getType() == FEATURE_INTERNAL )
-			return Qt::ItemIsDragEnabled | defaultFlags;
-		if ( item.isFolder() && !item.getVirtualPath().isNull() )
-			return defaultFlags | Qt::ItemIsDropEnabled;
-		else return defaultFlags | Qt::ItemIsDropEnabled;
-	}
-	/*if ( index.isValid() )
-	{
-		UBFeature item = index.data( Qt::UserRole + 1 ).value<UBFeature>();
-		switch( item.getType() )
-		{
-		case FEATURE_CATEGORY:
-		case FEATURE_FOLDER:
-		case FEATURE_FAVORITE:
-		case FEATURE_TRASH:
-			return Qt::ItemIsDropEnabled | Qt::ItemIsEnabled;
-		case FEATURE_INTERACTIVE:
-		case FEATURE_INTERNAL:
-		case FEATURE_ITEM:		
-			return Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable;
-		default:;
-		}
-	}*/
-	return defaultFlags | Qt::ItemIsDropEnabled;
+    Qt::ItemFlags resultFlags = QAbstractItemModel::flags(index);
+    if ( index.isValid() )
+    {
+        UBFeature item = index.data( Qt::UserRole + 1 ).value<UBFeature>();
+        if ( item.getType() == FEATURE_INTERACTIVE
+             || item.getType() == FEATURE_ITEM
+             || item.getType() == FEATURE_AUDIO
+             || item.getType() == FEATURE_VIDEO
+             || item.getType() == FEATURE_IMAGE
+             || item.getType() == FEATURE_FLASH
+             || item.getType() == FEATURE_INTERNAL
+             || item.getType() == FEATURE_FOLDER)
+
+            resultFlags |= Qt::ItemIsDragEnabled;
+
+        if ( item.isFolder() && !item.getVirtualPath().isNull() )
+            resultFlags |= Qt::ItemIsDropEnabled;
+    }
+
+    return resultFlags;
 }
 
 
 QStringList UBFeaturesModel::mimeTypes() const
 {
-	QStringList types;
+    QStringList types;
     types << "text/uri-list" << "image/png" << "image/tiff" << "image/gif" << "image/jpeg";
     return types;
 }
 
 int UBFeaturesModel::rowCount(const QModelIndex &parent) const
 {
-	if (parent.isValid())
+    if (parent.isValid() || !featuresList)
         return 0;
     else
         return featuresList->size();
 }
 
-
 bool UBFeaturesProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex & sourceParent )const
 {
-	QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
-	QString path = index.data( Qt::UserRole ).toString();
-	
-	return filterRegExp().exactMatch(path);
+    QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
+    QString path = index.data( Qt::UserRole ).toString();
+
+    return filterRegExp().exactMatch(path);
 }
 
 bool UBFeaturesSearchProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex & sourceParent )const
 {
-	QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
-	/*QString name = sourceModel()->data(index, Qt::DisplayRole).toString();
-	eUBLibElementType type = (eUBLibElementType)sourceModel()->data(index, Qt::UserRole + 1).toInt();*/
-
-	UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>();
-    bool isFile = feature.getType() == FEATURE_INTERACTIVE ||
-		feature.getType() == FEATURE_INTERNAL ||
-        feature.getType() == FEATURE_ITEM;
-	
-	return isFile && filterRegExp().exactMatch( feature.getName() );
+    QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
+    /*QString name = sourceModel()->data(index, Qt::DisplayRole).toString();
+    eUBLibElementType type = (eUBLibElementType)sourceModel()->data(index, Qt::UserRole + 1).toInt();*/
+
+    UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>();
+    bool isFile = feature.getType() == FEATURE_INTERACTIVE
+            || feature.getType() == FEATURE_INTERNAL
+            || feature.getType() == FEATURE_ITEM
+            || feature.getType() == FEATURE_AUDIO
+            || feature.getType() == FEATURE_VIDEO
+            || feature.getType() == FEATURE_IMAGE;
+
+    return isFile
+            && feature.getFullVirtualPath().contains(mFilterPrefix)
+            && filterRegExp().exactMatch( feature.getName() );
 }
 
 bool UBFeaturesPathProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex & sourceParent )const
 {
-	QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
-	/*QString name = sourceModel()->data(index, Qt::DisplayRole).toString();
-	eUBLibElementType type = (eUBLibElementType)sourceModel()->data(index, Qt::UserRole + 1).toInt();*/
-
-	UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>();
+    QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
+    UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>();
 	
-	return feature.isFolder() && path.startsWith( feature.getFullVirtualPath() );
+    return feature.isFolder() && path.startsWith( feature.getFullVirtualPath()) ;
+
 }
 
 QString	UBFeaturesItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const
@@ -1108,18 +1455,21 @@ QString	UBFeaturesItemDelegate::displayText ( const QVariant & value, const QLoc
     Q_UNUSED(locale)
 
     QString text = value.toString();
-	if (listView)
-	{
-		const QFontMetrics fm = listView->fontMetrics();
-		const QSize iSize = listView->iconSize();
-		return elidedText( fm, iSize.width(), Qt::ElideRight, text );
-	}
-	return text;
+    text = text.replace(".wgt", "");
+    text = text.replace(".wgs", "");
+    text = text.replace(".swf","");
+    if (listView)
+    {
+        const QFontMetrics fm = listView->fontMetrics();
+        const QSize iSize = listView->gridSize();
+        return elidedText( fm, iSize.width(), Qt::ElideRight, text );
+    }
+    return text;
 }
 
-UBFeaturesPathItemDelegate::UBFeaturesPathItemDelegate(QWidget *parent) : QStyledItemDelegate(parent)
+UBFeaturesPathItemDelegate::UBFeaturesPathItemDelegate(QObject *parent) : QStyledItemDelegate(parent)
 {
-	arrowPixmap = new QPixmap(":images/navig_arrow.png");
+    arrowPixmap = new QPixmap(":images/navig_arrow.png");
 }
 
 QString	UBFeaturesPathItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const
@@ -1132,20 +1482,20 @@ QString	UBFeaturesPathItemDelegate::displayText ( const QVariant & value, const
 
 void UBFeaturesPathItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
 {
-	UBFeature feature = index.data( Qt::UserRole + 1 ).value<UBFeature>();
-	QRect rect = option.rect;
-	if ( !feature.getFullPath().isEmpty() )
-	{
-		painter->drawPixmap( rect.left() - 10, rect.center().y() - 5, *arrowPixmap );
-	}
-	painter->drawPixmap( rect.left() + 5, rect.center().y() - 5, feature.getThumbnail().scaledToHeight( 30, Qt::SmoothTransformation ) );
+    UBFeature feature = index.data( Qt::UserRole + 1 ).value<UBFeature>();
+    QRect rect = option.rect;
+    if ( !feature.getFullPath().isEmpty() )
+    {
+        painter->drawPixmap( rect.left() - 10, rect.center().y() - 5, *arrowPixmap );
+    }
+    painter->drawImage( rect.left() + 5, rect.center().y() - 5, feature.getThumbnail().scaledToHeight( 30, Qt::SmoothTransformation ) );
 }
 
 UBFeaturesPathItemDelegate::~UBFeaturesPathItemDelegate()
 {
-	if ( arrowPixmap )
-	{
-		delete arrowPixmap;
-		arrowPixmap = NULL;
-	}
+    if ( arrowPixmap )
+    {
+        delete arrowPixmap;
+        arrowPixmap = NULL;
+    }
 }
diff --git a/Sankore-3.1/src/gui/UBFeaturesWidget.h b/Sankore-3.1/src/gui/UBFeaturesWidget.h
index afd29c9..1476c5c 100644
--- a/Sankore-3.1/src/gui/UBFeaturesWidget.h
+++ b/Sankore-3.1/src/gui/UBFeaturesWidget.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBFEATURESWIDGET_H
 #define UBFEATURESWIDGET_H
 
@@ -16,12 +38,14 @@
 #include <QDropEvent>
 
 #include "UBDockPaletteWidget.h"
-//#include "UBLibActionBar.h"
+#include "core/UBSettings.h"
 #include "board/UBFeaturesController.h"
 #include "api/UBWidgetUniboardAPI.h"
 #include "UBFeaturesActionBar.h"
 #include "UBRubberBand.h"
-
+#include <QtWebKit>
+#include <QWebView>
+#include <QWebSettings>
 
 #define THUMBNAIL_WIDTH 400
 #define ID_LISTVIEW 0
@@ -41,6 +65,11 @@ class UBFeatureProperties;
 class UBFeatureItemButton;
 class UBFeaturesListView;
 class UBFeaturesWebView;
+class UBFeaturesNavigatorWidget;
+class UBFeaturesMimeData;
+class UBFeaturesCentralWidget;
+class UBFeaturesNewFolderDialog;
+class UBFeaturesProgressBar;
 
 class UBFeaturesWidget : public UBDockPaletteWidget
 {
@@ -54,75 +83,214 @@ public:
         return mode == eUBDockPaletteWidget_BOARD
             || mode == eUBDockPaletteWidget_DESKTOP;
     }
-	UBFeaturesController * getFeaturesController()const { return controller; };
+    UBFeaturesController * getFeaturesController() const { return controller; }
+    void importImage(const QImage &image, const QString &fileName = QString());
 
 	static const int minThumbnailSize = 20;
 	static const int maxThumbnailSize = 100;
 	static const int defaultThumbnailSize = 40;
-private:
-	void switchToListView();
-	void switchToProperties();
-	void switchToWebView();
-
-	UBFeaturesController *controller;
-	
-	UBFeaturesItemDelegate *itemDelegate;
-	UBFeaturesPathItemDelegate *pathItemDelegate;
-	
-	UBFeaturesModel *featuresModel;
-	UBFeaturesProxyModel *featuresProxyModel;
-	UBFeaturesSearchProxyModel *featuresSearchModel;
-	UBFeaturesPathProxyModel *featuresPathModel;
-
-	UBFeaturesListView *featuresListView;
-	UBFeaturesListView *pathListView;
-
-	QSlider *thumbSlider;
-	QVBoxLayout *layout;
-	//UBFeaturesPathViewer *pathViewer;
-	//QGraphicsScene *pathScene;
-	UBFeaturesActionBar *mActionBar;
-	UBFeatureProperties *featureProperties;
-	UBFeaturesWebView *webView;
-	QStackedWidget *stackedWidget;
-	
-
-	int currentStackedWidget;
+
+    static const char *objNamePathList;
+    static const char *objNameFeatureList;
+
+public:
+    int scrollbarHorisontalPadding() const { return 10;}
+    int scrollbarVerticalIndent() const { return 0;}
+
+signals:
+    void sendFileNameList(const QStringList lst);
+
 private slots:
-	void currentSelected( const QModelIndex & );
-	//void currentPathChanged(const QString &);
-	void currentPathChanged( const QModelIndex & );
-	void searchStarted( const QString & );
-	void createNewFolder();
-	void deleteElements( const QMimeData & );
-	void addToFavorite( const QMimeData & );
-	void removeFromFavorite( const QMimeData & );
-	void thumbnailSizeChanged( int );
-	void onDisplayMetadata( QMap<QString,QString> );
-    void onAddDownloadedFileToLibrary(bool, QUrl, QString, QByteArray);
+    void onPreviewLoaded(int id, bool pSuccess, QUrl sourceUrl, QUrl originalUrl, QString pContentTypeHeader, QByteArray pData, QPointF pPos, QSize pSize, bool isBackground);
+    void currentSelected( const QModelIndex & );
+    void searchStarted( const QString & );
+    void createNewFolder();
+    void deleteElements( const UBFeaturesMimeData * );
+    void addToFavorite( const UBFeaturesMimeData  *);
+    void removeFromFavorite( const UBFeaturesMimeData * );
+    void onDisplayMetadata( QMap<QString,QString> );
+    void onAddDownloadedFileToLibrary(bool, QUrl, QString, QByteArray, QString pTitle);
     void addElementsToFavorite();
     void removeElementsFromFavorite();
     void deleteSelectedElements();
-protected:
-	bool eventFilter(QObject *target, QEvent *event);
+    void rescanModel();
+    void lockIt(bool pLock);
+
+private:
+    void switchToListView();
+    void switchToProperties();
+    void switchToWebView();
+
+private:
+    UBFeaturesController *controller;
+    UBFeaturesListView *pathListView;
+    QVBoxLayout *layout;
+    UBFeaturesActionBar *mActionBar;
+    UBDownloadHttpFile* imageGatherer;
+    UBFeaturesCentralWidget *centralWidget;
 };
 
+
+class UBFeaturesMimeData : public QMimeData
+{
+    Q_OBJECT
+
+public:
+    virtual QStringList formats() const;
+    QList<UBFeature> features() const {return mFeatures;}
+    void setFeatures(const QList<UBFeature> &fList) {mFeatures = fList;}
+
+private:
+    QList<UBFeature> mFeatures;
+};
+
+
 class UBFeaturesListView : public QListView
 {
 	Q_OBJECT
+
 public:
-	UBFeaturesListView( QWidget* parent=0, const char* name="UBFeaturesListView" );
+    UBFeaturesListView( QWidget* parent=0, const char* name="UBFeaturesListView" );
     virtual ~UBFeaturesListView() {;}
+
 protected:
-	virtual void dragEnterEvent( QDragEnterEvent *event );
-	virtual void dropEvent( QDropEvent *event );
+    virtual void dragEnterEvent( QDragEnterEvent *event );
+    virtual void dropEvent( QDropEvent *event );
     virtual void dragMoveEvent( QDragMoveEvent *event );
-	/*virtual void mousePressEvent( QMouseEvent *event );
-	virtual void mouseMoveEvent( QMouseEvent *event );
-	virtual void mouseReleaseEvent( QMouseEvent *event );*/
+
+private slots:
+    void thumbnailSizeChanged(int);
+
+};
+
+
+// class created to have the same style for slider and QListView itself
+class UBFeaturesNavigatorWidget: public QWidget
+{
+    Q_OBJECT
+
+public:
+    UBFeaturesNavigatorWidget(QWidget *parent, const char* name = "");
+    UBFeaturesListView *listView() {return mListView;}
+    void setSliderPosition(int pValue);
+
 private:
-	//UBRubberBand *rubberBand;
-	//QPoint rubberOrigin;
+    UBFeaturesListView *mListView;
+    QSlider *mListSlider;
+
+};
+
+class UBFeaturesCentralWidget : public QWidget
+{
+  Q_OBJECT
+
+public:
+    enum StackElement{
+        MainList = 0,
+        FeaturePropertiesList,
+        FeaturesWebView
+    };
+
+    enum AddWidget {
+        NewFolderDialog = 0,
+        ProgressBarWidget
+    };
+
+    enum AddWidgetState {
+        NonModal = 0,
+        Modal
+    };
+
+    UBFeaturesCentralWidget(QWidget *parent = 0);
+    void setSliderPosition(int pValue) {mNavigator->setSliderPosition(pValue);}
+
+    UBFeaturesListView *listView() {return mNavigator->listView();}
+    void showElement(const UBFeature &feature, StackElement pView);
+    void switchTo(StackElement pView);
+    void setPropertiesPixmap(const QPixmap &pix);
+    void setPropertiesThumbnail(const QPixmap &pix);
+    StackElement currentView() const {return static_cast<StackElement>(mStackedWidget->currentIndex());}
+    UBFeature getCurElementFromProperties();
+
+    void setLockedExcludingAdditional(bool pLock);
+
+    QStackedWidget *mStackedWidget;
+    UBFeaturesNavigatorWidget *mNavigator;
+    UBFeatureProperties *mFeatureProperties;
+    UBFeaturesWebView *webView;
+
+    QStackedWidget *mAdditionalDataContainer;
+
+signals:
+    void lockMainWidget(bool pLock);
+    void createNewFolderSignal(QString pStr);
+    void sendFileNameList(const QStringList lst);
+
+//    progressbar widget related signals
+    void maxFilesCountEvaluated(int pValue);
+    void increaseStatusBarValue();
+    void scanCategory(const QString &);
+    void scanPath(const QString &);
+
+public slots:
+    void showAdditionalData(AddWidget pWidgetType, AddWidgetState pState = NonModal);
+
+private slots:
+    void createNewFolderSlot(QString pStr);
+    void hideAdditionalData();
+
+    void scanStarted();
+    void scanFinished();
+};
+
+class UBFeaturesNewFolderDialog : public QWidget
+{
+    Q_OBJECT
+
+public:
+    UBFeaturesNewFolderDialog(QWidget *parent = 0);
+    void setRegexp(const QRegExp pRegExp);
+    bool validString(const QString &pStr);
+
+signals:
+    void createNewFolder(QString str);
+    void closeDialog();
+
+private slots:
+    void accept();
+    void reject();
+    void setFileNameList(const QStringList &pLst);
+    void reactOnTextChanged(const QString &pStr);
+
+private:
+    QLineEdit *mLineEdit;
+    QRegExpValidator *mValidator;
+    QStringList mFileNameList;
+    QPushButton *acceptButton;
+    const QString acceptText;
+    const QString cancelText;
+    const QString labelText;
+};
+
+class UBFeaturesProgressInfo: public QWidget {
+    Q_OBJECT
+
+public:
+    UBFeaturesProgressInfo(QWidget *parent = 0);
+
+private slots:
+    void setCommmonInfoText(const QString &str);
+    void setDetailedInfoText(const QString &str);
+    void setProgressMin(int pValue);
+    void setProgressMax(int pValue);
+    void increaseProgressValue();
+    void sendFeature(UBFeature pFeature);
+
+
+private:
+    QProgressBar *mProgressBar;
+    QLabel *mCommonInfoLabel;
+    QLabel *mDetailedInfoLabel;
 };
 
 class UBFeaturesWebView : public QWidget
@@ -136,6 +304,7 @@ public:
 
 private slots:
     void onLoadFinished(bool ok);
+    void javaScriptWindowObjectCleared();
 
 private:
     QWebView* mpView;
@@ -153,6 +322,9 @@ public:
 
     void showElement(const UBFeature &elem);
     UBFeature getCurrentElement() const;
+    void setOrigPixmap(const QPixmap &pix);
+    void setThumbnail(const QPixmap &pix);
+
 protected:
     void resizeEvent(QResizeEvent *event);
     void showEvent(QShowEvent *event);
@@ -169,9 +341,9 @@ private:
 
     QVBoxLayout* mpLayout;
     QHBoxLayout* mpButtonLayout;
-    UBFeatureItemButton* mpAddPageButton;
-    UBFeatureItemButton* mpAddToLibButton;
-    UBFeatureItemButton* mpSetAsBackgroundButton;
+    UBFeatureItemButton *mpAddPageButton;
+    UBFeatureItemButton *mpAddToLibButton;
+    UBFeatureItemButton *mpSetAsBackgroundButton;
     QLabel* mpObjInfoLabel;
     QTreeWidget* mpObjInfos;
     QLabel* mpThumbnail;
@@ -181,9 +353,6 @@ private:
     QTreeWidgetItem* mpItem;
 };
 
-
-
-
 class UBFeatureItemButton : public QPushButton
 {
 public:
@@ -194,13 +363,17 @@ public:
 class UBFeaturesModel : public QAbstractListModel
 {
 	Q_OBJECT
+
+signals:
+    void dataRestructured();
+
 public:
-    UBFeaturesModel( QObject *parent = 0 ) : QAbstractListModel(parent) {;}
+    UBFeaturesModel(QList<UBFeature> *pFeaturesList, QObject *parent = 0) : QAbstractListModel(parent), featuresList(pFeaturesList) {;}
     virtual ~UBFeaturesModel(){;}
 
-	void addItem( const UBFeature &item );
 	void deleteFavoriteItem( const QString &path );
     void deleteItem( const QString &path );
+    void deleteItem(const UBFeature &feature);
 
 	QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
 	QMimeData *mimeData( const QModelIndexList &indexes ) const;
@@ -212,10 +385,14 @@ public:
 	bool removeRow(int row, const QModelIndex &parent = QModelIndex());
     //bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
     //bool insertRow(int row, const QModelIndex &parent = QModelIndex());
-	
+
+    void moveData(const UBFeature &source, const UBFeature &destination, Qt::DropAction action, bool deleteManualy = false);
     Qt::DropActions supportedDropActions() const { return Qt::MoveAction | Qt::CopyAction; }
+//    void setFeaturesList(QList <UBFeature> *flist ) { featuresList = flist; }
+
+public slots:
+    void addItem( const UBFeature &item );
 
-    void setFeaturesList(QList <UBFeature> *flist ) { featuresList = flist; }
 private:
 	QList <UBFeature> *featuresList;
 };
@@ -234,10 +411,13 @@ class UBFeaturesSearchProxyModel : public QSortFilterProxyModel
 {
 	Q_OBJECT
 public:
-    UBFeaturesSearchProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent) {;}
+    UBFeaturesSearchProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent), mFilterPrefix() {;}
     virtual ~UBFeaturesSearchProxyModel() {}
+    void setFilterPrefix(const QString &newPrefix) {mFilterPrefix = newPrefix;}
 protected:
 	virtual bool filterAcceptsRow ( int sourceRow, const QModelIndex & sourceParent ) const;
+private:
+    QString mFilterPrefix;
 };
 
 class UBFeaturesPathProxyModel : public QSortFilterProxyModel
@@ -257,7 +437,7 @@ class UBFeaturesItemDelegate : public QStyledItemDelegate
 {
 	Q_OBJECT
 public:
-    UBFeaturesItemDelegate(QWidget *parent = 0, const QListView *lw = 0) : QStyledItemDelegate(parent) { listView = lw; }
+    UBFeaturesItemDelegate(QObject *parent = 0, const QListView *lw = 0) : QStyledItemDelegate(parent) { listView = lw; }
     ~UBFeaturesItemDelegate() {}
 	//UBFeaturesItemDelegate(const QListView *lw = 0) { listView = lw; };
 	//void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
@@ -271,7 +451,7 @@ class UBFeaturesPathItemDelegate : public QStyledItemDelegate
 {
 	Q_OBJECT
 public:
-	UBFeaturesPathItemDelegate(QWidget *parent = 0);
+    UBFeaturesPathItemDelegate(QObject *parent = 0);
 	~UBFeaturesPathItemDelegate();
 	virtual QString	displayText ( const QVariant & value, const QLocale & locale ) const;
 	void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
@@ -279,4 +459,5 @@ private:
 	QPixmap *arrowPixmap;
 };
 
+
 #endif // UBFEATURESWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBFloatingPalette.cpp b/Sankore-3.1/src/gui/UBFloatingPalette.cpp
index 6be397c..14738f1 100644
--- a/Sankore-3.1/src/gui/UBFloatingPalette.cpp
+++ b/Sankore-3.1/src/gui/UBFloatingPalette.cpp
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include <QtGui>
 #include <QPainterPath>
@@ -129,6 +150,11 @@ void UBFloatingPalette::mouseReleaseEvent(QMouseEvent *event)
     }
 }
 
+int UBFloatingPalette::getParentRightOffset()
+{
+    return 0;
+}
+
 void UBFloatingPalette::moveInsideParent(const QPoint &position)
 {
     QWidget *parent = parentWidget();
@@ -136,7 +162,7 @@ void UBFloatingPalette::moveInsideParent(const QPoint &position)
     if (parent)
     {
         int margin = UBSettings::boardMargin - border();
-        qreal newX = qMax(margin, qMin(parent->width() - width() - margin, position.x()));
+        qreal newX = qMax(margin, qMin(parent->width() - getParentRightOffset() - width() - margin, position.x()));
         qreal newY = qMax(margin, qMin(parent->height() - height() - margin, position.y()));
 
         if (!mCustomPosition && !mIsMoving)
@@ -147,7 +173,7 @@ void UBFloatingPalette::moveInsideParent(const QPoint &position)
             }
             else
             {
-                newX = qMax(margin, parent->width() - width() - margin);
+                newX = qMax(margin, parent->width() - getParentRightOffset() - width() - margin);
             }
         }
         move(newX, newY);
@@ -260,7 +286,6 @@ void UBFloatingPalette::minimizePalette(const QPoint& pos)
 	return;
     }
 
-    QSize parentSize = parentWidget()->size();
     if(mMinimizedLocation == eMinimizedLocation_None)
     {
 	//  Verify if we have to minimize this palette
@@ -272,7 +297,7 @@ void UBFloatingPalette::minimizePalette(const QPoint& pos)
 //	{
 //	    mMinimizedLocation = eMinimizedLocation_Top;
 //	}
-	else if(pos.x() == parentSize.width() - width() - 5)
+    else if(pos.x() == parentWidget()->width() - getParentRightOffset() - width() - 5)
 	{
 	    mMinimizedLocation = eMinimizedLocation_Right;
 	}
@@ -292,8 +317,8 @@ void UBFloatingPalette::minimizePalette(const QPoint& pos)
 	//  Restore the palette
 	if(pos.x() > 5 &&
 	   pos.y() > 5 &&
-	   pos.x() < parentSize.width() - width() - 5 &&
-	   pos.y() < parentSize.height() - height() - 5)
+       pos.x() < parentWidget()->width() - getParentRightOffset()  - width() - 5 &&
+       pos.y() < parentWidget()->size().height() - height() - 5)
 	{
 	    mMinimizedLocation = eMinimizedLocation_None;
 	    emit maximizeStart();
diff --git a/Sankore-3.1/src/gui/UBFloatingPalette.h b/Sankore-3.1/src/gui/UBFloatingPalette.h
index 0ddc6ad..4aae193 100644
--- a/Sankore-3.1/src/gui/UBFloatingPalette.h
+++ b/Sankore-3.1/src/gui/UBFloatingPalette.h
@@ -1,3 +1,23 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
 
 
 #ifndef UBFLOATINGPALLETTE_H_
@@ -63,6 +83,10 @@ class UBFloatingPalette : public QWidget
         bool mCustomPosition;
         bool mIsMoving;
 
+        virtual int getParentRightOffset();
+
+        eMinimizedLocation minimizedLocation(){return mMinimizedLocation;}
+
     private:
         void removeAllAssociatedPalette();
         void minimizePalette(const QPoint& pos);
diff --git a/Sankore-3.1/src/gui/UBIconButton.cpp b/Sankore-3.1/src/gui/UBIconButton.cpp
index 171b161..9e7a5e2 100644
--- a/Sankore-3.1/src/gui/UBIconButton.cpp
+++ b/Sankore-3.1/src/gui/UBIconButton.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 
 #include "UBIconButton.h"
diff --git a/Sankore-3.1/src/gui/UBIconButton.h b/Sankore-3.1/src/gui/UBIconButton.h
index 631d6d6..a7c4934 100644
--- a/Sankore-3.1/src/gui/UBIconButton.h
+++ b/Sankore-3.1/src/gui/UBIconButton.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBICONBUTTON_H_
 #define UBICONBUTTON_H_
 
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette.cpp
index d537f30..6bec141 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette.cpp
@@ -1,9 +1,24 @@
-/*
- * UBKeyboardPalette.cpp
- *
- *  Created on: Feb 10, 2011
- *      Author: tolik
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include <QtGui>
 #include <QList>
@@ -38,11 +53,16 @@ UBKeyboardPalette::UBKeyboardPalette(QWidget *parent)
     setGrip(false);
 
     capsLock = false;
+    shift = false;
     languagePopupActive = false;
     keyboardActive = false;
+    nSpecialModifierIndex = 0;
+    specialModifier = 0;
     btnWidth = btnHeight = 16;
     strSize = "16x16";
     currBtnImages = new BTNImages("16", btnWidth, btnHeight);
+    storage = NULL;
+
 
     buttons = new UBKeyButton*[47];
     for (int i=0; i<47; i++)
@@ -55,7 +75,10 @@ UBKeyboardPalette::UBKeyboardPalette(QWidget *parent)
     createCtrlButtons();
 
     nCurrentLocale = UBSettings::settings()->KeyboardLocale->get().toInt();
-    setInput(locales[nCurrentLocale]);
+	if (nCurrentLocale < 0 || nCurrentLocale >= nLocalesCount)
+		nCurrentLocale = 0;
+	if (locales!=NULL)
+	    setInput(locales[nCurrentLocale]);
 
     setContentsMargins( 22, 22, 22, 22 );
 
@@ -77,7 +100,7 @@ void UBKeyboardPalette::init()
 
     //------------------------------//
 
-    UBPlatformUtils::setWindowNonActivableFlag(this, true);
+    UBPlatformUtils::setWindowNonActivableFlag(this, true);
 }
 
 void UBKeyboardPalette::showKeyboard(bool show)
@@ -143,6 +166,8 @@ UBKeyboardPalette::~UBKeyboardPalette()
         delete currBtnImages;
         currBtnImages = NULL;
     }
+
+    onActivated(false);
 }
 
 QSize  UBKeyboardPalette::sizeHint () const
@@ -236,6 +261,8 @@ void UBKeyboardPalette::adjustSizeAndPosition(bool pUp)
 
 void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
 {
+    checkLayout();
+
     UBActionPalette::paintEvent(event);
 
     QRect r = this->geometry();
@@ -302,8 +329,10 @@ void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
     //-------------------
 
 //     // Row 3 Stub
-//     ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth, btnHeight);
-//    offX += btnWidth;
+
+    // button Enter
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 1, btnHeight);
+    offX += btnWidth*1;
 
     // buttons [a]..[\]
     for (int i = 0; i < 12; i++)
@@ -313,8 +342,8 @@ void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
     }
 
     // button Enter
-    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 3, btnHeight);
-    offX += btnWidth*3;
+    ctrlButtons[ctrlButtonsId++]->setGeometry(offX, offY, btnWidth * 2, btnHeight);
+    offX += btnWidth*2;
 
     //------------------------------------------------
     // set geometry (position) for row 4
@@ -353,6 +382,11 @@ void  UBKeyboardPalette::paintEvent( QPaintEvent* event)
     //------------------------------------------------
 }
 
+void  UBKeyboardPalette::onDeactivated()
+{
+    onActivated(false);
+}
+
 
 //-----------------------------------------------------------------------//
 // BTNImages Class
@@ -415,6 +449,11 @@ UBKeyboardButton::~UBKeyboardButton()
     }
 }
 
+bool UBKeyboardButton::isPressed()
+{
+    return bPressed;
+}
+
 void UBKeyboardButton::paintEvent(QPaintEvent*)
 {
 
@@ -437,7 +476,7 @@ void UBKeyboardButton::paintEvent(QPaintEvent*)
 
     //--------------------------
 
-    if (bPressed)
+    if (isPressed())
     {
         painter.drawImage( 0,0, m_parent->currBtnImages->m_btnLeftActive, 0,0, m_parent->currBtnImages->m_btnLeftActive.width(), m_parent->currBtnImages->m_btnLeftActive.height() );
         painter.drawImage( QRect(m_parent->currBtnImages->m_btnLeftActive.width(), 0, width() - m_parent->currBtnImages->m_btnLeftActive.width() - m_parent->currBtnImages->m_btnRightActive.width(), height()), m_parent->currBtnImages->m_btnCenterActive );
@@ -471,7 +510,7 @@ void  UBKeyboardButton::leaveEvent ( QEvent*)
 
 void  UBKeyboardButton::mousePressEvent ( QMouseEvent * event)
 {
-    event->accept();
+    event->accept(); 
     bPressed = true;
     update();
     this->onPress();
@@ -492,10 +531,55 @@ UBKeyButton::UBKeyButton(UBKeyboardPalette* parent)
 UBKeyButton::~UBKeyButton()
 {}
 
+bool UBKeyButton::shifted()
+{
+    bool b = keyboard->shift;
+    if (keybt->capsLockSwitch && keyboard->capsLock)
+        b = !b;
+    return b;
+}
+
 void UBKeyButton::onPress()
 {
     if (keybt!=NULL)
-        sendUnicodeSymbol(keybt->code1, keybt->code2, capsLock());
+    {
+        int codeIndex = keyboard->nSpecialModifierIndex * 2 + shifted();
+
+        if (keyboard->nSpecialModifierIndex)
+        {
+            if (keybt->codes[codeIndex].empty())
+            {
+                sendUnicodeSymbol(keyboard->specialModifier);
+                sendUnicodeSymbol(keybt->codes[shifted()]);
+            }
+            else
+            {
+                sendUnicodeSymbol(keybt->codes[codeIndex]);
+            }
+
+            keyboard->nSpecialModifierIndex = 0;
+        }
+        else
+        {
+            int nSpecialModifierIndex = shifted()? keybt->modifier2 : keybt->modifier1;
+
+            if (nSpecialModifierIndex)
+            {
+                keyboard->nSpecialModifierIndex = nSpecialModifierIndex;
+                keyboard->specialModifier = keybt->codes[codeIndex];
+            }
+            else
+            {
+                sendUnicodeSymbol(keybt->codes[codeIndex]);            
+            }
+        }
+    }
+
+    if (keyboard->shift)
+    {
+        keyboard->shift = false;
+        keyboard->update();
+    }
 }
 
 void UBKeyButton::onRelease()
@@ -505,7 +589,7 @@ void UBKeyButton::paintContent(QPainter& painter)
 {
     if (keybt)
     {
-        QString text(QChar(capsLock() ? keybt->symbol2 : keybt->symbol1));
+        QString text(QChar(shifted() ? keybt->symbol2 : keybt->symbol1));
         QRect textRect(rect().x()+2, rect().y()+2, rect().width()-4, rect().height()-4);
         painter.drawText(textRect, Qt::AlignCenter, text);
     }
@@ -565,6 +649,11 @@ void UBCapsLockButton::onPress()
 void UBCapsLockButton::onRelease()
 {}
 
+bool UBCapsLockButton::isPressed()
+{
+    return keyboard->capsLock;
+}
+
 void UBCapsLockButton::paintContent(QPainter& painter)
 {
     if(imgContent != NULL)
@@ -576,6 +665,40 @@ void UBCapsLockButton::paintContent(QPainter& painter)
         painter.drawText(rect(), Qt::AlignCenter, "^");
 }
 
+UBShiftButton::UBShiftButton(UBKeyboardPalette* parent, const QString _contentImagePath)
+    :UBKeyboardButton(parent, _contentImagePath)
+{}
+
+UBShiftButton::~UBShiftButton()
+{}
+
+void UBShiftButton::onPress()
+{
+    keyboard->shift = !keyboard->shift;
+    keyboard->update();
+}
+
+
+void UBShiftButton::onRelease()
+{}
+
+bool UBShiftButton::isPressed()
+{
+    return keyboard->shift;
+}
+
+void UBShiftButton::paintContent(QPainter& painter)
+{
+    if(imgContent != NULL)
+    {
+        painter.drawImage(( rect().width() - imgContent->m_btnContent.width() ) / 2, ( rect().height() - imgContent->m_btnContent.height() ) / 2,
+            imgContent->m_btnContent, 0,0, imgContent->m_btnContent.width(), imgContent->m_btnContent.height());
+    }
+    else
+        painter.drawText(rect(), Qt::AlignCenter, "^");
+}
+
+
 
 UBLocaleButton::UBLocaleButton(UBKeyboardPalette* parent)
         :UBKeyboardButton(parent)
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette.h b/Sankore-3.1/src/gui/UBKeyboardPalette.h
index c7077fe..c964975 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette.h
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette.h
@@ -1,3 +1,25 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
 #ifndef UBKEYBOARDPALETTE_H
 #define UBKEYBOARDPALETTE_H
 
@@ -64,7 +86,9 @@ class UBKeyboardPalette : public UBActionPalette
 
 friend class UBKeyboardButton;
 friend class UBCapsLockButton;
+friend class UBShiftButton;
 friend class UBLocaleButton;
+friend class UBKeyButton;
 
 public:
     UBKeyboardPalette(QWidget *parent);
@@ -97,10 +121,14 @@ private slots:
 
 protected:
     bool capsLock;
+    bool shift;
     int nCurrentLocale;
     int nLocalesCount;
     UBKeyboardLocale** locales;
 
+    int nSpecialModifierIndex;
+    KEYCODE specialModifier;
+
     QString strSize;
     int btnWidth;
     int btnHeight;
@@ -113,7 +141,7 @@ protected:
     virtual void  paintEvent(QPaintEvent *event);
     virtual void  moveEvent ( QMoveEvent * event );
 
-    void sendKeyEvent(const KEYBT& keybt);
+    void sendKeyEvent(KEYCODE keyCode);
 
     void setLocale(int nLocale);
 
@@ -121,6 +149,7 @@ protected:
 
     void init();
 
+
 private:
 
     QRect originalRect;
@@ -128,6 +157,11 @@ private:
     UBKeyButton** buttons;
     UBKeyboardButton** ctrlButtons;
 
+    /*
+      For MacOS: synchronization with system locale.
+    */
+    void checkLayout();
+
     void createCtrlButtons();
 
     void setInput(const UBKeyboardLocale* locale);
@@ -139,10 +173,6 @@ private:
     void* storage;
     // Linux-related parameters
     int min_keycodes, max_keycodes, byte_per_code;
-
-    // Save locale before activation to restore it after (MAC)
-    QString activeLocale;
-
 };
 
 class UBKeyboardButton : public QWidget
@@ -170,11 +200,11 @@ protected:
     virtual void onRelease() = 0;
     virtual void paintContent(QPainter& painter) = 0;
 
-    bool capsLock(){return keyboard->capsLock;}
+    virtual bool isPressed();
 
     UBKeyboardPalette* keyboard;
 
-    void sendUnicodeSymbol(unsigned int nSymbol1, unsigned int nSymbol2, bool shift);
+    void sendUnicodeSymbol(KEYCODE keycode);
     void sendControlSymbol(int nSymbol);
 
 private:
@@ -197,6 +227,7 @@ public:
     virtual void paintContent(QPainter& painter);
 
 private:
+    bool shifted();
     const KEYBT* keybt;
 };
 
@@ -229,8 +260,28 @@ public:
     virtual void onPress();
     virtual void onRelease();
     virtual void paintContent(QPainter& painter);
+
+protected:
+    virtual bool isPressed();
+};
+
+class UBShiftButton : public UBKeyboardButton
+{
+    Q_OBJECT
+
+public:
+    UBShiftButton(UBKeyboardPalette* parent, const QString _contentImagePath);
+    ~UBShiftButton();
+
+    virtual void onPress();
+    virtual void onRelease();
+    virtual void paintContent(QPainter& painter);
+
+protected:
+    virtual bool isPressed();
 };
 
+
 class UBLocaleButton : public UBKeyboardButton
 {
     Q_OBJECT
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp
index dd37d0b..5c27cc0 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette_linux.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBKeyboardPalette.h"
 
 #include <X11/Xlib.h>
@@ -70,22 +78,61 @@ void x11SendKey(Display *display, int keyCode, int modifiers)
 // Send a fake key release event to the window.
    event = createKeyEvent(display, winFocus, winRoot, false, keyCode, modifiers);
    XSendEvent(event.display, event.window, True, KeyPressMask, (XEvent *)&event);
+
 }
 
-void UBKeyboardButton::sendUnicodeSymbol(unsigned int nSymbol1, unsigned int nSymbol2, bool shift)
+/*
+void traceKeyCodes()
 {
-    unsigned int nSymbol = shift ? nSymbol2 : nSymbol1;
+    Display *display = XOpenDisplay(0);
+    if(display == NULL)
+       return;
+
+    int min_keycodes, max_keycodes, byte_per_code;
+
+    XDisplayKeycodes(display, &min_keycodes, &max_keycodes);
+    KeySym* keySyms = XGetKeyboardMapping(display, min_keycodes,
+                       max_keycodes - min_keycodes, &byte_per_code);
+
+    qDebug() << "Codes table, min_keycodes: " << min_keycodes << ", max_keycodes: "
+             << max_keycodes << ", bytes_per_code:" << byte_per_code;
+    for(int i=0; i<max_keycodes - min_keycodes; i++)
+    {
+        QString str;
+        for(int j=0; j<byte_per_code;j++)
+        {
+            str += QString::number(keySyms[i*byte_per_code + j], 16);
+            str += ":";
+        }
+        qDebug() << i << ":" << str;
+    }
+
+    XFree(keySyms);
+
+    XCloseDisplay(display);
+}
+*/
+
 
+void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode)
+{
     // Obtain the X11 display.
     Display *display = XOpenDisplay(0);
     if(display == NULL)
        return;
 
-    KeyCode keyCode = XKeysymToKeycode(display, nSymbol);
-
-    if (keyCode != NoSymbol)
+    if (!keycode.empty())
     {
-        x11SendKey(display, keyCode, shift);
+        int modifier = keycode.modifier;
+        if (keycode.modifier==2) modifier = 0x2000;
+        if (keycode.modifier==3) modifier = 0x2001;
+        if (keycode.modifier==4) modifier = 0x4000;
+        if (keycode.modifier==5) modifier = 0x4001;
+        //modifiers 6 and 7 seems are not available.... They are reassigned in layout creationtime
+        //if (keycode.modifier==6) modifier = 0x6000;
+        //if (keycode.modifier==7) modifier = 0x6001;
+
+        x11SendKey(display, keycode.code + keyboard->min_keycodes , modifier);
     }
 
     XCloseDisplay(display);
@@ -111,107 +158,129 @@ void UBKeyboardButton::sendControlSymbol(int nSymbol)
 
 void UBKeyboardPalette::createCtrlButtons()
 {
-        ctrlButtons = new UBKeyboardButton*[8];
-
-        ctrlButtons[0] = new UBCntrlButton(this, "<-", XK_BackSpace);
-        ctrlButtons[1] = new UBCntrlButton(this, "<->", XK_Tab);
-        ctrlButtons[2] = new UBCntrlButton(this, tr("Enter"), XK_Return);
-        ctrlButtons[3] = new UBCapsLockButton(this, "capslock");
-        ctrlButtons[4] = new UBCapsLockButton(this, "capslock");
-        ctrlButtons[5] = new UBLocaleButton(this);
-        ctrlButtons[6] = new UBCntrlButton(this, "", XK_space);
-        ctrlButtons[7] = new UBLocaleButton(this);
+        ctrlButtons = new UBKeyboardButton*[9];
+
+        ctrlButtons[0] = new UBCntrlButton(this, XK_BackSpace, "backspace");
+        ctrlButtons[1] = new UBCntrlButton(this, XK_Tab, "tab");
+        ctrlButtons[2] = new UBCapsLockButton(this, "capslock");
+        ctrlButtons[3] = new UBCntrlButton(this, tr("Enter"), XK_Return);
+        ctrlButtons[4] = new UBShiftButton(this, "shift");
+        ctrlButtons[5] = new UBShiftButton(this, "shift");
+        ctrlButtons[6] = new UBLocaleButton(this);
+        ctrlButtons[7] = new UBCntrlButton(this, "", XK_space);
+        ctrlButtons[8] = new UBLocaleButton(this);
 }
 
 
+void UBKeyboardPalette::checkLayout()
+{}
+
 void UBKeyboardPalette::onActivated(bool activated)
 {
     if (activated)
     {
+        if (storage)
+        {
+            qDebug() << "Keybard already activated....";
+            return;
+        }
+
         Display *display = XOpenDisplay(0);
         if(display == NULL)
            return;
 
         XDisplayKeycodes(display, &this->min_keycodes, &this->max_keycodes);
         KeySym* keySyms = XGetKeyboardMapping(display, min_keycodes,
-                           max_keycodes - min_keycodes, &this->byte_per_code);
+                           max_keycodes - min_keycodes, &byte_per_code);
 
         storage = keySyms;
 
         XCloseDisplay(display);
 
         onLocaleChanged(locales[nCurrentLocale]);
+
     }
     else
     {
         Display *display = XOpenDisplay(0);
         if(display == NULL)
-           return;
+        {
+            qDebug() << "Keybard not activated....";
+            return;
+        }
 
         KeySym* keySyms = (KeySym*)storage;
         if (keySyms!=NULL)
         {
+            qDebug() << "Default key table restored.....";
 
             XChangeKeyboardMapping(display, min_keycodes, byte_per_code,
                                    keySyms, max_keycodes - min_keycodes);
 
             XFree(keySyms);
-         }
+            storage = NULL;
+        }
 
         XCloseDisplay(display);
     }
-
 }
-void UBKeyboardPalette::onDeactivated()
+
+void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* locale)
 {
-    Display *display = XOpenDisplay(0);
+    const int maxMapOffset = 3; //Suppose to have at least 2 keysym groups due to X11 xlib specification
 
+    Display *display = XOpenDisplay(0);
     if(display == NULL)
        return;
 
-    KeySym* keySyms = (KeySym*)storage;
-    if (keySyms!=NULL) {
-        XChangeKeyboardMapping(display, min_keycodes, byte_per_code,
-                               keySyms, max_keycodes - min_keycodes);
-    }
-    XCloseDisplay(display);
-}
+    int byte_per_code;
+    KeySym* keySyms = XGetKeyboardMapping(display, min_keycodes,
+                       max_keycodes - min_keycodes, &byte_per_code);
 
-void setSymbolsFromButton(Display *display,
-                          const UBKeyboardLocale& locale,
-                          int byte_per_code,
-                          int nFromSymbol,
-                          int nFromButton,
-                          int count)
-{
-    KeySym* keySyms = new KeySym[count * byte_per_code];
-    for(int i = 0; i < count; i++)
+    for(int i=0; i<SYMBOL_KEYS_COUNT; i++)
     {
-        keySyms[byte_per_code * i + 0] =
-                keySyms[byte_per_code * i + 2] = locale[nFromButton + i]->code1;
-
-        keySyms[byte_per_code * i + 1] =
-                keySyms[byte_per_code * i + 3] = locale[nFromButton + i]->code2;
-
-        for(int j=4; j<byte_per_code; j++)
-            keySyms[byte_per_code * i + j] = NoSymbol;
+        // loop by keybt
+        for(int j=0; j<8; j++)
+        {
+            KEYCODE& kc = (*locale)[i]->codes[j];
+            if (!kc.empty())
+            {
+                if (kc.modifier <= maxMapOffset)
+                    keySyms[kc.code * byte_per_code + kc.modifier] = kc.symbol;
+
+            }
+        }
     }
 
-    XChangeKeyboardMapping(display, nFromSymbol, byte_per_code, keySyms, count);
-    delete [] keySyms;
-}
+    //Now look for modifiers > 5 and reassign them to free places
+    for(int i=0; i<SYMBOL_KEYS_COUNT; i++)
+    {
+        // loop by keybt
+        for(int j=0; j<8; j++)
+        {
+            KEYCODE& kc = (*locale)[i]->codes[j];
+            if (!kc.empty())
+            {
+                if (kc.modifier > maxMapOffset)
+                {
+                    for(int i1=0; i1<SYMBOL_KEYS_COUNT; i1++)
+                        for(int j1=0; j1<=maxMapOffset; j1++)
+                            if (keySyms[i1 * byte_per_code + j1]==NoSymbol)
+                            {
+                                kc.code =i1;
+                                kc.modifier =j1;
+                                break;
+                            }
+
+                }
+                keySyms[kc.code * byte_per_code + kc.modifier] = kc.symbol;
+            }
+        }
+    }
 
-void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* locale)
-{
-    Display *display = XOpenDisplay(0);
-    if(display == NULL)
-       return;
 
-    setSymbolsFromButton(display, *locale, byte_per_code, min_keycodes + 41, 0, 1);
-    setSymbolsFromButton(display, *locale, byte_per_code, min_keycodes + 2,  1, 12);
-    setSymbolsFromButton(display, *locale, byte_per_code, min_keycodes + 16,  13, 12);
-    setSymbolsFromButton(display, *locale, byte_per_code, min_keycodes + 30,  25, 11);
-    setSymbolsFromButton(display, *locale, byte_per_code, min_keycodes + 44,  37, 10);
+    XChangeKeyboardMapping(display, min_keycodes, byte_per_code, keySyms, max_keycodes - min_keycodes);
+    XFree(keySyms);
 
     XCloseDisplay(display);
 }
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp
index bfd888a..341ff40 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette_mac.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBKeyboardPalette.h"
 
 #include <stdio.h>
@@ -22,15 +30,13 @@
 #include <QMap>
 #include <QString>
 
-void UBKeyboardButton::sendUnicodeSymbol(unsigned int nSymbol1, unsigned int nSymbol2, bool shift)
+void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode)
 {
-	unsigned int nSymbol = (shift)? nSymbol2 : nSymbol1;
-
-	if (shift)
+    if (keycode.modifier)
 		CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, true));
-	CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, nSymbol, true));
-	CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, nSymbol, false));
-	if (shift)
+    CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, keycode.code, true));
+    CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, keycode.code, false));
+    if (keycode.modifier)
 		CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, false));
 	
 }
@@ -46,68 +52,53 @@ void UBKeyboardButton::sendControlSymbol(int nSymbol)
 
 void UBKeyboardPalette::createCtrlButtons()
 {
-        ctrlButtons = new UBKeyboardButton*[7];
-
-        ctrlButtons[0] = new UBCntrlButton(this, "<-", 51);
-        ctrlButtons[1] = new UBCntrlButton(this, "<->", 48);
-        ctrlButtons[2] = new UBCntrlButton(this, tr("Enter"), 76);
-        ctrlButtons[3] = new UBCapsLockButton(this, "capslock");
-        ctrlButtons[4] = new UBCapsLockButton(this, "capslock");
-        ctrlButtons[5] = new UBLocaleButton(this);
-        ctrlButtons[6] = new UBCntrlButton(this, "", 49);
-        ctrlButtons[7] = new UBLocaleButton(this);
-}
+        ctrlButtons = new UBKeyboardButton*[9];
 
-void SetMacLocaleByIdentifier(const QString& id)
-{
-	const char * strName = id.toAscii().data();
-	CFStringRef iName = CFStringCreateWithCString(NULL, strName, kCFStringEncodingMacRoman );
-
-	CFStringRef keys[] = { kTISPropertyInputSourceCategory, kTISPropertyInputSourceID };          
-	CFStringRef values[] = { kTISCategoryKeyboardInputSource, iName };          
-	CFDictionaryRef dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 2, NULL, NULL);  
-	CFArrayRef kbds = TISCreateInputSourceList(dict, true);          
-	if (CFArrayGetCount(kbds)!=0)
-	{
-		TISInputSourceRef klRef =  (TISInputSourceRef)CFArrayGetValueAtIndex(kbds, 0);  
-		if (klRef!=NULL)
-			TISSelectInputSource(klRef);
-	}
+        ctrlButtons[0] = new UBCntrlButton(this, 51, "backspace");
+        ctrlButtons[1] = new UBCntrlButton(this, 48, "tab");
+        ctrlButtons[2] = new UBCapsLockButton(this, "capslock");
+        ctrlButtons[3] = new UBCntrlButton(this, tr("Enter"), 76);
+        ctrlButtons[4] = new UBShiftButton(this, "shift");
+        ctrlButtons[5] = new UBShiftButton(this, "shift");
+        ctrlButtons[6] = new UBLocaleButton(this);
+        ctrlButtons[7] = new UBCntrlButton(this, "", 49);
+        ctrlButtons[8] = new UBLocaleButton(this);
 }
 
-void UBKeyboardPalette::onActivated(bool activated)
+
+
+void UBKeyboardPalette::checkLayout()
 {
-	if (activated)
-	{
-		TISInputSourceRef selectedLocale = TISCopyCurrentKeyboardInputSource();
-
-		CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(selectedLocale,
-															  kTISPropertyInputSourceID);  
-
-		if (sr!=NULL)
-		{
-			char tmp[1024];
-			CFStringGetCString(sr, tmp, 1024, 0);
-			activeLocale = tmp;	
-		}
-		else
-			activeLocale = "";
-	
+    TISInputSourceRef selectedLocale = TISCopyCurrentKeyboardInputSource();
+
+    CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(selectedLocale,
+                                                          kTISPropertyInputSourceID);
 
-	    onLocaleChanged(locales[nCurrentLocale]);
-	}
-	else
-	{
-		if (activeLocale != "")
-			SetMacLocaleByIdentifier(activeLocale);
-	}
+    if (sr!=NULL)
+    {
+        char clId[1024];
+        CFStringGetCString(sr, clId, 1024, 0);
+
+        for(int i=0; i<nLocalesCount;i++)
+        {
+            if (locales[i]->id == clId)
+            {
+                if (nCurrentLocale!=i)
+                {
+                    setLocale(i);
+                }
+                break;
+            }
+        }
+    }
 }
-void UBKeyboardPalette::onDeactivated()
+
+void UBKeyboardPalette::onActivated(bool)
 {
-    SetMacLocaleByIdentifier(activeLocale);
 }
+
 void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* locale)
 {
-	SetMacLocaleByIdentifier(locale->id);
+    UBPlatformUtils::SetMacLocaleByIdentifier(locale->id);
 }
 
diff --git a/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp b/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp
index e14ec22..4c52552 100644
--- a/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp
+++ b/Sankore-3.1/src/gui/UBKeyboardPalette_win.cpp
@@ -1,3 +1,24 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include "UBKeyboardPalette.h"
 
@@ -8,21 +29,19 @@
 
 #include "core/memcheck.h"
 
-void UBKeyboardButton::sendUnicodeSymbol(unsigned int nSymbol1, unsigned int nSymbol2, bool shift)
+void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode)
 {
-	unsigned int nSymbol = shift? nSymbol2 : nSymbol1;
-
 	INPUT input[2];
 	input[0].type = INPUT_KEYBOARD;
 	input[0].ki.wVk = 0;
-	input[0].ki.wScan = nSymbol;
+    input[0].ki.wScan = keycode.symbol;
 	input[0].ki.dwFlags = KEYEVENTF_UNICODE;
 	input[0].ki.time = 0;
 	input[0].ki.dwExtraInfo = 0;
 
 	input[1].type = INPUT_KEYBOARD;
 	input[1].ki.wVk = 0;
-	input[1].ki.wScan = nSymbol;
+    input[1].ki.wScan = keycode.symbol;
 	input[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
 	input[1].ki.time = 0;
 	input[1].ki.dwExtraInfo = 0;
@@ -57,23 +76,21 @@ void UBKeyboardPalette::createCtrlButtons()
 
     ctrlButtons[ctrlID++] = new UBCntrlButton(this, 0x08, "backspace");// Backspace
     ctrlButtons[ctrlID++] = new UBCntrlButton(this, 0x09, "tab");      // Tab
-//     ctrlButtons[ctrlID++] = new UBKeyButton(this);                  // Row 2 Stub
-//     ctrlButtons[ctrlID++] = new UBKeyButton(this);                  // Row 3 Stub
+    ctrlButtons[ctrlID++] = new UBCapsLockButton(this, "capslock");    // Shift
     ctrlButtons[ctrlID++] = new UBCntrlButton(this, tr("Enter"), 0x0d);    // Enter
-    ctrlButtons[ctrlID++] = new UBCapsLockButton(this, "capslock");    // Caps Lock
-    ctrlButtons[ctrlID++] = new UBCapsLockButton(this, "capslock");    // Caps Lock
+    ctrlButtons[ctrlID++] = new UBShiftButton(this, "shift");    // Shift
+    ctrlButtons[ctrlID++] = new UBShiftButton(this, "shift");    // Shift
     ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
     ctrlButtons[ctrlID++] = new UBCntrlButton(this, "", 0x20);         // Space
     ctrlButtons[ctrlID++] = new UBLocaleButton(this);                  // Language Switch 
 }
 
+void UBKeyboardPalette::checkLayout()
+{}
+
 void UBKeyboardPalette::onActivated(bool)
-{
-}
-void UBKeyboardPalette::onDeactivated()
-{
+{}
 
-}
 void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* )
 {}
 
diff --git a/Sankore-3.1/src/gui/UBLeftPalette.cpp b/Sankore-3.1/src/gui/UBLeftPalette.cpp
index 00e0a4d..cc1ddc6 100644
--- a/Sankore-3.1/src/gui/UBLeftPalette.cpp
+++ b/Sankore-3.1/src/gui/UBLeftPalette.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBLeftPalette.h"
 #include "core/UBSettings.h"
 
@@ -25,11 +33,22 @@ UBLeftPalette::UBLeftPalette(QWidget *parent, const char *name):
 {
     setObjectName(name);
     setOrientation(eUBDockOrientation_Left);
-
-    mLastWidth = UBSettings::settings()->leftLibPaletteWidth->get().toInt();
     mCollapseWidth = 150;
 
-    resize(mLastWidth, parentWidget()->height());
+    bool isCollapsed = false;
+    if(mCurrentMode == eUBDockPaletteWidget_BOARD){
+    	mLastWidth = UBSettings::settings()->leftLibPaletteBoardModeWidth->get().toInt();
+    	isCollapsed = UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->get().toBool();
+    }
+    else{
+    	mLastWidth = UBSettings::settings()->leftLibPaletteDesktopModeWidth->get().toInt();
+    	isCollapsed = UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->get().toBool();
+    }
+
+    if(isCollapsed)
+    	resize(0,parentWidget()->height());
+    else
+    	resize(mLastWidth, parentWidget()->height());
 }
 
 /**
@@ -40,12 +59,20 @@ UBLeftPalette::~UBLeftPalette()
 
 }
 
+
+void UBLeftPalette::onDocumentSet(UBDocumentProxy* documentProxy)
+{
+	//This is necessary to force the teacher guide to be showed in priority each time a document is set
+	if(documentProxy && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool())
+		mLastOpenedTabForMode.insert(eUBDockPaletteWidget_BOARD, 1);
+}
+
 /**
  * \brief Update the maximum width
  */
 void UBLeftPalette::updateMaxWidth()
 {
-    setMaximumWidth(270);
+    setMaximumWidth((int)(parentWidget()->width() * 0.45));
 }
 
 /**
@@ -54,6 +81,36 @@ void UBLeftPalette::updateMaxWidth()
  */
 void UBLeftPalette::resizeEvent(QResizeEvent *event)
 {
-    UBSettings::settings()->leftLibPaletteWidth->set(width());
+	int newWidth = width();
+	if(mCurrentMode == eUBDockPaletteWidget_BOARD){
+		if(newWidth > mCollapseWidth)
+			UBSettings::settings()->leftLibPaletteBoardModeWidth->set(newWidth);
+		UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->set(newWidth == 0);
+	}
+	else{
+		if(newWidth > mCollapseWidth)
+			UBSettings::settings()->leftLibPaletteDesktopModeWidth->set(newWidth);
+		UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->set(newWidth == 0);
+	}
     UBDockPalette::resizeEvent(event);
 }
+
+
+bool UBLeftPalette::switchMode(eUBDockPaletteWidgetMode mode)
+{
+	int newModeWidth;
+	if(mode == eUBDockPaletteWidget_BOARD){
+		mLastWidth = UBSettings::settings()->leftLibPaletteBoardModeWidth->get().toInt();
+		newModeWidth = mLastWidth;
+		if(UBSettings::settings()->leftLibPaletteBoardModeIsCollapsed->get().toBool())
+			newModeWidth = 0;
+	}
+	else{
+		mLastWidth = UBSettings::settings()->leftLibPaletteDesktopModeWidth->get().toInt();
+		newModeWidth = mLastWidth;
+		if(UBSettings::settings()->leftLibPaletteDesktopModeIsCollapsed->get().toBool())
+			newModeWidth = 0;
+	}
+	resize(newModeWidth,height());
+	return UBDockPalette::switchMode(mode);
+}
diff --git a/Sankore-3.1/src/gui/UBLeftPalette.h b/Sankore-3.1/src/gui/UBLeftPalette.h
index cdb4933..564c627 100644
--- a/Sankore-3.1/src/gui/UBLeftPalette.h
+++ b/Sankore-3.1/src/gui/UBLeftPalette.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBLEFTPALETTE_H
 #define UBLEFTPALETTE_H
 
@@ -23,6 +31,11 @@ public:
     UBLeftPalette(QWidget* parent=0, const char* name="UBLeftPalette");
     ~UBLeftPalette();
 
+    bool switchMode(eUBDockPaletteWidgetMode mode);
+
+public slots:
+    void onDocumentSet(UBDocumentProxy* documentProxy);
+
 protected:
     void updateMaxWidth();
     void resizeEvent(QResizeEvent *event);
diff --git a/Sankore-3.1/src/gui/UBLibActionBar.cpp b/Sankore-3.1/src/gui/UBLibActionBar.cpp
deleted file mode 100644
index 046f81d..0000000
--- a/Sankore-3.1/src/gui/UBLibActionBar.cpp
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * 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/>.
- */
-#include <QIcon>
-#include <QSize>
-#include <QDebug>
-
-#include "UBLibWidget.h"
-#include "UBLibActionBar.h"
-#include "core/UBApplication.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBLibActionBar::UBLibActionBar(QWidget *parent, const char *name):QWidget(parent)
-    , mCrntButtonSet(eButtonSet_Default)
-    , mPreviousButtonSet(eButtonSet_Default)
-    , mButtonGroup(NULL)
-    , mSearchBar(NULL)
-    , mLayout(NULL)
-    , mpFavoriteAction(NULL)
-    , mpSocialAction(NULL)
-    , mpDeleteAction(NULL)
-    , mpSearchAction(NULL)
-    , mpCloseAction(NULL)
-    , mpRemoveFavorite(NULL)
-    , mpNewFolderAction(NULL)
-    , mpFavoriteBtn(NULL)
-    , mpSocialBtn(NULL)
-    , mpDeleteBtn(NULL)
-    , mpSearchBtn(NULL)
-    , mpCloseBtn(NULL)
-    , mpRemoveFavoriteBtn(NULL)
-    , mpNewFolderBtn(NULL)
-    , bFavorite(false)
-    , bIsInTrash(false)
-{
-    setObjectName(name);
-    setStyleSheet(QString("background: #EEEEEE; border-radius : 10px; border : 2px solid #999999;"));
-
-    setAcceptDrops(true);
-
-    mButtonGroup = new QButtonGroup(this);
-    mSearchBar = new QLineEdit(this);
-    mSearchBar->setStyleSheet(QString("background-color:white; border-radius : 10px; padding : 2px;"));
-    connect(mSearchBar, SIGNAL(returnPressed()), this, SLOT(onActionSearch()));
-
-    mLayout = new QHBoxLayout();
-    setLayout(mLayout);
-
-    setMaximumHeight(ACTIONBAR_HEIGHT);
-
-    // Create the actions
-    mpFavoriteAction = new QAction(QIcon(":/images/libpalette/miniFavorite.png"), tr("Add to favorites"), this);
-    mpSocialAction = new QAction(QIcon(":/images/libpalette/social.png"), tr("Share"), this);
-    mpSearchAction = new QAction(QIcon(":/images/libpalette/miniSearch.png"), tr("Search"), this);
-    mpDeleteAction = new QAction(QIcon(":/images/libpalette/miniTrash.png"), tr("Delete"), this);
-    mpCloseAction = new QAction(QIcon(":/images/close.svg"), tr("Back to folder"), this);
-    mpRemoveFavorite = new QAction(QIcon(":/images/libpalette/trash_favorite.svg"), tr("Remove from favorites"), this);
-    mpNewFolderAction = new QAction(QIcon(":/images/libpalette/miniNewFolder.png"), tr("Create new folder"), this);
-
-    // Create the buttons
-    mpFavoriteBtn = new UBActionButton(this, mpFavoriteAction);
-    mpSocialBtn = new UBActionButton(this, mpSocialAction);
-    mpSearchBtn = new UBActionButton(this, mpSearchAction);
-    mpDeleteBtn = new UBActionButton(this, mpDeleteAction);
-    mpCloseBtn = new UBActionButton(this, mpCloseAction);
-    mpRemoveFavoriteBtn = new UBActionButton(this, mpRemoveFavorite);
-    mpNewFolderBtn = new UBActionButton(this, mpNewFolderAction);
-
-    // Initialize the buttons
-    mpSearchBtn->setEnabled(false);
-    mpNewFolderBtn->setEnabled(false);
-
-    // Add the buttons to the button group
-    mButtonGroup->addButton(mpFavoriteBtn);
-    mButtonGroup->addButton(mpSocialBtn);
-    mButtonGroup->addButton(mpSearchBtn);
-    mButtonGroup->addButton(mpDeleteBtn);
-    mButtonGroup->addButton(mpCloseBtn);
-    mButtonGroup->addButton(mpRemoveFavoriteBtn);
-    mButtonGroup->addButton(mpNewFolderBtn);
-    // Connect signals & slots
-    connect(mpFavoriteAction,SIGNAL(triggered()), this, SLOT(onActionFavorite()));
-    connect(mpSocialAction,SIGNAL(triggered()), this, SLOT(onActionSocial()));
-    connect(mpSearchAction,SIGNAL(triggered()), this, SLOT(onActionSearch()));
-    connect(mpDeleteAction,SIGNAL(triggered()), this, SLOT(onActionTrash()));
-    connect(mpCloseAction, SIGNAL(triggered()), this, SLOT(onActionClose()));
-    connect(mpRemoveFavorite, SIGNAL(triggered()), this, SLOT(onActionRemoveFavorite()));
-    connect(mSearchBar, SIGNAL(textChanged(QString)), this, SLOT(onSearchTextChanged(QString)));
-    connect(mpNewFolderAction, SIGNAL(triggered()), this, SLOT(onActionNewFolder()));
-
-    // Build the default toolbar
-    mLayout->addWidget(mpFavoriteBtn);
-    mLayout->addWidget(mpSocialBtn);
-    mLayout->addWidget(mpNewFolderBtn);
-    mLayout->addWidget(mSearchBar);
-    mLayout->addWidget(mpSearchBtn);
-    mLayout->addWidget(mpDeleteBtn);
-    mLayout->addWidget(mpCloseBtn);
-    mLayout->addWidget(mpRemoveFavoriteBtn);
-
-    setButtons(eButtonSet_Default);
-}
-
-/**
- * \brief Destructor
- */
-UBLibActionBar::~UBLibActionBar()
-{
-    if(NULL != mpNewFolderAction)
-    {
-        delete mpNewFolderAction;
-        mpNewFolderAction = NULL;
-    }
-    if(NULL != mpNewFolderBtn)
-    {
-        delete mpNewFolderBtn;
-        mpNewFolderBtn = NULL;
-    }
-    if(NULL != mpRemoveFavorite)
-    {
-        delete mpRemoveFavorite;
-        mpRemoveFavorite = NULL;
-    }
-    if(NULL != mpRemoveFavoriteBtn)
-    {
-        delete mpRemoveFavoriteBtn;
-        mpRemoveFavoriteBtn = NULL;
-    }
-    if(NULL != mpCloseAction)
-    {
-        delete mpCloseAction;
-        mpCloseAction = NULL;
-    }
-    if(NULL != mpDeleteAction)
-    {
-        delete mpDeleteAction;
-        mpDeleteAction = NULL;
-    }
-    if(NULL != mpFavoriteAction)
-    {
-        delete mpFavoriteAction;
-        mpFavoriteAction = NULL;
-    }
-    if(NULL != mpSearchAction)
-    {
-        delete mpSearchAction;
-        mpSearchAction = NULL;
-    }
-    if(NULL != mpSocialAction)
-    {
-        delete mpSocialAction;
-        mpSocialAction = NULL;
-    }
-    if(NULL != mpCloseBtn)
-    {
-        delete mpCloseBtn;
-        mpCloseBtn = NULL;
-    }
-    if(NULL != mpDeleteBtn)
-    {
-        delete mpDeleteBtn;
-        mpDeleteBtn = NULL;
-    }
-    if(NULL != mpFavoriteBtn)
-    {
-        delete mpFavoriteBtn;
-        mpFavoriteBtn = NULL;
-    }
-    if(NULL != mpSearchBtn)
-    {
-        delete mpSearchBtn;
-        mpSearchBtn = NULL;
-    }
-    if(NULL != mpSocialBtn)
-    {
-        delete mpSocialBtn;
-        mpSocialBtn = NULL;
-    }
-    if(NULL != mButtonGroup)
-    {
-        delete mButtonGroup;
-        mButtonGroup = NULL;
-    }
-    if(NULL != mSearchBar)
-    {
-        delete mSearchBar;
-        mSearchBar = NULL;
-    }
-    if(NULL != mLayout)
-    {
-        delete mLayout;
-        mLayout = NULL;
-    }
-}
-
-/**
- * \brief Set the buttons of the action bar
- * @param setID as the button set
- */
-void UBLibActionBar::setButtons(eButtonSet setID)
-{
-    mPreviousButtonSet = mCrntButtonSet;
-    mCrntButtonSet = setID;
-    switch(setID)
-    {
-    case eButtonSet_Default:
-        mpFavoriteBtn->show();
-        mpSocialBtn->hide();
-        mSearchBar->show();
-        mpSearchBtn->show();
-        mpDeleteBtn->show();
-        mpCloseBtn->hide();
-        mpRemoveFavoriteBtn->hide();
-        mpNewFolderBtn->show();
-        break;
-    case eButtonSet_Properties:
-        mpFavoriteBtn->show();
-        mpSocialBtn->hide();
-        mSearchBar->show();
-        mpSearchBtn->show();
-        mpDeleteBtn->hide();
-        mpCloseBtn->hide();
-        mpRemoveFavoriteBtn->hide();
-        mpNewFolderBtn->hide();
-        break;
-    case eButtonSet_Favorite:
-        mpFavoriteBtn->hide();
-        mpSocialBtn->hide();
-        mSearchBar->show();
-        mpSearchBtn->show();
-        mpDeleteBtn->hide();
-        mpCloseBtn->hide();
-        mpRemoveFavoriteBtn->show();
-        mpNewFolderBtn->hide();
-        break;
-    default:
-        break;
-    }
-}
-
-/**
- * \brief (un)set the selected element to favorite
- */
-void UBLibActionBar::onActionFavorite()
-{
-    mpFavoriteBtn->setIcon(QIcon(":/images/libpalette/miniFavorite.png"));
-    libraryController()->addToFavorite(mSelectedElements);
-}
-
-/**
- * \brief Handle the mouse enter event
- * @param event as the event
- */
-void UBLibActionBar::enterEvent(QEvent *event)
-{
-    Q_UNUSED(event);
-    setCursor(Qt::ArrowCursor);
-}
-
-/**
- * \brief Handle the mouse leave event
- * @param event as the event
- */
-void UBLibActionBar::leaveEvent(QEvent *event)
-{
-    Q_UNUSED(event);
-    unsetCursor();
-}
-
-/**
- * \brief Perform the search
- */
-void UBLibActionBar::onActionSearch()
-{
-    emit searchElement(mSearchBar->text());
-}
-
-/**
- * \brief Trigger the social action
- */
-void UBLibActionBar::onActionSocial()
-{
-    // To be implemented
-}
-
-/**
- * \brief Handles the close action
- */
-void UBLibActionBar::onActionClose()
-{
-    emit showFolderContent();
-}
-
-/**
- * \brief Delete the selected element
- */
-void UBLibActionBar::onActionTrash()
-{
-    if(!bIsInTrash)
-    {
-        libraryController()->trashElements(mSelectedElements);
-    }
-    else
-    {
-        libraryController()->emptyElementsOnTrash(mSelectedElements);
-    }
-    emit deleteDone();
-}
-
-/**
- * \brief Remove the selected favorite(s)
- */
-void UBLibActionBar::onActionRemoveFavorite()
-{
-    libraryController()->removeFromFavorite(mSelectedElements);
-    emit deleteDone();
-}
-
-/**
- * \brief Handles the selection change event
- * @param itemList as the list of selected items
- * @param isInTrash indicates if the current folder is the trash
- */
-void UBLibActionBar::onSelectionChanged(QList<UBLibElement *> itemList, bool isInTrash)
-{
-    bIsInTrash = isInTrash;
-    mSelectedElements = itemList;
-    bool bEnable = (itemList.count() != 0) ? true : false;
-
-    if(mCrntButtonSet == eButtonSet_Favorite)
-    {
-        mpRemoveFavoriteBtn->setEnabled(bEnable);
-        return;
-    }
-
-    mpFavoriteAction->setEnabled(bEnable);
-    mpSocialAction->setEnabled(bEnable);
-    mpDeleteAction->setEnabled(bEnable && libraryController()->canItemsOnElementBeDeleted(itemList.at(0)));
-}
-
-/**
- * \brief Get the library controller
- * @return a pointer on the library controller
- */
-UBLibraryController* UBLibActionBar::libraryController()
-{
-    UBLibWidget* libWidget = dynamic_cast<UBLibWidget*>(parentWidget());
-    return libWidget->libNavigator()->libraryWidget()->libraryController();
-}
-
-/**
- * \brief Show the actions related to the Favorites folder
- */
-void UBLibActionBar::onFavoritesEntered(bool bFav)
-{
-    setButtons(bFav ? eButtonSet_Favorite : eButtonSet_Default);
-}
-
-/**
- * \brief Handles the drag enter event
- * @param event as the drag enter event
- */
-void UBLibActionBar::dragEnterEvent(QDragEnterEvent *event)
-{
-    event->acceptProposedAction();
-}
-
-/**
- * \brief Handles the drag move event
- * @param event as the drag move event
- */
-void UBLibActionBar::dragMoveEvent(QDragMoveEvent *event)
-{
-    event->acceptProposedAction();
-}
-
-/**
- * \brief Handles the drop event
- * @param event as the given drop event
- */
-void UBLibActionBar::dropEvent(QDropEvent *event)
-{
-    const QPoint droppedPoint = event->pos();
-
-
-    QWidget* pTargetW = widgetAtPos(droppedPoint);
-    if(NULL != pTargetW)
-    {
-        if(mpFavoriteBtn == pTargetW)
-        {
-            onActionFavorite();
-        }
-        else if(mpRemoveFavoriteBtn == pTargetW)
-        {
-            onActionRemoveFavorite();
-        }
-        else if(mpDeleteBtn == pTargetW)
-        {
-            if(mpDeleteBtn->isEnabled())
-            {
-                onActionTrash();
-            }
-        }
-        else if(mpSocialBtn == pTargetW)
-        {
-            onActionSocial();
-        }
-    }
-    event->acceptProposedAction();
-}
-
-/**
- * \brief Get the widget at the given position
- * @param p as the given position
- * @return a pointer on the related QWidget
- */
-QWidget* UBLibActionBar::widgetAtPos(const QPoint p)
-{
-    Q_ASSERT(mpDeleteBtn != NULL);
-    Q_ASSERT(mpFavoriteBtn != NULL);
-    Q_ASSERT(mpRemoveFavoriteBtn != NULL);
-    Q_ASSERT(mpSocialBtn != NULL);
-
-    QList<UBActionButton*> qlBttns;
-    qlBttns << mpFavoriteBtn;
-    qlBttns << mpDeleteBtn;
-    qlBttns << mpRemoveFavoriteBtn;
-    qlBttns << mpSocialBtn;
-
-    foreach(UBActionButton* bt, qlBttns)
-    {
-        if(bt->pos().x() <= p.x() &&
-           bt->pos().x() + bt->rect().width() >= p.x() &&
-           bt->pos().y() <= p.y() &&
-           bt->pos().y() + bt->rect().height() >= p.y())
-        {
-            if(bt->isVisible())
-            {
-                return bt;
-            }
-        }
-    }
-
-    // No interesting button has been found
-    return NULL;
-}
-
-/**
- * \brief Handles the text changed event of the search bar
- */
-void UBLibActionBar::onSearchTextChanged(QString txt)
-{
-    Q_UNUSED(txt);
-    onActionSearch();
-}
-
-/**
- * \brief Add a new folder
- */
-void UBLibActionBar::onActionNewFolder()
-{
-    emit newFolderToCreate();
-}
-
-/**
- * \brief Update the action bar elements
- * @param crntElem as the current element
- */
-void UBLibActionBar::onNavigbarUpdate(UBLibElement *crntElem)
-{
-    if(NULL != crntElem)
-    {
-        if(crntElem->type() == eUBLibElementType_Folder)
-        {
-            if(libraryController()->canItemsOnElementBeDeleted(crntElem) && !bIsInTrash)
-                mpNewFolderBtn->setEnabled(true);
-            else 
-                mpNewFolderBtn->setEnabled(false);
-        }
-        else
-        {
-            mpNewFolderBtn->setEnabled(false);
-        }
-    }
-}
-
-
-void UBLibActionBar::onItemChanged()
-{
-    mSearchBar->setText("");
-    mpSearchBtn->setEnabled(false);
-}
-
-/**
- * \brief Construtor
- * @param parent as the parent widget
- * @param action as the related action
- * @param name as the related object name
- */
-UBActionButton::UBActionButton(QWidget *parent, QAction* action, const char *name):QToolButton(parent)
-{
-    setObjectName(name);
-    addAction(action);
-    setDefaultAction(action);
-    setIconSize(QSize(BUTTON_SIZE, BUTTON_SIZE));
-    setToolButtonStyle(Qt::ToolButtonIconOnly);
-    setStyleSheet(QString("QToolButton {color: white; font-weight: bold; font-family: Arial; background-color: transparent; border: none}"));
-    setFocusPolicy(Qt::NoFocus);
-}
-
-/**
- * \brief Destructor
- */
-UBActionButton::~UBActionButton()
-{
-
-}
diff --git a/Sankore-3.1/src/gui/UBLibActionBar.h b/Sankore-3.1/src/gui/UBLibActionBar.h
deleted file mode 100644
index a7a1b4a..0000000
--- a/Sankore-3.1/src/gui/UBLibActionBar.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBACTIONBAR_H
-#define UBLIBACTIONBAR_H
-
-#include <QWidget>
-#include <QButtonGroup>
-#include <QHBoxLayout>
-#include <QList>
-#include <QAction>
-#include <QLineEdit>
-#include <QToolButton>
-#include <QStackedWidget>
-#include <QDropEvent>
-#include <QDragEnterEvent>
-#include <QDragMoveEvent>
-
-#include "board/UBLibraryController.h"
-
-#define BUTTON_SIZE 24
-#define ACTIONBAR_HEIGHT 42
-
-typedef enum
-{
-    eButtonSet_Default,
-    eButtonSet_Properties,
-    eButtonSet_Favorite
-} eButtonSet;
-
-class UBActionButton : public QToolButton
-{
-public:
-    UBActionButton(QWidget* parent=0, QAction* action=0, const char* name="UBActionButton");
-    ~UBActionButton();
-};
-
-class UBLibActionBar : public QWidget
-{
-    Q_OBJECT
-public:
-    UBLibActionBar(QWidget* parent=0, const char* name="UBLibActionBar");
-    ~UBLibActionBar();
-
-    void setButtons(eButtonSet setID);
-    eButtonSet previousButtonSet(){return mPreviousButtonSet;}
-
-signals:
-    void deleteDone();
-    void showFolderContent();
-    void searchElement(QString text);
-    void newFolderToCreate();
-
-public slots:
-    void onSelectionChanged(QList<UBLibElement*> itemList, bool isInTrash);
-    void onFavoritesEntered(bool bFav);
-    void onNavigbarUpdate(UBLibElement* crntElem);
-    void onItemChanged();
-
-protected:
-    void enterEvent(QEvent *event);
-    void leaveEvent(QEvent *event);
-    void dragEnterEvent(QDragEnterEvent *event);
-    void dragMoveEvent(QDragMoveEvent *event);
-    void dropEvent(QDropEvent *event);
-
-private slots:
-    void onActionFavorite();
-    void onActionSocial();
-    void onActionSearch();
-    void onActionTrash();
-    void onActionClose();
-    void onActionRemoveFavorite();
-    void onSearchTextChanged(QString txt);
-    void onActionNewFolder();
-
-private:
-    QWidget* widgetAtPos(const QPoint p);
-    UBLibraryController* libraryController();
-
-    eButtonSet mCrntButtonSet;
-    eButtonSet mPreviousButtonSet;
-    QButtonGroup* mButtonGroup;
-    QList<UBLibElement*> mSelectedElements;
-    QLineEdit* mSearchBar;
-    QHBoxLayout* mLayout;
-    QAction* mpFavoriteAction;
-    QAction* mpSocialAction;
-    QAction* mpDeleteAction;
-    QAction* mpSearchAction;
-    QAction* mpCloseAction;
-    QAction* mpRemoveFavorite;
-    QAction* mpNewFolderAction;
-    UBActionButton* mpFavoriteBtn;
-    UBActionButton* mpSocialBtn;
-    UBActionButton* mpDeleteBtn;
-    UBActionButton* mpSearchBtn;
-    UBActionButton* mpCloseBtn;
-    UBActionButton* mpRemoveFavoriteBtn;
-    UBActionButton* mpNewFolderBtn;
-
-    // This flag will be removed after the test, normally we should ask
-    // the selected item if it is in favorite or not
-    bool bFavorite;
-    bool bIsInTrash;
-
-};
-
-#endif // UBLIBACTIONBAR_H
diff --git a/Sankore-3.1/src/gui/UBLibItemProperties.cpp b/Sankore-3.1/src/gui/UBLibItemProperties.cpp
deleted file mode 100644
index 86c9233..0000000
--- a/Sankore-3.1/src/gui/UBLibItemProperties.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * 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/>.
- */
-
-#include "UBLibWidget.h"
-#include "UBLibItemProperties.h"
-
-#include "core/UBApplication.h"
-#include "core/UBDownloadManager.h"
-
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "globals/UBGlobals.h"
-
-#include "core/memcheck.h"
-
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBLibItemProperties::UBLibItemProperties(QWidget *parent, const char *name):QWidget(parent)
-    , mpLayout(NULL)
-    , mpButtonLayout(NULL)
-    , mpAddPageButton(NULL)
-    , mpAddToLibButton(NULL)
-    , mpSetAsBackgroundButton(NULL)
-    , mpObjInfoLabel(NULL)
-    , mpObjInfos(NULL)
-    , mpThumbnail(NULL)
-    , mpOrigPixmap(NULL)
-    , mpElement(NULL)
-    , mpItem(NULL)
-{
-    setObjectName(name);
-
-    SET_STYLE_SHEET();
-
-    // Create the GUI
-    mpLayout = new QVBoxLayout(this);
-    setLayout(mpLayout);
-
-    maxThumbHeight = height() / 4;
-
-    mpThumbnail = new QLabel();
-    QPixmap icon(":images/libpalette/notFound.png");
-    icon.scaledToWidth(THUMBNAIL_WIDTH);
-
-    mpThumbnail->setPixmap(icon);
-    mpThumbnail->setObjectName("DockPaletteWidgetBox");
-    mpThumbnail->setStyleSheet("background:white;");
-    mpThumbnail->setAlignment(Qt::AlignHCenter);
-    mpLayout->addWidget(mpThumbnail, 0);
-
-    mpButtonLayout = new QHBoxLayout();
-    mpLayout->addLayout(mpButtonLayout, 0);
-
-    mpAddPageButton = new UBLibItemButton();
-    mpAddPageButton->setText(tr("Add to page"));
-    mpButtonLayout->addWidget(mpAddPageButton);
-
-    mpSetAsBackgroundButton = new UBLibItemButton();
-    mpSetAsBackgroundButton->setText(tr("Set as background"));
-    mpButtonLayout->addWidget(mpSetAsBackgroundButton);
-
-    mpAddToLibButton = new UBLibItemButton();
-    mpAddToLibButton->setText(tr("Add to library"));
-    mpButtonLayout->addWidget(mpAddToLibButton);
-
-    mpButtonLayout->addStretch(1);
-
-    mpObjInfoLabel = new QLabel(tr("Object informations"));
-    mpObjInfoLabel->setStyleSheet(QString("color: #888888; font-size : 18px; font-weight:bold;"));
-    mpLayout->addWidget(mpObjInfoLabel, 0);
-
-    mpObjInfos = new QTreeWidget(this);
-    mpObjInfos->setColumnCount(2);
-    mpObjInfos->header()->hide();
-    mpObjInfos->setAlternatingRowColors(true);
-    mpObjInfos->setRootIsDecorated(false);
-    mpObjInfos->setObjectName("DockPaletteWidgetBox");
-    mpObjInfos->setStyleSheet("background:white;");
-    mpLayout->addWidget(mpObjInfos, 1);
-
-    connect(mpAddPageButton, SIGNAL(clicked()), this, SLOT(onAddToPage()));
-    connect(mpSetAsBackgroundButton, SIGNAL(clicked()), this, SLOT(onSetAsBackground()));
-    connect(mpAddToLibButton, SIGNAL(clicked()), this, SLOT(onAddToLib()));
-
-}
-
-/**
- * \brief Destructor
- */
-UBLibItemProperties::~UBLibItemProperties()
-{
-    if(NULL != mpOrigPixmap)
-    {
-        delete mpOrigPixmap;
-        mpOrigPixmap = NULL;
-    }
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-    if(NULL != mpSetAsBackgroundButton)
-    {
-        delete mpSetAsBackgroundButton;
-        mpSetAsBackgroundButton = NULL;
-    }
-    if(NULL != mpAddPageButton)
-    {
-        delete mpAddPageButton;
-        mpAddPageButton = NULL;
-    }
-    if(NULL != mpAddToLibButton)
-    {
-        delete mpAddToLibButton;
-        mpAddToLibButton = NULL;
-    }
-    if(NULL != mpObjInfoLabel)
-    {
-        delete mpObjInfoLabel;
-        mpObjInfoLabel = NULL;
-    }
-    if(NULL != mpObjInfos)
-    {
-        delete mpObjInfos;
-        mpObjInfos = NULL;
-    }
-    if(NULL != mpThumbnail)
-    {
-        delete mpThumbnail;
-        mpThumbnail = NULL;
-    }
-}
-
-/**
- * \brief Handle the resize event
- * @param event as the resize event
- */
-void UBLibItemProperties::resizeEvent(QResizeEvent *event)
-{
-    Q_UNUSED(event);
-    adaptSize();
-}
-
-/**
- * \brief Adapt the thumbnail size
- */
-void UBLibItemProperties::adaptSize()
-{
-    if(NULL != mpOrigPixmap)
-    {
-        if(width() < THUMBNAIL_WIDTH + 40)
-        {
-            mpThumbnail->setPixmap(mpOrigPixmap->scaledToWidth(width() - 40));
-        }
-        else
-        {
-            mpThumbnail->setPixmap(mpOrigPixmap->scaledToWidth(THUMBNAIL_WIDTH));
-        }
-    }
-}
-
-/**
- * \brief Add the element to the page
- */
-void UBLibItemProperties::onAddToPage()
-{
-    if(UBApplication::isFromWeb(mpElement->path().toString())){
-        sDownloadFileDesc desc;
-        desc.isBackground = false;
-        desc.modal = true;
-        desc.name = QFileInfo(mpElement->path().toString()).fileName();
-        desc.url = mpElement->path().toString();
-        UBDownloadManager::downloadManager()->addFileToDownload(desc);
-
-    }else{
-        UBLibWidget* libWidget = dynamic_cast<UBLibWidget*>(parentWidget()->parentWidget());
-        libWidget->libNavigator()->libraryWidget()->libraryController()->addItemToPage(mpElement);
-    }
-}
-
-/**
- * \brief Add the item to the library
- */
-void UBLibItemProperties::onAddToLib()
-{
-    if(UBApplication::isFromWeb(mpElement->path().toString())){
-        sDownloadFileDesc desc;
-        desc.isBackground = false;
-        desc.modal = false;
-        desc.name = QFileInfo(mpElement->path().toString()).fileName();
-        desc.url = mpElement->path().toString();
-        UBDownloadManager::downloadManager()->addFileToDownload(desc);
-    }
-}
-
-/**
- * \brief Set the item as background
- */
-void UBLibItemProperties::onSetAsBackground()
-{
-    if(UBApplication::isFromWeb(mpElement->path().toString())){
-        sDownloadFileDesc desc;
-        desc.isBackground = true;
-        desc.modal = true;
-        desc.name = QFileInfo(mpElement->path().toString()).fileName();
-        desc.url = mpElement->path().toString();
-        UBDownloadManager::downloadManager()->addFileToDownload(desc);
-
-    }else{
-        UBLibWidget* libWidget = dynamic_cast<UBLibWidget*>(parentWidget()->parentWidget());
-        libWidget->libNavigator()->libraryWidget()->libraryController()->setItemAsBackground(mpElement);
-    }
-}
-
-/**
- * \brief Show the given element properties
- * @param elem as the given element
- */
-void UBLibItemProperties::showElement(UBLibElement *elem)
-{
-    if(NULL != mpOrigPixmap)
-    {
-        delete mpOrigPixmap;
-        mpOrigPixmap = NULL;
-    }
-    if(NULL != elem)
-    {
-        mpElement = elem;
-        mpOrigPixmap = new QPixmap(QPixmap::fromImage(*elem->thumbnail()));
-        mpThumbnail->setPixmap(QPixmap::fromImage(*elem->thumbnail()).scaledToWidth(THUMBNAIL_WIDTH));
-        populateMetadata();
-    }
-
-    if(UBApplication::isFromWeb(elem->path().toString())){
-        mpAddToLibButton->show();
-        if(elem->metadatas()["Type"].toLower().contains("image")){
-            mpSetAsBackgroundButton->show();
-        }else{
-            mpSetAsBackgroundButton->hide();
-        }
-    }else{
-        mpAddToLibButton->hide();
-        if(UBFileSystemUtils::mimeTypeFromFileName(elem->path().toLocalFile()).contains("image")){
-            mpSetAsBackgroundButton->show();
-        }else{
-            mpSetAsBackgroundButton->hide();
-        }
-    }
-}
-
-/**
- * \brief Navigate backward
- */
-void UBLibItemProperties::onBack()
-{
-    emit showFolderContent();
-}
-
-/**
- * \brief Handle the show event
- * @param event as the show event
- */
-void UBLibItemProperties::showEvent(QShowEvent *event)
-{
-    Q_UNUSED(event);
-    adaptSize();
-}
-
-void UBLibItemProperties::populateMetadata()
-{
-    if(NULL != mpObjInfos){
-        mpObjInfos->clear();
-        QMap<QString, QString> metas = mpElement->metadatas();
-        QList<QString> lKeys = metas.keys();
-        QList<QString> lValues = metas.values();
-
-        for(int i=0; i< metas.size(); i++){
-            QStringList values;
-            values << lKeys.at(i);
-            values << lValues.at(i);
-            mpItem = new QTreeWidgetItem(values);
-            mpObjInfos->addTopLevelItem(mpItem);
-        }
-        mpObjInfos->resizeColumnToContents(0);
-    }
-}
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBLibItemButton::UBLibItemButton(QWidget *parent, const char *name):QPushButton(parent)
-{
-    setObjectName(name);
-    setStyleSheet(QString("background-color : #DDDDDD; color : #555555; border-radius : 6px; padding : 5px; font-weight : bold; font-size : 12px;"));
-}
-
-/**
- * \brief Destructor
- */
-UBLibItemButton::~UBLibItemButton()
-{
-
-}
diff --git a/Sankore-3.1/src/gui/UBLibItemProperties.h b/Sankore-3.1/src/gui/UBLibItemProperties.h
deleted file mode 100644
index 8f4be2f..0000000
--- a/Sankore-3.1/src/gui/UBLibItemProperties.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBITEMPROPERTIES_H
-#define UBLIBITEMPROPERTIES_H
-
-#include <QWidget>
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QPushButton>
-#include <QPixmap>
-#include <QLabel>
-#include <QTextEdit>
-#include <QToolButton>
-#include <QAction>
-#include <QShowEvent>
-#include <QTreeWidget>
-
-#include "board/UBLibraryController.h"
-
-#define THUMBNAIL_WIDTH 400
-
-class UBLibItemButton : public QPushButton
-{
-public:
-    UBLibItemButton(QWidget* parent=0, const char* name="UBLibItemButton");
-    ~UBLibItemButton();
-};
-
-class UBLibItemProperties : public QWidget
-{
-    Q_OBJECT
-public:
-    UBLibItemProperties(QWidget* parent=0, const char* name="UBLibItemProperties");
-    ~UBLibItemProperties();
-
-    void showElement(UBLibElement* elem);
-
-signals:
-    void showFolderContent();
-
-protected:
-    void resizeEvent(QResizeEvent *event);
-    void showEvent(QShowEvent *event);
-
-private slots:
-    void onAddToPage();
-    void onAddToLib();
-    void onSetAsBackground();
-    void onBack();
-
-private:
-    void adaptSize();
-    void populateMetadata();
-
-    QVBoxLayout* mpLayout;
-    QHBoxLayout* mpButtonLayout;
-    UBLibItemButton* mpAddPageButton;
-    UBLibItemButton* mpAddToLibButton;
-    UBLibItemButton* mpSetAsBackgroundButton;
-    QLabel* mpObjInfoLabel;
-    QTreeWidget* mpObjInfos;
-    QLabel* mpThumbnail;
-    QPixmap* mpOrigPixmap;
-    int maxThumbHeight;
-    UBLibElement* mpElement;
-    QTreeWidgetItem* mpItem;
-};
-
-
-#endif // UBLIBITEMPROPERTIES_H
diff --git a/Sankore-3.1/src/gui/UBLibNavigatorWidget.cpp b/Sankore-3.1/src/gui/UBLibNavigatorWidget.cpp
deleted file mode 100644
index d7b5055..0000000
--- a/Sankore-3.1/src/gui/UBLibNavigatorWidget.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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/>.
- */
-#include "UBLibNavigatorWidget.h"
-#include "UBLibWidget.h"
-
-#include "core/UBApplication.h"
-
-#include "globals/UBGlobals.h"
-
-#include "core/memcheck.h"
-
-static int lowBoundForSlider = 40;
-static int topBoundForSlider = 120;
-static int tickIntervalForSlider = 10;
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBLibNavigatorWidget::UBLibNavigatorWidget(QWidget *parent, const char *name):QWidget(parent)
-  , mLayout(NULL)
-  , mLibWidget(NULL)
-  , mSlider(NULL)
-  , mSliderWidthSetting(NULL)
-{
-    setObjectName(name);
-
-    SET_STYLE_SHEET();
-
-    setAcceptDrops(true);
-
-    UBLibWidget* libWidget = dynamic_cast<UBLibWidget*>(parentWidget());
-    mLayout = new QVBoxLayout(this);
-    setLayout(mLayout);
-
-    mLibWidget = new UBLibraryWidget(this);
-    mLayout->addWidget(mLibWidget, 1);
-
-    mSlider = new QSlider(Qt::Horizontal, this);
-    mSlider->setMinimumHeight(20);
-    mSlider->setRange(lowBoundForSlider, topBoundForSlider);
-    mSliderWidthSetting = new UBSetting(UBSettings::settings(), "Library", "LibWidgetWidth", topBoundForSlider);
-    int defaultWidth = mSliderWidthSetting->get().toInt();
-    mSlider->setValue(defaultWidth);
-    mSlider->setTickInterval(tickIntervalForSlider);
-    mLayout->addWidget(mSlider, 0);
-
-    connect(mLibWidget, SIGNAL(navigBarUpdate(UBLibElement*)), this, SLOT(onNavigbarUpate(UBLibElement*)));
-    connect(this, SIGNAL(updateNavigBar(UBChainedLibElement*)), libWidget, SLOT(onUpdateNavigBar(UBChainedLibElement*)));
-    mLibWidget->updateThumbnailsSize(defaultWidth);
-
-
-    connect(mLibWidget, SIGNAL(propertiesRequested(UBLibElement*)), this, SLOT(onPropertiesRequested(UBLibElement*)));
-    connect(mLibWidget, SIGNAL(displaySearchEngine(UBLibElement*)), this, SLOT(onDisplaySearchEngine(UBLibElement*)));
-    connect(mSlider,SIGNAL(valueChanged(int)),this,SLOT(updateThumbnailsSize(int)));
-    connect(libWidget->pathViewer(), SIGNAL(mouseClick(UBChainedLibElement*)), this, SLOT(onPathItemClicked(UBChainedLibElement*)));
-    connect(libWidget->pathViewer(), SIGNAL(elementsDropped(QList<QString>,UBLibElement*)), mLibWidget, SLOT(onElementsDropped(QList<QString>,UBLibElement*)));
-    connect(mLibWidget, SIGNAL(navigBarUpdate(UBLibElement*)), libWidget->actionBar(), SLOT(onNavigbarUpdate(UBLibElement*)));
-    connect(mLibWidget, SIGNAL(itemsSelected(QList<UBLibElement*>, bool)), libWidget->actionBar(), SLOT(onSelectionChanged(QList<UBLibElement*>, bool)));
-    connect(libWidget->actionBar(), SIGNAL(deleteDone()), mLibWidget, SLOT(onRefreshCurrentFolder()));
-    connect(mLibWidget, SIGNAL(favoritesEntered(bool)), libWidget->actionBar(), SLOT(onFavoritesEntered(bool)));
-    connect(libWidget->actionBar(), SIGNAL(searchElement(QString)), mLibWidget, SLOT(onSearchElement(QString)));
-    connect(libWidget->actionBar(), SIGNAL(newFolderToCreate()), mLibWidget, SLOT(onNewFolderToCreate()));
-    connect(mLibWidget, SIGNAL(itemClicked()),libWidget->actionBar(), SLOT(onItemChanged()));
-    connect(libWidget->pathViewer(), SIGNAL(mouseClick(UBChainedLibElement*)),libWidget->actionBar(), SLOT(onItemChanged()));
-    mLibWidget->init();
-}
-
-/**
- * \brief Destructor
- */
-UBLibNavigatorWidget::~UBLibNavigatorWidget()
-{
-    if(NULL != mLibWidget)
-    {
-        delete mLibWidget;
-        mLibWidget = NULL;
-    }
-    if(NULL != mSlider)
-    {
-        delete mSlider;
-        mSlider = NULL;
-    }
-    if(NULL != mSliderWidthSetting)
-    {
-        delete mSliderWidthSetting;
-        mSliderWidthSetting = NULL;
-    }
-    if(NULL != mLayout)
-    {
-        delete mLayout;
-        mLayout = NULL;
-    }
-}
-
-void UBLibNavigatorWidget::dropMe(const QMimeData *_data)
-{
-    // Forward the mime data to the library widget
-    Q_UNUSED(_data);
-}
-
-/**
- * \brief Update the navigation bar
- * @param pElem as the current element
- */
-void UBLibNavigatorWidget::onNavigbarUpate(UBLibElement *pElem)
-{
-    Q_UNUSED(pElem);
-    emit updateNavigBar(mLibWidget->chainedElements);
-}
-
-/**
- * \brief Handle the click event on an item
- * @param elem as the clicked element
- */
-void UBLibNavigatorWidget::onPathItemClicked(UBChainedLibElement *elem)
-{
-	if (!this->libraryWidget()->isLoadingLibraryItems())
-	{
-		// If this element has some subelement, remove them
-		removeNextChainedElements(elem);
-
-		// The refresh the view
-		mLibWidget->setCurrentElemsAndRefresh(elem);
-	}
-}
-
-/**
- * \brief Remove the next chained elements
- * @param fromElem as the current elem
- */
-void UBLibNavigatorWidget::removeNextChainedElements(UBChainedLibElement *fromElem)
-{
-    if(NULL != fromElem)
-    {
-        if(NULL != fromElem->nextElement())
-        {
-            //removeNextChainedElements(fromElem->nextElement());
-            //delete fromElem->nextElement()->element();
-            //delete fromElem->nextElement();
-            delete fromElem->nextElement();
-            fromElem->setNextElement(NULL);
-        }
-    }
-}
-
-/**
- * \brief Handles the properties requested event
- * @param elem as the related element
- */
-void UBLibNavigatorWidget::onPropertiesRequested(UBLibElement *elem)
-{
-    emit propertiesRequested(elem);
-}
-
-/**
- * \brief Handles the display search engine requested event
- * @param elem as the related element
- */
-void UBLibNavigatorWidget::onDisplaySearchEngine(UBLibElement *elem)
-{
-    emit displaySearchEngine(elem);
-}
-
-/**
- * \brief Update the thumbnails size
- * @param newSize as the given thumbnails size
- */
-void UBLibNavigatorWidget::updateThumbnailsSize(int newSize)
-{
-    mSliderWidthSetting->set(newSize);
-    mLibWidget->updateThumbnailsSize(newSize);
-}
diff --git a/Sankore-3.1/src/gui/UBLibNavigatorWidget.h b/Sankore-3.1/src/gui/UBLibNavigatorWidget.h
deleted file mode 100644
index 6fc52ee..0000000
--- a/Sankore-3.1/src/gui/UBLibNavigatorWidget.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBNAVIGATORWIDGET_H
-#define UBLIBNAVIGATORWIDGET_H
-
-#include <QWidget>
-#include <QVBoxLayout>
-#include <QSlider>
-#include <QDropEvent>
-
-#include "UBLibraryWidget.h"
-#include "core/UBSetting.h"
-
-class UBLibNavigatorWidget : public QWidget
-{
-    Q_OBJECT
-public:
-    UBLibNavigatorWidget(QWidget* parent=0, const char* name="UBLibNavigatorWidget");
-    ~UBLibNavigatorWidget();
-    void dropMe(const QMimeData* _data);
-
-    UBLibraryWidget* libraryWidget(){return mLibWidget;}
-
-signals:
-    void propertiesRequested(UBLibElement* elem);
-    void displaySearchEngine(UBLibElement* elem);
-    void updateNavigBar(UBChainedLibElement* elem);
-
-private slots:
-    void onNavigbarUpate(UBLibElement* pElem);
-    void onPathItemClicked(UBChainedLibElement *elem);
-    void onPropertiesRequested(UBLibElement* elem);
-    void updateThumbnailsSize(int newSize);
-    void onDisplaySearchEngine(UBLibElement* elem);
-
-private:
-    void removeNextChainedElements(UBChainedLibElement* fromElem);
-
-    QVBoxLayout* mLayout;
-    UBLibraryWidget* mLibWidget;
-    QSlider* mSlider;
-    UBSetting* mSliderWidthSetting;
-};
-
-#endif // UBLIBNAVIGATORWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBLibPathViewer.cpp b/Sankore-3.1/src/gui/UBLibPathViewer.cpp
deleted file mode 100644
index 9ca91d8..0000000
--- a/Sankore-3.1/src/gui/UBLibPathViewer.cpp
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- * 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/>.
- */
-#include <QPixmap>
-#include <QDrag>
-#include <QPainter>
-
-#include "UBLibPathViewer.h"
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-
-#include "core/UBDownloadManager.h"
-#include "board/UBBoardPaletteManager.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBLibPathViewer::UBLibPathViewer(QWidget *parent, const char *name):QGraphicsView(parent)
-    , mpElems(NULL)
-    , mpElemsBackup(NULL)
-    , mpScene(NULL)
-    , mpLayout(NULL)
-    , mpContainer(NULL)
-    , mpBackElem(NULL)
-{
-    setObjectName(name);
-    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
-    setAcceptDrops(true);
-
-    mpBackElem = new UBLibElement();
-    mpBackElem->setThumbnail(QPixmap(":images/libpalette/back.png").toImage());
-    mpBackElem->setDeletable(false);
-
-    mpScene = new UBPathScene(this);
-    setScene(mpScene);
-
-    mpContainer = new QGraphicsWidget();
-    mpContainer->setMinimumWidth(width() - 20);
-    mpScene->addItem(mpContainer);
-    mpLayout = new QGraphicsLinearLayout();
-    mpContainer->setLayout(mpLayout);
-
-    connect(mpScene, SIGNAL(mouseClick(UBChainedLibElement*)), this, SLOT(onMouseClicked(UBChainedLibElement*)));
-    connect(mpScene, SIGNAL(elementsDropped(QList<QString>,UBLibElement*)), this, SLOT(onElementsDropped(QList<QString>,UBLibElement*)));
-    connect(horizontalScrollBar(), SIGNAL(sliderMoved(int)), this, SLOT(onSliderMoved(int)));
-}
-
-/**
- * \brief Destructor
- */
-UBLibPathViewer::~UBLibPathViewer()
-{
-    if(NULL != mpContainer)
-    {
-        delete mpContainer;
-        mpContainer = NULL;
-    }
-    if(NULL != mpBackElem)
-    {
-        delete mpBackElem;
-        mpBackElem = NULL;
-    }
-    if(NULL != mpElems)
-    {
-        delete mpElems;
-        mpElems = NULL;
-    }
-    //if(NULL != mpElemsBackup)
-    //{
-    //    delete mpElemsBackup;
-    //    mpElemsBackup = NULL;
-    //}
-    //if(NULL != mpLayout)
-    //{
-    //    delete mpLayout;
-    //    mpLayout = NULL;
-    //}
-    if(NULL != mpScene)
-    {
-        delete mpScene;
-        mpScene = NULL;
-    }
-}
-
-/**
- * \brief Display the current path
- * @param elementsChain as the path to display
- */
-void UBLibPathViewer::displayPath(UBChainedLibElement *elementsChain)
-{
-    if(NULL != elementsChain)
-    {
-        mpElems = elementsChain;
-        refreshPath();
-    }
-}
-
-/**
- * \brief Refresh the current path
- */
-void UBLibPathViewer::refreshPath()
-{
-    if (mpScene && mpContainer)
-        mpScene->removeItem(mpContainer);
-    if(mpContainer)
-        delete mpContainer;
-    mVItems.clear();
-    mpScene->mapWidgetToChainedElem()->clear();
-    mpContainer = new QGraphicsWidget();
-
-    mpScene->addItem(mpContainer);
-    mpLayout = new QGraphicsLinearLayout();
-    mpContainer->setLayout(mpLayout);
-    mSceneWidth = 0;
-    addItem(mpElems);
-    mpLayout->addStretch();
-
-    updateScrolls();
-
-}
-
-/**
- * \brief Handle the slider moved event
- * @param value as the current slider position
- */
-void UBLibPathViewer::onSliderMoved(int value)
-{
-    Q_UNUSED(value);
-}
-
-/**
- * \brief Update the scroll bar status
- */
-void UBLibPathViewer::updateScrolls()
-{
-    int iLimit = mSceneWidth + 40; // 2x 20 pixels margin
-    int iVp = viewport()->width();
-
-    if(iLimit >= iVp)
-    {
-        int iDiff = iLimit - iVp;
-        horizontalScrollBar()->setRange(0, iDiff);
-    }
-    else
-    {
-        horizontalScrollBar()->setRange(0, 0);
-    }
-}
-
-/**
- * \brief Append an item to the path
- * @param elem as the element to add to the path
- */
-void UBLibPathViewer::addItem(UBChainedLibElement *elem)
-{
-    if(NULL != elem)
-    {
-        // Add the icon
-        QLabel* pIconLabel = new QLabel();
-        pIconLabel->setStyleSheet(QString("background-color: transparent;"));
-        pIconLabel->setPixmap((QPixmap::fromImage(*elem->element()->thumbnail())).scaledToWidth(PATHITEMWIDTH));
-        UBFolderPath* iconWidget = reinterpret_cast<UBFolderPath*>(mpScene->addWidget(pIconLabel));
-        //iconWidget->setToolTip(elem->element()->name());
-        iconWidget->setWindowFlags(Qt::BypassGraphicsProxyWidget);
-        mpLayout->addItem(iconWidget);
-        mVItems << iconWidget;
-        mpScene->mapWidgetToChainedElem()->insert(iconWidget,elem);
-        mSceneWidth += pIconLabel->pixmap()->width() + 4; // 2px border
-
-        if(NULL != elem->nextElement())
-        {
-            // Add the arrow
-            QLabel* pArrowLabel = new QLabel();
-            pArrowLabel->setStyleSheet(QString("background-color: transparent;"));
-            pArrowLabel->setPixmap(QPixmap(":images/navig_arrow.png"));
-            QGraphicsWidget* arrowWidget = mpScene->addWidget(pArrowLabel);
-            mpLayout->addItem(arrowWidget);
-            mVItems << arrowWidget;
-            mSceneWidth += pArrowLabel->pixmap()->width() + 4; // 2px border
-
-            // Recursively call this method while a next item exists
-            addItem(elem->nextElement());
-        }
-    }
-}
-
-/**
- * \brief Handles the resize event
- * @param event as the resize event
- */
-void UBLibPathViewer::resizeEvent(QResizeEvent *event)
-{
- 
-    if(event->oldSize() == event->size())
-        event->ignore();
-    else{
-        if(NULL != mpContainer)
-            mpContainer->setMinimumWidth(width() - 20);
-        
-        viewport()->resize(width() - 10, viewport()->height());
-
-        updateScrolls();
-        event->accept();
-    }
-}
-
-void UBLibPathViewer::showEvent(QShowEvent *event)
-{
-    Q_UNUSED(event);
-    updateScrolls();
-}
-
-/**
- * \brief Handles the mouse move event
- * @param event as the mouse move event
- */
-void UBLibPathViewer::mouseMoveEvent(QMouseEvent *event)
-{
-    event->ignore();
-}
-
-void UBLibPathViewer::onMouseClicked(UBChainedLibElement *elem)
-{
-    emit mouseClick(elem);
-}
-
-int UBLibPathViewer::widgetAt(QPointF p)
-{
-    int position = -1;
-
-    for(int i = 0; i < mVItems.size(); i++)
-    {
-        QGraphicsWidget* pCrntWidget = mVItems.at(i);
-        if(NULL != pCrntWidget)
-        {
-            QRectF r = pCrntWidget->rect();
-            QPointF wPos = pCrntWidget->scenePos();
-            int xMin = wPos.x() + r.x();
-            int xMax = wPos.x() + r.x() + r.width();
-            int yMin = wPos.y() + r.y();
-            int yMax = wPos.y() + r.y() + r.height();
-
-            if(p.x() >= xMin &&
-               p.x() <= xMax &&
-               p.y() >= yMin &&
-               p.y() <= yMax)
-            {
-                return i;
-            }
-        }
-    }
-
-    return position;
-}
-
-void UBLibPathViewer::onElementsDropped(QList<QString> elements, UBLibElement *target)
-{
-    emit elementsDropped(elements, target);
-}
-
-void UBLibPathViewer::showBack()
-{
-    // Backup the current path so we can go back by clicking on the back button
-    mpElemsBackup = mpElems;
-
-    // Set the correct path to the backElem
-    UBChainedLibElement* pLastElem = mpElemsBackup->lastElement();
-
-    if(NULL != pLastElem)
-    {
-        mpBackElem->setPath(pLastElem->element()->path());
-        mpBackElem->setType(pLastElem->element()->type());
-        mpBackElem->setName(pLastElem->element()->name());
-    }
-
-    // Display the 'back' element
-    displayPath(new UBChainedLibElement(mpBackElem));
-}
-
-UBFolderPath::UBFolderPath():QGraphicsProxyWidget()
-{
-
-}
-
-UBFolderPath::~UBFolderPath()
-{
-
-}
-
-/**
- * \brief Handles the drag enter event
- * @param pEvent as the drag enter event
- */
-void UBFolderPath::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
-{
-    event->acceptProposedAction();
-}
-
-/**
- * \brief Handles the drop event
- * @param pEvent as the drop event
- */
-void UBFolderPath::dropEvent(QDropEvent *pEvent)
-{
-    processMimeData(pEvent->mimeData());
-    pEvent->acceptProposedAction();
-}
-
-/**
- * \brief Handles the drag move event
- * @param pEvent as the drag move event
- */
-void UBFolderPath::dragMoveEvent(QDragMoveEvent* pEvent)
-{
-    pEvent->acceptProposedAction();
-}
-
-/**
- * \brief Process the given MIME data
- * @param pData as the MIME data to process
- */
-void UBFolderPath::processMimeData(const QMimeData *pData)
-{
-    Q_UNUSED(pData);
-}
-
-/**
- * \brief Handles the mouse press event
- * @param event as the mouse press event
- */
-void UBFolderPath::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event);
-}
-
-/**
- * \brief Handles the mouse move event
- * @param event as the mouse move event
- */
-void UBFolderPath::mouseMoveEvent(QMouseEvent *event)
-{
-    Q_UNUSED(event);
-}
-
-/**
- * \brief Handles the mouse release event
- * @param event as the mouse release event
- */
-void UBFolderPath::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event);
-}
-
-
-UBPathScene::UBPathScene(QWidget* parent):QGraphicsScene(parent)
-{
-    connect(UBDownloadManager::downloadManager(), SIGNAL(allDownloadsFinished()), this, SLOT(onAllDownloadsFinished()));
-}
-
-UBPathScene::~UBPathScene()
-{
-
-}
-
-
-void UBPathScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    if(event->button() == Qt::LeftButton)
-    {
-        mDragStartPos = event->scenePos();
-        mClickTime = QTime::currentTime();
-    }
-}
-
-/**
- * \brief Handles the mouse release event
- * @param event as the mouse release event
- */
-void UBPathScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    int elapsedTimeSincePress = mClickTime.elapsed();
-
-    if(elapsedTimeSincePress < STARTDRAGTIME)
-    {
-        QGraphicsWidget* pGWidget = dynamic_cast<QGraphicsWidget*>(itemAt(event->pos()));
-        if(NULL != pGWidget)
-        {
-            // We have only one view at a time
-            UBLibPathViewer* pView = dynamic_cast<UBLibPathViewer*>(this->views().at(0));
-            if(NULL != pView)
-            {
-                int iClickedItem = pView->widgetAt(event->scenePos());
-				QGraphicsLayout* wgtLayout = pGWidget->layout();
-                if(iClickedItem != -1 && wgtLayout != NULL)
-                {
-					QGraphicsWidget* pFolderW = dynamic_cast<QGraphicsWidget*>(wgtLayout->itemAt(iClickedItem));
-                    if(NULL != pFolderW)
-                    {
-                        UBChainedLibElement* chElem = mMapWidgetToChainedElem[pFolderW];
-                        if(NULL != chElem)
-                        {
-                            emit mouseClick(chElem);
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-/**
- * \brief Handles the mouse move event
- * @param event as the mouse move event
- */
-void UBPathScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if(event->button() == Qt::LeftButton)
-    {
-        if((event->pos() - mDragStartPos).manhattanLength() < QApplication::startDragDistance())
-        {
-            // The user is not doing a drag
-            return;
-        }
-
-        // The user is performing a drag operation
-        QDrag* drag = new QDrag(event->widget());
-        QMimeData* mimeData = new QMimeData();
-        drag->setMimeData(mimeData);
-        drag->start();
-    }
-}
-
-
-void UBPathScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
-{
-    event->accept();
-}
-
-void UBPathScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
-{
-    event->accept();
-}
-
-void UBPathScene::dropEvent(QGraphicsSceneDragDropEvent *event)
-{
-    bool bAccept = false;
-    const QMimeData* pMimeData = event->mimeData();
-
-    if(NULL != event->source() && 0 == QString::compare(event->source()->metaObject()->className(), "UBLibraryWidget")){
-        UBLibElement* pTargetElement = elementFromPos(event->scenePos());
-        if(NULL != pTargetElement){
-            if(eUBLibElementType_Folder == pTargetElement->type()){
-                // The drag comes from this application, we have now to get the list of UBLibElements*
-                QList<QString> qlDroppedElems;
-
-                foreach(QUrl url, pMimeData->urls())
-                    qlDroppedElems << url.toString();
-
-                if(!qlDroppedElems.empty()){
-                    // Send a signal with the target dir and the list of ublibelement*
-                    emit elementsDropped(qlDroppedElems, pTargetElement);
-                }
-            }
-        }
-
-        bAccept = true;
-    }else if(NULL != pMimeData && pMimeData->hasUrls()){
-        QList<QUrl> urls = pMimeData->urls();
-        foreach(QUrl eachUrl, urls){
-            QString sUrl = eachUrl.toString();
-            if(!sUrl.startsWith("uniboardTool://") && !sUrl.startsWith("file://") && !sUrl.startsWith("/")){
-                // The dropped URL comes from the web
-                // Show the download palette if it is hidden
-                UBApplication::boardController->paletteManager()->startDownloads();
-
-                // Add the dropped url to the download list
-                sDownloadFileDesc desc;
-                desc.currentSize = 0;
-                desc.id = 0;
-                desc.isBackground = false;
-                desc.modal = false;
-                desc.name = QFileInfo(sUrl).fileName();
-                desc.totalSize = 0;
-                desc.url = sUrl;
-                UBDownloadManager::downloadManager()->addFileToDownload(desc);
-				bAccept = true;
-            }
-        }
-    }
-	if(!bAccept && NULL != pMimeData && pMimeData->hasText()){
-        //  The user can only drop an Url in this location so if the text is not an Url,
-        //  we discard it.
-        QString qsTxt = pMimeData->text().remove(QRegExp("[\\0]"));
-        if(qsTxt.startsWith("http")){
-            // Show the download palette if it is hidden
-            UBApplication::boardController->paletteManager()->startDownloads();
-
-            // Add the dropped url to the download list
-            sDownloadFileDesc desc;
-            desc.currentSize = 0;
-            desc.id = 0;
-            desc.isBackground = false;
-            desc.modal = false;
-            desc.name = QFileInfo(qsTxt).fileName();
-            desc.totalSize = 0;
-            desc.url = qsTxt;
-            UBDownloadManager::downloadManager()->addFileToDownload(desc);
-            bAccept = true;
-        }
-    }
-	if(!bAccept && NULL != pMimeData && pMimeData->hasHtml()){
-        QString html = pMimeData->html();
-        QString url = UBApplication::urlFromHtml(html);
-        if("" != url)
-        {
-            // Show the download palette if it is hidden
-            UBApplication::boardController->paletteManager()->startDownloads();
-
-            // Add the dropped url to the download list
-            sDownloadFileDesc desc;
-            desc.currentSize = 0;
-            desc.id = 0;
-            desc.isBackground = false;
-            desc.modal = false;
-            desc.name = QFileInfo(url).fileName();
-            desc.totalSize = 0;
-            desc.url = url;
-            UBDownloadManager::downloadManager()->addFileToDownload(desc);
-			bAccept = true;
-        }
-    }
-    if(bAccept){
-        event->accept();
-    }
-    else{
-        event->ignore();
-    }
-}
-
-/**
- * \brief Return the element related to the given position
- * @param p as the given position
- *
- */
-UBLibElement* UBPathScene::elementFromPos(QPointF p)
-{
-    UBLibElement* pElem = NULL;
-
-    QGraphicsWidget* pGWidget = dynamic_cast<QGraphicsWidget*>(itemAt(p));
-    if(NULL != pGWidget)
-    {
-        UBChainedLibElement* chElem = mMapWidgetToChainedElem[pGWidget];
-        if(NULL != chElem)
-        {
-            return chElem->element();
-        }
-    }
-
-    return pElem;
-}
-
-void UBPathScene::onAllDownloadsFinished()
-{
-    // Hide the download tab
-    UBApplication::boardController->paletteManager()->stopDownloads();
-}
diff --git a/Sankore-3.1/src/gui/UBLibPathViewer.h b/Sankore-3.1/src/gui/UBLibPathViewer.h
deleted file mode 100644
index faf1714..0000000
--- a/Sankore-3.1/src/gui/UBLibPathViewer.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBPATHVIEWER_H
-#define UBLIBPATHVIEWER_H
-
-#include <QGraphicsView>
-#include <QGraphicsScene>
-#include <QGraphicsWidget>
-#include <QGraphicsPixmapItem>
-#include <QGraphicsProxyWidget>
-#include <QVector>
-#include <QPixmap>
-#include <QResizeEvent>
-#include <QGraphicsLinearLayout>
-#include <QMouseEvent>
-#include <QTime>
-#include <QMap>
-#include <QDragEnterEvent>
-#include <QDropEvent>
-#include <QDragMoveEvent>
-#include <QMimeData>
-#include <QPaintEvent>
-#include <QShowEvent>
-
-#include "board/UBLibraryController.h"
-
-#define PATHITEMWIDTH   32
-#define STARTDRAGTIME   1000000
-
-class UBPathScene : public QGraphicsScene
-{
-    Q_OBJECT
-public:
-    UBPathScene(QWidget* parent=0);
-    ~UBPathScene();
-    QMap<QGraphicsWidget*, UBChainedLibElement*>* mapWidgetToChainedElem(){return &mMapWidgetToChainedElem;}
-
-signals:
-    void mouseClick(UBChainedLibElement* elem);
-    void elementsDropped(QList<QString> elements, UBLibElement* target);
-
-protected:
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
-    void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
-    void dropEvent(QGraphicsSceneDragDropEvent *event);
-
-private slots:
-    void onAllDownloadsFinished();
-
-private:
-    UBLibElement* elementFromPos(QPointF p);
-    /** The drag start position */
-    QPointF mDragStartPos;
-    /** A timer used to detect a click or a drag */
-    QTime mClickTime;
-    /** A map between a widget and a chained element */
-    QMap<QGraphicsWidget*, UBChainedLibElement*> mMapWidgetToChainedElem;
-
-};
-
-class UBLibPathViewer : public QGraphicsView
-{
-    Q_OBJECT
-public:
-    UBLibPathViewer(QWidget* parent=0, const char* name="UBLibPathViewer");
-    ~UBLibPathViewer();
-
-    void displayPath(UBChainedLibElement* elementsChain);
-    int widgetAt(QPointF p);
-    void updateScrolls();
-
-public slots:
-    void showBack();
-
-signals:
-    void mouseClick(UBChainedLibElement* elem);
-    void elementsDropped(QList<QString> elements, UBLibElement* target);
-
-protected:
-    void resizeEvent(QResizeEvent *event);
-    void mouseMoveEvent(QMouseEvent *event);
-    void showEvent(QShowEvent *event);
-
-private slots:
-    void onMouseClicked(UBChainedLibElement* elem);
-    void onElementsDropped(QList<QString> elements, UBLibElement* target);
-    void onSliderMoved(int value);
-
-private:
-    void refreshPath();
-    void addItem(UBChainedLibElement* elem);
-
-    /** The chained path elements */
-    UBChainedLibElement* mpElems;
-    /** The backup chained path elements */
-    UBChainedLibElement* mpElemsBackup;
-    /** The scene */
-    UBPathScene* mpScene;
-    //QGraphicsScene* mpScene;
-    /** The layout */
-    QGraphicsLinearLayout* mpLayout;
-    /** The container that will display the path properly */
-    QGraphicsWidget* mpContainer;
-    /** The list of path items (icons + arrows) */
-    QVector<QGraphicsWidget*> mVItems;
-    /** The total width of the element in the scene */
-    int mSceneWidth;
-    /** The back element */
-    UBLibElement* mpBackElem;
-};
-
-
-class UBFolderPath : public QGraphicsProxyWidget
-{
-public:
-    UBFolderPath();
-    ~UBFolderPath();
-
-protected:
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-    void mouseMoveEvent(QMouseEvent *event);
-    void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
-    void dropEvent(QDropEvent *pEvent);
-    void dragMoveEvent(QDragMoveEvent *pEvent);
-
-private:
-    void processMimeData(const QMimeData* pData);
-
-
-};
-
-#endif // UBLIBPATHVIEWER_H
diff --git a/Sankore-3.1/src/gui/UBLibWebView.cpp b/Sankore-3.1/src/gui/UBLibWebView.cpp
deleted file mode 100644
index a70cbcd..0000000
--- a/Sankore-3.1/src/gui/UBLibWebView.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include <QDomDocument>
-
-#include "core/UBApplication.h"
-
-#include "board/UBBoardController.h"
-
-#include "globals/UBGlobals.h"
-
-#include "UBLibWebView.h"
-
-#include "core/memcheck.h"
-
-UBLibWebView::UBLibWebView(QWidget* parent, const char* name):QWidget(parent)
-    , mpView(NULL)
-    , mpWebSettings(NULL)
-    , mpLayout(NULL)
-    , mpSankoreAPI(NULL)
-{
-    setObjectName(name);
-
-    SET_STYLE_SHEET();
-
-    mpLayout = new QVBoxLayout();
-    setLayout(mpLayout);
-
-    mpView = new QWebView(this);
-    mpView->setObjectName("SearchEngineView");
-    mpSankoreAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene());
-    mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
-
-    mpWebSettings = QWebSettings::globalSettings();
-    mpWebSettings->setAttribute(QWebSettings::JavaEnabled, true);
-    mpWebSettings->setAttribute(QWebSettings::PluginsEnabled, true);
-    mpWebSettings->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
-    mpWebSettings->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
-    mpWebSettings->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
-    mpWebSettings->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
-    mpWebSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
-
-    mpLayout->addWidget(mpView);
-
-    connect(mpView, SIGNAL(loadFinished(bool)), this, SLOT(onLoadFinished(bool)));
-}
-
-UBLibWebView::~UBLibWebView()
-{
-    if(NULL != mpSankoreAPI){
-        delete mpSankoreAPI;
-        mpSankoreAPI = NULL;
-    }
-    if(NULL != mpView){
-        delete mpView;
-        mpView = NULL;
-    }
-    if(NULL != mpLayout){
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-}
-
-void UBLibWebView::setElement(UBLibElement *elem)
-{
-    if(NULL != elem)
-    {
-        QString qsWidgetName;
-        QString path = elem->path().toLocalFile();
-
-        QString qsConfigPath = QString("%0/config.xml").arg(path);
-
-        if(QFile::exists(qsConfigPath))
-        {
-            QFile f(qsConfigPath);
-            if(f.open(QIODevice::ReadOnly))
-            {
-                QDomDocument domDoc;
-                domDoc.setContent(QString(f.readAll()));
-                QDomElement root = domDoc.documentElement();
-
-                QDomNode node = root.firstChild();
-                while(!node.isNull())
-                {
-                    if(node.toElement().tagName() == "content")
-                    {
-                        QDomAttr srcAttr = node.toElement().attributeNode("src");
-                        qsWidgetName = srcAttr.value();
-                        break;
-                    }
-                    node = node.nextSibling();
-                }
-                f.close();
-            }
-        }
-
-        mpView->load(QUrl::fromLocalFile(QString("%0/%1").arg(path).arg(qsWidgetName)));
-    }
-}
-
-void UBLibWebView::onLoadFinished(bool ok)
-{
-    if(ok && NULL != mpSankoreAPI){
-        mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
-    }
-}
diff --git a/Sankore-3.1/src/gui/UBLibWebView.h b/Sankore-3.1/src/gui/UBLibWebView.h
deleted file mode 100644
index 3665f37..0000000
--- a/Sankore-3.1/src/gui/UBLibWebView.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef UBLIBWEBVIEW_H
-#define UBLIBWEBVIEW_H
-
-#include <QWidget>
-#include <QWebView>
-#include <QWebSettings>
-#include <QVBoxLayout>
-
-#include "board/UBLibraryController.h"
-#include "api/UBWidgetUniboardAPI.h"
-
-class UBLibWebView : public QWidget
-{
-    Q_OBJECT
-
-public:
-    UBLibWebView(QWidget* parent = 0, const char* name = "UBLibWebView");
-    ~UBLibWebView();
-
-    void setElement(UBLibElement* elem);
-
-private slots:
-    void onLoadFinished(bool ok);
-
-private:
-    QWebView* mpView;
-    QWebSettings* mpWebSettings;
-    QVBoxLayout* mpLayout;
-    UBWidgetUniboardAPI* mpSankoreAPI;
-};
-
-#endif // UBLIBWEBVIEW_H
diff --git a/Sankore-3.1/src/gui/UBLibWidget.cpp b/Sankore-3.1/src/gui/UBLibWidget.cpp
deleted file mode 100644
index 5fbfad4..0000000
--- a/Sankore-3.1/src/gui/UBLibWidget.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * 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/>.
- */
-#include <QDebug>
-
-#include "UBLibWidget.h"
-
-#include "core/UBApplication.h"
-
-#include "globals/UBGlobals.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBLibWidget::UBLibWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
-  , mLayout(NULL)
-  , mStackedWidget(NULL)
-  , mNavigator(NULL)
-  , mProperties(NULL)
-  , mActionBar(NULL)
-  , mpWebView(NULL)
-  , mpPathViewer(NULL)
-{
-    setObjectName(name);
-    mName = "LibWidget";
-    mVisibleState = true;
-
-    SET_STYLE_SHEET();
-
-    mIconToLeft = QPixmap(":images/library_open.png");
-    mIconToRight = QPixmap(":images/library_close.png");
-    setAcceptDrops(true);
-
-    mLayout = new QVBoxLayout(this);
-    setLayout(mLayout);
-
-    // -------------
-    // Build the GUI
-    // -------------
-    // The 'global' widgets
-    mStackedWidget = new QStackedWidget(this);
-    mActionBar = new UBLibActionBar(this);
-    mpPathViewer = new UBLibPathViewer(this);
-    mpPathViewer->setMaximumHeight(62);
-
-    // The internal widgets
-    mNavigator = new UBLibNavigatorWidget(this);
-    mProperties = new UBLibItemProperties(this);
-    mpWebView = new UBLibWebView(this);
-
-    mLayout->addWidget(mpPathViewer, 0);
-    mLayout->addWidget(mStackedWidget, 1);
-    mLayout->addWidget(mActionBar, 0);
-
-    mStackedWidget->addWidget(mNavigator);
-    mStackedWidget->addWidget(mProperties);
-    mStackedWidget->addWidget(mpWebView);
-
-    mStackedWidget->setCurrentIndex(ID_NAVIGATOR);
-    miCrntStackWidget = ID_NAVIGATOR;
-
-    connect(mNavigator, SIGNAL(updateNavigBar(UBChainedLibElement*)), this, SLOT(onUpdateNavigBar(UBChainedLibElement*)));
-    connect(mNavigator, SIGNAL(propertiesRequested(UBLibElement*)), this, SLOT(showProperties(UBLibElement*)));
-    connect(mNavigator, SIGNAL(displaySearchEngine(UBLibElement*)), this, SLOT(showSearchEngine(UBLibElement*)));
-    connect(mProperties, SIGNAL(showFolderContent()), this, SLOT(showFolder()));
-    connect(this, SIGNAL(showLibElemProperties()), mpPathViewer, SLOT(showBack()));
-    connect(this, SIGNAL(showLibSearchEngine()), mpPathViewer, SLOT(showBack()));
-}
-
-/**
- * \brief Destructor
- */
-UBLibWidget::~UBLibWidget()
-{
-    if(NULL != mpPathViewer)
-    {
-        delete mpPathViewer;
-        mpPathViewer = NULL;
-    }
-    if(NULL != mNavigator)
-    {
-        delete mNavigator;
-        mNavigator = NULL;
-    }
-    if(NULL != mpWebView)
-    {
-        delete mpWebView;
-        mpWebView = NULL;
-    }
-    if(NULL != mProperties)
-    {
-        delete mProperties;
-        mProperties = NULL;
-    }
-    if(NULL != mStackedWidget)
-    {
-        delete mStackedWidget;
-        mStackedWidget = NULL;
-    }
-    if(NULL != mActionBar)
-    {
-        delete mActionBar;
-        mActionBar = NULL;
-    }
-    if(NULL != mLayout)
-    {
-        delete mLayout;
-        mLayout = NULL;
-    }
-}
-
-/**
- * \brief Handles the drag enter event
- * @param pEvent as the drag enter event
- */
-void UBLibWidget::dragEnterEvent(QDragEnterEvent *pEvent)
-{
-    setBackgroundRole(QPalette::Highlight);
-    pEvent->acceptProposedAction();
-}
-
-void UBLibWidget::dragLeaveEvent(QDragLeaveEvent *pEvent)
-{
-    pEvent->accept();
-}
-
-/**
- * \brief Handles the drop event
- * @param pEvent as the drop event
- */
-void UBLibWidget::dropEvent(QDropEvent *pEvent)
-{
-    processMimeData(pEvent->mimeData());
-    setBackgroundRole(QPalette::Dark);
-    mStackedWidget->setCurrentIndex(miCrntStackWidget);
-    pEvent->acceptProposedAction();
-}
-
-/**
- * \brief Handles the drag move event
- * @param pEvent as the drag move event
- */
-void UBLibWidget::dragMoveEvent(QDragMoveEvent *pEvent)
-{
-    pEvent->acceptProposedAction();
-}
-
-/**
- * \brief Process the dropped MIME data
- * @param pData as the mime dropped data
- */
-void UBLibWidget::processMimeData(const QMimeData *pData)
-{
-    // Display the different mime types contained in the mime data
-    QStringList qslFormats = pData->formats();
-    for(int i = 0; i < qslFormats.size(); i++)
-    {
-        qDebug() << "Dropped element format " << i << " = "<< qslFormats.at(i);
-    }
-}
-
-void UBLibWidget::showProperties(UBLibElement *elem)
-{
-    if(NULL != elem)
-    {
-        emit showLibElemProperties();
-        mActionBar->setButtons(eButtonSet_Properties);
-        mProperties->showElement(elem);
-        mStackedWidget->setCurrentIndex(ID_PROPERTIES);
-        miCrntStackWidget = ID_PROPERTIES;
-    }
-}
-
-void UBLibWidget::showSearchEngine(UBLibElement *elem)
-{
-    if(NULL != elem)
-    {
-        emit showLibSearchEngine();
-        mActionBar->hide();
-        mpWebView->setElement(elem);
-        mStackedWidget->setCurrentIndex(ID_WEBVIEW);
-        miCrntStackWidget = ID_WEBVIEW;
-    }
-}
-
-void UBLibWidget::showFolder()
-{
-    if(!mActionBar->isVisible()){
-        mActionBar->setVisible(true);
-    }
-    mActionBar->setButtons(mActionBar->previousButtonSet());
-    mStackedWidget->setCurrentIndex(ID_NAVIGATOR);
-    miCrntStackWidget = ID_NAVIGATOR;
-}
-
-int UBLibWidget::customMargin()
-{
-    return 5;
-}
-
-int UBLibWidget::border()
-{
-    return 15;
-}
-
-void UBLibWidget::onUpdateNavigBar(UBChainedLibElement *elem)
-{
-    mpPathViewer->displayPath(elem);
-    mpPathViewer->show();
-
-    if(ID_NAVIGATOR != miCrntStackWidget)
-    {
-        showFolder();
-    }
-}
diff --git a/Sankore-3.1/src/gui/UBLibWidget.h b/Sankore-3.1/src/gui/UBLibWidget.h
deleted file mode 100644
index 0ff7060..0000000
--- a/Sankore-3.1/src/gui/UBLibWidget.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBWIDGET_H
-#define UBLIBWIDGET_H
-
-#include <QWidget>
-#include <QVBoxLayout>
-#include <QStackedWidget>
-#include <QDragEnterEvent>
-#include <QDropEvent>
-#include <QDragMoveEvent>
-#include <QMimeData>
-#include <QMouseEvent>
-#include <QResizeEvent>
-#include <QLabel>
-
-#include "UBDockPaletteWidget.h"
-#include "UBLibNavigatorWidget.h"
-#include "UBLibItemProperties.h"
-#include "UBLibActionBar.h"
-#include "UBLibWebView.h"
-#include "UBLibPathViewer.h"
-
-#define ID_NAVIGATOR    0
-#define ID_PROPERTIES   1
-#define ID_WEBVIEW      2
-
-class UBLibWidget : public UBDockPaletteWidget
-{
-    Q_OBJECT
-public:
-    UBLibWidget(QWidget* parent=0, const char* name="UBLibWidget");
-    ~UBLibWidget();
-
-    UBLibActionBar* actionBar(){return mActionBar;}
-    UBLibNavigatorWidget* libNavigator() {return mNavigator;}
-    UBLibPathViewer* pathViewer() {return mpPathViewer;}
-
-    bool visibleInMode(eUBDockPaletteWidgetMode mode)
-    {
-        return mode == eUBDockPaletteWidget_BOARD
-            || mode == eUBDockPaletteWidget_DESKTOP;
-    }
-
-signals:
-    void resized();
-    void showLibElemProperties();
-    void showLibSearchEngine();
-
-protected:
-    void dragEnterEvent(QDragEnterEvent* pEvent);
-    void dropEvent(QDropEvent *pEvent);
-    void dragMoveEvent(QDragMoveEvent* pEvent);
-    void dragLeaveEvent(QDragLeaveEvent* pEvent);
-
-private slots:
-    void showProperties(UBLibElement* elem);
-    void showSearchEngine(UBLibElement* elem);
-    void showFolder();
-    void onUpdateNavigBar(UBChainedLibElement* elem);
-
-private:
-    void processMimeData(const QMimeData* pData);
-    int customMargin();
-    int border();
-
-    /** The layout */
-    QVBoxLayout* mLayout;
-    /** The stacked layout */
-    QStackedWidget* mStackedWidget;
-    /** The Navigator widget */
-    UBLibNavigatorWidget* mNavigator;
-    /** The Properties widget */
-    UBLibItemProperties* mProperties;
-    /** UBLibActionBar */
-    UBLibActionBar* mActionBar;
-    /** The current stack widget index*/
-    int miCrntStackWidget;
-    /** The webview used to display the search engines */
-    UBLibWebView* mpWebView;
-    /** The path navigation widget */
-    UBLibPathViewer* mpPathViewer;
-};
-
-#endif // UBLIBWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBLibraryWidget.cpp b/Sankore-3.1/src/gui/UBLibraryWidget.cpp
deleted file mode 100644
index 0965687..0000000
--- a/Sankore-3.1/src/gui/UBLibraryWidget.cpp
+++ /dev/null
@@ -1,730 +0,0 @@
-/*
- * 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/>.
- */
-#include <QList>
-#include <QFileInfo>
-#include <QDir>
-
-#include "UBLibraryWidget.h"
-#include "core/UBSettings.h"
-#include "core/UBSetting.h"
-#include "core/UBApplication.h"
-
-#include "board/UBBoardController.h"
-#include "board/UBLibraryController.h"
-#include "board/UBBoardPaletteManager.h"
-
-#include "core/UBDownloadManager.h"
-
-#include "frameworks/UBFileSystemUtils.h"
-#include "frameworks/UBPlatformUtils.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the widget object name
- */
-UBLibraryWidget::UBLibraryWidget(QWidget *parent, const char *name):UBThumbnailWidget(parent)
-    , chainedElements(NULL)
-    , mLibraryController(NULL)
-    , mpCrntDir(NULL)
-    , mpCrntElem(NULL)
-    , mpTmpElem(NULL)
-	, mLoadingLibraryItems(false)
-{
-    setObjectName(name);
-    setSpacing(5);
-    mLibraryController = new UBLibraryController(parentWidget());
-}
-
-/**
- * \brief Destructor
- */
-UBLibraryWidget::~UBLibraryWidget()
-{
-    if(NULL != mLibraryController){
-        delete mLibraryController;
-        mLibraryController = NULL;
-    }
-    if(NULL != mpCrntDir){
-        delete mpCrntDir;
-        mpCrntDir = NULL;
-    }
-    if(NULL != mpCrntElem){
-        delete mpCrntElem;
-        mpCrntElem = NULL;
-    }
-    if(NULL != mpTmpElem){
-         delete mpTmpElem;
-         mpTmpElem = NULL;
-    }
-}
-
-/**
- * \brief Initialize the widget content
- */
-void UBLibraryWidget::init()
-{
-    setAcceptDrops(true);
-    mpCrntElem = new UBLibElement();
-    mpCrntElem->setThumbnail(QImage(":images/libpalette/home.png"));
-    chainedElements = new UBChainedLibElement(mpCrntElem);
-    QList<UBLibElement*> qlElems = mLibraryController->getContent(mpCrntElem);
-    mCurrentElems = qlElems;
-
-    setCurrentElemsAndRefresh(chainedElements);
-
-    connect(this, SIGNAL(mouseClick(QGraphicsItem*,int)), this, SLOT(onItemClicked(QGraphicsItem*,int)));
-    connect(this, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged()));
-    connect(UBDownloadManager::downloadManager(), SIGNAL(addDownloadedFileToLibrary(bool,QUrl,QString,QByteArray)), this, SLOT(onAddDownloadedFileToLibrary(bool,QUrl,QString,QByteArray)));
-    connect(UBApplication::boardController, SIGNAL(displayMetadata(QMap<QString,QString>)), this, SLOT(onDisplayMetadata(QMap<QString,QString>)));
-    connect(mLibraryController,SIGNAL(updateItemsList()),this,SLOT(onRefreshCurrentFolder()));
-}
-
-/**
- * \brief Refresh the view
- */
-void UBLibraryWidget::refreshView()
-{
-    // Clear the view
-    mItems.clear();
-    mLabels.clear();
-    mItemsPaths.clear();
-    mGraphicItems.clear();
-
-    // Generate the graphics items
-    generateItems();
-
-    // Set the new items
-    setGraphicsItems(mGraphicItems, mItemsPaths, mLabels);
-
-    // Refresh the view
-    refreshScene();
-
-    emit navigBarUpdate(mpCrntElem);
-
-    bool bFavorite = false;
-    if(NULL != mpCrntDir && mLibraryController->favoritePath() == mpCrntDir->path().toLocalFile())
-    {
-        bFavorite = true;
-    }
-    emit favoritesEntered(bFavorite);
-}
-
-/**
- * \brief Generate the graphic items related to the current directory
- */
-void UBLibraryWidget::generateItems()
-{
-    for(int i = 0; i < mCurrentElems.size(); i++)
-    {
-        UBLibElement* pElem = mCurrentElems.at(i);
-        mLabels << pElem->name();
-        mItemsPaths << pElem->path();
-        QGraphicsPixmapItem *pixmapItem = new UBThumbnailPixmap(QPixmap::fromImage(*pElem->thumbnail()));
-        mGraphicItems << pixmapItem;
-    }
-}
-
-/**
- * \brief Handles the click on an item
- * @param item as the clicked item
- * @param index as the given index
- */
-void UBLibraryWidget::onItemClicked(QGraphicsItem *item, int index)
-{
-    Q_UNUSED(index);
-    if(NULL != item)
-    {
-        mLoadingLibraryItems = true;
-		int iItem = mGraphicItems.indexOf(item);
-        if(0 <= iItem)
-        {
-            UBLibElement* pElem = mCurrentElems.at(iItem);
-            if(NULL != pElem)
-            {
-                delete mpCrntElem;
-                mpCrntElem = new UBLibElement(pElem);
-                if(eUBLibElementType_Folder == pElem->type() || eUBLibElementType_VirtualFolder == pElem->type())
-                {
-                    // Add the clicked element to the end of the elements list
-                    // (at this level, the user can only go down in the path)
-                    UBChainedLibElement* pNextElem = new UBChainedLibElement(pElem);
-                    appendChainedElement(pNextElem, chainedElements);
-                    delete mpCrntDir;
-                    mpCrntDir = new UBLibElement(pElem);
-                    // Display the content of the folder
-                    QList<UBLibElement*> qlElems = mLibraryController->getContent(mpCrntDir);
-                    mCurrentElems = qlElems;
-                    refreshView();
-                }
-                else
-                {
-                    if ("application/search" == UBFileSystemUtils::mimeTypeFromFileName(pElem->path().toLocalFile()))
-                    {
-                        emit displaySearchEngine(pElem);
-                    }
-                    else
-                    {
-                        // Display the properties view
-                        emit propertiesRequested(pElem);
-                    }
-                }
-            }
-            emit itemClicked();
-        }
-		mLoadingLibraryItems = false;
-    }
-}
-
-/**
- * \brief Append the given element to the given chain
- * @param element as the element to append
- * @param toElem as the given chain
- */
-void UBLibraryWidget::appendChainedElement(UBChainedLibElement *element, UBChainedLibElement *toElem)
-{
-    if(NULL != toElem)
-    {
-        if(NULL != toElem->nextElement())
-        {
-            appendChainedElement(element, toElem->nextElement());
-        }
-        else
-        {
-            toElem->setNextElement(element);
-        }
-    }
-}
-
-/**
- * \brief Set the current element and refresh the scene
- * @param elem as the current element
- */
-void UBLibraryWidget::setCurrentElemsAndRefresh(UBChainedLibElement *elem)
-{
-    if(NULL != elem)
-    {
-        UBLibElement* pLibElem = elem->element();
-        if(NULL != pLibElem)
-        {
-            if(eUBLibElementType_Item != pLibElem->type())
-            {
-                QList<UBLibElement*> qlElements = mLibraryController->getContent(pLibElem);
-                mCurrentElems = qlElements;
-                delete mpCrntElem;
-                mpCrntElem = new UBLibElement(pLibElem);
-                refreshView();
-                delete mpCrntDir;
-                mpCrntDir = new UBLibElement(pLibElem);
-                bool bFavorite = false;
-                if(NULL != mpCrntDir && mLibraryController->favoritePath() == mpCrntDir->path().toLocalFile())
-                {
-                    bFavorite = true;
-                }
-                emit favoritesEntered(bFavorite);
-            }
-        }
-    }
-}
-
-/**
- * \brief Handles the selection changed event
- */
-void UBLibraryWidget::onSelectionChanged()
-{
-    // Get the selected items
-    QList<UBLibElement*> qlSelectedItems;
-    QList<QGraphicsItem*> qlGI = selectedItems();
-
-    bCanDrag = true;
-    foreach(QGraphicsItem* it, qlGI)
-    {
-        int itIndex = mGraphicItems.indexOf(it);
-        if(0 <= itIndex)
-        {
-            UBLibElement* pElem = mCurrentElems.at(itIndex);
-            if(NULL != pElem)
-            {
-                if(eUBLibElementType_Category != pElem->type() && eUBLibElementType_VirtualFolder != pElem->type()) {
-                    qlSelectedItems << pElem;
-                }
-
-                if(!pElem->isMoveable())
-                {
-                    bCanDrag = false;
-                }
-            }
-        }
-    }
-
-    // Check if we are in the trash folder
-    bool bInTrash = false;
-    if(NULL != mpCrntDir)
-    {
-        if("Trash" == mpCrntDir->name())
-        {
-            bInTrash = true;
-        }
-    }
-
-    // Send the signal with these items
-    emit itemsSelected(qlSelectedItems, bInTrash);
-}
-
-/**
- * \brief Handle the delete done event
- */
-void UBLibraryWidget::onRefreshCurrentFolder()
-{
-    // Refresh the current view
-    mCurrentElems = mLibraryController->getContent(mpCrntDir);
-    refreshView();
-}
-
-/**
- * \brief Handles the drag enter event
- * @param event as the drag enter event
- */
-void UBLibraryWidget::dragEnterEvent(QDragEnterEvent *event)
-{
-    event->acceptProposedAction();
-}
-
-/**
- * \brief Handles the drag move event
- * @param event as the drag move event
- */
-void UBLibraryWidget::dragMoveEvent(QDragMoveEvent *event)
-{
-    UBLibElement* pElem = elementAt(event->pos());
-    if(NULL != pElem)
-    {
-        // We can only drop an item into a folder
-        if(eUBLibElementType_Folder == pElem->type() ||
-           eUBLibElementType_VirtualFolder == pElem->type())
-        {
-            event->acceptProposedAction();
-        }
-    }
-}
-
-void UBLibraryWidget::onDropMe(const QMimeData *_data)
-{
-	Q_UNUSED(_data);
-}
-
-/**
- * \brief Handles the drop event
- * @param event as the drop event
- */
-void UBLibraryWidget::dropEvent(QDropEvent *event)
-{
-    const QMimeData* pMimeData = event->mimeData();
-    if(event->source() == this){
-        event->accept();
-
-        // Get the destination item
-        UBLibElement* pElem = elementAt(event->pos());
-        if(NULL != pElem){
-            if(eUBLibElementType_Folder == pElem->type()){
-                // The drag comes from this application, we have now to get the list of UBLibElements*
-                QList<QString> qlDroppedElems;
-
-                foreach(QUrl url, pMimeData->urls()){
-                    qlDroppedElems << url.toString();
-                }
-
-                if(!qlDroppedElems.empty())
-                    onElementsDropped(qlDroppedElems, pElem);
-            }
-        }
-    }
-    else{
-        bool bDropAccepted = false;
-
-        //  We must check the URLs first because an image dropped from the web can contains the image datas, as well as the URLs
-        //  and if we want to display the download widget in order to make the user wait for the end of the download, we need
-        //  to check the URLs first!
-        if (pMimeData->hasUrls()){
-            QList<QUrl> urlList = pMimeData->urls();
-            for (int i = 0; i < urlList.size() && i < 32; ++i){
-                QString filePath;
-                QString crntPath = urlList.at(i).toString();
-
-                if(crntPath.startsWith("file:") || crntPath.startsWith("/")){
-                    filePath = QUrl(crntPath).toLocalFile();
-                }else{
-                    filePath = crntPath;
-                }
-
-                mLibraryController->importItemOnLibrary(filePath);
-                bDropAccepted = true;
-            }
-        }
-        //  When an HTML is present, it means that we dropped something from the web. Normally, the HTML contains the element
-        //  of the webpage and has a 'src' attribute containing the URL of the web ressource. Here we are looking for this
-        //  'src' attribute, get its value and download the ressource from this URL.
-        if (!bDropAccepted && pMimeData->hasHtml()){
-            QString html = pMimeData->html();
-            QString url = UBApplication::urlFromHtml(html);
-            if("" != url){
-                mLibraryController->importItemOnLibrary(url);
-                bDropAccepted = true;
-            }
-        }
-        if (!bDropAccepted && pMimeData->hasText()){
-            // On linux external dragged element are considered as text;
-            QString filePath = QUrl(pMimeData->text()).toLocalFile();
-            if("" != filePath){
-                mLibraryController->importItemOnLibrary(filePath);
-                bDropAccepted = true;
-            }
-            else{
-#ifdef Q_WS_MACX
-                //  With Safari, in 95% of the drops, the mime datas are hidden in Apple Web Archive pasteboard type.
-                //  This is due to the way Safari is working so we have to dig into the pasteboard in order to retrieve
-                //  the data.
-                QString qsUrl = UBPlatformUtils::urlFromClipboard();
-                if("" != qsUrl){
-                    // We finally got the url of the dropped ressource! Let's import it!
-                    mLibraryController->importItemOnLibrary(qsUrl);
-                    bDropAccepted = true;
-                }
-#endif
-            }
-        }
-        if (!bDropAccepted && pMimeData->hasImage()){
-            QImage image = qvariant_cast<QImage>(pMimeData->imageData());
-            mLibraryController->importImageOnLibrary(image);
-            bDropAccepted = true;
-        }
-
-        if(bDropAccepted){
-            onRefreshCurrentFolder();
-#ifdef Q_WS_MACX
-            event->acceptProposedAction();
-#else
-            event->accept();
-#endif
-        }
-        else{
-            event->ignore();
-        }
-    }
-}
-
-/**
- * \brief Get the element at the given position
- * @param p as the given position
- * @return a pointer on the related element
- */
-UBLibElement* UBLibraryWidget::elementAt(QPoint p)
-{
-    QGraphicsItem* pItem = itemAt(p);
-    if(NULL != pItem)
-    {
-        int iItem = mGraphicItems.indexOf(pItem);
-        if(-1 != iItem)
-        {
-            return mCurrentElems.at(iItem);
-        }
-    }
-
-    // If no element is found, return NULL
-    return NULL;
-}
-
-
-/**
- * \brief Get the element from the given name
- * @param name as the given element name
- * @return the UBLibElement related to the given name
- */
-UBLibElement* UBLibraryWidget::elementFromFilePath(const QString &filePath)
-{
-    UBLibElement* pElem = NULL;
-
-    foreach(UBLibElement* elem, mCurrentElems)
-    {
-        if(elem->path().toLocalFile() == QUrl(filePath).toLocalFile())
-        {
-            return elem;
-        }
-
-    }
-
-    return pElem;
-}
-
-
-/**
- * \brief Update the thumbnails size
- * @param newSize as the thumbnail size
- */
-void UBLibraryWidget::updateThumbnailsSize(int newSize)
-{
-    setThumbnailWidth(newSize);
-    refreshView();
-}
-
-/**
- * \brief Handles the element dropped event
- * @param elements as the list of dropped elements
- * @param target as the drop target
- */
-void UBLibraryWidget::onElementsDropped(QList<QString> elements, UBLibElement *target)
-{
-    if(target != mpCrntDir)
-    {
-        QList<UBLibElement*> qlElements;
-
-        foreach(QString qsElem, elements)
-            qlElements << elementFromFilePath(qsElem);
-
-        mLibraryController->moveContent(qlElements, target);
-        mCurrentElems = mLibraryController->getContent(mpCrntDir);
-        refreshView();
-    }
-}
-
-/**
- * \brief Search the element related to the given text
- * @param elem as the searched element name
- */
-void UBLibraryWidget::onSearchElement(QString elem)
-{
-    // Store the original list of items
-    mOrigCurrentElems = mLibraryController->getContent(mpCrntDir);
-
-    // Build the filtered list
-    mCurrentElems.clear();
-    if(elem.isEmpty())
-    {
-        mCurrentElems = mOrigCurrentElems;
-    }
-    else
-    {
-        foreach(UBLibElement* ubLibElem, mOrigCurrentElems)
-        {
-            if(ubLibElem->name().toLower().contains(elem.toLower()))
-            {
-                mCurrentElems << ubLibElem;
-            }
-        }
-    }
-    refreshView();
-}
-
-/**
- * \brief Create a new folder
- */
-void UBLibraryWidget::onNewFolderToCreate()
-{
-    // Create here a dialog asking the name of the new folder
-    UBNewFolderDlg dlg;
-    if(QDialog::Accepted == dlg.exec())
-    {
-        mLibraryController->createNewFolder(dlg.folderName(), mpCrntElem);
-        onRefreshCurrentFolder();
-    }
-}
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBNewFolderDlg::UBNewFolderDlg(QWidget *parent, const char *name):QDialog(parent)
-    , mpLabel(NULL)
-    , mpLineEdit(NULL)
-    , mpButtons(NULL)
-    , mpAddButton(NULL)
-    , mpCancelButton(NULL)
-    , mpLayout(NULL)
-    , mpHLayout(NULL)
-{
-    setObjectName(name);
-    setWindowTitle(tr("Add new folder"));
-
-    mpLabel = new QLabel(tr("New Folder name:"),this);
-    mpLineEdit = new QLineEdit(this);
-    mpAddButton = new QPushButton(tr("Add"));
-    mpAddButton->setDefault(true);
-
-    mpCancelButton = new QPushButton(tr("Cancel"));
-    mpCancelButton->setAutoDefault(false);
-
-    mpButtons = new QDialogButtonBox(Qt::Horizontal, this);
-    mpLayout = new QVBoxLayout(this);
-    mpHLayout = new QHBoxLayout(this);
-    setLayout(mpLayout);
-    mpLayout->addLayout(mpHLayout, 0);
-    mpHLayout->addWidget(mpLabel, 0);
-    mpHLayout->addWidget(mpLineEdit, 1);
-
-    mpButtons->addButton(mpAddButton,QDialogButtonBox::ActionRole);
-    mpButtons->addButton(mpCancelButton,QDialogButtonBox::ActionRole);
-    mpLayout->addWidget(mpButtons);
-
-    connect(mpAddButton, SIGNAL(clicked()), this, SLOT(accept()));
-    connect(mpCancelButton, SIGNAL(clicked()), this, SLOT(reject()));
-    connect(mpLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(text_Changed(const QString &)));
-    connect(mpLineEdit, SIGNAL(textEdited(const QString &)), this, SLOT(text_Edited(const QString &)));
-
-    setMaximumHeight(100);
-    setMinimumHeight(100);
-}
-
-/**
- * \brief Destructor
- */
-UBNewFolderDlg::~UBNewFolderDlg()
-{
-    if(NULL != mpAddButton)
-    {
-        delete mpAddButton;
-        mpAddButton = NULL;
-    }
-
-    if(NULL != mpCancelButton)
-    {
-        delete mpCancelButton;
-        mpCancelButton = NULL;
-    }
-    if(NULL != mpButtons)
-    {
-        delete mpButtons;
-        mpButtons = NULL;
-    }
-    if(NULL != mpLineEdit)
-    {
-        delete mpLineEdit;
-        mpLineEdit = NULL;
-    }
-    if(NULL != mpLabel)
-    {
-        delete mpLabel;
-        mpLabel = NULL;
-    }
-    if(NULL != mpHLayout)
-    {
-        delete mpHLayout;
-        mpHLayout = NULL;
-    }
-    if(NULL != mpLayout)
-    {
-        delete mpLayout;
-        mpLayout = NULL;
-    }
-}
-
-/**
- * \brief Get the folder name
- * @return the entered folder name
- */
-QString UBNewFolderDlg::folderName()
-{
-    return mpLineEdit->text();
-}
-
-void UBNewFolderDlg::text_Changed(const QString &newText)
-{
-	Q_UNUSED(newText);
-}
-
-/*
-http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
-
-< (less than)
-> (greater than)
-: (colon)
-" (double quote)
-/ (forward slash)
-\ (backslash) // Note: The C++ compiler transforms backslashes in strings. To include a \ in a regexp, enter it twice, i.e. \\. To match the backslash character itself, enter it four times, i.e. \\\\.
-| (vertical bar or pipe)
-? (question mark)
-* (asterisk)
-
-*/
-
-void UBNewFolderDlg::text_Edited(const QString &newText)
-{
-
-    QString new_text = newText;
-
-#ifdef Q_WS_WIN // Defined on Windows.
-    QString illegalCharList("      < > : \" / \\ | ? * ");
-    QRegExp regExp("[<>:\"/\\\\|?*]");
-#endif
-
-#ifdef Q_WS_QWS // Defined on Qt for Embedded Linux.
-    QString illegalCharList("      < > : \" / \\ | ? * ");
-    QRegExp regExp("[<>:\"/\\\\|?*]");
-#endif
-
-#ifdef Q_WS_MAC // Defined on Mac OS X.
-    QString illegalCharList("      < > : \" / \\ | ? * ");
-    QRegExp regExp("[<>:\"/\\\\|?*]");
-#endif
-
-#ifdef Q_WS_X11 // Defined on X11.
-    QString illegalCharList("      < > : \" / \\ | ? * ");
-    QRegExp regExp("[<>:\"/\\\\|?*]");
-#endif
-
-    if(new_text.indexOf(regExp) > -1)
-    {
-        new_text.remove(regExp);
-        mpLineEdit->setText(new_text);
-        QToolTip::showText(mpLineEdit->mapToGlobal(QPoint()), "A file name can`t contain any of the following characters:\r\n"+illegalCharList);
-    }
-}
-
-void UBLibraryWidget::onAddDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentHeader, QByteArray pData)
-{
-    Q_UNUSED(pContentHeader);
-    if(pSuccess)
-    {
-//        QDir dir;
-//        dir.mkdir("tmp");
-//        QString qsFileName = QFileInfo(sourceUrl.toString()).fileName();
-//        QString qsFilePath = UBFileSystemUtils::normalizeFilePath(QString("tmp/%0").arg(qsFileName));
-//        QFile f(qsFilePath);
-//        if(f.open(QIODevice::WriteOnly))
-//        {
-//            f.write(pData);
-//            f.close();
-//        }
-        QString urlString = sourceUrl.toString();
-        mLibraryController->routeDataItem(urlString, pData);
-//        dir.remove(qsFileName);
-//        dir.rmdir("tmp");       // Due to Qt, the directoy will be removed only if it's empty :)
-    }
-}
-
-void UBLibraryWidget::onDisplayMetadata(QMap<QString, QString> metadatas)
-{
-    mpTmpElem = new UBLibElement();
-    mpTmpElem->setMetadata(metadatas);
-    mpTmpElem->setPath(QUrl(metadatas["Url"]));
-
-    // As the content comes from the web (and need a download), we will not display its thumbnail.
-    mpTmpElem->setThumbnail(QImage(":images/libpalette/notFound.png"));
-
-    // Display the properties view
-    emit propertiesRequested(mpTmpElem);
-}
diff --git a/Sankore-3.1/src/gui/UBLibraryWidget.h b/Sankore-3.1/src/gui/UBLibraryWidget.h
deleted file mode 100644
index 7f3bbeb..0000000
--- a/Sankore-3.1/src/gui/UBLibraryWidget.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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/>.
- */
-#ifndef UBLIBRARYWIDGET_H
-#define UBLIBRARYWIDGET_H
-
-#include <QList>
-#include <QVector>
-#include <QGraphicsItem>
-#include <QDragEnterEvent>
-#include <QDragMoveEvent>
-#include <QDropEvent>
-#include <QDialog>
-#include <QLabel>
-#include <QLineEdit>
-#include <QDialogButtonBox>
-#include <QHBoxLayout>
-#include <QVBoxLayout>
-
-#include "UBThumbnailWidget.h"
-#include "board/UBLibraryController.h"
-
-class UBLibraryController;
-class UBChainedLibElement;
-class UBLibElement;
-
-class UBLibraryWidget : public UBThumbnailWidget
-{
-    Q_OBJECT
-public:
-    UBLibraryWidget(QWidget* parent=0, const char* name="UBLibraryWidget");
-    ~UBLibraryWidget();
-
-    UBChainedLibElement* chainedElements;
-    void setCurrentElemsAndRefresh(UBChainedLibElement* elem);
-
-    void updateThumbnailsSize(int newSize);
-    void init();
-
-    UBLibraryController* libraryController() {return mLibraryController;}
-	bool isLoadingLibraryItems() const { return mLoadingLibraryItems; }
-
-public slots:
-    void onRefreshCurrentFolder();
-    void onElementsDropped(QList<QString> elements, UBLibElement* target);
-    void onSearchElement(QString elem);
-    void onNewFolderToCreate();
-    void onDropMe(const QMimeData* _data);
-    void onAddDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentHeader, QByteArray pData);
-
-signals:
-    void navigBarUpdate(UBLibElement* pElem);
-    void itemsSelected(QList<UBLibElement*> elemList, bool inTrash);
-    void propertiesRequested(UBLibElement* pElem);
-    void displaySearchEngine(UBLibElement* pElem);
-    void favoritesEntered(bool bFav);
-    void itemClicked();
-
-protected:
-    void dragEnterEvent(QDragEnterEvent *event);
-    void dragMoveEvent(QDragMoveEvent *event);
-    void dropEvent(QDropEvent *event);
-
-private slots:
-    void onItemClicked(QGraphicsItem* pItem, int index);
-    void onSelectionChanged();
-    void onDisplayMetadata(QMap<QString,QString> metadatas);
-
-
-private:
-
-    void refreshView();
-    void generateItems();
-    void appendChainedElement(UBChainedLibElement* element, UBChainedLibElement* toElem);
-
-    UBLibElement* elementAt(QPoint p);
-    UBLibElement* elementFromFilePath(const QString& filePath);
-    UBLibraryController* mLibraryController;
-
-    UBLibElement* mpCrntDir;
-    UBLibElement* mpCrntElem;
-    UBLibElement* mpTmpElem;
-    QList<UBLibElement*> mCurrentElems;
-    QList<UBLibElement*> mOrigCurrentElems;
-    QList<QGraphicsItem*> mItems;
-	bool mLoadingLibraryItems;
-};
-
-class UBNewFolderDlg : public QDialog
-{
-    Q_OBJECT
-
-public:
-    UBNewFolderDlg(QWidget* parent=0, const char* name="NewFolderDlg");
-    ~UBNewFolderDlg();
-
-    QString folderName();
-
-public slots:
-    void text_Changed(const QString &);
-    void text_Edited(const QString &);
-
-
-private:
-    QLabel* mpLabel;
-    QLineEdit* mpLineEdit;
-    QDialogButtonBox* mpButtons;
-    QPushButton* mpAddButton;
-    QPushButton* mpCancelButton;
-    QVBoxLayout* mpLayout;
-    QHBoxLayout* mpHLayout;
-};
-
-#endif // UBLIBRARYWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBMagnifer.cpp b/Sankore-3.1/src/gui/UBMagnifer.cpp
index e13ab4b..046ff53 100644
--- a/Sankore-3.1/src/gui/UBMagnifer.cpp
+++ b/Sankore-3.1/src/gui/UBMagnifer.cpp
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #include <QtGui>
 #include "UBMagnifer.h"
diff --git a/Sankore-3.1/src/gui/UBMagnifer.h b/Sankore-3.1/src/gui/UBMagnifer.h
index 7a118a9..9e92692 100644
--- a/Sankore-3.1/src/gui/UBMagnifer.h
+++ b/Sankore-3.1/src/gui/UBMagnifer.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBMAGNIFIER_H
 #define UBMAGNIFIER_H
diff --git a/Sankore-3.1/src/gui/UBMainWindow.cpp b/Sankore-3.1/src/gui/UBMainWindow.cpp
index e3b6923..8634a2d 100644
--- a/Sankore-3.1/src/gui/UBMainWindow.cpp
+++ b/Sankore-3.1/src/gui/UBMainWindow.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 
 #include "UBMainWindow.h"
@@ -151,18 +158,34 @@ void UBMainWindow::onExportDone()
     actionDocumentAdd->setEnabled(true);
 }
 
+#include "core/UBDisplayManager.h"
+
 bool UBMainWindow::yesNoQuestion(QString windowTitle, QString text)
 {
     QMessageBox messageBox;
     messageBox.setParent(this);
-    messageBox.setWindowFlags(Qt::Dialog);
     messageBox.setWindowTitle(windowTitle);
     messageBox.setText(text);
     QPushButton* yesButton = messageBox.addButton(tr("Yes"),QMessageBox::YesRole);
     messageBox.addButton(tr("No"),QMessageBox::NoRole);
     messageBox.setIcon(QMessageBox::Question);
-    messageBox.exec();
 
+#ifdef Q_WS_X11
+    // to avoid to be handled by x11. This allows us to keep to the back all the windows manager stuff like palette, toolbar ...
+    messageBox.setWindowFlags(Qt::Dialog | Qt::X11BypassWindowManagerHint);
+
+    //To calculate the correct size
+    messageBox.show();
+    QSize messageBoxSize=messageBox.size();
+
+    //to center on the screen because it's no more handled by X11
+    QRect controlScreenRect = UBApplication::applicationController->displayManager()->controlGeometry();
+    messageBox.move((controlScreenRect.width()/2) - (messageBoxSize.width()*0.5), (controlScreenRect.height()/2) - (messageBoxSize.height()*0.5));
+#else
+    messageBox.setWindowFlags(Qt::Dialog);
+#endif
+
+    messageBox.exec();
     return messageBox.clickedButton() == yesButton;
 }
 
diff --git a/Sankore-3.1/src/gui/UBMainWindow.h b/Sankore-3.1/src/gui/UBMainWindow.h
index a09d66a..e902169 100644
--- a/Sankore-3.1/src/gui/UBMainWindow.h
+++ b/Sankore-3.1/src/gui/UBMainWindow.h
@@ -1,16 +1,22 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/Sankore-3.1/src/gui/UBMessageWindow.cpp b/Sankore-3.1/src/gui/UBMessageWindow.cpp
index 2610621..475e6dc 100644
--- a/Sankore-3.1/src/gui/UBMessageWindow.cpp
+++ b/Sankore-3.1/src/gui/UBMessageWindow.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBMessageWindow.h"
 
 #include "UBSpinningWheel.h"
diff --git a/Sankore-3.1/src/gui/UBMessageWindow.h b/Sankore-3.1/src/gui/UBMessageWindow.h
index 92d50b5..257522e 100644
--- a/Sankore-3.1/src/gui/UBMessageWindow.h
+++ b/Sankore-3.1/src/gui/UBMessageWindow.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBMESSAGEWINDOW_H_
 #define UBMESSAGEWINDOW_H_
 
diff --git a/Sankore-3.1/src/gui/UBMessagesDialog.cpp b/Sankore-3.1/src/gui/UBMessagesDialog.cpp
new file mode 100644
index 0000000..7def0b3
--- /dev/null
+++ b/Sankore-3.1/src/gui/UBMessagesDialog.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "UBMessagesDialog.h"
+
+UBMessagesDialog::UBMessagesDialog(QString windowTitle, QWidget *parent)
+: QWidget(parent)
+{
+    resize(400, 0);
+
+    setWindowTitle(windowTitle);
+    setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
+
+}
+
+void UBMessagesDialog::setMessages(const QList<QString> messages)
+{
+    mMessages = messages;
+
+    if (mMessages.count())
+    {        
+        QVBoxLayout *messagesLayout = new QVBoxLayout(this);
+        foreach (QString message, mMessages)
+        {
+            QTextEdit *messageBox = new QTextEdit(this);
+            messageBox->setMinimumHeight(55);
+            messageBox->setReadOnly(true);
+            messageBox->setFocusPolicy(Qt::NoFocus);
+            messageBox->setText(message);
+            messagesLayout->addWidget(messageBox);
+        }
+        QPushButton *closeButton = new QPushButton(tr("Close"), this);
+        connect(closeButton, SIGNAL(clicked(bool)), this, SLOT(dispose()));
+
+        messagesLayout->addWidget(closeButton);
+
+        setLayout(messagesLayout);
+    }
+}
+
+void UBMessagesDialog::dispose()
+{
+    delete this;
+}
\ No newline at end of file
diff --git a/Sankore-3.1/src/gui/UBMessagesDialog.h b/Sankore-3.1/src/gui/UBMessagesDialog.h
new file mode 100644
index 0000000..d3b8738
--- /dev/null
+++ b/Sankore-3.1/src/gui/UBMessagesDialog.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef UB_MESSAGES_DIALOG_H_
+#define UB_MESSAGES_DIALOG_H_
+
+#include <QtGui>
+
+class UBMessagesDialog : public QWidget
+{
+    Q_OBJECT
+
+public:
+    UBMessagesDialog(QString windowTitle, QWidget *parent = NULL);
+    void setMessages(const QList<QString> messages);
+
+    private slots:
+        void dispose();
+
+private:
+    QList<QString> mMessages;
+    int mMessagesFontSize;
+};
+
+#endif /* UB_MESSAGES_DIALOG_H_ */
\ No newline at end of file
diff --git a/Sankore-3.1/src/gui/UBMousePressFilter.cpp b/Sankore-3.1/src/gui/UBMousePressFilter.cpp
index 49fadaa..db3a63d 100644
--- a/Sankore-3.1/src/gui/UBMousePressFilter.cpp
+++ b/Sankore-3.1/src/gui/UBMousePressFilter.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBMousePressFilter.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBMousePressFilter.h b/Sankore-3.1/src/gui/UBMousePressFilter.h
index 31289c8..211c163 100644
--- a/Sankore-3.1/src/gui/UBMousePressFilter.h
+++ b/Sankore-3.1/src/gui/UBMousePressFilter.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBMOUSEPRESSFILTER_H_
 #define UBMOUSEPRESSFILTER_H_
 
diff --git a/Sankore-3.1/src/gui/UBNavigatorPalette.cpp b/Sankore-3.1/src/gui/UBNavigatorPalette.cpp
index 98a9415..c679368 100644
--- a/Sankore-3.1/src/gui/UBNavigatorPalette.cpp
+++ b/Sankore-3.1/src/gui/UBNavigatorPalette.cpp
@@ -1,174 +1,152 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
- */
-#include "UBNavigatorPalette.h"
-#include "core/UBApplication.h"
-#include "board/UBBoardController.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name):
-    UBDockPalette(eUBDockPaletteType_NAVIGATOR, parent, name)
-	, mNavigator(NULL)
-	, mLayout(NULL)
-    , mHLayout(NULL)
-    , mPageNbr(NULL)
-    , mClock(NULL)
-{
-    setOrientation(eUBDockOrientation_Left);
-    setMaximumWidth(300);
-
-    resize(UBSettings::settings()->navigPaletteWidth->get().toInt(), height());
-    mLastWidth = 300;
-
-    // Build the gui
-    mLayout = new QVBoxLayout(this);
-    mLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin());
-    setLayout(mLayout);
-
-    mNavigator = new UBDocumentNavigator(this);
-    mNavigator->setStyleSheet(QString("background-color : transparent;"));
-    mLayout->addWidget(mNavigator, 1);
-
-    mHLayout = new QHBoxLayout();
-    mLayout->addLayout(mHLayout, 0);
-
-    mPageNbr = new QLabel(this);
-    mClock = new QLabel(this);
-    mHLayout->addWidget(mPageNbr);
-    mHLayout->addWidget(mClock);
-
-    // Configure the page number indicator
-    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
-    setPageNumber(0, 0);
-    mPageNbr->setAlignment(Qt::AlignHCenter);
-
-    // Configure the clock
-    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
-    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
-    mClock->setAlignment(Qt::AlignHCenter);
-
-    //strip seconds
-    mTimeFormat = mTimeFormat.remove(":ss");
-    mTimeFormat = mTimeFormat.remove(":s");
-    mTimerID = startTimer(1000);
-
-    connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage()));  
-}
-
-/**
- * \brief Destructor
- */
-UBNavigatorPalette::~UBNavigatorPalette()
-{
-    killTimer(mTimerID);
-
-    if(NULL != mClock)
-    {
-        delete mClock;
-        mClock = NULL;
-    }
-    if(NULL != mPageNbr)
-    {
-        delete mPageNbr;
-        mPageNbr = NULL;
-    }
-    if(NULL != mHLayout)
-    {
-        delete mHLayout;
-        mHLayout = NULL;
-    }
-    if(NULL != mLayout)
-    {
-	delete mLayout;
-	mLayout = NULL;
-    }
-    if(NULL != mNavigator)
-    {
-	delete mNavigator;
-	mNavigator = NULL;
-    }
-}
-
-/**
- * \brief Set the current document in the navigator
- * @param document as the given document
- */
-void UBNavigatorPalette::setDocument(UBDocumentProxy *document)
-{
-    if(mNavigator->currentDoc() != document)
-    {
-	mNavigator->setDocument(document);
-    }
-}
-
-/**
- * \brief Change the current page
- */
-void UBNavigatorPalette::changeCurrentPage()
-{
-    //	Get the index of the page to display
-    int iPage = mNavigator->selectedPageNumber();
-    if(NO_PAGESELECTED != iPage)
-    {
-	// Display the selected page
-    UBApplication::boardController->setActiveDocumentScene(mNavigator->currentDoc(), iPage);
-    }
-}
-
-/**
- * \brief Refresh the thumbnails widget
- */
-void UBNavigatorPalette::refresh()
-{
-    mNavigator->setDocument(UBApplication::boardController->activeDocument());
-}
-
-/**
- * \brief Handle the resize event
- * @param event as the resize event
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-void UBNavigatorPalette::resizeEvent(QResizeEvent *event)
-{
-    UBDockPalette::resizeEvent(event);
-    if(NULL != mNavigator)
-    {
-        mNavigator->setMinimumHeight(height() - 2*border());
-    }
-    UBSettings::settings()->navigPaletteWidth->set(width());
-}
-
-void UBNavigatorPalette::timerEvent(QTimerEvent *event)
-{
-    Q_UNUSED(event);
-    updateTime();
-}
-
-void UBNavigatorPalette::updateTime()
-{
-    if (mClock)
-    {
-        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
-    }
-}
-
-void UBNavigatorPalette::setPageNumber(int current, int total)
-{
-    mPageNbr->setText(QString("%1 / %2").arg(current).arg(total));
-}
+
+
+#include "UBNavigatorPalette.h"
+#include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+
+#include "core/memcheck.h"
+
+/**
+ * \brief Constructor
+ * @param parent as the parent widget
+ * @param name as the object name
+ */
+UBNavigatorPalette::UBNavigatorPalette(QWidget *parent, const char *name):
+	UBDockPalette(eUBDockPaletteType_LEFT, parent, name)
+	, mNavigator(NULL)
+	, mLayout(NULL)
+    , mHLayout(NULL)
+    , mPageNbr(NULL)
+    , mClock(NULL)
+{
+    // Build the gui
+    mLayout = new QVBoxLayout(this);
+    mLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin());
+    setLayout(mLayout);
+
+    mNavigator = new UBDocumentNavigator(this);
+    mNavigator->setStyleSheet(QString("background-color : transparent;"));
+    mLayout->addWidget(mNavigator, 1);
+
+    mHLayout = new QHBoxLayout();
+    mLayout->addLayout(mHLayout, 0);
+
+    mPageNbr = new QLabel(this);
+    mClock = new QLabel(this);
+    mHLayout->addWidget(mPageNbr);
+    mHLayout->addWidget(mClock);
+
+    // Configure the page number indicator
+    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
+    setPageNumber(0, 0);
+    mPageNbr->setAlignment(Qt::AlignHCenter);
+
+    // Configure the clock
+    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
+    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
+    mClock->setAlignment(Qt::AlignHCenter);
+
+    //strip seconds
+    mTimeFormat = mTimeFormat.remove(":ss");
+    mTimeFormat = mTimeFormat.remove(":s");
+    mTimerID = startTimer(1000);
+
+}  
+
+/**
+ * \brief Destructor
+ */
+UBNavigatorPalette::~UBNavigatorPalette()
+{
+    killTimer(mTimerID);
+
+    if(NULL != mClock)
+    {
+        delete mClock;
+        mClock = NULL;
+    }
+    if(NULL != mPageNbr)
+    {
+        delete mPageNbr;
+        mPageNbr = NULL;
+    }
+    if(NULL != mHLayout)
+    {
+        delete mHLayout;
+        mHLayout = NULL;
+    }
+    if(NULL != mLayout)
+    {
+	delete mLayout;
+	mLayout = NULL;
+    }
+    if(NULL != mNavigator)
+    {
+	delete mNavigator;
+	mNavigator = NULL;
+    }
+}
+
+/**
+ * \brief Set the current document in the navigator
+ * @param document as the given document
+ */
+
+/**
+ * \brief Refresh the thumbnails widget
+ */
+void UBNavigatorPalette::refresh()
+{
+}
+
+/**
+ * \brief Handle the resize event
+ * @param event as the resize event
+ */
+void UBNavigatorPalette::resizeEvent(QResizeEvent *event)
+{
+    UBDockPalette::resizeEvent(event);
+    if(NULL != mNavigator)
+    {
+        mNavigator->setMinimumHeight(height() - 2*border());
+    }
+}
+
+void UBNavigatorPalette::timerEvent(QTimerEvent *event)
+{
+    Q_UNUSED(event);
+    updateTime();
+}
+
+void UBNavigatorPalette::updateTime()
+{
+    if (mClock)
+    {
+        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
+    }
+}
+
+void UBNavigatorPalette::setPageNumber(int current, int total)
+{
+    mPageNbr->setText(QString("%1 / %2").arg(current).arg(total));
+}
diff --git a/Sankore-3.1/src/gui/UBNavigatorPalette.h b/Sankore-3.1/src/gui/UBNavigatorPalette.h
index 067bf45..8f52b3f 100644
--- a/Sankore-3.1/src/gui/UBNavigatorPalette.h
+++ b/Sankore-3.1/src/gui/UBNavigatorPalette.h
@@ -1,66 +1,72 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBNAVIGATORPALETTE_H
-#define UBNAVIGATORPALETTE_H
-
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QMouseEvent>
-#include <QResizeEvent>
-#include <QTimerEvent>
-#include <QLabel>
-#include <QString>
-
-#include "UBDockPalette.h"
-#include "UBDocumentNavigator.h"
-#include "document/UBDocumentProxy.h"
-
-
-class UBNavigatorPalette : public UBDockPalette
-{
-    Q_OBJECT
-public:
-    UBNavigatorPalette(QWidget* parent=0, const char* name="navigatorPalette");
-    ~UBNavigatorPalette();
-
-    void setDocument(UBDocumentProxy* document);
-    void refresh();
-
-public slots:
-    void setPageNumber(int current, int total);
-
-protected:
-    virtual void resizeEvent(QResizeEvent *event);
-    virtual void timerEvent(QTimerEvent *event);
-
-private:
-    void updateTime();
-
-    /** The thumbnails navigator widget */
-    UBDocumentNavigator* mNavigator;
-    /** The layout */
-    QVBoxLayout* mLayout;
-    QHBoxLayout* mHLayout;
-    QLabel* mPageNbr;
-    QLabel* mClock;
-    QString mTimeFormat;
-    int mTimerID;
-
-private slots:
-    void changeCurrentPage();
-};
-
-
-#endif // UBNAVIGATORPALETTE_H
+
+
+#ifndef UBNAVIGATORPALETTE_H
+#define UBNAVIGATORPALETTE_H
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QMouseEvent>
+#include <QResizeEvent>
+#include <QTimerEvent>
+#include <QLabel>
+#include <QString>
+
+#include "UBDockPalette.h"
+#include "UBDocumentNavigator.h"
+#include "document/UBDocumentProxy.h"
+
+
+class UBNavigatorPalette : public UBDockPalette
+{
+    Q_OBJECT
+public:
+    UBNavigatorPalette(QWidget* parent=0, const char* name="navigatorPalette");
+    ~UBNavigatorPalette();
+
+    void setDocument(UBDocumentProxy* document);
+    void refresh();
+
+public slots:
+    void setPageNumber(int current, int total);
+
+protected:
+    virtual void resizeEvent(QResizeEvent *event);
+    virtual void timerEvent(QTimerEvent *event);
+
+private:
+    void updateTime();
+
+    /** The thumbnails navigator widget */
+    UBDocumentNavigator* mNavigator;
+    /** The layout */
+    QVBoxLayout* mLayout;
+    QHBoxLayout* mHLayout;
+    QLabel* mPageNbr;
+    QLabel* mClock;
+    QString mTimeFormat;
+    int mTimerID;
+
+};
+
+
+#endif // UBNAVIGATORPALETTE_H
diff --git a/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp b/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp
index 1d13223..4b7f512 100644
--- a/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp
+++ b/Sankore-3.1/src/gui/UBPageNavigationWidget.cpp
@@ -1,207 +1,179 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
- */
-#include "UBPageNavigationWidget.h"
-#include "core/UBApplication.h"
-
-#include "board/UBBoardController.h"
-
-#include "globals/UBGlobals.h"
-
-#include "core/memcheck.h"
-
-/**
- * \brief Constructor
- * @param parent as the parent widget
- * @param name as the object name
- */
-UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
-  , mNavigator(NULL)
-  , mLayout(NULL)
-  , mHLayout(NULL)
-  , mPageNbr(NULL)
-  , mClock(NULL)
-{
-    setObjectName(name);
-    mName = "PageNavigator";
-    mVisibleState = true;
-
-    SET_STYLE_SHEET();
-
-    mIconToRight = QPixmap(":images/pages_open.png");
-    mIconToLeft = QPixmap(":images/pages_close.png");
-
-    // Build the gui
-    mLayout = new QVBoxLayout(this);
-    setLayout(mLayout);
-
-    mNavigator = new UBDocumentNavigator(this);
-    mLayout->addWidget(mNavigator, 1);
-
-    mHLayout = new QHBoxLayout();
-    mLayout->addLayout(mHLayout, 0);
-
-    mPageNbr = new QLabel(this);
-    mClock = new QLabel(this);
-    mHLayout->addWidget(mPageNbr);
-    mHLayout->addWidget(mClock);
-
-    // Configure the page number indicator
-    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
-    setPageNumber(0, 0);
-    mPageNbr->setAlignment(Qt::AlignHCenter);
-
-    // Configure the clock
-    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
-    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
-    mClock->setAlignment(Qt::AlignHCenter);
-
-    //strip seconds
-    mTimeFormat = mTimeFormat.remove(":ss");
-    mTimeFormat = mTimeFormat.remove(":s");
-    mTimerID = startTimer(1000);
-
-    connect(mNavigator, SIGNAL(changeCurrentPage()), this, SLOT(changeCurrentPage()));
-    connect(UBApplication::boardController, SIGNAL(setDocOnPageNavigator(UBDocumentProxy*)), this, SLOT(onSetDocOnPageNavigator(UBDocumentProxy*)));
-}
-
-/**
- * \brief Destructor
- */
-UBPageNavigationWidget::~UBPageNavigationWidget()
-{
-    killTimer(mTimerID);
-
-    if(NULL != mClock)
-    {
-        delete mClock;
-        mClock = NULL;
-    }
-    if(NULL != mPageNbr)
-    {
-        delete mPageNbr;
-        mPageNbr = NULL;
-    }
-    if(NULL != mHLayout)
-    {
-        delete mHLayout;
-        mHLayout = NULL;
-    }
-    if(NULL != mLayout)
-    {
-        delete mLayout;
-        mLayout = NULL;
-    }
-    if(NULL != mNavigator)
-    {
-        delete mNavigator;
-        mNavigator = NULL;
-    }
-}
-
-/**
- * \brief Set the current document in the navigator
- * @param document as the given document
- */
-void UBPageNavigationWidget::setDocument(UBDocumentProxy *document)
-{
-    if(mNavigator->currentDoc() != document)
-    {
-        mNavigator->setDocument(document);
-        UBApplication::boardController->notifyPageChanged();
-    }
-}
-
-/**
- * \brief Change the current page
- */
-void UBPageNavigationWidget::changeCurrentPage()
-{
-    //	Get the index of the page to display
-    int iPage = mNavigator->selectedPageNumber();
-    if(NO_PAGESELECTED != iPage)
-    {
-        // Display the selected page
-        UBApplication::boardController->setActiveDocumentScene(mNavigator->currentDoc(), iPage);
-
-        // emit here the signal to indicate that page change
-        UBApplication::boardController->notifyPageChanged();
-    }
-}
-
-/**
- * \brief Refresh the thumbnails widget
- */
-void UBPageNavigationWidget::refresh()
-{
-    mNavigator->setDocument(UBApplication::boardController->activeDocument());
-}
-
-/**
- * \brief Notify a timer event
- * @param event as the timer event
- */
-void UBPageNavigationWidget::timerEvent(QTimerEvent *event)
-{
-    Q_UNUSED(event);
-    updateTime();
-}
-
-/**
- * \brief Update the current time
- */
-void UBPageNavigationWidget::updateTime()
-{
-    if (mClock)
-    {
-        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
-    }
-}
-
-/**
- * \brief Set the page number
- * @param current as the current page
- * @param total as the total number of pages
- */
-void UBPageNavigationWidget::setPageNumber(int current, int total)
-{
-    mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBApplication::boardController->sceneIndexFromPage(total)));
-}
-
-/**
- * \brief Get the custom margin value
- * @return the custom margin value
- */
-int UBPageNavigationWidget::customMargin()
-{
-    return 5;
-}
-
-/**
- * \brief Get the border value
- * @return the border value
- */
-int UBPageNavigationWidget::border()
-{
-    return 15;
-}
-
-/**
- * \brief Set the current document
- * @param doc as the current document
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-void UBPageNavigationWidget::onSetDocOnPageNavigator(UBDocumentProxy *doc)
-{
-    setDocument(doc);
-}
+
+
+#include "UBPageNavigationWidget.h"
+#include "core/UBApplication.h"
+
+#include "board/UBBoardController.h"
+
+#include "document/UBDocumentContainer.h"
+
+#include "globals/UBGlobals.h"
+
+#include "core/memcheck.h"
+
+/**
+ * \brief Constructor
+ * @param parent as the parent widget
+ * @param name as the object name
+ */
+UBPageNavigationWidget::UBPageNavigationWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
+  , mNavigator(NULL)
+  , mLayout(NULL)
+  , mHLayout(NULL)
+  , mPageNbr(NULL)
+  , mClock(NULL)
+{
+    setObjectName(name);
+    mName = "PageNavigator";
+    mVisibleState = true;
+
+    SET_STYLE_SHEET();
+
+    mIconToRight = QPixmap(":images/pages_open.png");
+    mIconToLeft = QPixmap(":images/pages_close.png");
+
+    // Build the gui
+    mLayout = new QVBoxLayout(this);
+    setLayout(mLayout);
+
+    mNavigator = new UBDocumentNavigator(this);
+    mLayout->addWidget(mNavigator, 1);
+
+    mHLayout = new QHBoxLayout();
+    mLayout->addLayout(mHLayout, 0);
+
+    mPageNbr = new QLabel(this);
+    mClock = new QLabel(this);
+    mHLayout->addWidget(mPageNbr);
+    mHLayout->addWidget(mClock);
+
+    // Configure the page number indicator
+    mPageNbr->setStyleSheet(QString("QLabel { color: white; background-color: transparent; border: none; font-family: Arial; font-weight: bold; font-size: 20px }"));
+    setPageNumber(0, 0);
+    mPageNbr->setAlignment(Qt::AlignHCenter);
+
+    // Configure the clock
+    mClock->setStyleSheet(QString("QLabel {color: white; background-color: transparent; text-align: center; font-family: Arial; font-weight: bold; font-size: 20px}"));
+    mTimeFormat = QLocale::system().timeFormat(QLocale::ShortFormat);
+    mClock->setAlignment(Qt::AlignHCenter);
+
+    //strip seconds
+    mTimeFormat = mTimeFormat.remove(":ss");
+    mTimeFormat = mTimeFormat.remove(":s");
+    mTimerID = startTimer(1000);
+
+}
+
+/**
+ * \brief Destructor
+ */
+UBPageNavigationWidget::~UBPageNavigationWidget()
+{
+    killTimer(mTimerID);
+
+    if(NULL != mClock)
+    {
+        delete mClock;
+        mClock = NULL;
+    }
+    if(NULL != mPageNbr)
+    {
+        delete mPageNbr;
+        mPageNbr = NULL;
+    }
+    if(NULL != mHLayout)
+    {
+        delete mHLayout;
+        mHLayout = NULL;
+    }
+    if(NULL != mLayout)
+    {
+        delete mLayout;
+        mLayout = NULL;
+    }
+    if(NULL != mNavigator)
+    {
+        delete mNavigator;
+        mNavigator = NULL;
+    }
+}
+
+
+/**
+ * \brief Refresh the thumbnails widget
+ */
+void UBPageNavigationWidget::refresh()
+{
+    // TOLIK!!!
+    // mNavigator->setDocument(UBApplication::boardController->activeDocument());
+}
+
+/**
+ * \brief Notify a timer event
+ * @param event as the timer event
+ */
+void UBPageNavigationWidget::timerEvent(QTimerEvent *event)
+{
+    Q_UNUSED(event);
+    updateTime();
+}
+
+/**
+ * \brief Update the current time
+ */
+void UBPageNavigationWidget::updateTime()
+{
+    if (mClock)
+    {
+        mClock->setText(QLocale::system().toString (QTime::currentTime(), mTimeFormat));
+    }
+}
+
+/**
+ * \brief Set the page number
+ * @param current as the current page
+ * @param total as the total number of pages
+ */
+void UBPageNavigationWidget::setPageNumber(int current, int total)
+{
+    mPageNbr->setText(QString("%1 / %2").arg(current).arg(UBDocumentContainer::sceneIndexFromPage(total)));
+}
+
+/**
+ * \brief Get the custom margin value
+ * @return the custom margin value
+ */
+int UBPageNavigationWidget::customMargin()
+{
+    return 5;
+}
+
+/**
+ * \brief Get the border value
+ * @return the border value
+ */
+int UBPageNavigationWidget::border()
+{
+    return 15;
+}
+
diff --git a/Sankore-3.1/src/gui/UBPageNavigationWidget.h b/Sankore-3.1/src/gui/UBPageNavigationWidget.h
index cbf2204..d1f85db 100644
--- a/Sankore-3.1/src/gui/UBPageNavigationWidget.h
+++ b/Sankore-3.1/src/gui/UBPageNavigationWidget.h
@@ -1,75 +1,79 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef UBPAGENAVIGATIONWIDGET_H
-#define UBPAGENAVIGATIONWIDGET_H
-
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QMouseEvent>
-#include <QResizeEvent>
-#include <QTimerEvent>
-#include <QLabel>
-#include <QString>
-
-#include "UBDocumentNavigator.h"
-#include "UBDockPaletteWidget.h"
-#include "document/UBDocumentProxy.h"
-
-class UBPageNavigationWidget : public UBDockPaletteWidget
-{
-    Q_OBJECT
-public:
-    UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget");
-    ~UBPageNavigationWidget();
-    void setDocument(UBDocumentProxy* document);
-    void refresh();
-
-    bool visibleInMode(eUBDockPaletteWidgetMode mode)
-    {
-        return mode == eUBDockPaletteWidget_BOARD;
-    }
-
-signals:
-    void resizeRequest(QResizeEvent* event);
-
-public slots:
-    void setPageNumber(int current, int total);
-
-protected:
-    virtual void timerEvent(QTimerEvent *event);
-
-private slots:
-    void onSetDocOnPageNavigator(UBDocumentProxy* doc);
-
-private:
-    void updateTime();
-    int customMargin();
-    int border();
-
-    /** The thumbnails navigator widget */
-    UBDocumentNavigator* mNavigator;
-    /** The layout */
-    QVBoxLayout* mLayout;
-    QHBoxLayout* mHLayout;
-    QLabel* mPageNbr;
-    QLabel* mClock;
-    QString mTimeFormat;
-    int mTimerID;
-
-private slots:
-    void changeCurrentPage();
-};
-
-#endif // UBPAGENAVIGATIONWIDGET_H
+
+
+#ifndef UBPAGENAVIGATIONWIDGET_H
+#define UBPAGENAVIGATIONWIDGET_H
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QMouseEvent>
+#include <QResizeEvent>
+#include <QTimerEvent>
+#include <QLabel>
+#include <QString>
+
+#include "UBDocumentNavigator.h"
+#include "UBDockPaletteWidget.h"
+#include "document/UBDocumentProxy.h"
+
+class UBPageNavigationWidget : public UBDockPaletteWidget
+{
+    Q_OBJECT
+public:
+    UBPageNavigationWidget(QWidget* parent=0, const char* name="UBPageNavigationWidget");
+    ~UBPageNavigationWidget();
+    //void setDocument(UBDocumentProxy* document);
+    void refresh();
+
+    bool visibleInMode(eUBDockPaletteWidgetMode mode)
+    {
+        return mode == eUBDockPaletteWidget_BOARD;
+    }
+
+signals:
+    void resizeRequest(QResizeEvent* event);
+
+public slots:
+    void setPageNumber(int current, int total);
+
+protected:
+    virtual void timerEvent(QTimerEvent *event);
+
+
+private:
+    void updateTime();
+    int customMargin();
+    int border();
+
+    /** The thumbnails navigator widget */
+    UBDocumentNavigator* mNavigator;
+    /** The layout */
+    QVBoxLayout* mLayout;
+    QHBoxLayout* mHLayout;
+    QLabel* mPageNbr;
+    QLabel* mClock;
+    QString mTimeFormat;
+    int mTimerID;
+
+};
+
+#endif // UBPAGENAVIGATIONWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBPropertyPalette.cpp b/Sankore-3.1/src/gui/UBPropertyPalette.cpp
index 7022457..41f953b 100644
--- a/Sankore-3.1/src/gui/UBPropertyPalette.cpp
+++ b/Sankore-3.1/src/gui/UBPropertyPalette.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBPropertyPalette.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBPropertyPalette.h b/Sankore-3.1/src/gui/UBPropertyPalette.h
index 6312bcc..629a419 100644
--- a/Sankore-3.1/src/gui/UBPropertyPalette.h
+++ b/Sankore-3.1/src/gui/UBPropertyPalette.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBPROPERTYPALETTE_H
 #define UBPROPERTYPALETTE_H
 
diff --git a/Sankore-3.1/src/gui/UBResources.cpp b/Sankore-3.1/src/gui/UBResources.cpp
index 1cb6374..3a28cee 100644
--- a/Sankore-3.1/src/gui/UBResources.cpp
+++ b/Sankore-3.1/src/gui/UBResources.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBResources.h"
 
 #include <QtGui>
@@ -60,6 +67,7 @@ void UBResources::init()
     zoomInCursor    = QCursor(QPixmap(":/images/cursors/zoomIn.png"), 9, 9);
     zoomOutCursor   = QCursor(QPixmap(":/images/cursors/zoomOut.png"), 9, 9);
     arrowCursor     = QCursor(Qt::ArrowCursor);
+    playCursor      = QCursor(QPixmap(":/images/cursors/play.png"), 6, 1);
     textCursor      = QCursor(Qt::ArrowCursor);
     rotateCursor    = QCursor(QPixmap(":/images/cursors/rotate.png"), 16, 16);
     drawLineRulerCursor = QCursor(QPixmap(":/images/cursors/drawRulerLine.png"), 3, 12);
diff --git a/Sankore-3.1/src/gui/UBResources.h b/Sankore-3.1/src/gui/UBResources.h
index 34e692b..b9ecffd 100644
--- a/Sankore-3.1/src/gui/UBResources.h
+++ b/Sankore-3.1/src/gui/UBResources.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBRESOURCES_H_
 #define UBRESOURCES_H_
 
@@ -47,6 +54,7 @@ class UBResources : public QObject
          QCursor zoomInCursor;
          QCursor zoomOutCursor;
          QCursor arrowCursor;
+         QCursor playCursor;
          QCursor textCursor;
          QCursor rotateCursor;
 		 QCursor drawLineRulerCursor;
diff --git a/Sankore-3.1/src/gui/UBRightPalette.cpp b/Sankore-3.1/src/gui/UBRightPalette.cpp
index 26923ea..0ed0779 100644
--- a/Sankore-3.1/src/gui/UBRightPalette.cpp
+++ b/Sankore-3.1/src/gui/UBRightPalette.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "core/UBApplication.h"
 #include "board/UBBoardController.h"
 
@@ -27,11 +35,20 @@ UBRightPalette::UBRightPalette(QWidget *parent, const char *name):
 {
     setObjectName(name);
     setOrientation(eUBDockOrientation_Right);
-
-    mLastWidth = UBSettings::settings()->rightLibPaletteWidth->get().toInt();
     mCollapseWidth = 150;
-
-    resize(mLastWidth, parentWidget()->height());
+    bool isCollapsed = false;
+    if(mCurrentMode == eUBDockPaletteWidget_BOARD){
+    	mLastWidth = UBSettings::settings()->rightLibPaletteBoardModeWidth->get().toInt();
+    	isCollapsed = UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->get().toBool();
+    }
+    else{
+    	mLastWidth = UBSettings::settings()->rightLibPaletteDesktopModeWidth->get().toInt();
+    	isCollapsed = UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->get().toBool();
+    }
+    if(isCollapsed)
+    	resize(0,parentWidget()->height());
+    else
+    	resize(mLastWidth, parentWidget()->height());
 }
 
 /**
@@ -59,8 +76,18 @@ void UBRightPalette::mouseMoveEvent(QMouseEvent *event)
  */
 void UBRightPalette::resizeEvent(QResizeEvent *event)
 {
-    UBDockPalette::resizeEvent(event);
-    UBSettings::settings()->rightLibPaletteWidth->set(width());
+	int newWidth = width();
+	if(mCurrentMode == eUBDockPaletteWidget_BOARD){
+		if(newWidth > mCollapseWidth)
+			UBSettings::settings()->rightLibPaletteBoardModeWidth->set(newWidth);
+		UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->set(newWidth == 0);
+	}
+	else{
+		if(newWidth > mCollapseWidth)
+			UBSettings::settings()->rightLibPaletteDesktopModeWidth->set(newWidth);
+		UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->set(newWidth == 0);
+	}
+	UBDockPalette::resizeEvent(event);
     emit resized();
 }
 
@@ -69,7 +96,26 @@ void UBRightPalette::resizeEvent(QResizeEvent *event)
  */
 void UBRightPalette::updateMaxWidth()
 {
-    setMaximumWidth((int)((parentWidget()->width() * 2)/3));
+    setMaximumWidth((int)(parentWidget()->width() * 0.45));
     setMaximumHeight(parentWidget()->height());
     setMinimumHeight(parentWidget()->height());
 }
+
+bool UBRightPalette::switchMode(eUBDockPaletteWidgetMode mode)
+{
+	int newModeWidth;
+	if(mode == eUBDockPaletteWidget_BOARD){
+		mLastWidth = UBSettings::settings()->rightLibPaletteBoardModeWidth->get().toInt();
+		newModeWidth = mLastWidth;
+		if(UBSettings::settings()->rightLibPaletteBoardModeIsCollapsed->get().toBool())
+			newModeWidth = 0;
+	}
+	else{
+		mLastWidth = UBSettings::settings()->rightLibPaletteDesktopModeWidth->get().toInt();
+		newModeWidth = mLastWidth;
+		if(UBSettings::settings()->rightLibPaletteDesktopModeIsCollapsed->get().toBool())
+			newModeWidth = 0;
+	}
+	resize(newModeWidth,height());
+	return UBDockPalette::switchMode(mode);
+}
diff --git a/Sankore-3.1/src/gui/UBRightPalette.h b/Sankore-3.1/src/gui/UBRightPalette.h
index df0e82e..6dae301 100644
--- a/Sankore-3.1/src/gui/UBRightPalette.h
+++ b/Sankore-3.1/src/gui/UBRightPalette.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBRIGHTPALETTE_H
 #define UBRIGHTPALETTE_H
 
@@ -23,6 +31,7 @@ class UBRightPalette : public UBDockPalette
 public:
     UBRightPalette(QWidget* parent=0, const char* name="UBRightPalette");
     ~UBRightPalette();
+    bool switchMode(eUBDockPaletteWidgetMode mode);
 
 signals:
     void resized();
@@ -31,6 +40,7 @@ protected:
     void updateMaxWidth();
     void mouseMoveEvent(QMouseEvent *event);
     void resizeEvent(QResizeEvent *event);
+
 };
 
 #endif // UBRIGHTPALETTE_H
diff --git a/Sankore-3.1/src/gui/UBRubberBand.cpp b/Sankore-3.1/src/gui/UBRubberBand.cpp
index 04fcd26..8d02686 100644
--- a/Sankore-3.1/src/gui/UBRubberBand.cpp
+++ b/Sankore-3.1/src/gui/UBRubberBand.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBRubberBand.h"
 
 #include <QtGui>
@@ -23,10 +30,18 @@
 #include <QtGui/QMacStyle>
 #endif
 
+#include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+#include "board/UBBoardView.h"
+
 #include "core/memcheck.h"
 
 UBRubberBand::UBRubberBand(Shape s, QWidget * p)
     : QRubberBand(s, p)
+    , mResizingMode(None)
+    , mResizingBorderHeight(20)
+    , mMouseIsPressed(false)
+    , mLastPressedPoint(QPoint())
 {
     customStyle = NULL;
 
@@ -35,12 +50,14 @@ UBRubberBand::UBRubberBand(Shape s, QWidget * p)
 #elif defined(Q_WS_MAC)
     customStyle = new QMacStyle();
 #elif defined(Q_WS_X11)
-//    customStyle = QStyleFactory::create("oxygen");
+    customStyle = QStyleFactory::create("oxygen");
 #endif
 
     if (customStyle)
         QRubberBand::setStyle(customStyle);
 
+    setAttribute(Qt::WA_TransparentForMouseEvents, false);
+    setMouseTracking(true);
 }
 
 UBRubberBand::~UBRubberBand()
@@ -48,3 +65,192 @@ UBRubberBand::~UBRubberBand()
     if (customStyle)
         delete customStyle;
 }
+
+UBRubberBand::enm_resizingMode UBRubberBand::determineResizingMode(QPoint pos)
+{
+    if (mMouseIsPressed)
+        return mResizingMode;
+    
+    QRect resizerTop    (mResizingBorderHeight               , 0                             , rect().width()-2*mResizingBorderHeight, mResizingBorderHeight                    );
+    QRect resizerBottom (mResizingBorderHeight               , rect().height() - mResizingBorderHeight, rect().width()-2*mResizingBorderHeight, mResizingBorderHeight                    );
+    QRect resizerLeft   (0                          , mResizingBorderHeight                  , mResizingBorderHeight                 , rect().height() - 2*mResizingBorderHeight);
+    QRect resizerRight  (rect().width()-mResizingBorderHeight, mResizingBorderHeight                  , mResizingBorderHeight                 , rect().height() - 2*mResizingBorderHeight);
+
+    QRect resizerTopLeft    (0                          , 0                             , mResizingBorderHeight, mResizingBorderHeight);
+    QRect resizerTopRight   (rect().width()-mResizingBorderHeight, 0                             , mResizingBorderHeight, mResizingBorderHeight);
+    QRect resizerBottomLeft (0                          , rect().height() - mResizingBorderHeight, mResizingBorderHeight, mResizingBorderHeight);
+    QRect resizerBottomRight(rect().width()-mResizingBorderHeight, rect().height() - mResizingBorderHeight, mResizingBorderHeight, mResizingBorderHeight);
+
+    enm_resizingMode resizingMode;
+    
+    QTransform cursorTransrofm;
+
+    if (resizerTop.contains(pos))
+    {
+        resizingMode = Top;
+        cursorTransrofm.rotate(90);
+    }
+    else
+    if (resizerBottom.contains(pos))
+    {
+        resizingMode = Bottom;
+        cursorTransrofm.rotate(90);
+    }
+    else
+    if (resizerLeft.contains(pos))
+    {
+        resizingMode = Left;
+    }
+    else
+    if (resizerRight.contains(pos))
+    {
+        resizingMode = Right;
+    }
+    else
+    if (resizerTopLeft.contains(pos))
+    {
+        resizingMode = TopLeft;
+        cursorTransrofm.rotate(45);
+    }
+    else
+    if (resizerTopRight.contains(pos))
+    {
+        resizingMode = TopRight;
+        cursorTransrofm.rotate(-45);
+    }
+    else
+    if (resizerBottomLeft.contains(pos))
+    {
+        resizingMode = BottomLeft;
+        cursorTransrofm.rotate(-45);
+    }
+    else
+    if (resizerBottomRight.contains(pos))
+    {
+        resizingMode = BottomRight;
+        cursorTransrofm.rotate(45);
+    }
+    else
+        resizingMode = None;
+    
+    if (None != resizingMode)
+    {
+        QPixmap pix(":/images/cursors/resize.png");
+        QCursor resizeCursor  = QCursor(pix.transformed(cursorTransrofm, Qt::SmoothTransformation), pix.width() / 2,  pix.height() / 2);
+        setCursor(resizeCursor);
+    }
+    else
+        unsetCursor();
+
+    return resizingMode;
+}
+
+void UBRubberBand::mousePressEvent(QMouseEvent *event)
+{
+    mResizingMode = determineResizingMode(event->pos());
+    mMouseIsPressed = true;
+
+    mLastPressedPoint = event->pos();
+    mLastMousePos = event->pos();
+
+    if (None == mResizingMode)
+    {
+        UBApplication::boardController->controlView()->rubberItems();
+        setCursor(QCursor(Qt::SizeAllCursor));
+    }
+}
+
+void UBRubberBand::mouseMoveEvent(QMouseEvent *event)
+{
+    determineResizingMode(event->pos());
+
+    if (mMouseIsPressed)
+    {
+        UBBoardView *view = UBApplication::boardController->controlView();
+        QRect currentGeometry = geometry();
+
+        QPoint pressPoint(event->pos());
+        QPoint pressPointGlobal(view->mapToGlobal(pressPoint));
+        QPoint prevPressPointGlobal(view->mapToGlobal(mLastPressedPoint));
+        QPoint movePointGlogal = (view->mapToGlobal(mLastMousePos));
+
+        QPoint topLeftResizeVector(pressPointGlobal - prevPressPointGlobal);
+        QPoint rightBottomResizeVector(pressPointGlobal - movePointGlogal);
+
+        bool bGeometryChange = true;
+
+        switch(mResizingMode)
+        {
+        case None:
+            {
+                QPointF itemsMoveVector(view->mapToScene(pressPointGlobal) - view->mapToScene(prevPressPointGlobal));
+
+                move(pos()+pressPointGlobal - prevPressPointGlobal);
+                view->moveRubberedItems(itemsMoveVector);
+
+                bGeometryChange = false;
+                break;
+            }
+
+        case Top:
+            {
+                currentGeometry.setY(currentGeometry.y()+topLeftResizeVector.y());
+            }break;
+
+        case Bottom:
+            {
+                currentGeometry.setHeight(currentGeometry.height()+rightBottomResizeVector.y());
+            }break;
+
+        case Left:
+            {
+                currentGeometry.setX(currentGeometry.x()+topLeftResizeVector.x());
+            }break;
+        case Right:
+            {
+                currentGeometry.setWidth(currentGeometry.width()+rightBottomResizeVector.x());
+            }break;
+
+        case TopLeft:
+            {
+                currentGeometry.setX(currentGeometry.x()+topLeftResizeVector.x());  
+                currentGeometry.setY(currentGeometry.y()+topLeftResizeVector.y());
+            }break;
+
+        case TopRight:
+            {
+                currentGeometry.setY(currentGeometry.y()+topLeftResizeVector.y());  
+                currentGeometry.setWidth(currentGeometry.width()+rightBottomResizeVector.x());                
+            }
+            break;
+
+        case BottomLeft:
+            {
+                currentGeometry.setX(currentGeometry.x()+topLeftResizeVector.x());
+                currentGeometry.setHeight(currentGeometry.height()+rightBottomResizeVector.y());  
+            }break;
+
+        case BottomRight:
+            {
+                currentGeometry.setWidth(currentGeometry.width()+rightBottomResizeVector.x());
+                currentGeometry.setHeight(currentGeometry.height()+rightBottomResizeVector.y());        
+            }break;
+        
+        }
+        if(bGeometryChange)
+        {   
+            setGeometry(currentGeometry);
+        }
+
+        mLastMousePos = event->pos();
+    }
+
+    QRubberBand::mouseMoveEvent(event);
+} 
+
+void UBRubberBand::mouseReleaseEvent(QMouseEvent *event)
+{
+    Q_UNUSED(event);
+    mMouseIsPressed = false;
+    unsetCursor();
+}
diff --git a/Sankore-3.1/src/gui/UBRubberBand.h b/Sankore-3.1/src/gui/UBRubberBand.h
index e95e10b..0a14e11 100644
--- a/Sankore-3.1/src/gui/UBRubberBand.h
+++ b/Sankore-3.1/src/gui/UBRubberBand.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBRUBBERBAND_H_
 #define UBRUBBERBAND_H_
 
@@ -27,7 +34,31 @@ class UBRubberBand : public QRubberBand
         virtual ~UBRubberBand();
 
     private:
+        enum enm_resizingMode
+        {
+            None,
+            Top,
+            TopLeft,
+            TopRight,
+            Bottom,
+            BottomLeft,
+            BottomRight,
+            Left,
+            Right
+        };
+
+        enm_resizingMode determineResizingMode(QPoint pos);
+        virtual void mousePressEvent(QMouseEvent *event);
+        virtual void mouseMoveEvent(QMouseEvent *event);
+        virtual void mouseReleaseEvent(QMouseEvent *event);
+
+    private:
         QStyle* customStyle;
+        enm_resizingMode mResizingMode;
+        int mResizingBorderHeight;
+        bool mMouseIsPressed;
+        QPoint mLastPressedPoint;
+        QPoint mLastMousePos;
 };
 
 #endif /* UBRUBBERBAND_H_ */
diff --git a/Sankore-3.1/src/gui/UBScreenMirror.cpp b/Sankore-3.1/src/gui/UBScreenMirror.cpp
index a21899d..60db723 100644
--- a/Sankore-3.1/src/gui/UBScreenMirror.cpp
+++ b/Sankore-3.1/src/gui/UBScreenMirror.cpp
@@ -1,26 +1,39 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBScreenMirror.h"
 
 #include "core/UBSettings.h"
 #include "core/UBSetting.h"
 #include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+
+#if defined(Q_WS_MAC)
+#include <ApplicationServices/ApplicationServices.h>
+#endif
 
 #include "core/memcheck.h"
 
+
 UBScreenMirror::UBScreenMirror(QWidget* parent)
     : QWidget(parent)
     , mScreenIndex(0)
@@ -64,7 +77,6 @@ void UBScreenMirror::timerEvent(QTimerEvent *event)
     update();
 }
 
-
 void UBScreenMirror::grabPixmap()
 {
     if (mSourceWidget)
@@ -74,10 +86,15 @@ void UBScreenMirror::grabPixmap()
 
         mRect.setTopLeft(topLeft);
         mRect.setBottomRight(bottomRight);
+        mLastPixmap = QPixmap::grabWidget(mSourceWidget);
+    }
+    else{
+        // WHY HERE?
+        // this is the case we are showing the desktop but the is no widget and we use the last widget rectagle to know
+        // what we have to grab. Not very good way of doing
+        WId windowID = qApp->desktop()->screen(mScreenIndex)->winId();
+        mLastPixmap = QPixmap::grabWindow(windowID, mRect.x(), mRect.y(), mRect.width(), mRect.height());
     }
-
-    mLastPixmap = QPixmap::grabWindow(qApp->desktop()->screen(mScreenIndex)->winId(),
-        mRect.x(), mRect.y(), mRect.width(), mRect.height());
 
     mLastPixmap = mLastPixmap.scaled(width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
 }
@@ -97,6 +114,8 @@ void UBScreenMirror::setSourceWidget(QWidget *sourceWidget)
 
 void UBScreenMirror::start()
 {
+    qDebug() << "mirroring START";
+    UBApplication::boardController->freezeW3CWidgets(true);
     if (mTimerID == 0)
     {
         int ms = 125;
@@ -113,13 +132,15 @@ void UBScreenMirror::start()
     }
     else
     {
-        qDebug() << "UBScreenMirror::start() : Timer alrady running ...";
+        qDebug() << "UBScreenMirror::start() : Timer already running ...";
     }
 }
 
 
 void UBScreenMirror::stop()
 {
+    qDebug() << "mirroring STOP";
+    UBApplication::boardController->freezeW3CWidgets(false);
     if (mTimerID != 0)
     {
         killTimer(mTimerID);
diff --git a/Sankore-3.1/src/gui/UBScreenMirror.h b/Sankore-3.1/src/gui/UBScreenMirror.h
index 766d3f8..68d2464 100644
--- a/Sankore-3.1/src/gui/UBScreenMirror.h
+++ b/Sankore-3.1/src/gui/UBScreenMirror.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSCREENMIRROR_H_
 #define UBSCREENMIRROR_H_
 
diff --git a/Sankore-3.1/src/gui/UBSpinningWheel.cpp b/Sankore-3.1/src/gui/UBSpinningWheel.cpp
index 1beddf7..524bab3 100644
--- a/Sankore-3.1/src/gui/UBSpinningWheel.cpp
+++ b/Sankore-3.1/src/gui/UBSpinningWheel.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBSpinningWheel.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBSpinningWheel.h b/Sankore-3.1/src/gui/UBSpinningWheel.h
index f59f17d..fabbced 100644
--- a/Sankore-3.1/src/gui/UBSpinningWheel.h
+++ b/Sankore-3.1/src/gui/UBSpinningWheel.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSPINNINGWHEEL_H_
 #define UBSPINNINGWHEEL_H_
 
diff --git a/Sankore-3.1/src/gui/UBStylusPalette.cpp b/Sankore-3.1/src/gui/UBStylusPalette.cpp
index 93073cc..f171daf 100644
--- a/Sankore-3.1/src/gui/UBStylusPalette.cpp
+++ b/Sankore-3.1/src/gui/UBStylusPalette.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBStylusPalette.h"
 
 #include <QtGui>
@@ -39,6 +46,7 @@ UBStylusPalette::UBStylusPalette(QWidget *parent, Qt::Orientation orient)
     actions << UBApplication::mainWindow->actionEraser;
     actions << UBApplication::mainWindow->actionMarker;
     actions << UBApplication::mainWindow->actionSelector;
+    actions << UBApplication::mainWindow->actionPlay;
 
     actions << UBApplication::mainWindow->actionHand;
     actions << UBApplication::mainWindow->actionZoomIn;
diff --git a/Sankore-3.1/src/gui/UBStylusPalette.h b/Sankore-3.1/src/gui/UBStylusPalette.h
index 7d601f6..70a803c 100644
--- a/Sankore-3.1/src/gui/UBStylusPalette.h
+++ b/Sankore-3.1/src/gui/UBStylusPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSTYLUSPALLETTE_H_
 #define UBSTYLUSPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp b/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp
index 9121ce0..8cc05fa 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QDebug>
 #include <QLabel>
 #include <QVBoxLayout>
@@ -20,6 +27,7 @@
 #include <QTreeWidget>
 #include <QPushButton>
 #include <QDomDocument>
+#include <QScrollArea>
 
 #include "UBTeacherGuideWidget.h"
 
@@ -37,6 +45,7 @@
 
 #include "gui/UBStylusPalette.h"
 #include "gui/UBActionPalette.h"
+#include "gui/UBMainWindow.h"
 
 #include "web/UBWebController.h"
 
@@ -49,15 +58,12 @@
 
 #define UBTG_SEPARATOR_FIXED_HEIGHT 3
 
-typedef enum
-{
+typedef enum {
     eUBTGAddSubItemWidgetType_None,
-    eUBTGAddSubItemWidgetType_Action ,
+    eUBTGAddSubItemWidgetType_Action,
     eUBTGAddSubItemWidgetType_Media,
     eUBTGAddSubItemWidgetType_Url
-}eUBTGAddSubItemWidgetType;
-
-
+} eUBTGAddSubItemWidgetType;
 
 /***************************************************************************
  *               class    UBTeacherGuideEditionWidget                      *
@@ -86,18 +92,18 @@ UBTeacherGuideEditionWidget::UBTeacherGuideEditionWidget(QWidget *parent, const
     mpLayout->addWidget(mpPageNumberLabel);
     // tree basic configuration
 
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
+    if (UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) {
         mpDocumentTitle = new QLabel(this);
         mpDocumentTitle->setObjectName("UBTGPresentationDocumentTitle");
         mpLayout->addWidget(mpDocumentTitle);
     }
 
-    mpPageTitle = new UBTGAdaptableText(0,this);
+    mpPageTitle = new UBTGAdaptableText(0, this);
     mpPageTitle->setObjectName("UBTGEditionPageTitle");
     mpPageTitle->setPlaceHolderText(tr("Type title here ..."));
     mpLayout->addWidget(mpPageTitle);
 
-    mpComment = new UBTGAdaptableText(0,this);
+    mpComment = new UBTGAdaptableText(0, this);
     mpComment->setObjectName("UBTGEditionComment");
     mpComment->setPlaceHolderText(tr("Type comment here ..."));
     mpLayout->addWidget(mpComment);
@@ -108,6 +114,7 @@ UBTeacherGuideEditionWidget::UBTeacherGuideEditionWidget(QWidget *parent, const
     mpLayout->addWidget(mpSeparator);
 
     mpTreeWidget = new QTreeWidget(this);
+    mpTreeWidget->setStyleSheet("selection-background-color:transparent; padding-bottom:5px; padding-top:5px;");
     mpLayout->addWidget(mpTreeWidget);
 
     mpRootWidgetItem = mpTreeWidget->invisibleRootItem();
@@ -121,21 +128,27 @@ UBTeacherGuideEditionWidget::UBTeacherGuideEditionWidget(QWidget *parent, const
     mpTreeWidget->header()->setResizeMode(0, QHeaderView::Stretch);
     mpTreeWidget->header()->setResizeMode(1, QHeaderView::Fixed);
     mpTreeWidget->header()->setDefaultSectionSize(18);
+    mpTreeWidget->setSelectionMode(QAbstractItemView::NoSelection);
+
+    connect(mpTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(onAddItemClicked(QTreeWidgetItem*,int)));
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged()));
 
-    connect(mpTreeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(onAddItemClicked(QTreeWidgetItem*,int)));
-    connect(UBApplication::boardController,SIGNAL(activeSceneChanged()),this,SLOT(onActiveSceneChanged()));
+#ifdef Q_WS_MAC
+    // on mac and with the custom qt the widget on the tree are not automatically relocated when using the vertical scrollbar. To relocate them we link the valueChange signal of the vertical scrollbar witht a local signal to trig a change and a repaint of the tree widget
+    connect(mpTreeWidget->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(onSliderMoved(int)));
+#endif
 
-    mpAddAnActionItem = new UBAddItem(tr("Add an action"),eUBTGAddSubItemWidgetType_Action,mpTreeWidget);
-    mpAddAMediaItem = new UBAddItem(tr("Add a media"),eUBTGAddSubItemWidgetType_Media,mpTreeWidget);
-    mpAddALinkItem = new UBAddItem(tr("Add a link"),eUBTGAddSubItemWidgetType_Url,mpTreeWidget);
+    mpAddAnActionItem = new UBAddItem(tr("Add an action"), eUBTGAddSubItemWidgetType_Action, mpTreeWidget);
+    mpAddAMediaItem = new UBAddItem(tr("Add a media"), eUBTGAddSubItemWidgetType_Media, mpTreeWidget);
+    mpAddALinkItem = new UBAddItem(tr("Add a link"), eUBTGAddSubItemWidgetType_Url, mpTreeWidget);
 
     mpRootWidgetItem->addChild(mpAddAnActionItem);
     mpRootWidgetItem->addChild(mpAddAMediaItem);
     mpRootWidgetItem->addChild(mpAddALinkItem);
 
-    if(UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()){
-        UBSvgSubsetAdaptor::addElementToBeStored(QString("teacherGuide"),this);
-        connect(UBApplication::boardController,SIGNAL(activeDocumentChanged()),this,SLOT(onActiveDocumentChanged()));
+    if (UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()) {
+        UBSvgSubsetAdaptor::addElementToBeStored(QString("teacherGuide"), this);
+        connect(UBApplication::boardController, SIGNAL(documentSet(UBDocumentProxy*)), this, SLOT(onActiveDocumentChanged()));
     }
 }
 
@@ -149,10 +162,18 @@ UBTeacherGuideEditionWidget::~UBTeacherGuideEditionWidget()
     DELETEPTR(mpAddAnActionItem);
     DELETEPTR(mpAddAMediaItem);
     DELETEPTR(mpAddALinkItem);
-    DELETEPTR(mpTreeWidget)
+    DELETEPTR(mpTreeWidget);
     DELETEPTR(mpLayout);
 }
 
+#ifdef Q_WS_MAC
+void UBTeacherGuideEditionWidget::onSliderMoved(int size)
+{
+    Q_UNUSED(size);
+    if(mpAddAMediaItem)
+        mpAddAMediaItem->setExpanded(true);
+}
+#endif
 void UBTeacherGuideEditionWidget::showEvent(QShowEvent* event)
 {
     setFocus();
@@ -162,7 +183,7 @@ void UBTeacherGuideEditionWidget::showEvent(QShowEvent* event)
 void UBTeacherGuideEditionWidget::onActiveDocumentChanged()
 {
     int activeSceneIndex = UBApplication::boardController->activeSceneIndex();
-    if(UBApplication::boardController->pageFromSceneIndex(activeSceneIndex) != 0)
+    if (UBApplication::boardController->pageFromSceneIndex(activeSceneIndex) != 0)
         load(UBSvgSubsetAdaptor::readTeacherGuideNode(activeSceneIndex));
 }
 
@@ -172,61 +193,59 @@ void UBTeacherGuideEditionWidget::load(QString element)
     QDomDocument doc("TeacherGuide");
     doc.setContent(element);
 
-    for(QDomElement element = doc.documentElement().firstChildElement(); !element.isNull(); element = element.nextSiblingElement()) {
+    for (QDomElement element = doc.documentElement().firstChildElement();
+         !element.isNull(); element = element.nextSiblingElement()) {
         QString tagName = element.tagName();
-        if(tagName == "title")
+        if (tagName == "title")
             mpPageTitle->setInitialText(element.attribute("value"));
-        else if(tagName == "comment")
+        else if (tagName == "comment")
             mpComment->setInitialText(element.attribute("value"));
-        else if(tagName == "media")
-            onAddItemClicked(mpAddAMediaItem,0,&element);
-        else if(tagName == "link")
-            onAddItemClicked(mpAddALinkItem,0,&element);
-        else if(tagName == "action")
-            onAddItemClicked(mpAddAnActionItem,0,&element);
+        else if (tagName == "media")
+            onAddItemClicked(mpAddAMediaItem, 0, &element);
+        else if (tagName == "link")
+            onAddItemClicked(mpAddALinkItem, 0, &element);
+        else if (tagName == "action")
+            onAddItemClicked(mpAddAnActionItem, 0, &element);
     }
 }
 
-
-
 QVector<tIDataStorage*> UBTeacherGuideEditionWidget::save(int pageIndex)
 {
     QVector<tIDataStorage*> result;
-    if(pageIndex != UBApplication::boardController->currentPage())
+    if (pageIndex != UBApplication::boardController->currentPage())
         return result;
     tIDataStorage* data = new tIDataStorage();
     data->name = "teacherGuide";
     data->type = eElementType_START;
-    data->attributes.insert("version","1.50");
+    data->attributes.insert("version", "2.00");
     result << data;
 
     data = new tIDataStorage();
     data->name = "title";
     data->type = eElementType_UNIQUE;
-    data->attributes.insert("value",mpPageTitle->text());
-    if(mpPageTitle->text().length()){
+    data->attributes.insert("value", mpPageTitle->text());
+    if (mpPageTitle->text().length())
         result << data;
-    }
 
     data = new tIDataStorage();
     data->name = "comment";
     data->type = eElementType_UNIQUE;
-    data->attributes.insert("value",mpComment->text());
-    if(mpComment->text().length())
+    data->attributes.insert("value", mpComment->text());
+    if (mpComment->text().length())
         result << data;
 
     QList<QTreeWidgetItem*> children = getChildrenList(mpAddAnActionItem);
     children << getChildrenList(mpAddAMediaItem);
     children << getChildrenList(mpAddALinkItem);
 
-    foreach(QTreeWidgetItem* widgetItem, children){
-        tUBGEElementNode* node = dynamic_cast<iUBTGSaveData*>(mpTreeWidget->itemWidget(widgetItem,0))->saveData();
-        if(node){
+    foreach(QTreeWidgetItem* widgetItem, children) {
+        tUBGEElementNode* node = dynamic_cast<iUBTGSaveData*>(mpTreeWidget->itemWidget( widgetItem, 0))->saveData();
+        if (node) {
             data = new tIDataStorage();
             data->name = node->name;
             data->type = eElementType_UNIQUE;
             foreach(QString currentKey, node->attributes.keys())
-                data->attributes.insert(currentKey,node->attributes.value(currentKey));
+                data->attributes.insert(currentKey, node->attributes.value(currentKey));
             result << data;
         }
     }
@@ -241,12 +260,12 @@ QVector<tIDataStorage*> UBTeacherGuideEditionWidget::save(int pageIndex)
 void UBTeacherGuideEditionWidget::onActiveSceneChanged()
 {
     int currentPage = UBApplication::boardController->currentPage();
-    if(currentPage > 0){
+    if (currentPage > 0) {
         cleanData();
-        load(UBSvgSubsetAdaptor::readTeacherGuideNode(UBApplication::boardController->activeSceneIndex()));
+        load( UBSvgSubsetAdaptor::readTeacherGuideNode( UBApplication::boardController->activeSceneIndex()));
         mpPageNumberLabel->setText(tr("Page: %0").arg(currentPage));
-        UBDocumentProxy* documentProxy = UBApplication::boardController->activeDocument();
-        if(mpDocumentTitle)
+        UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument();
+        if (mpDocumentTitle)
             mpDocumentTitle->setText(documentProxy->metaData(UBSettings::sessionTitle).toString());
     }
 }
@@ -259,44 +278,44 @@ void UBTeacherGuideEditionWidget::cleanData()
     children << mpAddAMediaItem->takeChildren();
     children << mpAddALinkItem->takeChildren();
 
-    foreach(QTreeWidgetItem* item, children){
+    foreach(QTreeWidgetItem* item, children) {
         DELETEPTR(item);
     }
 }
 
-QList<QTreeWidgetItem*> UBTeacherGuideEditionWidget::getChildrenList(QTreeWidgetItem* widgetItem)
+QList<QTreeWidgetItem*> UBTeacherGuideEditionWidget::getChildrenList( QTreeWidgetItem* widgetItem)
 {
-    QList<QTreeWidgetItem*>result;
-    for(int i=0;i<widgetItem->childCount();i+=1)
+    QList<QTreeWidgetItem*> result;
+    for (int i = 0; i < widgetItem->childCount(); i += 1)
         result << widgetItem->child(i);
     return result;
 }
 
 QVector<tUBGEElementNode*> UBTeacherGuideEditionWidget::getPageAndCommentData()
 {
-    QVector<tUBGEElementNode*>result;
+    QVector<tUBGEElementNode*> result;
     tUBGEElementNode* pageTitle = new tUBGEElementNode();
     pageTitle->name = "pageTitle";
-    pageTitle->attributes.insert("value",mpPageTitle->text());
+    pageTitle->attributes.insert("value", mpPageTitle->text());
     result << pageTitle;
 
     tUBGEElementNode* comment = new tUBGEElementNode();
     comment->name = "comment";
-    comment->attributes.insert("value",mpComment->text());
+    comment->attributes.insert("value", mpComment->text());
     result << comment;
     return result;
 }
 
 QVector<tUBGEElementNode*> UBTeacherGuideEditionWidget::getData()
 {
-    QVector<tUBGEElementNode*>result;
+    QVector<tUBGEElementNode*> result;
     QList<QTreeWidgetItem*> children = getChildrenList(mpAddAnActionItem);
     children << getChildrenList(mpAddAMediaItem);
     children << getChildrenList(mpAddALinkItem);
     result << getPageAndCommentData();
-    foreach(QTreeWidgetItem* widgetItem, children){
-        tUBGEElementNode* node = dynamic_cast<iUBTGSaveData*>(mpTreeWidget->itemWidget(widgetItem,0))->saveData();
-        if(node)
+    foreach(QTreeWidgetItem* widgetItem, children) {
+        tUBGEElementNode* node = dynamic_cast<iUBTGSaveData*>(mpTreeWidget->itemWidget( widgetItem, 0))->saveData();
+        if (node)
             result << node;
     }
     return result;
@@ -304,31 +323,33 @@ QVector<tUBGEElementNode*> UBTeacherGuideEditionWidget::getData()
 
 void UBTeacherGuideEditionWidget::onAddItemClicked(QTreeWidgetItem* widget, int column, QDomElement *element)
 {
-    int addSubItemWidgetType = widget->data(column,Qt::UserRole).toInt();
-    if(addSubItemWidgetType != eUBTGAddSubItemWidgetType_None){
+    int addSubItemWidgetType = widget->data(column, Qt::UserRole).toInt();
+    if (addSubItemWidgetType != eUBTGAddSubItemWidgetType_None) {
         QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(widget);
-        newWidgetItem->setData(column,Qt::UserRole,eUBTGAddSubItemWidgetType_None);
-        newWidgetItem->setData(1,Qt::UserRole,eUBTGAddSubItemWidgetType_None);
-        newWidgetItem->setIcon(1,QIcon(":images/close.svg"));
+        newWidgetItem->setData(column, Qt::UserRole, eUBTGAddSubItemWidgetType_None);
+        newWidgetItem->setData(1, Qt::UserRole, eUBTGAddSubItemWidgetType_None);
+        newWidgetItem->setIcon(1, QIcon(":images/close.svg"));
 
-        switch(addSubItemWidgetType)
-        {
-        case eUBTGAddSubItemWidgetType_Action:{
+        switch (addSubItemWidgetType) {
+        case eUBTGAddSubItemWidgetType_Action: {
             UBTGActionWidget* actionWidget = new UBTGActionWidget(widget);
-            if(element) actionWidget->initializeWithDom(*element);
-            mpTreeWidget->setItemWidget(newWidgetItem,0,actionWidget);
+            if (element)
+                actionWidget->initializeWithDom(*element);
+            mpTreeWidget->setItemWidget(newWidgetItem, 0, actionWidget);
             break;
         }
-        case eUBTGAddSubItemWidgetType_Media:{
+        case eUBTGAddSubItemWidgetType_Media: {
             UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(widget);
-            if(element) mediaWidget->initializeWithDom(*element);
-            mpTreeWidget->setItemWidget(newWidgetItem,0,mediaWidget);
+            if (element)
+                mediaWidget->initializeWithDom(*element);
+            mpTreeWidget->setItemWidget(newWidgetItem,0, mediaWidget);
             break;
         }
-        case eUBTGAddSubItemWidgetType_Url:{
+        case eUBTGAddSubItemWidgetType_Url: {
             UBTGUrlWidget* urlWidget = new UBTGUrlWidget();
-            if(element) urlWidget->initializeWithDom(*element);
-            mpTreeWidget->setItemWidget(newWidgetItem,0,urlWidget);
+            if (element)
+                urlWidget->initializeWithDom(*element);
+            mpTreeWidget->setItemWidget(newWidgetItem, 0, urlWidget);
             break;
         }
         default:
@@ -337,42 +358,52 @@ void UBTeacherGuideEditionWidget::onAddItemClicked(QTreeWidgetItem* widget, int
             return;
         }
 
-        if(addSubItemWidgetType != eUBTGAddSubItemWidgetType_None && !widget->isExpanded() )
+        if (addSubItemWidgetType != eUBTGAddSubItemWidgetType_None && !widget->isExpanded())
             widget->setExpanded(true);
-        else{
+        else {
             //to update the tree and subtrees
             widget->setExpanded(false);
             widget->setExpanded(true);
         }
     }
-    else if(column == 1 && addSubItemWidgetType == eUBTGAddSubItemWidgetType_None){
-        UBTGMediaWidget* media = dynamic_cast<UBTGMediaWidget*>(mpTreeWidget->itemWidget(widget,0));
-        if(media) media->removeSource();
+    else if (column == 1 && addSubItemWidgetType == eUBTGAddSubItemWidgetType_None) {
+        UBTGMediaWidget* media = dynamic_cast<UBTGMediaWidget*>(mpTreeWidget->itemWidget(widget, 0));
+        if (media)
+            media->removeSource();
         int index = mpTreeWidget->currentIndex().row();
         QTreeWidgetItem* toBeDeletedWidgetItem = widget->parent()->takeChild(index);
         delete toBeDeletedWidgetItem;
     }
 }
 
+bool UBTeacherGuideEditionWidget::isModified()
+{
+    bool result = false;
+    result |= mpPageTitle->text().length() > 0;
+    result |= mpComment->text().length() > 0;
+    result |= mpAddAnActionItem->childCount() > 0;
+    result |= mpAddAMediaItem->childCount() > 0;
+    result |= mpAddALinkItem->childCount() > 0;
+    return result;
+}
+
 /***************************************************************************
  *           class    UBTeacherGuidePresentationWidget                     *
  ***************************************************************************/
-typedef enum
-{
+typedef enum {
     tUBTGActionAssociateOnClickItem_NONE,
     tUBTGActionAssociateOnClickItem_URL,
     tUBTGActionAssociateOnClickItem_MEDIA,
     tUBTGActionAssociateOnClickItem_EXPAND
-}tUBTGActionAssociateOnClickItem;
+} tUBTGActionAssociateOnClickItem;
 
-typedef enum
-{
+typedef enum {
     tUBTGTreeWidgetItemRole_HasAnAction = Qt::UserRole,
     tUBTGTreeWidgetItemRole_HasAnUrl
-}tUBTGTreeWidgetItemRole;
-
+} tUBTGTreeWidgetItemRole;
 
-UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *parent, const char *name) : QWidget(parent)
+UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *parent, const char *name) :
+    QWidget(parent)
   , mpPageTitle(NULL)
   , mpComment(NULL)
   , mpLayout(NULL)
@@ -388,7 +419,7 @@ UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *pare
     setObjectName(name);
 
     mpLayout = new QVBoxLayout(this);
-
+    setLayout(mpLayout);
     mpPageNumberLabel = new QLabel(this);
     mpPageNumberLabel->setAlignment(Qt::AlignRight);
     mpPageNumberLabel->setObjectName("UBTGPageNumberLabel");
@@ -398,14 +429,14 @@ UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *pare
     mpButtonTitleLayout = new QHBoxLayout(0);
 
     mpModePushButton = new QPushButton(this);
-    mpModePushButton->setIcon(QIcon(":images/pencil.svg"));
+    mpModePushButton->setIcon(QIcon(":images/teacherGuide/pencil.svg"));
     mpModePushButton->setMaximumWidth(32);
     mpModePushButton->installEventFilter(this);
 
-    connect(mpModePushButton,SIGNAL(clicked()),parentWidget(),SLOT(changeMode()));
+    connect(mpModePushButton, SIGNAL(clicked()), parentWidget(), SLOT(changeMode()));
     mpButtonTitleLayout->addWidget(mpModePushButton);
 
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
+    if (UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) {
         mpDocumentTitle = new QLabel(this);
         mpDocumentTitle->setObjectName("UBTGPresentationDocumentTitle");
         mpButtonTitleLayout->addWidget(mpDocumentTitle);
@@ -413,13 +444,13 @@ UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *pare
 
     mpLayout->addLayout(mpButtonTitleLayout);
 
-    mpPageTitle = new UBTGAdaptableText(0,this);
+    mpPageTitle = new UBTGAdaptableText(0, this);
     mpPageTitle->setObjectName("UBTGPresentationPageTitle");
     mpPageTitle->setReadOnly(true);
     mpPageTitle->setStyleSheet("background-color:transparent");
     mpLayout->addWidget(mpPageTitle);
 
-    mpComment = new UBTGAdaptableText(0,this);
+    mpComment = new UBTGAdaptableText(0, this);
     mpComment->setObjectName("UBTGPresentationComment");
     mpComment->setReadOnly(true);
     mpComment->setStyleSheet("background-color:transparent");
@@ -440,8 +471,14 @@ UBTeacherGuidePresentationWidget::UBTeacherGuidePresentationWidget(QWidget *pare
     mpTreeWidget->setDropIndicatorShown(false);
     mpTreeWidget->header()->close();
     mpTreeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    connect(mpTreeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(onAddItemClicked(QTreeWidgetItem*,int)));
-    connect(UBApplication::boardController,SIGNAL(activeSceneChanged()),this,SLOT(onActiveSceneChanged()));
+    mpTreeWidget->setStyleSheet("selection-background-color:transparent; padding-bottom:5px; padding-top:5px; ");
+    mpTreeWidget->setIconSize(QSize(24,24));
+    connect(mpTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(onAddItemClicked(QTreeWidgetItem*,int)));
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged()));
+#ifdef Q_WS_MAC
+    // on mac and with the custom qt the widget on the tree are not automatically relocated when using the vertical scrollbar. To relocate them we link the valueChange signal of the vertical scrollbar witht a local signal to trig a change and a repaint of the tree widget
+    connect(mpTreeWidget->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(onSliderMoved(int)));
+#endif
 }
 
 UBTeacherGuidePresentationWidget::~UBTeacherGuidePresentationWidget()
@@ -458,10 +495,19 @@ UBTeacherGuidePresentationWidget::~UBTeacherGuidePresentationWidget()
     DELETEPTR(mpLayout);
 }
 
+#ifdef Q_WS_MAC
+void UBTeacherGuidePresentationWidget::onSliderMoved(int size)
+{
+    Q_UNUSED(size);
+    if(mpMediaSwitchItem)
+        mpMediaSwitchItem->setExpanded(true);
+}
+#endif
+
 bool UBTeacherGuidePresentationWidget::eventFilter(QObject* object, QEvent* event)
 {
     Q_UNUSED(object);
-    if(event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverMove || event->type() == QEvent::HoverLeave)
+    if (event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverMove || event->type() == QEvent::HoverLeave)
         return true;
     return false;
 }
@@ -472,7 +518,7 @@ void UBTeacherGuidePresentationWidget::cleanData()
     mpComment->showText("");
     //tree clean
     QList<QTreeWidgetItem*> itemToRemove = mpRootWidgetItem->takeChildren();
-    foreach(QTreeWidgetItem* eachItem, itemToRemove){
+    foreach(QTreeWidgetItem* eachItem, itemToRemove) {
         DELETEPTR(eachItem);
     }
     // the mpMediaSwitchItem is deleted by the previous loop but the pointer is not set to zero
@@ -483,80 +529,80 @@ void UBTeacherGuidePresentationWidget::onActiveSceneChanged()
 {
     cleanData();
     mpPageNumberLabel->setText(tr("Page: %0").arg(UBApplication::boardController->currentPage()));
-    UBDocumentProxy* documentProxy = UBApplication::boardController->activeDocument();
-    if(mpDocumentTitle)
-        mpDocumentTitle->setText(documentProxy->metaData(UBSettings::sessionTitle).toString());
+    UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument();
+    if (mpDocumentTitle)
+        mpDocumentTitle->setText( documentProxy->metaData(UBSettings::sessionTitle).toString());
 }
 
 void UBTeacherGuidePresentationWidget::createMediaButtonItem()
 {
-    if(!mpMediaSwitchItem){
+    if (!mpMediaSwitchItem) {
         mpMediaSwitchItem = new QTreeWidgetItem(mpRootWidgetItem);
-        mpMediaSwitchItem->setText(0,"+");
+        mpMediaSwitchItem->setText(0, "+");
         mpMediaSwitchItem->setExpanded(false);
-        mpMediaSwitchItem->setData(0,tUBTGTreeWidgetItemRole_HasAnAction,tUBTGActionAssociateOnClickItem_EXPAND);
-        mpMediaSwitchItem->setData(0,Qt::BackgroundRole,QVariant(QColor(200,200,200)));
-        mpMediaSwitchItem->setData(0,Qt::FontRole, QVariant(QFont(QApplication::font().family(),16)));
-        mpMediaSwitchItem->setData(0,Qt::TextAlignmentRole,QVariant(Qt::AlignCenter));
+        mpMediaSwitchItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_EXPAND);
+        mpMediaSwitchItem->setData(0, Qt::BackgroundRole, QVariant(QColor(200, 200, 200)));
+        mpMediaSwitchItem->setData(0, Qt::FontRole, QVariant(QFont(QApplication::font().family(), 16)));
+        mpMediaSwitchItem->setData(0, Qt::TextAlignmentRole, QVariant(Qt::AlignCenter));
         mpRootWidgetItem->addChild(mpMediaSwitchItem);
     }
 }
 
-
-void UBTeacherGuidePresentationWidget::showData(QVector<tUBGEElementNode*> data)
+void UBTeacherGuidePresentationWidget::showData( QVector<tUBGEElementNode*> data)
 {
     cleanData();
 
-    foreach(tUBGEElementNode* element, data){
-        if(element->name == "pageTitle")
+    foreach(tUBGEElementNode* element, data) {
+        if (element->name == "pageTitle")
             mpPageTitle->showText(element->attributes.value("value"));
         else if (element->name == "comment")
             mpComment->showText(element->attributes.value("value"));
-        else if(element->name == "action"){
+        else if (element->name == "action") {
             QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(mpRootWidgetItem);
-            newWidgetItem->setText(0,element->attributes.value("task"));
-            newWidgetItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-            QString colorString = element->attributes.value("owner").toInt() == 0 ? "red":"green";
-            UBTGAdaptableText* textWidget = new UBTGAdaptableText(newWidgetItem,0);
+            newWidgetItem->setText(0, element->attributes.value("task"));
+            newWidgetItem->setFlags(Qt::ItemIsEnabled);
+            QString colorString = element->attributes.value("owner").toInt() == 0 ? "blue" : "green";
+            UBTGAdaptableText* textWidget = new UBTGAdaptableText(newWidgetItem, 0);
             textWidget->bottomMargin(14);
-            textWidget->setStyleSheet("QWidget {background: #EEEEEE; border:none; color:" + colorString + ";}");
+            textWidget->setStyleSheet( "QWidget {background: #EEEEEE; border:none; color:" + colorString + ";}");
             textWidget->showText(element->attributes.value("task"));
-            textWidget->document()->setDefaultFont(QFont(QApplication::font().family(),11));
-            mpTreeWidget->setItemWidget(newWidgetItem,0,textWidget);
+            textWidget->document()->setDefaultFont( QFont(QApplication::font().family(), 11));
+            mpTreeWidget->setItemWidget(newWidgetItem, 0, textWidget);
 
             mpRootWidgetItem->addChild(newWidgetItem);
         }
-        else if(element->name == "media"){
+        else if (element->name == "media") {
             createMediaButtonItem();
             QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(mpMediaSwitchItem);
-            newWidgetItem->setIcon(0,QIcon(":images/teacherGuide/"+ element->attributes.value("mediaType") +".png"));
-            newWidgetItem->setText(0,element->attributes.value("title"));
-            newWidgetItem->setData(0,tUBTGTreeWidgetItemRole_HasAnAction,tUBTGActionAssociateOnClickItem_MEDIA);
-            newWidgetItem->setData(0,Qt::FontRole, QVariant(QFont(QApplication::font().family(),11)));
-			QString mimeTypeString;
+            newWidgetItem->setIcon(0, QIcon( ":images/teacherGuide/" + element->attributes.value("mediaType") + "_24x24.svg"));
+            newWidgetItem->setText(0, element->attributes.value("title"));
+            newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_MEDIA);
+            newWidgetItem->setData(0, Qt::FontRole, QVariant(QFont(QApplication::font().family(), 11)));
+            QString mimeTypeString;
 #ifdef Q_WS_WIN
-			mimeTypeString =  QUrl::fromLocalFile(UBApplication::boardController->activeDocument()->persistencePath()+ "/" + element->attributes.value("relativePath")).toString();
+            mimeTypeString = QUrl::fromLocalFile(UBApplication::boardController->selectedDocument()->persistencePath()+ "/" + element->attributes.value("relativePath")).toString();
 #else
-			mimeTypeString = UBApplication::boardController->activeDocument()->persistencePath()+ "/" + element->attributes.value("relativePath");
+            mimeTypeString = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + element->attributes.value("relativePath");
 #endif
             newWidgetItem->setData(0, TG_USER_ROLE_MIME_TYPE, mimeTypeString);
-            newWidgetItem->setFlags(Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+            newWidgetItem->setFlags( Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
             mpRootWidgetItem->addChild(newWidgetItem);
 
             QTreeWidgetItem* mediaItem = new QTreeWidgetItem(newWidgetItem);
-            mediaItem->setData(0,tUBTGTreeWidgetItemRole_HasAnAction,tUBTGActionAssociateOnClickItem_NONE);
-            UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(element->attributes.value("relativePath"),newWidgetItem);
+            mediaItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_NONE);
+            qDebug() << element->attributes.value("mediaType");
+            UBTGMediaWidget* mediaWidget = new UBTGMediaWidget(element->attributes.value("relativePath"), newWidgetItem,0,element->attributes.value("mediaType").contains("flash"));
             newWidgetItem->setExpanded(false);
-            mpTreeWidget->setItemWidget(mediaItem,0,mediaWidget);
+            mpTreeWidget->setItemWidget(mediaItem, 0, mediaWidget);
         }
-        else if(element->name == "link"){
+        else if (element->name == "link") {
             createMediaButtonItem();
-            QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem(mpMediaSwitchItem);
-            newWidgetItem->setIcon(0,QIcon(":images/teacherGuide/link.png"));
-            newWidgetItem->setText(0,element->attributes.value("title"));
-            newWidgetItem->setData(0,tUBTGTreeWidgetItemRole_HasAnAction,tUBTGActionAssociateOnClickItem_URL);
-            newWidgetItem->setData(0,tUBTGTreeWidgetItemRole_HasAnUrl,QVariant(element->attributes.value("url")));
-            newWidgetItem->setData(0,Qt::FontRole, QVariant(QFont(QApplication::font().family(),11)));
+            QTreeWidgetItem* newWidgetItem = new QTreeWidgetItem( mpMediaSwitchItem);
+            newWidgetItem->setIcon(0, QIcon(":images/teacherGuide/link_24x24.svg"));
+            newWidgetItem->setText(0, element->attributes.value("title"));
+            newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnAction, tUBTGActionAssociateOnClickItem_URL);
+            newWidgetItem->setData(0, tUBTGTreeWidgetItemRole_HasAnUrl, QVariant(element->attributes.value("url")));
+            newWidgetItem->setData(0, Qt::FontRole, QVariant(QFont(QApplication::font().family(), 11)));
             newWidgetItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
             mpRootWidgetItem->addChild(newWidgetItem);
         }
@@ -565,20 +611,19 @@ void UBTeacherGuidePresentationWidget::showData(QVector<tUBGEElementNode*> data)
 
 void UBTeacherGuidePresentationWidget::onAddItemClicked(QTreeWidgetItem* widget, int column)
 {
-    int associateAction = widget->data(column,tUBTGTreeWidgetItemRole_HasAnAction).toInt();
-    if(column == 0 && associateAction != tUBTGActionAssociateOnClickItem_NONE){
-        switch(associateAction)
-        {
+    int associateAction = widget->data(column, tUBTGTreeWidgetItemRole_HasAnAction).toInt();
+    if (column == 0 && associateAction != tUBTGActionAssociateOnClickItem_NONE) {
+        switch (associateAction) {
         case tUBTGActionAssociateOnClickItem_EXPAND:
             widget->setExpanded(!widget->isExpanded());
-            if(widget->isExpanded())
-                 mpMediaSwitchItem->setText(0,"-");
+            if (widget->isExpanded())
+                mpMediaSwitchItem->setText(0, "-");
             else
-                 mpMediaSwitchItem->setText(0,"+");
+                mpMediaSwitchItem->setText(0, "+");
             break;
         case tUBTGActionAssociateOnClickItem_URL:
-            widget->data(column,tUBTGTreeWidgetItemRole_HasAnUrl).toString();
-            UBApplication::webController->loadUrl(QUrl(widget->data(column,tUBTGTreeWidgetItemRole_HasAnUrl).toString()));
+            widget->data(column, tUBTGTreeWidgetItemRole_HasAnUrl).toString();
+            UBApplication::webController->loadUrl( QUrl( widget->data(column, tUBTGTreeWidgetItemRole_HasAnUrl).toString()));
             break;
         case tUBTGActionAssociateOnClickItem_MEDIA:
             widget->setExpanded(!widget->isExpanded());
@@ -589,15 +634,18 @@ void UBTeacherGuidePresentationWidget::onAddItemClicked(QTreeWidgetItem* widget,
     }
 }
 
-
 /***************************************************************************
- *              class   UBTeacherGuidePageZeroEditionWidget                *
+ *                  class   UBTeacherGuidePageZeroWidget                   *
  ***************************************************************************/
-UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, const char* name): QWidget(parent)
+UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, const char* name) :
+    QWidget(parent)
   , mpLayout(NULL)
   , mpButtonTitleLayout(NULL)
+  , mpContainerWidgetLayout(NULL)
   , mpModePushButton(NULL)
   , mpPageNumberLabel(NULL)
+  , mpScrollArea(NULL)
+  , mpContainerWidget(NULL)
   , mpSessionTitle(NULL)
   , mpSeparatorSessionTitle(NULL)
   , mpAuthorsLabel(NULL)
@@ -622,7 +670,7 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons
   , mpSchoolTypeValueLabel(NULL)
   , mpSeparatorIndex(NULL)
   , mpLicenceLabel(NULL)
-  , mpLicenceBox(NULL)
+  , mpLicenceBox( NULL)
   , mpLicenceIcon(NULL)
   , mpLicenceLayout(NULL)
   , mpSceneItemSessionTitle(NULL)
@@ -634,145 +682,167 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons
     mpPageNumberLabel = new QLabel(this);
     mpPageNumberLabel->setAlignment(Qt::AlignRight);
     mpPageNumberLabel->setObjectName("UBTGPageNumberLabel");
-    mpPageNumberLabel->setText(tr("Page 0"));
+    mpPageNumberLabel->setText(tr("Title page"));
     mpLayout->addWidget(mpPageNumberLabel);
 
+    mpScrollArea = new QScrollArea();
+    mpScrollArea->setFocusPolicy(Qt::NoFocus);
+    mpContainerWidget = new QWidget();
+    mpContainerWidget->setFocusPolicy(Qt::NoFocus);
+    mpContainerWidgetLayout = new QVBoxLayout();
+
+    mpLayout->addWidget(mpScrollArea);
+    mpScrollArea->setWidget(mpContainerWidget);
+    mpScrollArea->setWidgetResizable(true);
+    mpScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    mpContainerWidget->setLayout(mpContainerWidgetLayout);
+
     mpButtonTitleLayout = new QHBoxLayout(0);
 
     mpModePushButton = new QPushButton(this);
-    mpModePushButton->setIcon(QIcon(":images/pencil.svg"));
+    mpModePushButton->setIcon(QIcon(":images/teacherGuide/pencil.svg"));
     mpModePushButton->setMaximumWidth(32);
     mpModePushButton->installEventFilter(this);
     mpButtonTitleLayout->addWidget(mpModePushButton);
-    connect(mpModePushButton,SIGNAL(clicked()),this,SLOT(switchToMode()));
+    connect(mpModePushButton, SIGNAL(clicked()), this, SLOT(switchToMode()));
 
-    mpSessionTitle = new UBTGAdaptableText(0,this,"UBTGSessionTitle");
+    mpSessionTitle = new UBTGAdaptableText(0, this, "UBTGSessionTitle");
     mpSessionTitle->setPlaceHolderText(tr("Type session title here ..."));
+    mpSessionTitle->setMaximumLength(1000);
     mpButtonTitleLayout->addWidget(mpSessionTitle);
+    connect(this, SIGNAL(resized()), mpSessionTitle, SLOT(onTextChanged()));
 
-    mpLayout->addLayout(mpButtonTitleLayout);
+    mpContainerWidgetLayout->addLayout(mpButtonTitleLayout);
 
     mpSeparatorSessionTitle = new QFrame(this);
     mpSeparatorSessionTitle->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT);
     mpSeparatorSessionTitle->setObjectName("UBTGSeparator");
-    mpLayout->addWidget(mpSeparatorSessionTitle);
+    mpContainerWidgetLayout->addWidget(mpSeparatorSessionTitle);
 
     mpAuthorsLabel = new QLabel(this);
     mpAuthorsLabel->setObjectName("UBTGZeroPageEditionModeTitle");
     mpAuthorsLabel->setText(tr("Author(s)"));
     mpAuthorsLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpAuthorsLabel);
+    mpContainerWidgetLayout->addWidget(mpAuthorsLabel);
 
-    mpAuthors = new UBTGAdaptableText(0,this);
+    mpAuthors = new UBTGAdaptableText(0, this);
     mpAuthors->setObjectName("UBTGZeroPageInputText");
     mpAuthors->setPlaceHolderText(tr("Type authors here ..."));
-    mpLayout->addWidget(mpAuthors);
+    mpContainerWidgetLayout->addWidget(mpAuthors);
+    connect(this, SIGNAL(resized()), mpAuthors, SLOT(onTextChanged()));
 
     mpCreationLabel = new QLabel(this);
     mpCreationLabel->setObjectName("UBTGZeroPageDateLabel");
-    mpLayout->addWidget(mpCreationLabel);
+    mpContainerWidgetLayout->addWidget(mpCreationLabel);
 
     mpLastModifiedLabel = new QLabel(this);
     mpLastModifiedLabel->setObjectName("UBTGZeroPageDateLabel");
-    mpLayout->addWidget(mpLastModifiedLabel);
+    mpContainerWidgetLayout->addWidget(mpLastModifiedLabel);
 
     mpSeparatorAuthors = new QFrame(this);
     mpSeparatorAuthors->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT);
     mpSeparatorAuthors->setObjectName("UBTGSeparator");
-    mpLayout->addWidget(mpSeparatorAuthors);
+    mpContainerWidgetLayout->addWidget(mpSeparatorAuthors);
 
     mpObjectivesLabel = new QLabel(this);
     mpObjectivesLabel->setObjectName("UBTGZeroPageEditionModeTitle");
     mpObjectivesLabel->setText(tr("Objective(s)"));
     mpObjectivesLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpObjectivesLabel);
+    mpContainerWidgetLayout->addWidget(mpObjectivesLabel);
 
-    mpObjectives = new UBTGAdaptableText(0,this);
+    mpObjectives = new UBTGAdaptableText(0, this);
     mpObjectives->setObjectName("UBTGZeroPageInputText");
     mpObjectives->setPlaceHolderText(tr("Type objectives here..."));
-    mpLayout->addWidget(mpObjectives);
+    mpContainerWidgetLayout->addWidget(mpObjectives);
+    connect(this, SIGNAL(resized()), mpObjectives, SLOT(onTextChanged()));
 
     mpSeparatorObjectives = new QFrame(this);
     mpSeparatorObjectives->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT);
     mpSeparatorObjectives->setObjectName("UBTGSeparator");
-    mpLayout->addWidget(mpSeparatorObjectives);
+    mpContainerWidgetLayout->addWidget(mpSeparatorObjectives);
 
     mpIndexLabel = new QLabel(this);
     mpIndexLabel->setObjectName("UBTGZeroPageEditionModeTitle");
     mpIndexLabel->setText(tr("Resource indexing"));
     mpIndexLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpIndexLabel);
+    mpContainerWidgetLayout->addWidget(mpIndexLabel);
 
     mpKeywordsLabel = new QLabel(this);
     mpKeywordsLabel->setObjectName("UBTGZeroPageItemLabel");
     mpKeywordsLabel->setText(tr("Keywords:"));
     mpKeywordsLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpKeywordsLabel);
-    mpKeywords = new UBTGAdaptableText(0,this);
+    mpContainerWidgetLayout->addWidget(mpKeywordsLabel);
+    mpKeywords = new UBTGAdaptableText(0, this);
     mpKeywords->setPlaceHolderText(tr("Type keywords here ..."));
-    mpLayout->addWidget(mpKeywords);
+    mpContainerWidgetLayout->addWidget(mpKeywords);
+    connect(this, SIGNAL(resized()), mpKeywords, SLOT(onTextChanged()));
 
     mpSchoolLevelItemLabel = new QLabel(this);
     mpSchoolLevelItemLabel->setObjectName("UBTGZeroPageItemLabel");
     mpSchoolLevelItemLabel->setText(tr("Level:"));
     mpSchoolLevelItemLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpSchoolLevelItemLabel);
+    mpContainerWidgetLayout->addWidget(mpSchoolLevelItemLabel);
     mpSchoolLevelBox = new QComboBox(this);
     mpSchoolLevelBox->setMinimumHeight(22);
+    mpSchoolLevelBox->setMinimumWidth(LOWER_RESIZE_WIDTH);
     mpSchoolLevelBox->setObjectName("DockPaletteWidgetComboBox");
-    connect(mpSchoolLevelBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(onSchoolLevelChanged(QString)));
-    mpLayout->addWidget(mpSchoolLevelBox);
+    connect(mpSchoolLevelBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(onSchoolLevelChanged(QString)));
+    mpContainerWidgetLayout->addWidget(mpSchoolLevelBox);
     mpSchoolLevelValueLabel = new QLabel(this);
-    mpLayout->addWidget(mpSchoolLevelValueLabel);
+    mpContainerWidgetLayout->addWidget(mpSchoolLevelValueLabel);
 
     mpSchoolSubjectsItemLabel = new QLabel(this);
     mpSchoolSubjectsItemLabel->setObjectName("UBTGZeroPageItemLabel");
     mpSchoolSubjectsItemLabel->setText(tr("Subjects:"));
     mpSchoolSubjectsItemLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpSchoolSubjectsItemLabel);
+    mpContainerWidgetLayout->addWidget(mpSchoolSubjectsItemLabel);
     mpSchoolSubjectsBox = new QComboBox(this);
     mpSchoolSubjectsBox->setMinimumHeight(22);
+    mpSchoolSubjectsBox->setMinimumWidth(LOWER_RESIZE_WIDTH);
     mpSchoolSubjectsBox->setObjectName("DockPaletteWidgetComboBox");
-    mpLayout->addWidget(mpSchoolSubjectsBox);
+    mpContainerWidgetLayout->addWidget(mpSchoolSubjectsBox);
     mpSchoolSubjectsValueLabel = new QLabel(this);
-    mpLayout->addWidget(mpSchoolSubjectsValueLabel);
+    mpContainerWidgetLayout->addWidget(mpSchoolSubjectsValueLabel);
 
     mpSchoolTypeItemLabel = new QLabel(this);
     mpSchoolTypeItemLabel->setObjectName("UBTGZeroPageItemLabel");
     mpSchoolTypeItemLabel->setText(tr("Type:"));
     mpSchoolTypeItemLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpSchoolTypeItemLabel);
+    mpContainerWidgetLayout->addWidget(mpSchoolTypeItemLabel);
     mpSchoolTypeBox = new QComboBox(this);
     mpSchoolTypeBox->setMinimumHeight(22);
+    mpSchoolTypeBox->setMinimumWidth(LOWER_RESIZE_WIDTH);
     mpSchoolTypeBox->setObjectName("DockPaletteWidgetComboBox");
-    mpLayout->addWidget(mpSchoolTypeBox);
+    mpContainerWidgetLayout->addWidget(mpSchoolTypeBox);
     mpSchoolTypeValueLabel = new QLabel(this);
-    mpLayout->addWidget(mpSchoolTypeValueLabel);
+    mpContainerWidgetLayout->addWidget(mpSchoolTypeValueLabel);
 
     mpSeparatorIndex = new QFrame(this);
     mpSeparatorIndex->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT);
     mpSeparatorIndex->setObjectName("UBTGSeparator");
-    mpLayout->addWidget(mpSeparatorIndex);
+    mpContainerWidgetLayout->addWidget(mpSeparatorIndex);
 
     mpLicenceLabel = new QLabel(this);
     mpLicenceLabel->setObjectName("UBTGZeroPageItemLabel");
     mpLicenceLabel->setText(tr("Licence"));
     mpLicenceLabel->setStyleSheet(chapterStyle);
-    mpLayout->addWidget(mpLicenceLabel);
+    mpContainerWidgetLayout->addWidget(mpLicenceLabel);
     mpLicenceBox = new QComboBox(this);
     mpLicenceBox->setMinimumHeight(22);
+    mpLicenceBox->setMinimumWidth(LOWER_RESIZE_WIDTH);
     mpLicenceBox->setObjectName("DockPaletteWidgetComboBox");
-    mpLayout->addWidget(mpLicenceBox);
+    mpContainerWidgetLayout->addWidget(mpLicenceBox);
     mpLicenceLayout = new QHBoxLayout(0);
     mpLicenceIcon = new QLabel(this);
+    mpLicenceIcon->setMinimumWidth(LOWER_RESIZE_WIDTH/2);
     mpLicenceLayout->addWidget(mpLicenceIcon);
     mpLicenceValueLabel = new QLabel(this);
+    mpLicenceValueLabel->setMinimumWidth(LOWER_RESIZE_WIDTH/2);
     mpLicenceLayout->addWidget(mpLicenceValueLabel);
-    mpLayout->addLayout(mpLicenceLayout);
-    mpLayout->addStretch(1);
-
+    mpContainerWidgetLayout->addLayout(mpLicenceLayout);
+    mpContainerWidgetLayout->addStretch(1);
 
-    connect(UBApplication::boardController,SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged()));
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged()));
     fillComboBoxes();
 }
 
@@ -806,13 +876,16 @@ UBTeacherGuidePageZeroWidget::~UBTeacherGuidePageZeroWidget()
     DELETEPTR(mpModePushButton);
     DELETEPTR(mpLicenceLayout);
     DELETEPTR(mpButtonTitleLayout);
+    DELETEPTR(mpContainerWidgetLayout);
+    DELETEPTR(mpContainerWidget);
+    DELETEPTR(mpScrollArea);
     DELETEPTR(mpLayout);
 }
 
 bool UBTeacherGuidePageZeroWidget::eventFilter(QObject* object, QEvent* event)
 {
     Q_UNUSED(object);
-    if(event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverMove || event->type() == QEvent::HoverLeave)
+    if (event->type() == QEvent::HoverEnter || event->type() == QEvent::HoverMove || event->type() == QEvent::HoverLeave)
         return true;
     return false;
 }
@@ -821,7 +894,7 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes()
 {
     QString parametersConfigFilePath = UBSettings::settings()->applicationCustomizationDirectory() + "/teacherGuide/indexingParameters.xml";
     QFile parametersFile(parametersConfigFilePath);
-    if(!parametersFile.exists()){
+    if (!parametersFile.exists()) {
         qCritical() << "UBTeacherGuidePageZeroEditionWidget fillComboBoxes file not found " << parametersConfigFilePath;
         return;
     }
@@ -833,48 +906,59 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes()
     QDomElement rootElement = doc.elementsByTagName("teacherGuide").at(0).toElement();
 
     QDomNodeList subjects = rootElement.elementsByTagName("subjects");
-    for(int baseLevelCounter = 0; baseLevelCounter < subjects.count(); baseLevelCounter += 1){
+    for (int baseLevelCounter = 0; baseLevelCounter < subjects.count(); baseLevelCounter += 1) {
         QDomNode subjectsForBaseLevel = subjects.at(baseLevelCounter);
         QDomNodeList subjectsList = subjectsForBaseLevel.childNodes();
         QStringList subjectsRelatedToBaseLevel;
-        for(int j = 0; j < subjectsList.count(); j += 1){
+        for (int j = 0; j < subjectsList.count(); j += 1) {
             subjectsRelatedToBaseLevel.append(subjectsList.at(j).toElement().attribute("label"));
         }
-        mSubjects.insert(subjectsForBaseLevel.toElement().attribute("baseLevel"),subjectsRelatedToBaseLevel);
+        mSubjects.insert( subjectsForBaseLevel.toElement().attribute("baseLevel"), subjectsRelatedToBaseLevel);
     }
 
     QDomNodeList gradeLevels = rootElement.elementsByTagName("gradeLevels").at(0).childNodes();
-    for(int i=0; i<gradeLevels.count();i+=1){
-        mGradeLevelsMap.insert(gradeLevels.at(i).toElement().attribute("label"),gradeLevels.at(i).toElement().attribute("baseLevel"));
-        mpSchoolLevelBox->addItem(gradeLevels.at(i).toElement().attribute("label"));
+    for (int i = 0; i < gradeLevels.count(); i += 1) {
+        mGradeLevelsMap.insert(gradeLevels.at(i).toElement().attribute("label"), gradeLevels.at(i).toElement().attribute("baseLevel"));
+        mpSchoolLevelBox->addItem( gradeLevels.at(i).toElement().attribute("label"));
     }
 
-
     QDomNodeList types = rootElement.elementsByTagName("types").at(0).childNodes();
-    for(int i=0; i<types.count();i+=1)
+    for (int i = 0; i < types.count(); i += 1)
         mpSchoolTypeBox->addItem(types.at(i).toElement().attribute("label"));
 
     parametersFile.close();
 
     QStringList licences;
-    licences << tr("Attribution CC BY") << tr("Attribution-NoDerivs CC BY-ND") << tr("Attribution-ShareAlike CC BY-SA") << tr("Attribution-NonCommercial CC BY-NC") << tr("Attribution-NonCommercial-NoDerivs CC BY-NC-ND") << tr("Attribution-NonCommercial-ShareAlike CC BY-NC-SA") << tr("Public domain") << tr("Copyright");
+    licences << tr("Attribution-ShareAlike CC BY-SA")
+             << tr("Attribution CC BY")
+    		 << tr("Attribution-NoDerivs CC BY-ND")
+             << tr("Attribution-NonCommercial CC BY-NC")
+             << tr("Attribution-NonCommercial-NoDerivs CC BY-NC-ND")
+             << tr("Attribution-NonCommercial-ShareAlike CC BY-NC-SA")
+             << tr("Public domain")
+             << tr("Copyright");
     mpLicenceBox->addItems(licences);
     QStringList licenceIconList;
-    licenceIconList << ":images/licenses/ccby.png" << ":images/licenses/ccbynd.png" << ":images/licenses/ccbysa.png" << ":images/licenses/ccbync.png" << ":images/licenses/ccbyncnd.png" << ":images/licenses/ccbyncsa.png";
-    for(int i = 0; i < licenceIconList.count(); i+=1)
-        mpLicenceBox->setItemData(i,licenceIconList.at(i));
+    licenceIconList << ":images/licenses/ccbysa.png"
+                    << ":images/licenses/ccby.png"
+                    << ":images/licenses/ccbynd.png"
+                    << ":images/licenses/ccbync.png"
+                    << ":images/licenses/ccbyncnd.png"
+                    << ":images/licenses/ccbyncsa.png";
+    for (int i = 0; i < licenceIconList.count(); i += 1)
+        mpLicenceBox->setItemData(i, licenceIconList.at(i));
 }
 
 void UBTeacherGuidePageZeroWidget::onSchoolLevelChanged(QString schoolLevel)
 {
     QStringList subjects = mSubjects.value(mGradeLevelsMap.value(schoolLevel));
     mpSchoolSubjectsBox->clear();
-    if(subjects.count()){
+    if (subjects.count()) {
         mpSchoolSubjectsItemLabel->setEnabled(true);
         mpSchoolSubjectsBox->setEnabled(true);
         mpSchoolSubjectsBox->addItems(subjects);
     }
-    else{
+    else {
         mpSchoolSubjectsItemLabel->setDisabled(true);
         mpSchoolSubjectsBox->setDisabled(true);
     }
@@ -882,18 +966,18 @@ void UBTeacherGuidePageZeroWidget::onSchoolLevelChanged(QString schoolLevel)
 
 void UBTeacherGuidePageZeroWidget::onActiveSceneChanged()
 {
-    UBDocumentProxy* documentProxy = UBApplication::boardController->activeDocument();
-    if(documentProxy && UBApplication::boardController->currentPage() == 0){
+    UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument();
+    if (documentProxy && UBApplication::boardController->currentPage() == 0) {
         QDateTime creationDate = documentProxy->documentDate();
-        mpCreationLabel->setText(tr("Created the:\n") + creationDate.toString(Qt::DefaultLocaleShortDate));
+        mpCreationLabel->setText( tr("Created the:\n") + creationDate.toString(Qt::DefaultLocaleShortDate));
         QDateTime updatedDate = documentProxy->lastUpdate();
-        mpLastModifiedLabel->setText(tr("Updated the:\n") + updatedDate.toString(Qt::DefaultLocaleShortDate));
+        mpLastModifiedLabel->setText( tr("Updated the:\n") + updatedDate.toString(Qt::DefaultLocaleShortDate));
         loadData();
         updateSceneTitle();
     }
 }
 
-void UBTeacherGuidePageZeroWidget::hideEvent ( QHideEvent * event )
+void UBTeacherGuidePageZeroWidget::hideEvent(QHideEvent * event)
 {
     persistData();
     QWidget::hideEvent(event);
@@ -901,63 +985,67 @@ void UBTeacherGuidePageZeroWidget::hideEvent ( QHideEvent * event )
 
 void UBTeacherGuidePageZeroWidget::loadData()
 {
-    UBDocumentProxy* documentProxy = UBApplication::boardController->activeDocument();
-    mpSessionTitle->setText(documentProxy->metaData(UBSettings::sessionTitle).toString());
-    mpAuthors->setText(documentProxy->metaData(UBSettings::sessionAuthors).toString());
-    mpObjectives->setText(documentProxy->metaData(UBSettings::sessionObjectives).toString());
-    mpKeywords->setText(documentProxy->metaData(UBSettings::sessionKeywords).toString());
+    UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument();
+    mpSessionTitle->setText( documentProxy->metaData(UBSettings::sessionTitle).toString());
+    mpAuthors->setText( documentProxy->metaData(UBSettings::sessionAuthors).toString());
+    mpObjectives->setText( documentProxy->metaData(UBSettings::sessionObjectives).toString());
+    mpKeywords->setText( documentProxy->metaData(UBSettings::sessionKeywords).toString());
 
     int currentIndex = mpSchoolLevelBox->findText(documentProxy->metaData(UBSettings::sessionGradeLevel).toString());
-    mpSchoolLevelBox->setCurrentIndex((currentIndex!=-1) ? currentIndex : 0);
+    mpSchoolLevelBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0);
 
     currentIndex = mpSchoolSubjectsBox->findText(documentProxy->metaData(UBSettings::sessionSubjects).toString());
-    mpSchoolSubjectsBox->setCurrentIndex((currentIndex!=-1) ? currentIndex : 0);
+    mpSchoolSubjectsBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0);
 
     currentIndex = mpSchoolTypeBox->findText(documentProxy->metaData(UBSettings::sessionType).toString());
-    mpSchoolTypeBox->setCurrentIndex((currentIndex!=-1) ? currentIndex : 0);
+    mpSchoolTypeBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0);
 
-    currentIndex = mpLicenceBox->findText(documentProxy->metaData(UBSettings::sessionLicence).toString());
-    mpLicenceBox->setCurrentIndex((currentIndex!=-1) ? currentIndex : 0);
+    currentIndex = documentProxy->metaData(UBSettings::sessionLicence).toInt();
+    mpLicenceBox->setCurrentIndex((currentIndex != -1) ? currentIndex : 0);
 }
 
 void UBTeacherGuidePageZeroWidget::persistData()
 {
     // check necessary because at document closing hide event is send after boardcontroller set
     // to NULL
-    if(UBApplication::boardController){
-        UBDocumentProxy* documentProxy = UBApplication::boardController->activeDocument();
-        documentProxy->setMetaData(UBSettings::sessionTitle,mpSessionTitle->text());
+    if (UBApplication::boardController) {
+        UBDocumentProxy* documentProxy = UBApplication::boardController->selectedDocument();
+        documentProxy->setMetaData(UBSettings::sessionTitle, mpSessionTitle->text());
         documentProxy->setMetaData(UBSettings::sessionAuthors, mpAuthors->text());
-        documentProxy->setMetaData(UBSettings::sessionObjectives,mpObjectives->text());
-        documentProxy->setMetaData(UBSettings::sessionKeywords,mpKeywords->text());
-        documentProxy->setMetaData(UBSettings::sessionGradeLevel,mpSchoolLevelBox->currentText());
-        documentProxy->setMetaData(UBSettings::sessionSubjects,mpSchoolSubjectsBox->currentText());
-        documentProxy->setMetaData(UBSettings::sessionType,mpSchoolTypeBox->currentText());
-        documentProxy->setMetaData(UBSettings::sessionLicence,mpLicenceBox->currentText());
+        documentProxy->setMetaData(UBSettings::sessionObjectives, mpObjectives->text());
+        documentProxy->setMetaData(UBSettings::sessionKeywords, mpKeywords->text());
+        documentProxy->setMetaData(UBSettings::sessionGradeLevel, mpSchoolLevelBox->currentText());
+        documentProxy->setMetaData(UBSettings::sessionSubjects, mpSchoolSubjectsBox->currentText());
+        documentProxy->setMetaData(UBSettings::sessionType, mpSchoolTypeBox->currentText());
+        documentProxy->setMetaData(UBSettings::sessionLicence, mpLicenceBox->currentIndex());
     }
 }
 
 void UBTeacherGuidePageZeroWidget::updateSceneTitle()
 {
     QString sessionTitle = mpSessionTitle->text();
-    if(!sessionTitle.isEmpty())
+    if (!sessionTitle.isEmpty())
         UBApplication::boardController->activeScene()->textForObjectName(mpSessionTitle->text());
 }
 
 void UBTeacherGuidePageZeroWidget::switchToMode(tUBTGZeroPageMode mode)
 {
-    if(mode == tUBTGZeroPageMode_EDITION){
+    if (mode == tUBTGZeroPageMode_EDITION) {
         QString inputStyleSheet("QTextEdit { background: white; border-radius: 10px; border: 2px;}");
         mpModePushButton->hide();
         mpSessionTitle->setReadOnly(false);
+        mpSessionTitle->managePlaceholder(true);
         mpSessionTitle->setStyleSheet(inputStyleSheet);
-        QFont titleFont(QApplication::font().family(),11,-1);
+        QFont titleFont(QApplication::font().family(), 11, -1);
         mpSessionTitle->document()->setDefaultFont(titleFont);
         mpAuthors->setReadOnly(false);
+        mpAuthors->managePlaceholder(false);
         mpAuthors->setStyleSheet(inputStyleSheet);
         mpObjectives->setReadOnly(false);
+        mpObjectives->managePlaceholder(false);
         mpObjectives->setStyleSheet(inputStyleSheet);
         mpKeywords->setReadOnly(false);
+        mpKeywords->managePlaceholder(false);
         mpKeywords->setStyleSheet(inputStyleSheet);
         mpSchoolLevelValueLabel->hide();
         mpSchoolLevelBox->show();
@@ -969,13 +1057,13 @@ void UBTeacherGuidePageZeroWidget::switchToMode(tUBTGZeroPageMode mode)
         mpLicenceValueLabel->hide();
         mpLicenceBox->show();
     }
-    else{
-        QString inputStyleSheet("QTextEdit { background: transparent; border: none;}");
+    else {
+        QString inputStyleSheet( "QTextEdit { background: transparent; border: none;}");
         mpModePushButton->show();
         mpSessionTitle->showText(mpSessionTitle->text());
         mpSessionTitle->setStyleSheet(inputStyleSheet);
         updateSceneTitle();
-        QFont titleFont(QApplication::font().family(),14,1);
+        QFont titleFont(QApplication::font().family(), 14, 1);
         mpSessionTitle->document()->setDefaultFont(titleFont);
         mpAuthors->setStyleSheet(inputStyleSheet);
         mpAuthors->setTextColor(QColor(Qt::black));
@@ -997,7 +1085,7 @@ void UBTeacherGuidePageZeroWidget::switchToMode(tUBTGZeroPageMode mode)
         mpSchoolTypeBox->hide();
         mpLicenceValueLabel->setText(mpLicenceBox->currentText());
         QString licenceIconPath = mpLicenceBox->itemData(mpLicenceBox->currentIndex()).toString();
-        if(!licenceIconPath.isEmpty()){
+        if (!licenceIconPath.isEmpty()) {
             mpLicenceIcon->setPixmap(QPixmap(licenceIconPath));
             mpLicenceIcon->show();
         }
@@ -1010,85 +1098,106 @@ void UBTeacherGuidePageZeroWidget::switchToMode(tUBTGZeroPageMode mode)
 
 QVector<tUBGEElementNode*> UBTeacherGuidePageZeroWidget::getData()
 {
-    QVector<tUBGEElementNode*>result;
+    QVector<tUBGEElementNode*> result;
     tUBGEElementNode* elementNode = new tUBGEElementNode();
     elementNode->name = "sessionTitle";
-    elementNode->attributes.insert("value",mpSessionTitle->text());
+    elementNode->attributes.insert("value", mpSessionTitle->text());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "authors";
-    elementNode->attributes.insert("value",mpAuthors->text());
+    elementNode->attributes.insert("value", mpAuthors->text());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "creationDate";
-    elementNode->attributes.insert("value",mpCreationLabel->text());
+    elementNode->attributes.insert("value", mpCreationLabel->text());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "lastModifiedDate";
-    elementNode->attributes.insert("value",mpLastModifiedLabel->text());
+    elementNode->attributes.insert("value", mpLastModifiedLabel->text());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "goals";
-    elementNode->attributes.insert("value",mpObjectives->text());
+    elementNode->attributes.insert("value", mpObjectives->text());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "keywords";
-    elementNode->attributes.insert("value",mpKeywords->text());
+    elementNode->attributes.insert("value", mpKeywords->text());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "schoolLevel";
-    elementNode->attributes.insert("value",mpSchoolLevelBox->currentText());
+    elementNode->attributes.insert("value", mpSchoolLevelBox->currentText());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "schoolBranch";
-    elementNode->attributes.insert("value",mpSchoolSubjectsBox->currentText());
+    elementNode->attributes.insert("value", mpSchoolSubjectsBox->currentText());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "schoolType";
-    elementNode->attributes.insert("value",mpSchoolTypeBox->currentText());
+    elementNode->attributes.insert("value", mpSchoolTypeBox->currentText());
     result << elementNode;
 
     elementNode = new tUBGEElementNode();
     elementNode->name = "licence";
-    elementNode->attributes.insert("value",mpLicenceBox->currentText());
+    elementNode->attributes.insert("value", QString("%1").arg(mpLicenceBox->currentIndex()));
     result << elementNode;
     return result;
 }
 
+bool UBTeacherGuidePageZeroWidget::isModified()
+{
+    bool result = false;
+    result |= mpSessionTitle->text().length() > 0;
+    result |= mpAuthors->text().length() > 0;
+    result |= mpObjectives->text().length() > 0;
+    result |= mpKeywords->text().length() > 0;
+    result |= mpSchoolLevelBox->currentIndex() > 0;
+    result |= mpSchoolSubjectsBox->currentIndex() > 0;
+    result |= mpSchoolTypeBox->currentIndex() > 0;
+    result |= mpLicenceBox->currentIndex() > 0;
+    return result;
+}
+
+void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev)
+{
+	emit resized();
+	QWidget::resizeEvent(ev);
+}
+
 /***************************************************************************
  *                    class    UBTeacherGuideWidget                        *
  ***************************************************************************/
-UBTeacherGuideWidget::UBTeacherGuideWidget(QWidget* parent, const char* name): QStackedWidget(parent)
+UBTeacherGuideWidget::UBTeacherGuideWidget(QWidget* parent, const char* name) :
+    QStackedWidget(parent)
   , mpPageZeroWidget(NULL)
   , mpEditionWidget(NULL)
   , mpPresentationWidget(NULL)
+  , mKeyboardActionFired(false)
 {
     setObjectName(name);
-    if(UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()){
+    if (UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) {
         mpPageZeroWidget = new UBTeacherGuidePageZeroWidget(this);
         addWidget(mpPageZeroWidget);
     }
-    if(UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()){
+    if (UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool()) {
         mpEditionWidget = new UBTeacherGuideEditionWidget(this);
         addWidget(mpEditionWidget);
         mpPresentationWidget = new UBTeacherGuidePresentationWidget(this);
         addWidget(mpPresentationWidget);
     }
 
-    connect(UBApplication::boardController->controlView(),SIGNAL(clickOnBoard()),this,SLOT(showPresentationMode()));
+    connect(UBApplication::boardController->controlView(), SIGNAL(clickOnBoard()), this, SLOT(showPresentationMode()));
     connectToStylusPalette();
-    connect(UBApplication::boardController,SIGNAL(activeSceneChanged()),this,SLOT(onActiveSceneChanged()));
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged()));
 }
 
-
 UBTeacherGuideWidget::~UBTeacherGuideWidget()
 {
     DELETEPTR(mpPageZeroWidget);
@@ -1096,32 +1205,66 @@ UBTeacherGuideWidget::~UBTeacherGuideWidget()
     DELETEPTR(mpPresentationWidget);
 }
 
-
 void UBTeacherGuideWidget::onActiveSceneChanged()
 {
-    if(UBApplication::boardController->currentPage() == 0){
+    if (UBApplication::boardController->currentPage() == 0) {
+    	if(mpPageZeroWidget->isModified())
+    		mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_PRESENTATION);
+    	else
+    		mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_EDITION);
+
         setCurrentWidget(mpPageZeroWidget);
-        mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_EDITION);
-    }else
-        setCurrentWidget(mpEditionWidget);
+    }
+    else{
+    	if(mpEditionWidget->isModified()){
+            mCurrentData = mpEditionWidget->getData();
+            mpPresentationWidget->showData(mCurrentData);
+    		setCurrentWidget(mpPresentationWidget);
+    	}
+    	else
+    		setCurrentWidget(mpEditionWidget);
+    }
 
 }
 
+void UBTeacherGuideWidget::onTriggeredAction(bool checked)
+{
+	Q_UNUSED(checked);
+	if(!mKeyboardActionFired)
+		showPresentationMode();
+	mKeyboardActionFired=false;
+}
+
+void UBTeacherGuideWidget::onTriggeredKeyboardAction(bool checked)
+{
+	Q_UNUSED(checked);
+	mKeyboardActionFired = true;
+}
+
 void UBTeacherGuideWidget::connectToStylusPalette()
 {
-    if(UBApplication::boardController->paletteManager())
-        connect(UBApplication::boardController->paletteManager()->stylusPalette(),SIGNAL(itemOnActionPaletteChanged()),this,SLOT(showPresentationMode()));
-    else
-        QTimer::singleShot(100,this,SLOT(connectToStylusPalette()));
+	connect(UBApplication::mainWindow->actionPen, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionPointer, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionPlay, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionZoomIn, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionZoomOut, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+    connect(UBApplication::mainWindow->actionCapture, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionLine, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionText, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(onTriggeredAction(bool)));
+	connect(UBApplication::mainWindow->actionVirtualKeyboard, SIGNAL(triggered(bool)), this, SLOT(onTriggeredKeyboardAction(bool)));
 }
 
 void UBTeacherGuideWidget::showPresentationMode()
 {
-    if(currentWidget()==mpPageZeroWidget){
+    if (currentWidget() == mpPageZeroWidget) {
         mCurrentData = mpPageZeroWidget->getData();
         mpPageZeroWidget->switchToMode(tUBTGZeroPageMode_PRESENTATION);
     }
-    else if(currentWidget()==mpEditionWidget){
+    else if (currentWidget() == mpEditionWidget) {
         mCurrentData = mpEditionWidget->getData();
         mpPresentationWidget->showData(mCurrentData);
         setCurrentWidget(mpPresentationWidget);
@@ -1130,9 +1273,18 @@ void UBTeacherGuideWidget::showPresentationMode()
 
 void UBTeacherGuideWidget::changeMode()
 {
-    if(currentWidget() == mpEditionWidget)
+    if (currentWidget() == mpEditionWidget)
         setCurrentWidget(mpPresentationWidget);
     else
         setCurrentWidget(mpEditionWidget);
 
 }
+
+bool UBTeacherGuideWidget::isModified()
+{
+    if (currentWidget() == mpPageZeroWidget)
+        return mpPageZeroWidget->isModified();
+    else
+        return mpEditionWidget->isModified();
+}
+
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidget.h b/Sankore-3.1/src/gui/UBTeacherGuideWidget.h
index 1a8b78b..4e2c4f4 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidget.h
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTEACHERGUIDEWIDGET_H
 #define UBTEACHERGUIDEWIDGET_H
 
@@ -23,7 +30,7 @@ class QVBoxLayout;
 class QPushButton;
 class UBDocumentProxy;
 class UBGraphicsTextItem;
-
+class QScrollArea;
 
 #include "UBTeacherGuideWidgetsTools.h"
 
@@ -35,6 +42,8 @@ typedef enum
     tUBTGZeroPageMode_PRESENTATION
 }tUBTGZeroPageMode;
 
+#define LOWER_RESIZE_WIDTH 50
+
 /***************************************************************************
  *               class    UBTeacherGuideEditionWidget                      *
  ***************************************************************************/
@@ -50,6 +59,8 @@ public:
     void load(QString element);
     QVector<tIDataStorage*> save(int pageIndex);
 
+    bool isModified();
+
 public slots:
     void onAddItemClicked(QTreeWidgetItem* widget, int column, QDomElement* element = 0);
     void onActiveSceneChanged();
@@ -73,7 +84,9 @@ private:
 
 private slots:
     void onActiveDocumentChanged();
-
+#ifdef Q_WS_MACX
+    void onSliderMoved(int size);
+#endif
 };
 
 
@@ -110,6 +123,12 @@ private:
     QTreeWidgetItem* mpRootWidgetItem;
     QTreeWidgetItem* mpMediaSwitchItem;
 
+
+#ifdef Q_WS_MACX
+private slots:
+    void onSliderMoved(int size);
+#endif
+
 };
 
 /***************************************************************************
@@ -124,12 +143,18 @@ public:
     ~UBTeacherGuidePageZeroWidget();
 
     QVector<tUBGEElementNode*> getData();
+    bool isModified();
 
+signals:
+	void resized();
 
 public slots:
     void onActiveSceneChanged();
     void switchToMode(tUBTGZeroPageMode mode = tUBTGZeroPageMode_EDITION);
 
+protected:
+    void resizeEvent(QResizeEvent* ev);
+
 private:
     void fillComboBoxes();
     void loadData();
@@ -139,8 +164,13 @@ private:
 
     QVBoxLayout* mpLayout;
     QHBoxLayout* mpButtonTitleLayout;
+    QVBoxLayout* mpContainerWidgetLayout;
     QPushButton* mpModePushButton;
     QLabel* mpPageNumberLabel;
+
+    QScrollArea* mpScrollArea;
+    QWidget* mpContainerWidget;
+
     UBTGAdaptableText* mpSessionTitle;
     QFrame* mpSeparatorSessionTitle;
 
@@ -198,6 +228,8 @@ public:
     explicit UBTeacherGuideWidget(QWidget* parent = 0, const char* name="UBTeacherGuideWidget");
     ~UBTeacherGuideWidget();
 
+    bool isModified();
+
 public slots:
     void changeMode();
     void showPresentationMode();
@@ -209,6 +241,11 @@ private:
     UBTeacherGuideEditionWidget* mpEditionWidget;
     UBTeacherGuidePresentationWidget* mpPresentationWidget;
     QVector<tUBGEElementNode*>mCurrentData;
+    bool mKeyboardActionFired;
+
+private slots:
+	void onTriggeredAction(bool checked);
+	void onTriggeredKeyboardAction(bool checked);
 };
 
 #endif // UBTEACHERGUIDEWIDGET_H
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp
index cba4e8b..92e84b9 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QTreeWidget>
 #include <QVBoxLayout>
 #include <QComboBox>
@@ -22,6 +29,11 @@
 #include <QUrl>
 #include <QWebSettings>
 #include <QApplication>
+#include <QDomElement>
+#include <QWebFrame>
+#include <QTextDocument>
+#include <QTextBlock>
+#include <QTextCursor>
 
 #include "UBTeacherGuideWidgetsTools.h"
 
@@ -30,12 +42,14 @@
 
 #include "board/UBBoardController.h"
 
-#include "domain/UBW3CWidget.h"
+#include "domain/UBGraphicsWidgetItem.h"
 
 #include "globals/UBGlobals.h"
 
 #include "frameworks/UBFileSystemUtils.h"
 
+#include "customWidgets/UBMediaWidget.h"
+
 #include "core/memcheck.h"
 
 
@@ -79,7 +93,6 @@ UBTGActionWidget::UBTGActionWidget(QTreeWidgetItem* widget, QWidget* parent, con
     mpTask = new UBTGAdaptableText(widget,this);
     mpTask->setPlaceHolderText(tr("Type task here ..."));
     mpTask->setAcceptRichText(true);
-    mpTask->setTextColor(QColor().green());
     mpTask->setObjectName("ActionWidgetTaskTextEdit");
     mpLayout->addWidget(mpOwner);
     mpLayout->addWidget(mpTask);
@@ -116,6 +129,7 @@ UBTGAdaptableText::UBTGAdaptableText(QTreeWidgetItem* widget, QWidget* parent, c
   , mMinimumHeight(0)
   , mHasPlaceHolder(false)
   , mIsUpdatingSize(false)
+  , mMaximumLength(0)
 {
     setObjectName(name);
     connect(this,SIGNAL(textChanged()),this,SLOT(onTextChanged()));
@@ -127,6 +141,11 @@ UBTGAdaptableText::UBTGAdaptableText(QTreeWidgetItem* widget, QWidget* parent, c
 
 }
 
+void UBTGAdaptableText::setMaximumLength(int length)
+{
+    mMaximumLength = length;
+}
+
 void UBTGAdaptableText::setPlaceHolderText(QString text)
 {
     mHasPlaceHolder = true;
@@ -134,42 +153,30 @@ void UBTGAdaptableText::setPlaceHolderText(QString text)
     // the space addition is to make this string unique and check against it to know
     // if we are talking about a typed string or the placeholder string
     mPlaceHolderText = text + "     ";
-    setTextColor(QColor(Qt::lightGray));
     setPlainText(mPlaceHolderText);
 }
 
-void UBTGAdaptableText::keyPressEvent(QKeyEvent* e)
-{
-    if(isReadOnly()){
-        // this is important if you set a placeholder. In this case even if the text field is readonly the
-        // keypressed event came here. So if you don't ignore it you'll have a flick on the text zone
-        e->ignore();
-        return;
-    }
-
-    if(toPlainText() == mPlaceHolderText){
-        setPlainText("");
-    }
-    setTextColor(QColor(Qt::black));
-    QTextEdit::keyPressEvent(e);
-}
-
 void UBTGAdaptableText::keyReleaseEvent(QKeyEvent* e)
 {
     QTextEdit::keyReleaseEvent(e);
 
-    if(toPlainText().isEmpty()){
-        setTextColor(QColor(Qt::lightGray));
-        setPlainText(mPlaceHolderText);
+    if(mMaximumLength && toPlainText().length()>mMaximumLength){
+        setPlainText(toPlainText().left(mMaximumLength));
+        QTextCursor tc(document());
+        tc.setPosition(mMaximumLength);
+        setTextCursor(tc);
     }
 }
 
 void UBTGAdaptableText::showEvent(QShowEvent* e)
 {
     Q_UNUSED(e);
-    if(!mIsUpdatingSize && mHasPlaceHolder && toPlainText().isEmpty())
-        setPlainText(mPlaceHolderText);
+    if(!mIsUpdatingSize && !hasFocus() && mHasPlaceHolder && toPlainText().isEmpty() && !isReadOnly()){
+    	setTextColor(QColor(Qt::lightGray));
+    	setPlainText(mPlaceHolderText);
+    }
     else
+    	// If the teacherguide is collapsed, don't updated the size. Or set the size as the expanded size
         onTextChanged();
 }
 
@@ -185,15 +192,18 @@ QString UBTGAdaptableText::text()
 void UBTGAdaptableText::onTextChanged()
 {
     qreal documentSize = document()->size().height();
-    if(height() == documentSize + mBottomMargin)
-        return;
+    if(height() == documentSize + mBottomMargin){
+    	return;
+    }
     mIsUpdatingSize = true;
 
 
-    if(documentSize < mMinimumHeight)
-        setFixedHeight(mMinimumHeight);
-    else
-        setFixedHeight(documentSize+mBottomMargin);
+    if(documentSize < mMinimumHeight){
+    	setFixedHeight(mMinimumHeight);
+    }
+    else{
+    	setFixedHeight(documentSize+mBottomMargin);
+    }
 
     updateGeometry();
     //to trig a resize on the tree widget item
@@ -205,6 +215,7 @@ void UBTGAdaptableText::onTextChanged()
     }
     mIsUpdatingSize = false;
 }
+
 void UBTGAdaptableText::setInitialText(const QString& text)
 {
     setText(text);
@@ -225,6 +236,48 @@ void UBTGAdaptableText::bottomMargin(int newValue)
     onTextChanged();
 }
 
+void UBTGAdaptableText::focusInEvent(QFocusEvent* e)
+{
+	if(isReadOnly()){
+		e->ignore();
+	}
+	managePlaceholder(true);
+	QTextEdit::focusInEvent(e);
+}
+
+void UBTGAdaptableText::focusOutEvent(QFocusEvent* e)
+{
+	managePlaceholder(false);
+	QTextEdit::focusOutEvent(e);
+}
+
+void UBTGAdaptableText::managePlaceholder(bool focus)
+{
+	if(focus){
+		if(toPlainText() == mPlaceHolderText){
+			setTextColor(QColor(Qt::black));
+			setPlainText("");
+		}
+		setCursorToTheEnd();
+	}
+	else{
+		if(toPlainText().isEmpty()){
+			setTextColor(QColor(Qt::lightGray));
+			setPlainText(mPlaceHolderText);
+		}
+	}
+}
+
+void UBTGAdaptableText::setCursorToTheEnd()
+{
+	QTextDocument* doc = document();
+	if(NULL != doc){
+		QTextBlock block = doc->lastBlock();
+		QTextCursor cursor(doc);
+		cursor.setPosition(block.position() + block.length() - 1);
+		setTextCursor(cursor);
+	}
+}
 
 /***************************************************************************
  *                      class   UBTGDraggableWeb                           *
@@ -281,6 +334,7 @@ UBTGMediaWidget::UBTGMediaWidget(QTreeWidgetItem* widget, QWidget* parent,const
   , mpDropMeWidget(NULL)
   , mpWorkWidget(NULL)
   , mpLayout(NULL)
+  , mpMediaLayout(NULL)
   , mpTitle(NULL)
   , mpMediaLabelWidget(NULL)
   , mpMediaWidget(NULL)
@@ -288,6 +342,7 @@ UBTGMediaWidget::UBTGMediaWidget(QTreeWidgetItem* widget, QWidget* parent,const
   , mMediaPath(QString(""))
   , mIsPresentationMode(false)
   , mIsInitializationMode(false)
+  , mMediaWidgetHeight(150)
 {
     setObjectName(name);
     mpDropMeWidget = new QLabel();
@@ -300,11 +355,12 @@ UBTGMediaWidget::UBTGMediaWidget(QTreeWidgetItem* widget, QWidget* parent,const
     setMinimumHeight(250);
 }
 
-UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWidget* parent,const char* name): QStackedWidget(parent)
+UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWidget* parent,bool forceFlashMediaType,const char* name): QStackedWidget(parent)
   , mpTreeWidgetItem(widget)
   , mpDropMeWidget(NULL)
   , mpWorkWidget(NULL)
   , mpLayout(NULL)
+  , mpMediaLayout(NULL)
   , mpTitle(NULL)
   , mpMediaLabelWidget(NULL)
   , mpMediaWidget(NULL)
@@ -312,11 +368,12 @@ UBTGMediaWidget::UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget, QWi
   , mIsPresentationMode(true)
   , mMediaType("")
   , mIsInitializationMode(false)
+  , mMediaWidgetHeight(150)
 {
     setObjectName(name);
-    mMediaPath = UBApplication::boardController->activeDocument()->persistencePath()+ "/" + mediaPath;
+    mMediaPath = UBApplication::boardController->selectedDocument()->persistencePath()+ "/" + mediaPath;
     setAcceptDrops(false);
-    createWorkWidget();
+    createWorkWidget(forceFlashMediaType);
     setFixedHeight(200);
 }
 
@@ -326,6 +383,7 @@ UBTGMediaWidget::~UBTGMediaWidget()
     DELETEPTR(mpMediaLabelWidget);
     DELETEPTR(mpMediaWidget);
     DELETEPTR(mpWebView);
+    DELETEPTR(mpMediaLayout);
     DELETEPTR(mpLayout);
 
     removeWidget(mpDropMeWidget);
@@ -338,8 +396,8 @@ void UBTGMediaWidget::initializeWithDom(QDomElement element)
 {
     mIsInitializationMode = true;
     setAcceptDrops(false);
-    mMediaPath = UBApplication::boardController->activeDocument()->persistencePath() + "/" + element.attribute("relativePath");
-    createWorkWidget();
+    mMediaPath = UBApplication::boardController->selectedDocument()->persistencePath() + "/" + element.attribute("relativePath");
+    createWorkWidget(element.attribute("mediaType").contains("flash"));
     setFixedHeight(200);
     mpTitle->setInitialText(element.attribute("title"));
     mIsInitializationMode = false;
@@ -357,15 +415,19 @@ void UBTGMediaWidget::removeSource()
 void UBTGMediaWidget::hideEvent(QHideEvent* event)
 {
     if(mpWebView)
-        mpWebView->page()->mainFrame()->setContent(UBW3CWidget::freezedWidgetPage().toAscii());
+        mpWebView->page()->mainFrame()->setContent(UBGraphicsW3CWidgetItem::freezedWidgetPage().toAscii());
     QWidget::hideEvent(event);
 }
 
 void UBTGMediaWidget::showEvent(QShowEvent* event)
 {
     QWidget::showEvent(event);
-    if(mpWebView)
-        mpWebView->load(QUrl(mMediaPath + "/index.htm"));
+    if(mpWebView){
+        QString indexPath = mMediaPath+"/index.htm";
+        if(!QFile::exists(indexPath))
+            indexPath += "l";
+        mpWebView->load(QUrl::fromLocalFile(indexPath));
+    }
 }
 
 tUBGEElementNode* UBTGMediaWidget::saveData()
@@ -374,7 +436,7 @@ tUBGEElementNode* UBTGMediaWidget::saveData()
         return 0;
     tUBGEElementNode* result = new tUBGEElementNode();
     QString relativePath = mMediaPath;
-    relativePath = relativePath.replace(UBApplication::boardController->activeDocument()->persistencePath()+"/","");
+    relativePath = relativePath.replace(UBApplication::boardController->selectedDocument()->persistencePath()+"/","");
 	result->name = "media";
     result->attributes.insert("title",mpTitle->text());
     result->attributes.insert("relativePath",relativePath);
@@ -387,11 +449,11 @@ void UBTGMediaWidget::dragEnterEvent(QDragEnterEvent *event)
     event->accept();
 }
 
-void UBTGMediaWidget::createWorkWidget()
+void UBTGMediaWidget::createWorkWidget(bool forceFlashMediaType)
 {
     QString mimeType = UBFileSystemUtils::mimeTypeFromFileName(mMediaPath);
     bool setMedia = true;
-    UBDocumentProxy* proxyDocument = UBApplication::boardController->activeDocument();
+    UBDocumentProxy* proxyDocument = UBApplication::boardController->selectedDocument();
     if(mimeType.contains("audio") || mimeType.contains("video")){
         mMediaType = mimeType.contains("audio")? "audio":"movie";
         mpMediaWidget = new UBMediaWidget(mimeType.contains("audio")?eMediaType_Audio:eMediaType_Video);
@@ -410,16 +472,35 @@ void UBTGMediaWidget::createWorkWidget()
 
         mpMediaLabelWidget = new QLabel();
         QPixmap pixmap = QPixmap(mMediaPath);
-        pixmap = pixmap.scaledToWidth(mpTreeWidgetItem->treeWidget()->size().width());
+        pixmap = pixmap.scaledToHeight(mMediaWidgetHeight);
         mpMediaLabelWidget->setPixmap(pixmap);
-        mpMediaLabelWidget->setScaledContents(true);
     }
-    else if(mimeType.contains("application")){
+    else if(mimeType.contains("widget") && !forceFlashMediaType){
         mMediaType = "w3c";
         if(!(mIsPresentationMode || mIsInitializationMode)){
+            mMediaPath = UBPersistenceManager::persistenceManager()->addWidgetToTeacherGuideDirectory(proxyDocument, mMediaPath);
+        }
+        mpWebView = new UBDraggableWeb(mMediaPath);
+        mpWebView->setAcceptDrops(false);
+        mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true);
+        mpWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
+        mpWebView->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
+        mpWebView->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
+        mpWebView->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
+        mpWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
+        mpWebView->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
+        QString indexPath = mMediaPath+"/index.htm";
+        if(!QFile::exists(indexPath))
+            indexPath += "l";
+        mpWebView->load(QUrl::fromLocalFile(indexPath));
+    }
+    else if(mimeType.contains("x-shockwave-flash") || forceFlashMediaType){
+        mMediaType = "flash";
+        if(!(mIsPresentationMode || mIsInitializationMode)){
             QDir baseW3CDirectory(UBPersistenceManager::persistenceManager()->teacherGuideAbsoluteObjectPath(proxyDocument));
-            mMediaPath = UBW3CWidget::createNPAPIWrapperInDir(mMediaPath,baseW3CDirectory,mimeType,QSize(100,100),QUuid::createUuid());
+            mMediaPath = UBGraphicsW3CWidgetItem::createNPAPIWrapperInDir(mMediaPath,baseW3CDirectory,mimeType,QSize(100,100),QUuid::createUuid());
         }
+        qDebug() << mMediaPath;
         mpWebView = new UBDraggableWeb(mMediaPath);
         mpWebView->setAcceptDrops(false);
         mpWebView->settings()->setAttribute(QWebSettings::JavaEnabled, true);
@@ -429,8 +510,10 @@ void UBTGMediaWidget::createWorkWidget()
         mpWebView->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
         mpWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
         mpWebView->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
-
-        mpWebView->load(QUrl(mMediaPath+"/index.htm"));
+        QString indexPath = mMediaPath+"/index.htm";
+        if(!QFile::exists(indexPath))
+            indexPath += "l";
+        mpWebView->load(QUrl::fromLocalFile(indexPath));
     }
     else{
         qDebug() << "createWorkWidget mime type not handled" << mimeType;
@@ -440,31 +523,43 @@ void UBTGMediaWidget::createWorkWidget()
     if(setMedia){
         setAcceptDrops(false);
         mpWorkWidget = new QWidget(this);
-        mpLayout = new QVBoxLayout(mpWorkWidget);
         if(!mIsPresentationMode){
+            mpLayout = new QVBoxLayout(mpWorkWidget);
             mpTitle = new UBTGAdaptableText(mpTreeWidgetItem,mpWorkWidget);
             mpTitle->setPlaceHolderText(tr("Type title here..."));
             mpLayout->addWidget(mpTitle);
+            mpMediaLayout = new QHBoxLayout;
+            mpLayout->addLayout(mpMediaLayout);
+            mpWorkWidget->setLayout(mpLayout);
         }
+        else{
+            mpMediaLayout = new QHBoxLayout(mpWorkWidget);
+            mpWorkWidget->setLayout(mpMediaLayout);
+        }
+        
+        mpMediaLayout->addStretch(1);
+        
         if(mpMediaLabelWidget){
-            mpMediaLabelWidget->setMaximumHeight(width());
+            mpMediaLabelWidget->setFixedHeight(mMediaWidgetHeight);
             mpMediaLabelWidget->setParent(mpWorkWidget);
-            mpLayout->addWidget(mpMediaLabelWidget);
+            mpMediaLayout->addWidget(mpMediaLabelWidget);
         }
         else if (mpMediaWidget){
-            mpMediaWidget->setMaximumHeight(width());
+            mpMediaWidget->setFixedHeight(mMediaWidgetHeight);
             mpMediaWidget->setParent(mpWorkWidget);
-            mpLayout->addWidget(mpMediaWidget);
+            mpMediaLayout->addWidget(mpMediaWidget);
         }
         else if (mpWebView){
-            mpWebView->setMaximumHeight(width());
+            mpWebView->setFixedHeight(mMediaWidgetHeight);
             mpWebView->setParent(mpWorkWidget);
-            mpLayout->addWidget(mpWebView);
+            mpMediaLayout->addWidget(mpWebView);
             mpWebView->show();
         }
-        mpWorkWidget->setLayout(mpLayout);
+        mpMediaLayout->addStretch(1);
         addWidget(mpWorkWidget);
         setCurrentWidget(mpWorkWidget);
+        mpWorkWidget->show();
+
     }
 }
 
@@ -497,8 +592,7 @@ void UBTGMediaWidget::mousePressEvent(QMouseEvent *event)
 {
     if (!mIsPresentationMode)
         event->ignore();
-     else{
-
+    else{
         QDrag *drag = new QDrag(this);
         QMimeData *mimeData = new QMimeData();
         QList<QUrl> urlList;
@@ -515,6 +609,8 @@ void UBTGMediaWidget::mousePressEvent(QMouseEvent *event)
     }
 }
 
+
+
 /***************************************************************************
  *                      class    UBTGUrlWidget                             *
  ***************************************************************************/
@@ -526,10 +622,12 @@ UBTGUrlWidget::UBTGUrlWidget(QWidget* parent, const char* name ):QWidget(parent)
     setObjectName(name);
     SET_STYLE_SHEET();
     mpLayout = new QVBoxLayout(this);
+    setLayout(mpLayout);
     mpTitle = new QLineEdit(this);
     mpTitle->setObjectName("UBTGLineEdit");
     mpTitle->setPlaceholderText(tr("Insert link title here..."));
     mpUrl = new QLineEdit(this);
+    connect(mpUrl,SIGNAL(editingFinished()),this,SLOT(onUrlEditionFinished()));
     mpUrl->setObjectName("UBTGLineEdit");
     mpUrl->setPlaceholderText("http://");
     mpLayout->addWidget(mpTitle);
@@ -543,6 +641,15 @@ UBTGUrlWidget::~UBTGUrlWidget()
     DELETEPTR(mpLayout);
 }
 
+void UBTGUrlWidget::onUrlEditionFinished()
+{
+	QString url = mpUrl->text();
+	if(url.length() && !url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("ftp://") && !url.startsWith("sftp://") && !url.startsWith("http://")){
+		mpUrl->setText("http://" + mpUrl->text());
+		setFocus();
+	}
+}
+
 void UBTGUrlWidget::initializeWithDom(QDomElement element)
 {
     mpTitle->setText(element.attribute("title"));
diff --git a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h
index 7249c6d..367f9f9 100644
--- a/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h
+++ b/Sankore-3.1/src/gui/UBTeacherGuideWidgetsTools.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTEACHERGUIDEWIDGETSTOOLS_H
 #define UBTEACHERGUIDEWIDGETSTOOLS_H
 
@@ -26,6 +33,8 @@
 #include <QMimeData>
 #include <QStackedWidget>
 #include <QWebView>
+#include <QFocusEvent>
+#include <QMouseEvent>
 
 #include "customWidgets/UBMediaWidget.h"
 
@@ -39,6 +48,7 @@ class QTextEdit;
 class QWidget;
 class UBTGAdaptableText;
 class QDomElement;
+class UBMediaWidget;
 
 typedef struct
 {
@@ -96,22 +106,27 @@ public:
     void setPlaceHolderText(QString text);
     QString text();
     void setInitialText(const QString& text);
+    void setMaximumLength(int length);
+    void managePlaceholder(bool focus);
 
 public slots:
     void onTextChanged();
 
 protected:
-    void keyPressEvent(QKeyEvent* e);
     void keyReleaseEvent(QKeyEvent* e);
     void showEvent(QShowEvent* e);
+    void focusInEvent(QFocusEvent* e);
+    void focusOutEvent(QFocusEvent* e);
 
 private:
+    void setCursorToTheEnd();
     int mBottomMargin;
     QTreeWidgetItem* mpTreeWidgetItem;
     int mMinimumHeight;
     bool mHasPlaceHolder;
     QString mPlaceHolderText;
     bool mIsUpdatingSize;
+    int mMaximumLength;
 };
 
 
@@ -136,7 +151,7 @@ class UBTGMediaWidget : public QStackedWidget , public iUBTGSaveData
     Q_OBJECT
 public:
     UBTGMediaWidget(QTreeWidgetItem* widget = 0, QWidget* parent = 0, const char* name = "UBTGMediaWidget");
-    UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget = 0, QWidget* parent = 0, const char* name = "UBTGMediaWidget");
+    UBTGMediaWidget(QString mediaPath, QTreeWidgetItem* widget = 0, QWidget* parent = 0, bool forceFlashMediaType = false, const char *name = "UBTGMediaWidget");
     ~UBTGMediaWidget();
     tUBGEElementNode* saveData();
     void initializeWithDom(QDomElement element);
@@ -151,13 +166,14 @@ protected:
 
 private:
     void parseMimeData(const QMimeData* pMimeData);
-    void createWorkWidget();
+    void createWorkWidget(bool forceFlashMediaType = false);
     void updateSize();
 
     QTreeWidgetItem* mpTreeWidgetItem;
     QLabel* mpDropMeWidget;
     QWidget* mpWorkWidget;
     QVBoxLayout* mpLayout;
+    QHBoxLayout* mpMediaLayout;
     UBTGAdaptableText* mpTitle;
     QLabel* mpMediaLabelWidget;
     UBMediaWidget* mpMediaWidget;
@@ -166,6 +182,7 @@ private:
     bool mIsPresentationMode;
     QString mMediaType;
     bool mIsInitializationMode;
+    int mMediaWidgetHeight;
 };
 
 
@@ -177,6 +194,10 @@ public:
     ~UBTGUrlWidget();
     tUBGEElementNode* saveData();
     void initializeWithDom(QDomElement element);
+
+public slots:
+    void onUrlEditionFinished();
+
 private:
     QVBoxLayout* mpLayout;
     QLineEdit* mpTitle;
diff --git a/Sankore-3.1/src/gui/UBThumbnailView.cpp b/Sankore-3.1/src/gui/UBThumbnailView.cpp
index ec68800..ebdfa89 100644
--- a/Sankore-3.1/src/gui/UBThumbnailView.cpp
+++ b/Sankore-3.1/src/gui/UBThumbnailView.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBThumbnailView.h"
 #include "domain/UBGraphicsScene.h"
 
diff --git a/Sankore-3.1/src/gui/UBThumbnailView.h b/Sankore-3.1/src/gui/UBThumbnailView.h
index 32390f1..183c187 100644
--- a/Sankore-3.1/src/gui/UBThumbnailView.h
+++ b/Sankore-3.1/src/gui/UBThumbnailView.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTHUMBNAILVIEW_H_
 #define UBTHUMBNAILVIEW_H_
 
diff --git a/Sankore-3.1/src/gui/UBThumbnailWidget.cpp b/Sankore-3.1/src/gui/UBThumbnailWidget.cpp
index 4f22cc4..f8eb1b0 100644
--- a/Sankore-3.1/src/gui/UBThumbnailWidget.cpp
+++ b/Sankore-3.1/src/gui/UBThumbnailWidget.cpp
@@ -1,22 +1,29 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
 #include <QString>
 #include <QCursor>
 
 #include "UBThumbnailWidget.h"
 #include "UBRubberBand.h"
+#include "UBMainWindow.h"
 
 #include "board/UBBoardController.h"
 
@@ -208,9 +215,23 @@ void UBThumbnailWidget::mousePressEvent(QMouseEvent *event)
 {
     mClickTime = QTime::currentTime();
     mMousePressPos = event->pos();
+
+    UBSceneThumbnailPixmap* sceneItem = dynamic_cast<UBSceneThumbnailPixmap*>(itemAt(mMousePressPos));
+    if(sceneItem==NULL)
+    {
+        event->ignore();
+        return;
+    }
+    //if(sceneItem){
+    //	int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneItem->sceneIndex());
+    //	if(pageIndex == 0){
+    //        event->ignore();
+    //        return;
+    //	}
+    //}
+
     mMousePressScenePos = mapToScene(mMousePressPos);
     QGraphicsItem* underlyingItem = itemAt(mMousePressPos);
-
     UBThumbnail *previousSelectedThumbnail = mLastSelectedThumbnail;
 
     if (!dynamic_cast<UBThumbnail*>(underlyingItem))
@@ -750,8 +771,9 @@ UBSceneThumbnailNavigPixmap::UBSceneThumbnailNavigPixmap(const QPixmap& pix, UBD
     , bCanDelete(false)
     , bCanMoveUp(false)
     , bCanMoveDown(false)
+    , bCanDuplicate(false)
 {
-    if(UBApplication::boardController->pageFromSceneIndex(pSceneIndex)){
+    if(0 <= UBDocumentContainer::pageFromSceneIndex(pSceneIndex)){
         setAcceptsHoverEvents(true);
         setFlag(QGraphicsItem::ItemIsSelectable, true);
     }
@@ -788,14 +810,18 @@ void UBSceneThumbnailNavigPixmap::paint(QPainter *painter, const QStyleOptionGra
             painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/close.svg"));
         else
             painter->drawPixmap(0, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/closeDisabled.svg"));
+        if(bCanDuplicate)
+            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicate.svg"));
+        else
+            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/duplicateDisabled.svg"));
         if(bCanMoveUp)
-            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUp.svg"));
+            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUp.svg"));
         else
-            painter->drawPixmap(BUTTONSIZE + BUTTONSPACING, 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUpDisabled.svg"));
+            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/moveUpDisabled.svg"));
         if(bCanMoveDown)
-            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menu.svg"));
+            painter->drawPixmap(3*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menu.svg"));
         else
-            painter->drawPixmap(2*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menuDisabled.svg"));
+            painter->drawPixmap(3*(BUTTONSIZE + BUTTONSPACING), 0, BUTTONSIZE, BUTTONSIZE, QPixmap(":images/menuDisabled.svg"));
     }
 }
 
@@ -805,68 +831,60 @@ void UBSceneThumbnailNavigPixmap::mousePressEvent(QGraphicsSceneMouseEvent *even
 
     // Here we check the position of the click and verify if it has to trig an action or not.
     if(bCanDelete && p.x() >= 0 && p.x() <= BUTTONSIZE && p.y() >= 0 && p.y() <= BUTTONSIZE)
-    {
         deletePage();
-    }
-    if(bCanMoveUp && p.x() >= BUTTONSIZE + BUTTONSPACING && p.x() <= 2*BUTTONSIZE + BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
-    {
+    if(bCanDuplicate && p.x() >= BUTTONSIZE + BUTTONSPACING && p.x() <= 2*BUTTONSIZE + BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
+        duplicatePage();
+    if(bCanMoveUp && p.x() >= 2*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 3*BUTTONSIZE + 2*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
         moveUpPage();
-    }
-    if(bCanMoveDown && p.x() >= 2*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 2*(BUTTONSIZE + BUTTONSPACING) + BUTTONSIZE && p.y() >= 0 && p.y() <= BUTTONSIZE)
-    {
+    if(bCanMoveDown && p.x() >= 3*(BUTTONSIZE + BUTTONSPACING) && p.x() <= 4*BUTTONSIZE + 3*BUTTONSPACING && p.y() >= 0 && p.y() <= BUTTONSIZE)
         moveDownPage();
-    }
+
     event->accept();
 }
 
 void UBSceneThumbnailNavigPixmap::updateButtonsState()
 {
-    bCanDelete = false;
+
+	bCanDelete = false;
     bCanMoveUp = false;
     bCanMoveDown = false;
-
-    UBDocumentProxy* p = proxy();
-    if(NULL != p && UBApplication::boardController->pageFromSceneIndex(sceneIndex()))
-    {
-        int iNbPages = p->pageCount();
-        if(1 < iNbPages)
-        {
-            bCanDelete = true;
-            if(sceneIndex() > 0)
-            {
-                bCanMoveUp = true;
-            }
-            if(sceneIndex() != iNbPages - 1)
-            {
-                bCanMoveDown = true;
-            }
-        }
+    bCanDuplicate = false;
+
+    if(proxy()){
+    	int pageIndex = UBDocumentContainer::pageFromSceneIndex(sceneIndex());
+    	UBDocumentController* documentController = UBApplication::documentController;
+    	bCanDelete = documentController->pageCanBeDeleted(pageIndex);
+        bCanMoveUp = documentController->pageCanBeMovedUp(pageIndex);
+        bCanMoveDown = documentController->pageCanBeMovedDown(pageIndex);
+        bCanDuplicate = documentController->pageCanBeDuplicated(pageIndex);
     }
-    if(UBSettings::settings()->teacherGuidePageZeroActivated && sceneIndex()<=1)
-        bCanMoveUp = false;
 
-    if(bCanDelete || bCanMoveUp || bCanMoveDown)
-    {
+    if(bCanDelete || bCanMoveUp || bCanMoveDown || bCanDuplicate)
         bButtonsVisible = true;
-    }
 }
 
 void UBSceneThumbnailNavigPixmap::deletePage()
 {
-    QList<QGraphicsItem*> itemsToDelete;
-    itemsToDelete << this;
+	if(UBApplication::mainWindow->yesNoQuestion(QObject::tr("Remove Page"), QObject::tr("Are you sure you want to remove 1 page from the selected document '%0'?").arg(UBApplication::documentController->selectedDocument()->metaData(UBSettings::documentName).toString()))){
+		UBApplication::boardController->deleteScene(sceneIndex());
+	}
+}
 
-    UBApplication::documentController->deletePages(itemsToDelete);
+void UBSceneThumbnailNavigPixmap::duplicatePage()
+{
+	UBApplication::boardController->duplicateScene(sceneIndex());
 }
 
 void UBSceneThumbnailNavigPixmap::moveUpPage()
 {
-    UBApplication::documentController->moveSceneToIndex(proxy(), sceneIndex(), sceneIndex() - 1);
+    if (sceneIndex()!=0)
+        UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() - 1);
 }
 
 void UBSceneThumbnailNavigPixmap::moveDownPage()
 {
-    UBApplication::documentController->moveSceneToIndex(proxy(), sceneIndex(), sceneIndex() + 1);
+    if (sceneIndex() < UBApplication::boardController->selectedDocument()->pageCount()-1)
+        UBApplication::boardController->moveSceneToIndex(sceneIndex(), sceneIndex() + 1);
 }
 
 void UBImgTextThumbnailElement::Place(int row, int col, qreal width, qreal height)
@@ -887,11 +905,6 @@ void UBImgTextThumbnailElement::Place(int row, int col, qreal width, qreal heigh
         qreal scaleFactor = qMin(scaleWidth, scaleHeight);
         UBThumbnail* pix = dynamic_cast<UBThumbnail*>(this->thumbnail);
 
-        if(pix)
-        {
-            scaleFactor = qMin(scaleFactor, 1.0);
-        }
-
         QTransform transform;
         transform.scale(scaleFactor, scaleFactor);
 
diff --git a/Sankore-3.1/src/gui/UBThumbnailWidget.h b/Sankore-3.1/src/gui/UBThumbnailWidget.h
index 0429e37..31403c8 100644
--- a/Sankore-3.1/src/gui/UBThumbnailWidget.h
+++ b/Sankore-3.1/src/gui/UBThumbnailWidget.h
@@ -1,17 +1,24 @@
-/*
- * 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/>.
- */
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #ifndef UBTHUMBNAILWIDGET_H_
 #define UBTHUMBNAILWIDGET_H_
@@ -306,6 +313,7 @@ class UBSceneThumbnailNavigPixmap : public UBSceneThumbnailPixmap
     private:
         void updateButtonsState();
         void deletePage();
+        void duplicatePage();
         void moveUpPage();
         void moveDownPage();
 
@@ -313,6 +321,7 @@ class UBSceneThumbnailNavigPixmap : public UBSceneThumbnailPixmap
         bool bCanDelete;
         bool bCanMoveUp;
         bool bCanMoveDown;
+        bool bCanDuplicate;
 };
 
 class UBThumbnailVideo : public UBThumbnailPixmap
@@ -398,19 +407,19 @@ class UBThumbnailTextItem : public QGraphicsTextItem
 class UBImgTextThumbnailElement
 {
 private:
-	QGraphicsItem* thumbnail;
+	UBSceneThumbnailNavigPixmap* thumbnail;
 	UBThumbnailTextItem* caption;
 	int border;
 
 public:
-	UBImgTextThumbnailElement(QGraphicsItem* thumb, UBThumbnailTextItem* text): border(0)
+	UBImgTextThumbnailElement(UBSceneThumbnailNavigPixmap* thumb, UBThumbnailTextItem* text): border(0)
 	{
 		this->thumbnail = thumb;
 		this->caption = text;
 	}
 
-	QGraphicsItem* getThumbnail() const { return this->thumbnail; }
-	void setThumbnail(QGraphicsItem* newGItem) { this->thumbnail = newGItem; }
+	UBSceneThumbnailNavigPixmap* getThumbnail() const { return this->thumbnail; }
+	void setThumbnail(UBSceneThumbnailNavigPixmap* newGItem) { this->thumbnail = newGItem; }
 
 	UBThumbnailTextItem* getCaption() const { return this->caption; }
 	void setCaption(UBThumbnailTextItem* newcaption) { this->caption = newcaption; }
diff --git a/Sankore-3.1/src/gui/UBToolWidget.cpp b/Sankore-3.1/src/gui/UBToolWidget.cpp
index 5bea3f1..53a73e1 100644
--- a/Sankore-3.1/src/gui/UBToolWidget.cpp
+++ b/Sankore-3.1/src/gui/UBToolWidget.cpp
@@ -1,255 +1,244 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <QtGui>
 
+#include <QtGui>
 #include "UBToolWidget.h"
-
-#include "frameworks/UBPlatformUtils.h"
-#include "frameworks/UBFileSystemUtils.h"
-
-#include "core/UBApplication.h"
-#include "core/UBSettings.h"
-
-#include "domain/UBAbstractWidget.h"
-#include "domain/UBAppleWidget.h"
-#include "domain/UBW3CWidget.h"
-#include "domain/UBGraphicsScene.h"
-#include "domain/UBGraphicsWidgetItem.h"
-
 #include "api/UBWidgetUniboardAPI.h"
 #include "api/UBW3CWidgetAPI.h"
-
 #include "board/UBBoardController.h"
 #include "board/UBBoardView.h"
-
+#include "core/UBApplication.h"
+#include "core/UBSettings.h"
+#include "domain/UBGraphicsScene.h"
+#include "domain/UBGraphicsWidgetItem.h"
+#include "frameworks/UBPlatformUtils.h"
+#include "frameworks/UBFileSystemUtils.h"
 #include "core/memcheck.h"
 
+
 QPixmap* UBToolWidget::sClosePixmap = 0;
 QPixmap* UBToolWidget::sUnpinPixmap = 0;
 
 
-UBToolWidget::UBToolWidget(const QUrl& pUrl, QWidget* pParent)
+UBToolWidget::UBToolWidget(const QUrl& pUrl, QWidget *pParent)
     : QWidget(pParent, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint)
+    , mWebView(0)
     , mToolWidget(0)
     , mShouldMoveWidget(false)
-{
-    int widgetType = UBAbstractWidget::widgetType(pUrl);
+    , mContentMargin(0)
+    , mFrameWidth(0)
 
-    if(widgetType == UBWidgetType::Apple)
-    {
-        mToolWidget = new UBAppleWidget(pUrl, this);
-    }
-    else if(widgetType == UBWidgetType::W3C)
-    {
-        mToolWidget = new UBW3CWidget(pUrl, this);
-    }
+{
+    int widgetType = UBGraphicsWidgetItem::widgetType(pUrl);
+    if (widgetType == UBWidgetType::Apple)
+        mToolWidget = new UBGraphicsAppleWidgetItem(pUrl);
+    else if (widgetType == UBWidgetType::W3C)
+        mToolWidget = new UBGraphicsW3CWidgetItem(pUrl);
     else
-    {
         qDebug() << "UBToolWidget::UBToolWidget: Unknown widget Type";
-        return;
-    }
 
     initialize();
 }
 
-
-UBToolWidget::UBToolWidget(UBAbstractWidget* pWidget, QWidget* pParent)
+UBToolWidget::UBToolWidget(UBGraphicsWidgetItem *pWidget, QWidget *pParent)
     : QWidget(pParent, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint)
+    , mWebView(0)
     , mToolWidget(pWidget)
     , mShouldMoveWidget(false)
-{
-    mToolWidget->setParent(this);
-    mToolWidget->loadMainHtml();
+    , mContentMargin(0)
+    , mFrameWidth(0)
 
+{
     initialize();
-
     javaScriptWindowObjectCleared();
 }
 
-
 UBToolWidget::~UBToolWidget()
 {
     // NOOP
 }
 
-
 void UBToolWidget::initialize()
 {
-    mToolWidget->setAcceptDrops(false);
-
-    if(!sClosePixmap)
-    {
+    if (!sClosePixmap)
         sClosePixmap = new QPixmap(":/images/close.svg");
-    }
 
     if(!sUnpinPixmap)
-    {
         sUnpinPixmap = new QPixmap(":/images/unpin.svg");
+
+    UBGraphicsScene *wscene = dynamic_cast<UBGraphicsScene *>(mToolWidget->scene());
+    if (wscene)
+    {
+        wscene->removeItemFromDeletion(mToolWidget);
+        wscene->removeItem(mToolWidget);
     }
 
-    mToolWidget->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
 
-    mToolWidget->setAttribute(Qt::WA_OpaquePaintEvent, false);
+    mWebView = new QWebView(this);
 
-    QPalette palette = mToolWidget->page()->palette();
+    QPalette palette = mWebView->page()->palette();
     palette.setBrush(QPalette::Base, QBrush(Qt::transparent));
-    mToolWidget->page()->setPalette(palette);
+    mWebView->page()->setPalette(palette);
 
-    connect(mToolWidget->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
-    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(javaScriptWindowObjectCleared()));
 
-    setLayout(new QVBoxLayout());
+    mWebView->installEventFilter(this);
 
     mFrameWidth = UBSettings::settings()->objectFrameWidth;
     mContentMargin = sClosePixmap->width() / 2 + mFrameWidth;
-
+    setLayout(new QVBoxLayout());
     layout()->setContentsMargins(mContentMargin, mContentMargin, mContentMargin, mContentMargin);
-    layout()->addWidget(mToolWidget);
+    layout()->addWidget(mWebView);
 
-    setFixedSize(mToolWidget->width() + mContentMargin * 2, mToolWidget->height() + mContentMargin * 2);
+    setFixedSize(mToolWidget->boundingRect().width() + mContentMargin * 2, mToolWidget->boundingRect().height() + mContentMargin * 2);
 
-    mToolWidget->installEventFilter(this);
-}
+    connect(mWebView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
+    mWebView->load(mToolWidget->mainHtml());
 
 
-void UBToolWidget::javaScriptWindowObjectCleared()
-{
-    UBWidgetUniboardAPI* uniboardAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene());
+    mWebView->setAcceptDrops(false);
+    mWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
+    mWebView->setAttribute(Qt::WA_OpaquePaintEvent, false);
 
-    mToolWidget->page()->mainFrame()->addToJavaScriptWindowObject("sankore", uniboardAPI);
 
-    UBW3CWidget* w3c = dynamic_cast<UBW3CWidget*>(mToolWidget);
-    if (w3c)
-    {
-        UBW3CWidgetAPI* widgetAPI = new UBW3CWidgetAPI(w3c);
-        mToolWidget->page()->mainFrame()->addToJavaScriptWindowObject("widget", widgetAPI);
-    }
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(javaScriptWindowObjectCleared()));
 }
 
 
-void UBToolWidget::paintEvent(QPaintEvent *event)
+bool UBToolWidget::eventFilter(QObject *obj, QEvent *event)
 {
-    QWidget::paintEvent(event);
-
-    if (isActiveWindow())
+    if (mShouldMoveWidget && obj == mWebView && event->type() == QEvent::MouseMove)
     {
-        QPainter painter(this);
-        painter.setRenderHint(QPainter::Antialiasing);
-        painter.setPen(Qt::NoPen);
-        painter.setBrush(QColor(127, 127, 127, 127));
-
-        painter.drawRoundedRect(QRectF(sClosePixmap->width() / 2
-            , sClosePixmap->height() / 2
-            , width() - sClosePixmap->width()
-            , mFrameWidth), mFrameWidth / 2, mFrameWidth / 2);
+        QMouseEvent *mouseMoveEvent = static_cast<QMouseEvent*>(event);
 
-        painter.drawPixmap(0, 0, *sClosePixmap);
+        if (mouseMoveEvent->buttons() & Qt::LeftButton)
+        {
+            move(pos() - mMousePressPos + mWebView->mapTo(this, mouseMoveEvent->pos()));
 
-        if (mToolWidget->canBeContent())
-            painter.drawPixmap(mContentMargin, 0, *sUnpinPixmap);
+            event->accept();
+            return true;
+        }
     }
-}
 
+    // standard event processing
+    return QObject::eventFilter(obj, event);
+}
 
-void UBToolWidget::mousePressEvent ( QMouseEvent * event )
+void UBToolWidget::mousePressEvent(QMouseEvent *event)
 {
     QWidget::mousePressEvent(event);
 
-    // did webkit consume the mouse press ?
+    /* did webkit consume the mouse press ? */
     mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton);
-
     mMousePressPos = event->pos();
-
     event->accept();
-
     update();
 }
 
-
-void UBToolWidget::mouseMoveEvent ( QMouseEvent * event )
+void UBToolWidget::mouseMoveEvent(QMouseEvent *event)
 {
-    if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton))
-    {
+    if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton)) {
         move(pos() - mMousePressPos + event->pos());
         event->accept();
     }
-
     QWidget::mouseMoveEvent(event);
-
 }
 
-
-void UBToolWidget::mouseReleaseEvent(QMouseEvent * event)
+void UBToolWidget::mouseReleaseEvent(QMouseEvent *event)
 {
     mShouldMoveWidget = false;
 
-    if (event->pos().x() >= 0 && event->pos().x() < sClosePixmap->width()
-        && event->pos().y() >= 0 && event->pos().y() < sClosePixmap->height())
-    {
+    if (event->pos().x() >= 0 && event->pos().x() < sClosePixmap->width() && event->pos().y() >= 0 && event->pos().y() < sClosePixmap->height()) {
         UBApplication::boardController->removeTool(this);
         event->accept();
     }
-    else if (mToolWidget->canBeContent() && event->pos().x() >= mContentMargin && event->pos().x() < mContentMargin + sUnpinPixmap->width()
-        && event->pos().y() >= 0 && event->pos().y() < sUnpinPixmap->height())
-    {
+    else if (mToolWidget->canBeContent() && event->pos().x() >= mContentMargin && event->pos().x() < mContentMargin + sUnpinPixmap->width() && event->pos().y() >= 0 && event->pos().y() < sUnpinPixmap->height()) {
         UBApplication::boardController->moveToolWidgetToScene(this);
         event->accept();
     }
     else
-        QWidget::mouseReleaseEvent(event); // don't propgate to parent, the widget is deleted in UBApplication::boardController->removeTool
+        QWidget::mouseReleaseEvent(event); /* don't propgate to parent, the widget is deleted in UBApplication */
 
 }
 
-
-bool UBToolWidget::eventFilter(QObject *obj, QEvent *event)
+void UBToolWidget::paintEvent(QPaintEvent *event)
 {
-    if (mShouldMoveWidget && obj == mToolWidget && event->type() == QEvent::MouseMove)
+    QWidget::paintEvent(event);
+
+    //if (isActiveWindow())
     {
-        QMouseEvent *mouseMoveEvent = static_cast<QMouseEvent*>(event);
+        QPainter painter(this);
+        painter.setRenderHint(QPainter::Antialiasing);
+        painter.setPen(Qt::NoPen);
+        painter.setBrush(QColor(127, 127, 127, 127));
 
-        if (mouseMoveEvent->buttons() & Qt::LeftButton)
-        {
-            move(pos() - mMousePressPos + mToolWidget->mapTo(this, mouseMoveEvent->pos()));
+        painter.drawRoundedRect(QRectF(sClosePixmap->width() / 2
+                                     , sClosePixmap->height() / 2
+                                     , width() - sClosePixmap->width()
+                                     , mFrameWidth)
+                                     , mFrameWidth / 2
+                                     , mFrameWidth / 2);
 
-            event->accept();
-            return true;
-        }
-    }
+        painter.drawPixmap(0, 0, *sClosePixmap);
 
-    // standard event processing
-    return QObject::eventFilter(obj, event);
+        if (mToolWidget->canBeContent())
+            painter.drawPixmap(mContentMargin, 0, *sUnpinPixmap);
+    }
 }
 
-
-void UBToolWidget::centerOn(const QPoint& pos)
+void UBToolWidget::javaScriptWindowObjectCleared()
 {
-    QWidget::move(pos - QPoint(width() / 2, height() / 2));
+    UBWidgetUniboardAPI *uniboardAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene(), mToolWidget);
+
+    mWebView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", uniboardAPI);
+
+    UBGraphicsW3CWidgetItem *graphicsW3cWidgetItem = dynamic_cast<UBGraphicsW3CWidgetItem*>(mToolWidget);
+    if (graphicsW3cWidgetItem)
+    {
+        UBW3CWidgetAPI* widgetAPI = new UBW3CWidgetAPI(graphicsW3cWidgetItem);
+        mWebView->page()->mainFrame()->addToJavaScriptWindowObject("widget", widgetAPI);
+    }
 }
 
+UBGraphicsWidgetItem* UBToolWidget::toolWidget() const
+{
+    return mToolWidget;
+}
 
 QPoint UBToolWidget::naturalCenter() const
 {
-    if (mToolWidget)
-        return mToolWidget->geometry().center();
+    if (mWebView)
+        return mWebView->geometry().center();
     else
         return QPoint(0, 0);
 }
 
+void UBToolWidget::remove()
+{
+    mToolWidget = NULL;
+    hide();
+    deleteLater();
+}
 
-UBAbstractWidget* UBToolWidget::webWidget() const
+void UBToolWidget::centerOn(const QPoint& pos)
 {
-    return mToolWidget;
+    QWidget::move(pos - QPoint(width() / 2, height() / 2));
 }
diff --git a/Sankore-3.1/src/gui/UBToolWidget.h b/Sankore-3.1/src/gui/UBToolWidget.h
index 9b377c9..740ae25 100644
--- a/Sankore-3.1/src/gui/UBToolWidget.h
+++ b/Sankore-3.1/src/gui/UBToolWidget.h
@@ -1,26 +1,34 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTOOLWIDGET_H_
 #define UBTOOLWIDGET_H_
 
 #include <QtGui>
 
-class UBAbstractWidget;
+class UBGraphicsWidgetItem;
 class QWidget;
 class UBGraphicsScene;
+class QWebView;
 
 class UBToolWidget : public QWidget
 {
@@ -28,22 +36,23 @@ class UBToolWidget : public QWidget
 
     public:
         UBToolWidget(const QUrl& pUrl, QWidget* pParent = 0);
-        UBToolWidget(UBAbstractWidget* pWidget, QWidget* pParent = 0);
+        UBToolWidget(UBGraphicsWidgetItem* pWidget, QWidget* pParent = 0);
         virtual ~UBToolWidget();
 
+        void remove();
         void centerOn(const QPoint& pos);
 
         QPoint naturalCenter() const;
 
-        UBAbstractWidget* webWidget() const;
+        UBGraphicsWidgetItem *toolWidget() const;
 
     protected:
         void initialize();
-        virtual void paintEvent(QPaintEvent *);
+        virtual void paintEvent(QPaintEvent *event);
 
-        virtual void mousePressEvent ( QMouseEvent * event );
-        virtual void mouseMoveEvent ( QMouseEvent * event );
-        virtual void mouseReleaseEvent ( QMouseEvent * event );
+        virtual void mousePressEvent(QMouseEvent *event);
+        virtual void mouseMoveEvent(QMouseEvent *event);
+        virtual void mouseReleaseEvent(QMouseEvent *event);
 
         virtual bool eventFilter(QObject *obj, QEvent *event);
 
@@ -51,16 +60,14 @@ class UBToolWidget : public QWidget
         void javaScriptWindowObjectCleared();
 
     protected:
+        QWebView *mWebView;
+        UBGraphicsWidgetItem *mToolWidget;
 
         static QPixmap *sClosePixmap;
         static QPixmap *sUnpinPixmap;
 
-        UBAbstractWidget *mToolWidget;
-
         QPoint mMousePressPos;
-
         bool mShouldMoveWidget;
-
         int mContentMargin;
         int mFrameWidth;
 };
diff --git a/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp b/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp
index 7a73950..580832b 100644
--- a/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp
+++ b/Sankore-3.1/src/gui/UBToolbarButtonGroup.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBToolbarButtonGroup.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBToolbarButtonGroup.h b/Sankore-3.1/src/gui/UBToolbarButtonGroup.h
index a950560..1623ca5 100644
--- a/Sankore-3.1/src/gui/UBToolbarButtonGroup.h
+++ b/Sankore-3.1/src/gui/UBToolbarButtonGroup.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTOOLBARBUTTONGROUP_H_
 #define UBTOOLBARBUTTONGROUP_H_
 
diff --git a/Sankore-3.1/src/gui/UBUpdateDlg.cpp b/Sankore-3.1/src/gui/UBUpdateDlg.cpp
index e15d1ed..7a16b34 100644
--- a/Sankore-3.1/src/gui/UBUpdateDlg.cpp
+++ b/Sankore-3.1/src/gui/UBUpdateDlg.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <QFileDialog>
 
 #include "UBUpdateDlg.h"
diff --git a/Sankore-3.1/src/gui/UBUpdateDlg.h b/Sankore-3.1/src/gui/UBUpdateDlg.h
index 95a7be9..6fdb6c3 100644
--- a/Sankore-3.1/src/gui/UBUpdateDlg.h
+++ b/Sankore-3.1/src/gui/UBUpdateDlg.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBUPDATEDLG_H
 #define UBUPDATEDLG_H
 
diff --git a/Sankore-3.1/src/gui/UBVideoPlayer.cpp b/Sankore-3.1/src/gui/UBVideoPlayer.cpp
index 4e76b7f..bcb94a0 100644
--- a/Sankore-3.1/src/gui/UBVideoPlayer.cpp
+++ b/Sankore-3.1/src/gui/UBVideoPlayer.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBVideoPlayer.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/gui/UBVideoPlayer.h b/Sankore-3.1/src/gui/UBVideoPlayer.h
index 287ad38..5e7e91b 100644
--- a/Sankore-3.1/src/gui/UBVideoPlayer.h
+++ b/Sankore-3.1/src/gui/UBVideoPlayer.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBVIDEOPLAYER_H_
 #define UBVIDEOPLAYER_H_
 
diff --git a/Sankore-3.1/src/gui/UBWebToolsPalette.cpp b/Sankore-3.1/src/gui/UBWebToolsPalette.cpp
index 2d7396a..87aeda3 100644
--- a/Sankore-3.1/src/gui/UBWebToolsPalette.cpp
+++ b/Sankore-3.1/src/gui/UBWebToolsPalette.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 
 #include "frameworks/UBPlatformUtils.h"
diff --git a/Sankore-3.1/src/gui/UBWebToolsPalette.h b/Sankore-3.1/src/gui/UBWebToolsPalette.h
index 8defbf3..82c7721 100644
--- a/Sankore-3.1/src/gui/UBWebToolsPalette.h
+++ b/Sankore-3.1/src/gui/UBWebToolsPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBTOOLSPALLETTE_H_
 #define UBWEBTOOLSPALLETTE_H_
 
diff --git a/Sankore-3.1/src/gui/UBWidgetMirror.cpp b/Sankore-3.1/src/gui/UBWidgetMirror.cpp
index 75a2a59..7ff21ea 100644
--- a/Sankore-3.1/src/gui/UBWidgetMirror.cpp
+++ b/Sankore-3.1/src/gui/UBWidgetMirror.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWidgetMirror.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/gui/UBWidgetMirror.h b/Sankore-3.1/src/gui/UBWidgetMirror.h
index b46c3bb..64774dc 100644
--- a/Sankore-3.1/src/gui/UBWidgetMirror.h
+++ b/Sankore-3.1/src/gui/UBWidgetMirror.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWIDGETMIRROR_H_
 #define UBWIDGETMIRROR_H_
 
diff --git a/Sankore-3.1/src/gui/UBZoomPalette.cpp b/Sankore-3.1/src/gui/UBZoomPalette.cpp
index 3a1ded2..15a70ff 100644
--- a/Sankore-3.1/src/gui/UBZoomPalette.cpp
+++ b/Sankore-3.1/src/gui/UBZoomPalette.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBZoomPalette.h"
 
 #include <QtGui>
@@ -109,5 +116,6 @@ void UBZoomPalette::refreshPalette()
     else
     {
         show();
+        raise();
     }
 }
diff --git a/Sankore-3.1/src/gui/UBZoomPalette.h b/Sankore-3.1/src/gui/UBZoomPalette.h
index 14dad9b..f83ba10 100644
--- a/Sankore-3.1/src/gui/UBZoomPalette.h
+++ b/Sankore-3.1/src/gui/UBZoomPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBZOOMPALETTE_H_
 #define UBZOOMPALETTE_H_
 
diff --git a/Sankore-3.1/src/gui/gui.pri b/Sankore-3.1/src/gui/gui.pri
index 52939d4..56f457a 100644
--- a/Sankore-3.1/src/gui/gui.pri
+++ b/Sankore-3.1/src/gui/gui.pri
@@ -1,133 +1,97 @@
-
-HEADERS      += src/gui/UBThumbnailView.h \
-                src/gui/UBFloatingPalette.h \
-                src/gui/UBToolbarButtonGroup.h \
-                src/gui/UBStylusPalette.h \
-                src/gui/UBIconButton.h \
-                src/gui/UBThumbnailWidget.h \
-                src/gui/UBCircleFrame.h \
-                src/gui/UBColorPicker.h \
-                src/gui/UBWidgetMirror.h \
-                src/gui/UBScreenMirror.h \
-                src/gui/UBResources.h \
-                src/gui/UBMessageWindow.h \
-                src/gui/UBDocumentThumbnailWidget.h \
-                src/gui/UBDocumentTreeWidget.h \
-                src/gui/UBMousePressFilter.h \
-                src/gui/UBBlackoutWidget.h \
-                src/gui/UBMainWindow.h \
-                src/gui/UBToolWidget.h \
-                src/gui/UBSpinningWheel.h \
-                src/gui/UBZoomPalette.h \
-                src/gui/UBRubberBand.h \
-                src/gui/UBDocumentToolsPalette.h \
-                src/gui/UBWebToolsPalette.h \
-                src/gui/UBVideoPlayer.h \
-                src/gui/UBActionPalette.h \
-                src/gui/UBFavoriteToolPalette.h  \
-                src/gui/UBKeyboardPalette.h \  
-                src/gui/UBNavigatorPalette.h \
-                src/gui/UBDocumentNavigator.h \
-                src/gui/UBDockPalette.h \
-                src/gui/UBPropertyPalette.h \
-                src/gui/UBLibNavigatorWidget.h \
-                src/gui/UBLibItemProperties.h \
-                src/gui/UBLibActionBar.h \
-                src/gui/UBLibraryWidget.h \
-                src/gui/UBLibPathViewer.h \
-                src/gui/UBUpdateDlg.h \
-                src/gui/UBDockPaletteWidget.h \
-                src/gui/UBLeftPalette.h \
-                src/gui/UBRightPalette.h \
-                src/gui/UBPageNavigationWidget.h \
-                src/gui/UBLibWidget.h \
-                src/gui/UBMagnifer.h \
-                src/gui/UBCachePropertiesWidget.h \
-                src/gui/UBLibWebView.h \
-                src/gui/UBDownloadWidget.h \
-                src/gui/UBDockDownloadWidget.h \
-		src/gui/UBFeaturesWidget.h \
-		src/gui/UBFeaturesActionBar.h \
+HEADERS += src/gui/UBThumbnailView.h \
+    src/gui/UBFloatingPalette.h \
+    src/gui/UBToolbarButtonGroup.h \
+    src/gui/UBStylusPalette.h \
+    src/gui/UBIconButton.h \
+    src/gui/UBThumbnailWidget.h \
+    src/gui/UBCircleFrame.h \
+    src/gui/UBColorPicker.h \
+    src/gui/UBWidgetMirror.h \
+    src/gui/UBScreenMirror.h \
+    src/gui/UBResources.h \
+    src/gui/UBMessageWindow.h \
+    src/gui/UBDocumentThumbnailWidget.h \
+    src/gui/UBDocumentTreeWidget.h \
+    src/gui/UBMousePressFilter.h \
+    src/gui/UBBlackoutWidget.h \
+    src/gui/UBMainWindow.h \
+    src/gui/UBToolWidget.h \
+    src/gui/UBSpinningWheel.h \
+    src/gui/UBZoomPalette.h \
+    src/gui/UBRubberBand.h \
+    src/gui/UBDocumentToolsPalette.h \
+    src/gui/UBWebToolsPalette.h \
+    src/gui/UBVideoPlayer.h \
+    src/gui/UBActionPalette.h \
+    src/gui/UBFavoriteToolPalette.h \
+    src/gui/UBKeyboardPalette.h \
+    src/gui/UBNavigatorPalette.h \
+    src/gui/UBDocumentNavigator.h \
+    src/gui/UBDockPalette.h \
+    src/gui/UBPropertyPalette.h \
+    src/gui/UBUpdateDlg.h \
+    src/gui/UBDockPaletteWidget.h \
+    src/gui/UBLeftPalette.h \
+    src/gui/UBRightPalette.h \
+    src/gui/UBPageNavigationWidget.h \
+    src/gui/UBMagnifer.h \
+    src/gui/UBCachePropertiesWidget.h \
+    src/gui/UBDownloadWidget.h \
+    src/gui/UBDockDownloadWidget.h \
+    src/gui/UBFeaturesWidget.h \
+    src/gui/UBFeaturesActionBar.h \
     src/gui/UBDockTeacherGuideWidget.h \
     src/gui/UBTeacherGuideWidget.h \
-    src/gui/UBTeacherGuideWidgetsTools.h
-                
-SOURCES      += src/gui/UBThumbnailView.cpp \
-                src/gui/UBFloatingPalette.cpp \
-                src/gui/UBToolbarButtonGroup.cpp \
-                src/gui/UBStylusPalette.cpp \
-                src/gui/UBIconButton.cpp \
-                src/gui/UBThumbnailWidget.cpp \
-                src/gui/UBCircleFrame.cpp \
-                src/gui/UBColorPicker.cpp \
-                src/gui/UBWidgetMirror.cpp \
-                src/gui/UBScreenMirror.cpp \
-                src/gui/UBResources.cpp \
-                src/gui/UBMessageWindow.cpp \
-                src/gui/UBDocumentThumbnailWidget.cpp \
-                src/gui/UBDocumentTreeWidget.cpp \
-                src/gui/UBMousePressFilter.cpp \
-                src/gui/UBBlackoutWidget.cpp \
-                src/gui/UBMainWindow.cpp \
-                src/gui/UBToolWidget.cpp \
-                src/gui/UBSpinningWheel.cpp \
-                src/gui/UBZoomPalette.cpp \
-                src/gui/UBRubberBand.cpp \
-                src/gui/UBDocumentToolsPalette.cpp \
-                src/gui/UBWebToolsPalette.cpp \
-                src/gui/UBVideoPlayer.cpp \
-                src/gui/UBActionPalette.cpp \
-                src/gui/UBFavoriteToolPalette.cpp \
-                src/gui/UBKeyboardPalette.cpp \  
-                src/gui/UBNavigatorPalette.cpp \
-                src/gui/UBDocumentNavigator.cpp \
-                src/gui/UBDockPalette.cpp \
-                src/gui/UBPropertyPalette.cpp \
-                src/gui/UBLibNavigatorWidget.cpp \
-                src/gui/UBLibItemProperties.cpp \
-                src/gui/UBLibActionBar.cpp \
-                src/gui/UBLibraryWidget.cpp \
-                src/gui/UBLibPathViewer.cpp \
-                src/gui/UBUpdateDlg.cpp \
-                src/gui/UBDockPaletteWidget.cpp \
-                src/gui/UBLeftPalette.cpp \
-                src/gui/UBRightPalette.cpp \
-                src/gui/UBPageNavigationWidget.cpp \
-                src/gui/UBLibWidget.cpp \
-                src/gui/UBMagnifer.cpp \
-                src/gui/UBCachePropertiesWidget.cpp \
-                src/gui/UBLibWebView.cpp \
-                src/gui/UBDownloadWidget.cpp \
-                src/gui/UBDockDownloadWidget.cpp \
-		src/gui/UBFeaturesWidget.cpp \
-		src/gui/UBFeaturesActionBar.cpp \
+    src/gui/UBTeacherGuideWidgetsTools.h \
+    src/gui/UBMessagesDialog.h
+SOURCES += src/gui/UBThumbnailView.cpp \
+    src/gui/UBFloatingPalette.cpp \
+    src/gui/UBToolbarButtonGroup.cpp \
+    src/gui/UBStylusPalette.cpp \
+    src/gui/UBIconButton.cpp \
+    src/gui/UBThumbnailWidget.cpp \
+    src/gui/UBCircleFrame.cpp \
+    src/gui/UBColorPicker.cpp \
+    src/gui/UBWidgetMirror.cpp \
+    src/gui/UBScreenMirror.cpp \
+    src/gui/UBResources.cpp \
+    src/gui/UBMessageWindow.cpp \
+    src/gui/UBDocumentThumbnailWidget.cpp \
+    src/gui/UBDocumentTreeWidget.cpp \
+    src/gui/UBMousePressFilter.cpp \
+    src/gui/UBBlackoutWidget.cpp \
+    src/gui/UBMainWindow.cpp \
+    src/gui/UBToolWidget.cpp \
+    src/gui/UBSpinningWheel.cpp \
+    src/gui/UBZoomPalette.cpp \
+    src/gui/UBRubberBand.cpp \
+    src/gui/UBDocumentToolsPalette.cpp \
+    src/gui/UBWebToolsPalette.cpp \
+    src/gui/UBVideoPlayer.cpp \
+    src/gui/UBActionPalette.cpp \
+    src/gui/UBFavoriteToolPalette.cpp \
+    src/gui/UBKeyboardPalette.cpp \
+    src/gui/UBNavigatorPalette.cpp \
+    src/gui/UBDocumentNavigator.cpp \
+    src/gui/UBDockPalette.cpp \
+    src/gui/UBPropertyPalette.cpp \
+    src/gui/UBUpdateDlg.cpp \
+    src/gui/UBDockPaletteWidget.cpp \
+    src/gui/UBLeftPalette.cpp \
+    src/gui/UBRightPalette.cpp \
+    src/gui/UBPageNavigationWidget.cpp \
+    src/gui/UBMagnifer.cpp \
+    src/gui/UBCachePropertiesWidget.cpp \
+    src/gui/UBDownloadWidget.cpp \
+    src/gui/UBDockDownloadWidget.cpp \
+    src/gui/UBFeaturesWidget.cpp \
+    src/gui/UBFeaturesActionBar.cpp \
     src/gui/UBDockTeacherGuideWidget.cpp \
     src/gui/UBTeacherGuideWidget.cpp \
-    src/gui/UBTeacherGuideWidgetsTools.cpp
-
-win32 {
-
-    SOURCES  += src/gui/UBKeyboardPalette_win.cpp
-
-}            
-
-
-macx {                
-
-    SOURCES  += src/gui/UBKeyboardPalette_mac.cpp                
-}       
-
-
-linux-g++ {
-
-    SOURCES  += src/gui/UBKeyboardPalette_linux.cpp
-}
-
-linux-g++-32 {
-
-    SOURCES  += src/gui/UBKeyboardPalette_linux.cpp
-}
-linux-g++-64 {
-
-    SOURCES  += src/gui/UBKeyboardPalette_linux.cpp
-}
+    src/gui/UBTeacherGuideWidgetsTools.cpp \
+    src/gui/UBMessagesDialog.cpp
+win32:SOURCES += src/gui/UBKeyboardPalette_win.cpp
+macx:SOURCES += src/gui/UBKeyboardPalette_mac.cpp
+linux-g++:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
+linux-g++-32:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
+linux-g++-64:SOURCES += src/gui/UBKeyboardPalette_linux.cpp
diff --git a/Sankore-3.1/src/interfaces/IDataStorage.h b/Sankore-3.1/src/interfaces/IDataStorage.h
index 8de8a58..e8bd50e 100644
--- a/Sankore-3.1/src/interfaces/IDataStorage.h
+++ b/Sankore-3.1/src/interfaces/IDataStorage.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef IDATASTORAGE_H
 #define IDATASTORAGE_H
 
diff --git a/Sankore-3.1/src/network/UBAutoSaver.cpp b/Sankore-3.1/src/network/UBAutoSaver.cpp
index 3b206af..686fc50 100644
--- a/Sankore-3.1/src/network/UBAutoSaver.cpp
+++ b/Sankore-3.1/src/network/UBAutoSaver.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBAutoSaver.h b/Sankore-3.1/src/network/UBAutoSaver.h
index 2cba966..6d557ef 100644
--- a/Sankore-3.1/src/network/UBAutoSaver.h
+++ b/Sankore-3.1/src/network/UBAutoSaver.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBCookieJar.cpp b/Sankore-3.1/src/network/UBCookieJar.cpp
index a0b9226..cc6acbe 100644
--- a/Sankore-3.1/src/network/UBCookieJar.cpp
+++ b/Sankore-3.1/src/network/UBCookieJar.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBCookieJar.h b/Sankore-3.1/src/network/UBCookieJar.h
index 90b6694..bbed90b 100644
--- a/Sankore-3.1/src/network/UBCookieJar.h
+++ b/Sankore-3.1/src/network/UBCookieJar.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/network/UBHttpFileDownloader.cpp b/Sankore-3.1/src/network/UBHttpFileDownloader.cpp
index 4b3525a..8f947ce 100644
--- a/Sankore-3.1/src/network/UBHttpFileDownloader.cpp
+++ b/Sankore-3.1/src/network/UBHttpFileDownloader.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBHttpFileDownloader.h"
 
 #include "network/UBNetworkAccessManager.h"
diff --git a/Sankore-3.1/src/network/UBHttpFileDownloader.h b/Sankore-3.1/src/network/UBHttpFileDownloader.h
index c109e26..2342bfb 100644
--- a/Sankore-3.1/src/network/UBHttpFileDownloader.h
+++ b/Sankore-3.1/src/network/UBHttpFileDownloader.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBHTTPFILEDOWNLOADER_H_
 #define UBHTTPFILEDOWNLOADER_H_
 
diff --git a/Sankore-3.1/src/network/UBHttpGet.cpp b/Sankore-3.1/src/network/UBHttpGet.cpp
index 5b51360..a990123 100644
--- a/Sankore-3.1/src/network/UBHttpGet.cpp
+++ b/Sankore-3.1/src/network/UBHttpGet.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBHttpGet.h"
 
 #include <QtNetwork>
@@ -65,26 +72,6 @@ QNetworkReply* UBHttpGet::get(QUrl pUrl, QPointF pPos, QSize pSize, bool isBackg
 
     return mReply;
 }
-//QNetworkReply* UBHttpGet::get(const sDownloadFileDesc &downlinfo)
-//{
-//    mDownloadInfo.size = downlinfo.size;
-//    mDownloadInfo.isBackground = downlinfo.isBackground;
-//    mDownloadInfo.pos = downlinfo.pos;
-
-//    if (mReply)
-//        delete mReply;
-
-//    UBNetworkAccessManager * nam = UBNetworkAccessManager::defaultAccessManager();
-//    mReply = nam->get(QNetworkRequest(QUrl(downlinfo.url))); //mReply deleted by this destructor
-
-//    mDownloadedBytes.clear();
-
-//    connect(mReply, SIGNAL(finished()), this, SLOT(requestFinished()));
-//    connect(mReply, SIGNAL(readyRead()), this, SLOT(readyRead()));
-//    connect(mReply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(downloadProgressed(qint64, qint64)));
-
-//    return mReply;
-//}
 
 void UBHttpGet::readyRead()
 {
diff --git a/Sankore-3.1/src/network/UBHttpGet.h b/Sankore-3.1/src/network/UBHttpGet.h
index b6b4b56..4d13dd6 100644
--- a/Sankore-3.1/src/network/UBHttpGet.h
+++ b/Sankore-3.1/src/network/UBHttpGet.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBHTTPGET_H_
 #define UBHTTPGET_H_
 
diff --git a/Sankore-3.1/src/network/UBNetworkAccessManager.cpp b/Sankore-3.1/src/network/UBNetworkAccessManager.cpp
index 182eefd..c6a0127 100644
--- a/Sankore-3.1/src/network/UBNetworkAccessManager.cpp
+++ b/Sankore-3.1/src/network/UBNetworkAccessManager.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "UBNetworkAccessManager.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/network/UBNetworkAccessManager.h b/Sankore-3.1/src/network/UBNetworkAccessManager.h
index 18f35a0..5b68110 100644
--- a/Sankore-3.1/src/network/UBNetworkAccessManager.h
+++ b/Sankore-3.1/src/network/UBNetworkAccessManager.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBNETWORKACCESSMANAGER_H
 #define UBNETWORKACCESSMANAGER_H
 
diff --git a/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp b/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp
index 46195f6..b8fbbc2 100644
--- a/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp
+++ b/Sankore-3.1/src/network/UBServerXMLHttpRequest.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBServerXMLHttpRequest.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/network/UBServerXMLHttpRequest.h b/Sankore-3.1/src/network/UBServerXMLHttpRequest.h
index 2745489..f9f5ffc 100644
--- a/Sankore-3.1/src/network/UBServerXMLHttpRequest.h
+++ b/Sankore-3.1/src/network/UBServerXMLHttpRequest.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBSERVERXMLHTTPREQUEST_H_
 #define UBSERVERXMLHTTPREQUEST_H_
 
diff --git a/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp b/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp
index 640bf5f..a14b30e 100644
--- a/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp
+++ b/Sankore-3.1/src/pdf-merger/ASCII85Decode.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <iostream>
 #include <QtGlobal>
 #include "ASCII85Decode.h"
diff --git a/Sankore-3.1/src/pdf-merger/ASCII85Decode.h b/Sankore-3.1/src/pdf-merger/ASCII85Decode.h
index a6d7ae3..542ce9d 100644
--- a/Sankore-3.1/src/pdf-merger/ASCII85Decode.h
+++ b/Sankore-3.1/src/pdf-merger/ASCII85Decode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef ASCII85Decode_H
 #define ASCII85Decode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp
index b35ac29..922aee4 100644
--- a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "ASCIIHexDecode.h"
 #include <QtGlobal>
 #include <string>
diff --git a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h
index 35c80a3..895ed60 100644
--- a/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h
+++ b/Sankore-3.1/src/pdf-merger/ASCIIHexDecode.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef ASCIIHexDecode_h
 #define ASCIIHexDecode_h
 
diff --git a/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h b/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h
index a0d2ab3..eeb7630 100644
--- a/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/AbstractBoxElementHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined AbstractBoxElementHandler_h
 #define AbstractBoxElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp b/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp
index afc86ca..cca2da0 100644
--- a/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/AnnotsHandler.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "AnnotsHandler.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/AnnotsHandler.h b/Sankore-3.1/src/pdf-merger/AnnotsHandler.h
index c78a8da..4f8fadd 100644
--- a/Sankore-3.1/src/pdf-merger/AnnotsHandler.h
+++ b/Sankore-3.1/src/pdf-merger/AnnotsHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined AnnotsHandler_h
 #define AnnotsHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp
index 5c1ab0a..b3fcad0 100644
--- a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGlobal>
 #include "CCITTFaxDecode.h"
 
diff --git a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h
index 9bc65ac..d70390d 100644
--- a/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h
+++ b/Sankore-3.1/src/pdf-merger/CCITTFaxDecode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef CCITTFaxDecode_H
 #define CCITTFaxDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Config.h b/Sankore-3.1/src/pdf-merger/Config.h
index 85a555e..600104b 100644
--- a/Sankore-3.1/src/pdf-merger/Config.h
+++ b/Sankore-3.1/src/pdf-merger/Config.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /*
 This file provides some common configuration definitions for PDF merge library
 Is intended for multiplatform support
diff --git a/Sankore-3.1/src/pdf-merger/ContentHandler.cpp b/Sankore-3.1/src/pdf-merger/ContentHandler.cpp
index 8194524..36b07bb 100644
--- a/Sankore-3.1/src/pdf-merger/ContentHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/ContentHandler.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "ContentHandler.h"
 #include "Filter.h"
 #include "FlateDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/ContentHandler.h b/Sankore-3.1/src/pdf-merger/ContentHandler.h
index 657ab1c..d4bcfd5 100644
--- a/Sankore-3.1/src/pdf-merger/ContentHandler.h
+++ b/Sankore-3.1/src/pdf-merger/ContentHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined ContentHandler_h
 #define ContentHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h b/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h
index fa63bcd..218f9b9 100644
--- a/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/CropBoxElementHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef CROPBOX_ELEMENT_HANDLER_H
 #define CROPBOX_ELEMENT_HANDLER_H
 
diff --git a/Sankore-3.1/src/pdf-merger/DCTDecode.cpp b/Sankore-3.1/src/pdf-merger/DCTDecode.cpp
index 392c486..904f95b 100644
--- a/Sankore-3.1/src/pdf-merger/DCTDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/DCTDecode.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGlobal>
 #include "DCTDecode.h"
 
diff --git a/Sankore-3.1/src/pdf-merger/DCTDecode.h b/Sankore-3.1/src/pdf-merger/DCTDecode.h
index 3e22cdc..bed9811 100644
--- a/Sankore-3.1/src/pdf-merger/DCTDecode.h
+++ b/Sankore-3.1/src/pdf-merger/DCTDecode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef DCTDecode_H 
 #define DCTDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Decoder.h b/Sankore-3.1/src/pdf-merger/Decoder.h
index 6f6fdda..634c41f 100644
--- a/Sankore-3.1/src/pdf-merger/Decoder.h
+++ b/Sankore-3.1/src/pdf-merger/Decoder.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef DECODER_H
 #define DECODER_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Document.cpp b/Sankore-3.1/src/pdf-merger/Document.cpp
index fad1ee2..82ad96a 100644
--- a/Sankore-3.1/src/pdf-merger/Document.cpp
+++ b/Sankore-3.1/src/pdf-merger/Document.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "Config.h"
 #include "Document.h"
 #include "FlateDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/Document.h b/Sankore-3.1/src/pdf-merger/Document.h
index 20894f7..ddc5d03 100644
--- a/Sankore-3.1/src/pdf-merger/Document.h
+++ b/Sankore-3.1/src/pdf-merger/Document.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #if !defined Document_h
 #define Document_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Exception.h b/Sankore-3.1/src/pdf-merger/Exception.h
index 03e83f9..b2f6990 100644
--- a/Sankore-3.1/src/pdf-merger/Exception.h
+++ b/Sankore-3.1/src/pdf-merger/Exception.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef EXCEPTION_H
 #define EXCEPTION_H
 
diff --git a/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h b/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h
index 8077c3e..d1ac8ad 100644
--- a/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h
+++ b/Sankore-3.1/src/pdf-merger/FileIsAbsentException.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined FileIsAbsentException_h
 #define FileIsAbsentException_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Filter.cpp b/Sankore-3.1/src/pdf-merger/Filter.cpp
index f768783..5988125 100644
--- a/Sankore-3.1/src/pdf-merger/Filter.cpp
+++ b/Sankore-3.1/src/pdf-merger/Filter.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "Filter.h"
 #include "Object.h"
 #include "Decoder.h"
diff --git a/Sankore-3.1/src/pdf-merger/Filter.h b/Sankore-3.1/src/pdf-merger/Filter.h
index 6753b79..d2e18e6 100644
--- a/Sankore-3.1/src/pdf-merger/Filter.h
+++ b/Sankore-3.1/src/pdf-merger/Filter.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined Filter_h
 #define Filter_h
 
diff --git a/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp b/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp
index 5e21f74..2bb063f 100644
--- a/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp
+++ b/Sankore-3.1/src/pdf-merger/FilterPredictor.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "Config.h"
 #include <iostream>
 #include <map>
diff --git a/Sankore-3.1/src/pdf-merger/FilterPredictor.h b/Sankore-3.1/src/pdf-merger/FilterPredictor.h
index f201fc5..9daddc3 100644
--- a/Sankore-3.1/src/pdf-merger/FilterPredictor.h
+++ b/Sankore-3.1/src/pdf-merger/FilterPredictor.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef FILTER_PREDICTOR_H
 #define FILTER_PREDICTOR_H
 
diff --git a/Sankore-3.1/src/pdf-merger/FlateDecode.cpp b/Sankore-3.1/src/pdf-merger/FlateDecode.cpp
index 8d128b4..83c98bd 100644
--- a/Sankore-3.1/src/pdf-merger/FlateDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/FlateDecode.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <iostream>
 
 #include "FlateDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/FlateDecode.h b/Sankore-3.1/src/pdf-merger/FlateDecode.h
index d91f239..3f063fd 100644
--- a/Sankore-3.1/src/pdf-merger/FlateDecode.h
+++ b/Sankore-3.1/src/pdf-merger/FlateDecode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef FLATEDECODE_H_INCLUDED
 #define FLATEDECODE_H_INCLUDED
 
diff --git a/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp b/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp
index f6e601d..c8111e8 100644
--- a/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp
+++ b/Sankore-3.1/src/pdf-merger/JBIG2Decode.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGlobal>
 #include "JBIG2Decode.h"
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/JBIG2Decode.h b/Sankore-3.1/src/pdf-merger/JBIG2Decode.h
index 4b7e7cb..559e607 100644
--- a/Sankore-3.1/src/pdf-merger/JBIG2Decode.h
+++ b/Sankore-3.1/src/pdf-merger/JBIG2Decode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef JBIG2Decode_H
 #define JBIG2Decode_H 
 
diff --git a/Sankore-3.1/src/pdf-merger/LZWDecode.cpp b/Sankore-3.1/src/pdf-merger/LZWDecode.cpp
index 3b2374a..cdb632a 100644
--- a/Sankore-3.1/src/pdf-merger/LZWDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/LZWDecode.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <iostream>
 #include <QtGlobal>
 #include "LZWDecode.h"
diff --git a/Sankore-3.1/src/pdf-merger/LZWDecode.h b/Sankore-3.1/src/pdf-merger/LZWDecode.h
index 6d3d3cf..4acccf9 100644
--- a/Sankore-3.1/src/pdf-merger/LZWDecode.h
+++ b/Sankore-3.1/src/pdf-merger/LZWDecode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef LZWDecode_H
 #define LZWDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h b/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h
index 5157fe4..f33afe3 100644
--- a/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/MediaBoxElementHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined MediaBoxElementHandler_h
 #define MediaBoxElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/MergePageDescription.h b/Sankore-3.1/src/pdf-merger/MergePageDescription.h
index 73610ea..1077b9f 100644
--- a/Sankore-3.1/src/pdf-merger/MergePageDescription.h
+++ b/Sankore-3.1/src/pdf-merger/MergePageDescription.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined MergePageDescription_h
 #define MergePageDescription_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Merger.cpp b/Sankore-3.1/src/pdf-merger/Merger.cpp
index bea5e2c..da75919 100644
--- a/Sankore-3.1/src/pdf-merger/Merger.cpp
+++ b/Sankore-3.1/src/pdf-merger/Merger.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "Merger.h"
 #include "Parser.h"
 #include "OverlayDocumentParser.h"
diff --git a/Sankore-3.1/src/pdf-merger/Merger.h b/Sankore-3.1/src/pdf-merger/Merger.h
index eaa3cc9..99c2673 100644
--- a/Sankore-3.1/src/pdf-merger/Merger.h
+++ b/Sankore-3.1/src/pdf-merger/Merger.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #if !defined Merger_h
 #define Merger_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Object.cpp b/Sankore-3.1/src/pdf-merger/Object.cpp
index b565ae2..341c310 100644
--- a/Sankore-3.1/src/pdf-merger/Object.cpp
+++ b/Sankore-3.1/src/pdf-merger/Object.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "Object.h"
 #include "Parser.h"
 #include "Exception.h"
diff --git a/Sankore-3.1/src/pdf-merger/Object.h b/Sankore-3.1/src/pdf-merger/Object.h
index 982d373..9688e93 100644
--- a/Sankore-3.1/src/pdf-merger/Object.h
+++ b/Sankore-3.1/src/pdf-merger/Object.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined Object_h
 #define Object_h
 
diff --git a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp
index 91bf429..f24f43d 100644
--- a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp
+++ b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "OverlayDocumentParser.h"
 #include <fstream>
 #include <string.h>
diff --git a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h
index d2fa7ae..cb7b160 100644
--- a/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h
+++ b/Sankore-3.1/src/pdf-merger/OverlayDocumentParser.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined OverlayDocumentParser_h
 #define OverlayDocumentParser_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Page.cpp b/Sankore-3.1/src/pdf-merger/Page.cpp
index f91e761..52cfb5b 100644
--- a/Sankore-3.1/src/pdf-merger/Page.cpp
+++ b/Sankore-3.1/src/pdf-merger/Page.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "Page.h"
 #include "Document.h"
 
diff --git a/Sankore-3.1/src/pdf-merger/Page.h b/Sankore-3.1/src/pdf-merger/Page.h
index e83269a..3f28407 100644
--- a/Sankore-3.1/src/pdf-merger/Page.h
+++ b/Sankore-3.1/src/pdf-merger/Page.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #if !defined Page_h
 #define Page_h
 
diff --git a/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp b/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp
index b14a1b2..43d3125 100644
--- a/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/PageElementHandler.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "PageElementHandler.h"
 #include <QtGlobal>
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/PageElementHandler.h b/Sankore-3.1/src/pdf-merger/PageElementHandler.h
index 4bec959..dedc8b7 100644
--- a/Sankore-3.1/src/pdf-merger/PageElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/PageElementHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined PageElementHandler_h
 #define PageElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/PageParser.h b/Sankore-3.1/src/pdf-merger/PageParser.h
index bffd1bd..fb83bbe 100644
--- a/Sankore-3.1/src/pdf-merger/PageParser.h
+++ b/Sankore-3.1/src/pdf-merger/PageParser.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #if !defined(EA_FF53E894_11D7_4c64_A409_DBC97C9EF3CF__INCLUDED_)
 #define EA_FF53E894_11D7_4c64_A409_DBC97C9EF3CF__INCLUDED_
 
diff --git a/Sankore-3.1/src/pdf-merger/Parser.cpp b/Sankore-3.1/src/pdf-merger/Parser.cpp
index 44c68b1..8febbf7 100644
--- a/Sankore-3.1/src/pdf-merger/Parser.cpp
+++ b/Sankore-3.1/src/pdf-merger/Parser.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGlobal>
 #include <fstream>
 #include <iostream>
diff --git a/Sankore-3.1/src/pdf-merger/Parser.h b/Sankore-3.1/src/pdf-merger/Parser.h
index e68620e..7d53bb5 100644
--- a/Sankore-3.1/src/pdf-merger/Parser.h
+++ b/Sankore-3.1/src/pdf-merger/Parser.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined Parser_h
 #define Parser_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Rectangle.cpp b/Sankore-3.1/src/pdf-merger/Rectangle.cpp
index 91ee22d..bfc1cd0 100644
--- a/Sankore-3.1/src/pdf-merger/Rectangle.cpp
+++ b/Sankore-3.1/src/pdf-merger/Rectangle.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "Rectangle.h"
 #include "Utils.h"
 #include "Object.h"
diff --git a/Sankore-3.1/src/pdf-merger/Rectangle.h b/Sankore-3.1/src/pdf-merger/Rectangle.h
index 8941333..1de9955 100644
--- a/Sankore-3.1/src/pdf-merger/Rectangle.h
+++ b/Sankore-3.1/src/pdf-merger/Rectangle.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined Rectangle_h
 #define Rectangle_h
 
diff --git a/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h b/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h
index aae4583..4aa6482 100644
--- a/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h
+++ b/Sankore-3.1/src/pdf-merger/RemoveHimSelfHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined RemoveHimselfHandler_h
 #define RemoveHimselfHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp b/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp
index ae808f9..47da6f5 100644
--- a/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp
+++ b/Sankore-3.1/src/pdf-merger/RemoveHimselfHandler.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include "RemoveHimSelfHandler.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/RotationHandler.h b/Sankore-3.1/src/pdf-merger/RotationHandler.h
index 7b06ae0..152d1b4 100644
--- a/Sankore-3.1/src/pdf-merger/RotationHandler.h
+++ b/Sankore-3.1/src/pdf-merger/RotationHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined RotationHandler_h
 #define RotationHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp b/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp
index cf5e64c..92678d6 100644
--- a/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp
+++ b/Sankore-3.1/src/pdf-merger/RunLengthDecode.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "RunLengthDecode.h"
 #include <QtGlobal>
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/pdf-merger/RunLengthDecode.h b/Sankore-3.1/src/pdf-merger/RunLengthDecode.h
index a6af064..c62e5c7 100644
--- a/Sankore-3.1/src/pdf-merger/RunLengthDecode.h
+++ b/Sankore-3.1/src/pdf-merger/RunLengthDecode.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef RunLengthDecode_H
 #define RunLengthDecode_H
 
diff --git a/Sankore-3.1/src/pdf-merger/Transformation.h b/Sankore-3.1/src/pdf-merger/Transformation.h
index 1d0f6f3..ada0df3 100644
--- a/Sankore-3.1/src/pdf-merger/Transformation.h
+++ b/Sankore-3.1/src/pdf-merger/Transformation.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /*
 The file defines some classes for transformation of PDF content stream.
 */
diff --git a/Sankore-3.1/src/pdf-merger/TypeElementHandler.h b/Sankore-3.1/src/pdf-merger/TypeElementHandler.h
index de8d7fc..691f4a0 100644
--- a/Sankore-3.1/src/pdf-merger/TypeElementHandler.h
+++ b/Sankore-3.1/src/pdf-merger/TypeElementHandler.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined TypeElementHandler_h
 #define TypeElementHandler_h
 
diff --git a/Sankore-3.1/src/pdf-merger/Utils.cpp b/Sankore-3.1/src/pdf-merger/Utils.cpp
index 7f117af..783f24b 100644
--- a/Sankore-3.1/src/pdf-merger/Utils.cpp
+++ b/Sankore-3.1/src/pdf-merger/Utils.cpp
@@ -1,19 +1,27 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGlobal>
+#include <QString>
 #include "Config.h"
 #include "Utils.h"
 #include "Exception.h"
@@ -65,18 +73,12 @@ double Utils::stringToDouble(const std::string & s )
 
 std::string Utils::uIntToStr(unsigned int integer)
 {
-   char str[10];
-   snprintf(str, sizeof(str), "%u", integer);
-   return std::string(str);
-
+    return std::string(QString::number(integer).toAscii());
 }
 
 std::string Utils::doubleToStr(double doubleValue)
 {
-   char str[16];
-   snprintf(str, sizeof(str), "%f", doubleValue);
-   return std::string(str);
-
+    return std::string(QString::number(doubleValue).toAscii());
 }
 
 int Utils::_stringToInt(const std::string & str) //throw ConvertException
diff --git a/Sankore-3.1/src/pdf-merger/Utils.h b/Sankore-3.1/src/pdf-merger/Utils.h
index 69db7f6..335ef01 100644
--- a/Sankore-3.1/src/pdf-merger/Utils.h
+++ b/Sankore-3.1/src/pdf-merger/Utils.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #if !defined Utils_h
 #define Utils_h
 
diff --git a/Sankore-3.1/src/pdf-merger/doc/PDF Merge Library Description.doc b/Sankore-3.1/src/pdf-merger/doc/PDF Merge Library Description.doc
deleted file mode 100644
index ab3f831..0000000
Binary files a/Sankore-3.1/src/pdf-merger/doc/PDF Merge Library Description.doc and /dev/null differ
diff --git a/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp b/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp
index ddea2df..f461e0e 100644
--- a/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp
+++ b/Sankore-3.1/src/pdf/GraphicsPDFItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "GraphicsPDFItem.h"
 
 #include <qglobal.h>
diff --git a/Sankore-3.1/src/pdf/GraphicsPDFItem.h b/Sankore-3.1/src/pdf/GraphicsPDFItem.h
index 90bcbc1..ccf4e95 100644
--- a/Sankore-3.1/src/pdf/GraphicsPDFItem.h
+++ b/Sankore-3.1/src/pdf/GraphicsPDFItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef GRAPHICSPDFITEM_H
 #define GRAPHICSPDFITEM_H
 
diff --git a/Sankore-3.1/src/pdf/PDFRenderer.cpp b/Sankore-3.1/src/pdf/PDFRenderer.cpp
index 9599941..fee6e85 100644
--- a/Sankore-3.1/src/pdf/PDFRenderer.cpp
+++ b/Sankore-3.1/src/pdf/PDFRenderer.cpp
@@ -1,26 +1,35 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QFile>
 
 #include "PDFRenderer.h"
 
 #include "XPDFRenderer.h"
 
+#include "core/UBApplication.h"
 #include "core/memcheck.h"
 
+
 QMap< QUuid, QPointer<PDFRenderer> > PDFRenderer::sRenderers;
 
 PDFRenderer::PDFRenderer() : dpiForRendering(96)
@@ -52,6 +61,10 @@ PDFRenderer* PDFRenderer::rendererForUuid(const QUuid &uuid, const QString &file
 
         sRenderers.insert(newRenderer->fileUuid(), newRenderer);
 
+        QDesktopWidget* desktop = UBApplication::desktop();
+        int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
+        newRenderer->setDPI(dpiCommon);
+
         return newRenderer;
     }
 }
diff --git a/Sankore-3.1/src/pdf/PDFRenderer.h b/Sankore-3.1/src/pdf/PDFRenderer.h
index 62fdfac..3147e7b 100644
--- a/Sankore-3.1/src/pdf/PDFRenderer.h
+++ b/Sankore-3.1/src/pdf/PDFRenderer.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef PDFRENDERER_H
 #define PDFRENDERER_H
 
diff --git a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp
index 2f26872..ca43b6d 100644
--- a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp
+++ b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 
 #include "UBWebPluginPDFWidget.h"
diff --git a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h
index ee87aea..5680cb2 100644
--- a/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h
+++ b/Sankore-3.1/src/pdf/UBWebPluginPDFWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBPLUGINPDFWIDGET_H
 #define UBWEBPLUGINPDFWIDGET_H
 
diff --git a/Sankore-3.1/src/pdf/XPDFRenderer.cpp b/Sankore-3.1/src/pdf/XPDFRenderer.cpp
index 6b62df1..69ce392 100644
--- a/Sankore-3.1/src/pdf/XPDFRenderer.cpp
+++ b/Sankore-3.1/src/pdf/XPDFRenderer.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "XPDFRenderer.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/pdf/XPDFRenderer.h b/Sankore-3.1/src/pdf/XPDFRenderer.h
index 3b6d48c..c5f0a81 100644
--- a/Sankore-3.1/src/pdf/XPDFRenderer.h
+++ b/Sankore-3.1/src/pdf/XPDFRenderer.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef XPDFRENDERER_H
 #define XPDFRENDERER_H
 #include <QImage>
diff --git a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp
index 2d6fc78..ffe5ec8 100644
--- a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp
+++ b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBAbstractVideoEncoder.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h
index 9c7cb00..c0b290e 100644
--- a/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h
+++ b/Sankore-3.1/src/podcast/UBAbstractVideoEncoder.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBABSTRACTVIDEOENCODER_H_
 #define UBABSTRACTVIDEOENCODER_H_
 
diff --git a/Sankore-3.1/src/podcast/UBPodcastController.cpp b/Sankore-3.1/src/podcast/UBPodcastController.cpp
index 8de3175..b7a8521 100644
--- a/Sankore-3.1/src/podcast/UBPodcastController.cpp
+++ b/Sankore-3.1/src/podcast/UBPodcastController.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPodcastController.h"
 
 #include "frameworks/UBFileSystemUtils.h"
diff --git a/Sankore-3.1/src/podcast/UBPodcastController.h b/Sankore-3.1/src/podcast/UBPodcastController.h
index 42a93d1..cb255c4 100644
--- a/Sankore-3.1/src/podcast/UBPodcastController.h
+++ b/Sankore-3.1/src/podcast/UBPodcastController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBPODCASTCONTROLLER_H_
 #define UBPODCASTCONTROLLER_H_
 
diff --git a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp
index aae016c..45cff6d 100644
--- a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp
+++ b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBPodcastRecordingPalette.h"
 
 #include "UBPodcastController.h"
diff --git a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h
index 0dc2368..225a894 100644
--- a/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h
+++ b/Sankore-3.1/src/podcast/UBPodcastRecordingPalette.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBPODCASTRECORDINGPALETTE_H_
 #define UBPODCASTRECORDINGPALETTE_H_
 
diff --git a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp
index 2a44a1d..60e1c8e 100644
--- a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp
+++ b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBIntranetPodcastPublisher.h"
 
 #include "frameworks/UBPlatformUtils.h"
diff --git a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h
index 67ad4fd..2842a43 100644
--- a/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h
+++ b/Sankore-3.1/src/podcast/intranet/UBIntranetPodcastPublisher.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBUNILPUBLISHER_H_
 #define UBUNILPUBLISHER_H_
 
diff --git a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp
index 388a9a7..408f557 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp
+++ b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBAudioQueueRecorder.h"
 
 #include "core/memcheck.h"
@@ -139,7 +146,7 @@ QString UBAudioQueueRecorder::deviceUIDFromDeviceID(AudioDeviceID id)
     {
         char *cname = new char[1024];
 
-        bool result = CFStringGetCString (name, cname, 1024, kCFStringEncodingASCII);
+        CFStringGetCString (name, cname, 1024, kCFStringEncodingASCII);
         int length = CFStringGetLength (name);
 
         uid = QString::fromAscii(cname, length);
@@ -162,14 +169,10 @@ QString UBAudioQueueRecorder::deviceNameFromDeviceID(AudioDeviceID id)
 
     if (noErr == AudioDeviceGetProperty(id, 0, true, kAudioObjectPropertyName, &size, &name))
     {
-        char *cname = new char[1024];
-
-        bool result = CFStringGetCString (name, cname, 1024, kCFStringEncodingUTF8);
-        int length = CFStringGetLength (name);
-
-        deviceName = QString::fromUtf8(cname, length);
-
-        delete cname;
+        char cname[1024];
+        memset(cname,0,1024);
+        CFStringGetCString (name, cname, 1024, kCFStringEncodingUTF8);
+        deviceName = QString::fromUtf8(cname);
     }
 
     CFRelease(name);
diff --git a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h
index d498839..c4abcb3 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h
+++ b/Sankore-3.1/src/podcast/quicktime/UBAudioQueueRecorder.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBAUDIOQUEUERECORDER_H_
 #define UBAUDIOQUEUERECORDER_H_
 
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp
index 0feae38..84d00df 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.cpp
@@ -1,19 +1,24 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
- 
- 
+
 
 #include "UBQuickTimeFile.h"
 
@@ -151,7 +156,7 @@ bool UBQuickTimeFile::createCompressionSession()
     }
 
     OSStatus err = noErr;
-    ICMEncodedFrameOutputRecord encodedFrameOutputRecord = {0};
+    ICMEncodedFrameOutputRecord encodedFrameOutputRecord = {NULL, NULL, NULL};
     ICMCompressionSessionOptionsRef sessionOptions = 0;
 
     err = ICMCompressionSessionOptionsCreate(0, &sessionOptions);
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h
index ccc0fe5..2d5e6b4 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeFile.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBQUICKTIMEFILE_H_
 #define UBQUICKTIMEFILE_H_
 
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp
index 2ae6b90..f79dae3 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBQuickTimeVideoEncoder.h"
 
 #include <QuickTime/QuickTime.h>
diff --git a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h
index 4c585ee..e5ab005 100644
--- a/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h
+++ b/Sankore-3.1/src/podcast/quicktime/UBQuickTimeVideoEncoder.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBQUICKTIMEVIDEOENCODER_H_
 #define UBQUICKTIMEVIDEOENCODER_H_
 
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp
index 848239d..6f851c7 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWaveRecorder.h"
 
 #include "Mmsystem.h"
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h
index 928d149..c21c0cc 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWaveRecorder.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWAVERECORDER_H_
 #define UBWAVERECORDER_H_
 
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp
index 5e68106..5b52981 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWindowsMediaFile.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h
index aee6395..5a5cbe6 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaFile.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWINDOWSMEDIAFILE_H_
 #define UBWINDOWSMEDIAFILE_H_
 
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp
index 1d2d773..52bb7f1 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWindowsMediaVideoEncoder.h"
 
 #include <QtGui>
diff --git a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h
index 4315762..fc0a19a 100644
--- a/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h
+++ b/Sankore-3.1/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWINDOWSMEDIAVIDEOENCODER_H_
 #define UBWINDOWSMEDIAVIDEOENCODER_H_
 
diff --git a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp
index ebd6fb6..58283d7 100644
--- a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp
+++ b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBYouTubePublisher.h"
 
 
@@ -56,7 +63,7 @@ void UBYouTubePublisher::uploadVideo(const QString& videoFilePath)
     UBYouTubePublishingDialog pub(videoFilePath, UBApplication::mainWindow);
 
     pub.title->setText(QFileInfo(mVideoFilePath).completeBaseName());
-    pub.keywords->setText("Uniboard");
+    pub.keywords->setText(tr("Open-Sankore"));
 
     QString defaultEMail = UBSettings::settings()->youTubeUserEMail->get().toString();
     pub.email->setText(defaultEMail);
@@ -94,16 +101,16 @@ void UBYouTubePublisher::postClientLoginRequest(const QString& userName, const Q
     QUrl url("https://www.google.com/youtube/accounts/ClientLogin");
 
     mAuthRequest = new UBServerXMLHttpRequest(UBNetworkAccessManager::defaultAccessManager()
-        , "application/x-www-form-urlencoded"); // destroyed in postClientLoginResponse
+                                              , "application/x-www-form-urlencoded"); // destroyed in postClientLoginResponse
 
     connect(mAuthRequest, SIGNAL(finished(bool, const QByteArray&)), this, SLOT(postClientLoginResponse(bool, const QByteArray&)));
 
     mAuthRequest->addHeader("X-GData-Key", sYouTubeDeveloperKey);
 
     QString payload = QString("Email=%1&Passwd=%2&service=youtube&source=%3")
-        .arg(userName)
-        .arg(password)
-        .arg("Uniboard");
+            .arg(userName)
+            .arg(password)
+            .arg(tr("OpenSankore"));
 
     mAuthRequest->post(url, payload.toUtf8());
 
@@ -125,8 +132,8 @@ void UBYouTubePublisher::postClientLoginResponse(bool success, const QByteArray&
         {
             if(line.startsWith("Auth="))
             {
-               mAuthToken = line.replace("Auth=", "");
-               break;
+                mAuthToken = line.replace("Auth=", "");
+                break;
             }
         }
     }
@@ -137,7 +144,7 @@ void UBYouTubePublisher::postClientLoginResponse(bool success, const QByteArray&
     if(mAuthToken.length() == 0)
     {
         UBApplication::showMessage(tr("YouTube authentication failed."));
-//        success = false;
+        //        success = false;
         deleteLater();
     }
     else
@@ -188,7 +195,7 @@ void UBYouTubePublisher::postVideoUploadRequest()
     QString contentType = QString("multipart/related; boundary=\"%1\"").arg(boundary);
 
     mUploadRequest = new UBServerXMLHttpRequest(UBNetworkAccessManager::defaultAccessManager()
-        , contentType); // destroyed in postVideoUploadResponse
+                                                , contentType); // destroyed in postVideoUploadResponse
 
     mUploadRequest->setVerbose(true);
     connect(mUploadRequest, SIGNAL(progress(qint64, qint64)), this,  SLOT(progress(qint64, qint64)));
@@ -206,15 +213,15 @@ void UBYouTubePublisher::postVideoUploadRequest()
     QByteArray payload;
 
     payload.append(QString("\n--" + boundary + "\n").toUtf8())
-        .append(QString("Content-Type: application/atom+xml; charset=UTF-8\n\n").toUtf8())
-        .append(youtubeMetadata().toUtf8());
+            .append(QString("Content-Type: application/atom+xml; charset=UTF-8\n\n").toUtf8())
+            .append(youtubeMetadata().toUtf8());
 
     payload.append(QString("\n--" + boundary + "\n").toUtf8());
 
     QString videoMimeType = UBFileSystemUtils::mimeTypeFromFileName(mVideoFilePath);
 
     payload.append((QString("Content-Type: %1\n").arg(videoMimeType)).toUtf8())
-        .append(QString("Content-Transfer-Encoding: binary\n\n").toUtf8());
+            .append(QString("Content-Transfer-Encoding: binary\n\n").toUtf8());
 
     payload.append(videoFile.readAll());
 
@@ -270,7 +277,7 @@ QString UBYouTubePublisher::youtubeMetadata()
         workingDescription = workingDescription.left(4900) + "...";
     }
 
-    workingDescription += "\n\nhttp://www.getuniboard.com";
+    workingDescription += "\n\nhttp://www.open-sankore.org";
 
     if(workingDescription.length() == 0)
     {
@@ -335,23 +342,45 @@ UBYouTubePublishingDialog::UBYouTubePublishingDialog(const QString& videoFilePat
 
     connect(email, SIGNAL(textChanged(const QString&)), this, SLOT(updateUIState(const QString&)));
     connect(password, SIGNAL(textChanged(const QString&)), this, SLOT(updateUIState(const QString&)));
+    connect(youtubeCredentialsPersistence,SIGNAL(clicked()), this, SLOT(updateCredentialPersistenceState()));
 
     dialogButtons->button(QDialogButtonBox::Ok)->setEnabled(false);
     dialogButtons->button(QDialogButtonBox::Ok)->setText(tr("Upload"));
 
+    UBSettings* settings = UBSettings::settings();
+
+    email->setText(settings->youTubeUserEMail->get().toString());
+    password->setText(settings->password(email->text()));
+
+    youtubeCredentialsPersistence->setChecked(UBSettings::settings()->youTubeCredentialsPersistence->get().toBool());
+    updatePersistanceEnableState();
+}
+
+
+void UBYouTubePublishingDialog::updateCredentialPersistenceState()
+{
+    UBSettings::settings()->youTubeCredentialsPersistence->set(QVariant(youtubeCredentialsPersistence->checkState()));
+}
+
+void UBYouTubePublishingDialog::updatePersistanceEnableState()
+{
+    bool enabled = email->text().length() || password->text().length();
+    youtubeCredentialsPersistence->setEnabled(enabled);
+    youtubeCredentialsPersistence->setStyleSheet(enabled ? "color:black;" : "color : lightgrey;");
 }
 
 void UBYouTubePublishingDialog::updateUIState(const QString& string)
 {
     Q_UNUSED(string);
 
-        bool ok = title->text().length() > 0
-                        &&  description->toPlainText().length() > 0
-                        &&  keywords->text().length() > 0
-                        &&  email->text().length() > 0
-                        &&  password->text().length() > 0;
+    bool ok = title->text().length() > 0
+            &&  description->toPlainText().length() > 0
+            &&  keywords->text().length() > 0
+            &&  email->text().length() > 0
+            &&  password->text().length() > 0;
 
     dialogButtons->button(QDialogButtonBox::Ok)->setEnabled(ok);
+    updatePersistanceEnableState();
 }
 
 
diff --git a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h
index b7bd32b..961d1c4 100644
--- a/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h
+++ b/Sankore-3.1/src/podcast/youtube/UBYouTubePublisher.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBYOUTUBEPUBLISHER_H_
 #define UBYOUTUBEPUBLISHER_H_
 
@@ -78,9 +85,11 @@ class UBYouTubePublishingDialog : public QDialog, public Ui::YouTubePublishingDi
 
     private:
         QMap<QString, QString> categories();
+        void updatePersistanceEnableState();
 
     private slots:
         void updateUIState(const QString& = QString(""));
+        void updateCredentialPersistenceState();
 
 };
 
diff --git a/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp b/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp
index 385e55c..d08f15e 100644
--- a/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp
+++ b/Sankore-3.1/src/tools/UBAbstractDrawRuler.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBAbstractDrawRuler.h"
 #include <QtSvg>
 #include "core/UB.h"
@@ -47,7 +54,7 @@ UBAbstractDrawRuler::UBAbstractDrawRuler()
 	//we actually need to evaluate pixels per millimeter
 	QDesktopWidget* desktop = UBApplication::desktop();
 	int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
-	sPixelsPerMillimeter = qRound(dpiCommon / 25.4f);//because 1inch = 25.4 mm
+    sPixelsPerMillimeter = qRound(dpiCommon / UBGeometryUtils::inchSize);
 
 }
 
diff --git a/Sankore-3.1/src/tools/UBAbstractDrawRuler.h b/Sankore-3.1/src/tools/UBAbstractDrawRuler.h
index 0e632ef..c6cf879 100644
--- a/Sankore-3.1/src/tools/UBAbstractDrawRuler.h
+++ b/Sankore-3.1/src/tools/UBAbstractDrawRuler.h
@@ -1,21 +1,31 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UB_ABSTRACTDRAWRULER_H_
 #define UB_ABSTRACTDRAWRULER_H_
 
 #include <QtGui>
+#include "frameworks/UBGeometryUtils.h"
+
 class UBGraphicsScene;
 class QGraphicsSvgItem;
 
@@ -45,7 +55,8 @@ protected:
     virtual void rotateAroundCenter(qreal angle) = 0;
 
     virtual QPointF rotationCenter() const = 0;
-    virtual QRectF  closeButtonRect() const = 0;
+    virtual QRectF closeButtonRect() const = 0;
+    virtual void paintGraduations(QPainter *painter) = 0;
 
     bool mShowButtons;
     QGraphicsSvgItem* mCloseSvgItem;
diff --git a/Sankore-3.1/src/tools/UBGraphicsAristo.cpp b/Sankore-3.1/src/tools/UBGraphicsAristo.cpp
new file mode 100644
index 0000000..e7773d6
--- /dev/null
+++ b/Sankore-3.1/src/tools/UBGraphicsAristo.cpp
@@ -0,0 +1,851 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <QColor>
+#include <QFont>
+#include <QFontMetricsF>
+#include <QGraphicsItem>
+#include <QLineF>
+#include <QPolygonF>
+#include <QRadialGradient>
+#include <QString>
+
+#include "core/memcheck.h"
+
+const QRectF UBGraphicsAristo::sDefaultRect =  QRectF(0, 0, 800, 500);
+const UBGraphicsAristo::Orientation UBGraphicsAristo::sDefaultOrientation = UBGraphicsAristo::Top;
+
+UBGraphicsAristo::UBGraphicsAristo()
+    : UBAbstractDrawRuler()
+    , QGraphicsPathItem()
+    , mMarking(false)
+    , mResizing(false)
+    , mRotating(false)
+    , mOrientation(Undefined)
+    , mRotatedAngle(0)
+    , mMarkerAngle(0)
+    , mStartAngle(0)
+    , mSpan(180)
+    , mHFlipSvgItem(0)
+    , mMarkerSvgItem(0)
+    , mResizeSvgItem(0)
+    , mRotateSvgItem(0)
+{
+    mHFlipSvgItem = new QGraphicsSvgItem(":/images/vflipTool.svg", this);
+    mHFlipSvgItem->setVisible(false);
+    mHFlipSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+
+    mResizeSvgItem = new QGraphicsSvgItem(":/images/resizeTool.svg", this);
+    mResizeSvgItem->setVisible(false);
+    mResizeSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+
+    mRotateSvgItem = new QGraphicsSvgItem(":/images/rotateTool.svg", this);
+    mRotateSvgItem->setVisible(false);
+    mRotateSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
+
+    mMarkerSvgItem = new QGraphicsSvgItem(":/images/angleMarker.svg", this);
+    mMarkerSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool));
+    mMarkerSvgItem->setVisible(true);
+
+    create(*this);
+
+    setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::CppTool)); //Necessary to set if we want z value to be assigned correctly
+    setFlag(QGraphicsItem::ItemIsSelectable, false);
+
+    setOrientation(sDefaultOrientation);
+}
+
+UBGraphicsAristo::~UBGraphicsAristo()
+{
+    /* NOOP */
+}
+
+/*
+ * setOrientation() modify the tool orientation.
+ * Apexes coordinates are alors recomputed.
+ */
+void UBGraphicsAristo::setOrientation(Orientation orientation)
+{
+    /* substracting difference to zero [2pi] twice, to obtain the desired angle */
+    mMarkerAngle -= 2 * (mMarkerAngle - (int)(mMarkerAngle/360)*360) - 360;
+
+    bool wasUndefined = mOrientation == Undefined;
+    mOrientation = orientation;
+    
+    if (wasUndefined)
+        calculatePoints(sDefaultRect);
+    else
+        calculatePoints(boundingRect());
+}
+
+/* calculatePoints() is used to calculate polygon's apexes coordinates.
+ * This function handles orientation changes too.
+ * Items are repositionated and path is redeterminates.
+ */
+void UBGraphicsAristo::calculatePoints(QRectF bounds)
+{
+    switch (mOrientation) {
+    case Bottom:
+        C.setX(bounds.center().x());
+        C.setY(bounds.bottom());
+
+        A.setX(bounds.left());
+        A.setY(bounds.bottom() - bounds.width() / 2);
+
+        B.setX(bounds.right());
+        B.setY(bounds.bottom() - bounds.width() / 2);
+        break;
+    case Top:
+        C.setX(bounds.center().x());
+        C.setY(bounds.top());
+
+        A.setX(bounds.left());
+        A.setY(bounds.top() + bounds.width() / 2);
+
+        B.setX(bounds.right());
+        B.setY(bounds.top() + bounds.width() / 2);
+        break;
+    default:
+        break;
+    }
+
+    setItemsPos();
+    setPath(determinePath());
+}
+
+/*
+ * setItemsPos() places control items according to A, B and C positions.
+ * Call this function after A, B or C position modification, mostly after calling calculatePoints().
+ * These positions has to be set when calling setPath() to allow hover events on items which are not into the main polygon.
+ */
+void UBGraphicsAristo::setItemsPos()
+{
+    mCloseSvgItem->setPos(closeButtonRect().topLeft() + rotationCenter());
+    mHFlipSvgItem->setPos(hFlipRect().topLeft() + rotationCenter());
+    mRotateSvgItem->setPos(rotateRect().topLeft() + rotationCenter());
+    mResizeSvgItem->setPos(resizeButtonRect().topLeft() + rotationCenter()); 
+    mMarkerSvgItem->setPos(markerButtonRect().topLeft() + rotationCenter());
+}
+
+/*
+ * determinePath() modify the shape according to apexes coordinates and control item positions.
+ * This is useful when orientation is modified.
+ * Returns the painter path corresponding to object parameters.
+ */
+QPainterPath UBGraphicsAristo::determinePath()
+{
+    QPainterPath path;
+
+    QPolygonF polygon;
+    polygon << A << B << C;
+
+    qreal rotationAngle = mOrientation == Bottom ? mMarkerAngle : mMarkerAngle - 360 * (int)(mMarkerAngle / 360);
+    QTransform t;
+    t.rotate(rotationAngle);
+    bool markerIsInPolygon = true;
+    if ((mOrientation == Bottom && mMarkerAngle < 90) || (mOrientation == Top && mMarkerAngle < 270))
+        markerIsInPolygon = polygon.containsPoint(t.map(markerButtonRect().topLeft()) + rotationCenter(), Qt::OddEvenFill);
+    else
+        markerIsInPolygon = polygon.containsPoint(t.map(markerButtonRect().bottomLeft()) + rotationCenter(), Qt::OddEvenFill);
+
+    path.moveTo(A);
+
+    QRectF mappedRect = t.mapRect(markerButtonRect());
+    path.lineTo(QPointF(mappedRect.translated(rotationCenter()).left(), A.y()));
+    if (!markerIsInPolygon) {
+        if (mOrientation == Top) {
+            path.lineTo(QPointF(mappedRect.translated(rotationCenter()).left(), mappedRect.translated(rotationCenter()).bottom()));
+            path.lineTo(QPointF(mappedRect.translated(rotationCenter()).right(), mappedRect.translated(rotationCenter()).bottom()));
+        }
+        else if (mOrientation == Bottom) {
+            path.lineTo(QPointF(mappedRect.translated(rotationCenter()).left(), mappedRect.translated(rotationCenter()).top()));
+            path.lineTo(QPointF(mappedRect.translated(rotationCenter()).right(), mappedRect.translated(rotationCenter()).top()));
+        }
+    }
+    path.lineTo(QPointF(mappedRect.translated(rotationCenter()).right(), A.y()));
+
+    path.lineTo(QPointF(resizeButtonRect().translated(rotationCenter()).left(), A.y()));
+    if (mOrientation == Top) {
+        path.lineTo(QPointF(resizeButtonRect().translated(rotationCenter()).left(), resizeButtonRect().translated(rotationCenter()).bottom()));
+        path.lineTo(QPointF(resizeButtonRect().translated(rotationCenter()).right(), resizeButtonRect().translated(rotationCenter()).bottom()));
+    }
+    else if (mOrientation == Bottom) {
+        path.lineTo(QPointF(resizeButtonRect().translated(rotationCenter()).left(), resizeButtonRect().translated(rotationCenter()).top()));
+        path.lineTo(QPointF(resizeButtonRect().translated(rotationCenter()).right(), resizeButtonRect().translated(rotationCenter()).top()));
+    }
+    path.lineTo(QPointF(resizeButtonRect().translated(rotationCenter()).right(), A.y()));
+
+    path.lineTo(B);
+    path.lineTo(C);
+    path.lineTo(A);
+
+    return path;
+}
+
+UBItem* UBGraphicsAristo::deepCopy(void) const
+{
+    UBGraphicsAristo* copy = new UBGraphicsAristo();
+    copyItemParameters(copy);
+    return copy;
+}
+
+void UBGraphicsAristo::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsAristo* cp = dynamic_cast<UBGraphicsAristo*>(copy);
+    if (cp)
+    {   
+        /* TODO: copy all members */
+        cp->setPos(this->pos());
+        cp->setTransform(this->transform());
+        cp->setOrientation(mOrientation);
+        cp->mRotatedAngle = mRotatedAngle;
+        cp->mMarkerAngle = mMarkerAngle;
+    }
+}
+
+
+void UBGraphicsAristo::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+    QPolygonF polygon;
+
+    painter->setBrush(fillBrush());
+    painter->setPen(drawColor());
+
+    polygon << A << B << C;
+    painter->drawPolygon(polygon);
+    polygon.clear();
+
+    paintGraduations(painter);
+    paintMarker(painter);    
+}
+
+QBrush UBGraphicsAristo::fillBrush() const
+{
+    QColor fillColor = edgeFillColor();// scene()->isDarkBackground() ? sDarkBackgroundFillColor : sFillColor;
+    QColor fillColorCenter = middleFillColor();//scene()->isDarkBackground() ? sDarkBackgroundFillColorCenter : sFillColorCenter;
+    QColor transparentWhite = Qt::white;
+    transparentWhite.setAlpha(scene()->isDarkBackground() ? sDrawTransparency : sFillTransparency);
+    QRadialGradient radialGradient(boundingRect().center(), radius(), boundingRect().center());
+    radialGradient.setColorAt(0, fillColorCenter);
+    radialGradient.setColorAt(1, fillColor);
+    return radialGradient;
+}
+
+/* paintGraduations() paints graduations on the ruler side (length graduations) and the two other sides (angle graduation) */
+void UBGraphicsAristo::paintGraduations(QPainter *painter)
+{
+    paintRulerGraduations(painter);
+    paintProtractorGraduations(painter);
+}
+
+void UBGraphicsAristo::paintRulerGraduations(QPainter *painter)
+{
+    /* defining useful constants */
+    const int centimeterGraduationHeight = 15;
+    const int halfCentimeterGraduationHeight = 10;
+    const int millimeterGraduationHeight = 5;
+    const int millimetersPerCentimeter = 10;
+    const int millimetersPerHalfCentimeter = 5;
+
+    painter->save();
+    painter->setFont(font());
+    QFontMetricsF fontMetrics(painter->font());
+
+    /* Browsing milliters in half width of ruler side */
+    for (int millimeters = 0; millimeters < (boundingRect().width() / 2 - sLeftEdgeMargin - sRoundingRadius) / sPixelsPerMillimeter; millimeters++)
+    {
+        /* defining graduationHeight ; values are different to draw bigger lines if millimiter considered is a centimeter or a half centimeter */
+        int graduationHeight = (0 == millimeters % millimetersPerCentimeter) ?
+            centimeterGraduationHeight :
+            ((0 == millimeters % millimetersPerHalfCentimeter) ?
+                halfCentimeterGraduationHeight : millimeterGraduationHeight);
+
+        /* correcting graduationHeight: draw the line in the other direction in case ruler is top-oriented, to stay inside the tool and inside the rect */
+        graduationHeight = mOrientation == Bottom ? graduationHeight : - graduationHeight;
+        
+        /* drawing graduation to the left and to the right of origin, which is the center of graduated side */
+        painter->drawLine(QLine(rotationCenter().x() + sPixelsPerMillimeter * millimeters, rotationCenter().y(), rotationCenter().x() + sPixelsPerMillimeter * millimeters, rotationCenter().y() + graduationHeight));
+        if (millimeters != 0)
+            painter->drawLine(QLine(rotationCenter().x() - sPixelsPerMillimeter * millimeters, rotationCenter().y(), rotationCenter().x() - sPixelsPerMillimeter * millimeters, rotationCenter().y() + graduationHeight));
+
+        /* drawing associated value if considered graduation is a centimeter */
+        if (0 == millimeters % millimetersPerCentimeter)
+        {
+            /* defining graduation value */
+            QString text = QString("%1").arg((int)(millimeters / millimetersPerCentimeter));
+            
+            /* staying inside polygon */
+            if (rotationCenter().x() + sPixelsPerMillimeter * millimeters + fontMetrics.width(text) / 2 < boundingRect().right())
+            {
+                qreal textWidth = fontMetrics.width(text);
+                qreal textHeight = fontMetrics.tightBoundingRect(text).height() + 5;
+                
+                /* text y-coordinate is different according to tool's orientation */
+                qreal textY = mOrientation == Bottom ? A.y() + 5 + centimeterGraduationHeight : A.y() - 5 - centimeterGraduationHeight + graduationHeight;
+                
+                /* if text's rect is not out of polygon's bounds, drawing value below or above graduation */
+                QPointF intersectionPoint;
+                
+                bool paint = false;
+
+                if (mOrientation == Bottom && QLineF(QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters - textWidth / 2, rotationCenter().y()), QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters - textWidth / 2, textY + textHeight)).intersect(QLineF(A, C), &intersectionPoint) != QLineF::BoundedIntersection && QLineF(QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters + textWidth / 2, rotationCenter().y()), QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters + textWidth / 2, textY + textHeight)).intersect(QLineF(A, C), &intersectionPoint) != QLineF::BoundedIntersection) {
+                    paint = true;
+                }
+                else if (mOrientation == Top && QLineF(QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters - textWidth / 2, rotationCenter().y()), QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters - textWidth / 2, textY - textHeight)).intersect(QLineF(A, C), &intersectionPoint) != QLineF::BoundedIntersection && QLineF(QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters + textWidth / 2, rotationCenter().y()), QPointF(rotationCenter().x() - sPixelsPerMillimeter * millimeters + textWidth / 2, textY - textHeight)).intersect(QLineF(A, C), &intersectionPoint) != QLineF::BoundedIntersection) {
+                    paint = true;
+                }
+
+                if (paint) {
+                    painter->drawText(
+                        QRectF(rotationCenter().x() + sPixelsPerMillimeter * millimeters - textWidth / 2, textY, textWidth, textHeight),
+                        Qt::AlignVCenter, text);
+                    if (millimeters != 0)
+                        painter->drawText(
+                        QRectF(rotationCenter().x() - sPixelsPerMillimeter * millimeters - textWidth / 2, textY, textWidth, textHeight),
+                        Qt::AlignVCenter, text);
+                }
+            }
+        }
+    }
+    painter->restore();
+}
+
+void UBGraphicsAristo::paintProtractorGraduations(QPainter* painter)
+{
+    /* defining useful constants */
+    const int  tenDegreeGraduationLength = 15;
+    const int fiveDegreeGraduationLength = 10;
+    const int  oneDegreeGraduationLength = 5;
+
+    painter->save();
+
+    QFont font1 = painter->font();
+#ifdef Q_WS_MAC
+    font1.setPointSizeF(font1.pointSizeF() - 3);
+#endif
+    QFontMetricsF fm1(font1);
+
+    //Font for internal arc
+    QFont font2 = painter->font();
+    font2.setPointSizeF(font1.pointSizeF()/1.5);
+    QFontMetricsF fm2(font2);
+
+    /* defining virtual arc diameter */
+    qreal rad = radius();
+
+    QPointF center = rotationCenter();
+
+    /* browsing angles */
+    for (int angle = 1; angle < mSpan; angle++)
+    {
+        int graduationLength = (0 == angle % 10) ? tenDegreeGraduationLength : ((0 == angle % 5) ? fiveDegreeGraduationLength : oneDegreeGraduationLength);
+        
+        qreal co = cos(((qreal)angle + mStartAngle) * PI/180);
+        qreal si = sin(((qreal)angle + mStartAngle) * PI/180);
+
+        /* inverse sinus according to the orientation, to draw graduations on the polygon */
+        si = mOrientation == Bottom ? -si : si;
+
+        /* drawing the graduation around the virtual arc */
+        if (angle >= sArcAngleMargin && angle <= mSpan - sArcAngleMargin)
+            painter->drawLine(QLineF(QPointF(center.x()+ rad/2*co, center.y() - rad/2*si),
+                                    QPointF(center.x()+ (rad/2 + graduationLength)*co,
+                                            center.y() - (rad/2 + graduationLength)*si)));
+
+
+        QPointF intersectionPoint;
+        QLineF referenceLine;
+        if (angle < 90)
+            referenceLine.setP1(B);
+        else
+            referenceLine.setP1(A);
+        referenceLine.setP2(C);
+
+        /* if angle is 10-multiple, drawing it's value, rotated to be easily red */
+        if (0 == angle % 10) {
+            QString grad = QString("%1").arg((int)(angle));
+            QString grad2 = QString("%1").arg((int)mSpan - angle);
+
+            painter->setFont(font2);
+
+            painter->save();
+            painter->translate(center.x() + (rad/2 + graduationLength*1.5)*co, center.y() - (rad/2 + graduationLength*1.5)*si);
+            int degrees = mOrientation == Bottom ? angle : -angle;
+            painter->rotate(-90 + degrees);
+            painter->drawText(- fm2.width(grad)/2, - fm2.height()/2, fm2.width(grad), fm2.height(), Qt::AlignCenter, grad);
+            painter->restore();
+
+            painter->setFont(font1);
+
+            
+            /* drawing the graduation near tool's side */
+            if (QLineF(QPointF(center.x()+ rad/2*co, center.y() - rad/2*si),
+                                     QPointF(center.x()+ (rad/2 + graduationLength)*co,
+                                             center.y() - (rad/2 + graduationLength)*si)).intersect(referenceLine, &intersectionPoint) == QLineF::UnboundedIntersection)
+
+                painter->drawLine(QLineF(QPointF(center.x() + (rad/2 + graduationLength*1.5 + fm2.width(grad)/2)*co,
+                                                 center.y() - (rad/2 + graduationLength*1.5 + fm2.height()/2)*si),
+                                        intersectionPoint));
+
+        }
+
+        /* drawing the graduation near tool's side */
+        else
+            if (QLineF(QPointF(center.x()+ rad/2*co, center.y() - rad/2*si),
+                                     QPointF(center.x()+ (rad/2 + graduationLength)*co,
+                                             center.y() - (rad/2 + graduationLength)*si)).intersect(referenceLine, &intersectionPoint) == QLineF::UnboundedIntersection)
+
+                painter->drawLine(QLineF(QPointF(intersectionPoint.x() - (graduationLength*1.5)*co,
+                                                 intersectionPoint.y() + (graduationLength*1.5)*si),
+                                        intersectionPoint));
+    }
+
+    painter->restore();
+}
+
+/* paintMarker() adjust marker button according to the current angle, draw the line allowing user to set precisely the angle, and draw the current angle's value. */
+void UBGraphicsAristo::paintMarker(QPainter *painter)
+{
+    /* adjusting marker button */
+    mMarkerSvgItem->resetTransform();
+    mMarkerSvgItem->translate(-markerButtonRect().left(), -markerButtonRect().top());
+    mMarkerSvgItem->rotate(mMarkerAngle);
+    mMarkerSvgItem->translate(markerButtonRect().left(), markerButtonRect().top());
+
+    
+    qreal co = cos((mMarkerAngle) * PI/180);
+    qreal si = sin((mMarkerAngle) * PI/180);
+
+    /* Setting point composing the line (from point C) which intersects the line we want to draw. */
+    QPointF referencePoint;
+    if (mOrientation == Bottom) {
+        if ((int)mMarkerAngle % 360 < 90)
+            referencePoint = B;
+        else
+            referencePoint = A;
+    }
+    else if (mOrientation == Top) {
+        if ((int)mMarkerAngle % 360 < 270 && (int)mMarkerAngle % 360 > 0)
+            referencePoint = A;
+        else
+            referencePoint = B;
+    }
+    
+    /* getting intersection point to draw the wanted line */
+    QLineF intersectedLine(rotationCenter(), QPointF(rotationCenter().x()+co, rotationCenter().y()+si)); 
+    QPointF intersectionPoint;
+    if (intersectedLine.intersect(QLineF(referencePoint, C), &intersectionPoint))
+        painter->drawLine(QLineF(intersectionPoint, rotationCenter()));
+
+    /* drawing angle value */
+    qreal rightAngle = mOrientation == Bottom ? mMarkerAngle : 360 - mMarkerAngle;
+
+
+    QString angleText = QString("%1°").arg(rightAngle, 0, 'f', 1);
+
+    QFont font1 = painter->font();
+#ifdef Q_WS_MAC
+    font1.setPointSizeF(font1.pointSizeF() - 3);
+#endif
+    QFontMetricsF fm1(font1);
+
+    if (mOrientation == Bottom)
+        painter->drawText(rotationCenter().x() - fm1.width(angleText)/2 - radius()/8, rotationCenter().y() + radius()/8 - fm1.height()/2, fm1.width(angleText), fm1.height(), Qt::AlignCenter, angleText);
+    else
+        painter->drawText(rotationCenter().x() - fm1.width(angleText)/2 - radius()/8, rotationCenter().y() - radius()/8 - fm1.height()/2, fm1.width(angleText), fm1.height(), Qt::AlignCenter, angleText);
+}
+
+
+void UBGraphicsAristo::rotateAroundCenter(qreal angle)
+{
+    qreal oldAngle = mRotatedAngle;
+    mRotatedAngle = angle;
+    QTransform transform;
+    rotateAroundCenter(transform, rotationCenter());
+    setTransform(transform, true);
+    mRotatedAngle = oldAngle + angle; // We have to store absolute value for FLIP case
+}
+
+void UBGraphicsAristo::rotateAroundCenter(QTransform& transform, QPointF center)
+{
+    transform.translate(center.x(), center.y());
+    transform.rotate(mRotatedAngle);
+    transform.translate(- center.x(), - center.y());
+}
+
+void UBGraphicsAristo::resize(qreal factor)
+{
+    prepareGeometryChange();
+    translate(rotationCenter().x(), rotationCenter().y());
+    scale(factor, factor);
+    translate(-rotationCenter().x(), -rotationCenter().y());
+}
+
+
+QPointF UBGraphicsAristo::rotationCenter() const
+{
+    return QPointF((A.x() + B.x()) / 2, (A.y() + B.y()) / 2);
+}
+
+QRectF UBGraphicsAristo::closeButtonRect() const
+{
+    qreal y = radius() / 4 + hFlipRect().height() + 3 + rotateRect().height() + 3;
+    if (mOrientation == Top)
+        y = -y;
+    return QRectF(- mCloseSvgItem->boundingRect().width() / 2, y, mCloseSvgItem->boundingRect().width(), mCloseSvgItem->boundingRect().height());
+}
+
+QRectF UBGraphicsAristo::hFlipRect() const
+{
+    qreal y = radius() / 4;
+    if (mOrientation == Top)
+        y = -y;
+
+     return QRectF(- mHFlipSvgItem->boundingRect().width() / 2, y, mHFlipSvgItem->boundingRect().width(), mHFlipSvgItem->boundingRect().height());
+}
+
+QRectF UBGraphicsAristo::markerButtonRect() const
+{
+    qreal y = - mMarkerSvgItem->boundingRect().height()/2;
+    return QRectF (radius()/2 - mMarkerSvgItem->boundingRect().width(), y, mMarkerSvgItem->boundingRect().width(), mMarkerSvgItem->boundingRect().height());
+}
+
+QRectF  UBGraphicsAristo::resizeButtonRect() const
+{
+    return QRectF((B - rotationCenter()).x() - 100 - mResizeSvgItem->boundingRect().width()/2, - mResizeSvgItem->boundingRect().height()/2, mResizeSvgItem->boundingRect().width(), mResizeSvgItem->boundingRect().height());   
+}
+
+QRectF UBGraphicsAristo::rotateRect() const
+{
+    qreal y = radius() / 4 + hFlipRect().height() + 3;
+    if (mOrientation == Top)
+        y = -y;
+    return QRectF(- mRotateSvgItem->boundingRect().width() / 2, y, mRotateSvgItem->boundingRect().width(), mRotateSvgItem->boundingRect().height());
+
+}
+
+QCursor UBGraphicsAristo::flipCursor() const
+{
+    return Qt::ArrowCursor;
+}
+
+QCursor UBGraphicsAristo::markerCursor() const
+{
+    return Qt::ArrowCursor;
+}
+
+QCursor UBGraphicsAristo::resizeCursor() const
+{
+    return Qt::ArrowCursor;
+}
+
+
+void UBGraphicsAristo::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    switch (toolFromPos(event->pos())) {
+    case Rotate:
+        mRotating = true;
+        event->accept();
+        break;
+    case Resize:
+        mResizing = true;
+        event->accept();
+        break;
+    case MoveMarker:
+        mMarking = true;
+        event->accept();
+        break;
+    default:
+        QGraphicsItem::mousePressEvent(event);
+        break;
+    }
+
+    mShowButtons = false;
+    mHFlipSvgItem->setVisible(false);
+    mCloseSvgItem->setVisible(false);
+    mRotateSvgItem->setVisible(mRotating);
+    mResizeSvgItem->setVisible(mResizing);
+    update();
+}
+
+void UBGraphicsAristo::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+
+    if (!mResizing && !mRotating && !mMarking)
+    {
+        QGraphicsItem::mouseMoveEvent(event);
+    }
+    else
+    {
+        QLineF currentLine(rotationCenter(), event->pos());
+        QLineF lastLine(rotationCenter(), event->lastPos());
+
+        if (mRotating) {
+            
+            rotateAroundCenter(currentLine.angleTo(lastLine));
+        }
+        else if (mResizing) {
+            QPointF delta = event->pos() - event->lastPos();
+            calculatePoints(QRectF(boundingRect().topLeft(), QSizeF(boundingRect().width() + delta.x(), boundingRect().height() + delta.x())));
+        }
+        else if(mMarking) {
+            qreal angle = currentLine.angleTo(lastLine);
+
+            mMarkerAngle += angle;
+            mMarkerAngle -= (int)(mMarkerAngle/360)*360;
+
+            if (mOrientation == Bottom) {
+                if (mMarkerAngle >= 270)
+                    mMarkerAngle = 0;
+                else if (mMarkerAngle > 180)
+                    mMarkerAngle = 180;
+            }
+            else if (mOrientation == Top) {
+                if (mMarkerAngle < 90)
+                    mMarkerAngle = 360;
+                else if (mMarkerAngle < 180)
+                    mMarkerAngle = 180;
+            }
+            update();
+        }
+
+        event->accept();
+    }
+}
+
+void UBGraphicsAristo::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (mResizing || mRotating || mMarking)
+    {
+        if (mMarking)
+            setPath(determinePath());
+        mResizing = false;
+        mRotating = false;
+        mMarking = false;
+        event->accept();
+    }
+    else
+    {
+        switch (toolFromPos(event->pos())) {
+        case Close :
+            hide();
+            emit hidden();
+            break;
+        case HorizontalFlip:            
+            /* setting new orientation */
+            switch(mOrientation) {
+            case Bottom:
+                setOrientation(Top);
+                break;
+            case Top:
+                setOrientation(Bottom);
+                break;
+            default:
+                break;
+            }
+        default:
+            QGraphicsItem::mouseReleaseEvent(event);
+            break;
+        }
+    }
+
+    mShowButtons = true;
+    update();
+    if (scene())
+        scene()->setModified(true);
+}
+
+void UBGraphicsAristo::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
+{
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+    if (currentTool == UBStylusTool::Selector)  {
+        mShowButtons = true;
+        mHFlipSvgItem->setVisible(true);
+        mRotateSvgItem->setVisible(true);
+        mResizeSvgItem->setVisible(true);
+        mCloseSvgItem->setVisible(true);
+
+        switch (toolFromPos(event->pos())) {
+        case HorizontalFlip:
+            setCursor(flipCursor());
+            break;
+        case Rotate:
+            setCursor(rotateCursor());
+            break;
+        case Resize:
+            setCursor(resizeCursor());
+            break;
+        case MoveMarker:
+            setCursor(markerCursor());
+            break;
+        case Close:
+            setCursor(closeCursor());
+            break;
+        default:
+            setCursor(moveCursor());
+            break;
+        }
+
+        event->accept();
+        update();
+
+    } else if (UBDrawingController::drawingController()->isDrawingTool())  {
+            setCursor(drawRulerLineCursor());
+            UBDrawingController::drawingController()->mActiveRuler = this;
+            event->accept();
+    }
+}
+
+void UBGraphicsAristo::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
+{
+    mShowButtons = false;
+    setCursor(Qt::ArrowCursor);
+    mHFlipSvgItem->setVisible(false);
+    mRotateSvgItem->setVisible(false);
+    mResizeSvgItem->setVisible(false);
+    mCloseSvgItem->setVisible(false);
+    UBDrawingController::drawingController()->mActiveRuler = NULL;
+    event->accept();
+    update();
+}
+
+void UBGraphicsAristo::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
+{
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+    if (currentTool == UBStylusTool::Selector)
+    {
+        mShowButtons = true;
+        mHFlipSvgItem->setVisible(true);
+        mRotateSvgItem->setVisible(true);
+        mResizeSvgItem->setVisible(true);
+        mCloseSvgItem->setVisible(true);
+
+        switch (toolFromPos(event->pos())) {
+        case HorizontalFlip:
+            setCursor(flipCursor());
+            break;
+        case Rotate:
+            setCursor(rotateCursor());
+            break;
+        case Resize:
+            setCursor(resizeCursor());
+            break;
+        case MoveMarker:
+            setCursor(markerCursor());
+            break;
+        case Close:
+            setCursor(closeCursor());
+            break;
+        default:
+            setCursor(moveCursor());
+            break;
+        }
+
+        event->accept();
+    }
+    else if (UBDrawingController::drawingController()->isDrawingTool())
+        event->accept();
+}
+
+/*
+ * toolfromPos() returns the item type corresponding to the given position.
+ * This method is used to reduce the amount of code in each event function and improve class' maintainability.
+ * pos: event's position ; a rotation is done to counter elements rotation, like the marker button.
+ */ 
+UBGraphicsAristo::Tool UBGraphicsAristo::toolFromPos(QPointF pos)
+{
+    pos = pos - rotationCenter();
+
+    qreal rotationAngle = mOrientation == Bottom ? - mMarkerAngle : Top ? 360 * (int)(mMarkerAngle / 360 + 1) - mMarkerAngle : 0;
+
+    QTransform t;
+    t.rotate(rotationAngle);
+    QPointF p2 = t.map(pos);
+
+    if (resizeButtonRect().contains(pos))
+        return Resize;
+    else if (closeButtonRect().contains(pos))
+        return Close;
+    else if (rotateRect().contains(pos))
+        return Rotate;
+    else if (markerButtonRect().contains(p2))
+        return MoveMarker;
+    else if (hFlipRect().contains(pos))
+        return HorizontalFlip;
+    else if (shape().contains(pos))
+        return Move;
+    else
+        return None;
+}
+
+
+void UBGraphicsAristo::StartLine(const QPointF &scenePos, qreal width)
+{
+    QPointF itemPos = mapFromScene(scenePos);
+
+    qreal y;
+
+    y = rotationCenter().y();
+
+    if (itemPos.x() < boundingRect().x() + sLeftEdgeMargin)
+            itemPos.setX(boundingRect().x() + sLeftEdgeMargin);
+    if (itemPos.x() > boundingRect().x() + boundingRect().width() - sLeftEdgeMargin)
+            itemPos.setX(boundingRect().x() + boundingRect().width() - sLeftEdgeMargin);
+
+    itemPos.setY(y);
+    itemPos = mapToScene(itemPos);
+
+    scene()->moveTo(itemPos);
+    scene()->drawLineTo(itemPos, width, true);
+}
+
+void UBGraphicsAristo::DrawLine(const QPointF &scenePos, qreal width)
+{
+    QPointF itemPos = mapFromScene(scenePos);
+
+    qreal y;
+
+    y = rotationCenter().y();
+
+    if (itemPos.x() < boundingRect().x() + sLeftEdgeMargin)
+            itemPos.setX(boundingRect().x() + sLeftEdgeMargin);
+    if (itemPos.x() > boundingRect().x() + boundingRect().width() - sLeftEdgeMargin)
+            itemPos.setX(boundingRect().x() + boundingRect().width() - sLeftEdgeMargin);
+
+    itemPos.setY(y);
+    itemPos = mapToScene(itemPos);
+
+    // We have to use "pointed" line for marker tool
+    scene()->drawLineTo(itemPos, width,
+            UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker);
+}
+
+void UBGraphicsAristo::EndLine()
+{
+    /* NOOP */
+}
+
+
+UBGraphicsScene* UBGraphicsAristo::scene() const
+{
+    return static_cast<UBGraphicsScene*>(QGraphicsPathItem::scene());
+}
diff --git a/Sankore-3.1/src/tools/UBGraphicsAristo.h b/Sankore-3.1/src/tools/UBGraphicsAristo.h
new file mode 100644
index 0000000..e676eda
--- /dev/null
+++ b/Sankore-3.1/src/tools/UBGraphicsAristo.h
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "tools/UBAbstractDrawRuler.h"
+
+#include <QtGlobal>
+#include <QBrush>
+#include <QCursor>
+#include <QGraphicsPathItem>
+#include <QGraphicsSceneHoverEvent>
+#include <QGraphicsSceneMouseEvent>
+#include <QGraphicsSvgItem>
+#include <QObject>
+#include <QPainter>
+#include <QPainterPath>
+#include <QPointF>
+#include <QRectF>
+#include <QStyleOptionGraphicsItem>
+#include <QTransform>
+#include <QWidget>
+
+class UBGraphicsAristo : public UBAbstractDrawRuler, public QGraphicsPathItem, public UBItem
+{
+Q_OBJECT
+
+public:
+    UBGraphicsAristo();
+    virtual ~UBGraphicsAristo();
+
+    enum {
+        Type = UBGraphicsItemType::AristoItemType 
+    };
+
+    enum Tool {
+        None,
+        Move,
+        Resize,
+        Rotate,
+        Close,
+        MoveMarker,
+        HorizontalFlip
+    };
+
+    enum Orientation
+    {
+        Bottom = 0,
+        Top,
+        Undefined
+    };
+    
+    void setOrientation(Orientation orientation);       
+
+    virtual UBItem* deepCopy() const;
+    virtual void copyItemParameters(UBItem *copy) const;
+
+    virtual void StartLine(const QPointF& scenePos, qreal width);
+    virtual void DrawLine(const QPointF& position, qreal width);
+    virtual void EndLine();
+
+    virtual int type() const
+    {
+        return Type;
+    }
+    UBGraphicsScene* scene() const;
+
+protected:
+    virtual void paint (QPainter *painter, const QStyleOptionGraphicsItem *styleOption, QWidget *widget);
+
+    virtual void rotateAroundCenter(qreal angle);
+    virtual void resize(qreal factor);
+
+    virtual QPointF rotationCenter() const;
+
+    virtual QRectF closeButtonRect() const;
+    QRectF hFlipRect() const;
+    QRectF markerButtonRect() const;
+    QRectF resizeButtonRect () const;        
+    QRectF rotateRect() const;
+
+    QCursor flipCursor() const;        
+    QCursor markerCursor() const;
+    QCursor resizeCursor() const;
+
+    virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
+    virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+    virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
+
+private:
+    Tool toolFromPos(QPointF pos);
+
+    QTransform calculateRotationTransform();
+    void rotateAroundCenter(QTransform& transform, QPointF center);
+
+    void calculatePoints(QRectF bounds);
+    QPainterPath determinePath();
+    void setItemsPos();
+
+    QBrush fillBrush() const;
+    void paintGraduations(QPainter *painter);
+    void paintMarker(QPainter *painter);
+    void paintProtractorGraduations(QPainter* painter);
+    void paintRulerGraduations(QPainter *painter);
+
+    inline qreal radius () const
+    {
+        return sqrt(((B.x() - A.x())*(B.x() - A.x()))+((B.y() - A.y())*(B.y() - A.y()))) * 9 / 16 - 20;
+    }        
+
+    bool mMarking;
+    bool mResizing;
+    bool mRotating;
+
+    Orientation mOrientation;
+
+    qreal mRotatedAngle;
+    qreal mMarkerAngle;
+    qreal mStartAngle;
+
+    qreal mSpan;
+
+    QGraphicsSvgItem* mHFlipSvgItem;
+    QGraphicsSvgItem* mMarkerSvgItem;
+    QGraphicsSvgItem* mResizeSvgItem;
+    QGraphicsSvgItem* mRotateSvgItem;      
+
+    QPointF A, B, C;
+    
+    static const int sArcAngleMargin = 5;
+    static const Orientation sDefaultOrientation;        
+    static const QRectF sDefaultRect;
+};
+
+#endif /* UBGRAPHICSARISTO_H_ */
diff --git a/Sankore-3.1/src/tools/UBGraphicsCache.cpp b/Sankore-3.1/src/tools/UBGraphicsCache.cpp
index ae178ea..888417e 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCache.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCache.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #include <QDebug>
 
 #include "UBGraphicsCache.h"
@@ -24,11 +32,21 @@
 
 #include "core/memcheck.h"
 
-UBGraphicsCache::UBGraphicsCache():QGraphicsRectItem()
+QMap<UBGraphicsScene*, UBGraphicsCache*> UBGraphicsCache::sInstances;
+
+UBGraphicsCache* UBGraphicsCache::instance(UBGraphicsScene *scene)
+{
+    if (!sInstances.contains(scene))
+        sInstances.insert(scene, new UBGraphicsCache(scene));
+    return sInstances[scene];
+}
+
+UBGraphicsCache::UBGraphicsCache(UBGraphicsScene *scene) : QGraphicsRectItem()
   , mMaskColor(Qt::black)
   , mMaskShape(eMaskShape_Circle)
   , mShapeWidth(100)
   , mDrawMask(false)
+  , mScene(scene)
 {
     // Get the board size and pass it to the shape
     QRect boardRect = UBApplication::boardController->displayView()->rect();
@@ -39,21 +57,31 @@ UBGraphicsCache::UBGraphicsCache():QGraphicsRectItem()
 
 UBGraphicsCache::~UBGraphicsCache()
 {
+    sInstances.remove(mScene);
 }
 
 UBItem* UBGraphicsCache::deepCopy() const
 {
-    UBGraphicsCache* copy = new UBGraphicsCache();
+    UBGraphicsCache* copy = new UBGraphicsCache(mScene);
 
-    copy->setPos(this->pos());
-    copy->setRect(this->rect());
-    copy->setTransform(this->transform());
+    copyItemParameters(copy);
 
     // TODO UB 4.7 ... complete all members ?
 
     return copy;
 }
 
+void UBGraphicsCache::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsCache *cp = dynamic_cast<UBGraphicsCache*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setRect(this->rect());
+        cp->setTransform(this->transform());
+    }
+}
+
 QColor UBGraphicsCache::maskColor()
 {
     return mMaskColor;
diff --git a/Sankore-3.1/src/tools/UBGraphicsCache.h b/Sankore-3.1/src/tools/UBGraphicsCache.h
index 6a27233..823eb25 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCache.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCache.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UBGRAPHICSCACHE_H
 #define UBGRAPHICSCACHE_H
 
@@ -30,7 +38,7 @@ typedef enum
 class UBGraphicsCache : public QGraphicsRectItem, public UBItem
 {
 public:
-    UBGraphicsCache();
+    static UBGraphicsCache* instance(UBGraphicsScene *scene);
     ~UBGraphicsCache();
 
     enum { Type = UBGraphicsItemType::cacheItemType };
@@ -39,6 +47,8 @@ public:
 
     virtual UBItem* deepCopy() const;
 
+    virtual void copyItemParameters(UBItem *copy) const;
+
     QColor maskColor();
     void setMaskColor(QColor color);
     eMaskShape maskshape();
@@ -53,8 +63,7 @@ protected:
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
 
 private:
-    void init();
-    QRectF updateRect(QPointF currentPoint);
+    static QMap<UBGraphicsScene*, UBGraphicsCache*> sInstances;
 
     QColor mMaskColor;
     eMaskShape mMaskShape;
@@ -63,6 +72,13 @@ private:
     QPointF mShapePos;
     int mOldShapeWidth;
     QPointF mOldShapePos;
+    UBGraphicsScene* mScene;
+    
+
+    UBGraphicsCache(UBGraphicsScene *scene);
+    
+    void init();
+    QRectF updateRect(QPointF currentPoint);
 };
 
 #endif // UBGRAPHICSCACHE_H
diff --git a/Sankore-3.1/src/tools/UBGraphicsCompass.cpp b/Sankore-3.1/src/tools/UBGraphicsCompass.cpp
index c0386d1..bfb3ae2 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCompass.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCompass.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "tools/UBGraphicsCompass.h"
 #include "domain/UBGraphicsScene.h"
 #include "core/UBApplication.h"
@@ -51,6 +58,11 @@ UBGraphicsCompass::UBGraphicsCompass()
     , mDrewCenterCross(false)
 {
     setRect(sDefaultRect);
+    //TODO claudio: remove code duplication
+    QDesktopWidget* desktop = UBApplication::desktop();
+    int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2;
+    mPixelsPerMillimeter = qRound(dpiCommon / 25.4f);
+
     setFlag(QGraphicsItem::ItemIsMovable, true);
     setFlag(QGraphicsItem::ItemIsSelectable, true);
     setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
@@ -68,7 +80,7 @@ UBGraphicsCompass::UBGraphicsCompass()
     updateResizeCursor();
     updateDrawCursor();
 
-	unsetCursor();
+    unsetCursor();
 
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::CppTool)); //Necessary to set if we want z value to be assigned correctly
     setFlag(QGraphicsItem::ItemIsSelectable, false);
@@ -86,15 +98,24 @@ UBItem* UBGraphicsCompass::deepCopy() const
 {
    UBGraphicsCompass* copy = new UBGraphicsCompass();
 
-    copy->setPos(this->pos());
-    copy->setRect(this->rect());
-    copy->setTransform(this->transform());
+    copyItemParameters(copy);
 
    // TODO UB 4.7 ... complete all members ?
 
    return copy;
 }
 
+void UBGraphicsCompass::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsCompass *cp = dynamic_cast<UBGraphicsCompass*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setRect(this->rect());
+        cp->setTransform(this->transform());
+    }
+}
+
 void UBGraphicsCompass::paint(QPainter *painter, const QStyleOptionGraphicsItem *styleOption, QWidget *widget)
 {
     Q_UNUSED(styleOption);
@@ -170,43 +191,48 @@ QVariant UBGraphicsCompass::itemChange(GraphicsItemChange change, const QVariant
 
 void UBGraphicsCompass::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-	if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
-		return;
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector &&
+        UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
+        return;
+
+    bool closing = false;
 
     if (resizeButtonRect().contains(event->pos()))
     {
         mResizing = true;
-        mCloseSvgItem->setVisible(false);
+        mRotating = false;
         event->accept();
     }
     else if (hingeRect().contains(event->pos()))
     {
         mRotating = true;
-        mResizeSvgItem->setVisible(false);
-        mCloseSvgItem->setVisible(false);
+        mResizing = false;
         event->accept();
     }
-    else
+    else if (!closeButtonRect().contains(event->pos()))
     {
         mDrawing = event->pos().x() > rect().right() - sPencilLength - sPencilBaseLength;
         if (mDrawing)
         {
             mSpanAngleInDegrees = 0;
             mSceneArcStartPoint = mapToScene(pencilPosition());
+            scene()->initStroke();
             scene()->moveTo(mSceneArcStartPoint);
         }
-
-        mResizeSvgItem->setVisible(false);
-        mCloseSvgItem->setVisible(false);
-
         QGraphicsRectItem::mousePressEvent(event);
     }
+    else 
+        closing = true;
+
+    mResizeSvgItem->setVisible(mShowButtons && mResizing);
+    mCloseSvgItem->setVisible(mShowButtons && closing);
 }
 
 void UBGraphicsCompass::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-	if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
-		return;
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector &&
+        UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
+        return;
 
     if (!mResizing && !mRotating && !mDrawing)
     {
@@ -249,24 +275,22 @@ void UBGraphicsCompass::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsCompass::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-	if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
-		return;
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector &&
+        UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
+        return;
 
     if (mResizing)
     {
-        mResizing = false;
         event->accept();
     }
     else if (mRotating)
     {
-        mRotating = false;
         updateResizeCursor();
         updateDrawCursor();
         event->accept();
     }
     else if (mDrawing)
     {
-        mDrawing = false;
         updateResizeCursor();
         updateDrawCursor();
         event->accept();
@@ -282,6 +306,8 @@ void UBGraphicsCompass::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
     {
         QGraphicsRectItem::mouseReleaseEvent(event);
     }
+    mResizing = false;
+    mDrawing = false;
 
     if (scene())
         scene()->setModified(true);
@@ -289,8 +315,9 @@ void UBGraphicsCompass::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsCompass::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
-	if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
-		return;
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector &&
+        UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
+        return;
 
     mOuterCursor = cursor();
     mShowButtons = shape().contains(event->pos());
@@ -318,8 +345,9 @@ void UBGraphicsCompass::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 
 void UBGraphicsCompass::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 {
-	if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
-		return;
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector &&
+        UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
+        return;
 
     mShowButtons = false;
     mCloseSvgItem->setVisible(mShowButtons);
@@ -331,8 +359,9 @@ void UBGraphicsCompass::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 
 void UBGraphicsCompass::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
 {
-	if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
-		return;
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector &&
+        UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
+        return;
 
     mShowButtons = shape().contains(event->pos());
     mCloseSvgItem->setVisible(mShowButtons);
@@ -383,7 +412,7 @@ void UBGraphicsCompass::paintAngleDisplay(QPainter *painter)
 
 void UBGraphicsCompass::paintRadiusDisplay(QPainter *painter)
 {
-    qreal radiusInCentimeters = rect().width() / (sPixelsPerMillimeter * 10);
+    qreal radiusInCentimeters = rect().width() / (mPixelsPerMillimeter * 10);
     QString format = rect().width() >= sDisplayRadiusUnitMinLength ? "%1 cm" : "%1";
     QString radiusText = QString(format).arg(radiusInCentimeters, 0, 'f', 1);
 
@@ -541,10 +570,10 @@ void UBGraphicsCompass::paintCenterCross()
     QPointF needleCrossCenter = mapToScene(needlePosition());
     scene()->moveTo(QPointF(needleCrossCenter.x() - 5, needleCrossCenter.y()));
     scene()->drawLineTo(QPointF(needleCrossCenter.x() + 5, needleCrossCenter.y()), 1,
-		UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
+        UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
     scene()->moveTo(QPointF(needleCrossCenter.x(), needleCrossCenter.y() - 5));
     scene()->drawLineTo(QPointF(needleCrossCenter.x(), needleCrossCenter.y() + 5), 1,
-		UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
+        UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line);
 }
 
 QPointF UBGraphicsCompass::needlePosition() const
diff --git a/Sankore-3.1/src/tools/UBGraphicsCompass.h b/Sankore-3.1/src/tools/UBGraphicsCompass.h
index f308266..4d2bbf2 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCompass.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCompass.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSCOMPASS_H_
 #define UBGRAPHICSCOMPASS_H_
 
@@ -41,6 +48,8 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem
 
         virtual UBItem* deepCopy() const;
 
+        virtual void copyItemParameters(UBItem *copy) const;
+
     signals:
 
        void hidden();
@@ -111,6 +120,7 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem
         QGraphicsSvgItem* mResizeSvgItem;
         qreal mAntiScaleRatio;
         bool mDrewCenterCross;
+        int mPixelsPerMillimeter;
 
         // Constants
         static const QRect                     sDefaultRect;
@@ -128,7 +138,6 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem
         static const QColor    sDarkBackgroundEdgeFillColor;
         static const QColor  sDarkBackgroundMiddleFillColor;
         static const QColor        sDarkBackgroundDrawColor;
-        static const int               sPixelsPerMillimeter = 5;
         static const int sDisplayRadiusOnPencilArmMinLength = 300;
         static const int        sDisplayRadiusUnitMinLength = 250;
 };
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp
index 6f0154d..ef34a2b 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsCurtainItem.h"
 
 #include <QtGui>
@@ -37,8 +44,10 @@ const QColor UBGraphicsCurtainItem::sDarkBackgroundOpaqueControlColor = QColor(6
 UBGraphicsCurtainItem::UBGraphicsCurtainItem(QGraphicsItem* parent)
     : QGraphicsRectItem(parent)
 {
-    mDelegate = new UBGraphicsCurtainItemDelegate(this, 0);
-    mDelegate->init();
+    UBGraphicsCurtainItemDelegate* delegate = new UBGraphicsCurtainItemDelegate(this, 0);
+    delegate->init();
+    setDelegate(delegate);
+
     setFlag(QGraphicsItem::ItemIsMovable, true);
     setFlag(QGraphicsItem::ItemIsSelectable, true);
 
@@ -55,7 +64,6 @@ UBGraphicsCurtainItem::UBGraphicsCurtainItem(QGraphicsItem* parent)
 
 UBGraphicsCurtainItem::~UBGraphicsCurtainItem()
 {
-    delete mDelegate;
 }
 
 QVariant UBGraphicsCurtainItem::itemChange(GraphicsItemChange change, const QVariant &value)
@@ -63,17 +71,23 @@ QVariant UBGraphicsCurtainItem::itemChange(GraphicsItemChange change, const QVar
 
     QVariant newValue = value;
 
-    if (mDelegate)
+    if (Delegate())
     {
-        newValue = mDelegate->itemChange(change, value);
+        newValue = Delegate()->itemChange(change, value);
     }
 
     return QGraphicsRectItem::itemChange(change, newValue);
 }
 
+void UBGraphicsCurtainItem::setUuid(const QUuid &pUuid)
+{
+    UBItem::setUuid(pUuid);
+    setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene
+}
+
 void UBGraphicsCurtainItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mousePressEvent(event))
+    if (Delegate()->mousePressEvent(event))
     {
         //NOOP
     }
@@ -85,7 +99,7 @@ void UBGraphicsCurtainItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsCurtainItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (mDelegate->mouseMoveEvent(event))
+    if (Delegate()->mouseMoveEvent(event))
     {
         // NOOP;
     }
@@ -97,7 +111,7 @@ void UBGraphicsCurtainItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsCurtainItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    mDelegate->mouseReleaseEvent(event);
+    Delegate()->mouseReleaseEvent(event);
     QGraphicsRectItem::mouseReleaseEvent(event);
 }
 
@@ -127,20 +141,28 @@ UBItem* UBGraphicsCurtainItem::deepCopy() const
 {
    UBGraphicsCurtainItem* copy = new UBGraphicsCurtainItem();
 
-   copy->setRect(this->rect());
-   copy->setPos(this->pos());
-   copy->setBrush(this->brush());
-   copy->setPen(this->pen());
-   copy->setTransform(this->transform());
-   copy->setFlag(QGraphicsItem::ItemIsMovable, true);
-   copy->setFlag(QGraphicsItem::ItemIsSelectable, true);
-   copy->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+    copyItemParameters(copy);
 
    // TODO UB 4.7 ... complete all members ?
 
    return copy;
 }
 
+void UBGraphicsCurtainItem::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsCurtainItem *cp = dynamic_cast<UBGraphicsCurtainItem*>(copy);
+    if (cp)
+    {
+        cp->setRect(this->rect());
+        cp->setPos(this->pos());
+        cp->setBrush(this->brush());
+        cp->setPen(this->pen());
+        cp->setTransform(this->transform());
+        cp->setFlag(QGraphicsItem::ItemIsMovable, true);
+        cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
+        cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));
+    }
+}
 
 QColor UBGraphicsCurtainItem::drawColor() const
 {
@@ -156,13 +178,6 @@ QColor UBGraphicsCurtainItem::opaqueControlColor() const
 }
 
 
-void UBGraphicsCurtainItem::remove()
-{
-    if (mDelegate)
-        mDelegate->remove(true);
-}
-
-
 void UBGraphicsCurtainItem::triggerRemovedSignal()
 {
     emit removed();
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h
index d05f946..6100968 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItem.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSCURTAINITEM_H_
 #define UBGRAPHICSCURTAINITEM_H_
 
@@ -42,13 +49,13 @@ class UBGraphicsCurtainItem : public QObject, public QGraphicsRectItem, public U
         }
 
         virtual UBItem* deepCopy() const;
-
-        virtual void remove();
+        virtual void copyItemParameters(UBItem *copy) const;
 
         //TODO UB 4.x not nice ...
         void triggerRemovedSignal();
-        virtual UBGraphicsItemDelegate* Delegate() const {return mDelegate;}
-        virtual void clearSource(){};
+        virtual void clearSource(){;}
+
+        virtual void setUuid(const QUuid &pUuid);
 
      signals:
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp
index 4161c50..8626d35 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.cpp
@@ -1,16 +1,22 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -25,7 +31,7 @@
 #include "core/memcheck.h"
 
 UBGraphicsCurtainItemDelegate::UBGraphicsCurtainItemDelegate(UBGraphicsCurtainItem* pDelegated, QObject * parent)
-    : UBGraphicsItemDelegate(pDelegated, parent, false)
+    : UBGraphicsItemDelegate(pDelegated, parent, false, false, false)
 {
     setCanDuplicate(false);
 }
@@ -40,6 +46,8 @@ void UBGraphicsCurtainItemDelegate::init()
 {
     UBGraphicsItemDelegate::init();
     mFrame->hide();
+    mZOrderUpButton->hide();
+    mZOrderDownButton->hide();
 }
 
 
@@ -87,6 +95,12 @@ QVariant UBGraphicsCurtainItemDelegate::itemChange(QGraphicsItem::GraphicsItemCh
     return UBGraphicsItemDelegate::itemChange(change, value);
 }
 
+void UBGraphicsCurtainItemDelegate::positionHandles()
+{
+    UBGraphicsItemDelegate::positionHandles();
+    mZOrderUpButton->hide();
+    mZOrderDownButton->hide();
+}
 
 void UBGraphicsCurtainItemDelegate::remove(bool checked, bool canUndo)
 {
diff --git a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h
index 19ef04c..1681532 100644
--- a/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h
+++ b/Sankore-3.1/src/tools/UBGraphicsCurtainItemDelegate.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSCURTAINITEMDELEGATE_H_
 #define UBGRAPHICSCURTAINITEMDELEGATE_H_
 
@@ -38,14 +45,14 @@ class UBGraphicsCurtainItemDelegate : public UBGraphicsItemDelegate
 
         virtual bool mousePressEvent(QGraphicsSceneMouseEvent *event);
         virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value);
+        virtual void positionHandles();
+
+        virtual void init();
 
    public slots:
 
         virtual void remove(bool checked, bool canUndo = true);
 
-   protected:
-        virtual void init();
-
 };
 
 #endif /* UBGRAPHICSCURTAINITEMDELEGATE_H_ */
diff --git a/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp b/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp
index f00bf27..2608195 100644
--- a/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsProtractor.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBGraphicsProtractor.h"
 #include "core/UBApplication.h"
 #include "gui/UBResources.h"
@@ -250,13 +257,19 @@ void UBGraphicsProtractor::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
     if (scene())
         scene()->setModified(true);
 
+    if (!mShowButtons)
+    {
+        mShowButtons = true;
+        update();
+    }
+
     mCurrentTool = None;
 }
 
 
 void UBGraphicsProtractor::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
-    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector)
+    if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play)
         return;
 
     if (!mShowButtons)
@@ -292,12 +305,6 @@ void UBGraphicsProtractor::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
 
     Tool currentTool = toolFromPos(event->pos());
 
-    if (!mShowButtons)
-    {
-        mShowButtons = true;
-        update();
-    }
-
     if (currentTool == Move)
         setCursor(Qt::SizeAllCursor);
     else
@@ -579,20 +586,27 @@ UBItem* UBGraphicsProtractor::deepCopy() const
 {
     UBGraphicsProtractor* copy = new UBGraphicsProtractor();
 
-    copy->setPos(this->pos());
-    copy->setRect(this->rect());
-    copy->setTransform(this->transform());
-
-    copy->mCurrentAngle = this->mCurrentAngle;
-    copy->mSpan = this->mSpan;
-    copy->mStartAngle = this->mStartAngle;
-    copy->mScaleFactor = this->mScaleFactor;
+    copyItemParameters(copy);
 
     // TODO UB 4.7 ... complete all members ?
 
     return copy;
 }
-
+void UBGraphicsProtractor::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsProtractor *cp = dynamic_cast<UBGraphicsProtractor*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setRect(this->rect());
+        cp->setTransform(this->transform());
+
+        cp->mCurrentAngle = this->mCurrentAngle;
+        cp->mSpan = this->mSpan;
+        cp->mStartAngle = this->mStartAngle;
+        cp->mScaleFactor = this->mScaleFactor;
+    }
+}
 
 void UBGraphicsProtractor::rotateAroundCenter(qreal angle)
 {
diff --git a/Sankore-3.1/src/tools/UBGraphicsProtractor.h b/Sankore-3.1/src/tools/UBGraphicsProtractor.h
index 7eb7996..4f2fc9b 100644
--- a/Sankore-3.1/src/tools/UBGraphicsProtractor.h
+++ b/Sankore-3.1/src/tools/UBGraphicsProtractor.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSPROTRACTOR_H_
 #define UBGRAPHICSPROTRACTOR_H_
 
@@ -40,6 +47,7 @@ class UBGraphicsProtractor : public UBAbstractDrawRuler, public QGraphicsEllipse
         void  setMarkerAngle (qreal angle) { mCurrentAngle = angle; }
 
         virtual UBItem* deepCopy() const;
+        virtual void copyItemParameters(UBItem *copy) const;
 
         enum { Type = UBGraphicsItemType::ProtractorItemType };
 
@@ -61,10 +69,10 @@ class UBGraphicsProtractor : public UBAbstractDrawRuler, public QGraphicsEllipse
         virtual void    hoverMoveEvent (QGraphicsSceneHoverEvent *event);
         virtual QPainterPath shape() const;
         QRectF boundingRect() const;
+        void paintGraduations(QPainter *painter);
 
     private:
         // Helpers
-        void paintGraduations (QPainter *painter);
         void paintButtons (QPainter *painter);
         void paintAngleMarker (QPainter *painter);
         Tool toolFromPos (QPointF pos);
diff --git a/Sankore-3.1/src/tools/UBGraphicsRuler.cpp b/Sankore-3.1/src/tools/UBGraphicsRuler.cpp
index 720b7b2..799b99a 100644
--- a/Sankore-3.1/src/tools/UBGraphicsRuler.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsRuler.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QPixmap>
 
 #include "tools/UBGraphicsRuler.h"
@@ -29,12 +36,12 @@ const QRect UBGraphicsRuler::sDefaultRect = QRect(0, 0, 800, 96);
 
 UBGraphicsRuler::UBGraphicsRuler()
     : QGraphicsRectItem()
-	, mResizing(false)
+    , mResizing(false)
     , mRotating(false)
 {
     setRect(sDefaultRect);
 
-	mResizeSvgItem = new QGraphicsSvgItem(":/images/resizeRuler.svg", this);
+    mResizeSvgItem = new QGraphicsSvgItem(":/images/resizeRuler.svg", this);
     mResizeSvgItem->setVisible(false);
     mResizeSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
 
@@ -42,7 +49,7 @@ UBGraphicsRuler::UBGraphicsRuler()
     mRotateSvgItem->setVisible(false);
     mRotateSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
 
-	create(*this);
+    create(*this);
 
     setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::CppTool)); //Necessary to set if we want z value to be assigned correctly
 
@@ -75,23 +82,32 @@ UBItem* UBGraphicsRuler::deepCopy() const
 {
     UBGraphicsRuler* copy = new UBGraphicsRuler();
 
-    copy->setPos(this->pos());
-    copy->setRect(this->rect());
-    copy->setTransform(this->transform());
+    copyItemParameters(copy);
 
     // TODO UB 4.7 ... complete all members ?
 
     return copy;
 }
 
+void UBGraphicsRuler::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsRuler *cp = dynamic_cast<UBGraphicsRuler*>(copy);
+    if (cp)
+    {
+        cp->setPos(this->pos());
+        cp->setRect(this->rect());
+        cp->setTransform(this->transform());
+    }
+}
+
 void UBGraphicsRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *styleOption, QWidget *widget)
 {
     Q_UNUSED(styleOption);
     Q_UNUSED(widget);
 
-	UBAbstractDrawRuler::paint();
+    UBAbstractDrawRuler::paint();
 
-	QTransform antiScaleTransform2;
+    QTransform antiScaleTransform2;
     qreal ratio = mAntiScaleRatio > 1.0 ? mAntiScaleRatio : 1.0;
     antiScaleTransform2.scale(ratio, 1.0);
 
@@ -149,36 +165,30 @@ void UBGraphicsRuler::fillBackground(QPainter *painter)
 
 void UBGraphicsRuler::paintGraduations(QPainter *painter)
 {
-    const int     centimeterGraduationHeight = 15;
-    const int halfCentimeterGraduationHeight = 10;
-    const int     millimeterGraduationHeight = 5;
-    const int       millimetersPerCentimeter = 10;
-    const int   millimetersPerHalfCentimeter = 5;
-
     painter->save();
     painter->setFont(font());
     QFontMetricsF fontMetrics(painter->font());
     for (int millimeters = 0; millimeters < (rect().width() - sLeftEdgeMargin - sRoundingRadius) / sPixelsPerMillimeter; millimeters++)
     {
         int graduationX = rotationCenter().x() + sPixelsPerMillimeter * millimeters;
-        int graduationHeight = (0 == millimeters % millimetersPerCentimeter) ?
-            centimeterGraduationHeight :
-            ((0 == millimeters % millimetersPerHalfCentimeter) ?
-                halfCentimeterGraduationHeight : millimeterGraduationHeight);
+        int graduationHeight = (0 == millimeters % UBGeometryUtils::millimetersPerCentimeter) ?
+            UBGeometryUtils::centimeterGraduationHeight :
+            ((0 == millimeters % UBGeometryUtils::millimetersPerHalfCentimeter) ?
+                UBGeometryUtils::halfCentimeterGraduationHeight : UBGeometryUtils::millimeterGraduationHeight);
         painter->drawLine(QLine(graduationX, rotationCenter().y(), graduationX, rotationCenter().y() + graduationHeight));
         painter->drawLine(QLine(graduationX, rotationCenter().y() + rect().height(), graduationX, rotationCenter().y() + rect().height() - graduationHeight));
-        if (0 == millimeters % millimetersPerCentimeter)
+        if (0 == millimeters % UBGeometryUtils::millimetersPerCentimeter)
         {
-            QString text = QString("%1").arg((int)(millimeters / millimetersPerCentimeter));
+            QString text = QString("%1").arg((int)(millimeters / UBGeometryUtils::millimetersPerCentimeter));
             if (graduationX + fontMetrics.width(text) / 2 < rect().right())
             {
                 qreal textWidth = fontMetrics.width(text);
                 qreal textHeight = fontMetrics.tightBoundingRect(text).height() + 5;
                 painter->drawText(
-                    QRectF(graduationX - textWidth / 2, rect().top() + 5 + centimeterGraduationHeight, textWidth, textHeight),
+                    QRectF(graduationX - textWidth / 2, rect().top() + 5 + UBGeometryUtils::centimeterGraduationHeight, textWidth, textHeight),
                     Qt::AlignVCenter, text);
                 painter->drawText(
-                    QRectF(graduationX - textWidth / 2, rect().bottom() - 5 - centimeterGraduationHeight - textHeight, textWidth, textHeight),
+                    QRectF(graduationX - textWidth / 2, rect().bottom() - 5 - UBGeometryUtils::centimeterGraduationHeight - textHeight, textWidth, textHeight),
                     Qt::AlignVCenter, text);
             }
         }
@@ -266,28 +276,28 @@ QRectF UBGraphicsRuler::rotateButtonRect() const
 
 void UBGraphicsRuler::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
 {
-	UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
-
-	if (currentTool == UBStylusTool::Selector)
-	{
-		mCloseSvgItem->setVisible(mShowButtons);
-		mResizeSvgItem->setVisible(mShowButtons);
-		mRotateSvgItem->setVisible(mShowButtons);
-		if (resizeButtonRect().contains(event->pos()))
-			setCursor(resizeCursor());
-		else if (closeButtonRect().contains(event->pos()))
-			setCursor(closeCursor());
-		else if (rotateButtonRect().contains(event->pos()))
-			setCursor(rotateCursor());
-		else
-			setCursor(moveCursor());
-
-		event->accept();
-	}
-	else if (UBDrawingController::drawingController()->isDrawingTool())
-	{
-		event->accept();
-	}
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+    if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play)
+    {
+        mCloseSvgItem->setVisible(mShowButtons);
+        mResizeSvgItem->setVisible(mShowButtons);
+        mRotateSvgItem->setVisible(mShowButtons);
+        if (resizeButtonRect().contains(event->pos()))
+            setCursor(resizeCursor());
+        else if (closeButtonRect().contains(event->pos()))
+            setCursor(closeCursor());
+        else if (rotateButtonRect().contains(event->pos()))
+            setCursor(rotateCursor());
+        else
+            setCursor(moveCursor());
+
+        event->accept();
+    }
+    else if (UBDrawingController::drawingController()->isDrawingTool())
+    {
+        event->accept();
+    }
 }
 
 void UBGraphicsRuler::mousePressEvent(QGraphicsSceneMouseEvent *event)
@@ -306,7 +316,7 @@ void UBGraphicsRuler::mousePressEvent(QGraphicsSceneMouseEvent *event)
     {
         mResizeSvgItem->setVisible(false);
         mRotateSvgItem->setVisible(false);
-		QGraphicsItem::mousePressEvent(event);
+        QGraphicsItem::mousePressEvent(event);
     }
     mResizeSvgItem->setVisible(mShowButtons && mResizing);
     mRotateSvgItem->setVisible(mShowButtons && mRotating);
@@ -317,20 +327,20 @@ void UBGraphicsRuler::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
     if (!mResizing && !mRotating)
     {
-		QGraphicsItem::mouseMoveEvent(event);
+        QGraphicsItem::mouseMoveEvent(event);
     }
     else
     {
         if (mResizing)
         {
-			QPointF delta = event->pos() - event->lastPos();
-			if (rect().width() + delta.x() < sMinLength)
-				delta.setX(sMinLength - rect().width());
+            QPointF delta = event->pos() - event->lastPos();
+            if (rect().width() + delta.x() < sMinLength)
+                delta.setX(sMinLength - rect().width());
 
             if (rect().width() + delta.x() > sMaxLength)
                 delta.setX(sMaxLength - rect().width());
 
-			setRect(QRectF(rect().topLeft(), QSizeF(rect().width() + delta.x(), rect().height())));
+            setRect(QRectF(rect().topLeft(), QSizeF(rect().width() + delta.x(), rect().height())));
         }
         else
         {
@@ -359,13 +369,13 @@ void UBGraphicsRuler::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
     }
     else if (closeButtonRect().contains(event->pos()))
     {
-		hide();
-		emit hidden();
+        hide();
+        emit hidden();
         event->accept();
     }
     else
     {
-		QGraphicsItem::mouseReleaseEvent(event);
+        QGraphicsItem::mouseReleaseEvent(event);
     }
 
     if (scene())
@@ -374,40 +384,41 @@ void UBGraphicsRuler::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 
 void UBGraphicsRuler::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
-	UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
-
-	if (currentTool == UBStylusTool::Selector)
-	{
-		mCloseSvgItem->setParentItem(this);
-	    mResizeSvgItem->setParentItem(this);
-		mRotateSvgItem->setParentItem(this);
-
-	    mShowButtons = true;
-		mCloseSvgItem->setVisible(mShowButtons);
-		mResizeSvgItem->setVisible(mShowButtons);
-	    mRotateSvgItem->setVisible(mShowButtons);
-		if (event->pos().x() >= resizeButtonRect().left())
-		{
-			setCursor(resizeCursor());
-		}
-		else
-		{
-			if (closeButtonRect().contains(event->pos()))
-				setCursor(closeCursor());
-			else if (rotateButtonRect().contains(event->pos()))
-				setCursor(rotateCursor());
-			else
-				setCursor(moveCursor());
-		}
-		event->accept();
-		update();
-	}
-	else if (UBDrawingController::drawingController()->isDrawingTool())
-	{
-		setCursor(drawRulerLineCursor());
-		UBDrawingController::drawingController()->mActiveRuler = this;
-		event->accept();
-	}
+    UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
+
+    if (currentTool == UBStylusTool::Selector ||
+        currentTool == UBStylusTool::Play)
+    {
+        mCloseSvgItem->setParentItem(this);
+        mResizeSvgItem->setParentItem(this);
+        mRotateSvgItem->setParentItem(this);
+
+        mShowButtons = true;
+        mCloseSvgItem->setVisible(mShowButtons);
+        mResizeSvgItem->setVisible(mShowButtons);
+        mRotateSvgItem->setVisible(mShowButtons);
+        if (event->pos().x() >= resizeButtonRect().left())
+        {
+            setCursor(resizeCursor());
+        }
+        else
+        {
+            if (closeButtonRect().contains(event->pos()))
+                setCursor(closeCursor());
+            else if (rotateButtonRect().contains(event->pos()))
+                setCursor(rotateCursor());
+            else
+                setCursor(moveCursor());
+        }
+        event->accept();
+        update();
+    }
+    else if (UBDrawingController::drawingController()->isDrawingTool())
+    {
+        setCursor(drawRulerLineCursor());
+        UBDrawingController::drawingController()->mActiveRuler = this;
+        event->accept();
+    }
 }
 
 void UBGraphicsRuler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
@@ -417,7 +428,7 @@ void UBGraphicsRuler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
     mCloseSvgItem->setVisible(mShowButtons);
     mResizeSvgItem->setVisible(mShowButtons);
     mRotateSvgItem->setVisible(mShowButtons);
-	UBDrawingController::drawingController()->mActiveRuler = NULL;
+    UBDrawingController::drawingController()->mActiveRuler = NULL;
     event->accept();
     update();
 }
@@ -431,28 +442,28 @@ UBGraphicsScene* UBGraphicsRuler::scene() const
 
 void UBGraphicsRuler::StartLine(const QPointF& scenePos, qreal width)
 {
-	QPointF itemPos = mapFromScene(scenePos);
-
-	qreal y;
-
-	if (itemPos.y() > rect().y() + rect().height() / 2)
-	{
-		drawLineDirection = 0;
-		y = rect().y() + rect().height() + width / 2;
-	}
-	else
-	{
-		drawLineDirection = 1;
-		y = rect().y() - width /2;
-	}
-	
-	if (itemPos.x() < rect().x() + sLeftEdgeMargin)
-		itemPos.setX(rect().x() + sLeftEdgeMargin);
-	if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin)
-		itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin);
-
-	itemPos.setY(y);
-	itemPos = mapToScene(itemPos);
+    QPointF itemPos = mapFromScene(scenePos);
+
+    qreal y;
+
+    if (itemPos.y() > rect().y() + rect().height() / 2)
+    {
+        drawLineDirection = 0;
+        y = rect().y() + rect().height() + width / 2;
+    }
+    else
+    {
+        drawLineDirection = 1;
+        y = rect().y() - width /2;
+    }
+
+    if (itemPos.x() < rect().x() + sLeftEdgeMargin)
+        itemPos.setX(rect().x() + sLeftEdgeMargin);
+    if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin)
+        itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin);
+
+    itemPos.setY(y);
+    itemPos = mapToScene(itemPos);
 
     scene()->moveTo(itemPos);
     scene()->drawLineTo(itemPos, width, true);
@@ -460,26 +471,26 @@ void UBGraphicsRuler::StartLine(const QPointF& scenePos, qreal width)
 
 void UBGraphicsRuler::DrawLine(const QPointF& scenePos, qreal width)
 {
-	QPointF itemPos = mapFromScene(scenePos);
-
-	qreal y;
-	if (drawLineDirection == 0)
-	{
-		y = rect().y() + rect().height() + width / 2;
-	}
-	else
-	{
-		y = rect().y() - width /2;
-	}
-	if (itemPos.x() < rect().x() + sLeftEdgeMargin)
-		itemPos.setX(rect().x() + sLeftEdgeMargin);
-	if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin)
-		itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin);
-
-	itemPos.setY(y);
-	itemPos = mapToScene(itemPos);
-
-	// We have to use "pointed" line for marker tool
+    QPointF itemPos = mapFromScene(scenePos);
+
+    qreal y;
+    if (drawLineDirection == 0)
+    {
+        y = rect().y() + rect().height() + width / 2;
+    }
+    else
+    {
+        y = rect().y() - width /2;
+    }
+    if (itemPos.x() < rect().x() + sLeftEdgeMargin)
+        itemPos.setX(rect().x() + sLeftEdgeMargin);
+    if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin)
+        itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin);
+
+    itemPos.setY(y);
+    itemPos = mapToScene(itemPos);
+
+    // We have to use "pointed" line for marker tool
     scene()->drawLineTo(itemPos, width, UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker);
 }
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsRuler.h b/Sankore-3.1/src/tools/UBGraphicsRuler.h
index 1c799bb..dd67818 100644
--- a/Sankore-3.1/src/tools/UBGraphicsRuler.h
+++ b/Sankore-3.1/src/tools/UBGraphicsRuler.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSRULER_H_
 #define UBGRAPHICSRULER_H_
 
@@ -41,6 +48,7 @@ class UBGraphicsRuler : public UBAbstractDrawRuler, public QGraphicsRectItem, pu
         }
 
         virtual UBItem* deepCopy() const;
+        virtual void copyItemParameters(UBItem *copy) const;
 
 		virtual void StartLine(const QPointF& position, qreal width);
 		virtual void DrawLine(const QPointF& position, qreal width);
@@ -58,6 +66,7 @@ class UBGraphicsRuler : public UBAbstractDrawRuler, public QGraphicsRectItem, pu
         virtual void	hoverEnterEvent(QGraphicsSceneHoverEvent *event);
         virtual void	hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
 		virtual void    hoverMoveEvent(QGraphicsSceneHoverEvent *event);
+        void paintGraduations(QPainter *painter);
 
     private:
 
@@ -67,7 +76,6 @@ class UBGraphicsRuler : public UBAbstractDrawRuler, public QGraphicsRectItem, pu
 
         // Helpers
         void    fillBackground(QPainter *painter);
-        void    paintGraduations(QPainter *painter);
         void    paintRotationCenter(QPainter *painter);
         virtual void    rotateAroundCenter(qreal angle);
 
diff --git a/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp b/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp
index ef946af..5bac8aa 100644
--- a/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp
+++ b/Sankore-3.1/src/tools/UBGraphicsTriangle.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QGraphicsPolygonItem>
 #include <QPolygonF>
 
@@ -94,9 +101,7 @@ UBItem* UBGraphicsTriangle::deepCopy(void) const
 {
     UBGraphicsTriangle* copy = new UBGraphicsTriangle();
 
-    copy->setPos(this->pos());
-    copy->setPolygon(this->polygon());
-    copy->setTransform(this->transform());
+    copyItemParameters(copy);
 
     // TODO UB 4.7 ... complete all members ?
 
@@ -104,6 +109,17 @@ UBItem* UBGraphicsTriangle::deepCopy(void) const
 
 }
 
+void UBGraphicsTriangle::copyItemParameters(UBItem *copy) const
+{
+    UBGraphicsTriangle* cp = dynamic_cast<UBGraphicsTriangle*>(copy);
+    if (cp)
+    {   
+        cp->setPos(this->pos());
+        cp->setPolygon(this->polygon());
+        cp->setTransform(this->transform());
+    }
+}
+
 void UBGraphicsTriangle::setRect(qreal x, qreal y, qreal w, qreal h, UBGraphicsTriangleOrientation orientation)
 {
     QPolygonF polygon;
@@ -288,12 +304,6 @@ QPainterPath UBGraphicsTriangle::shape() const
 
 void UBGraphicsTriangle::paintGraduations(QPainter *painter)
 {
-    const int     centimeterGraduationHeight = 15;
-    const int halfCentimeterGraduationHeight = 10;
-    const int     millimeterGraduationHeight = 5;
-    const int       millimetersPerCentimeter = 10;
-    const int   millimetersPerHalfCentimeter = 5;
-
     qreal kx = (mOrientation == TopLeft || mOrientation == BottomLeft) ? 1 : -1;
     qreal ky = (mOrientation == BottomLeft || mOrientation == BottomRight) ? 1 : -1;
 
@@ -303,10 +313,10 @@ void UBGraphicsTriangle::paintGraduations(QPainter *painter)
     for (int millimeters = 0; millimeters < (rect().width() - sLeftEdgeMargin - sRoundingRadius) / sPixelsPerMillimeter; millimeters++)
     {
         int graduationX = rotationCenter().x() + kx * sPixelsPerMillimeter * millimeters;
-        int graduationHeight = (0 == millimeters % millimetersPerCentimeter) ?
-            centimeterGraduationHeight :
-            ((0 == millimeters % millimetersPerHalfCentimeter) ?
-                halfCentimeterGraduationHeight : millimeterGraduationHeight);
+        int graduationHeight = (0 == millimeters % UBGeometryUtils::millimetersPerCentimeter) ?
+            UBGeometryUtils::centimeterGraduationHeight :
+            ((0 == millimeters % UBGeometryUtils::millimetersPerHalfCentimeter) ?
+                UBGeometryUtils::halfCentimeterGraduationHeight : UBGeometryUtils::millimeterGraduationHeight);
 
         // Check that grad. line inside triangle
         qreal dx = (kx > 0) ? rect().width() - graduationX : graduationX - rect().x();
@@ -323,15 +333,15 @@ void UBGraphicsTriangle::paintGraduations(QPainter *painter)
         }
         
         painter->drawLine(QLine(graduationX, rotationCenter().y(), graduationX, rotationCenter().y() - ky * graduationHeight));
-        if (0 == millimeters % millimetersPerCentimeter)
+        if (0 == millimeters % UBGeometryUtils::millimetersPerCentimeter)
         {
-            QString text = QString("%1").arg((int)(millimeters / millimetersPerCentimeter));
+            QString text = QString("%1").arg((int)(millimeters / UBGeometryUtils::millimetersPerCentimeter));
             int textXRight = graduationX + fontMetrics.width(text) / 2;
             qreal textWidth = fontMetrics.width(text);
             qreal textHeight = fontMetrics.tightBoundingRect(text).height() + 5;
 
-            int textY = (ky > 0) ? rotationCenter().y() - 5 - centimeterGraduationHeight - textHeight
-                : rotationCenter().y() + 5 + centimeterGraduationHeight;
+            int textY = (ky > 0) ? rotationCenter().y() - 5 - UBGeometryUtils::centimeterGraduationHeight - textHeight
+                : rotationCenter().y() + 5 + UBGeometryUtils::centimeterGraduationHeight;
 
             bool bText = false;
             switch(mOrientation)
@@ -587,7 +597,7 @@ QCursor    UBGraphicsTriangle::flipCursor() const
 void UBGraphicsTriangle::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
     lastRect = rect().toRect();
-    lastPos = event->screenPos();
+    lastPos = sceneTransform().inverted().map(event->screenPos());
 
     if (resize1Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill))
     {
@@ -621,18 +631,13 @@ void UBGraphicsTriangle::mousePressEvent(QGraphicsSceneMouseEvent *event)
 void UBGraphicsTriangle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
  
-    QPoint currPos = event->screenPos();
-//     qDebug() << QString(" X: %1 ").arg(currPos.x());
-//     qDebug() << QString(" Y: %1 ").arg(currPos.y());
-
     if (!mResizing1 && !mResizing2 && !mRotating)
     {
         QGraphicsItem::mouseMoveEvent(event);
     }
     else
     {
-
-        //-----------------------------------------------//
+        QPoint currPos = sceneTransform().inverted().map(event->screenPos());
 
         if (mResizing1)
         {
@@ -763,7 +768,9 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
     UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
 
-    if (currentTool == UBStylusTool::Selector)  {
+    if (currentTool == UBStylusTool::Selector ||
+        currentTool == UBStylusTool::Play)
+    {
         mCloseSvgItem->setParentItem(this);
 
         mShowButtons = true;
@@ -798,6 +805,7 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 
 void UBGraphicsTriangle::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 {
+    mResizing1 = mResizing2 = mRotating = false;
     mShowButtons = false;
     setCursor(Qt::ArrowCursor);
     mCloseSvgItem->setVisible(false);
@@ -813,7 +821,8 @@ void UBGraphicsTriangle::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
 {
     UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool ();
 
-    if (currentTool == UBStylusTool::Selector)
+    if (currentTool == UBStylusTool::Selector ||
+        currentTool == UBStylusTool::Play)
     {
         mCloseSvgItem->setVisible(mShowButtons);
         mVFlipSvgItem->setVisible(mShowButtons);
diff --git a/Sankore-3.1/src/tools/UBGraphicsTriangle.h b/Sankore-3.1/src/tools/UBGraphicsTriangle.h
index da12bd0..57cb65f 100644
--- a/Sankore-3.1/src/tools/UBGraphicsTriangle.h
+++ b/Sankore-3.1/src/tools/UBGraphicsTriangle.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBGRAPHICSTRIANGLE_H_
 #define UBGRAPHICSTRIANGLE_H_
 
@@ -45,6 +52,7 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
 
 
         virtual UBItem* deepCopy(void) const;
+        virtual void copyItemParameters(UBItem *copy) const;
 
         virtual void StartLine(const QPointF& scenePos, qreal width);
         virtual void DrawLine(const QPointF& position, qreal width);
@@ -117,6 +125,7 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
         virtual void    hoverEnterEvent(QGraphicsSceneHoverEvent *event);
         virtual void    hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
         virtual void    hoverMoveEvent(QGraphicsSceneHoverEvent *event);
+        void paintGraduations(QPainter *painter);
 
     private:
 
@@ -131,6 +140,8 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
         bool mResizing2;
         bool mRotating;
         QRect lastRect;
+
+        // Coordinates are transformed....
         QPoint lastPos;
 
         QGraphicsSvgItem* mHFlipSvgItem;
@@ -140,9 +151,6 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
         static const QRect sDefaultRect;
         static const UBGraphicsTriangleOrientation sDefaultOrientation;
 
-        void paintGraduations(QPainter *painter);
-
-
         UBGraphicsTriangleOrientation mOrientation;
 
         QPointF A1, B1, C1, A2, B2, C2; // coordinates of points in ext and int triangles
diff --git a/Sankore-3.1/src/tools/UBToolsManager.cpp b/Sankore-3.1/src/tools/UBToolsManager.cpp
index 48cead6..f0fd830 100644
--- a/Sankore-3.1/src/tools/UBToolsManager.cpp
+++ b/Sankore-3.1/src/tools/UBToolsManager.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBToolsManager.h"
 
 #include "core/memcheck.h"
@@ -91,6 +98,12 @@ UBToolsManager::UBToolsManager(QObject *parent)
     mDescriptors << cache;
 //  --------------------------------------------------------------------------------
 
+//    aristo.id = "uniboardTool://uniboard.mnemis.com/aristo";
+//    aristo.icon = QPixmap(":/images/toolPalette/aristoTool.png");
+//    aristo.label = tr("Aristo");
+//    aristo.version = "1.0";
+//    mToolsIcon.insert(aristo.id, ":/images/toolPalette/aristoTool.png");
+//    mDescriptors << aristo;
 }
 
 UBToolsManager::~UBToolsManager()
diff --git a/Sankore-3.1/src/tools/UBToolsManager.h b/Sankore-3.1/src/tools/UBToolsManager.h
index 5474a9e..640bda9 100644
--- a/Sankore-3.1/src/tools/UBToolsManager.h
+++ b/Sankore-3.1/src/tools/UBToolsManager.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTOOLSMANAGER_H_
 #define UBTOOLSMANAGER_H_
 
@@ -76,6 +83,7 @@ class UBToolsManager : public QObject
         UBToolDescriptor triangle;
         UBToolDescriptor magnifier;
         UBToolDescriptor cache;
+        UBToolDescriptor aristo;
 
         QString iconFromToolId(QString id) { return mToolsIcon.value(id);}
 
diff --git a/Sankore-3.1/src/tools/tools.pri b/Sankore-3.1/src/tools/tools.pri
index 90e6965..0196f84 100644
--- a/Sankore-3.1/src/tools/tools.pri
+++ b/Sankore-3.1/src/tools/tools.pri
@@ -1,20 +1,21 @@
-
-HEADERS      += src/tools/UBGraphicsRuler.h \
-		src/tools/UBGraphicsTriangle.h \
+HEADERS     +=  src/tools/UBGraphicsRuler.h \
+                src/tools/UBGraphicsTriangle.h \
                 src/tools/UBGraphicsProtractor.h \
                 src/tools/UBGraphicsCompass.h \
+                src/tools/UBGraphicsAristo.h \
                 src/tools/UBToolsManager.h  \
                 src/tools/UBGraphicsCurtainItem.h \
                 src/tools/UBGraphicsCurtainItemDelegate.h \
                 src/tools/UBAbstractDrawRuler.h \
-    src/tools/UBGraphicsCache.h
-                
-SOURCES      += src/tools/UBGraphicsRuler.cpp \
-		src/tools/UBGraphicsTriangle.cpp \
+                src/tools/UBGraphicsCache.h
+
+SOURCES     +=  src/tools/UBGraphicsRuler.cpp \
+                src/tools/UBGraphicsTriangle.cpp \
                 src/tools/UBGraphicsProtractor.cpp \
                 src/tools/UBGraphicsCompass.cpp \
+                src/tools/UBGraphicsAristo.cpp \
                 src/tools/UBToolsManager.cpp \
                 src/tools/UBGraphicsCurtainItem.cpp \
                 src/tools/UBGraphicsCurtainItemDelegate.cpp \
                 src/tools/UBAbstractDrawRuler.cpp \
-    src/tools/UBGraphicsCache.cpp
+                src/tools/UBGraphicsCache.cpp
diff --git a/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp b/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp
index 1a1a900..355ac43 100644
--- a/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp
+++ b/Sankore-3.1/src/transition/UniboardSankoreTransition.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UniboardSankoreTransition.h"
 #include "core/UBSettings.h"
 #include "frameworks/UBFileSystemUtils.h"
diff --git a/Sankore-3.1/src/transition/UniboardSankoreTransition.h b/Sankore-3.1/src/transition/UniboardSankoreTransition.h
index 69adf35..662b440 100644
--- a/Sankore-3.1/src/transition/UniboardSankoreTransition.h
+++ b/Sankore-3.1/src/transition/UniboardSankoreTransition.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 #ifndef UNIBOARDSANKORETRANSITION_H
 #define UNIBOARDSANKORETRANSITION_H
 
diff --git a/Sankore-3.1/src/web/UBOEmbedParser.cpp b/Sankore-3.1/src/web/UBOEmbedParser.cpp
index 786d288..a5425f2 100644
--- a/Sankore-3.1/src/web/UBOEmbedParser.cpp
+++ b/Sankore-3.1/src/web/UBOEmbedParser.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QRegExp>
 #include <QStringList>
 #include <QDomDocument>
diff --git a/Sankore-3.1/src/web/UBOEmbedParser.h b/Sankore-3.1/src/web/UBOEmbedParser.h
index 2c0c054..0fcf386 100644
--- a/Sankore-3.1/src/web/UBOEmbedParser.h
+++ b/Sankore-3.1/src/web/UBOEmbedParser.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBOEMBEDPARSER_H
 #define UBOEMBEDPARSER_H
 
diff --git a/Sankore-3.1/src/web/UBRoutedMouseEventWebView.cpp b/Sankore-3.1/src/web/UBRoutedMouseEventWebView.cpp
deleted file mode 100644
index 77c3d01..0000000
--- a/Sankore-3.1/src/web/UBRoutedMouseEventWebView.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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/>.
- */
-
-#include "UBRoutedMouseEventWebView.h"
-
-#include <QtCore>
-#include <QtWebKit>
-#include <QtGui>
-
-#include "core/memcheck.h"
-
-UBRoutedMouseEventWebView::UBRoutedMouseEventWebView(QWidget * parent)
-    : QWebView(parent)
-{
-    QWebView::setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
-}
-
-UBRoutedMouseEventWebView::~UBRoutedMouseEventWebView()
-{
-    // NOOP
-}
-
-
-void UBRoutedMouseEventWebView::mouseMoveEvent(QMouseEvent* ev)
-{
-    QWebPage* p = page();
-
-    if (p)
-    {
-        p->event(ev);
-    }
-}
-
-void UBRoutedMouseEventWebView::mousePressEvent(QMouseEvent* ev)
-{
-    QWebPage* p = page();
-
-    if (p)
-    {
-        p->event(ev);
-    }
-}
-
-void UBRoutedMouseEventWebView::mouseDoubleClickEvent(QMouseEvent* ev)
-{
-    QWebPage* p = page();
-
-    if (p)
-    {
-        p->event(ev);
-    }
-}
-
-void UBRoutedMouseEventWebView::mouseReleaseEvent(QMouseEvent* ev)
-{
-    QWebPage* p = page();
-
-    if (p)
-    {
-        p->event(ev);
-    }
-}
-
-void UBRoutedMouseEventWebView::contextMenuEvent(QContextMenuEvent* ev)
-{
-    QWebPage* p = page();
-
-    if (p)
-    {
-        p->event(ev);
-    }
-}
-
-
-void UBRoutedMouseEventWebView::wheelEvent(QWheelEvent* ev)
-{
-    QWebPage* p = page();
-
-    if (p)
-    {
-        p->event(ev);
-    }
-}
-//void UBRoutedMouseEventWebView::dropEvent(QDropEvent *event)
-//{
-////    QWebView::dropEvent(event);
-//    event->accept();
-//}
diff --git a/Sankore-3.1/src/web/UBRoutedMouseEventWebView.h b/Sankore-3.1/src/web/UBRoutedMouseEventWebView.h
deleted file mode 100644
index 3c03096..0000000
--- a/Sankore-3.1/src/web/UBRoutedMouseEventWebView.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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/>.
- */
-
-#ifndef UBROUTEDMOUSEEVENTWEBVIEW_H_
-#define UBROUTEDMOUSEEVENTWEBVIEW_H_
-
-#include <QtWebKit>
-
-/*
- * This class changes the routing of mouse events.
- * Qt 4.5.2 does not report back the "accepted" flag set
- * by WebKit, as we want to know if a mouse event has been
- * consumed by webKit, we override them without keeping the
- * accepted flag status
- */
-
-class UBRoutedMouseEventWebView : public QWebView
-{
-    public:
-        UBRoutedMouseEventWebView(QWidget * parent = 0 );
-        virtual ~UBRoutedMouseEventWebView();
-
-    protected:
-        virtual void mouseMoveEvent(QMouseEvent* ev);
-        virtual void mousePressEvent(QMouseEvent* ev);
-        virtual void mouseDoubleClickEvent(QMouseEvent* ev);
-        virtual void mouseReleaseEvent(QMouseEvent* ev);
-        virtual void contextMenuEvent(QContextMenuEvent* ev);
-        virtual void wheelEvent(QWheelEvent* ev);
-//        virtual void dropEvent(QDropEvent *);
-};
-
-#endif /* UBROUTEDMOUSEEVENTWEBVIEW_H_ */
diff --git a/Sankore-3.1/src/web/UBTrapFlashController.cpp b/Sankore-3.1/src/web/UBTrapFlashController.cpp
index 830d4a4..6e8016e 100644
--- a/Sankore-3.1/src/web/UBTrapFlashController.cpp
+++ b/Sankore-3.1/src/web/UBTrapFlashController.cpp
@@ -1,16 +1,22 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -31,6 +37,8 @@
 
 #include "board/UBBoardController.h"
 
+#include "frameworks/UBPlatformUtils.h"
+
 #include "ui_trapFlash.h"
 
 #include "core/memcheck.h"
@@ -198,9 +206,12 @@ void UBTrapFlashController::createWidget()
         // flash widget
         UBWebKitUtils::HtmlObject selectedObject = mAvailableFlashes.at(selectedIndex - 1);
         UBApplication::applicationController->showBoard();
-        UBApplication::boardController->downloadURL(QUrl(selectedObject.source), QPoint(0, 0), QSize(selectedObject.width, selectedObject.height));
+        UBApplication::boardController->downloadURL(QUrl(selectedObject.source), QString(), QPoint(0, 0), QSize(selectedObject.width, selectedObject.height));
     }
 
+    QString freezedWidgetPath = UBPlatformUtils::applicationResourcesDirectory() + "/etc/freezedWidgetWrapper.html";
+    mTrapFlashUi->webView->load(QUrl::fromLocalFile(freezedWidgetPath));
+
     mTrapFlashDialog->hide();
 }
 
@@ -365,6 +376,7 @@ QString UBTrapFlashController::generateFullPageHtml(const QString& pDirPath, boo
 QString UBTrapFlashController::generateHtml(const UBWebKitUtils::HtmlObject& pObject,
         const QString& pDirPath, bool pGenerateFile)
 {
+    qDebug() << pObject.source;
     QUrl objectUrl(pObject.source);
     QString objectFullUrl = pObject.source;
     if (!objectUrl.isValid())
@@ -466,9 +478,13 @@ QString UBTrapFlashController::generateHtml(const UBWebKitUtils::HtmlObject& pOb
 
 QString UBTrapFlashController::widgetNameForObject(UBWebKitUtils::HtmlObject pObject)
 {
-    int lastSlashIndex = pObject.source.lastIndexOf("/");
+    QString url = pObject.source;
+    int parametersIndex = url.indexOf("?");
+    if(parametersIndex != -1)
+        url = url.left(parametersIndex);
+    int lastSlashIndex = url.lastIndexOf("/");
 
-    QString result = pObject.source.right(pObject.source.length() - lastSlashIndex);
+    QString result = url.right(url.length() - lastSlashIndex);
     result = UBFileSystemUtils::cleanName(result);
 
     return result;
diff --git a/Sankore-3.1/src/web/UBTrapFlashController.h b/Sankore-3.1/src/web/UBTrapFlashController.h
index f38a128..44b53f1 100644
--- a/Sankore-3.1/src/web/UBTrapFlashController.h
+++ b/Sankore-3.1/src/web/UBTrapFlashController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBTRAPFLASHCONTROLLER_H_
 #define UBTRAPFLASHCONTROLLER_H_
 
diff --git a/Sankore-3.1/src/web/UBWebController.cpp b/Sankore-3.1/src/web/UBWebController.cpp
index 2e97586..9a57597 100644
--- a/Sankore-3.1/src/web/UBWebController.cpp
+++ b/Sankore-3.1/src/web/UBWebController.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 #include <QDomDocument>
 #include <QXmlQuery>
@@ -32,7 +39,6 @@
 #include "network/UBNetworkAccessManager.h"
 
 #include "gui/UBWidgetMirror.h"
-#include "gui/UBScreenMirror.h"
 #include "gui/UBMainWindow.h"
 #include "gui/UBWebToolsPalette.h"
 #include "gui/UBKeyboardPalette.h"
@@ -65,6 +71,11 @@ UBWebController::UBWebController(UBMainWindow* mainWindow)
 {
     connect(mMainWindow->actionWebTools, SIGNAL(toggled(bool)), this, SLOT(toggleWebToolsPalette(bool)));
 
+    mStackedWidget = new QStackedWidget();
+    mStackedWidget->addWidget(new QWidget(mStackedWidget));
+    mStackedWidget->addWidget(new QWidget(mStackedWidget));
+    mStackedWidget->addWidget(new QWidget(mStackedWidget));
+
     mMainWindow->addWebWidget(mStackedWidget);
 
     for (int i = 0; i < TotalNumberOfWebInstances; i += 1){
@@ -77,13 +88,15 @@ UBWebController::UBWebController(UBMainWindow* mainWindow)
 
     // TODO : Comment the next line to continue the Youtube button bugfix
     initialiazemOEmbedProviders();
-
 }
 
 
 UBWebController::~UBWebController()
 {
     // NOOP
+    if (mStackedWidget) {
+        delete mStackedWidget;
+    }
 }
 
 void UBWebController::initialiazemOEmbedProviders()
@@ -120,6 +133,7 @@ void UBWebController::webBrowserInstance()
         mCurrentWebBrowser = &mWebBrowserList[WebBrowser];
         mToolsCurrentPalette = &mToolsPaletteList[WebBrowser];
         mToolsPalettePositionned = mToolsPalettePositionnedList[WebBrowser];
+
         if (!(*mCurrentWebBrowser))
         {
             (*mCurrentWebBrowser) = new WBBrowserWindow(mMainWindow->centralWidget(), mMainWindow);
@@ -135,6 +149,10 @@ void UBWebController::webBrowserInstance()
             mMainWindow->actionBookmarks->setVisible(showAddBookmarkButtons);
             mMainWindow->actionAddBookmark->setVisible(showAddBookmarkButtons);
 
+            mStackedWidget->setCurrentIndex(WebBrowser);
+            if (mStackedWidget->currentWidget()) {
+                mStackedWidget->removeWidget(mStackedWidget->currentWidget());
+            }
             mStackedWidget->insertWidget(WebBrowser, (*mCurrentWebBrowser));
 
             showTabAtTop(UBSettings::settings()->appToolBarPositionedAtTop->get().toBool());
@@ -151,9 +169,8 @@ void UBWebController::webBrowserInstance()
             (*mCurrentWebBrowser)->tabWidget()->lineEdits()->show();
         }
 
-        UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
-
         mStackedWidget->setCurrentIndex(WebBrowser);
+        UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
         mMainWindow->switchToWebWidget();
 
         setupPalettes();
@@ -166,7 +183,6 @@ void UBWebController::webBrowserInstance()
 
     if (mDownloadViewIsVisible)
         WBBrowserWindow::downloadManager()->show();
-
 }
 
 void UBWebController::tutorialWebInstance()
@@ -178,10 +194,8 @@ void UBWebController::tutorialWebInstance()
     QString tutorialPath = "/etc/Tutorial/tutorial" + language + "/index.html";
 #if defined(Q_WS_MAC)
     tutorialHtmlIndexFile = QApplication::applicationDirPath()+ "/../Resources" + tutorialPath;
-#elif defined(Q_WS_WIN)
-    tutorialHtmlIndexFile = QApplication::applicationDirPath()+ tutorialPath;
 #else
-    tutorialHtmlIndexFile = QApplication::applicationDirPath()+ tutorialPath;
+    tutorialHtmlIndexFile = QApplication::applicationDirPath() + tutorialPath;
 #endif
 
     QUrl currentUrl = QUrl::fromLocalFile(tutorialHtmlIndexFile);
@@ -194,13 +208,17 @@ void UBWebController::tutorialWebInstance()
     {
         mCurrentWebBrowser = &mWebBrowserList[Tutorial];
         mToolsPalettePositionned = &mToolsPalettePositionnedList[Tutorial];
+
         if (!(*mCurrentWebBrowser))
         {
             (*mCurrentWebBrowser) = new WBBrowserWindow(mMainWindow->centralWidget(), mMainWindow, true);
             connect((*mCurrentWebBrowser), SIGNAL(activeViewChange(QWidget*)), this, SLOT(setSourceWidget(QWidget*)));
 
+            mStackedWidget->setCurrentIndex(Tutorial);
+            if (mStackedWidget->currentWidget()) {
+                mStackedWidget->removeWidget(mStackedWidget->currentWidget());
+            }
             mStackedWidget->insertWidget(Tutorial, (*mCurrentWebBrowser));
-
             adaptToolBar();
 
             mTrapFlashController = new UBTrapFlashController((*mCurrentWebBrowser));
@@ -212,13 +230,12 @@ void UBWebController::tutorialWebInstance()
             (*mCurrentWebBrowser)->tabWidget()->lineEdits()->hide();
 
         }
-
-        UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
-
+        else
+        	(*mCurrentWebBrowser)->loadUrl(currentUrl);
 
         mStackedWidget->setCurrentIndex(Tutorial);
+        UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
         mMainWindow->switchToWebWidget();
-
         screenLayoutChanged();
 
         bool mirroring = UBSettings::settings()->webShowPageImmediatelyOnMirroredScreen->get().toBool();
@@ -247,6 +264,7 @@ void UBWebController::paraschoolWebInstance()
     if (UBSettings::settings()->webUseExternalBrowser->get().toBool()){
         QDesktopServices::openUrl(currentUrl);
     }
+
     else {
         mCurrentWebBrowser = &mWebBrowserList[Paraschool];
         mToolsCurrentPalette = &mToolsPaletteList[Paraschool];
@@ -255,6 +273,10 @@ void UBWebController::paraschoolWebInstance()
             (*mCurrentWebBrowser) = new WBBrowserWindow(mMainWindow->centralWidget(), mMainWindow, true);
             connect((*mCurrentWebBrowser), SIGNAL(activeViewChange(QWidget*)), this, SLOT(setSourceWidget(QWidget*)));
 
+            mStackedWidget->setCurrentIndex(Paraschool);
+            if (mStackedWidget->currentWidget()) {
+                mStackedWidget->removeWidget(mStackedWidget->currentWidget());
+            }
             mStackedWidget->insertWidget(Paraschool, (*mCurrentWebBrowser));
 
             adaptToolBar();
@@ -268,11 +290,9 @@ void UBWebController::paraschoolWebInstance()
 
         }
 
-        UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
-
         mStackedWidget->setCurrentIndex(Paraschool);
+        UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget());
         mMainWindow->switchToWebWidget();
-
         screenLayoutChanged();
 
         bool mirroring = UBSettings::settings()->webShowPageImmediatelyOnMirroredScreen->get().toBool();
@@ -293,6 +313,7 @@ void UBWebController::show(WebInstance type)
         break;
     case Paraschool:
         paraschoolWebInstance();
+        break;
     default:
         qCritical() << __FILE__ << " non supported web instance type " << QString::number(type) ;
         break;
@@ -424,7 +445,7 @@ void UBWebController::setupPalettes()
     if(!(*mToolsCurrentPalette))
     {
         (*mToolsCurrentPalette) = new UBWebToolsPalette(UBApplication::mainWindow, false);
-
+        UBApplication::boardController->paletteManager()->setCurrentWebToolsPalette(*mToolsCurrentPalette);
 #ifndef Q_WS_WIN
         if (UBPlatformUtils::hasVirtualKeyboard() && UBApplication::boardController->paletteManager()->mKeyboardPalette)
             connect(UBApplication::boardController->paletteManager()->mKeyboardPalette, SIGNAL(closed()),
@@ -719,15 +740,15 @@ bool UBWebController::isEduMedia(const QUrl& pUrl)
 
 void UBWebController::loadUrl(const QUrl& url)
 {
+    bool webBrowserAlreadyInstanciated = dynamic_cast<WBBrowserWindow*>(mStackedWidget->widget(WebBrowser)) != NULL;
+    UBApplication::applicationController->showInternet();
     if (UBSettings::settings()->webUseExternalBrowser->get().toBool())
     {
         QDesktopServices::openUrl(url);
     }
     else
     {
-        UBApplication::applicationController->showInternet();
-
-        if (mCurrentWebBrowser && !(*mCurrentWebBrowser)) {
+        if (!webBrowserAlreadyInstanciated) {
             (*mCurrentWebBrowser)->loadUrl(url);
         }
         else {
diff --git a/Sankore-3.1/src/web/UBWebController.h b/Sankore-3.1/src/web/UBWebController.h
index 1636826..c2eae74 100644
--- a/Sankore-3.1/src/web/UBWebController.h
+++ b/Sankore-3.1/src/web/UBWebController.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBCONTROLLER_H_
 #define UBWEBCONTROLLER_H_
 
@@ -23,7 +30,6 @@
 
 class WBBrowserWindow;
 class UBApplication;
-class UBScreenMirror;
 class UBTrapFlashController;
 class UBMainWindow;
 class UBWebToolsPalette;
@@ -105,7 +111,7 @@ class UBWebController : public QObject
         void lookForEmbedContent(QString* pHtml, QString tag, QString attribute, QList<QUrl>* pList);
         void checkForOEmbed(QString* pHtml);
 
-        QStackedWidget mStackedWidget[TotalNumberOfWebInstances];
+        QStackedWidget *mStackedWidget;
 
         UBMainWindow *mMainWindow;
 
diff --git a/Sankore-3.1/src/web/UBWebKitUtils.cpp b/Sankore-3.1/src/web/UBWebKitUtils.cpp
index d4c0f45..85ee2ef 100644
--- a/Sankore-3.1/src/web/UBWebKitUtils.cpp
+++ b/Sankore-3.1/src/web/UBWebKitUtils.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWebKitUtils.h"
 
 #include "core/memcheck.h"
diff --git a/Sankore-3.1/src/web/UBWebKitUtils.h b/Sankore-3.1/src/web/UBWebKitUtils.h
index 0adc43f..21721ce 100644
--- a/Sankore-3.1/src/web/UBWebKitUtils.h
+++ b/Sankore-3.1/src/web/UBWebKitUtils.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBKITUTILS_H_
 #define UBWEBKITUTILS_H_
 
diff --git a/Sankore-3.1/src/web/UBWebPage.cpp b/Sankore-3.1/src/web/UBWebPage.cpp
index 5648805..8308b83 100644
--- a/Sankore-3.1/src/web/UBWebPage.cpp
+++ b/Sankore-3.1/src/web/UBWebPage.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "UBWebPage.h"
 
 #include <QtCore>
diff --git a/Sankore-3.1/src/web/UBWebPage.h b/Sankore-3.1/src/web/UBWebPage.h
index 4c4882d..0a1e325 100644
--- a/Sankore-3.1/src/web/UBWebPage.h
+++ b/Sankore-3.1/src/web/UBWebPage.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBPAGE_H_
 #define UBWEBPAGE_H_
 
diff --git a/Sankore-3.1/src/web/UBWebPluginWidget.cpp b/Sankore-3.1/src/web/UBWebPluginWidget.cpp
index a6973d6..8aa1d60 100644
--- a/Sankore-3.1/src/web/UBWebPluginWidget.cpp
+++ b/Sankore-3.1/src/web/UBWebPluginWidget.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 
 #include "pdf/UBWebPluginPDFWidget.h"
diff --git a/Sankore-3.1/src/web/UBWebPluginWidget.h b/Sankore-3.1/src/web/UBWebPluginWidget.h
index 1dd5a4d..1d5ca36 100644
--- a/Sankore-3.1/src/web/UBWebPluginWidget.h
+++ b/Sankore-3.1/src/web/UBWebPluginWidget.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef UBWEBPLUGINWIDGET_H
 #define UBWEBPLUGINWIDGET_H
 
diff --git a/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp b/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp
index 7cfb79d..c06d517 100644
--- a/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp
+++ b/Sankore-3.1/src/web/browser/WBBrowserWindow.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -270,28 +278,6 @@ void WBBrowserWindow::setupToolBarForTutorial()
         if (tb && tb->menu())
             tb->setMenu(NULL);
     }
-//    mTabWidget->addWebAction(mUniboardMainWindow->actionWebReload, QWebPage::Reload);
-//    mTabWidget->addWebAction(mUniboardMainWindow->actionStopLoading, QWebPage::Stop);
-
-//    mWebToolBar->insertWidget(mUniboardMainWindow->actionWebBigger, mTabWidget->lineEditStack());
-
-//    mSearchToolBar = new WBToolbarSearch(mWebToolBar);
-
-//    mSearchAction = mWebToolBar->insertWidget(mUniboardMainWindow->actionWebBigger, mSearchToolBar);
-
-//    connect(mSearchToolBar, SIGNAL(search(const QUrl&)), SLOT(loadUrl(const QUrl&)));
-
-//    mChaseWidget = new WBChaseWidget(this);
-//    mWebToolBar->insertWidget(mUniboardMainWindow->actionWebBigger, mChaseWidget);
-
-//    mWebToolBar->insertSeparator(mUniboardMainWindow->actionWebBigger);
-
-//    connect(mUniboardMainWindow->actionHome, SIGNAL(triggered()), this , SLOT(slotHome()));
-
-//    connect(mUniboardMainWindow->actionBookmarks, SIGNAL(triggered()), this , SLOT(bookmarks()));
-//    connect(mUniboardMainWindow->actionAddBookmark, SIGNAL(triggered()), this , SLOT(addBookmark()));
-//    connect(mUniboardMainWindow->actionWebBigger, SIGNAL(triggered()), this , SLOT(slotViewZoomIn()));
-//    connect(mUniboardMainWindow->actionWebSmaller, SIGNAL(triggered()), this , SLOT(slotViewZoomOut()));
 
     mWebToolBar->show();
 }
@@ -373,7 +359,7 @@ void WBBrowserWindow::loadUrl(const QUrl &url)
     if (!currentTabWebView() || !url.isValid())
         return;
 
-    mTabWidget->currentLineEdit()->setText(QString::fromUtf8(url.toEncoded()));
+    mTabWidget->currentLineEdit()->setText(url.toString());
     mTabWidget->loadUrlInCurrentTab(url);
 }
 
@@ -662,4 +648,4 @@ void WBBrowserWindow::openActionUrl(QAction *action)
         history->goToItem(history->backItems(-1*offset).first()); 
     else if (offset > 0)
         history->goToItem(history->forwardItems(history->count() - offset + 1).back()); 
- }
\ No newline at end of file
+ }
diff --git a/Sankore-3.1/src/web/browser/WBBrowserWindow.h b/Sankore-3.1/src/web/browser/WBBrowserWindow.h
index 40cab32..1e78445 100644
--- a/Sankore-3.1/src/web/browser/WBBrowserWindow.h
+++ b/Sankore-3.1/src/web/browser/WBBrowserWindow.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBChaseWidget.cpp b/Sankore-3.1/src/web/browser/WBChaseWidget.cpp
index 8faf2f0..eb5a017 100644
--- a/Sankore-3.1/src/web/browser/WBChaseWidget.cpp
+++ b/Sankore-3.1/src/web/browser/WBChaseWidget.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBChaseWidget.h b/Sankore-3.1/src/web/browser/WBChaseWidget.h
index ec7e340..3922fc3 100644
--- a/Sankore-3.1/src/web/browser/WBChaseWidget.h
+++ b/Sankore-3.1/src/web/browser/WBChaseWidget.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBDownloadManager.cpp b/Sankore-3.1/src/web/browser/WBDownloadManager.cpp
index 1b3206f..0579f06 100644
--- a/Sankore-3.1/src/web/browser/WBDownloadManager.cpp
+++ b/Sankore-3.1/src/web/browser/WBDownloadManager.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBDownloadManager.h b/Sankore-3.1/src/web/browser/WBDownloadManager.h
index 60977c3..b6da6d3 100644
--- a/Sankore-3.1/src/web/browser/WBDownloadManager.h
+++ b/Sankore-3.1/src/web/browser/WBDownloadManager.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBEditTableView.cpp b/Sankore-3.1/src/web/browser/WBEditTableView.cpp
index 7e9d1bb..699e481 100644
--- a/Sankore-3.1/src/web/browser/WBEditTableView.cpp
+++ b/Sankore-3.1/src/web/browser/WBEditTableView.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBEditTableView.h b/Sankore-3.1/src/web/browser/WBEditTableView.h
index 915d743..efcd6d9 100644
--- a/Sankore-3.1/src/web/browser/WBEditTableView.h
+++ b/Sankore-3.1/src/web/browser/WBEditTableView.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBHistory.cpp b/Sankore-3.1/src/web/browser/WBHistory.cpp
index 9801be6..bb7ecd0 100644
--- a/Sankore-3.1/src/web/browser/WBHistory.cpp
+++ b/Sankore-3.1/src/web/browser/WBHistory.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBHistory.h b/Sankore-3.1/src/web/browser/WBHistory.h
index 1b42565..96abf51 100644
--- a/Sankore-3.1/src/web/browser/WBHistory.h
+++ b/Sankore-3.1/src/web/browser/WBHistory.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBModelMenu.cpp b/Sankore-3.1/src/web/browser/WBModelMenu.cpp
index 8ba7faf..a51cfb1 100644
--- a/Sankore-3.1/src/web/browser/WBModelMenu.cpp
+++ b/Sankore-3.1/src/web/browser/WBModelMenu.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBModelMenu.h b/Sankore-3.1/src/web/browser/WBModelMenu.h
index b13e6f3..d58854c 100644
--- a/Sankore-3.1/src/web/browser/WBModelMenu.h
+++ b/Sankore-3.1/src/web/browser/WBModelMenu.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp b/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp
index cffca18..3127ad3 100644
--- a/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp
+++ b/Sankore-3.1/src/web/browser/WBSearchLineEdit.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSearchLineEdit.h b/Sankore-3.1/src/web/browser/WBSearchLineEdit.h
index b7ce0f2..c1c8df8 100644
--- a/Sankore-3.1/src/web/browser/WBSearchLineEdit.h
+++ b/Sankore-3.1/src/web/browser/WBSearchLineEdit.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp b/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp
index f66bb34..d677741 100644
--- a/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp
+++ b/Sankore-3.1/src/web/browser/WBSqueezeLabel.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBSqueezeLabel.h b/Sankore-3.1/src/web/browser/WBSqueezeLabel.h
index 51bf327..99b1c9b 100644
--- a/Sankore-3.1/src/web/browser/WBSqueezeLabel.h
+++ b/Sankore-3.1/src/web/browser/WBSqueezeLabel.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBTabWidget.cpp b/Sankore-3.1/src/web/browser/WBTabWidget.cpp
index 2d610a1..ecadffa 100644
--- a/Sankore-3.1/src/web/browser/WBTabWidget.cpp
+++ b/Sankore-3.1/src/web/browser/WBTabWidget.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBTabWidget.h b/Sankore-3.1/src/web/browser/WBTabWidget.h
index 4e7874b..76bc2b6 100644
--- a/Sankore-3.1/src/web/browser/WBTabWidget.h
+++ b/Sankore-3.1/src/web/browser/WBTabWidget.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp b/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp
index 87b46b8..2aed045 100644
--- a/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp
+++ b/Sankore-3.1/src/web/browser/WBToolBarSearch.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBToolBarSearch.h b/Sankore-3.1/src/web/browser/WBToolBarSearch.h
index cca574c..8d41c33 100644
--- a/Sankore-3.1/src/web/browser/WBToolBarSearch.h
+++ b/Sankore-3.1/src/web/browser/WBToolBarSearch.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp b/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp
index d2eb091..aa143f8 100644
--- a/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp
+++ b/Sankore-3.1/src/web/browser/WBUrlLineEdit.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -58,6 +66,8 @@
 #include "WBSearchLineEdit.h"
 #include "WBWebView.h"
 
+#include "globals/UBGlobals.h"
+
 #include <QtGui>
 
 #include "core/memcheck.h"
@@ -68,7 +78,7 @@ WBExLineEdit::WBExLineEdit(QWidget *parent)
     , mLineEdit(new QLineEdit(this))
     , mClearButton(0)
 {
-    setFocusPolicy(mLineEdit->focusPolicy());
+	setFocusPolicy(mLineEdit->focusPolicy());
     setAttribute(Qt::WA_InputMethodEnabled);
     setSizePolicy(mLineEdit->sizePolicy());
     setBackgroundRole(mLineEdit->backgroundRole());
@@ -89,10 +99,8 @@ WBExLineEdit::WBExLineEdit(QWidget *parent)
 
     // clearButton
     mClearButton = new WBClearButton(this);
-    connect(mClearButton, SIGNAL(clicked()),
-            mLineEdit, SLOT(clear()));
-    connect(mLineEdit, SIGNAL(textChanged(const QString&)),
-            mClearButton, SLOT(textChanged(const QString&)));
+    connect(mClearButton, SIGNAL(clicked()), mLineEdit, SLOT(clear()));
+    connect(mLineEdit, SIGNAL(textChanged(const QString&)), mClearButton, SLOT(textChanged(const QString&)));
 
     mClearButton->hide();
 }
@@ -101,7 +109,6 @@ void WBExLineEdit::setLeftWidget(QWidget *widget)
 {
     delete mLeftWidget;
     mLeftWidget = widget;
-    //m_leftWidget->show();
 
     updateGeometries();
 }
@@ -292,7 +299,7 @@ void WBUrlLineEdit::setWebView(WBWebView *pWebView)
 
 void WBUrlLineEdit::webViewUrlChanged(const QUrl &url)
 {
-    mLineEdit->setText(QString::fromUtf8(url.toEncoded()));
+    mLineEdit->setText(url.toString());
     mLineEdit->setCursorPosition(0);
 }
 
diff --git a/Sankore-3.1/src/web/browser/WBUrlLineEdit.h b/Sankore-3.1/src/web/browser/WBUrlLineEdit.h
index ff582e7..d9519b3 100644
--- a/Sankore-3.1/src/web/browser/WBUrlLineEdit.h
+++ b/Sankore-3.1/src/web/browser/WBUrlLineEdit.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp b/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp
index 1792a51..3911585 100644
--- a/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp
+++ b/Sankore-3.1/src/web/browser/WBWebTrapWebView.cpp
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #include "WBWebTrapWebView.h"
 
 #include <QtGui>
@@ -281,7 +288,7 @@ void WBWebTrapWebView::trapElementAtPos(const QPoint& pos)
             emit objectCaptured(QUrl(page()->currentFrame()->url().toString() + "/" + source), type,
                     htr.boundingRect().width(), htr.boundingRect().height());
 
-            UBApplication::boardController->downloadURL(QUrl(source), QPointF(0.0, 0.0));
+            UBApplication::boardController->downloadURL(QUrl(source));
             UBApplication::applicationController->showBoard();
         }
     }
diff --git a/Sankore-3.1/src/web/browser/WBWebTrapWebView.h b/Sankore-3.1/src/web/browser/WBWebTrapWebView.h
index 761e138..bdeedc9 100644
--- a/Sankore-3.1/src/web/browser/WBWebTrapWebView.h
+++ b/Sankore-3.1/src/web/browser/WBWebTrapWebView.h
@@ -1,18 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef WBWEBTRAPWEBVIEW_H_
 #define WBWEBTRAPWEBVIEW_H_
 
diff --git a/Sankore-3.1/src/web/browser/WBWebView.cpp b/Sankore-3.1/src/web/browser/WBWebView.cpp
index b58fbdd..d37483f 100644
--- a/Sankore-3.1/src/web/browser/WBWebView.cpp
+++ b/Sankore-3.1/src/web/browser/WBWebView.cpp
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
@@ -187,7 +195,7 @@ void WBWebPage::handleUnsupportedContent(QNetworkReply *reply)
     if (!isPDF && reply->error() == QNetworkReply::NoError)
     {
         if(contentType == "application/widget")
-            WBBrowserWindow::downloadManager()->handleUnsupportedContent(reply,false, UBSettings::settings()->applicationGipLibraryDirectory());
+            WBBrowserWindow::downloadManager()->handleUnsupportedContent(reply,false, UBSettings::settings()->userGipLibraryDirectory());
         else
             WBBrowserWindow::downloadManager()->handleUnsupportedContent(reply);
         return;
diff --git a/Sankore-3.1/src/web/browser/WBWebView.h b/Sankore-3.1/src/web/browser/WBWebView.h
index cefe6bf..3a583d1 100644
--- a/Sankore-3.1/src/web/browser/WBWebView.h
+++ b/Sankore-3.1/src/web/browser/WBWebView.h
@@ -1,17 +1,25 @@
 /*
- * This program is free software: you can redistribute it and/or modify
+ * Copyright (C) 2012 Webdoc SA
+ *
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software: you can 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.
+ * the Free Software Foundation, either version 3 of the License,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
  *
- * This program is distributed in the hope that it will be useful,
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR 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/>.
+ * along with Open-Sankoré.  If not, see <http://www.gnu.org/licenses/>.
  */
+
+
 /****************************************************************************
 **
 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
diff --git a/Sankore-3.1/src/web/web.pri b/Sankore-3.1/src/web/web.pri
index fcc383c..0b447ef 100644
--- a/Sankore-3.1/src/web/web.pri
+++ b/Sankore-3.1/src/web/web.pri
@@ -13,7 +13,6 @@ HEADERS      += src/web/UBWebController.h \
                 src/web/UBWebKitUtils.h \
                 src/web/UBWebPage.h \
                 src/web/UBWebPluginWidget.h \
-                src/web/UBRoutedMouseEventWebView.h \
                 src/web/UBOEmbedParser.h\
                 src/web/browser/WBBrowserWindow.h \
                 src/web/browser/WBChaseWidget.h \
@@ -35,7 +34,6 @@ SOURCES      += src/web/UBWebController.cpp \
                 src/web/UBWebKitUtils.cpp \
                 src/web/UBWebPage.cpp \
                 src/web/UBWebPluginWidget.cpp \
-                src/web/UBRoutedMouseEventWebView.cpp \
                 src/web/UBOEmbedParser.cpp\
                 src/web/browser/WBBrowserWindow.cpp \
                 src/web/browser/WBChaseWidget.cpp \
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp
index 7c8d060..bf66d73 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.cpp
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #include <string>
 #include <iostream>
 #include <fstream>
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h
index 3ba6556..ae7ebb6 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashReporterSymbolSupplier.h
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef CRASHREPORTERSYMBOLSUPPLIER_H_
 #define CRASHREPORTERSYMBOLSUPPLIER_H_
 
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp
index bbce1a5..f7ca2c1 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.cpp
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #include "CrashWindow.h"
 #include "ui_CrashReportViewer.h"
 #include "CrashReporterSymbolSupplier.h"
diff --git a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h
index d8b4618..d7e5c57 100644
--- a/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h
+++ b/Sankore-3.1/tools/CrashReportViewer/CrashWindow.h
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #ifndef CRASHWINDOW_H_
 #define CRASHWINDOW_H_
 
diff --git a/Sankore-3.1/tools/CrashReportViewer/main.cpp b/Sankore-3.1/tools/CrashReportViewer/main.cpp
index cdd1fa7..f05ec80 100644
--- a/Sankore-3.1/tools/CrashReportViewer/main.cpp
+++ b/Sankore-3.1/tools/CrashReportViewer/main.cpp
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 #include "CrashWindow.h"
 #include "client/mac/handler/exception_handler.h"
diff --git a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp
index f86eb12..5e7404d 100644
--- a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp
+++ b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.cpp
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtCore>
 
 #include "UBPlatformUtils.h"
diff --git a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h
index c5e7e65..67f9176 100644
--- a/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h
+++ b/Sankore-3.1/tools/pdf2image/core/UBPlatformUtils.h
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QString>
 
 class UBPlatformUtils
diff --git a/Sankore-3.1/tools/pdf2image/pdf2image.cpp b/Sankore-3.1/tools/pdf2image/pdf2image.cpp
index ffece3f..289cc06 100644
--- a/Sankore-3.1/tools/pdf2image/pdf2image.cpp
+++ b/Sankore-3.1/tools/pdf2image/pdf2image.cpp
@@ -1,18 +1,26 @@
 /*
- * 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.
+ * Copyright (C) 2012 Webdoc SA
  *
- * This program is distributed in the hope that it will be useful,
+ * This file is part of Open-Sankoré.
+ *
+ * Open-Sankoré is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation, version 2,
+ * with a specific linking exception for the OpenSSL project's
+ * "OpenSSL" library (or with modified versions of it that use the
+ * same license as the "OpenSSL" library).
+ *
+ * Open-Sankoré is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library 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/>.
+ * You should have received a copy of the GNU Library General Public
+ * License along with Open-Sankoré; if not, see
+ * <http://www.gnu.org/licenses/>.
  */
 
+
 #include <QtGui>
 #include <XPDFRenderer.h>
 #include "core/UBPlatformUtils.h"
diff --git a/Sankore-ThirdParty/quazip/quazip.pro b/Sankore-ThirdParty/quazip/quazip.pro
index c44cbf3..ab809e8 100644
--- a/Sankore-ThirdParty/quazip/quazip.pro
+++ b/Sankore-ThirdParty/quazip/quazip.pro
@@ -17,6 +17,8 @@ unix {
 }
 macx {
     SUB_LIB = "macx"
+    CONFIG += x86
+    QMAKE_MACOSX_DEPLOYMENT_TARGET = "10.5"
 }
 
 win32 {
diff --git a/Sankore-ThirdParty/trolltech/singleapplication/qtlocalpeer.h b/Sankore-ThirdParty/trolltech/singleapplication/qtlocalpeer.h
index e834b73..796ceb4 100644
--- a/Sankore-ThirdParty/trolltech/singleapplication/qtlocalpeer.h
+++ b/Sankore-ThirdParty/trolltech/singleapplication/qtlocalpeer.h
@@ -43,6 +43,7 @@
 #include <QtNetwork/QLocalServer>
 #include <QtNetwork/QLocalSocket>
 #include <QtCore/QDir>
+#include <unistd.h>
 
 #include "qtlockedfile.h"
 
diff --git a/Sankore-ThirdParty/xpdf/xpdf-3.03/configure b/Sankore-ThirdParty/xpdf/xpdf-3.03/configure
old mode 100644
new mode 100755
diff --git a/Sankore-ThirdParty/xpdf/xpdf.pro b/Sankore-ThirdParty/xpdf/xpdf.pro
index a186be7..dc49123 100644
--- a/Sankore-ThirdParty/xpdf/xpdf.pro
+++ b/Sankore-ThirdParty/xpdf/xpdf.pro
@@ -5,9 +5,11 @@ XPDF_DIR = "xpdf-3.03"
 
 unix {
     linux-g++ {
+        CONFIG += create_prl
         SUB_LIB = "linux"
     }
     linux-g++-32 {
+        CONFIG += create_prl
         SUB_LIB = "linux"
     }
     linux-g++-64 {
@@ -30,7 +32,7 @@ DESTDIR = "lib/$$SUB_LIB"
 OBJECTS_DIR  = "objects"
 
 macx {
-    CONFIG += x86 ppc
+    CONFIG += x86
     QMAKE_MACOSX_DEPLOYMENT_TARGET = "10.5"
 }
 


hooks/post-receive
-- 
sankore.git (Debian package sankore)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "sankore.git" (Debian package sankore).




More information about the debian-edu-commits mailing list